将 SPARQL 的结果写入 java 中的文件

write result of SPARQL to file in java

我在 java 中使用 fuseki 服务器作为嵌入式服务器,我使用以下代码获得 SPARQL 结果:

public static void execSelectAndPrint(FileWriter fw, String serviceURI, String query) throws IOException {
    QueryExecution q = QueryExecutionFactory.sparqlService(serviceURI,query);
    ResultSet results = q.execSelect();
    ResultSetFormatter.outputAsCSV(System.out, results);
    while (results.hasNext()) {
        QuerySolution soln = results.nextSolution();
        RDFNode x = soln.get("x");
        System.out.println(x);
        fw.append(x.toString());        
    }
    fw.close();
}

它正确地将结果打印到控制台,但它可以写入文件。我想将 SPARQL 查询的结果写入 csv 文件。

Java Writers 会产生字符转换问题,这就是 API 更喜欢 OutputStream 的原因,因此使用 FileOutputStream 会起作用。

否则,使用ByteArrayOutputStream输出为字节,转换为字符串并写入字符串。

但要注意字符集。大多数 SPARQL 相关格式都是 UTF-8,而不是平台本机字符集。