【问题标题】:Wikipedia API and SPARQL in a single query单个查询中的 Wikipedia API 和 SPARQL
【发布时间】:2016-12-27 19:16:38
【问题描述】:
我需要搜索 全文 中包含某些特定单词的 Wikipedia 页面。为了改进结果,我想将结果限制为描述实体的页面,这些实体是特定实体的实例。
为了搜索全文,我可以使用 Wikipedia API,使用 query action 和 search generator。
为了过滤给定实体的实例,我可以使用 Wikidata API 和 SPARQL 查询。
有没有办法在应用两个过滤器的单个查询中执行这两个操作?
【问题讨论】:
标签:
sparql
wikipedia
wikipedia-api
wikidata
【解决方案1】:
由于June 2017,从维基数据SPARQL调用维基媒体API是possible:
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!
【解决方案2】:
不,它们具有完全独立的不交互的搜索后端。 Wikidata API 使用 SQL 查询;搜索 API 使用 Elasticsearch; SPARQL 服务使用 Blazegraph。