使用OWL API,如何获取类名或个体名



我可以获得OWLClass并访问信息。类和个体都有前缀。
有什么办法可以去掉前缀吗?
例如:

OWLClass cls = factory.getOWLClass(":Person", pm);
for (OWLIndividual indiv : cls.getIndividuals(onto)) {
    System.out.println(indiv.toString());
}

打印:
<http://www.co-ode.org/ontologies/ont.owl#Mon>
<http://www.co-ode.org/ontologies/ont.owl#Dad>

我想要的是Mon Dad

更新:
谢谢Ignazio。
我发现关键是getIRI()方法。

for (OWLIndividual indiv : owlclass.getIndividuals(onto)) {
    System.out.println(indiv.asOWLNamedIndividual().getIRI().getFragment());
}
for (OWLClassExpression expre : owlclass.getSubClasses(onto)) {
    System.out.println(expre.asOWLClass().getIRI().getFragment());
}

对于实体,您可以使用OWLEntity.getIRI(). getfragment()来完成此操作。

但请注意,并非所有实体都有这样的名称,因为Iri可以合法地以/或#
结尾。

一个小更新:getFragment()现在已弃用。我用getShortForm()代替。

我也遇到过同样的问题,使用了OWLEntity.getIRI().getShortForm()

我将类名检索到List中,如下所示
从磁盘中获取本体并赋值给变量0 Type;OWLOntology o;并创建列表添加类,如下所示listofClass = new ArrayList();然后添加以下代码

    Collection<OWLClass> classes = o.getClassesInSignature();
//getting class names in the ontology
    for (OWLClass owlClass : classes) {
            System.out.println(owlClass.getIRI().getShortForm());
            listofClass.add(owlClass.getIRI().getShortForm());
      }
        return listofClass;
    }

最新更新