SPARQL 查询返回奇怪的结果

SPARQL Query returning strange results

我从事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.    
} 

查询 2:

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

SELECT * WHERE  
{  
    leaks:entity-10000001 ?p ?object.    
} 

此处 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}.  
} 

理想情况下不应该是这种情况。 Query3 应该始终没有结果,因为第二个条件 ?s ?p ?o 是第一个 ?s leak:jurisdiction_description ?object

的超集

我不知道为什么会这样。

我猜你的 triplestore 有问题 在 http://data.ontotext.com/sparql 尝试相同的查询,这是此数据集的 "home",由 GraphDB 支持。正如预期的那样,Query2 提供了 23 个结果。 Query3 的 returns 结果严重表明您的设置有问题

我开始知道为什么会这样了。由于某种原因,索引文件(pos、sop 等)未正确同步,处于不一致状态。当我尝试删除 MARMOTTA_HOME 下的主要三元组文件夹并重新摄取数据时,它开始为我工作,因为它强制重新索引三元组数据。感谢@Jeen Broekstra 的提醒:)