Sparql 有没有办法向RDF三元组添加其他信息?
我有RDF三元组表示的文档,一些用户可以在这些文档之间添加关系。我计划记录这些关系的方式如下:(RDF/XML代码的子集)Sparql 有没有办法向RDF三元组添加其他信息?,sparql,rdf,Sparql,Rdf,我有RDF三元组表示的文档,一些用户可以在这些文档之间添加关系。我计划记录这些关系的方式如下:(RDF/XML代码的子集) (关系建立在内容表中,因此tocMember和isInToc名称) 但我现在需要存储创建此关系的用户ID。一种异端的方式可能是添加属性,例如: <rdf:Description rdf:about="SOURCEDocId"> <kb:tocMember xml:createdBy="USERId" rdf:resource="TARGETDo
(关系建立在内容表中,因此tocMember和isInToc名称)
但我现在需要存储创建此关系的用户ID。一种异端的方式可能是添加属性,例如:
<rdf:Description rdf:about="SOURCEDocId">
<kb:tocMember xml:createdBy="USERId" rdf:resource="TARGETDocId"/>
</rdf:Description>
<rdf:Description rdf:about="TARGETDocId">
<kb:isInToc xml:createdBy="USERId" rdf:resource="SOURCEDocId"/>
</rdf:Description>
我不确定RDF triplestores是否会接受此信息,并且此信息不能用于SPARQL请求。
也可以创建一个链接实体并对其进行限定,但这对于一个非常小的实现需求来说是一个混乱。
因此,一种更好的方式?关于语句的语句可以通过以下方式在RDF中表示: 1) RDF物化 2) n元关系 3) 单态属性 4) 命名图 5) 使用RDF* 每种选择都有优点和缺点 下面是如何使用RDF具体化来表示您的案例(示例与第一条语句一起): 如前所述,使用Turle使其清晰易读。然而,由于您在RDF/XML中给出了示例,具体化将如下所示,用XML序列化:
<rdf:Statement rdf:ID="SOURCEDocId-tocMember-TARGETDocId">
<createdBy rdf:resource="#USERId"/>
<rdf:subject rdf:resource="#SOURCEDocId"/>
<rdf:predicate rdf:resource="http://example.org/kb/tocMember"/>
<rdf:object rdf:resource="#TARGETDocId"/>
</rdf:Statement>
这里的:createdBy
显示为本地创建的,但是如果您重用适当词汇表中的属性,例如Dublic Core中的dc:creator
,或者schema.org中的schema:creator
,当然会更好
使用选项(2),您不会直接将源链接到目标,而是通过中间节点(如:targetEntry1
)链接,然后可以将其与值和来源关联:
:SOURCEDocId kb:tocMember :targetEntry1 .
:targetEntry1 :value :TARGETDocId ;
:createdBy :USERId .
查看可用的出处方法:RDF具体化、singleton属性、RDF*和其他方法,如Wikidata。
xml:createdBy=“USERId”
-这是什么?RDF不是XML。。。不管是重新定义还是n元关系——仅此而已。顺便说一句,在我看来,将RDF数据显示为XML是最糟糕的情况。什么不使用更可读的格式,如N-Triples、Turtle等?在我的问题中,“XML:createdBy=“USERId”被认为是异端的东西。而RDF/XML则是公开案例的最简单方法
<rdf:Statement rdf:ID="SOURCEDocId-tocMember-TARGETDocId">
<createdBy rdf:resource="#USERId"/>
<rdf:subject rdf:resource="#SOURCEDocId"/>
<rdf:predicate rdf:resource="http://example.org/kb/tocMember"/>
<rdf:object rdf:resource="#TARGETDocId"/>
</rdf:Statement>
[
rdf:type rdf:Statement ;
:createdBy :USERId ;
rdf:object :TARGETDocId ;
rdf:predicate kb:tocMember ;
rdf:subject :SOURCEDocId .
]
:SOURCEDocId kb:tocMember :targetEntry1 .
:targetEntry1 :value :TARGETDocId ;
:createdBy :USERId .