我正在努力将大部分药物本体 OWL 文件和大部分ChEBI OWL 文件加载到 GraphDB free v8.3 repository 并且优化的 OWL Horst推理。
这可能吗?我应该做些什么而不是“耐心等待吗?”
细节:
我正在使用loadrdf 离线批量加载器来填充带有 488.0 GiB 和 64 个 vCPU 的AWS r4.16xlarge 实例
在周末,我玩了不同的池缓冲区大小并发现大多数这些文件单独加载最快的池缓冲区为 2,000 或 20,000 语句而不是建议的 200,000。我还在 loadrdf 脚本中添加了-Xmx470g
。大多数 OWL 文件将在不到一小时内单独加载。
昨晚美国东部时间晚上 10 点左右,我开始同时加载下面列出的所有文件。 **现在已经过了 11 个小时,而且还有数百万条陈述要发挥作用.**负载率现在约为 70/second。似乎只有 30%的 RAM 被使用,但 CPU 负载一直在 60 左右。
-
是否有网站记录其他人做这种规模的事情?
-
我应该使用不同的推理配置吗?我选择了这个配置,因为它是最快的加载 OWL 配置,基于我周末的实验。我想我需要寻找超越 rdfs:subClassOf 的关系。
我正在尝试加载的文件:
+-------------+------------+---------------------+
| bytes | statements | file |
+-------------+------------+---------------------+
| 471,265,716 | 4,268,532 | chebi.owl |
| 61,529 | 451 | chebi-disjoints.owl |
| 82,449 | 1,076 | chebi-proteins.owl |
| 10,237,338 | 135,369 | dron-chebi.owl |
| 2,374 | 16 | dron-full.owl |
| 170,896 | 2,257 | dron-hand.owl |
| 140,434,070 | 1,986,609 | dron-ingredient.owl |
| 2,391 | 16 | dron-lite.owl |
| 234,853,064 | 2,495,144 | dron-ndc.owl |
| 4,970 | 28 | dron-pro.owl |
| 37,198,480 | 301,031 | dron-rxnorm.owl |
| 137,507 | 1,228 | dron-upper.owl |
+-------------+------------+---------------------+
2 回答
只需用更整洁的格式输入 out_3_Petrov 的正确建议。 所有这些查询都应该在感兴趣的存储库中运行 ...在处理这个问题的某个时刻,我误以为我在运行这些查询时应该连接到
SYSTEM
repo。所有这些查询还需要以下前缀定义
prefix sys: <http://www.ontotext.com/owlim/system#>
这并没有直接解决将大型数据集加载到 OWL 推理存储库中的问题,但它确实显示了在将大量三元组加载到 no-inference(“空”规则集)存储库后如何切换到更高级别的推理。
可以从查询当前推理 level/rule set 开始,然后在每次插入后运行同一个 select 语句。
SELECT ?state ?ruleset { ?state sys:listRulesets ?ruleset }
添加预定义的规则集
INSERT DATA { _:b sys:addRuleset "rdfsplus-optimized" }
使新规则集成为默认值
INSERT DATA { _:b sys:defaultRuleset "rdfsplus-optimized" }
Re-infer...可能需要很长时间!
INSERT DATA { [] <http://www.ontotext.com/owlim/system#reinfer> [] }
_1_you 可以看看 Preload 工具,它是 GraphDB 8.4.0 版本的一部分。它专门设计用于以恒定速度处理大量数据。请注意,它无需推理即可工作,因此您需要加载数据,然后更改规则集并重新引用语句。
http://graphdb.ontotext.com/documentation/free/loading-data-using-preload.html