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