【问题标题】:Using OWL API, how to get class or individual name使用 OWL API,如何获取类名或个人名
【发布时间】:2014-07-18 09:12:30
【问题描述】:

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

我想要的只是MonDad

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

【问题讨论】:

    标签: semantic-web owl owl-api


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          我将类名检索到列表中,如下所示
          从磁盘中获取本体并分配给变量 o Type ; OWLO本体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;
              }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-06-11
            • 1970-01-01
            • 2011-02-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多