Я использую следующий запрос к wikidata;
SELECT ?country ?countryLabel
WHERE
{
?country wdt:P30 wd:Q46;
wdt:P31 wd:Q6256.
SERVICE wikibase:label { bd:serviceParam wikibase:language
"[AUTO_LANGUAGE],en". }
}
где P30 - континент; Q46 это Европа; P31 - это экземпляр, а Q6256 - страна;
https://query.wikidata.org/#SELECT%20%3Fcountry%20%3FcountryLabel%0A%20%20%20%20%20%20WHERE%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%3Fcountry%20%20%20wdt%3AP30%20wd%3AQ46%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20wdt%3AP31%20wd%3AQ6256.%0A%20%20%20%20%20%20%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%0A%20%20%20%20%20%20%20%20%22%5BAUTO_LANGUAGE%5D%2Cen%22.%20%7D%0A%20%20%20%20%20%20%7D
Тем не менее, этот запрос возвращает только 15 стран Европы. Например, Швеция не возвращается, даже если Швеция соответствует запросу на https://www.wikidata.org/wiki/Q34
Так что, несмотря на то, что запрос кажется правильным, он упускает многие страны. Любые идеи о том, как решить эту проблему?
При сравнении двух записей; одна для Германии / Швеции (которая не отображается) и Норвегии, которая действительно появляется, разница, которую я мог найти, заключалась в том, что Германия / Швеция имеет предпочтительный ранг для суверенного государства, в то время как просто нормальный ранг для страны. Это может быть причиной того, что предложение WHERE решает показывать только предпочтительный ранг, если он существует; и пропустить оставшиеся утверждения. Если это так, и я подозреваю, что это так; Интересно, есть ли способ переопределить поведение механизма запросов для поиска по всем операторам с предпочтительным или нормальным рангом.