SPARQL-запрос.порядок тройных паттернов - PullRequest
0 голосов
/ 04 июня 2018

Рассмотрим запрос агрегации SPARQL с предложением where, состоящим только из тройных шаблонов и операторов filter.

Влияет ли порядок тройных шаблонов или порядок filters на результаты (не производительность)?Я совершенно уверен, что это не влияет на достоверность результатов.Но, может быть, кто-то может уточнить, почему?Кроме того, влияет ли порядок переменных в group by на достоверность результата?Я тоже так не думаю, но, может быть, кто-то может объяснить, почему?

Следующий пример только для пояснения;Обычно я спрашиваю.

Запрос подсчитывает количество людей, сгруппированных по цвету глаз и стране, и применяет пару filters.Запрос содержит только эти четыре тройных шаблона (каждая строка, заканчивающаяся точкой, является тройным шаблоном, т. Е. Тройкой с переменными)

?p wdt:P26 ?human.
?p wdt:P27 ?country.
?human wdt:P31 wd:Q5.
?human wdt:P1340 ?eyeColor.

и этими двумя filters:

FILTER (?country != wd:Q142)
FILTER (?eyeColor != wd:Q17122705)

Предложение WHERE не содержит ни OPTIONAL, UNION, MINUS, ..., ни любого другого конструктора;только тройные шаблоны и фильтры.

SELECT ?eyeColor (COUNT(?human) AS ?count) ?country
WHERE
{
    ?p wdt:P26 ?human.
    ?p wdt:P27 ?country.
    ?human wdt:P31 wd:Q5.
    ?human wdt:P1340 ?eyeColor.
    FILTER (?country != wd:Q142)
    FILTER (?eyeColor != wd:Q17122705)
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
GROUP BY ?eyeColor ?country

Снова мой вопрос: если мы каким-либо образом изменим порядок шести элементов в предложении WHERE, это повлияет на результат (не только в этом запросе, но и для похожих по структуре)?Тот же вопрос о том, может ли порядок переменных в GROUP BY повлиять на результаты, например, GROUP BY ?country ?eyeColor вместо GROUP BY ?eyeColor ?country.Опять же, я прошу в целом, а не только для этого дела запрос.

1 Ответ

0 голосов
/ 05 июня 2018

Нет, порядок не изменяет результаты только для шаблонов трипов и фильтров.

Все фильтры выполняются в конце блока {}, в котором они находятся (оптимизатор может их перемещать, но не должен изменятьрезультат).

Ряд тройных шаблонов "объектный предикат" приведет к одинаковым результатам независимо от порядка.

SERVICE не является тройным шаблоном.

wikibase:label специально для wikidata, но не для спецификации SPARQL.

Включает любые операции с графическими шаблонами, такие как SERVICE или OPTIONAL.

См. алгебру SPARQL в спецификации или sparql.org, чтобы увидеть алгебру.

...