我需要一些帮助
我使用RDF/XML来表示一些数据.
首先,我想表明一个人认识其他人,我宣布该财产,并使用以下代码来指明马克知道卡特琳和卡特琳知道约翰
PART 1
<rdf:Property rdf:about="Know">
<rdfs:domain rdf:resource="#Person"/>
<rdfs:range rdf:resource="#Person"/>
</rdf:Property>
PART2
<rdf:Description rdf:about="#Mark">
<dc:Knows rdf:resource="#Katrin"/>
</rdf:Description>
<rdf:Description rdf:about="#Katrin">
<dc:Knows rdf:resource="#John"/>
</rdf:Description>
Run Code Online (Sandbox Code Playgroud)
现在我想声明一个属性并代表更多的东西.我的意思是说.我想举例说,katrin拥有一只ID为10的狗,这只狗的颜色为黑色,名字叫彼得.上面我只有资源属性和对象.现在我必须说更多我怎么能成为第2部分?
PART 1
<rdf:Property rdf:ID="Own">
<rdfs:domain rdf:resource="#Person"/>
<rdfs:range rdf:resource="#Dog"/>
</rdf:Property>
PART 2 ?????
Run Code Online (Sandbox Code Playgroud)
预先感谢您的帮助.
首先,请注意,已声明的属性Know与<rdf:Property rdf:about="Know">…</rdf:Property>,但是你用Knows在你的代码的其余部分.
如果你需要手工编写RDF,那么使用一种人类可读和可写的语法就会容易得多,比如Turtle(正如迈克尔在回答你之前的问题时所建议的那样).在Turtle,我们可以写你目前为止所做的:
@prefix : <https://stackoverflow.com/q/22782748/1281433/>
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
:Knows a rdfs:Property ;
rdfs:domain :Person ;
rdfs:range :Person .
:Mark :Knows :Katrin .
:Katrin :Knows :John .
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因你真的需要这个RDF/XML,你可以使用像Jena这样的转换器rdfcat来获得如下输出:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="https://stackoverflow.com/q/22782748/1281433/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdfs:Property rdf:about="https://stackoverflow.com/q/22782748/1281433/Knows">
<rdfs:domain rdf:resource="https://stackoverflow.com/q/22782748/1281433/Person"/>
<rdfs:range rdf:resource="https://stackoverflow.com/q/22782748/1281433/Person"/>
</rdfs:Property>
<rdf:Description rdf:about="https://stackoverflow.com/q/22782748/1281433/Mark">
<Knows>
<rdf:Description rdf:about="https://stackoverflow.com/q/22782748/1281433/Katrin">
<Knows rdf:resource="https://stackoverflow.com/q/22782748/1281433/John"/>
</rdf:Description>
</Knows>
</rdf:Description>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)
现在,说出类似的话
katrin拥有一只身份证10的狗,这只狗的颜色为黑色,名字叫彼得.
声明新属性(owns,hasColor,hasId等)与上面完全相同.您不需要声明属性来使用它,因此我不会在此处包含新属性的声明.此外,您之前的问题的答案,当我声明属性如何使用它时,显示如何声明属性.)如果您有狗的IRI,并且"它的名字是彼得"你的意思是它的IRI是<…Peter>,那么你可以这样做:
@prefix : <https://stackoverflow.com/q/22782748/1281433/>
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
:Katrin :owns :Peter .
:Peter a :Dog ;
:hasId 10 ;
:hasColor "black" .
Run Code Online (Sandbox Code Playgroud)
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="https://stackoverflow.com/q/22782748/1281433/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdf:Description rdf:about="https://stackoverflow.com/q/22782748/1281433/Katrin">
<owns>
<Dog rdf:about="https://stackoverflow.com/q/22782748/1281433/Peter">
<hasId rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
>10</hasId>
<hasColor>black</hasColor>
</Dog>
</owns>
</rdf:Description>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)
如果您没有狗的IRI,那么您可以使用空白节点:
@prefix : <https://stackoverflow.com/q/22782748/1281433/>
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
:Katrin :owns _:dog .
_:dog a :Dog ;
:hasName "Peter" ;
:hasId 10 ;
:hasColor "black" .
Run Code Online (Sandbox Code Playgroud)
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="https://stackoverflow.com/q/22782748/1281433/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdf:Description rdf:about="https://stackoverflow.com/q/22782748/1281433/Katrin">
<owns>
<Dog>
<hasName>Peter</hasName>
<hasId rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
>10</hasId>
<hasColor>black</hasColor>
</Dog>
</owns>
</rdf:Description>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)
而不是_:dog空白节点的表示法,我通常在这里使用更紧凑的缩写表示法:
@prefix : <https://stackoverflow.com/q/22782748/1281433/>
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
:Katrin :owns [ a :Dog ;
:hasName "Peter" ;
:hasId 10 ;
:hasColor "black" ] .
Run Code Online (Sandbox Code Playgroud)
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="https://stackoverflow.com/q/22782748/1281433/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdf:Description rdf:about="https://stackoverflow.com/q/22782748/1281433/Katrin">
<owns>
<Dog>
<hasName>Peter</hasName>
<hasId rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
>10</hasId>
<hasColor>black</hasColor>
</Dog>
</owns>
</rdf:Description>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)