2012-05-11 40 views
0

我在本體文件中有許多類,並且在xml文件中具有不同名稱的相同數量的類。我已經從XML文件創建了一個RDF三重存儲。現在我需要將三重商店中的類的名稱更改爲本體中的類。相當於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> 

我要改名字(類名)到不同名稱的一小部分例如(ClassA)。我可以通過編寫SPARQL查詢來做到這一點嗎?

作爲一個工具包,我正在使用gena 我不確定我在問什麼是可能的或不是!

+2

這很不清楚。你能說說你想做什麼嗎?因爲更新商店的細節因平臺而異,因此更具體地說明您使用的RDF工具包(例如,耶拿,芝麻,雷德蘭等)也會有所幫助。從表面上看,我看不出SPARQL與你所說的內容有什麼關係,但更清晰的解釋和例子會有所幫助。 –

回答

0

一般來說,耶拿​​資源是不可變的:一旦創建了對象,你就不能改變它的對象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)執行此操作。

+0

非常感謝您的回答。 –

+0

不客氣。如果這回答您的問題,請將其標記爲「已接受」。 –