【发布时间】:2011-09-22 23:19:07
【问题描述】:
我想将dbpedia 电影的所有三元组保存在 N-Triple 文件(.nt 文件)中,我使用 java 应用程序在 dbpedia 端点上进行查询并将结果保存在文件中,但我无法读取这个文件并从中获取查询!你能帮帮我吗?
//我保存结果的代码在这里
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)
....
【问题讨论】:
-
你确定这就是你的全部代码吗?该代码看起来您没有做任何可能导致该错误跟踪的事情,那么您是否省略了其他代码?错误跟踪似乎是指读取文件时出现问题,但您的代码与写入文件有关,这对我来说似乎很奇怪
-
虽然你关闭了
BufferedWriter,但你还没有关闭FileStream,所以我会确保它也被关闭,看看是否有什么不同 -
不,这不是我的全部代码,而是其中的一部分!当我想从我的输出文件(这里它的名称是 dbpediafilmdataset)中获取查询时,这些错误是相关的!有没有办法将 sparql 查询保存在 rdf 文件中?