OWLAPI:处理 update/delete 公理时的性能影响
OWLAPI : Performance impact while dealing with update/delete of axioms
我想 update/delete 来自 OWL Class 的公理(例如 SubclassOf 公理)。
我有以下两种方法:
1)删除所有旧公理然后创建所有新公理。
2) 通过与新公理比较删除选择性公理。
注意:- 由于某些限制,我必须将更新案例视为删除 + 创建
Q. 最好的策略 OWLAPI 的性能是什么?
例如
我有以下 Class X
-
的 SubclassOF 公理
1) A or B
2) name exactly 1 xsd:string
3) P and not Q
我想 update/delete 这些公理与 -
1) A [Update]
2) name min 1 xsd:string [Update]
3) Axiom is deleted [Delete]
公理去除的性能等同于公理化加法。主要操作是搜索地图以查找现有元素或添加新元素。
涉及的结构对于输入来说是 O(Constant),因此总的复杂性主要与 ontology 大小无关(这对于非常大的本体可能不成立,但对于大多数本体来说是准确的) .
简而言之,您提出的解决方案 (2) 没有性能问题。
我不建议重新创建公理 - 这在内存使用方面可能很昂贵。公理是不可变的,因此新旧对象的行为完全相同。
我想 update/delete 来自 OWL Class 的公理(例如 SubclassOf 公理)。
我有以下两种方法:
1)删除所有旧公理然后创建所有新公理。
2) 通过与新公理比较删除选择性公理。
注意:- 由于某些限制,我必须将更新案例视为删除 + 创建
Q. 最好的策略 OWLAPI 的性能是什么?
例如
我有以下 Class X
-
1) A or B
2) name exactly 1 xsd:string
3) P and not Q
我想 update/delete 这些公理与 -
1) A [Update]
2) name min 1 xsd:string [Update]
3) Axiom is deleted [Delete]
公理去除的性能等同于公理化加法。主要操作是搜索地图以查找现有元素或添加新元素。
涉及的结构对于输入来说是 O(Constant),因此总的复杂性主要与 ontology 大小无关(这对于非常大的本体可能不成立,但对于大多数本体来说是准确的) .
简而言之,您提出的解决方案 (2) 没有性能问题。
我不建议重新创建公理 - 这在内存使用方面可能很昂贵。公理是不可变的,因此新旧对象的行为完全相同。