2

我正在努力将大部分Drug Ontology OWL 文件和大部分ChEBI OWL 文件加载到 GraphDB 免费 v8.3 存储库中,并启用Optimized OWL Horst推理。

这可能吗?除了“耐心等待”之外,我还应该做点什么吗?

细节:

我正在使用loadrdf 离线批量加载程序来填充具有 488.0 GiB 和 64 个 vCPU的AWS r4.16xlarge 实例

周末,我尝试了不同的池缓冲区大小,发现这些文件中的大多数单独加载最快,池缓冲区为 2,000 或 20,000 条语句,而不是建议的 200,000 条。我还添加-Xmx470g了 loadrdf 脚本。大多数 OWL 文件将在不到一小时的时间内单独加载。

昨晚美国东部时间晚上 10 点左右,我开始同时加载下面列出的所有文件。 现在已经过了 11 个小时,还有数百万条语句要处理。 现在的加载率大约是 70/秒。我的 RAM 似乎只有 30% 被使用,但 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      |
+-------------+------------+---------------------+
4

2 回答 2

2

@MarkMiller 您可以查看 Preload 工具,它是 GraphDB 8.4.0 版本的一部分。它专为以恒定速度处理大量数据而设计。请注意,它无需推理即可工作,因此您需要加载数据,然后更改规则集并重新推理语句。

http://graphdb.ontotext.com/documentation/free/loading-data-using-preload.html

于 2017-12-18T16:45:37.387 回答
1

只需用更整洁的格式输入@Konstantin Petrov 的正确建议。 所有这些查询都应该在感兴趣的存储库中运行SYSTEM......在解决这个问题的某个时候,我误导自己认为在运行这些查询时我应该连接到存储库。

所有这些查询还需要以下前缀定义

prefix sys: <http://www.ontotext.com/owlim/system#>

这并没有直接解决将大型数据集加载到 OWL 推理存储库中的时间/性能,但它确实展示了在将大量三元组加载到无推理(“空”规则集)存储库后如何切换到更高级别的推理.

可以从查询当前推理级别/规则集开始,然后在每次插入后运行相同的选择语句。

SELECT ?state ?ruleset { ?state sys:listRulesets ?ruleset }

添加预定义的规则集

INSERT DATA { _:b sys:addRuleset "rdfsplus-optimized" }

将新规则集设为默认值

INSERT DATA { _:b sys:defaultRuleset "rdfsplus-optimized" }

重新推断...可能需要很长时间!

INSERT DATA { [] <http://www.ontotext.com/owlim/system#reinfer> [] }

于 2018-01-16T17:28:41.187 回答