Хочу извлечь псевдонимов Боба Дилана. Его страница в Викиданных https://www.wikidata.org/wiki/Q392
Один из способов - пройти по следующему дереву и разобрать значение для P742
(псевдоним): https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q392&format=json
Но это большая работа, специфичная для Боба Дилана; другие люди с псевдонимами могут иметь другую структуру JSON.
Этот запрос работает для его наград:
SELECT ?item ?itemLabel ?linkTo ?linkToLabel {
?item wdt:P166 wd:Q37922 ;
wdt:P910 wd:Q8064684 .
OPTIONAL {
?item wdt:P166 ?linkTo ;
wdt:P31 wd:Q5 } .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
как видно здесь
Слабость в том, что она использует комбинацию «главная категория темы» (P910
) и целевую «категорию» (Q8064684
) для указания «Боб Дилан».
Для этого запроса я не могу найти способ использовать его QID (Q392
).
Я не хочу выполнять текстовый поиск, как это предлагается в Группа concat не работает , потому что есть более одного Боба Дилана. И у многих людей с псевдонимами не будет категории, поэтому техника не может быть обобщена.
Этот запрос работает для профессий и использует его QID (Q392
), а не категорию Боба Дилана (Q8064684
) из запроса "awards".
SELECT * {
SERVICE <https://query.wikidata.org/sparql> {
wd:Q392 wdt:P31 wd:Q5 ;
wdt:P106 ?occupation
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
?occupation rdfs:label ?label
}
}
}
как видно здесь
но я не могу найти правильный запрос SPARQL для выбора псевдонимов (которые являются текстовыми), как показано здесь:
https://www.wikidata.org/wiki/Q392
Как написать запрос SPARQL Wikidata, который использует идентификатор человека (например, Q392 для Боба Дилана) и может быть сконфигурирован (легко переключаться) для выбора либо «получено вознаграждение» (P166), «профессий» (P106) или "псевдоним" (P742)?