在Wikidata's SPARQL endpoint上,我想找到所有有人受雇为大学教师的大学。到目前为止,我通过以下查询获得了类型(person,position helf,employer)的三元组:
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)。
如果可能的话,我会要求一个简化的查询。
发布于 2016-09-14 14:32:44
在triple pattern ?p v:P39 ?sp .中,将变量?sp替换为所需的特定位置(即wd:Q1622272
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" .
}
}https://stackoverflow.com/questions/39475748
复制相似问题