我工作在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之上。因此值得信賴和可靠。 –
當你說你正在使用「本地」三重店時,你指的是芝麻店的本地店嗎?如果是這樣,這可能是由索引不一致造成的。這很少見,但它發生了。它可以通過使商店離線,刪除不一致的索引(通常由磁盤上的大小與其他大小不同)來確定,然後重新啓動 - 它會自動重新生成缺失的索引,從而使其恢復同步。 –