gpt4 book ai didi

java - 使用 OWLAPI 删除本体注释

转载 作者:行者123 更新时间:2023-12-01 11:38:17 26 4
gpt4 key购买 nike

我正在尝试使用 OWLAPI 版本 4.0.2(来自 Maven)从本体中删除一些文字注释

为此,我使用RemoveOntologyAnnotation 类和管理器applyChange() 方法。这是我使用的(简化的)代码:

    OWLOntologyManager m = OWLManager.createOWLOntologyManager();
OWLOntology ontology = null;
File ontologyFile = new File(ontologyFileName);
try {
ontology = m.loadOntologyFromOntologyDocument(ontologyFile);
} catch (OWLOntologyCreationException e) {
e.printStackTrace();
}
for (OWLClass cls : ontology.getClassesInSignature()) {
for (OWLAnnotation annotation : EntitySearcher.getAnnotations(cls.getIRI(), ontology)) {
if (annotation.getValue() instanceof OWLLiteral) {
RemoveOntologyAnnotation rm = new RemoveOntologyAnnotation(ontology, annotation);
System.out.println(m.applyChange(rm));
}
}
}

applyChange() 方法始终返回“UNSUCCESSFULLY”而且我找不到任何有关注释删除不起作用的原因的文档。

注意:在这里发现了一些迹象 http://sourceforge.net/p/owlapi/mailman/message/28203984/看起来可行的地方

最佳答案

正如您问题中链接的邮件列表线程中也指出的那样,本体注释和本体元素注释是两个不同的东西。

RemoveOntologyAnnotation 仅删除本体本身的注释。

元素上的注释使用公理表示,特别是 OWLAnnotationAssertionAxiom s:因此,必须使用 OWLOntologyManager.removeAxiom() 删除它们或类似的方式:

for (OWLClass cls : ontology.getClassesInSignature()) {
for (OWLAnnotationAssertionAxiom annAx : EntitySearcher.getAnnotationAssertionAxioms(cls.getIRI(), ontology)) {
if (annAx.getValue().getValue() instanceof OWLLiteral) {
m.removeAxiom(annAx);
}
}
}

关于java - 使用 OWLAPI 删除本体注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29776440/

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