2

Java と Jena API を使用しています。「hasHusband」、「Haswife」、「dateOfMarriage」という 3 つのオブジェクト プロパティを持つクラス Marriage があります。最初の 2 つは、名、姓、生年月日などのデータ型プロパティを持つクラス Person に関連付けられています。

妻の名前と夫の名前を取得したいと思います。どうすればこれができるか説明していただけますか?

私のrdfファイルの関連部分は次のとおりです。

(...)

<j.0:FAMmariage rdf:about=http://www.fam.com/FAM#BrunoCatherine> 

 <j.0:FAMaDateMariage>25/07/2011</j.0:FAMaDateMariage>

 <j.0:FAMhasWife>
    <rdf:Description rdf:about="http://www.fam.com/FAM#Catherine20/03/1982">
    <j.0:FAMDateOfBirth>20/03/1980</j.0:FAMDateOfBirth>
    <j.0:FAMHasName>Gomez</j.0:FAMHasName>
    <j.0:FAMHasFirstName>Catherine</j.0:FAMHasFirstName>
  </rdf:Description>
 </j.0:FAMHasWife>

 <j.0:FAMHusband>
  <rdf:Description rdf:about="http://www.fam.com/FAM# Bruno15/06/1980 ">
    <j.0:FAMaDateOfBirth>15/06/1980 </j.0:FAMDateOfBirth>
    <j.0:FAMHasName>Jeandet </j.0:FAMHasName>
    <j.0:FAMHasFirstName>Bruno</j.0:FAMHasFirstName>
  </rdf:Description>
 </j.0:FAMHusband>

</j.0:FAMmariage>
(...)

ありがとう

EDITED 以下のコードを使用して、hasWife オブジェクト プロパティを取得できます。firstName データ型プロパティを取得するには何を追加すればよいですか?

//Object Property hasWife

     StmtIterator iter = onto.model.listStatements(null,onto.hasWife,(RDFNode)null);  

     while (iter.hasNext()) 
     {
        Statement stmt = iter.nextStatement();  
        System.out.println(stmt.getObject().toString());                          
     }
4

1 に答える 1

2

これがSPARQLの目的です。Jena の SPARQL チュートリアルをご覧ください。

別の方法として、モデルのクエリで説明されているように、プログラムでモデルを検索することもできます。たとえば、listStatements(Subject, Predicate, Object)where を使用して、どのパラメーターを指定するかを決定できますnull

あなたの場合、結果の対応するオブジェクトを使用listStatements(null, hasWifeProperty, null)listStatements(null, hasHusbandProperty, null)てアクセスできます。

于 2012-08-29T18:19:10.077 に答える