2016-11-14 1 views
2

J'essaie de récupérer des informations de Wikidata et j'ai trouvé intéressant de collecter les alias des voix. Pour des exemples Francesco Totti est également connu comme il Capitano ou er Pupone: wikidata of Francesco TottiComment récupérer des alias de wikidata

Je suis en train de récupérer tous les joueurs est une serie de football avec cette requête 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) 

Comment je peux modifier ma requête prendre aussi les alias? Merci

Répondre

6

J'ai tenté une requête avec différentes étiquettes. Ici seulement pour Roma:

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) 

Je crois que la propriété P1449 devrait être la propriété la plus appropriée pour stocker un alias/pseudo, mais il ne semble pas être utilisé autant pour les joueurs de football. Je viens d'ajouter "il Capitano" à Francesco Totti. Au-delà de cela, il ne semble pas y avoir d'autres surnoms pour les joueurs roms.

Le libellé "Aussi connu sous" (dans la colonne de droite) n'est pas nécessairement le surnom, mais peut être une variante orthographique.

+0

Il fonctionne! C'est depuis longtemps que j'ai essayé de trouver une solution. Merci beaucoup Finn! – Lupanoide

0

Quelque chose de plus générique si quelqu'un est intéressé par toutes les propriétés qui ne renverra que le also known as anglais:

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