Wikidata SPARQL查询

时间:2016-09-13 17:24:29

标签: sparql wikidata

Wikidata's SPARQL endpoint,我希望找到所有在某人就读大学教师的大学。到目前为止,我设法通过以下查询获得了类型(人,位置,雇主)的三元组:

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 个答案:

答案 0 :(得分: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" .
  }
}