セマンティックウェブログ

 「RDF意味論」の和訳を国立情報学研究所の私のホームページにアップしましたが,日本語で読んでもやっぱり難しいという方もきっといらっしゃると思い,和訳した「RDF意味論」を読むための連載記事をここに書きました.コメント,質問などを歓迎いたします.

2008年12月27日

「RDF意味論」を読むために 終わりにあたって


ここまで読んで下さって,どうもありがとうございました.

最初に意図したほど多くを書くことができませんでしたが,ある方がご自分のブログで紹介してくださったおかげで,何とキーワード「RDF意味論」で連続何週間も Google 検索トップ10以上を関連ページが占めるということになりました.この場を借りてお礼を申し上げます.

RDF意味論の和訳がなくて,自分自身苦労したことが動機となって,こうしたことをやったのですが,これをきっかけに普段RDFを使っている人たちも何か疑問を持ったおりに,参考となればと思っています.

最初に0章にて,

人にとってのなんちゃらなどとは一切考えずに,・・・語彙と語彙との関係を・・・数学的に考えます
と書きましたが,実はそれこそが生きるうえでの意味(meanings)に重なるとここでは主張したい.我々は単独でこの世の中に存在できません.すべて他者との関係の中にある.色即是空とはどうもそういうことらしいです.実体などというものは,あたかもらっきょの皮むきのように,探っていくと何もなくて,すべては関係性にあると.そういう仏教的な立場に立つと,オントロジー研究やRDF意味論も一層の輝きを増してくるように思えます.


「RDF意味論」を読むために 第7章


括弧情報提供とあるように,第7章は規範ではありません.しかし実用上最も重要な章であり,これまでの記述でわからないところがあったとしても,あまり気にせずに,実装上はこの章の伴意ルールのみを真剣に取り扱えばOKです.

条件(トリプル)の一つ一つをクロージャという方もいらっしゃいますが,ここでの書き方は,左側のトリプルがグラフ上で見つかったら,右側のトリプルをグラフに追加してよいという書き方です.実際に追加するかわりに,クエリに対して推論エンジンにこれらのルールを組み込んでもいいですね.前にも書いたように,(書いてないか?),DL でやることはあるインスタンスがあるクラスに所属するかという質問と,あるクラスはあるクラスのサブクラスかという質問に答えることだけですから.

2+2+2+13+9=28ですから,全部で28個のルールがあります.OWLになるとこれに加えて一体いくつの伴意ルールがあるのか完全にはわかっていません.RDF(S)では一応これで完全としてもよさそうに思えます.ドイツの ter Horst という研究者は,意味論ではプロパティはブランクノードでもよいのに,統語論では駄目とされているからと,プロパティにブランクノードを許した場合の伴意ルールについて論文を書いていますが,私としてはそんなの関係ないと思います.SWCLOS ではトリプルのプレディケイトは CLOS のスロット名になりますから,ブランクノードではありえないからです.

全部の伴意ルールについて詳しく解説することはあまりにも量が多くなりますので,重要なものや微妙なもののみにとどめさせていただきます.

se1, se2 はあまり使いどころはないですね.余談になりますが,Jeremy Carroll は一見おかまみたいな人で Jena の開発者ですが,今はアメリカにわたって Top Quadrant に参加しています.

rdf1 は rdfs4a, rdfs4b と並んで非常に有用です.前にも書いたように,初めて現れたURLを即座にrdfs:Resource のインスタンスとか rdf:Property のインスタンスとして定義することができます.

rdfs2 は定義域の伴意ルール,rdfs3 は値域の伴意ルールです.rdfs5 は rdfs:subPropertyOf に関する推移律,rdfs11 は rdfs:subClassOf に関する推移律です.rdfs6 は プロパティの,rdfs10 はクラスの自明な性質ですね.

rdfs8 は自明でかつ非常に重要な性質です.すべてのクラスは rdfs:Resource のサブクラスとなります.

