dochu/1.0 — rokka の dochu 拡張(仕様)

rokka の dochu 拡張——移動を加え、旅を書けるようにする

本書が規範です。事象の書き方は 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": "保土ヶ谷" } } ] }

これは適合する最小の文書。文書の外形・metaevents は rokka §2§9formatdochu/1.0 と名乗る。移動を一つも書かないなら rokka/1.0 で足りる ——type も本書も要らない。書くなら本書に従う。

3. 事象の種別

typestaymove

種別where意味
stay場所(rokka §6地点。資料がそこで何を言っているか
move区間(§4移動。両端の stayid で指す

staywho は「誰が居たか」、movewho は「誰が動いたか」。

並びが順路であることは、move を書くことで主張される。 宣言する鍵は無い。 移動を一つも書かない文書の並びは、記録の順であって順路ではない(地誌、被害の 記録など)。読み手はそこに旅人を歩かせてはならない。

4. where の追加

4.1 移動の where

必須意味
from / tostayid(整数)。同じでもよい(周回)
geometryGeoJSON 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 の読み手は次の二つも理解する。

意味
dashsolid / dashed / dotted線種(how
road真偽false なら街道を通らない手段(how)。道との照合の対象外

6. 語彙

項目語彙既定開閉
typestay / move

where.relationcat は rokka §10。cat に既定の語彙は無い。

7. 適合条件

適合する dochu/1.0 文書は、土台(rokka §11)の 37 条と、この拡張が足す 次の 6 条をすべて満たす(合わせて 43 条)。番号は土台と一つの列を分け合い、飛ぶ ——拡張がまだ一つだからで、増えたら接頭辞を立てる。 rokka/1.0 文書にこの 6 条は効かない。 検証器 rokka/validate.py の ERROR と 一対一である。

内容
C8type がある。staymove である
C24from / to は整数である
C25from / totype: "stay"id を指す
C26geometryLineString である
C27LineString の座標は 2 点以上ある
C46where.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" } ] }
  ] }