如何将Jena QuerySolution结果写入RDF / XML文件?

时间:2019-03-27 21:49:26

标签: java sparql jena

我需要将.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(); 
}

1 个答案:

答案 0 :(得分:1)

SPARQL支持两种主要的查询:SELECT查询和CONSTRUCT查询。

SELECT查询返回解决方案表。您正在运行SELECT查询。

CONSTRUCT查询从解决方案中创建一个新的RDF图。

Turtle和RDF / XML是RDF图的格式。它们不是解决方案表的格式。因此,您只能将CONSTRUCT查询的结果写入这些格式。

因此,您可以将查询更改为CONSTRUCT查询,并使用适当的API来执行它们(execConstruct()返回Model而不是ResultSet),或者使用ResultSetFormatter编写整个解决方案表(而不是表的每一行)表格),以达到该目的存在的一种格式:JSON,CSV,TSV,XML。