rdfs7 がサブプロパティに関する重要なルールです.つまりスーパプロパティで言えた事実は,すべてサブプロパティでも真となる.ですが,あまりよい例を思いつきません.

rdfs9 は包摂律と呼ばれる非常に重要な性質です.たとえば,「イヌ」が「哺乳類」のサブクラスで buddy が「イヌ」のインスタンスなら,だれかさんの飼っているイヌ buddy は「哺乳類」のインスタンスです.これ,クラスの外延的概念そのものと言っていいですよね.この包摂律とさきほどの推移律を組み合わせると,すべてのインスタンスは rdfs:Resource のインスタンスということが導かれます.

包摂律が分かれば,ext1 と ext2 はまあ自明ですよね.あまり有用ではありませんが.

ext3 と ext4 はサブプロパティに関する継承(インヘリタンス)に相当するものですね.たとえば,vin:hasColor は vin:hasWineDescriptor のサブプロパティで,vin:hasWineDescriptor の定義域は vin:Wine だとしたら,トリプルとして

Strainge vin:hasColor vin:Red .

などとあったら,Strainge は vin:Wine のインスタンスだと分かります.
どうもオブジェクト指向のインヘリタンスに相当するものは RDF ではこの二つしかないようです.ではどうするかというとOWL では rdfs:subClassOf の owl:Restriction ということで継承したい性質を記述するのですね.これはまた別の議論になりますが.

ext5 - ext9 は今まで rdfs:Resource がトップクラスとしてきて,これより上位のクラスはないと思っていたのにいきなりその上位クラスを持ってきて,ちょっと唐突です.rdf:type や rdfs:subClassOf のスーパプロパティを導入しなければ,まあここの記述は関係ないので気にしないとしてもOKですが,逆にすでに rdf:type や rdfs:subClassOf の性質を持つ処理系があれば,その処理系が処理できるユニバースのサブユニバースとして RDF(S) ユニバースを設定できることになりますね.

rdfD2 は "+0001"^^xsd:integer をサブジェクトに持つトリプルがあったら,"1"^^xsd:integer のトリプルを追加してもよいという意味ですね.(逆もOK).

rdfD3 は "+0001"^^xsd:decimal と "1"^^xsd:integer とか,"1"^^xsd:nonNegativeInteger みたいな話ですね.

以上で7章の説明を終えますが,最後に RDF(S) エンティティの関係図を示しておきます.


2008年12月21日

「RDF意味論」を読むために 第6章


第2章でも述べられたように,伴意は推論の単調性と深いかかわりを持っています.第2章では次のように書かれていました.
単調性レンマ. S を S' のある部分グラフとして,S は E を伴意するとすると,そのとき S' は E を伴意する.
すみません.ここ訳文では思いっきり間違えていました.正しくはこのとおりです.これをあまり厳密ではありませんが数学的にはこう書きます. S ⊆ S' で S ⊨ E ならば S' ⊨ E でもある.

あるRDFグラフがあったとして(これが S ),それにトリプルを追加しました(結果が S' ).そのとき元のRDFグラフ S で成立していた解釈は増えたRDFグラフ S' でも成立しなければなりません.いいかえると,いろんな解釈がありえてアバウトなものだったものが,知識の追加によってより詳細化・精密化されるけれども,そのときアバウトな知識で言えてたことがくつがえってはならない.これは知識の単調増加原則といって,世界がそうなっているということではなくて,RDFで書くと自然とそうなるという意味でもなくて,推論の都合上の知識に対する要請事項です.たいていの推論システムにおいて置かれている原則なのですが,RDF意味論でもそうしているということですね.

RDF意味論での話の展開そのものにおいても,またRDFからOWLへの拡張においても,単純なものから複雑なものへ,少ない語彙から語彙を追加し,語彙にかかわる公理を追加し,豊富な語彙と複雑な推論に発展していきますが,解釈の可能性は(ここで解釈というのは変数をインスタンス化したときの組み合わせの数みたいなものですよ)ほとんど無限大に近いものからより少ないものに変化していきます.あまり厳密な言い方ではありませんが,テキストとしての S ⊆ S' は解釈世界としての I(S) ⊇ I(S') であり,RDF から OWL へは S から S' なのです.だから本当は,RDFで言えてたことはすべてOWLでも言えなければなりませんが,少なくともメタクラスについては OWL Lite と OWL DL ではそうなっていません.

