我想更新/删除OWL类中的公理(例如SubclassOf公理)。
我遵循两种方法:
1)删除所有旧公理,然后创建所有新公理。
2)通过将选择公理与新公理进行比较来删除它们。
注意: - 由于某些限制,我必须将更新案例视为删除+创建
问。在OWLAPI的表现方面,哪些最佳策略?
E.g。
我对Class X
-
1) A or B
2) name exactly 1 xsd:string
3) P and not Q
我想用 -
更新/删除这些公理1) A [Update]
2) name min 1 xsd:string [Update]
3) Axiom is deleted [Delete]
答案 0 :(得分:0)
公理移除的性能相当于公理化的增加。主要操作是通过地图搜索以查找现有元素或添加新元素。
所涉及的结构是输入的O(常数),因此总复杂度主要与本体大小无关(对于非常大的本体而言,这可能不适用,但对于大多数本体而言,它是准确的。)
简而言之,您提出的解决方案(2)没有性能问题。
我不建议重新创建公理 - 这在内存使用方面可能很昂贵。公理是不可变的,因此新旧对象的行为完全相同。