Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mediawiki Wikidata API:检查Wikivoyage文章是否与Wikidata链接_Mediawiki_Wikidata Api - Fatal编程技术网

Mediawiki Wikidata API:检查Wikivoyage文章是否与Wikidata链接

Mediawiki Wikidata API:检查Wikivoyage文章是否与Wikidata链接,mediawiki,wikidata-api,Mediawiki,Wikidata Api,我想以编程方式检查一篇英文Wikivoyage文章(例如)是否从链接 例如,英文版Wikivoyage上的Bronzeville文章没有与Wikidata链接(即使该项目已被删除) 注意:有些Wikidata项目有标签,但这并不意味着存在或不存在,因为有些项目没有标签,而有些具有相同标签的项目指的是两个不同的事物(例如一个地方和一个人) 是否有办法通过或其他方式执行此操作?您可以使用wbgetentities方法执行此操作。要做到这一点,要求它提供与enwikivoyage上所需文章相关的实体。

我想以编程方式检查一篇英文Wikivoyage文章(例如)是否从链接

例如,英文版Wikivoyage上的Bronzeville文章没有与Wikidata链接(即使该项目已被删除)

注意:有些Wikidata项目有标签,但这并不意味着存在或不存在,因为有些项目没有标签,而有些具有相同标签的项目指的是两个不同的事物(例如一个地方和一个人)


是否有办法通过或其他方式执行此操作?

您可以使用
wbgetentities
方法执行此操作。要做到这一点,要求它提供与enwikivoyage上所需文章相关的实体。例如,对于链接存在的实体():

结果如下:


如果链接不存在(Bronzeville):

结果是:



(查询的
props=
部分就在那里,这样你就不会得到关于条目的所有信息,不管它是否存在。)

可以通过如下查询找到Wikivoyage文章是否与Wikidata链接:


如果响应包含“wikibase_item”,则表示它已链接。

不幸的是,在大多数情况下,这不起作用,因为Wikivoyage和Wikidata名称经常不同(超过50%)。例如,Wikivoyage上的“Al Hudayda”就是Wikidata上的“Al Hudaydah”。Wikivoyage上的“Akiu”是Wikidata上的“Akiu,Miyagi”。等等,
sites=enwikivoyage
参数的意思是:输入的名称来自Wikivoyage。例如(使用Wikivoyage的名称)工作得很好。我不知道!非常感谢:-)