OWL-API IRIMapper 用法

OWL-API IRIMapper usage

我正在将远程 ontology 映射到本地副本,如下所示:

 OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); 
 IRI documentIRI = IRI.create(new File("ontologies/localOntology.owl"));
 IRI remoteIRI=IRI.create("https://protege.stanford.edu/ontologies/pizza/pizza.owl");
 SimpleIRIMapper mapper = new SimpleIRIMapper(remoteIRI, documentIRI);
 manager.getIRIMappers().add(mapper);
 OWLOntology ontology = manager.loadOntology(remoteIRI);       
 manager.saveOntology(ontology,  new OWLXMLDocumentFormat());

这是使用 IRIMap 的正确方法吗?如果 localOntology.owl 包含与远程 ontology 不同的内容怎么办?似乎我正在操纵本地 ontology 而不管远程 ontology 的内容,因为例如,如果我们使用 ontology.getAxiomCount() 和 localOntology.owl 空 ontology,我们得到“0”,与 localOntology 的内容一致,但与远程 ontology 不一致。 "ontology" 是否应该与远程 ontology 对齐但映射后存储在 localOntology.owl 中?谢谢。

IRI 映射的目的只是从一个 IRI 重定向到另一个 - 最常见的用例是避免多次下载远程 ontology。然而,确保本地副本与远程副本同步(假设远程副本是 'master' ontology,其他用户将在他们的系统中使用)是一项没有 IRI 映射器实现的任务承接。

没有通用的策略来解决本地和远程之间的差异 ontology - 例如,在某些情况下同步远程和本地 ontology 总是正确的做法;当本地副本用作缓存时,丢失远程更新是一个错误。

在其他情况下,从远程 ontology 更新是错误的 - 例如,在 ontology 上测试不同推理器的性能时,如果 ontology 导入远程本体可能在实验期间发生变化,那么使用不变的本地副本比选择最新更新更好;更改可能会以无法检测的方式影响比较结果,并破坏可重复性。

因此,OWL API 将正确策略的实施留给调用代码,而不是做出可能导致难以检测的问题的决定。