gpt4 book ai didi

mysql - 如何使用 Jena SDB 插入/更新/删除个人以保持最佳性能?

转载 作者:行者123 更新时间:2023-11-30 23:14:07 24 4
gpt4 key购买 nike

最近我从 OWL API 切换到 Jena,希望能提高有关数据插入和查询的性能。

所以我开始使用 Jena SDB 将我的 OWL 本体加载到基于 MySQL 的三重存储中。所以我用了

model.read("owl-concepts.turtle")

Jena 在三元组存储(在 Mysql 表中)中创建了大约 1500 个节点。最初我对大量节点感到有点惊讶。但这似乎是合理的,因为 OWL 本体包含大约 80 个具有多个数据和对象属性的 OWL 类。

为了从本体中读取数据(个人),我利用了 Jena SDB 接口(interface)。我检索了一个模型并基于该模型创建了一个 ontModel。我使用那个 ontModel 来修改个人,例如:

ontModel.createIndividual(...);
ontModel.getIndividual(....);
individual.remove();

对于 ontModel 我使用了 OWL_MEM;根据文档,这应该意味着没有应用任何推理。

我意识到,基于所描述的方法,个人数据的修改并没有我预期的那么快。平均而言,插入一个简单的个体需要 2 到 30 秒。

所以我开始问:在 Jena 中使用模型接口(interface)是否是推荐的修改数据的方法,或者这种方法性能低,应该使用 SPARQL 来修改数据?我最初的计划是仅将 SPARQL 用于查询部分...

感谢每一位专家的意见或您在 Jena 的体验。

最佳答案

将持久性三重存储(尤其是 SDB)与推理器一起使用并不是一个好主意。 Reasoner 经常对数据库进行大量的随机访问,每次访问都有一点开销。一旦将它们加起来,事情就会变慢。

同样,使用 SPARQL 而不是模型或本体 API,因为您会再次生成大量小访问。

鉴于您的数据大小,这可能很适合内存,所以就这样做吧。您始终可以将数据从 SDB 存储中移出,也可以从 SDB 存储中移出以持久保存。

关于mysql - 如何使用 Jena SDB 插入/更新/删除个人以保持最佳性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18661063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com