使用 OWLAPI 删除 ontology 注释
Remove ontology annotation using OWLAPI
我正在尝试使用 OWLAPI 版本 4.0.2(来自 Maven)从 ontology 中删除一些文字注释
为此,我使用 RemoveOntologyAnnotation class 和管理器 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"
而且我找不到任何关于为什么注释删除不起作用的文档。
N.B.: 在这里找到了一些迹象 http://sourceforge.net/p/owlapi/mailman/message/28203984/
它似乎起作用的地方
正如在您的问题中链接的邮件列表线程中也指出的那样,关于本体的注释和关于 ontology 元素的注释是两个不同的东西。
RemoveOntologyAnnotation
仅删除 ontology 本身的注释。
元素上的注释使用公理表示,特别是 OWLAnnotationAssertionAxiom
s: Consequently, they have to be removed using OWLOntologyManager.removeAxiom()
或类似的方式:
for (OWLClass cls : ontology.getClassesInSignature()) {
for (OWLAnnotationAssertionAxiom annAx : EntitySearcher.getAnnotationAssertionAxioms(cls.getIRI(), ontology)) {
if (annAx.getValue().getValue() instanceof OWLLiteral) {
m.removeAxiom(annAx);
}
}
}
我正在尝试使用 OWLAPI 版本 4.0.2(来自 Maven)从 ontology 中删除一些文字注释
为此,我使用 RemoveOntologyAnnotation class 和管理器 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" 而且我找不到任何关于为什么注释删除不起作用的文档。
N.B.: 在这里找到了一些迹象 http://sourceforge.net/p/owlapi/mailman/message/28203984/ 它似乎起作用的地方
正如在您的问题中链接的邮件列表线程中也指出的那样,关于本体的注释和关于 ontology 元素的注释是两个不同的东西。
RemoveOntologyAnnotation
仅删除 ontology 本身的注释。
元素上的注释使用公理表示,特别是 OWLAnnotationAssertionAxiom
s: Consequently, they have to be removed using OWLOntologyManager.removeAxiom()
或类似的方式:
for (OWLClass cls : ontology.getClassesInSignature()) {
for (OWLAnnotationAssertionAxiom annAx : EntitySearcher.getAnnotationAssertionAxioms(cls.getIRI(), ontology)) {
if (annAx.getValue().getValue() instanceof OWLLiteral) {
m.removeAxiom(annAx);
}
}
}