2016-09-13 129 views
1

Wikidata's SPARQL endpoint,我想找到所有的大學裏有人被聘爲大學教師。到目前爲止,我設法用下面的查詢來獲取類型的三元組(人,位置HELF,僱主):維基數據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" . 
    } 
} 

此查詢返回由該人持有的所有位置。就我而言,我想把自己限制在大學教師的職位上(wd:Q1622272)。

如果可能,我會要求一個簡化的查詢。

+1

如果'sp'表示持有的立場,它不工作的'WD來更換呢? :那麼Q1622272? – AKSW

回答

3

在三重模式?p v:P39 ?sp .你想要的特定位置(即wd:Q1622272)更換可變?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" . 
    } 
}