RDFのダメなところ、良いところ

  1. インターネットとURIに拘りすぎ → 拘らない
  2. 目標が高すぎる → 下方修正
  3. 説明が不明瞭 → 明確化

技術的な問題点を順不同、ゴッチャに挙げる:

  1. 記述子のIDと記述対象物〈subject | target | descriptum〉のIDがはっきりしない。
  2. 埋め込みと分離と参照、抽出と摘出〈excision | 切除〉と復元〈restoration | recovery〉などの概念が強調してない。
  3. 非デジタルリソースの扱いもインターネット/URIへのこだわりから変。httpRange-14問題。
  4. IDに、短い名前、番号、複合データを使えない。
  5. 論域〈{universe | domain} of discourse〉を考えてない。5人しかいないなら「田中」もIDになる。出席番号、学籍番号、整理券番号などで人を名指ししてもいい。
  6. アンカー〈トリガー〉概念がない。
  7. グラフの辺へのプロパティ付けを考えてない。
  8. N3論理がろくでもない。
  9. 参照型の定義がはっきりしない。
  10. 「代理」という概念を使うべき。
  11. 記述子のIDや、記述子が埋め込まれている親リソースのIDの表し方がはっきりしない。

良い点は:

  1. JSON-LDのトークン置換は使える。
  2. JSON-LDのマークアップ規則はろくでもないが、とりあえず、だましだまし使える。

参照型については、次のように定義する。

type fileName = string(format="fileName");

type bookRef = reference<Book<bibTeX>, fileName>;

bookRefは本への参照の型。Book=本は、非デジタルな紙の本のことだとする。bibTexはLaTeXのbibエントリーの型。bibエントリーはデジタル情報リソース。fileName型は、実際の参照値に使われる型で文字列。fileName型の文字列で参照されるbibTeXエントリーはファイルで、そのなかに紙の本の情報が書いてある。

JSON-LDのトークン置換テーブルは次のように書く。

replacement foo {
  prefix "" "hoge" // コロンから始まる名前の接頭辞
  prefix default "piyopiyo" // コロンを含まない名前の接頭辞
  name "名前" "name" // まるまる置き換える
  prefix "-" temporary // 一時名の接頭辞
}
{
  "@context" : {
    "" : "hoge",
    "@vocab": "piyopiyo",
    "名前" : "name"
   }
}

JSON-LDとしてはエラーになるかもしれない。

  • a term cannot be an empty string. // "" : "hoge"
  • a @context @id value must be an absolute IRI, a blank node identifier, or a keyword. // "@vocab": "piyopiyo"
  • ソフトウェアは、"-" の置換指定はできるが、仕様で決まっているから変えられない。
  • "@id" value must a string. // URIしか認めてない! アホか。
  • @id の値がURL形式じゃないと認識しない。

SPARQLのような問い合わせ言語はどうでもよくて、抽出〈information extraction〉過程のちゃんとした定式化。

  1. ステップの連続として定義する。
  2. 文脈コレクションを考える。
  3. 使える関数を明示化する。
  4. コレクションの種類を意識する。
  5. 集合概念と古典述語論理、イプシロン記号、写像概念だけで定義する。

式の表現として、let/eval 式と eval/where 式。

let 束縛; 束縛 ... eval 式 end

eval 式 where 束縛; 束縛 ... end

[追記]
トークン置換のprefix宣言は、xmlns属性による宣言と同じだが、

  • xmlns ではデフォルトか非空接頭辞しか定義できない。
  • 空接頭辞を定義しようと xmlns:="hoge" とすると、構文レベルで(パーズで)エラーになる。
  • したがって、XMLでは空接頭辞というものはない。
  • 構文レベルで、"-" が接頭辞になることもない。
  • XMLでは、名前空間名URIとローカル名が連接されることはない。

[/追記]

[追記]
コレクションの理論 -- これは「集合、バッグ、リスト、ツリー、DAG、グラフ」の理論 -- をちゃんと考慮してない。もっとコレクションの理論をちゃんとやれよ。RDBとかプログラミング言語とか、ERモデリングとかも関係する。
[/追記]