2016-09-13 1 views
1

Sur Wikidata's SPARQL endpoint, je veux trouver toutes les universités où quelqu'un était employé comme professeur d'université. Jusqu'à présent, je réussi à obtenir les triplets de type (personne, helf position, employeur) avec la requête suivante:Wikidata requête SPARQL

PREFIX bd: <http://www.bigdata.com/rdf#> 
PREFIX wd: <http://www.wikidata.org/entity/> 
PREFIX wikibase: <http://wikiba.se/ontology#> 
PREFIX p: <http://www.wikidata.org/prop/> 
PREFIX v: <http://www.wikidata.org/prop/statement/> 
PREFIX wdt: <http://www.wikidata.org/prop/direct/> 
PREFIX pq: <http://www.wikidata.org/prop/qualifier/> 

SELECT DISTINCT ?s ?sp ?q ?sLabel ?spLabel ?qLabel WHERE { 
    ?s p:P39 ?p . 
    ?p v:P39 ?sp . 
    ?p pq:P108 ?q . 
    SERVICE wikibase:label { 
    bd:serviceParam wikibase:language "en" . 
    } 
} 

Cette requête renvoie toutes les positions détenues par cette personne. Dans mon cas, je veux me limiter à la position de professeur d'université (wd: Q1622272).

Si possible, je demanderais une requête simplifiée.

+1

Si 'sp' indique la position tenue, il ne fonctionne pas pour le remplacer par' wd? : Q1622272' alors? – AKSW

Répondre

3

Remplacer la ?sp variable avec la position spécifique que vous voulez (c.-à-wd:Q1622272) dans le modèle triple ?p v:P39 ?sp .:

PREFIX bd: <http://www.bigdata.com/rdf#> 
PREFIX wd: <http://www.wikidata.org/entity/> 
PREFIX wikibase: <http://wikiba.se/ontology#> 
PREFIX p: <http://www.wikidata.org/prop/> 
PREFIX v: <http://www.wikidata.org/prop/statement/> 
PREFIX wdt: <http://www.wikidata.org/prop/direct/> 
PREFIX pq: <http://www.wikidata.org/prop/qualifier/> 

SELECT DISTINCT ?s ?q ?sLabel ?qLabel WHERE { 
    ?s p:P39 ?p . 
    ?p v:P39 wd:Q1622272 . # Here 
    ?p pq:P108 ?q . 
    SERVICE wikibase:label { 
    bd:serviceParam wikibase:language "en" . 
    } 
}