2017-09-23 2 views
2

Ma question est de savoir comment je peux extraire toutes les propriétés et leurs étiquettes respectives qui sont également rendus sur la page Web de wikidata de préférence sur SPARQL. Prenez par exemple l'entrée Google sur wikidata. Pour la propriété P414 (bourse) ou P159 il y a des sous-propriétés comme P969 (situé à l'adresse de la rue). Ils apparaissent réellement une fois que vous querywbgetentities comme qualifieres. Le problème avec wbgetentities est que les étiquettes sont manquantes. Je reçois la sortie désirée (par exemple wdt:P17 => country => United States of America) avec la requête SPARQL suivante:wikidata obtenir toutes les propriétés avec des étiquettes et les valeurs d'un article

SELECT ?prop_id ?prop_label ?prop_val_label WHERE { 
    VALUES (?company) { 
    (wd:Q95) 
    } 
    ?company ?prop_id ?company_item. 
    ?wd wikibase:directClaim ?prop_id. 
    ?wd rdfs:label ?prop_label. 
    OPTIONAL { 
    ?company_item rdfs:label ?prop_val. 
    FILTER((LANG(?prop_val)) = "en") 
    } 
    BIND(COALESCE(?prop_val, ?companyItem) AS ?prop_val_label) 
    FILTER((LANG(?prop_label)) = "en") 
} 

Mais ces « sous-propriétés » manquent parce qu'elles ne sont pas sous des réclamations directes. Pour extraire une seule déclaration de qualification, je peux faire:

SELECT ?company ?hq ?country WHERE { 
    wd:Q95 p:P159 ?company. 
    OPTIONAL { 
    ?company ps:P159 ?hq. 
    ?company pq:P17 ?country. 
    } 
} 

Mais la question est s'il y a un moyen de combiner tout à une requête?

Répondre

3

Liens utiles sur le modèle de données Wikidata:

Votre requête doit être de ce genre:

SELECT ?wdLabel ?ps_Label ?wdpqLabel ?pq_Label { 
    VALUES (?company) {(wd:Q95)} 

    ?company ?p ?statement . 
    ?statement ?ps ?ps_ . 

    ?wd wikibase:claim ?p. 
    ?wd wikibase:statementProperty ?ps. 

    OPTIONAL { 
    ?statement ?pq ?pq_ . 
    ?wdpq wikibase:qualifier ?pq . 
    } 

    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" } 
} ORDER BY ?wd ?statement ?ps_ 

Try it!

Seuls les qualificateurs et leurs valeurs sont inclus dans le résultat. Ni les références de provenance, ni les annotations de valeur (par exemple la précision temporelle) ne sont incluses. S'il vous plaît écrire un commentaire si vous avez besoin de les ajouter.