维基数据 SPARQL 查询

Wikidata SPARQL Query

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" .
  }
}

此查询returns该人担任的所有职位。就我而言,我想将自己限制在大学教师 (wd:Q1622272) 的职位上。

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

将变量?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" .
  }
}