与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,我可以通过关键字或坐标找到上述事件。结果还会使用以下内容显示其周围某个半径内存在的任何其他文章:
但是,无法通过某个时间点或事件日期对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的查询工具:
我可以看到 950273 以某种方式代表文章。我只是不确定如何使用它来引导我访问维基百科中的实际文章。
我不知道“项目”:[950273] “代表或如何使用它来获取维基百科文章并在AngularJS中显示该文章的内容。
是否有办法按历史事件的日期和地理位置进行查询。通过使用mediawiki或wikidata或两者的组合?
修改 这是我上面问题的解决方案。这似乎有点像黑客......但它确实有效。现在好了。这是我的控制器。
https://wdq.wmflabs.org/api?q=AROUND[625,-25.911389,31.957222,5]%20AND%20BETWEEN[585,1985,1987]
答案 0 :(得分:4)
950273 是维基数据实体ID。您可以在https://www.wikidata.org/wiki/Q950273
找到实体本身通过使用它,您可以使用API和操作wbgetentities
向维基数据查询与其相关联的文章,并询问sitelinks
和sitelinks/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