I am trying to pretty print the results I get from a SPARQL query in RDF4J. Is there a method or class, inside RDF4J that offers this functionality? I am not asking for other 3rd party software or additional source code (there is already a question for that with many good answers).
1 Answers
There's no real "pretty printer" for query results in Rdf4j but I guess the closest is either the CSV (comma-separated-values) or TSV (tab-separated-values) writers. The Rdf4j Workbench offers these formats as options for exporting a query result. If you want to use them for programmatic execution of a query, you'd do something along these lines:
// write TSV result to STDOUT (to write to file, use a FileoutputStream instead)
SPARQLResultsTSVWriter writer = new SPARQLResultsTSVWriter(System.out);
try (RepositoryConnection conn = rep.getConnection()) {
String query = "SELECT ... ";
// execute the query and stream the result to the supplied writer
conn.prepareTupleQuery(query).evaluate(writer);
}
If you need something prettier than that, you could write your own custom query result handler, and use it in place of the SPARQLResultsTSVWriter
. To do this, create a new class that extends AbstractQueryResultWriter, and override any of the methods in there that need customization (in particular, handleNamespace
, handleSolution
, startQueryResult
and endQueryResult
). Or you could log a feature request for such a class to be added to Rdf4j (or even better: write it yourself then contribute to the project :))

- 21,642
- 4
- 51
- 73