4. RDF/XMLの厳密な構文(2)URI参照RDFでURIを参照するときには、普通次のように記述します。 例1 <?xml version=”1.0” encoding=”Shift_JIS” ?> <rdf:RDF xmls:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#” xmls:4dd=”http://www.4dd.co.jp/yojigen/” > <rdf:Description rdf:about=”http://www.4dd.co.jp/yojigen/FourDimensionalData” > <4dd:creator rdf:resource=”http://www.4dd.co.jp/yojigen/TaroYojigen” /> <4dd:homePage rdf:resource=”http://www.4dd.co.jp/” /> <4dd:hasEmployee>40</4dd:hasEmployee> </rdf:Description> </rdf:RDF> この例では "http://www.4dd.co.jp/yojigen/" と何度も記述しています。これを簡単に記述するために、基底URIを設定することができます。基底URIはxml:base属性をrdf:RDF要素のプロパティ属性に記述することで設定できます。基底URIを設定したときのURIの決定方法は次のようになります。
たとえば、xml:base="http://www.4dd.co.jp/yojigen"と宣言していたとすると、rdf:ID="Person"という属性を持つノードのURIは、"http://www.4dd.co.jp/yojigen #Person" ということになります。また、rdf:resource="Animal" とすると、"http://www.4dd.co.jp/yojigen/Animal" を参照します。 rdf:nodeIDは、空白ノードに対してローカルIDをつけたい場合に使う属性で、rdf:about、rdf:resourceの代わりに記述します。例を示します。 例2 <rdf:Description rdf:about=http://www.4dd.co.jp/ > <4dd:creator rdf:nodeID=”a” /> </rdf:Description> <rdf:Description rdf:nodeID=”a”> <4dd:name>Taro,Yojigen</4dd:name> <4dd:address>Kyoto</4dd:address> </rdf:Description> 最後に基底URIを使った例を示します。 例3 <?xml version="1.0" encoding="Shift_JIS"?> <rdf:RDF xmls:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns# xmls:4dd=http://www.4dd.co.jp/yojigen/ xml:base=http://www.4dd.co.jp/yojigen/ > <rdf:Description rdf:ID=”FourDimensionalData” > <4dd:creator rdf:resource=”TaroYojigen” /> <4dd:homePage rdf:resource=”http://www.4dd.co.jp/” /> <4dd:hasEmployee rdf:datatype="http://www.w3.org/2001/XMLSchema#int" >40</4dd:hasEmployee> </rdf:Description> </rdf:RDF> 上のように、FourDimensionalDataのURIは "http://www.4dd.co.jp/yojigen/#FourDimensionalData" 、TaroYojigenのURIは "http://www.4dd.co.jp/yojigen/TaroYojigen" になりますが、4dd:homePageの値やrdf:datatype属性の値のように絶対URIを記述した場合、そちらが優先されます。つまり、相対URIを各属性の値に記述したときは上で説明した決定方法でURIが決まり、値に絶対URIを記述した場合は基底URIとは関係なく絶対URIが値として採用されます。 rdf:parseType属性rdf:parseType属性は、その要素の中身をどのように扱うかを指定する属性で、その型は次の3種類あります。
これらについて例をひとつずつあげたいと思います。 例4 <4dd:player parseType="Literal"> <4dd:Person rdf:ID="TaroYojigen "/> </4dd:player> これは、4dd:playerの値はリテラル値としての "<4dd:Person rdf:ID="TaroYojigen "/>" であるということになります。
例5 <4dd:player parseType="Resource"> <4dd:name>TaroYojigen </4dd:name> <4dd:mailaddress>yojigen@4dd.co.jp</4dd:mailaddress> </4dd:player> このResource型は次の図のように匿名ノードを生成することになります。
例6 <4dd:player parseType="Collection"> <4dd:Person rdf:ID="TaroYojigen "/> <4dd:Person rdf:ID="JiroYojigen "/> </4dd:player> このときのモデルは、rdf:first、rdf:restというプロパティと、rdf:nilノードを使って表現します。
このグラフ中の匿名ノードはrdf:List型のノードです。rdf:nilはrdf:Listのサブクラスで各リストから要素をひとつずつ取り出していく形になります。
第2章で説明した文の具体化は、rdf:ID属性を利用することで簡略化することができます。 例7 <rdf:Statement rdf:ID=”thisGame”> <rdf:subject rdf:resource=”#TaroYojigen” /> <rdf:predicate rdf:resource=”#plays” /> <rdf:object rdf:resource=”#Tennis” /> </rdf:Statement> 例8 <rdf:Description rdf:ID=”TaroYojigen”> <4dd:plays rdf:ID=”thisGame” rdf:resource=”#Tennis” /> </rdf:Description> 例1、2は同じモデルを表しています(playsプロパティが同じURIであるとする)。例1は第2章と同じグラフを表しています。例2はrdf:ID属性をpropertyAttributeとして記述することによってトリプルを簡単に具体化しています。 |
![]()
![]()
|