简体   繁体   English

获取类 OwlApi 的子类

[英]get subclasses of a class OwlApi

There is a way to find all named subclasses of a class without using a reasoner for (OWLClass child : reasoner.getSubClasses(clazz, true).getFlattened() ) and without doing inference just by using axioms?有一种方法可以在不使用for (OWLClass child : reasoner.getSubClasses(clazz, true).getFlattened() )的推理器的情况下找到一个类的所有命名子类,而无需仅使用公理进行推理? Thank you谢谢

Using owl-api the ontology can be query to get all subClasses axioms.使用 owl-api 可以查询本体以获取所有子类公理。 Then you filter the result to retain only the named classes.然后过滤结果以仅保留命名的类。

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

Using Jena, you can list statement, add look for the "subClassOf" predicate, then as in owl-api you filter to get only non-annoymous objects.使用 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());
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM