Как получить псевдонимы из викиданных

Я пытаюсь получить некоторую информацию из Викиданных, и мне показалось интересным собрать псевдонимы голосов. Например, Франческо Тотти также известен как il Capitano или er Pupone:  викиданные Франческо Тотти

Я пытаюсь получить всех футболистов серии А с помощью этого запроса sparql:

SELECT ?subject ?nomeLabel ?cognomeLabel ?subjectLabel WHERE {
  ?subject wdt:P31 wd:Q5.

  ?subject p:P54 ?team .
  ?team ps:P54 wd:""" + team_code +""" .
  FILTER NOT EXISTS { ?team pq:P582 ?end
    }
OPTIONAL{
  ?subject wdt:P735 ?nome .
  ?subject wdt:P734 ?cognome .
  }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it". }
}
ORDER BY (?cognomeLabel)

Как я могу изменить свой запрос, чтобы он также принимал псевдонимы? Спасибо


person Lupanoide    schedule 14.11.2016    source источник


Ответы (3)


Я попытался выполнить запрос с различными ярлыками. Вот только для Ромы:

SELECT distinct ?subject ?subjectLabel ?nomeLabel ?cognomeLabel ?nickname ?alternative ?subjectAltLabel WHERE {
  ?subject wdt:P31 wd:Q5.
  ?subject p:P54 ?team .
  ?team ps:P54 wd:Q2739 .
  FILTER NOT EXISTS { ?team pq:P582 ?end . }
  OPTIONAL { ?subject wdt:P735 ?nome . }
  OPTIONAL { ?subject wdt:P734 ?cognome . }
  OPTIONAL { ?subject wdt:P1449 ?nickname . }
  OPTIONAL { ?subject skos:altLabel ?alternative . }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en,fr". }
}
ORDER BY (?cognomeLabel) 

Я считаю, что свойство P1449 должно быть наиболее подходящим свойством для хранения псевдонима / псевдонима, но, похоже, его не так часто используют для футболистов. Я только что добавил «Капитано» к Франческо Тотти. Помимо этого, других прозвищ у игроков «Рома», похоже, нет.

Метка «Также известен как» (в правом столбце) не обязательно является псевдонимом, но может быть вариантом написания.

person Finn Årup Nielsen    schedule 14.11.2016
comment
Оно работает! Я долгое время пытался найти решение. Большое спасибо, Финн! - person Lupanoide; 14.11.2016

Что-то более общее, если кого-то интересуют все свойства, которые вернут только английский also known as:

SELECT ?property ?propertyLabel ?propertyDescription (GROUP_CONCAT(DISTINCT(?altLabel); separator = ", ") AS ?altLabel_list) WHERE {
    ?property a wikibase:Property .
    OPTIONAL { ?property skos:altLabel ?altLabel . FILTER (lang(?altLabel) = "en") }
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" .}
 }
GROUP BY ?property ?propertyLabel ?propertyDescription
LIMIT 5000
person Michail Michailidis    schedule 06.03.2018

Еще один более простой пример для актеров-мужчин с itemAltLabel:

#Male Actors
SELECT ?item ?itemLabel ?itemAltLabel
WHERE 
{
    ?item wdt:P21 wd:Q6581097.
  ?item wdt:P106 wd:Q33999.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
person Ludovic Bocken    schedule 14.10.2020