返回奇怪结果的SPARQL查询

返回奇怪结果的SPARQL查询,sparql,semantic-web,linked-data,Sparql,Semantic Web,Linked Data,我在SPARQL上工作了将近2年,但在过去我从未见过如此奇怪的情况。(注意:我使用的是原生triplestore) 问题1: prefix leaks: <http://data.ontotext.com/resource/leaks/> prefix leak: <http://data.ontotext.com/resource/leak/> SELECT * WHERE { leaks:entity-10000001 leak:jurisdic

我在SPARQL上工作了将近2年,但在过去我从未见过如此奇怪的情况。(注意:我使用的是原生triplestore)

问题1:

prefix leaks: <http://data.ontotext.com/resource/leaks/> 
prefix leak: <http://data.ontotext.com/resource/leak/>

SELECT * WHERE   
{  
    leaks:entity-10000001 leak:jurisdiction_description ?object.    
} 
前缀泄漏:
前缀泄漏:
选择*WHERE
{  
泄漏:实体-10000001泄漏:管辖权描述?对象。
} 
问题2:

prefix leaks: <http://data.ontotext.com/resource/leaks/> 
prefix leak: <http://data.ontotext.com/resource/leak/>

SELECT * WHERE  
{  
    leaks:entity-10000001 ?p ?object.    
} 
前缀泄漏:
前缀泄漏:
选择*WHERE
{  
泄漏:实体-10000001?p?对象。
} 
这里Query1返回一些结果,而Query2不返回任何结果。 换言之,在两个查询之上和查询之下(Query3)合并会返回很少的记录

问题3:

prefix leaks: <http://data.ontotext.com/resource/leaks/> 
prefix leak: <http://data.ontotext.com/resource/leak/>

SELECT distinct ?s WHERE  
{  
    ?s leak:jurisdiction_description ?object.
    FILTER NOT EXISTS { ?s ?p ?o}.  
} 
前缀泄漏:
前缀泄漏:
选择不同的位置
{  
?s泄漏:管辖权描述?对象。
筛选器不存在{s?p?o}。
} 
理想情况下,情况并非如此。查询3应始终没有结果,因为第二个条件
s?p?o
是第一个条件的超集
泄漏:管辖权描述?对象


我不知道为什么会发生这种情况。

我想您的三重存储有问题 在上尝试相同的查询,它是此数据集的“主页”,由GraphDB支持。Query2提供了23个结果,如预期的那样。
它返回查询3的结果这一事实严重表明您的设置有问题

我开始知道为什么会发生这种情况。由于某些原因,索引文件(pos、sop等)未正确同步,已进入不一致状态。当我尝试删除MARMOTTA_HOME下的primary triples文件夹并重新创建数据时,它开始对我起作用,因为它强制重新编制triplestore数据的索引。感谢@Jeen Broekstra的提醒:)

也许这是SPARQL端点中的一个bug?您是否尝试过另一种SPARQL实现?@hendrik自2年以来,我们一直在使用同一个端点,到目前为止,我们从未发现任何类似的东西。这是在土拨鼠的上面。因此值得信任和可靠。当你说你在使用“原生”triplestore时,你是指芝麻的原生商店吗?如果是这样,这可能是由索引不一致引起的。这很少见,但确实发生了。它可以通过使存储离线、删除不一致的索引(通常由其在磁盘上的大小与其他索引非常不同决定),然后重新启动来修复-它将自动重新生成丢失的索引,这将使其恢复同步。@JeenBroekstra Yes Jeen,这是Sesame的本机存储。顺便说一句,为了正确地重新编制索引,我再次尝试重新创建数据。这一次出现了相同的问题,但实体uri不同。我仍然得到查询3的结果。这可能是索引问题,但不确定如何解决它。你能告诉我芝麻的原生商店是如何建立索引的吗?这不是一个真正的论坛。你能在打开一个bug报告以便我们可以更详细地调查吗?