无法获取Dbpedia类的名称

时间:2017-10-16 15:07:13

标签: 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而不是{ {1}}我得到了IRI。我只需要课程的名称,我不明白为什么我不能得到它,我将不胜感激 如果你能帮我搞定。谢谢

Ps:我注意到类没有你在Building和Book类中看到的所有相同的IRI,这可能是问题的根源吗?

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

通过代码预订IRI http://schema.org/Book

1 个答案:

答案 0 :(得分:1)

简而言之,IRI没有名字。

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

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

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