我有这个RDF文件:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:j.0="http://relation/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdf:Description rdf:about="soggetto">
<j.0:Nome>Vercelli</j.0:Nome>
<j.0:Regione>Piemonte</j.0:Regione>
</rdf:Description>
<rdf:Description rdf:about="Piemonte">
<rdfs:label>Piemonte</rdfs:label>
</rdf:Description>
<rdf:Description rdf:about="Regione">
<rdfs:label>Regione</rdfs:label>
<rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
</rdf:Description>
<rdf:Description rdf:about="Vercelli">
<rdfs:label>Vercelli</rdfs:label>
</rdf:Description>
<rdf:Description rdf:about="Nome">
<rdfs:label>Nome</rdfs:label>
<rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
</rdf:Description>
</rdf:RDF>
我想将Piemonte和Vercelli对象(在"soggetto"主题中)与Piemonte和Vercelli主题联系起来,并且我想将Regione和Nome谓词(在"soggetto"主题中)与Regione和Nome主题联系起来。
对我来说,Vercelli主语等于Vercelli宾语,Piemonte主语等于Piemonte宾语,Regione谓词等于Regione主语,Nome谓词等于Nome主语。
我怎样才能做到这一点?我能用rdf:type
谓词使维切利的宾语等于维切利的主语吗?或者是否存在其他属性?
我认为您真正要问的是如何使用资源作为某些主题的对象,而不是碰巧具有类似内容的字符串。首先,让我们在数据中添加一个xml:base
和一个xmlns
,这样它就更可预测了:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:j.0="http://stackoverflow.com/q/24084473/1281433/relations/"
xml:base="http://stackoverflow.com/q/24084473/1281433/"
xmlns="http://stackoverflow.com/q/24084473/1281433/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdf:Description rdf:about="soggetto">
<j.0:Nome>Vercelli</j.0:Nome>
<j.0:Regione>Piemonte</j.0:Regione>
</rdf:Description>
<rdf:Description rdf:about="Piemonte">
<rdfs:label>Piemonte</rdfs:label>
</rdf:Description>
<rdf:Description rdf:about="Regione">
<rdfs:label>Regione</rdfs:label>
<rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
</rdf:Description>
<rdf:Description rdf:about="Vercelli">
<rdfs:label>Vercelli</rdfs:label>
</rdf:Description>
<rdf:Description rdf:about="Nome">
<rdfs:label>Nome</rdfs:label>
<rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
</rdf:Description>
</rdf:RDF>
现在,使用Turtle/N3序列化比使用RDF/XML要容易得多,所以让我们看一下Turtle中的相同数据:
@prefix : <http://stackoverflow.com/q/24084473/1281433/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix j.0: <http://stackoverflow.com/q/24084473/1281433/relations/> .
:Nome a rdf:Property ;
rdfs:label "Nome" .
:Regione a rdf:Property ;
rdfs:label "Regione" .
:Vercelli rdfs:label "Vercelli" .
:soggetto j.0:Nome "Vercelli" ;
j.0:Regione "Piemonte" .
:Piemonte rdfs:label "Piemonte" .
更容易看到数据的结构,并知道如何修复它。它听起来像是,而不是说
:soggetto j.0:Nome "Vercelli" ;
j.0:Regione "Piemonte" .
您希望将:soggetto
区域作为资源:Piemonte,您可以简单地通过使用:Piemonte
而不是"Piemonte"
来实现。那么在Turtle和RDF/XML中,您的数据将是
@prefix : <http://stackoverflow.com/q/24084473/1281433/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix j.0: <http://stackoverflow.com/q/24084473/1281433/relations/> .
:Nome a rdf:Property ;
rdfs:label "Nome" .
:Regione a rdf:Property ;
rdfs:label "Regione" .
:Vercelli rdfs:label "Vercelli" .
:soggetto j.0:Nome "Vercelli" ;
j.0:Regione :Piemonte .
:Piemonte rdfs:label "Piemonte" .
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://stackoverflow.com/q/24084473/1281433/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:j.0="http://stackoverflow.com/q/24084473/1281433/relations/">
<rdf:Property rdf:about="http://stackoverflow.com/q/24084473/1281433/Regione">
<rdfs:label>Regione</rdfs:label>
</rdf:Property>
<rdf:Property rdf:about="http://stackoverflow.com/q/24084473/1281433/Nome">
<rdfs:label>Nome</rdfs:label>
</rdf:Property>
<rdf:Description rdf:about="http://stackoverflow.com/q/24084473/1281433/soggetto">
<j.0:Nome>Vercelli</j.0:Nome>
<j.0:Regione>
<rdf:Description rdf:about="http://stackoverflow.com/q/24084473/1281433/Piemonte">
<rdfs:label>Piemonte</rdfs:label>
</rdf:Description>
</j.0:Regione>
</rdf:Description>
<rdf:Description rdf:about="http://stackoverflow.com/q/24084473/1281433/Vercelli">
<rdfs:label>Vercelli</rdfs:label>
</rdf:Description>
</rdf:RDF>