当我尝试使用以下代码获取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而不是clss.getIRI().getFragment()时,我得到了IRI。我只需要类的名称,我不明白为什么我不能得到它,我将不胜感激
如果可以帮助我得到它。谢谢

附:我注意到类与建筑类和书籍类不具有相同的IRI,这可能是问题的根源吗?

通过代码获得IRI
http://dbpedia.org/ontology/Building

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

最佳答案

简而言之,IRI没有名称。

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

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

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

08-25 21:04