このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

なんで今さらにRDFなん?

最近、RDF(Resource Description Framework)の話を少しだけしました。

特段の理由はないのですが、

RDFとかOWL(WOLじゃないけど、Web Ontology Language)って、どうもダメみたいだな、という印象なんですが、ダメだと思うとかえって知りたくなったりします。

という程度の動機です。

RDFドクターペッパーなんでしょうか、なぜか妙に興味が湧いちゃったんです。

ドクターペッパーって、はじめて飲むとオイシイとは思いませんよね。しばらくすると「あれマズかったよなー。んーと、どんなふうにマズかったんだっけ?」ともう一度飲みたくなったりします。それと同じですね(違うか)。

僕はRDFのファンでもアンチでもないので、批判や称賛というよりは、「よく分からん」とか「ハッキリさせてよ」といった事を思い付き順でパランパランと書きます。今日は時間的余裕がなくて全部書き切れないので続くかもしれません。

さて、RDFの概念で一番基本的で単純で信頼できるのはRDFトリプルの概念でしょう。トリプルは「主語/述語/目的語」と言うことが多いですが、ここでは「主語/プロパティ/値」とします。RDFでは、あらゆるものがリソースです。すべてのリソースからなる集合をResourceとしましょう。トリプルは文字通りリソースの3つ組ですから、トリプル (s, p, v) は直積集合 Resource×Resource×Resource の要素とみなしてよいでしょう。

主語sとしてリテラルは禁止で、プロパティpはPropertyと呼ばれる部分集合(Property⊆Resource)に入っている必要があるようなので、Triple = (Resource\Literal)×Property×Resource と書いたほうが正確さが増すでしょう。ここで「\」は集合差です。

ところでそもそも、リソースって何でしょう? たぶん、これは答えることができない質問でしょう。別に直接的に答える必要はなくて、リソースは未定義概念としてもかまいません。その代わり「URIを持つナニカ」と間接的な規定ができます。「主キー/外部キーなんてドーデモイイ」で述べたキー構造ですね。集合Resource上にURIをキー値集合とするキー構造がある、と。

しかし、URIをキーとするキー構造は完全ではありません。空白ノード(匿名リソース)という概念があるからです。URIの存在はインターネットにおける主キー制約であり、これは(辟易するくらいに)強く主張されるのが常です。なのに、空白ノードのようにURIを持たない存在物を許すのはどうなんでしょうか。空白ノードは、複合データの構成手段のように思えます。だったら、複合データを作れる型システムを備えればよさそうなものですけど -- RDFリテラルに適用できる型システムはかなり貧弱なものです。

複合型といえば、RDFコンテナは一種の複合型(コレクション型)の構成手段のようです。一方で、RDFトリプルは、同じ主語とプロパティに対して異なる複数の値を対応させることができます。「異なる複数の値」は複合型とは違うのでしょうか? 同じなら重複した機能だし(重複が必ずしも悪いわけではないですが)、違うならどう違うかの説明が欲しいところです。

RDF語彙を定義するとは、RDFクラスやRDFプロパティを定義することですが、定義する行為を通じてどんな効果があるのかがハッキリしません。構文に従ってナニカを書いたとき、書いたモノが何を指し示すのか、denotationがハッキリしないのです。そもそもdenotationが存在するのかもアヤシイ。例えば、プロパティの定義にドメインが含まれますが、プロパティのドメインって何? プログラミング言語の引数型チェックのような制約が働くのでしょうか? -- それは期待できませんよね。だったら、気分だけの注釈に過ぎないのでしょうか? それともホーア表明のように解釈すべき??

と、僕の知識と解釈力の不足もあり曖昧な点が多いのですが、フォーマルに書けそうな所もあります(ちょっとは書いてみました)。で、機会と気力があれば、フォーマルな観点からナニゴトか書くかもしれません。