2016-12-08 17 views
1

Я работаю над 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

У меня нет подсказки, почему это происходит.

+1

Возможно, это ошибка в вашей конечной точке SPARQL? Вы пробовали альтернативную реализацию SPARQL? – hendrik

+0

@hendrik мы используем ту же конечную точку с 2 лет, и до сих пор мы так и не нашли таких вещей. И это на вершине MARMOTTA. Следовательно, надежный и надежный. –

+1

Когда вы говорите, что используете «родной» трипестор, вы имеете в виду собственный магазин Sesame? Если это так, возможно, это вызвано неконтекстностью индекса. Это редко, но это случается. Это можно устранить, если вы не пользуетесь магазином в автономном режиме, удаляя непоследовательный индекс (обычно определяемый его размером на диске, который сильно отличается от других), а затем перезагружается - он автоматически восстанавливает отсутствующий индекс, который будет синхронизироваться. –

ответ

1

Я узнал, почему это произошло. По какой-то причине индексирование файлов (pos, sop и т. Д.) Не было синхронизировано должным образом, перешло в противоречивое состояние. Когда я попытался удалить папку первичных троек в файле MARMOTTA_HOME, а также данные, собранные повторно, он начал работать для меня, поскольку он заставил переиндексировать данные трипстора. Спасибо @Jeen Broekstra за головы :)

2

У вас есть проблема с вашим трипестрером, я думаю, Попробуйте те же запросы в http://data.ontotext.com/sparql, что является «домом» этого набора данных, подкрепленным GraphDB. Query2 предоставляет 23 результата, как и ожидалось. Тот факт, что он возвращает результаты для Query3, является серьезным признаком того, что у вас что-то не так с вашей настройкой