我需要搜索其中包含一些特定单词的维基百科页面全文。为了改善结果,我想将结果限制为描述实体的页面的实例一个特定的实体。
为了搜索全文,我可以使用 Wikipedia API,使用查询动作和搜索生成器.
为了过滤给定实体的实例,我可以使用 Wikidata API 和 SPARQL 查询。
有没有办法在应用两个过滤器的单个查询中执行这两个操作?
Since 2017年6月 https://phabricator.wikimedia.org/T148245, it is possible https://www.mediawiki.org/wiki/Wikidata_Query_Service/User_Manual/MWAPI从 Wikidata SPARQL 调用 Wikimedia API:
SELECT ?wikidata_item ?wikipedia_title {
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:endpoint "en.wikipedia.org" .
bd:serviceParam wikibase:api "Generator" .
bd:serviceParam mwapi:generator "search" .
bd:serviceParam mwapi:gsrsearch "triplestore" .
bd:serviceParam mwapi:gsrlimit "max" .
?wikidata_item wikibase:apiOutputItem mwapi:item .
?wikipedia_title wikibase:apiOutput mwapi:title .
}
# hint:Prior hint:runFirst "true".
?wikidata_item wdt:P31 wd:Q3539533 .
FILTER (?wikipedia_title != "Blazegraph")
}
Try it! https://query.wikidata.org/#SELECT%20%3Fwikidata_item%20%3Fwikipedia_title%20%7B%0A%20%20%20%20SERVICE%20wikibase%3Amwapi%20%7B%0A%20%20%20%20%20%20bd%3AserviceParam%20wikibase%3Aendpoint%20%22en.wikipedia.org%22%20.%0A%20%20%20%20%20%20bd%3AserviceParam%20wikibase%3Aapi%20%22Generator%22%20.%0A%20%20%20%20%20%20bd%3AserviceParam%20mwapi%3Agenerator%20%22search%22%20.%0A%20%20%20%20%20%20bd%3AserviceParam%20mwapi%3Agsrsearch%20%22triplestore%22%20.%0A%20%20%20%20%20%20bd%3AserviceParam%20mwapi%3Agsrlimit%20%22max%22%20.%0A%20%20%20%20%20%20%3Fwikidata_item%20wikibase%3AapiOutputItem%20mwapi%3Aitem%20.%20%0A%20%20%20%20%20%20%3Fwikipedia_title%20wikibase%3AapiOutput%20mwapi%3Atitle%20.%0A%20%7D%0A%20%23%20hint%3APrior%20hint%3ArunFirst%20%22true%22.%0A%20%20%3Fwikidata_item%20wdt%3AP31%20wd%3AQ3539533%20%20.%0A%20%20FILTER%20%28%3Fwikipedia_title%20%21%3D%20%22Blazegraph%22%29%0A%7D
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)