1
2
3
4
5
6 package org.openrdf.query.parser.serqo;
7
8 import java.io.StringWriter;
9 import java.io.Writer;
10
11 import org.openrdf.query.parser.ParsedGraphQuery;
12 import org.openrdf.query.parser.ParsedQuery;
13 import org.openrdf.query.parser.ParsedTupleQuery;
14 import org.openrdf.rio.RDFFormat;
15 import org.openrdf.rio.RDFWriter;
16 import org.openrdf.rio.Rio;
17
18
19
20
21
22
23
24 public class SeRQOFormatter {
25
26 private RDFFormat format = RDFFormat.TURTLE;
27
28 public String formatQuery(ParsedQuery query) {
29 if (query instanceof ParsedTupleQuery)
30 return formatTupleQuery((ParsedTupleQuery) query);
31 if (query instanceof ParsedGraphQuery)
32 return formatGraphQuery((ParsedGraphQuery) query);
33 throw new IllegalArgumentException("Unexpected query type: " + query.getClass());
34 }
35
36 public String formatTupleQuery(ParsedTupleQuery query) {
37 StringWriter writer = new StringWriter();
38 SeRQOBuilder builder = createBuilder(writer);
39 builder.handleTupleQuery(query);
40 return writer.toString();
41 }
42
43 public String formatGraphQuery(ParsedGraphQuery query) {
44 StringWriter writer = new StringWriter();
45 SeRQOBuilder builder = createBuilder(writer);
46 builder.handleGraphQuery(query);
47 return writer.toString();
48 }
49
50 private SeRQOBuilder createBuilder(Writer writer) {
51 SeRQOBuilder builder = new SeRQOBuilder();
52 RDFWriter rdf = Rio.createWriter(format, writer);
53 builder.setRDFHandler(rdf);
54 return builder;
55 }
56
57 }