RDFスキーマのsubClassOfやsubPropertyOf、domain、range、OWLの推移律プロパティ、逆関数プロパティ(IFP)、sameAsなどを用いると、どのようなグラフを導くことができるかというデモンストレーションを行ったものです。説明はスライドには記述してないので、予備知識がないと分かりにくいかも知れません。
コンピュータ書籍→技術書籍→書籍というクラスツリーがあるとき:
<rdfs:Class rdf:about="http://example.org/terms/ComputerBook"> <rdfs:subClassOf rdf:resource="http://example.org/terms/TechnicalBook"/> </rdfs:Class> <rdfs:Class rdf:about="http://example.org/terms/TechnicalBook"> <rdfs:subClassOf> <rdfs:Class rdf:about="http://example.org/terms/Book"/> </rdfs:subClassOf> </rdfs:Class>
あるリソースがコンピュータ書籍ならば:
<rdf:Description rdf:about="urn:isbn:4-627-82931-0"> <rdf:type rdf:resource="http://example.org/terms/ComputerBook"/> </rdf:Description>
あるリソースがex:hasPublisherという関係で結ばれる:
<rdf:Description rdf:about="urn:isbn:4-627-82931-0"> <ex:hasPublisher rdf:resource="http://example.org/publisher/森北出版"/> </rdf:Description>
ex:hasPublisherの定義域(主語)はex:Book、値域(目的語)はex:Publisher:
<rdf:Property rdf:about="http://example.org/terms/hasPublisher"> <rdfs:domain rdf:resource="http://example.org/terms/Book"/> <rdfs:range rdf:resource="http://example.org/terms/Publisher"/> </rdf:Property>
仕事1、仕事2、仕事3がそれぞれ下部工程(ex:subProcess):
<rdf:Description rdf:ID="Job3"> <ex:subProcess rdf:resource="#Job2"/> </rdf:Description> <rdf:Description rdf:ID="Job2"> <ex:subProcess rdf:resource="#Job1"/> </rdf:Description>
ex:subProcessが推移型のプロパティなら:
<owl:TransitiveProperty rdf:about="http://example.org/terms/subProcess"/>
同じリソースを異なるIDで処理している:
<!--A社のデータベース--> <rdf:Description rdf:about="urn:isbn:4-627-82931-0"> <ex:hasPublisher rdf:resource="http://example.org/publisher/森北出版"/> </rdf:Description> <!--B社のデータベース--> <rdf:Description rdf:about="urn:nbn:jp:20730084"> <ex:author ex:name="神崎正英"/> </rdf:Description>
2つのリソースが同一である(owl:sameAs)ことを示すことで:
<rdf:Description rdf:about="urn:isbn:4-627-82931-0"> <owl:sameAs rdf:resource="urn:nbn:jp:20730084"/> </rdf:Description>
イベント情報、FOAF、RSS、書籍情報などが存在する
<!--Events--> <ex:Event> <dc:title>JAGAT Semminar</dc:title> <dc:date>2005-09-13</dc:date> <ex:attendee rdf:resource="urn:pin:MK705"/> </ex:Event> <!--FOAF--> <foaf:Person rdf:about="urn:pin:MK705"> <foaf:name>Masahide Kanzaki</foaf:name> <foaf:mbox rdf:resource="mailto:webmaster@kanzak.com"/> </foaf:Person> <!--RSS--> <ex:channel rdf:about="http://www.kanzaki.com/info/memo.rdf"> <ex:title>my memo</ex:title> <dc:creator rdf:itemid="urn:pin:MK705"/> </ex:channel> <!--Books--> <ex:Book rdf:about="urn:isbn:4-627-82931-0"> <dc:title>RDF/OWL</dc:title> <dc:creator rdf:itemid="urn:pin:MK705"/> </ex:Book>
イベント参加者のウェブログと書籍を検索する
RDQL クエリ SELECT ?name,?blog,?blogtitle,?book,?booktitle WHERE (?ev rdf:type ex:Event) (?ev ex:attendee ?who) (?who foaf:name ?name) (?blog rdf:type ex:channel) (?blog dc:creator ?who) (?blog ex:title ?blogtitle) (?book rdf:type ex:Book) (?book dc:creator ?who) (?book dc:title ?booktitle) USING ex for <http://example.org/terms/> foaf for <http://xmlns.com/foaf/0.1/> dc for <http://purl.org/dc/elements/1.1/> rdf for <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
ある会社では著者を独自語彙のex:authorとして登録
<rdf:Description rdf:about="urn:isbn:4-627-82931-0"> <ex:author>神崎正英</ex:author> </rdf:Description>
ex:authorはdc:creatorのサブプロパティであるとスキーマを記述
<rdf:Property rdf:about="http://example.org/terms/author"> <rdfs:subPropertyOf rdf:resource="http://purl.org/dc/elements/1.1/creator"/> </rdf:Property>
John Smith氏が複数いる時:
<!--イベント参加者--> <ex:Event rdf:ID="j050913"> <dc:title>JAGAT Semminar</dc:title> <ex:attendee> <foaf:Person> <foaf:name>John Smith</foaf:name> <foaf:mbox rdf:resource="mailto:jsmith@example.org"/> </foaf:Person> </ex:attendee> </ex:Event> <!--メーリングリスト投稿者--> <ex:MailMessage rdf:ID="post1024"> <dc:title>A proposal from John Smith</dc:title> <ex:postedBy rdf:parseType="Resource"> <foaf:mbox rdf:resource="mailto:jsmith@example.org"/> </ex:postedBy> </ex:MailMessage> <!--記事執筆者--> <ex:Article rdf:ID="ab123"> <dc:title>Semantic Web</dc:title> <ex:author>John Smith</ex:author> </ex:Article>
foaf:mboxが逆関数型プロパティであることを使って同一人物を確認
<owl:InverseFunctionalProperty rdf:about="http://xmlns.com/foaf/0.1/mbox"/>