この語彙拡張によって可能世界は狭められるけれどもより強力になり精緻になる,というのが,拡張という言葉のイメージと合わず,感覚的には受け入れがたいのかも知れませんが,混沌としてなんでもあり,から秩序だった強力な世界へ,1というだけで10を知ることができるような世界になると思ってほしいのです.

で,この6章で言っていることは,ほとんど2章で言っていることと同じですよね.語彙とその公理を Y として追加したとき,S' はもともと言えてたことを言えなければならない.だからもともとの語彙での伴意をX-伴意としたとき,S' においても X-伴意はあらねばならず,追加の語彙に関する追加の伴意を Y-伴意と呼ぶわけです.
一般単調性レンマ. S と S' を S のすべてのメンバーが S' のいずれかのメンバーであるようなRDFグラフの集合であるとする.Y は X の意味論的拡張を表し,S は E を X-伴意して, S と E は Y のいかなる統語論的制約も充足するものとする.そのとき,S' は E を Y-伴意する.
話は脱線しますが,人間が行う間違いとか思い込みみたいなものは,RDF意味論では扱うことはできません.一度言ったことは二度と取り消しできない.知識がくつがえることはない.でもこれは理想的であっても現実にはありえず,ずいぶんきつい条件ですよね.これを許そうというのが非単調推論とか真実維持装置(Truth Maintenance System)というもので,これはまだまだ研究段階と言っていいでしょう.蛇足ですが,従来のAI研究と比べてセマンティックウェブの最大の特徴は,その大規模さオープンさにあります.ここでオープンという意味は果てがない,限界がないという意味です.そうするとこちらのコミュニティで使っていた語彙と概念と,あちらのコミュニティで使っていた語彙と概念が別々にあって,それをどう扱ったらよいのだろうか,というのが非単調推論よりもずっとずっとセマンティックウェブの課題なのですが,それを目標としているはずだと私は思っているのですが,現実はまだまだですね.今は DOLCE とか SUMO とか Cyc の知識がお互いにどうなっているという話は聞こえてきません.やっと WordNet へのリンクがとられだしたところです.これ絶対必要なことなのですが,やっぱり大変なのでしょうね.第1に規模の問題です.これらの4つのオントロジーを自由自在にくっつけたり DIFF をとったり,マージしたりできる環境があったら,もう少し何とかなるのではと思っています.


2008年12月19日

「RDF意味論」を読むために 第5章


第5章はいままでも出てきていましたが,データタイプについてです.第3章,4章の rdf:XMLLiteral です.ここで言う字句形式というのは,"15"^^xsd:decimal とか "15"^^xsd:integer みたいな文字列の並びのことで,この文字列からこの場合,数の 15 への写像を考えます.同様に XML Schema Part2: Datatypes に決められたとおりの well-formed な文字の並びである xsd:decimal や xsd:integer の集合から,それらの値の集合への写像が,L2V(xsd:decimal) とか L2V(xsd:integer) という写像というわけです.

