获取OwlApi类的子类

时间:2017-10-07 12:07:57

标签: java owl ontology owl-api

有一种方法可以在不使用推理器for (OWLClass child : reasoner.getSubClasses(clazz, true).getFlattened() )的情况下查找类的所有已命名子类,而无需使用公理进行推理?谢谢

1 个答案:

答案 0 :(得分:2)

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

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