获取 class 个 OwlApi 的子 class 个

get subclasses of a class OwlApi

有一种方法可以找到 class 的所有命名子 class,而无需使用推理器 for (OWLClass child : reasoner.getSubClasses(clazz, true).getFlattened() ),并且无需仅使用公理进行推理?谢谢

使用owl-api可以查询ontology得到所有子类公理。 然后过滤结果以仅保留命名的 类.

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());
    }
}

使用 Jena,您可以列出语句,添加查找 "subClassOf" 谓词,然后在 owl-api 中过滤以仅获取非烦人的对象。

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());
}