当前位置: 首页 > 知识库问答 >
问题:

删除OWLAPI中特定类的个体

林星阑
2023-03-14
removerToDeleteAlreadyAssignedInds = new OWLEntityRemover(man, Collections.singleton(target_Ontology));

OWLClass classWithAlreadyAssignedInds = factory.getOWLClass(destinationclassname,pm_Target_Ontology);
for(OWLNamedIndividual indsToDelete : classWithAlreadyAssignedInds.getIndividualsInSignature())
        {
            indsToDelete.accept(removerToDeleteAlreadyAssignedInds);
        }

        man.applyChanges(removerToDeleteAlreadyAssignedInds.getChanges());
        removerToDeleteAlreadyAssignedInds.reset();
        man.saveOntology(target_Ontology);

共有1个答案

微生嘉
2023-03-14

您正在对OWLClass对象使用getIndiversalsInSignature()。该对象的签名中没有个人。

如果您使用

target_Ontology.getClassAssertionAxioms(classWithAlreadyAssignedInds)

对于您的循环,您应该能够删除断言属于该类的个体。但是,有些个体可能被推断为属于该类,在这种情况下,您将不得不手动查找它们,或者使用本体上的推理器获得该类的所有实例:

OWLReasoner r... 
r.getInstances(classWithAlreadyAssignedInds, false)
 类似资料: