4

我可以获取 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

更新:
谢谢伊格纳齐奥。
我发现关键是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());
}
4

4 回答 4

3

对于实体,您可以使用 OWLEntity.getIRI().getFragment() 来执行此操作。

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

于 2014-07-18T12:16:37.087 回答
2

一点更新: getFragment() 现在已弃用。我改用 getShortForm() 。

于 2015-08-26T12:01:51.857 回答
0

我将类名检索到 List 中,如下所示
从磁盘获取本体并分配给变量 o Type ;OWLO本体o; 并创建列表以添加类,如下所示 List 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;
    }
于 2019-07-19T10:54:14.383 回答
0

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

于 2015-09-14T06:54:00.903 回答