在我的程序中,我需要制作OWLOntology
。
我想我需要创建一个新的OWLOntologyManager
:
ontologyManager = OWLManager.createOWLOntologyManager();
现在我想向经理添加一个本体,这是给定OWLOntology的DEEP副本。 我不想再从文档中加载本体,因为这需要花费很多时间。
我怎样才能以简单的方式做到这一点?
答案 0 :(得分:4)
据我所知,确实没有深度复制的方法。一种解决方案是将第一个本体中存在的所有公理添加到新创建的本体实例中。这样您就可以将所有内容保存在内存中,而无需重新读取文件。 OWL实体(类,属性等)也应该被复制。
以下代码应该有效(未经过测试):
manager.addAxioms(newOntology, oldOntology.getAxioms());
答案 1 :(得分:2)
本体在公理方面的所有内容都是不可变对象,因此深层副本只需要将所有公理从OWLOntology添加到另一个 - 您只需要在不同的OWLOntologyManager中创建具有相同OWLOntologyID的OWLOntology并添加所有的公理。 由于公理,实体和表达式都是不可变的,因此由两个OWLOntologies引用它们不会导致更改从一个传播到另一个或竞争条件。
添加所有公理可以像loopasam一样完成,这确实是正确的。