只将这一个四角点添加到一个空的商店:
<http://x.com/s> <http://x.com/p> 2 <http://x.com/g> .然后执行这个SPARQL查询(取自Bob DuCharme的“学习SPARQL”一书,因此这必须是标准的SPARQL,用于检索整个数据集的所有四叉,而不管实现如何,对吗!):
SELECT ?g ?s ?p ?o
WHERE {
{ ?s ?p ?o }
UNION
{ GRAPH ?g { ?s ?p ?o } } }但耶拿和芝麻的回答不同!!?我看到的是:
Tomcat 6.0.37上的Jena Fuseki控制台(版本2.10.0 -开箱即用,没有配置更改!)-(我理解的正确答案):
--------------------------------------------------------------
| g | s | p | o |
==============================================================
| <http://x.com/g> | <http://x.com/s> | <http://x.com/p> | 2 |
--------------------------------------------------------------Tomcat 6.0.37上的Sesame Workbench (版本2.7.3 -开箱即用,没有配置更改!):只需使用工作台中的“add”功能手动添加上述四项内容(在“数据格式”下拉框中选择“upload”),在“输入您希望上载的RDF数据”编辑框中,然后运行上述查询:
--------------------------------------------------------------
| g | s | p | o |
==============================================================
| | <http://x.com/s> | <http://x.com/p> | 2 |
| <http://x.com/g> | <http://x.com/s> | <http://x.com/p> | 2 |
--------------------------------------------------------------所以,对于那些开始关注RDF的人来说,这有点可怕--我在这里错过了什么?我想芝麻不可能是“错的”--所以我想这一定是我的“解释”(或者Bob的查询不是“标准SPARQL”,所以不同的实现可以自由地返回不同的结果)--任何启发都是非常受欢迎的:)!
发布于 2013-08-21 22:49:03
正如@约书亚·泰勒在他的评论中指出的那样,原因是芝麻和耶拿对默认图表的解释不同。
在Sesame中,整个存储库被认为是默认图:所有命名图中的所有语句以及没有命名图的所有语句。因此,查询默认图的联合的第一个参数成功并绑定了?s、?p和?o (而不是?g)。你的联合的第二个论点显然也成功了,因为原始的四元当然是在一个命名的图中,因此你得到了两个答案。
在默认情况下,Jena使用“独占”默认图:默认图中只有未显式添加到任何特定命名图的语句。因此,在Jena中,联合的第一部分失败(在Jena的默认图中没有匹配的语句),第二部分成功,因此只能得到1个结果。
听起来很奇怪,但两者都是正确的。区别仅仅在于执行查询的数据集是如何设置的。
当然,有办法解决这个问题。在Jena和Sesame中,您都可以添加FROM (NAMED)子句,使其明确查询数据集是什么(Sesame提供了sesame:nil图形名称,用于显式查询那些没有关联命名图的语句)。或者,您可以以编程方式修改执行查询的数据集定义。Jena和Sesame中的精确机制有点不同,但它们都有选项(在Sesame中,您可以在执行查询之前创建并提供一个Dataset对象;在Jena中,我相信您可以重新配置执行查询的实际存储区或模型,以实现不同的行为)。
https://stackoverflow.com/questions/18366298
复制相似问题