首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新后Sparql - delete查询停止工作

更新后Sparql - delete查询停止工作
EN

Stack Overflow用户
提问于 2012-08-02 22:47:15
回答 1查看 519关注 0票数 1

我已经创建了一个应用程序,它使用openrdf sesame和owlim模块。最近,我需要将许可证密钥更新为owlim (我收到了最新owlim版本的密钥),所以我被迫也更新了芝麻。

应用程序是使用sesame 2.6.0和owlim 4.3构建的,现在更新到sesame 2.6.8和owlim 5.2

delete sparql查询有问题,它在旧版本中有效,所以我有预感,更新是问题所在。

下面是一个这样的查询:

代码语言:javascript
复制
PREFIX oporg: <http://sesame.company.org/OPropertiesOrg#>

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

这应该(根据我的记忆:)用userID=admin删除每个sessionID三元组,并插入新的sessionID三元组。

插入零件有效,但删除零件无效。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-03 08:45:31

这不再起作用的原因是,您的DELETE子句包含一个从未绑定到任何地方的值的变量(?sessionID),因此在操作的计算过程中,这将转换为不完整的三元组模式,并被忽略。

在早期版本的Sesame中,DELETE子句中的未绑定变量被解释为通配符。但是,这与SPARQL规范相冲突,因此在Sesame版本2.6.7中被修复为错误。详情请参见http://www.openrdf.org/issues/browse/SES-1047

您应该稍微修改一下删除操作,将?sessionID模式添加到WHERE子句中,如下所示:

代码语言:javascript
复制
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 .
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11780014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档