Wikidata获取具有项目的标签和值的所有属性



我的问题是我如何提取所有属性及其各自的标签,这些属性也可以从wikidata上从sparql上呈现在网页上。

以Wikidata上的Google条目为例。对于物业P414(证券交易所)或P159,有诸如P969(位于街道地址)之类的子专家。一旦您查询wbgetentities作为预选赛,它们实际上就会出现。wbgetentities的问题是丢失了标签。我通过以下SPARQL查询获得所需的输出(例如wdt:P17 => country => United States of America):

SELECT ?prop_id ?prop_label ?prop_val_label WHERE {
  VALUES (?company) {
    (wd:Q95)
  }
  ?company ?prop_id ?company_item.
  ?wd wikibase:directClaim ?prop_id.
  ?wd rdfs:label ?prop_label.
  OPTIONAL {
    ?company_item rdfs:label ?prop_val.
    FILTER((LANG(?prop_val)) = "en")
  }
  BIND(COALESCE(?prop_val, ?companyItem) AS ?prop_val_label)
  FILTER((LANG(?prop_label)) = "en")
}

但是这些"子专业"缺失是因为它们不受直接索赔。要提取单个语句预选赛,我可以做:

SELECT ?company ?hq ?country WHERE {
  wd:Q95 p:P159 ?company.
  OPTIONAL {
    ?company ps:P159 ?hq.
    ?company pq:P17 ?country. 
  }
}

,但问题是是否有一种方法将所有内容结合到一个查询?

Wikidata数据模型上有用的链接:

  • RDF转储格式
  • Wikidata预选赛,参考和等级
  • 帮助:预选赛

您的查询应该是这样的:

SELECT ?wdLabel ?ps_Label ?wdpqLabel ?pq_Label {
  VALUES (?company) {(wd:Q95)}
  ?company ?p ?statement .
  ?statement ?ps ?ps_ .
  ?wd wikibase:claim ?p.
  ?wd wikibase:statementProperty ?ps.
  OPTIONAL {
  ?statement ?pq ?pq_ .
  ?wdpq wikibase:qualifier ?pq .
  }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
} ORDER BY ?wd ?statement ?ps_

尝试!

仅包括预选赛及其值。既不包括出处参考和价值注释(例如时间精度)。如果您需要添加它们,请写评论。

最新更新