考虑一个名为“奶牛”的个体。它的类别也是“牛”,反过来,牛是哺乳动物的子类,而哺乳动物是生命的子类,等等。如果我可以按以下方式访问OWLNamedIndividual:
for (OWLNamedIndividual i : localUni.getIndividualsInSignature())
{
Code that should give me ...
i = Cow (NamedIndividual)
Class = Cow
One Level up class = Mammal
}我试过以下几种方法,但都没有用
System.out.println(i.getEntityType().getName() );
System.out.println(i.getEntityType().toString() );
System.out.println(i.getTypes(myontology) ); // this would give me error NoSuchMethodError谢谢。
发布于 2014-10-01 18:34:05
getEntityType()只返回OWLCLASS/OWLOBJECTPROPERTY/OWLNAMEDIDIVIDUAL,即关于实体是什么的OWLAPI特定值,而不是它在本体中的角色或在层次结构中的位置。
此外,还可以使用双关语(例如,OWLNamedIndividual和OWLClass可以具有相同的IRI),但这两个实体是不同的,因此不能直接进入另一个实体。
OWLNamedIndividual.getTypes(OWLOntology)已在版本4中被删除。
EntitySearcher.getTypes(OWLIndividual, OWLOntology)
注意,结果将只被断言为个人的类型-为了得到推断的结果,您需要使用OWLReasoner。
推理器的构建方式仍然与OWLAPI 3:https://github.com/owlcs/owlapi/wiki/DL-Queries-with-a-real-reasoner相同。
然而,据我所知,没有使用OWLAPI 4的推理器版本。有几个实验分支: version4分支的JFact处于快照状态:使用OWLAPI 4工作的HermiT分支在这里可用:https://github.com/ignazio1977/hermit-reasoner都需要本地构建才能使用。
https://stackoverflow.com/questions/26130265
复制相似问题