我想通过自由文本或类别查询维基数据,以返回具有相应维基百科页面的实体。
对于每个页面(或选定的页面),我想获取所有具有相应维基百科文章的链接维基数据实体。
请注意:
(例如,法国历史中的页面有多种语言版本;我可能有仅法语版本以及其他多种语言版本的链接页面)。
我无法弄清楚维基百科中相应的维基数据API、查询链接的文章以及如何查询甚至超出所选语言的链接页面。
我看了:
https://www.mediawiki.org/wiki/Wikidata_Query_Service/User_Manual/MWAPI
https://stackoverflow.com/a/57983365/305883
https://www.mediawiki.org/wiki/API:链接
例如,我可以从这个 sparql 查询开始:
SELECT ?item ?type ?itemLabel ?typeLabel WHERE {
{
SELECT ?item WHERE {
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:endpoint "en.wikipedia.org" .
bd:serviceParam wikibase:api "Generator" .
bd:serviceParam mwapi:generator "search" .
bd:serviceParam mwapi:gsrsearch "artificial intelligence" .
bd:serviceParam mwapi:gsrlimit "max" .
?item wikibase:apiOutputItem mwapi:item .
}
} LIMIT 100
}
hint:Prior hint:runFirst "true".
?item wdt:P31|wdt:P279 ?type .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
} LIMIT 100
您能否展示扩展或调整此查询的示例?
您能否建议除了 https://www.mediawiki.org/wiki/Wikidata_Query_Service/User_Manual/MWAPI 之外的其他参考资料,以广泛使用从 SPARQL 调用 Mediawiki API(以便我可以利用 wikidata 和 wikipedia)?
从维基百科链接获取维基数据实体的一种方法是执行 SPARQL 查询,例如:
SELECT ?item WHERE {
<https://en.wikipedia.org/wiki/Albert_Einstein> schema:about ?item
}
一旦您发现 Albert Einstein 的 Wikidata ID 为
wd:Q937
,您就可以运行另一个 SPARQL 查询:
SELECT ?article WHERE {
?article schema:about wd:Q937 .
?article schema:isPartOf / wikibase:wikiGroup "wikipedia" .
}
检索该实体的所有维基百科文章。