5

我可以获取某些属性的使用值列表吗?例如,我想获取 P166(已获奖)属性的所有已使用不同值的列表。

4

2 回答 2

4

更新:感谢 Wikidata 查询服务,这现在是一个微不足道的操作,您可以向其发送 SPARQL 请求:

SELECT DISTINCT ?award WHERE {
  ?awarded_item wdt:P166 ?award .
}

过时

解决此问题的一种(残酷的?)方法是使用全能的wmflabs WDQ 工具查找具有此属性的所有项目:

http://wdq.wmflabs.org/api?q=claim[166]

这将返回 158 846 个实体 ID。您可以使用官方的Wikidata API(一次最多 50 个实体)使用这些来建立对该属性所取值的第一印象:

https://www.wikidata.org/w/api.php?action=wbgetentities&props=claims&format=json&ids=Q23|Q24|Q32|Q76|Q80|Q90|Q95|Q157|Q181|Q206|Q254|Q272|Q306|Q320|Q326|Q329|Q331|Q335|Q352|Q377|Q392|Q400|Q410|Q440|Q444|Q458|Q489|Q498|Q512|Q517|Q529|Q530|Q557|Q567|Q576|Q579|Q600|Q615|Q632|Q633|Q636|Q648|Q651|Q680|Q714|Q755|Q765|Q855|Q862|Q873|Q882

这将返回一个带有这些实体声明的 json。你只需要做一些(相当丑陋的)解析(在coffeescript中,希望你没问题)来找到你要找的东西:

properties = []
for entity, value of wikidataResponse.entities
  value.claims.P166.forEach (prop)->
    properties.push prop.mainsnak?.datavalue?.value?['numeric-id']

而且(稍后进行一点清洁)瞧!具有属性 P166 的 50 个第一个实体采用的 122 个值:

[ 'Q17144', 'Q28003', 'Q31323', 'Q35637', 'Q37922', 'Q84020', 'Q93488', 'Q93716', 'Q93728', 'Q94121', 'Q103618', 'Q106301', 'Q120649', 'Q136733', 'Q145752', 'Q152337', 'Q154554', 'Q163700', 'Q178473', 'Q185493', 'Q208167', 'Q209896', 'Q218551', 'Q233454', 'Q278798', 'Q337463', 'Q465316', 'Q465774', 'Q541985', 'Q611968', 'Q680248', 'Q684511', 'Q697762', 'Q700899', 'Q721743', 'Q724443', 'Q758861', 'Q768999', 'Q805316', 'Q852071', 'Q858637', 'Q873842', 'Q896312', 'Q908745', 'Q908858', 'Q931502', 'Q963068', 'Q969644', 'Q976544', 'Q1059569', 'Q1063447', 'Q1081449', 'Q1123431', 'Q1139419', 'Q1141149', 'Q1316544', 'Q1357178', 'Q1364116', 'Q1415232', 'Q1442352', 'Q1465304', 'Q1543268', 'Q1599870', 'Q1789030', 'Q1818440', 'Q1818451', 'Q1853663', 'Q1969175', 'Q1991972', 'Q2325638', 'Q2329480', 'Q2465245', 'Q2536791', 'Q2547676', 'Q2727598', 'Q2990283', 'Q3295156', 'Q3324507', 'Q3403391', 'Q3405483', 'Q3519573', 'Q4273323', 'Q5593890', 'Q7241175', 'Q9052807', 'Q10855195', 'Q10855226', 'Q10855271', 'Q10905105', 'Q11599352', 'Q11609173', 'Q12177451', 'Q12201445', 'Q12201477', 'Q12270554', 'Q12981673', 'Q13422143', 'Q13452531', 'Q13554470', 'Q14539974', 'Q14539990', 'Q15117228', 'Q15229170', 'Q15278116', 'Q15631401', 'Q15710140', 'Q15831432', 'Q16141095', 'Q17099726', 'Q17200714', 'Q17355204', 'Q17373936' ]

这已经是一个很好的样本,但存在导入偏差:此处获取的实体样本是最早添加到 Wikidata 的样本之一(从 Q23 到 Q882),您可能会拥有一组相当古老且以西方为中心的 P166价值观。您可能希望对 158 846 个实体集的其他部分(如果不是全部)重复此采样。

于 2014-12-17T15:08:20.080 回答
2

您可以下载RDF 格式的 Wikidata 转储,然后搜索谓词为 P166 的所有三元组。

可能最简单的方法是获取简化的转储(wikidata-simple-statements.nt.gz)。在那里,属性 P166 表示为带有 URI 的谓词http://www.wikidata.org/entity/P166c

于 2014-12-11T14:29:43.827 回答