本書は規範です。単独でも使えます——データは "format": "rokka/1.0" と名乗って
よい。土台だけの文書は六何の要素を持つ事象を並べたもので、移動を書かない
資料(地誌、災害の被害記録、本文の地名に印を付けただけの注釈)はこれで足ります。
拡張は複数あってよい。 拡張は type の語彙を定め、鍵と適合条件を足し、
自分の名で format を名乗ります。足す条は本書と同じ番号の列に続けます
(いまは C46 まで。第三者が拡張を書くなら番号がぶつかるので、そのときは別の
接頭辞を立てます)。
いまの拡張:DOCHU-1.0.md(dochu 拡張。format は dochu/1.0。type に
stay / move を定めて必須にし、移動を加え、旅を書けるようにする)。食い違えば
本書と、本書を引く形式の仕様が正しい。
本書だけで書ける。 手を動かす順は TUTORIAL-1.0.md、参照の実装は検証器
rokka/validate.py とビューア・エディタ。適合の判定に要るものは本書にすべてある。
要求の強さ:「なければならない」「してはならない」は適合の条件(§11)。「べき」 は強い勧め。「よい」は許容。
1. 何を書く規定か
資料に記された一つの事象を、六何の要素に分けて書くための規定。一つの事象は
資料の主張で、「だれが・いつ・どこで・なにを・なぜ・どうやって」の六つの要素に、
資料の言葉(text)、正規化した形(name / cat)、機械の値
(refs / lat lng / start end)、編者の言葉(note)を分けて置く。
要素とは、一つの問いに答える鍵のまとまりである。六つともオブジェクトで、
値を一つ持つのではなく、同じ問いについての層をまとめて持つ。配列の項も日本語では
「要素」だが、そちらは who[] の主体、cite[] の出どころ、events[] の事象と、
いつも何の配列かを添えて書く。
原則は一つ——資料が言っていないことを書かない。 換算できない日付を推測せず、 座標を捏造せず、理由を推測しない。
事象が何であるか(旅の地点か、被害の記述か)と、並びが何を意味するかは
本書が定めない。dochu では、並びが順路であることは移動を書くことで主張される
(DOCHU-1.0.md §3)。宣言する鍵は無い。
1.1 本書の役割——定めること、定めないこと
本書が定めるのは置き場である。どの値をどの要素に置き、何を書けば適合するか。
定めないことが三つある。役割でないことを、本書は主張しない。
| なぜ | |
|---|---|
| データの作り方 | どの資料をどう読み、どこで事象を切り、どの候補を採るか。資料ごとに違い、決めるのはその資料を持つ人と道具である |
| 正しさ | 書かれた値が正しいかを測る手立てを本書は持たない。検証器(rokka/validate.py)が見るのは形だけである |
| 確からしさの尺度 | 「これは確実」「これは推量」を言う語彙を持たない。持てば、持ち主の違う判断を一つの物差しに畳むことになる |
できるのは二つだけである。
- 黙っているところを埋めない。 資料が言っていないことを書かない——換算できない 日付を推測せず、座標を捏造せず、理由を推測しない。書かなければ言っていないの であって、偽でも既定値でもない。
- 作り手が読み手に渡したい言葉を、落とさず運ぶ。 それが
note(§8)である。
そして文書そのものが解釈の産物である。 事象を一つに切ったこと、type を
決めたこと、cat を選んだこと、場所を点として扱ったこと——どれも誰かの判断で
ある。資料に「事象」という単位は無い。cite は出どころを指すのであって、
純度を保証しない。上流の翻刻・校注・目録・辞書も、それぞれ誰かの読みである。
だから本書は、作り手と読み手が懸念を分け合う場所を用意するに留める。その 懸念が当たっているかを判定する仕組みは持たないし、持つべきでもない。
2. 文書
{ "format": "rokka/1.0", "meta": {},
"events": [ { "id": 1, "where": { "name": "保土ヶ谷" } } ] }
これは適合する最小の文書。土台だけなので type は無い。 拡張を使うなら、
その名を名乗り、その規則にも従う。
{ "format": "dochu/1.0", "meta": {},
"events": [ { "id": 1, "type": "stay", "where": { "name": "保土ヶ谷" } } ] }
最上位は JSON オブジェクト。format は rokka/1.0(土台だけ)か、拡張の名
(dochu/1.0 など)。meta に必須の鍵は無い。events は空でない配列。id は
整数で文書内に一意(連番も 1 始まりも不要。配列位置とは無関係)。
3. 事象の鍵
| 鍵 | 必須 | 形 | 意味 |
|---|---|---|---|
id | ✔ | 整数 | 同一性。他の事象はこれで指す |
type | 文字列 | 事象の種別。本書は要求せず、語彙も定めない——要求するかも語彙も拡張の側(dochu なら必須で stay / move)。土台だけの文書では書かなくてよく、書くなら文字列である | |
who | 配列 | だれが(§5)。一人でも配列 | |
when | オブジェクト | いつ(§7) | |
where | オブジェクト | どこで(§6) | |
what | オブジェクト | なにを。行為も出来事も(「御発駕」「潰」)。text / cat / note | |
why | オブジェクト | なぜ。原因も動機も。text は資料が述べるもの。推測を入れない | |
how | オブジェクト | どうやって。手段も様態も(「駕籠」「舟」「急ぎ」)。text / cat | |
note | 文字列か配列 | 事象全体についての編者の言葉(§8)。言うことが一つとは限らないので配列でよい | |
cite | 配列 | 出どころ(§8)。一つでも配列 | |
refs | オブジェクト | その事象の記録の識別子(original_id など) | |
ext | オブジェクト | 資料固有の非標準項目。どの要素にも置ける。中身は本書が定めない |
type は要素を持ちません。 資料が言っていることではなく、形式が立てた区別
だからです(Linked Data の rdf:type にあたる)。だから本書は要求しません
——区別を立てるのは拡張の仕事で、土台には立てるべき区別がない。読み手は、type の
無い事象や知らない type の事象を、落とさずそのままの一つの事象として扱います。
4. どの要素も同じ三層
| 層 | 鍵 | 何か |
|---|---|---|
| 資料の言葉 | text | 資料がその項目をどう書いているか |
| 正規化した形 | name / cat | 人や道具が扱える形に直したもの |
| 機械の値 | refs / lat lng / start end | 外部の識別子、座標、換算値 |
| 編者の言葉 | note | 読み手に渡したい断り。何から値を得たかもここに(§8) |
| 編者の言葉 | note | その値についての編者の判断・疑義 |
text と note を混ぜない。 text は資料の言葉、note は編者の言葉。
note はどの要素にも置け(where.note、when.note、主体の note)、
どこにあっても文字列。編者の言葉は、それが言う値と同じ要素に入れる。
確からしさの層は無い。 「頃」「たぶんこの寺」のような確からしさは形式化
しきれず、可視化にも使えないので、同じ要素の note に書く。
cat は六つの要素のどれにも置ける(who は主体ごと)。資料の言葉をまとめた
代表の言葉であり、可視化の鍵。値は文字列で、既定の語彙は無い——資料の
言葉(「宿泊」「御小休」「潰」)をそのまま値にしてよい。記号・重み・色を
付けたいときだけ、定義表 meta.<要素>(§9)に書く。
5. who — だれが
主体の配列。一項は { text?, name, cat?, refs?, note?, ext? }。一人でも配列で
書く(連名を区切り文字で結ぶと、一つの集合名と区別がつかない)。
who は人である。 個人と、人の集まり(「(藩主・家臣)」のような集合名)を書く。
判定は人かどうかだけで、役は問わない——行為した人も、影響を受けた人(死者・
負傷者・訴えられた者)も、居合わせた人も who である。役を書き分けたいなら
who[].cat(下の表)。
人以外を who に置かない——道具(駕籠・船)は how、人以外の対象(焼けた家、
潰れた蔵)は what(資料に固有の項目なら what.ext)。検証器はこれを見分けられない
ので、適合条件ではなく、書く側の規則である(§12)。
name は一つの主体に一つの綴り。 資料の綴りは text に置き、文書を越えた
同一性は refs で言う。名は鍵の代用であり、分類は cat(定義表 meta.who は
cat で引く。名で引く表は無い)。
主体の要素は場所の要素と同じ三層でできている。人を主に扱う資料でも、形式を変えずに 書ける。
| 書きたいこと | 置き場 |
|---|---|
| 資料の綴り(「清河」) | who[].text |
| 表示する名(「清河八郎」) | who[].name |
| 役(差出・宛所、原告・被告、藩主・家臣) | who[].cat(開放語彙。意味は meta.who) |
| 人物の典拠(Wikidata・VIAF・人名典拠) | who[].refs(鍵は開放) |
| その資料に固有の項目 | who[].ext |
| 編者の判断・疑義 | who[].note |
受け手のいる事象(差出と宛所、原告と被告、加害と被害)は、両方を who に
書き、who[].cat で役を分ける。人と人の関係(同行・主従・血縁)は本書が
持たない——関係は事象ではない。
6. where — どこで(場所)
| 鍵 | 必須 | 意味 |
|---|---|---|
name | ✔ | 表示する名(正規化した地名) |
text | 資料がその場所をどう書いているか(一続き) | |
anchor | text のうち位置を決めるのに使った部分。省略時は name | |
relation | name と点の関係。exact(既定)/ within(名は点の中)/ near / area(名自体が広がりで点は代表) | |
lat / lng | WGS84 の度。両方揃える。緯度 −90〜90、経度 −180〜180 | |
refs | 場所の識別子(geolod / uri / shukuba_id / chimei_id) | |
note | 場所についての編者の言葉。座標を何から得たかもここに(§8) | |
place | 資料が名指す、位置に使わなかった細かい場所 |
位置の決め方は形から分かる——refs があれば識別子にリンク、無くて lat/lng
があれば座標を直接、どちらも無ければ位置不明。位置不明の事象も落とさない。
リンク先の座標の精度は識別子側の属性で、本書は扱わない。確からしさの語は無く、
疑義は note に書く。
引く側の形式は、場所ではない where を定めてよい(dochu の移動は区間で、
from / to を持つ。DOCHU-1.0.md §4)。
例:資料は「馬喰町壱丁目大松や佐兵衛」と書く。表示は「大松屋」。位置は「馬喰町 壱丁目」で決めた。大松屋はその中にある。
{ "text": "馬喰町壱丁目大松や佐兵衛", "anchor": "馬喰町壱丁目",
"name": "大松屋", "relation": "within",
"lat": 35.694166, "lng": 139.783333, "refs": { "geolod": "zeSg6X" } }
7. when — いつ
| 鍵 | 意味 |
|---|---|
text | 資料自身の日付表記そのまま(when を書くなら必須)。時刻を混ぜない |
text_end | 終了日の表記が違うとき |
time_text | 資料自身の時刻表記(「四時過」) |
start / end | 換算値。ISO 8601 の暦日付・時刻。精度は年〜秒の五段(YYYY / YYYY-MM / YYYY-MM-DD / …Thh:mm / …Thh:mm:ss)、時間帯は任意(Z か ±hh:mm)。実在する日であること。換算できたときだけ。end は start より前でない |
note | 時についての編者の言葉(「上旬」「頃」、換算の仕方)。全事象で同じ一文なら meta.note へ |
start / end は瞬間ではなく期間を名指す。 書いた精度がその期間である——
1855 は 1855 年のあいだ、1855-11 はその月のあいだ、1855-11-11 はその日、
1855-11-11T09:00 はその分のあいだ、…T09:00:30 はその秒。精度を上げて比べては
ならない——1855 は 1855-11-11 より前ではない(11 月 11 日はその年のうちに
ある)。年しか分からない資料に日を作らせないための形で、1855 と書くことと
1855-01-01 と書くことは意味が違う(後者は元日である)。
時間帯は任意で、比較には使わない。 資料が時間帯を言うなら書いてよい(航海の 記録など)。ただし比較は壁時計の読みで行い、時間帯で値をずらしてはならない ——時間帯のある値と無い値は本来比べられないので、混ざった文書のために規則を 決めてある。時間帯は読み手が使ってよい追加の情報だが、それを使って時間帯なしの 値を動かしてはならない。
when そのものが任意(日付の無い資料はある。日付のある事象と無い事象が混ざって
いてもよい)。when.end を次の事象の start から補わない——埋まっていない
飛びは資料の沈黙で、読み手も埋めない。幅・確からしさ・暦の項目は無い。
8. cite / refs / note / ext
cite:資料の出どころの配列。{ "source": 書誌, "page": 位置 }。居場所だけを 持ち、「何と書いてあるか」は入れない(それは各要素のtext)refs:識別子はそれが指すものと同じ要素に。場所はwhere.refs、主体はwho[].refs、記録は最上位refsnote:編者の言葉。文字列か、文字列の配列。それが言う値と同じ要素に置く (where.noteは場所について、when.noteは時について)。最上位に一つだと、 何についての言葉かを名乗らないext:非標準の項目も、それが言う値と同じ要素に。行為についての注釈者の値 (推定震度)ならwhat.ext、場所についてならwhere.ext、事象全体なら最上位ext
8.1 note の形
文字列か、文字列の配列。一件なら文字列のままでよい。読み手は「文字列なら 一件の配列と見なす」。
"note": [
"地名体系IDは「小矢部村」。橋ピンポイントではない",
"nrct(推定手法 honda)の 160000394500 から座標を定めた"
]
一つの値について言うことが一つとは限らないので、配列にする——上の例は学芸員の 断りと変換器の言い分である。
note は散文である。 誰が言っているかは文中で名乗る。本書は書き手の語彙を
定めず、読み手に判定させない(§1.1)。
全事象に同じ一文になるものは meta.note に一度書く(「暦の換算は HuTime」
「道なりの線は…に照合して引いた」)。事象ごとに違うものだけが事象の note に来る
——どの候補をどう選んだか、何を確かめられなかったか。
9. meta
必須の鍵は無い。title / subtitle / note(文書についての編者の言葉。
事象の note と同じく文字列か、文字列の配列。作り手が読み手に渡したい断り書きは
ここに置く——「原本を直に読んでいない」「座標は識別子から解いた」「推定震度は
注釈者の値で、資料の言葉ではない」)/
who when where what why how(その要素の cat の定義表 {cat: {…}}。who も
要素の cat で引く)/ source(上流のデータ)/ attribution / knobs / ext。
引く側の形式は meta の鍵を加えてよい。
定義表の項目はオブジェクトで、鍵は開放。読み手が理解する鍵は次のとおり、すべて任意。
| 鍵 | 型 | 意味 |
|---|---|---|
label | 文字列 | 表示名。無ければ cat の値そのもの |
icon | 文字列 | 一〜二文字の記号 |
weight | 数 | 相対的な重み。1 が普通 |
color | 文字列 | 色 |
meta.knobs — 読み手への注文
オブジェクト。読み手にどう見せてほしいかを、文書が名指しで頼む場所。
鍵も値も読み手のもので、本書は定めない——知らない注文は無視される(ext と
同じ扱い)。
"meta": { "knobs": { "play": "off" } }
knobs は資料についての主張ではない。 読み手は knobs から資料の性質を
推し量ってはならず、書く側も、要素に書くべきことを knobs で言い換えては
ならない。作業の記録も入れない——検証器やエディタの指摘・了解印・ビルドの
診断は文書に入れない。この形式は公開の最終版であって、作業の記録ではない。
解説は §8.1。
10. 語彙
| 項目 | 語彙 | 既定 | 開閉 |
|---|---|---|---|
type | 拡張が定める(本書は定めない) | — | — |
where.relation | exact / within / near / area | exact | 閉 |
cat(六つの要素) | 既定の語は無い | 無くてよい | 開(meta.<要素> で定義) |
cat に既定の語彙は無い。 語彙は文書ごとに cat の値そのものが定め、意味
(記号・重み・色)は定義表 meta.<要素> が与える。読み手は値を名指して分岐しては
ならない。
11. 適合条件
本書に適合する文書は、次の 37 条をすべて満たす。番号は拡張と共通の列で、
DOCHU-1.0.md §7 の 6 条と合わせて 43 条になる。番号は飛ぶ——数えるのは
表に挙げた条であって、番号の最大値ではない。検証器 rokka/validate.py の ERROR と
一対一である。
条は形しか見ない。 値が正しいか、同定が当たっているか、注釈が妥当かは 条の外にある(§1.1)——測る手立てを本書は持たない。
文書
| 条 | 内容 |
|---|---|
| C1 | 最上位は JSON オブジェクトである |
| C2 | format は rokka/1.0 か、読み手が知っている拡張の名である |
| C3 | meta はオブジェクトである |
| C4 | events は配列であり、空でない |
事象(共通)
| 条 | 内容 |
|---|---|
| C5 | 各要素はオブジェクトである |
| C6 | id は整数である |
| C7 | id は文書内で一意である |
| C9 | when / where / what / why / how はオブジェクトである |
| C10 | note は文字列か、文字列の配列である(事象・要素・主体、どこでも) |
| C11 | where.refs はオブジェクトである |
| C12 | who は配列である |
| C13 | who の要素はオブジェクトである |
| C14 | who の要素に name がある |
| C15 | 要素の name は文字列である |
| C16 | 要素の refs はオブジェクトである |
| C40 | cat は文字列である(要素・主体、どこでも) |
| C41 | meta.<要素> の定義表はオブジェクトである |
| C42 | 定義表の項目はオブジェクトである |
| C43 | ext はオブジェクトである(事象・要素・主体、どこでも) |
| C44 | meta.knobs はオブジェクトである |
場所の where
| 条 | 内容 |
|---|---|
| C17 | name がある |
| C18 | relation は exact / within / near / area のいずれかである |
| C19 | anchor は文字列である |
| C20 | lat と lng は両方揃っている |
| C21 | 座標は数値である |
| C22 | 緯度は −90〜90 の範囲にある |
| C23 | 経度は −180〜180 の範囲にある |
| C45 | 地点の where に geometry は無い(線は移動の要素のもの) |
when(書く場合)
| 条 | 内容 |
|---|---|
| C28 | when はオブジェクトである |
| C29 | text がある |
| C30 | time_text は文字列である |
| C31 | start / end は ISO 8601 の暦日付・時刻(年〜秒の五段の精度と、任意の時間帯)で、実在する日である |
| C32 | end は start より前でない |
出どころ・識別子・meta
| 条 | 内容 |
|---|---|
| C33 | cite は配列である |
| C34 | cite の要素はオブジェクトである |
| C35 | refs はオブジェクトである |
| C38 | meta.note は文字列か、文字列の配列である |
誤りではないもの:who / what.text / cite.source の無いこと、座標の無い
事象、日付のある事象と無い事象の混在、cat が定義表に無いこと、最上位の未知の鍵
(検証器は ext を勧めるだけ)。
12. 書く側と読む側
書く側:資料が言っていないことを埋めない(what.text が無ければ書かない、換算
できなければ start を書かない、理由を推測しない)。資料の言葉を別の問いの要素に
入れない。when.text は原表記。座標を直接置いたら note に誰がどう置いたか。
who.name は一つの主体に一つの綴り。 cat も一つの種類に一つの綴り——
cat に既定の語彙は無い(§10)ので、揃えるのは書く側の仕事である。同じことを
別の語で呼ばない(泊まったのに一方が「宿泊」、他方が「到着」になっていないか)。
定義表に無い cat は誤りではない(§11)が、書いた cat を meta.<要素> に
挙げておくと、語彙が一覧になって揺れが見える。who は人だけ——ただし人なら役は
問わない(道具は how、人以外の対象は what。§5)。こちらが置いた座標を資料が
言ったことにしない。when.end を次の事象から補わない。機械が推定した値は機械が推定したと
名乗る(note に散文で。§8)。
読む側:知らない鍵は無視し、落とさず、解釈しない。座標の無い事象を落とさない。
when の無い文書を拒まない。資料の主張(cite)と編者の言葉(note)を
同じ見出しに並べない。meta.note を隠さない——作り手の断り書きが読み手に
届かなければ、書いた意味がない(§1.1)。cat の値を名指して分岐しない。
13. 例
{ "format": "dochu/1.0",
"meta": { "title": "安政江戸地震の被害記録",
"what": { "潰": { "label": "潰れ・崩れ", "icon": "潰", "color": "#bc3f2b" } } },
"events": [
{ "id": 1, "type": "stay",
"what": { "text": "大にゆりくづれ", "cat": "潰",
"ext": { "intensity": 3, "damage": ["collapse"] } },
"where": { "text": "千住宿", "name": "千住",
"lat": 35.747777, "lng": 139.800555,
"refs": { "chimei_id": "10026507" },
"note": "同定の候補が一つに決まった(ansei2 の注釈)" },
"cite": [ { "source": "L000006", "page": "L000006_003 243-249" } ],
"refs": { "original_id": "YhcoHHq7bvoTmeKidV8n" } }
] }
この事象は旅ではない。六何の要素はそのまま使え、移動の規定は一つも要らない。