SPARQL查询返回奇怪的结果

时间:2016-12-08 11:18:28

标签: 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:jurisdiction_description ?object.    
} 

QUERY2:

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)之下返回几条记录。

QUERY3:

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的超集

我不知道为什么会这样。

2 个答案:

答案 0 :(得分:2)

我猜你的三重商店有问题 在http://data.ontotext.com/sparql处尝试相同的查询,这是此数据集的“主页”,由GraphDB支持。正如预期的那样,Query2提供了23个结果。 它返回Query3的结果这一事实严重表明您的设置存在问题

答案 1 :(得分:1)

我知道为什么会这样。由于某种原因,索引文件(pos,sop等)未正确同步,已进入不一致状态。当我尝试删除MARMOTTA_HOME下的primary-triples文件夹,并且重新获取数据时,它开始为我工作,因为它被迫重新索引triplestore数据。感谢@Jeen Broekstra的领导:)