ではデータタイプそのものの字句についてはどうでしょうか.たとえば,URI 参照 xsd:decimal からそれが意味するところの表示への写像を考えます.それを<xsd:decimal, x>みたいに表記します.色々なデータタイプについてこの写像の集合 D を考えます.それをデータタイプ写像と呼びます.したがって,
D は URI 参照からデータタイプ集合への関数とみなすことができる
次に,
どのデータタイプ写像も<rdf:XMLLiteral, x>を含む
というのは<xsd:decimal, x>であれば必ず<rdf:XMLLiteral, x>となる,ということですよね.私はこれらのデータタイプは rdf:XMLLiteral のサブクラスとしています.三つ組みで書けば次のようですね.
xsd:decimal rdfs:subClassOf rdf:XMLLiteral .
そしてRDFSの公理トリプルでは次の記述があります.
rdf:XMLLiteral rdfs:subClassOf rdfs:Literal .
データタイプに対する一般的意味論条件の2番目はこうなっています.
もし <aaa,x> が D の要素ならば,ICEXT(x) は x の値空間でありかつ LV の部分集合
つまり,xsd:decimal のクラス外延は xsd:decimal の値空間であると.つまり "15"^^xsd:decimal の表示するものは,xsd:decimal の値空間の(集合の)元であると.LV は第4章で rdfs:Literal の表示物のクラス外延でしたね.弱い解釈では rdfs:Literal と x との関係は何とも言えませんが,強い解釈でよければ,x は rdfs:Literal (の表示物)のサブクラスとなります.すなわち,xsd:decimal も xsd:integer も(その表示物は)rdfs:Literal(の表示物)のサブクラスとなります.そして SWCLOS ではそうしています.この処置は上記のように,xsd:decimal は rdf:XMLLiteral のサブクラスとしたことと,(そして rdf:XMLLiteral は rdfs:Literal のサブクラスだから)整合しています.

そして3番目の条件,
型付きリテラル "sss"^^ddd に対して,もし sss が x の字句空間中の要素ならば,IL("sss"^^ddd)=L2V(x)(sss),さもなければ IL("sss"^^ddd) が LV の要素ではない
というのは,これまでも述べてきたように,"one"^^xsd:decimal は IR 中にはあっても LV 中には無い,すなわち rdfs:Resource のインスタンスであっても rdfs:Literal のインスタンスではない,ということですね.

4番目,
もし<aaa, x>が D の要素ならば,I(aaa) は ICEXT(I(rdfs:Datatype)) の要素
というのは xsd:decimal の表示物 I(xsd:decimal) は,rdfs:Datatype のクラス外延の要素(元)だと言っていますから,実は rdfs:Datatype は xsd:decimal をクラスとしたときのメタクラスに相当するのです.RDFS 公理トリプルでは次のようになっています.
rdf:XMLLiteral rdf:type rdfs:Datatype .
rdfs:Datatype rdfs:subClassOf rdfs:Class .
じゃあ rdfs:Datatype のクラスは何だって? rdfs:Class に決まっているじゃあないですか.rdfs:Class はブラックホールみたいにすべてのクラスを飲み込むユニバーサルなクラスですから.

これまでのところを三組みで書けば次のようになります.
"15"^^xsd:decimal rdf:type xsd:decimal .   意味論条件2番目
xsd:decimal rdfs:subClassOf rdf:Literal . 意味論的条件2番目+強い解釈
xsd:decimal rdf:type rdfs:Datatype .              意味論条件4番目
最後に,
もしデータタイプ写像においてデータタイプがその値空間上に互いに素(disjointness)条件を重ねるのなら
と言っていますが,当然xsd:floatとxsd:integerは互いに素だし,xsd:string と xsd:decimal も互いに素です.そうしないと後々困ることがいっぱい出てきます.XMLデータタイプのクラス階層構造はここにあるとおりですので,参考にしてください.

2008年12月14日

「RDF意味論」を読むために 第4章


