gpt4 book ai didi

java - OWLOntologyManager.addAxioms() 操作的成本有多高?

转载 作者:行者123 更新时间:2023-12-02 04:23:48 25 4
gpt4 key购买 nike

我想知道(时间方面)有多贵

OWLOntologyManager.addAxioms(OWLOntology ont, java.util.Set<? extends OWLAxiom> axioms)

操作是。我问的主要原因是我正在处理一个非常大的数据集,并且想知道在创建公理时立即将它们添加到我的本体中是否会更有效,或者等到所有公理准备就绪并以一种方法添加它们是否会更有效打电话?

此外,这只是因为我很好奇,各种 OWLAxiom 创建方法都是​​恒定时间操作吗?如果没有的话,它们有多贵?

以防万一您想知道,我计划在缓冲模式下应用颗粒推理机,并在所有本体修改完成后刷新更改。

最佳答案

添加公理需要更新一些映射(根据公理的类型,可能存在一个或多个索引)。如果有听众等待听到本体的更改,他们也会收到通知 - 是否执行昂贵的操作取决于听众。

推理器是监听器的一个示例:通常它们会在临时集合中收集公理,直到调用 flush() 为止。

时间成本方面,这应该相当于 HashMap (或并发 HashMap )中的一个或多个插入,以及通常包含很少元素的监听器列表的迭代。成本预计接近恒定,但是对于大型本体,内存使用的增加可能会导致垃圾收集速度减慢。

对于最新版本的 OWL API(例如 4.0.2),在从文件解析本体时添加公理,使用临时列表而不是集合 - 这减少了哈希成本。一旦加载完成,列表就会变成集合 - 准确地说,是在第一次读取访问 axiom 集合时。

与推理成本相比,任何这些成本都应该是无关紧要的 - 推理预计需要更长的时间,因为它是一个更加复杂的操作。

在这种情况下,缓冲并在更改完成后刷新可能是最好的策略。

OWL API 可以使用更好的公理批处理来插入,但在其当前版本中,添加一组公理和添加单个公理之间几乎没有区别。

关于java - OWLOntologyManager.addAxioms() 操作的成本有多高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32441245/

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