java - 无法获取 Dbpedia 类的名称

标签 java owl dbpedia owl-api

当我尝试使用下面的代码获取 Dbpedia 本体类时

    public void classofontology(){      

   Set<OWLClass> classes =  ontology.getClassesInSignature();
   System.out.println("le nombre des classes total de l'ontologie est : "+classes.size());          
   for(OWLClass clss: classes) 
    System.out.println(clss.getIRI().getFragment());

           }

我得到了类的总数,所以它们都被浏览了,但我无法获得类的名称:我得到输出“null”,但是当我尝试直接使用clss我得到的是 IRI ,而不是 clss.getIRI().getFragment() 。我只需要类(class)名称,但我不明白为什么我无法获得它,我将不胜感激 如果你能帮我得到它。谢谢您

Ps:我注意到类的 IRI 与您在 Building 和 Book 类中看到的不同,这可能是问题的根源吗?

通过代码获取构建IRI http://dbpedia.org/ontology/Building

通过代码获取的书籍IRI http://schema.org/Book

最佳答案

简而言之,IRI 没有名称。

IRI 的最后一部分(来自最后一个斜杠或散列字符或数字)由 getFragment() 方法返回;但是,不能保证有效的 IRI 具有这样的片段(IRI 可能以散列或破折号结尾,或者它可能仅包含最后一个之后的数字)值(value))。这背后的原因是片段必须是 XML QName - 它在 RDF/XML 中用于命名标签。

例如,IRI.create("http://www.example.com/test/1234").getFragment() 将返回一个空字符串。

根据AKSW的建议,使用 SimpleIRIShortFormProvider,或者,如果您的实体有标签,则使用 AnnotationValueShortFormProvider

关于java - 无法获取 Dbpedia 类的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46773442/

相关文章:

rdf - 如何在 Protégé 中使用其他标准本体扩展本体?

sparql - 根据 URI 前缀从 DBpedia SPARQL 查询中排除结果

sparql - dbpedia SPARQL 查询以获取给定城市的特定值

sparql - 无法在 DBPedia 上执行特定的 SPARQL 查询 :/

java - Java 中列表的不稳定行为

java - 当必须始终捕获异常时,Java 程序怎么会崩溃?

java - 获取从中调用方法以在 Java 中进行日志记录的类的名称

java - 我必须使用 Java 生成 PL/SQL。大多数程序都是通用的。只有少数不断变化。怎么做?

rdf - 导入 DBpedia 的类层次结构

rdf - 从 owl 文件访问数据属性