使用RDFS表示类和属性

时间:2015-02-06 18:16:46

标签: xml rdf semantic-web rdfs

我想用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表示书中是否包含作者(类中的类)?

谢谢。

1 个答案:

答案 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