1

現在、私はオントロジーベースの情報検索に関するプロジェクトを行っています。オントロジーエディタ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>

したがって、Bethを検索すると、それに関連するコメントを取得する必要があります。つまり、BethはAdamの娘です。彼女はチャックの姉妹です。彼女はドッティ&エドワードの母です。彼女はFran&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();
        ...
    }
4

1 に答える 1

2

rdfs:comment、取得する述語の1つとして存在する必要があります(toString偶然に依存しないようにアドバイスされているのは、次のようになりますhttp://www.w3.org/2000/01/rdf-schema#comment)。そこにない場合は、コードが表示されているものではないか、データが引用されているものではありません。あなたが参照しているオントロジーが見つからなかったので、それをチェックする方法がありません。

やりたいことを行う簡単な方法は、JenaオントロジーAPIを使用することです。オントロジーAPIを使用すると、次のようなことができます(このコードは実行していませんが、機能するはずです)。

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();
于 2012-11-06T11:05:19.983 に答える