我想用RDFS代表这个:
- 一本书有一个标题和一个作者
- 作者姓名为
我试过了:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" >
<rdf:Description rdf:ID="Book">
<rdf:type rdf:resource="http://www.w3.org/…/rdf-schema#Class"/>
</rdf:Description>
<rdf:Property rdf:ID="titleBook">
<rdfs:domain rdf:resource="#Book"/>
<rdfs:range rdf:resource="xmlns:rdfsLiteral"/>
</rdf:Property>
<rdf:Property rdf:ID="authorBook">
<rdfs:domain rdf:resource="#Book"/>
<rdfs:range rdf:resource="#Author"/>
</rdf:Property>
<rdf:Description rdf:ID="Author">
<rdf:type rdf:resource="http://www.w3.org/…/rdf-schema#Class"/>
</rdf:Description>
<rdf:Property rdf:ID="nameAuthor">
<rdfs:domain rdf:resource="#Author"/>
<rdfs:range rdf:resource="xmlns:rdfsLiteral"/>
</rdf:Property>
但我不确定,我在域名和范围之间感到困惑 如何用RDFS表示书中是否包含作者(类中的类)?
谢谢。
答案 0 :(得分:2)
但我不确定,我在域和范围之间感到困惑。
当属性p具有域D时,意味着只要您有三元组
x p y
然后x是D的一个实例。当属性p的范围为R时,意味着每当你有一个三元组时
x p y
然后y是R的一个实例。例如,如果你有:
ex:hasTitle rdfs:domain ex:Book
然后从
:dickens1859 ex:hasTitle "A Tale of Two Cities"@en
你可以推断:
:dickens1859 rdf:type ex:Book
如何表示一本书包含一个作者(一个班级中的一个班级) 与RDFS?
RDFS中的类与面向对象编程语言中的类不同。类更像是集合论中的集合。在RDFS中,您可以声明Book和Author类,并声明具有域Book和范围作者的hasAuthor属性:
ex:Book a rdfs:Class .
ex:Author a rdfs:Class .
ex:hasAuthor rdfs:domain ex:Book ;
rdfs:range ex:Author .
如果您想说Book的每个实例都至少有一个作者,那么您需要使用比RDFS更强大的语言。例如,你可以使用OWL,你可以说&#34;每本书都有一个作者&#34; (也就是说,#34;至少有一位作者&#34;)有一个公理如:
Book⊑∃hasAuthor.Author