2013-05-25 2 views
0

Я занимаюсь поиском и узнаю больше о SPARQL, но это не так просто, как SQL. Я просто хочу знать, почему мой запрос дублирует результат и как его исправить. Это мой SPARQL запрос:Почему мой запрос SPARQL дублирует результаты?

PREFIX OQ:<http://www.owl-ontologies.com/Ontology1364995044.owl#> 

SELECT ?x ?ys ?z ?Souhaite 
WHERE { 
    ?y OQ:hasnameactivite ?x. 
    ?y OQ:AttenduActivite ?Souhaite. 
    ?y OQ:SavoirDeActivite ?z. 
    ?y OQ:hasnamephase ?ys. 
    ?y OQ:Activitepour ?v. 
    ?ro OQ:hasnamerole ?nr. 
    ?y OQ:avoirrole ?ro. 
    FILTER regex (?nr ,"Concepteur"). 
    FILTER regex (?v,"Voiture"). 
} 

Это дает мне эти результаты:

enter image description here

Ожидаемый результат:

enter image description here

+0

Было бы неплохо, если бы вы могли включить таблицу результатов как текст, а не изображение. –

ответ

5

Хотя первое чтение на ваш вопрос, я собирался ответить, что вы можете изменить SELECT в своем запросе до SELECT DISTINCT (используя DISTINCT modifier), чтобы удалить повторяющиеся результаты. Однако, глядя на ваш результирующий набор, я фактически не вижу дублированных ответов. Каждой строке кажутся уникальными. Значения для ?xs и ?ys все одинаковые, но комбинации ?z и ?Souhaite делают строки отличными. Ваши результаты по существу являются продуктом { xs1 } × { ys1 } × { z1, z2, z3 } × { S1, S2, S3 } и не содержат дубликатов.

Я только немного посмотрел на запрос и результаты, которые вы показываете, и есть некоторые несоответствия. Например, ваши результаты имеют переменную с именем ?xs, но ваш запрос не использует такую ​​переменную. Предполагаю, что ?x должен быть ?xs. Кроме того, имена переменных ?xs, ?ys, ?z и ?Souhaite не очень описательны. Трудно говорить об этом, когда мы не знаем, какую роль они играют в результате.

Что касается ожидаемых результатов, ?xs и ?ys действительно должны быть привязаны к каждой строке. Например, во втором ряду ваших желаемых результатов есть ?z и ?Souhaite, но нет ?xs и ?ys, но они, вероятно, не имеют никакого смысла без соответствующих ?xs и ?ys, правильно? Таким образом, я не буду пытаться решить проблему, когда эти столбцы пустые в вашей второй и третьей строках; они не должны быть пустыми.

В ваших ожидаемых результатах вы удалили строки, которые включали в себя множество комбинаций ?z/?Souhaite, таких как "Besoins …" "Schemas …" и "Volume …" "Fourchette …". Они появились в результатах, потому что они находятся в ваших данных. Если вы хотите помочь очистить свои данные, чтобы их не было, нам нужно будет увидеть ваши данные и узнать что-то о том, откуда они пришли.

+0

результат expectin заключается в том, что показывают только один раз xs & ys и dsplay других без повторения xs & ys! – user2420469

+0

В запросе, начинающемся с 'SELECT? X? Ys? Z? Souhaite', каждое решение (т. Е. Каждая строка результата) содержит значение для каждой из переменных SELECT. В вашем результате нет дублирующих решений; каждая строка отличается от каждой другой строки. Если вы добавите к вашему вопросу пример ожидаемых результатов (например, в том же формате, что и результаты, которые вы действительно получите), мы сможем выяснить, какой запрос вы можете использовать вместо этого. –

+0

Хорошо, я добавлю пример результатов – user2420469

Смежные вопросы