如何使用Jena API从owl文件中检索注释?

时间:2012-11-06 09:46:45

标签: rdf jena ontology owl protege

目前我正在开展基于Ontology的信息检索项目。我已经使用本体编辑器创建了基本本体,Protege并获得了文件,比如family.owl。基本上我想执行搜索功能。用户提供搜索词,然后与本体中的个人一起搜索。如果找到匹配,则打印与该个人相关联的评论。我使用Jena API来解析本体。到目前为止,我成功获得与每个资源相关的主题,谓词和对象,但我无法获得评论与每个资源相关联。 family.owl的一部分看起来像这样

<!-- http://www.semanticweb.org/ontologies/2012/9/family.owl#Beth -->
<owl:Thing rdf:about="#Beth">
    <rdfs:comment>Beth is the Daughter of Adam . She is the Sister of Chuck .  
     She is the Mother of Dotty & Edward . She is the Aunt of Fran & Greg.
    </rdfs:comment>
    <isChildOf rdf:resource="#Adam"/>
    <isSiblingOf rdf:resource="#Chuck"/>
</owl:Thing>

所以当我寻找贝丝时,我应该得到与之相关的评论,即贝斯是亚当的女​​儿。她是Chuck的妹妹。她是Dotty&amp;的母亲。爱德华。她是Fran&amp;的姨妈。 Greg。我用来获取主题,谓词和对象的代码如下

    StmtIterator iter=model.listStatements();          
    while(iter.hasNext())
    {
        Statement stmt=iter.nextStatement();
        String subject=stmt.getSubject().toString;                             
        String predicate=stmt.getPredicate().toString();            
        String object=stmt.getObject().toString();
        ...
    }

1 个答案:

答案 0 :(得分:2)

rdfs:comment应作为您获得的谓词之一(其toString,建议您不要依赖,http://www.w3.org/2000/01/rdf-schema#comment)。OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM ); FileManager.get().readModel( m, "... your input file here ..." ); String NS = "http://www.semanticweb.org/ontologies/2012/9/family.owl#"; Individual beth = m.getIndividual( NS + "Beth" ); String comment = beth.getComment(); 。如果它不在那里,那么你的代码不是你向我们展示的,或者数据不是你引用的。由于我找不到你提到的本体,我们无法检查它。

更简单的方法就是使用Jena ontology API。使用本体API,你可以做这样的事情(我没有运行这个代码,但它应该工作):

{{1}}