首页 > 解决方案 > 我可以在本地对 Wikidata 转储运行 SPARQL 查询吗?

问题描述

TL;DR:有没有办法可以在本地下载和安装用于 Wikidata 的 SPARQL 端点 query.wikidata.org 的数据和软件?我需要这个的原因是我要运行经常超时的查询。

在另一个 SO 问题中,我读到该软件是 Blazegraph。

长版:

我正在使用 SPARQL 查询服务https://query.wikidata.org对其运行相当繁重的查询。例如,以下查询检索所有化合物的列表(Q11173 或其子类的实例):

SELECT ?item ?boiling_point ?melting_point ?decomp_point ?mass ?smiles
  (GROUP_CONCAT(DISTINCT ?chemFormula; SEPARATOR=", ") AS ?chemFormulae)
  (GROUP_CONCAT(DISTINCT ?chemStructure; SEPARATOR=", ") AS ?chemStructures)
  WHERE {
    ?item wd:P31/wdt:P279*|wdt:P279* wd:Q11173.

    OPTIONAL { ?item wdt:P2102 ?boiling_point. }
    OPTIONAL { ?item wdt:P2101 ?melting_point. }
    OPTIONAL { ?item wdt:P2107 ?decomp_point. }
    OPTIONAL { ?item wdt:P2067 ?mass. }
    OPTIONAL { ?item wdt:P274 ?chemFormula. }
    OPTIONAL { ?item wdt:P117 ?chemStructure. }
    OPTIONAL { ?item wdt:P233 ?smiles. }
  }
  GROUP BY ?item ?boiling_point ?melting_point ?decomp_point ?mass ?smiles

这是一个直接链接

由于有超过一百万个实例,这个查询达到一分钟的超时,我看不到优化查询的可能性,因为即使没有属性,并且有LIMIT10 个条目,查询也会超时:

SELECT ?item
  WHERE {
    ?item wd:P31/wdt:P279*|wdt:P279* wd:Q11173.
  }

直接链接

我可以通过编写分而治之的脚本单独查询子类,但在我这样做之前,我想检查一个更简单的可能性:

标签: sparqlwikidata-query-service

解决方案


推荐阅读