Rdf 以空节点作为范围的属性

Rdf 以空节点作为范围的属性,rdf,owl,ontology,rdfs,blank-nodes,Rdf,Owl,Ontology,Rdfs,Blank Nodes,在本体中定义属性时,如何定义该属性的范围是“空白”节点?例如,我想用domainPerson定义属性hasPhoneNumber。我知道一个人可以有多个电话号码,所以person的实例将有一个空白节点附加到hasPhoneNumber属性,然后电话号码附加到这个空白节点。简而言之,您不能这样做。空白节点只是另一种类型的资源。空白节点在RDF中充当存在变量;在图中使用空白节点表示某些资源存在,并且与其他资源存在一定的关系。例如,图形(没有空白节点): 包含以下图形(带有空白节点): 有关此处理的更

在本体中定义属性时,如何定义该属性的范围是“空白”节点?例如,我想用domain
Person
定义属性
hasPhoneNumber
。我知道一个人可以有多个电话号码,所以
person
的实例将有一个空白节点附加到
hasPhoneNumber
属性,然后电话号码附加到这个空白节点。

简而言之,您不能这样做。空白节点只是另一种类型的资源。空白节点在RDF中充当存在变量;在图中使用空白节点表示某些资源存在,并且与其他资源存在一定的关系。例如,图形(没有空白节点):

包含以下图形(带有空白节点):

有关此处理的更多信息,请参阅W3C建议

在RDF和RDFS级别(定义域和属性范围),以区分资源是URI资源还是空白节点。如果可以的话,也不清楚这意味着什么。这么说

:p rdfs:domain :C ;
   rdfs:range  :D .
您的意思是,每当您看到使用
:p
,例如

:a :p :b .
您可以将以下三元组添加到图形中:

:a rdf:type :C .
:b rdf:type :D .
请注意,由于
rdfs:domain
rdfs:range
是关于向图形中添加更多的三元组,因此使用
:p
的三元组的主语和宾语(在本例中为
:a
:b
)是空白节点还是URI节点并不重要

如果您想为一个人提供多个电话号码,您可以使用多个三元组,并具有以下功能:

:p :hasPhoneNumber :phoneNumber1 , :phoneNumber2, :phoneNumber3 .
这是三个三元组:

:p :hasPhoneNumber :phoneNumber1 .
:p :hasPhoneNumber :phoneNumber2 .
:p :hasPhoneNumber :phoneNumber3 .
或者,如果您想模拟一个人可以拥有一些电话号码的集合,您可以使用RDF容器。例如,使用
rdf:List

:p :hasPhoneNumber ( :phoneNumber1 :phoneNumber2 :phoneNumber3 ) .
可以将其全文写成

:p :hasPhoneNumber [ rdf:first :phoneNumber1 ;
                     rdf:rest [ rdf:first :phoneNumber2 ;
                                rdf:rest [ rdf:first :phoneNumber3 ;
                                           rdf:rest  rdf:nil ] ] ] .
:p :hasPhoneNumber ( :phoneNumber1 :phoneNumber2 :phoneNumber3 ) .
:p :hasPhoneNumber [ rdf:first :phoneNumber1 ;
                     rdf:rest [ rdf:first :phoneNumber2 ;
                                rdf:rest [ rdf:first :phoneNumber3 ;
                                           rdf:rest  rdf:nil ] ] ] .