さて,第4章ではじめてrdfs:Classという語彙が導入され,クラス概念が定義されます.第3章で rdf:type のプロパティ外延で rdf:Property をオブジェクトとするようなサブジェクト(の表示物)は IP の元である,とされました.このときにはまだクラス概念は無いのですが,その式においてオブジェクトの rdf:Property を変数とします.そのときの変数とは何か?rdf:type のプロパティ外延においてオブジェクトになる y であるもの,それがクラスです.サブジェクト(の表示物)x のクラスです.
x ∈ ICEXT(y),iff 〈x,y〉∈ IEXT(I(rdf:type))
iff は if and only if の略で,「ならば」が両方向です.これは定義として同じであることをこう表現します.ICEXT はクラス外延写像のことです.で,ついでにこれまでの章で出てきた,IR や LV に名前を振ってしまおう.すなわち,論議の領域(universe of discouse) IR をクラス外延とするクラスは I(rdfs:Resource),リテラル値 LV をクラス外延とするクラスは I(rdfs:Literal) です.
IR = ICEXT(I(rdfs:Resource))
LV = ICEXT(I(rdfs:Literal))
それで話を戻すと,このクラス,クラス外延を構成するもの,すなわち ICEXT(y) の y ,が何であるかはオントロジストが自由に整合的に定義できるわけですが,たとえば「イヌ」,「ネコ」,「イヌフグリ」,「ネコヤナギ」,それをこれまでの議論の枠組みの中でどうあつかいましょうか,という話になります.RDF意味論で行っていることは,I(イヌ),I(ネコ) などを IR の中に入れます.だって IR は論議の枠組みですからね.そして,これら x ∈ ICEXT(y) の y をすべて集めた集合 IC を考えます.すべてですからね.何と IR も,あっ間違えた,もとい,I(rdfs:Resource) も入れてしまうのですよ.そしてその集合をクラス外延とするものを考えます.それに rdfs:Class という名前をつけます.
IC = ICEXT(I(rdfs:Class))
それでは,このクラス集合をクラス外延とするもの I(rdfs:Class) をどう扱ったらよいだろうか.そこでRDF意味論ではこれを IC の元としてしまいます.つまり,無理やり数学的に書けば,
I(rdfs:Class) ∈ ICEXT(I(rdfs:Class))
わっ,そんなのあるわけない,ということで,これが議論の的になるのですね.自分自身を含む集合なんて,というわけです.
rdfs:Class のクラス外延がクラス rdfs:Class を含んでもよいことを注意しておく.
でもね,理屈はこうだと思います.先にサブジェクトの位置する rdf:type と プレディケイトの位置する rdf:type を区別したのと同様に,クラス外延のメンバーとなる rdfs:Class とクラス外延を構成する rdfs:Class を使用時,推論時には区別しましょうと.実際プログラム時にプログラマがこれでまごつくことはありませんからね.自分が今書き下している rdfs:Class が集合の元としてのものか,集合を構成するクラスとしてのものなのかは.それを正しくプログラム表現できるかは別としてね.たとえば,
rdfs:Class rdf:type rdfs:Class .
と言った時,最初の rdfs:Class はクラス外延のメンバーであり,後の rdfs:Class がクラス外延を生成するものですよね.言うなれば,それは文脈で分かるでしょ,ということで.

もう一つ例を挙げると,
rdfs:Resource rdf:type rdfs:Class .
rdfs:Class rdf:type rdfs:Resource .
なのですが,これも文脈を考慮しないと循環してしまいますから,普通はありえないのですが,これまでも示してきた意味論で記述すれば,
I(rdfs:Resource) ∈ ICEXT(I(rdfs:Class))
I(rdfs:Class) ∈ ICEXT(I(rdfs:Resource))
という意味ですからね.
I(rdfs:Resource) ∈ I(rdfs:Class)
I(rdfs:Class) ∈ I(rdfs:Resource)
ではありませんからね.W3C の OWL ワーキンググループでは今ようやく punning という言葉でここまでたどり着いたということらしいです.

えっと,このクラスのクラス rdfs:Class みたいなものをメタクラスと言いますが,そしてメタクラスのクラスをメタメタクラスと呼ぶとすると,UML で考えるのはメタメタクラスまでで,しかも自分自身を含む集合などというあやしいものは考えません.でもLispのリフレクション言語である3Lispでは自分自身を含む言語ということになっているし,ANSI Common Lisp のオブジェクトシステムである CLOS でも standard-class のクラスは standard-class ということになっていて,RDF と同じなのです.これに興味を持ったかたは,私の論文を読んでください.

