Я работаю над SPARQL с тех пор почти 2 года, но я никогда не видел такой странной ситуации в прошлом. (Примечание: Я использую родной triplestore)SPARQL Query возвращает странные результаты
Query1:
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
У меня нет подсказки, почему это происходит.
Возможно, это ошибка в вашей конечной точке SPARQL? Вы пробовали альтернативную реализацию SPARQL? – hendrik
@hendrik мы используем ту же конечную точку с 2 лет, и до сих пор мы так и не нашли таких вещей. И это на вершине MARMOTTA. Следовательно, надежный и надежный. –
Когда вы говорите, что используете «родной» трипестор, вы имеете в виду собственный магазин Sesame? Если это так, возможно, это вызвано неконтекстностью индекса. Это редко, но это случается. Это можно устранить, если вы не пользуетесь магазином в автономном режиме, удаляя непоследовательный индекс (обычно определяемый его размером на диске, который сильно отличается от других), а затем перезагружается - он автоматически восстанавливает отсутствующий индекс, который будет синхронизироваться. –