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