我需要将.ttl QuerySolution结果导出/写入RDF / XML文件。
我已经尝试过下面的代码,但是遇到RDFDataMgr.write
时出现以下错误:
The method write(OutputStream, Model, Lang) in the type RDFDataMgr is not applicable for the arguments (OutputStream, QuerySolution, Lang)
Query query = QueryFactory.create(queryString);
QueryExecution qexec= QueryExecutionFactory.create(query, model2);
try {
ResultSet resultat= qexec.execSelect();
while (resultat.hasNext()) {
QuerySolution sol=resultat.nextSolution();
String outfile = "/auto_home/rdftest/outfile.rdf";
OutputStream out = new FileOutputStream(outfile);
RDFDataMgr.write(out, sol, Lang.RDFXML);
}
} finally {
qexec.close();
}
答案 0 :(得分:1)
SPARQL支持两种主要的查询:SELECT查询和CONSTRUCT查询。
SELECT查询返回解决方案表。您正在运行SELECT查询。
CONSTRUCT查询从解决方案中创建一个新的RDF图。
Turtle和RDF / XML是RDF图的格式。它们不是解决方案表的格式。因此,您只能将CONSTRUCT查询的结果写入这些格式。
因此,您可以将查询更改为CONSTRUCT查询,并使用适当的API来执行它们(execConstruct()返回Model而不是ResultSet),或者使用ResultSetFormatter编写整个解决方案表(而不是表的每一行)表格),以达到该目的存在的一种格式:JSON,CSV,TSV,XML。