2011-06-26 14 views
1

dbpediaのすべてのトリプルをN-Tripleファイル(.ntファイル)に保存したい場合は、javaアプリケーションを使用してdbpediaエンドポイントでクエリを実行して保存します結果はファイルにありますが、このファイルを読み込むことはできず、そこからクエリを取得することはできません。私を助けることができますか?.ntファイルにsparqlクエリの結果を保存するには

//結果を保存するための私のコードは、私は結果ファイルを読み込み、そこからの問合せをしたいとき、それはこれらのようないくつかのエラーを与えるここ

try{ 
      FileWriter fostream = new FileWriter("C:\\Documents and Settings\\me\\Desktop\\DataSets\\dbpediafilmdataset.nt"); 
      BufferedWriter out = new BufferedWriter(fostream); 
      String service ="http://dbpedia.org/sparql"; 

      String query = 
      "SELECT ?s ?p ?o " + 
      "WHERE {" + 
      " ?s <http://dbpedia.org/property/wordnet_type> <http://www.w3.org/2006/03/wn/wn20/instances/synset-movie-noun-1> ; ?p ?o "+ 
      "  } "; 

      QueryExecution qexecctest = QueryExecutionFactory.sparqlService(service, query); 

      try { 
      ResultSet responseetest = qexecctest.execSelect(); 

      while(responseetest.hasNext()){ 
       QuerySolution solnntest = responseetest.nextSolution(); 
       RDFNode p = solnntest.get("?p"); 
       RDFNode o = solnntest.get("?o"); 
       RDFNode s = solnntest.get("?s"); 
       String object=""; 
       String triple=""; 
       if (o.isLiteral()==true) 
       { 
        object="\"" + o.toString() + "\""; 
       } 
       else 
       object="<" + o.toString() + ">"; 

       triple="<" + s + ">"+" " + "<" + p + ">" + " " + object + " " + "." ; 

       out.write(triple); 
       out.newLine(); 

       } 
      } finally { 
      qexecctest.close(); 
      out.close();} 

      }catch (Exception e){ 
       System.err.println("Error: " + e.getMessage());} 

です:

com.hp.hpl.jena.rdf.model.impl.IStream.readChar(NTripleReader.java:485) 
com.hp.hpl.jena.rdf.model.impl.NTripleReader.unwrappedReadRDF(NTripleReader.java:140) 
com.hp.hpl.jena.rdf.model.impl.NTripleReader.readRDF(NTripleReader.java:120) 
com.hp.hpl.jena.rdf.model.impl.NTripleReader.read(NTripleReader.java:84) 
com.hp.hpl.jena.rdf.model.impl.NTripleReader.read(NTripleReader.java:72) 
com.hp.hpl.jena.rdf.model.impl.ModelCom.read(ModelCom.java:226) 
com.hp.hpl.jena.util.FileManager.readModelWorker(FileManager.java:395) 
com.hp.hpl.jena.util.FileManager.readModel(FileManager.java:335) 
com.hp.hpl.jena.util.FileManager.readModel(FileManager.java:319) 
.... 
+0

あなたはそれがすべてのコードであることを確認していますか?コードはあなたがそのエラートレースを引き起こす可能性のある何かをしたようには見えないので、省略した他のコードはありますか?エラートレースはファイルの読み込みに問題があるようですが、あなたのコードは私には奇妙なファイルへの書き込みに関係しています – RobV

+0

また 'BufferedWriter'をクローズしても' FileStream'を閉じなかったので、それも閉鎖され、それが何か違いがあるかどうかを確認してください – RobV

+0

いいえ、それは私のコードではありません、それはその一部です!これらのエラーは、出力ファイル(ここでは名前はdbpediafilmdatasetです)からクエリを取得したいときに関係します。 sparqlクエリをrdfファイルに保存する方法はありますか? – Sareh

答えて

3

それCONSTRUCTクエリでこれを行う方が良いです。それを見て、それはこの目的のために特に設計されています。主な利点は、あなたが、イエナはそれを行うだろうタートルや他の形式のトリプルを書くことについて心配する必要がないということです

Model results = qexec.execConstruct(); 
results.write(out, "TURTLE"); 

またhere

説明しますイエナでちょうど何かのように行いますあなたのために。あなたのCONSTRUCTクエリがように見える終わるかもしれない

CONSTRUCT { ?s ?p ?o } 
WHERE { 
    ?s <http://dbpedia.org/property/wordnet_type>   
     <http://www.w3.org/2006/03/wn/wn20/instances/synset-movie-noun-1> ; 
     ?p ?o 
} 
関連する問題