2

Wikidata 的 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)。

如果可能的话,我会要求一个简化的查询。

4

1 回答 1

3

在三重模式?sp中用您想要的特定位置(即)替换变量:wd:Q1622272?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" .
  }
}
于 2016-09-14T06:32:44.483 回答