Как получить псевдонимы из Викиданных? - PullRequest
0 голосов
/ 04 января 2019

Хочу извлечь псевдонимов Боба Дилана. Его страница в Викиданных 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)?

...