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

时间:2014-07-18 09:12:30

标签: semantic-web owl 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());
}

3 个答案:

答案 0 :(得分:3)

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

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

结尾

答案 1 :(得分:2)

稍微更新:getFragment()现已弃用。我改用getShortForm()。

答案 2 :(得分:0)

我按如下方式将类名称检索到列表中
从磁盘获取本体并分配给变量o Type; 眼科学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;
    }