SPARQL CONSTRUCT; не все результаты получены
Я пытаюсь построить RDF-график, содержащий фильмы и их метки, в сервисе запросов Wikidata SPARQL. По сути, это запрос, который я считаю достаточным:
CONSTRUCT{
?film wdt:P31 wd:Q11424 .
?film rdfs:label ?filmLabel.
}
WHERE{
?film wdt:P31 wd:Q11424 .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en, [AUTO_LANGUAGE]". }
}
Похоже, что не все фильмы появляются в результатах (127636 результатов), и я отмечаю, что фильмы, которые не появляются, в основном не имеют этикеток.
Тем не менее, SELECT
запрос на ту же информацию возвращает больше результатов (215734):
SELECT ?film ?filmLabel
WHERE{
?film wdt:P31 wd:Q11424 .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en, [AUTO_LANGUAGE]".
}
}
Кажется, что не все привязки переменных соответствуют WHERE
оговорка WHERE
разделены между обоими запросами) используются в CONSTRUCT
на первый запрос, но все они используются в SELECT
,
Это почему? Я что-то упустил где-то?
1 ответ
Решение
Это ошибка где-то в CONSTRUCT
оптимизатор и не имеет отношения к сервису меток.
Возможные обходные пути - эти подсказки Blazegraph:
hint:Query hint:queryEngineChunkHandler "Managed"
hint:Query hint:constructDistinctSPO false
CONSTRUCT {
?film wdt:P31 wd:Q11424 .
?film rdfs:label ?filmLabel .
}
WHERE {
?film wdt:P31 wd:Q11424 .
hint:Query hint:queryEngineChunkHandler "Managed" .
# hint:Query hint:constructDistinctSPO false .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}