我在单例类“本体”中加载了一个现有的本体。
我想有相应的推断本体。
这是我的实际代码:
List<InferredAxiomGenerator<? extends OWLAxiom>> gens = new ArrayList<InferredAxiomGenerator<? extends OWLAxiom>>();
gens.add(new InferredSubClassAxiomGenerator());
gens.add(new InferredEquivalentClassAxiomGenerator());
InferredOntologyGenerator InferredGenerator = new InferredOntologyGenerator(Ontology.getOntology().getOWLReasoner(), gens);
InferredGenerator.fillOntology(Ontology.getOntology().getOWLOntologyManager(), Ontology.getOntology().getOWLOntology());
这应该在我的本体中添加所有推断的公理,对吗?好吧,它没有。我有一个类 SpeciesA :
SpeciesA ⊑ Species ⊓ ∃hasPart.Fruit
所以我创建了一个物种个体,我将属性 hasPart 添加到另一个水果个体。在 Protégé 中执行此操作并生成推断的本体将告诉我我的个体属于 SubClass SpeciesA。但是使用提供的代码在 Java 中执行此操作不起作用。
我用它来输出个人的子类:
for (OWLClassExpression i :
Individual.getTypes((Ontology.getOntology().getOWLOntology())))
System.out.println("Inferred classes of Individual : " + i.toString());
它实际上只输出“Species”的IRI,而不是“SpeciesA”。提前致谢。