2
공리를 사용하여 추론을하지 않고 추론 자 for (OWLClass child : reasoner.getSubClasses(clazz, true).getFlattened())
을 사용하지 않고 클래스의 모든 명명 된 서브 클래스를 찾는 방법이 있습니까? 감사합니다클래스의 서브 클래스 얻기 OwlApi
공리를 사용하여 추론을하지 않고 추론 자 for (OWLClass child : reasoner.getSubClasses(clazz, true).getFlattened())
을 사용하지 않고 클래스의 모든 명명 된 서브 클래스를 찾는 방법이 있습니까? 감사합니다클래스의 서브 클래스 얻기 OwlApi
owl-api를 사용하면 온톨로지를 쿼리하여 모든 하위 클래스 공리를 얻을 수 있습니다. 그런 다음 결과를 필터링하여 명명 된 클래스 만 유지합니다. 예나를 사용
for (final OWLSubClassOfAxiom subClasse : ontology.getAxioms(AxiomType.SUBCLASS_OF))
{
if (subClasse.getSuperClass() instanceof OWLClass && subClasse.getSubClass() instanceof OWLClass)
{
System.out.println(subClasse.getSubClass() + " extends " + subClasse.getSuperClass());
}
}
, 당신은 당신 만이 아닌 annoymous 객체를 얻기 위해 필터링 올빼미-API에서와 같이, "subClassOf"술어에 대한보기를 추가, 문을 나열 할 수 있습니다.
final StmtIterator it = model.listStatements();
while (it.hasNext())
{
final Statement s = it.next();
if (s.getPredicate().equals(RDFS.subClassOf) && !s.getObject().isAnon())
System.out.println(s.getSubject() + " extends " + s.getObject());
}
해 주셔서 감사합니다. 그러나 클래스와 첫 번째 레벨 클래스 간의 관계는 고려하지 않습니다. owl.file에는 그 클래스가 추론자가 수행 한 것의 서브 클래스임을 보여줄 수있는 참조가 없기 때문에 이해합니다. 추론자를 사용하지 않고 그것들을 고려할 방법이 없습니까? 나는 희망한다. ... – Nina
Thing의 하위 클래스가 아닌 모든 하위 클래스 집합을 (A)로 만든다. 서명에있는 모든 클래스의 집합 (B)을 가져 와서 (A)에서 클래스를 제거하십시오. B의 나머지 부분은 Thing의 직접적인 하위 클래스 인 클래스의 추가 세트 여야합니다. – Galigator