クラス概念の次に第4章で重要なものは,定義域(rdfs:domain) と値域(rdfs:range) の導入ですね.定義域は三つ組みのサブジェクトの取り得る範囲を制限し,値域はオブジェクトの取り得る範囲を制限します.これは問題ないですね.書かれるもの(制限するもの)はクラスで,制限されるものはそのインスタンスになりますから,お間違えなく.ただし,ワインの色には赤か白かロゼしかないと言っておいて,別の場所で自家製ワインの色はピンクと言ったらどうしましょうか,という話はあります.私はRDF意味論の議論においては三つ組みの宣言はすべて大域的としていますから,その場合は充足しない,ということにしています.これは一つのトリプルは述語論理における一つの式でそれが並列に並んでいるとすれば,当然ですね.すなわち三つ組みにスコープはない.Americanワインの産地はアメリカで,カリフォルニアワインの産地はカリフォルニアという定義があったとき,ナパ製のワインは当然Americanワインかつカリフォルニアワインですね.ナパはカリフォルニアの中にあって,カリフォルニアはアメリカの中にあるという知識があるときは.大域的に宣言された値域はすべて重ね合わされます.「愛知一色うなぎ」の産地は「愛知県幡豆郡一色町」となっているのに中国産うなぎはこれを充足しないし,「愛知県岡崎市一色」も充足しません.

ですから,すべての三つ組みは大域的に重ねあわされると.したがって,
<ex:a> <ex:p> "<notLegalXML"^^rdf:XMLLiteral .
<ex:p> rdfs:range rdf:XMLLiteral .
となっていたら,<ex:p>の値域は rdf:XMLLiteral ですが,1番目の表記は ill-formed な表記で,これは rdfs:Resource のインスタンスではあっても rdf:XMLLiteral のインスタンスではありませんから非充足です.つまりこの二つを含むいかなる三つ組み集合(グラフ)も非充足です.

ところで"<notLegalXML"^^rdf:XMLLiteralって,SWCLOS ではどう読むんだろう.ウーン,心配になってきた.

この章の最後近くでは rdfs:subClassOf,rdfs:subPropertyOf,rdfs:domain,rdfs:range について,外延的意味条件としてより強い条件も提示しています.強いという意味は,右辺から左辺への矢印もあるからでしょうね.ある二つの集合を考えたときに,その二つの集合が包含関係にあれば,それをサブクラスやサブプロパティ関係にしてよいと.いいような気がしますけどね.「イヌ」のクラス外延がたまたま「ペット」のクラス外延を含んでいたら,「ペット」は「イヌ」のサブクラス? ウーン,そのとき限りのお話としてはいいような・・・でも真実を追究する立場としてまずいような・・・.多分だめなんでしょうね.オントロジーを追求する立場としては.


2008年12月13日

「RDF意味論」を読むために 第3章


これまでのところでは,rdf:typeとかrdf:Propertyといった言葉は出てきていませんでした.プレフィックスとしてrdfがついている語彙はrdf語彙と呼ばれますが,3章で初めて出てきます.でもここではrdf:typeとrdf:Propertyについてあまり本格的な説明はなされませんね.RDF意味論的条件の1番目,
もし <x, I(rdf:Property)> ∈ IEXT(I(rdf:type)) ならば,
そしてその時に限り,x ∈ IP
というのはプロパティのrdf:typeはrdf:Propertyと言っているのですから,あたりまえのことで,そして3章ではこれしかrdf:Propertyについては述べていません.
IP が IR の部分集合である
というのは,(後ででてきますが)すべてのプロパティは rdfs:Resource のインスタンスであるということですが,3章ではまだそれは言っていません.1章で述べられたように IR というのはすべてのエンティティを含むユニバースのことで,そのなかにはプロパティの(表示物の)集合 IP と型付きリテラル(の値)集合 IL とリテラル値(そのもの)の集合 LV が含まれる,ということです.3章では,むしろrdf:XMLLiteralについて,すなわち IL について多く述べています.

