返回奇怪结果的SPARQL查询
我在SPARQL上工作了将近2年,但在过去我从未见过如此奇怪的情况。(注意:我使用的是原生triplestore) 问题1:返回奇怪结果的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
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报告以便我们可以更详细地调查吗?