如何获取维基数据项的所有属性值的标签?
作者:互联网
您如何请求Item具有的所有属性集?
具体来说,我正在寻找每个项目的英文标签,这是项目属性的价值.
例如. “Earth”:
{
"Challenger Deep",
"Solar System",
"oblate spheroid",
"geoid",
"World Ocean",
"Afro-Eurasia",
...
}
我现在正在使用维基数据工具包库,但我会提出建议.
解决方法:
首先,您需要使用MediaWiki API和操作wbgetclaims来获取每个声明的所有属性.例如,对于Wikidata项目Earth (Q2),请求将是:
https://www.wikidata.org/w/api.php?action=wbgetclaims&format=xml&props=value&entity=Q2
然后,您需要解析响应并从每个属性的值中获取id.在此示例中,对于属性P1589,项ID为Q459173.
最后一步是通过另一个请求获取所有项目标签.你有两个变体,在它们两个中我们使用上一步中的所有项id,用pipe分隔|:
>第一个变体:使用动作wbgetentities:
https://www.wikidata.org/w/api.php?action=wbgetentities&props=labels&languages=en&ids=Q459173|Q544|Q3241540|Q185969|Q715269|Q27527
>第二种变体:使用动作query:
更新:我发现如何只使用一个请求获取所有项属性值的标签.我们的想法是找到所有项目links,然后仅从namespace 0开始过滤这些项目,这些项目以Q开头.
https://www.wikidata.org/w/api.php?action=query&titles=Q2&generator=links&gplnamespace=0&gpllimit=100&prop=pageterms&wbptterms=label
标签:java,labels,items,wikidata,wikidata-api 来源: https://codeday.me/bug/20190523/1156655.html