我想通过编程检查一篇英文Wikivoyage文章(例如Bronzeville)是否从Wikidata数据库链接。
例如,英文版Wikivoyage上的Bronzeville文章并没有从Wikidata链接(即使该项目存在)。
注意:有些Wikidata项目有标签,但这并不意味着存在或不存在,因为有些项目没有标签,而有些具有相同标签的项目指的是两个不同的东西(例如一个地方和一个人)。
有没有办法通过Wikidata API或其他方式做到这一点?
一篇Wikivoyage文章是否从Wikidata链接,可以通过以下查询找到:
https://en.wikivoyage.org/w/api.php?action=query&title=布朗泽维尔&prop=pageprops&format=jsonfm
https://en.wikivoyage.org/w/api.php?action=query&title=巴黎&prop=pageprops&format=jsonfm
如果响应包含"wikibase_item",则表示它已链接。
您可以为此使用wbgetentities
方法。要做到这一点,请向它询问与enwikivoyage上所需文章相关的实体。例如,对于存在链接的实体(布拉格):
http://www.wikidata.org/w/api.php?action=wbgetentities&sites=enwikivoyage&title=布拉格&format=xml&props=
你会得到这样的结果:
<entity id="q1085" type="item" />
如果链接不存在(Bronzeville):
http://www.wikidata.org/w/api.php?action=wbgetentities&sites=enwikivoyage&title=布朗泽维尔&format=xml&props=
结果是:
<entity site="enwikivoyage" title="Bronzeville" missing="" />
(查询的props=
部分就在那里,这样你就不会得到关于条目的所有信息,只知道它是否存在。)