0

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

任何人都可以知道如何使用 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 我不确定我在问什么是可能的!

4

1 回答 1

0

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

相反,您要做的是更新模型以展示重命名的效果。假设您要将资源重命名RS. 对于每个三元组:

R P O

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

S P O

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

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

于 2012-05-13T23:41:56.467 回答