sparql - 我可以在本地对 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
由于有超过一百万个实例,这个查询达到一分钟的超时,我看不到优化查询的可能性,因为即使没有属性,并且有LIMIT
10 个条目,查询也会超时:
SELECT ?item
WHERE {
?item wd:P31/wdt:P279*|wdt:P279* wd:Q11173.
}
直接链接。
我可以通过编写分而治之的脚本单独查询子类,但在我这样做之前,我想检查一个更简单的可能性:
解决方案
推荐阅读
- docker - Jenkins Pipeline Docker 网络未找到
- javascript - 模块构建失败(来自 ./node_modules/postcss-loader/src/index.js):SyntaxError (2:14) Unknown word
- elasticsearch - 如何限制索引中 ElasticSearch 文档的最大数量?
- typescript - 如何访问 .ts 和 .scss 文件中的公共变量
- android - 选项卡布局文本在小屏幕尺寸中被截断
- node.js - 在 VPN 中安装 jquery 时出现 NPM 407 错误
- android - 可以模拟/测试 Android ViewBinding 交互吗?
- laravel - 具有多个用户模型的护照身份验证
- c - 使用 extern 在 C 中声明全局变量
- r - 没有明显/唯一连接键的 data.table 合并