我工作在SPARQL近2年,但我从未见过过这种奇怪的情况。 (注:我使用本地triplestore)SPARQL查询返回奇怪的结果
查询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.
}
这里查询1时返回一些结果,其中如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
是第一个的超集
我不知道为什么会发生这种情况。
也许这是您的SPARQL端点中的错误?您是否尝试过一种替代SPARQL实现? – hendrik
@hendrik我们使用相同的端点自2年以来,迄今为止我们从未发现任何此类事情。这是在MARMOTTA之上。因此值得信赖和可靠。 –
当你说你正在使用“本地”三重店时,你指的是芝麻店的本地店吗?如果是这样,这可能是由索引不一致造成的。这很少见,但它发生了。它可以通过使商店离线,删除不一致的索引(通常由磁盘上的大小与其他大小不同)来确定,然后重新启动 - 它会自动重新生成缺失的索引,从而使其恢复同步。 –