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

How to write a Jena QuerySolution result to RDF/XML file?

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

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

SELECT 查询 return 个 table 的解决方案。您是 运行 一个 SELECT 查询。

CONSTRUCT 查询根据解决方案创建新的 RDF 图。

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

因此您可以将查询更改为 CONSTRUCT 查询并使用适当的 API 来执行它们(execConstruct() return 是模型而不是 ResultSet),或者使用 ResultSetFormatter 编写整个解决方案 table(不是您尝试做的 table 的每一行)到为此目的而存在的一种格式:JSON、CSV、TSV、XML.