2016-05-26 8 views
0

Jenaフレームワークを使用してこのクエリの結果を2Dストリングリストに追加する方法を探しています。SPARQL:すべての述語とそのオブジェクトを取得し、リストに整理する

sparqlQueryString=" 
    select distinct ?p ?o where 
     { 
     <http://dbpedia.org/resource/NVA_(film)> ?p ?o 
     } 
    "; 

最初の行にはプロパティが含まれ、2番目にそれぞれのインスタンスが含まれます。問題は、プロパティが多くのインスタンスを持つ可能性があることです。

List<List<String>> results= new ArrayList<List<String>>(); 
    query = QueryFactory.create(sparqlQueryString); 
    qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query); 
    s = qexec.execSelect(); 
    res = ResultSetFactory.copyResults(s); 
    while(res.hasNext()) 
      { 
       QuerySolution so = res.nextSolution(); 
       results.add(so.getResource("p").toString()); 
       // The part I am looking for to add instance 

      } 


    // the results expected 
    results.get(0) = http://www.w3.org/1999/02/22-rdf-syntax-ns#type 
    results.get(0).get(0) =  http://dbpedia.org/class/yago/2005Films 
    results.get(0).get(1) =  http://www.w3.org/2002/07/owl#Thing 
    results.get(0).get(2) =  http://dbpedia.org/ontology/Work 
+2

サーバー側のソリューション:SPARQL 1.1の機能GROUP_CONCAT(例についてはW3Cの推奨を参照してください)。クライアント側のソリューション:Javaの基本。 – AKSW

+1

あなたの期待した結果は理にかなっていません。 .get(0)はプロパティを返し、.get(0).get(0)はオブジェクトの値を返します。しかし、最初のget(0)はオブジェクト値のリストではなくプロパティを返しました。 –

+1

価値があることについては、Map >を使用してプロパティの値を取得することをお勧めします。 –

答えて

0

@AKSW:サーバー側のソリューション:SPARQL 1.1の機能GROUP_CONCAT(例についてはW3Cの推奨を参照してください)。クライアント側のソリューション:Javaの基本。