Rdf Sparql-删除查询在更新后停止工作
我创建了一个应用程序,它与openrdf sesame和owlim模块一起工作。最近,我需要将许可证密钥更新到owlim(我收到了最新owlim版本的密钥),因此我也被迫更新sesame 应用程序是使用芝麻2.6.0和owlim 4.3构建的,现在更新为芝麻2.6.8和owlim 5.2 deletesparql查询存在问题,它在旧版本中工作,所以我有一个预感,更新就是问题所在 这里有一个这样的问题:Rdf Sparql-删除查询在更新后停止工作,rdf,sesame,Rdf,Sesame,我创建了一个应用程序,它与openrdf sesame和owlim模块一起工作。最近,我需要将许可证密钥更新到owlim(我收到了最新owlim版本的密钥),因此我也被迫更新sesame 应用程序是使用芝麻2.6.0和owlim 4.3构建的,现在更新为芝麻2.6.8和owlim 5.2 deletesparql查询存在问题,它在旧版本中工作,所以我有一个预感,更新就是问题所在 这里有一个这样的问题: PREFIX oporg: <http://sesame.company.org/OPr
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:
具有
删除{
?用户标识oporg:sessionID?sessionID
}
插入{
?用户ID oporg:sessionID“qafnsi9p1172c0dprf9e4bhm23”
}
在哪里{
?用户ID oporg:名称“管理员”
}
这应该(根据我的记忆:)删除带有userID=admin
的每个sessionID
三元组,并插入新的sessionID
三元组
Insert part有效,但delete part无效。这不再有效的原因是delete子句包含一个变量(
?sessionID
),该变量从未绑定到任何位置的值,因此在操作求值期间,这将转换为不完整的三元组模式,并被忽略
在Sesame的早期版本中,DELETE子句中的未绑定变量被解释为通配符。然而,这与SPARQL规范相冲突,因此在Sesame 2.6.7版中作为一个bug修复。有关详细信息,请参阅
您应该通过在WHERE子句中添加?sessionID
paten来稍微修改删除操作,如下所示:
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 .
}
前缀oporg:
具有
删除{
?用户标识oporg:sessionID?sessionID
}
插入{
?用户ID oporg:sessionID“qafnsi9p1172c0dprf9e4bhm23”
}
在哪里{
?用户名oporg:name“admin”;
oporg:sessionID?sessionID。
}
这不再有效的原因是DELETE子句包含一个变量(?sessionID
),该变量从未绑定到任何位置的值,因此在计算操作期间,这将转换为不完整的三元组模式,并被忽略
在Sesame的早期版本中,DELETE子句中的未绑定变量被解释为通配符。然而,这与SPARQL规范相冲突,因此在Sesame 2.6.7版中作为一个bug修复。有关详细信息,请参阅
您应该通过在WHERE子句中添加?sessionID
paten来稍微修改删除操作,如下所示:
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 .
}
前缀oporg:
具有
删除{
?用户标识oporg:sessionID?sessionID
}
插入{
?用户ID oporg:sessionID“qafnsi9p1172c0dprf9e4bhm23”
}
在哪里{
?用户名oporg:name“admin”;
oporg:sessionID?sessionID。
}
Lol,我没有足够的声望去投票。所以谢谢你,你的答案是正确的,而且现在可以了。哈哈,我没有足够的声望去投票。所以谢谢你,你的答案是正确的,它现在起作用了。