考虑一个命名的个人“牛”。它的类别也是“母牛”,而母牛又是哺乳动物的子类,而哺乳动物是生物的子类,依此类推。如果我可以按以下方式访问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特定值,而不是关于它在本体中的角色或在层次结构中的位置。
同样,也可以进行双打(即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的推理机。有几个实验分支:
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/