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" . }
}
Другие вопросы по тегам