1章で解説を省いてしまいましたが,IEXTというのはプロパティ外延写像と呼ばれ,IR 中の任意の二つのエンティティを取り出してペア <I(s), I(o)> を作ったとき,IEXT(I(p))というのはプロパティ p に関する三つ組み <s p o> が成り立つ集合のことを言います.ここで表示するもの x について表示されるものを I(x) と表記しています.ちょっと蛇足ですが,
rdf:type rdf:type rdf:Property .
という三つ組みがあったとき,サブジェクトとしての rdf:type と プレディケイトとしての rdf:type を区別して,サブジェクトとしての rdf:type の表示物は I(rdf:type) ∈ IR ですが,意味論的条件の1番目から <I(rdf:type), I(rdf:Property)> ∈ IEXT(I(rdf:type)) だから I(rdf:type) ∈ IP となり,IP ⊆ IR だから問題なくて,逆に I(rdf:type) ∈ IP ならばこの三つ組みは成立して真となります.

RDF意味論的条件の2番目は "1"^^xsd:integer の値 IL("1"^^xsd:integer) は LV の元であって,その rdf:type は rdf:XMLLiteral であるということですね.

RDF意味論的条件の3番目は "one"^^xsd:integer の値 IL("one"^^xsd:integer) は LV の元でもなく,その rdf:type は rdf:XMLLiteral ではないということですね.この場合ill-formedな表記が表示するところのものは,何かあるとしているのでしょうか.この意味論的条件の証明のところでは,
ill-typed なXMLリテラルは RH 中ではそれ自体を表示し,それゆえ構成すると LVRH からは排除される.
としていますね.ウーム,そうか,文法エラーではじいてはいけないんだ.SWCLOS ではどうなっていたかな.ひょっとしたら,修正が必要かも.

Reification というのは意味も訳語も難しいですね.一応ここでは Russel&Norvig の訳に倣って「具体化」としましたが,インスタンシエーションとは違いますよね.(本当はもっと的確な訳語が,「伴意」みたいなものが,ほしいと思っています.)どうも解釈の逆の要素があるみたいです.伴意の図7.6 を見ていただきたいのですが,テキストの空間,字句空間から意味の空間へ行くのが解釈ならば,reification とはその逆の要素があります.ですからある三つ組み <ex:a> <ex:b> <ex:c> .    があったときに,意味空間からそのテキストのことを言及したい(と言ってもそれもやはりテキスト表現するしかないわけですから),それでこう書く.
_:xxx rdf:type rdf:Statement .
_:xxx rdf:subject <ex:a> .
_:xxx rdf:predicate <ex:b> .
_:xxx rdf:object <ex:c> .
私はreificationをまだ本格的には使っていませんが,これが使われるようになるとオントロジーもやっと成熟して一人前というような気がしています.おまえの言うことはああだこうだと言う,ここで言っていることはこことここからこう来ているよ,この知識はどこそこからもたらされました,などという知識がいっぱい増えると(メタ知識),今のページランクみたいに知識ランクをつけることができるようになって,オントロジーがやっと信頼できるようになる.

あと,rdf:value もほとんど無視されていますが,私はこれも重要と思っています.大体アノテーションとして xsd:string とか xsd:integer というのは意味を成しません.ですからサービス記述するときでも,関数の引数のタイプを指定するときでも,こういうプログラムレベルでの型ではなくて,意味のレベルでの型をつけなければいけません.例えば価格,温度,長さ.そうするとそこには単位と値が基本的に必要となり,値はデフォールトでは rdf:value がいい.RDF意味論では
プロパティのうちの第1のあるいは主要な値を指定するために用いられる.
としていますが,別にその値とは数値には限られませんね.

さて,第4章はいよいよrdfs語彙になります.やっとクラス・インスタンスと定義域・値域の話がでてきて,RDF意味論の中心的な章となります.


2008年12月7日

「RDF意味論」を読むために 第2章

