单个查询中的Wikipedia API和SPARQL

时间:2016-12-27 19:16:38

标签: sparql wikipedia wikipedia-api wikidata

我需要在全文中搜索包含某些特定字词的维基百科页面。为了改进结果,我想将结果限制为描述 特定实体的实体的页面。

为了搜索全文,我可以使用维基百科API,使用查询操作搜索生成器

为了过滤给定实体的实例,我可以使用Wikidata API和SPARQL查询。

有没有办法在应用两个过滤器的单个查询中执行这两个操作?

2 个答案:

答案 0 :(得分:3)

June 2017起,possible是从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!

答案 1 :(得分:1)

不,那些完全独立的搜索后端没有交互。 Wikidata API使用SQL查询;搜索API使用Elasticsearch; SPARQL服务使用Blazegraph。