我是 OWLAPi 的新手,我正在使用 Jfact1.2.1 推理器。
在我的本体中有两个不能满足的类。我想打印没有这两个不满意的类的所有子类。我已经使用数组编写了一些代码并且我成功了,但是我不喜欢这个数组的东西,因为我不能将它用于其他可能有超过 2 个不可满足的类的未知本体。
所以我的问题是,有没有办法打印出已定义类的所有子类,而其中不存在无法满足的类?我真的需要别人的帮助,因为我什么都试过了。如果有人对我习惯使用的数组方法感兴趣,代码如下
OWLClass[] array = new OWLClass[3];
int i=0;
Node<OWLClass> bottomNode = reasoner.getUnsatisfiableClasses();
Set<OWLClass> unsatisfiable = bottomNode.getEntitiesMinusBottom();
for (OWLClass cls : unsatisfiable) {
array[i]= cls;
i++;
}
for (OWLClass c : myOntology.getClassesInSignature()) {
NodeSet<OWLClass> subClasses = reasoner.getSubClasses(c, True);
for (OWLClass subClass : subClasses.getFlattened()) {
if (subClass.isBottomEntity()|| subClass.equals(array[0])||
subClass.equals(array[1])|| subClass.equals(array[2])){
continue;
else{
System.out.println(subClass.getIRI().getFragment() + "\tsubclass of\t"
+ c.getIRI().getFragment());
}
}
}