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

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データタイプのクラス階層構造はここにあるとおりですので,参考にしてください.

0 コメント:

読者

自己紹介