RDF三元组中的等价类

时间:2012-05-11 21:29:12

标签: xml rdf ontology triplestore

我在本体文件中有许多类,并且在xml文件中具有不同名称的相同数量的类。我已经从XML文件创建了一个RDF三元组存储。现在我需要将三重存储中的类名更改为Ontology中的类。

有没有人可以通过使用SPARQL查询来了解如何使等效? 如果SPARQL查询无法完成,那么最好的方法是什么?

-----------这是RDF的一小部分-------

<rdf:RDF
    xmlns:j.0="http://link/myLink/myOntology.rdf#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" > 
  <rdf:Description rdf:about="http://myDomain/myLink/%a=class/class9/">
    <j.0:hadP>Sea Power</j.0:hadP>
    <j.0:hadP>Steel city</j.0:hadP>
    <j.0:hadP>Singer1</j.0:hadP>
    <j.0:hadV>20</j.0:hadV>
    <j.0:hadP>City</j.0:hadP>
    <j.0:hadP>Singer2</j.0:hadP>
    <j.0:hadP>Singer3</j.0:hadP>
    <j.0:hadV>80</j.0:hadV>
    <j.0:hadVEvent>web:V</j.0:hadVEvent>
    <j.0:hadP>Park</j.0:hadP>
    <j.0:hadP>Arctic</j.0:hadP>
    <j.0:hadP>Guns</j.0:hadP>
    <rdf:type rdf:resource="http://link/myLink/myOntology.rdf#**ClassName**"/>
    <j.0:hadP>City Center</j.0:hadP>
    <j.0:hadV>100</j.0:hadV>
    <j.0:hadV>40</j.0:hadV>
  </rdf:Description>
 </rdf:RDF>

我想将名称(ClassName)更改为其他名称,例如(ClassA)。我可以通过编写SPARQL QUERY来做到这一点吗?

作为一个工具包,我正在使用gena 我不确定我所询问的是否可能!

1 个答案:

答案 0 :(得分:0)

通常,Jena资源是不可变的:一旦创建了Resource对象,就无法更改它。这意味着您无法更改任何资源的URI,包括类。

您要做的是更新模型以显示重命名的效果。假设您要将资源R重命名为S。对于每个三元组:

R P O

你需要添加一个新的三元组:

S P O

并删除旧的R P O三元组。同样,应删除每个三元组Q P R并添加三元组Q P S

Jena API中有一个实用程序可以为您执行此操作:ResourceUtils.renameResource。如果您想坚持使用SPARQL,则必须执行相同的添加和删除三元组过程,但您可以通过SPARQL Update supported in Jena进行此操作。