필자는 온톨로지를 만들기 위해 Protege를 사용했습니다. 그것은 두 개의 기본 클래스로 구성됩니다. 그들 각각에는 3 개의 아가씨가 있습니다. 서브 클래스는 특정 객체 및 데이터 속성이있는 클래스입니다. 인스턴스를 만들 때 클래스 개별이지만 해당 데이터 속성을 사용하여 인스턴스를 일부 하위 클래스에 속하게합니다. Protege에서 Hermit을 실행하면 잘 수행됩니다. 내 인스턴스가 클래스 및 하위 클래스에 속한다고합니다. 하지만 Java 및 Owlapi의 Jfact에서 하위 클래스에서 모든 인스턴스를 인쇄하려고하면 인스턴스가 하위 클래스에만 속하지 만 하위 클래스에는 속하지 않습니다. JFact 또는 다른 것입니까?owl api 3.4.10 및 jfact 1.2.1을 사용하여 모든 유형을 얻습니다.
for (OWLClass c : ont.getClassesInSignature()) {
if (c.getIRI().getFragment().equals("Baby")) {
NodeSet<OWLClass> subClasses = reasoner.getSubClasses(c, false);
for (OWLClass subClass : subClasses.getFlattened()) {
System.out.println(subClass.getIRI().getFragment());
NodeSet<OWLNamedIndividual> instances = reasoner.getInstances(subClass, false);
for (OWLNamedIndividual i : instances.getFlattened()) {
System.out.println(i.getIRI().getFragment());
s += i.getIRI().getFragment() + " ";
}
}
}
}
문제가있는 코드를 공유하십시오. –
코드를 공유했습니다. 그것은 작동하지만 출력 (예상대로 Protege에 은둔자). 이 Baby 클래스에는 세 개의 하위 클래스가 있습니다. Baby 인스턴스를 만들었지 만 추론자가 하위 클래스 중 하나의 인스턴스로 인식해야하지만이 코드에서는 하위 클래스에 인스턴스가 없다고 말합니다. – melnej