考虑一个命名的个人“牛”。它的类别也是“母牛”,而母牛又是哺乳动物的子类,而哺乳动物是生物的子类,依此类推。如果我可以按以下方式访问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


谢谢。

最佳答案

getEntityType()仅返回OWLCLASS / OWLOBJECTPROPERTY / OWLNAMEDIDIVIDUAL,即,关于实体是什么的OWLAPI特定值,而不是关于它在本体中的角色或在层次结构中的位置。

同样,也可以进行双打(即OWLNamedIndividualOWLClass可以具有相同的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的推理机。有几个实验分支:
JFact的version4分支处于SNAPSHOT状态:https://github.com/owlcs/jfact
可在此处使用与OWLAPI 4配合使用的HermiT前叉:https://github.com/ignazio1977/hermit-reasoner
两者都需要使用本地版本。

关于java - 检索OWL API 4.0中指定个人所属的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26130265/

10-09 05:18