获取某些属性的已使用值列表

时间:2014-12-11 12:26:20

标签: wikidata

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

2 个答案:

答案 0 :(得分:4)

一种(野蛮的?)接近这种方法的方法是使用强大的wmflabs WDQ tool来查找具有此属性的所有项目:

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' ]

这已经是一个很好的样本,但是存在一个输入偏差:这里采集的实体样本是添加到维基数据的第一个实体(从Q23到Q882),你可能会有一个相当历史悠久的以西方为中心的集合P166可能的值。您可能希望使用158 846实体集的其他部分(如果不是全部)重复此采样。

答案 1 :(得分:2)

您可以下载a dump of Wikidata in RDF format并搜索谓词为P166的所有三元组。

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