MediaWiki查询和/或WikidataQuery查找维基百科文章

时间:2015-04-23 00:27:30

标签: angularjs json geolocation mediawiki-api wikidata-api

与AngularJS相比,这不是一个问题,而是关于维基媒体和维基数据查询API的问题。

虽然我在做一个不是问题的特定查询后试图在AngularJS中显示维基百科文章的内容。我已经知道如何显示它...问题是搜索文章或文章。

我正在尝试通过历史事件日期以及按地理位置查询维基百科。

让我们选择随机事件,任何事件。让我们说“ 1986 Mozambican Tupolev Tu-134崩溃”。链接:http://en.wikipedia.org/wiki/1986_Mozambican_Tupolev_Tu-134_crash

从文章中我可以看到具体日期: 1986年10月19日
以及活动的地理位置: -25.911389,31.957222

我正在尝试在AngularJS中构建一个搜索,它可以使用日期范围和/或地理位置坐标来查找事件。

我知道mediawiki现在有一个地理定位API,我可以通过关键字或坐标找到上述事件。结果还会使用以下内容显示其周围某个半径内存在的任何其他文章:

http://en.wikipedia.org/w/api.php?action=query&list=geosearch&gsradius=10000&gscoord=-25.911389|31.957222&prop=extracts|info&exintro&titles=1986_Mozambican_Tupolev_Tu-134_crash&format=json&explaintext&redirects&inprop=url&indexpageids&format=json&callback=JSON_CALLBACK

但是,无法通过某个时间点或事件日期对mediawiki进行搜索。

另一方面,维基数据有两种搜索数据的方法......它有一个日期范围和地理位置。

但是,运行查询时,我不知道返回了什么。

例如,当我使用此查询字符串时:

app

它返回:

  

{ “状态”:{ “错误”: “OK”, “项目”:1, “querytime”: “544ms”, “parsed_query”:“(约[625,-25.9114,31.9572,5]   和   BETWEEN [585,+ 00000001985-00-00T00:00:00Z,+ 00000001987-00-00T00:00:00Z]) “},” 物品“:[950273]}

使用wikidata的查询工具:

http://tools.wmflabs.org/autolist/autolist1.html?q=AROUND[625,-25.911389,31.957222,5]%20AND%20BETWEEN[585,1985,1987]

我可以看到 950273 以某种方式代表文章。我只是不确定如何使用它来引导我访问维基百科中的实际文章。

我不知道“项目”:[950273] “代表或如何使用它来获取维基百科文章并在AngularJS中显示该文章的内容。

是否有办法按历史事件的日期和地理位置进行查询。通过使用mediawiki或wikidata或两者的组合?

修改 这是我上面问题的解决方案。这似乎有点像黑客......但它确实有效。现在好了。这是我的控制器。

https://wdq.wmflabs.org/api?q=AROUND[625,-25.911389,31.957222,5]%20AND%20BETWEEN[585,1985,1987]

1 个答案:

答案 0 :(得分:4)

950273 是维基数据实体ID。您可以在https://www.wikidata.org/wiki/Q950273

找到实体本身

通过使用它,您可以使用API​​和操作wbgetentities向维基数据查询与其相关联的文章,并询问sitelinkssitelinks/url,如下所示:http://wikidata.org/w/api.php?action=wbgetentities&format=json&ids=Q950273&props=sitelinks%7Csitelinks%2Furls < / p>

尝试使用Special:GoToLinkedPage直接转到您选择的语言版本。例如。 https://www.wikidata.org/wiki/Special:GoToLinkedPage/enwiki/Q950273