伴意を理解するためには,何よりもまず Russell と Norvig の人工知能教科書にある図(第2版では図7.6,第1版なら図6.5)を見てください.それによれば,文による表現の世界とそれが表示(denote)する世界があったときに,文 α の解釈 I(α) すなわち文 α が指し示すところのものが成立して,I(α) から文 β の解釈 I(β) が成立するときに,文 α は文 β を「伴意」する,というわけですね.RDF意味論の用語集ではこのように書いてあります.

「一番目が真」がいつでもその「二番目も真」であることを保証するような表現間の意味論的関係
「一番目の表現」が真で「二番目が偽」となることが論理的にいかなるときも不可能であること
「一番目」を充足するいかなる解釈も「二番目」を充足すること

何にしても,伴意というのはこちらがわの文と文との関係に用いられることで,あちらがわの解釈の世界と平行の関係にあるようです.論理において, x+y=3 が真ならば必ず x=3-y も真,みたいなどんな xy であっても成り立つものを恒真式(トートロジー)といいます.トートロジーでは xy が何であるか,すなわち解釈を考える必要が無い.一方で,どんな世界をもってきても成り立たない式もあります.で,こういう恒真式や恒偽式はあたりまえすぎて考える余地がない.「つまらん,おまえの言うことはつまらん」というわけです.興味があるのは, xy の解釈によって真になったり偽になったりする範囲です.それであるトリプル集合を考えたとき,そのある解釈 I が成り立つ(すべてのトリプルが真の)とき,その解釈 I はトリプル集合を充足するといいます.充足する解釈がある場合を充足可能といいます.

xy が自然数の世界を考えたとき, x+y=3 というのは充足可能ですね.この場合,xy の解釈として{<0, 3>, <1, 2>, <2, 1>, <3, 0>}の4個の解釈があります.

それで,あるトリプル集合を考えたとき,これを充足する解釈のすべてについて,もう一つの新しいトリプルも成立するときに,もとのトリプル集合は新しいトリプルを伴意する,と言います.

もし A が B を伴意するのなら,A を真とするどのような解釈も B を真とする.したがって,A の表明はすでに B の表明と同じ「意味」を含んでいる.

伴意はつまらなくないです.中には自明でつまらない (trivially true) ものもありますが,A と言ったら B と言ったことと同然だよ,というのは推論を進めていく上で重要な点です.後で出てくる各種伴意ルールによって我々は多くの利益を得ることができます.例えば,あるトリプルにおいて全く初出のエンティティがあったとしても,伴意ルールを用いてサブジェクトとオブジェクトに位置するURI は rdfs:Resource のインスタンスとすることができますし,プレディケイトに位置するURI は rdf:Property のインスタンスとすることができます.

第2章ではいくつかの基本的なレンマを提出していますが,その直前にちょっと理解しがたい文があります.

RDFにおける単純に正当な推論の二つの基礎式は,論理表現すれば (P and Q) からPを推論することと,foo(baz) から(exists (?x) foo(?x)) を推論することである.

これいずれも当たり前といえば当たり前ですよね.多分この二つの推論を使って以後のレンマを導いているということなのでしょう.あまり自信はありませんが・・・.

(P and Q) ⇒ P というのは論理の世界ではAND除去と呼ばれていますが(自明なことですが),サブグラフのレンマ(グラフはそのサブグラフをすべて伴意する)というのはAND除去そのものですね.第1章のところでトリプルの一つでも偽ならばグラフは成立しないと書きましたが,言い換えればトリプルはAND結合だということですね.foo(baz) ⇒ (exists (?x) foo(?x)) というのは,ラベルのついているノードをブランクノードにしてしまうことですから,インスタンスのレンマ(グラフはそのいかなるインスタンスによっても伴意される)ことなのでしょうね.さてそのほかのレンマにもこの二つの推論が含まれているのでしょうか?

ここまでのところでは,とくべつな語彙は何もありませんでした.次章からrdf語彙とかrdfs語彙を導入し,その語彙の解釈の仕方を決めて,rdf-解釈,rdfs-解釈に伴うrdf-伴意ルールやrdfs-伴意ルールが導入されます.

読者

自己紹介