2012-08-02 69 views
1

我創建了一個應用程序,它可以與openrdf sesame和owlim模塊一起使用。最近,我需要更新許可證密鑰給owlim(我收到了最新的owlim版本的密鑰),所以我不得不更新芝麻。Sparql - 刪除查詢在更新後停止工作

應用是用芝麻2.6.0和4.3 owlim,現在已經更新到2.6.8芝麻和owlim建設5.2

有與刪除SPARQL查詢,這在舊版本的作品的問題,所以我有一種預感,該更新是問題。

這裏是一個這樣的查詢:

PREFIX oporg: <http://sesame.company.org/OPropertiesOrg#> 

WITH <users:> 
DELETE { 
?userID oporg:sessionID ?sessionID 
} 
INSERT { 
?userID oporg:sessionID "qafnsi9p1172c0dprf9e4bhm23" 
} 
WHERE{ 
?userID oporg:name "admin" 
} 

這應該(據我記得:)刪除每sessionID三聯與userID=admin並插入新sessionID三重。

插入部分作品,但刪除部分不。

回答

7

此原因不再有效的原因是您的DELETE子句包含一個永遠不會綁定到任何值的變量(?sessionID),因此在評估操作期間,這轉換爲不完整的三元模式並被忽略。

在較早版本的Sesame中,DELETE子句中的未綁定變量被解釋爲通配符。但是,這與SPARQL規範衝突,因此被修復爲Sesame版本2.6.7中的一個錯誤。詳情請參閱http://www.openrdf.org/issues/browse/SES-1047

你應該稍微修改刪除等操作,通過添加?sessionID百通到您的WHERE子句,像這樣:

PREFIX oporg: <http://sesame.company.org/OPropertiesOrg#> 

WITH <users:> 
DELETE { 
    ?userID oporg:sessionID ?sessionID 
} 
INSERT { 
    ?userID oporg:sessionID "qafnsi9p1172c0dprf9e4bhm23" 
} 
WHERE{ 
    ?userID oporg:name "admin" ; 
      oporg:sessionID ?sessionID . 
} 
+0

大聲笑,我不posses足夠的聲譽投票了。所以謝謝你,你的回答是正確的,它現在可以工作。 – apocalypz 2012-08-03 07:15:15