【问题标题】:SPARQL question: how to return property labels and associated date qualifiers from WikidataSPARQL 问题:如何从 Wikidata 返回属性标签和相关的日期限定符
【发布时间】:2019-07-25 05:59:38
【问题描述】:

我正在尝试返回一组担任过政治职务的人(爱丁堡大学校友)的结果。我想返回所担任办公室的标题标签,以及每个办公室的开始和结束日期,许多人担任多个职位。如果该人仅担任一个职位,我似乎能够获得其中一个或可以使其发挥作用,但在多个办公室担任职务时无法使两者结合在一起。

我当前的查询版本如下。这将给我开始和结束日期,而不是如果政治办公室的标签,例如英国 [x] 议会的成员,?officeLabel 返回一个值,例如:statement/Q4668868-E3734C7D-40F0-4D4A-8208-E3D6B8C944CB

SELECT DISTINCT ?alumni ?fullName ?roleLabel ?officeLabel ?start ?end WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
  ?alumni wdt:P69 wd:Q160302.
  ?alumni rdfs:label ?fullName.
  ?alumni wdt:P106 ?role.
  #Use Values to separate out politicians - Q82955
  VALUES (?role) {
    (wd:Q82955)
  }
  #Select only where position of office is stated but make dates optional
  ?alumni p:P39 ?office.
  OPTIONAL { ?office pq:P580 ?start. }
  OPTIONAL { ?office pq:P582 ?end. }
  FILTER(LANGMATCHES(LANG(?fullName), "en"))
  FILTER(NOT EXISTS { FILTER(LANGMATCHES(LANG(?fullName), "en-ca")) })
  FILTER(NOT EXISTS { FILTER(LANGMATCHES(LANG(?fullName), "en-gb")) })
}
ORDER BY ?fullName
LIMIT 10

【问题讨论】:

    标签: properties sparql wikidata qualifiers


    【解决方案1】:

    是的,我仍然被 qualifiersWikidata Data Model 绊倒。

    图表由 作者:Michael F. Schönitzer - 自己的作品,基于 File:Rdf mapping.svg,CC 通过 4.0,https://commons.wikimedia.org/w/index.php?curid=63880194

    从“item”走“p: route”后,需要“ps: route”才能回到“simple value”。

    因此,使用它稍微修改您的查询会得到我认为您想要的结果。

    SELECT DISTINCT ?alumni ?fullName ?roleLabel ?officeLabel ?start ?end WHERE {
      ?alumni wdt:P69 wd:Q160302.
      ?alumni rdfs:label ?fullName.
      ?alumni wdt:P106 ?role.
      VALUES (?role) {
        (wd:Q82955)
      }
      ?alumni p:P39 ?officeStmnt.
      ?officeStmnt ps:P39 ?office.
      OPTIONAL { ?officeStmnt pq:P580 ?start. }
      OPTIONAL { ?officeStmnt pq:P582 ?end. }
      SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
      FILTER(LANGMATCHES(LANG(?fullName), "en"))
      FILTER(NOT EXISTS { FILTER(LANGMATCHES(LANG(?fullName), "en-ca")) })
      FILTER(NOT EXISTS { FILTER(LANGMATCHES(LANG(?fullName), "en-gb")) })
    }
    ORDER BY ?fullName
    LIMIT 10
    

    Link to query on Wikidata

    【讨论】:

    • 为避免与变量名混淆,语句本身应为 ?office
    • 是的,没问题。我的意思是,查询之前已经是正确的,并且变量的名称在定义上没有任何意义。也可以是?var1, ?var2, ... 这更多的是帮助理解查询的方式。有时使用口语名称是目的。感谢您更新查询。
    • 谢谢大家,这正是我现在想要的。到目前为止,除了在 Wikidata 中相当简单的查询之外,我还没有写过任何东西,所以了解该属性是如何实现的。限定符和语句前缀的工作确实非常有用。
    猜你喜欢
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    相关资源
    最近更新 更多