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.

Это почему? Я что-то где-то упускаю?


person Median Hilal    schedule 01.04.2018    source источник
comment
Вы уверены, что какой-либо ярлык будет возвращен в запросе CONSTRUCT? Это волшебная особенность Blazegraph, выходящая за рамки стандартного SPARQL.   -  person UninformedUser    schedule 01.04.2018
comment
Нет; Я думаю, что это в основном проблема. Однако согласно спецификации Construct все должно быть в порядке w3.org/TR/sparql11 -query / # construct   -  person Median Hilal    schedule 01.04.2018


Ответы (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" . }
}
person Stanislav Kralin    schedule 02.04.2018
comment
это, кстати, странная проблема, не удалось найти проблему с GH. Спасибо, что показали обходные пути - хотя похоже, что hint:Query hint:queryEngineChunkHandler "Managed" . не сработал для всех моих запросов, поэтому я придерживаюсь hint:Query hint:constructDistinctSPO false . и потом буду жить с дедупликацией (или оставлю это тройному хранилищу) - person UninformedUser; 13.04.2021