View Javadoc

1   /*
2    * Copyright James Leigh (c) 2007.
3    *
4    * Licensed under the Aduna BSD-style license.
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   * Converts a Query Object into a N3 formatted statements.
20   * 
21   * @author James Leigh
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  }