本書が規範です。事象の書き方は ROKKA-1.0.md(rokka 1.0)による。 本書は
その拡張で、rokka が拡張に委ねている type を必須にし、語彙(stay /
move)を定め、移動を加えます。適合を判定するのは土台と本書の二つ合わせて
です(§7)。土台だけで足りる資料は rokka/1.0 と名乗ればよく、本書は要りません。
食い違えば本書が正しい。手を動かす順は TUTORIAL-1.0.md。
要求の強さ:「なければならない」「してはならない」は適合の条件(§7)。「べき」 は強い勧め。「よい」は許容。
1. 何を書く形式か
資料が場所に結びつけて記した事象の記録。一つの事象は 資料の主張で、「だれが・いつ・どこで・なにを・なぜ・どうやって」の六つの要素で できている(rokka §1・§3)。
主たる用途は歴史資料だが、境界ではない。 適合条件は資料の古さを 一つも見ていない。現代の記録も、資料が場所に結びつけて事象を述べているなら書ける ——時刻には秒と時間帯を書けるようにしてある(rokka §7)。合わないのは、主張では なく標本である記録——連続した軌跡や測位の列である。
rokka が定めるのは場所をもつ一つの事象で、dochu が加えるのは二つ。
事象の種別 stay(地点)と move(移動)、そして移動の where(点では
なく区間)。移動も一つの事象で、両端の地点には書けないこと(誰が動いたか、なぜ、
どうやって)を持つ。並びが順路であることは、移動を書くことで主張される(§3)。
移動を書かない資料(地誌、災害の被害記録)は特殊な場合ではなく、場所をもつ事象の
記録そのものである。
原則は rokka と同じ——資料が言っていないことを書かない。 dochu ではとくに、 隣り合う地名から移動を作らない。
2. 文書
{ "format": "dochu/1.0", "meta": {},
"events": [ { "id": 1, "type": "stay", "where": { "name": "保土ヶ谷" } } ] }
これは適合する最小の文書。文書の外形・meta・events は rokka §2・§9。
format は dochu/1.0 と名乗る。移動を一つも書かないなら rokka/1.0 で足りる
——type も本書も要らない。書くなら本書に従う。
3. 事象の種別
type は stay か move。
stay の who は「誰が居たか」、move の who は「誰が動いたか」。
並びが順路であることは、move を書くことで主張される。 宣言する鍵は無い。
移動を一つも書かない文書の並びは、記録の順であって順路ではない(地誌、被害の
記録など)。読み手はそこに旅人を歩かせてはならない。
4. where の追加
4.1 移動の where
| 鍵 | 必須 | 意味 |
|---|---|---|
from / to | ✔ | stay の id(整数)。同じでもよい(周回) |
geometry | GeoJSON LineString(座標は [経度, 緯度]、2 点以上)。経路と照合して得た線だけ。補間した線を置かない | |
text | 資料がその道のりをどう書いているか | |
refs | 通った街道の識別子(road_id) | |
on_road | 真偽。その区間は街道を通ったか(下の §4.3) | |
note | 移動についての編者の言葉(rokka §8)。線をどう引いたかもここに |
移動は本文が移動を述べているときだけ書く。配列の中では、できるなら両端の
地点の間に置く。できないことがある——二人以上の行程が入れ子になる日は、記録の
順(時の順)と両端の隣接が両立しない。そのときは記録の順を採り、移動は隣り
合わない両端を結ぶ。誤りではない(§7)。移動の各主体は両端の地点の who に名で
含まれること(別人の地点の間に移動を書かない)。
4.2 地点の where に足す一つ
| 鍵 | 必須 | 意味 |
|---|---|---|
on_road | 真偽。その点は街道上にあるべきか(下の §4.3) |
4.3 街道との関係(on_road)
二つの別のことを、同じ問いの形で書く。
| どこに | 意味 | 例 |
|---|---|---|
| 地点 | その点は街道上にあるべきか | 宿場なら true。屋敷・寺など街道を外れて訪れた場所は false |
| 移動 | その区間は街道を通ったか | 街道データに無い迂回路を通った、湖を廻った → false |
地点の true は「いま街道上にある」ではなく「街道上にあるべきだ」である。
宿場の点が街道から数百 m 離れて見えることがあるが、それは識別子の緯度経度が
村の中心など別の場所を指しているからで、街道を外れたわけではない。
事実であって、描き方の指示ではない。 読み手がこれをどう使うかは読み手の
決めごとである(たとえば道との照合を行う読み手は、地点が true なら線を街道上に
留め、区間が false なら照合そのものをしない)。書かなければ言っていないの
であって、真でも偽でもない。
where.relation(rokka §10)とは別のことを言っている。 あちらは名と点の
関係(「この名自体が広がりで、点はその代表」)、こちらは点と街道の関係である。
一方から他方は導けない——広がりの代表点であっても、そこへ足を運んだのなら線は
伸ばすべきである。
meta.<how>.road(§5)とも別である。 あちらは手段の分類についての宣言
(水路は街道を通らない)で、こちらは一つの区間についての主張である。
5. 定義表の追加
定義表 meta.<要素>(rokka §9)の項目に、dochu の読み手は次の二つも理解する。
| 鍵 | 型 | 意味 |
|---|---|---|
dash | solid / dashed / dotted | 線種(how) |
road | 真偽 | false なら街道を通らない手段(how)。道との照合の対象外 |
6. 語彙
| 項目 | 語彙 | 既定 | 開閉 |
|---|---|---|---|
type | stay / move | — | 閉 |
where.relation と cat は rokka §10。cat に既定の語彙は無い。
7. 適合条件
適合する dochu/1.0 文書は、土台(rokka §11)の 37 条と、この拡張が足す
次の 6 条をすべて満たす(合わせて 43 条)。番号は土台と一つの列を分け合い、飛ぶ
——拡張がまだ一つだからで、増えたら接頭辞を立てる。
rokka/1.0 文書にこの 6 条は効かない。 検証器 rokka/validate.py の ERROR と
一対一である。
| 条 | 内容 |
|---|---|
| C8 | type がある。stay か move である |
| C24 | from / to は整数である |
| C25 | from / to は type: "stay" の id を指す |
| C26 | geometry は LineString である |
| C27 | LineString の座標は 2 点以上ある |
| C46 | where.on_road は真偽値である(地点・移動、どちらでも) |
誤りではないもの(rokka §11 に加えて):隣り合わない地点を結ぶ移動、 両端が同じ移動。
8. 書く側と読む側
rokka §12 に加えて。
書く側:隣接から移動を作らない。 禁じているのは隣り合っていることそのもの
ではなく、資料が主体の移動を述べていないのに線を引くことである。裏を返せば、
資料が順に着いていく語りをしているなら、それは移動を述べている——道のりや
里程を書いていなくてもよい。作ってはならないのは羅列から、すなわち地誌が
土地の名を並べる、一つの宿の造りを説明する、といった主体が動いていない並び
からである。別人の地点の間に移動を書かない。移動は
できるなら両端の間に置く(§4.1——入れ子の行程では置けない)。補間した線を
geometry に置かない。
読む側:move の無い隣接に線を引かない。宣言された移動はすべて描く——配列の
どこにあるかは条件ではない。隣り合う両端を結ぶ移動だけを拾う読み手は、二人以上の
行程が入れ子になった日に片方の移動を黙って落とす(§4.1)。
geometry の無い移動を道なりとして描かない。両端が同じ移動を飛ばさない。
移動の無い文書の並びを順路として見せない(旅人を歩かせない)。
9. 例
{ "format": "dochu/1.0",
"meta": { "title": "西遊草(抜粋)", "what": { "通過": { "icon": "→", "weight": 0.35 } } },
"events": [
{ "id": 1, "type": "stay",
"who": [ { "name": "清河八郎" } ],
"what": { "text": "滞在", "cat": "滞在" },
"when": { "text": "安政2年7月26日", "start": "1855-09-07" },
"where": { "text": "程ヶ谷", "name": "保土ヶ谷",
"lat": 35.459854, "lng": 139.596029,
"refs": { "geolod": "YyyKh3" },
"note": "GeoLOD YyyKh3(保土ヶ谷)から座標を定めた" },
"cite": [ { "source": "『西遊草』岩波文庫(1993)", "page": "424" } ],
"refs": { "original_id": "2" } },
{ "id": 2, "type": "move",
"who": [ { "name": "清河八郎" } ],
"when": { "text": "安政2年7月26日" },
"where": { "from": 1, "to": 3 },
"cite": [ { "source": "『西遊草』岩波文庫(1993)", "page": "424" } ] },
{ "id": 3, "type": "stay",
"who": [ { "name": "清河八郎" } ],
"what": { "text": "過ぎ", "cat": "通過" },
"when": { "text": "安政2年7月26日" },
"where": { "text": "神奈川宿", "name": "神奈川宿",
"note": "座標は未同定" },
"cite": [ { "source": "『西遊草』岩波文庫(1993)", "page": "424" } ] }
] }