Обновление: этот вопрос связан с другим вопросом через 1 , потому что он примерно совпадает с выходными данными.
У меня есть список из 1200 географических объектов, таких как города, озера илигоры как струны.Я хотел бы обогатить эти данные авторитетным файлом WikiData ID.Это работает, но в результате я иногда получаю более одного предложения WikiDataID.Мне нужно определить правильную по появлению любой страны (неважно, какая именно) в Заявлениях как ограничение.
В качестве примера я попробовал город Карлсруэ.Для строки «Карлсруэ» я получаю пять результатов.В этом случае я выбираю идентификатор Q1040 (https://www.wikidata.org/wiki/Q1040).. Теперь у меня проблема в том, что я не знаю, как запросить altLabel (также известный как) и метку на английском, немецком и французском языках. С текущимкод Я получаю пустые записи для altLabel и Labels, хотя есть altLabels и Labels (см. WikiData). Я думаю, что я только что использовал неправильный порядок строк кода. Может кто-нибудь помочь мне с правильным порядком?
Большое спасибо за вашу помощь!
Вот запрос:
SELECT DISTINCT ?item ?itemLabel ?altLabel ?label_en ?label_de ?
label_fr WHERE {
?item rdfs:label "Karlsruhe"@de.
?item wdt:P17 [] .
optional {
?item skos:altLabel ?altLabel.
?item rdfs:label ?label_de FILTER((LANG(?label_de)) = "de") .
?item rdfs:label ?label_en FILTER((LANG(?label_en)) = "en") .
?item rdfs:label ?label_fr FILTER((LANG(?label_fr)) = "fr") .
FILTER(LANGMATCHES(LANG(?altLabel), ?item))
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "
[AUTO_LANGUAGE],de, en, fr". }
}
Попробуйте