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.StringReader;
9   
10  import org.openrdf.query.MalformedQueryException;
11  import org.openrdf.query.parser.QueryParser;
12  import org.openrdf.query.parser.ParsedQuery;
13  import org.openrdf.rio.RDFFormat;
14  import org.openrdf.rio.RDFHandlerException;
15  import org.openrdf.rio.RDFParser;
16  import org.openrdf.rio.Rio;
17  
18  /**
19   * Parses SeRQO N3 statements into a Query Object.
20   * 
21   * @author James Leigh
22   *
23   */
24  public class SeRQOParser implements QueryParser {
25  
26  	private RDFFormat format = RDFFormat.TURTLE;
27  
28  	public ParsedQuery parseQuery(String queryStr, String baseURI) throws MalformedQueryException {
29  		try {
30  			RDFParser parser = Rio.createParser(format);
31  			SeRQOHandler handler = new SeRQOHandler();
32  			parser.setPreserveBNodeIDs(true);
33  			parser.setRDFHandler(handler);
34  			parser.parse(new StringReader(queryStr), "");
35  			return handler.getQuery();
36  		} catch (RuntimeException e) {
37  			throw e;
38  		} catch (RDFHandlerException e) {
39  			try {
40  				if (e.getCause() != null)
41  					throw e.getCause();
42  			} catch (MalformedQueryException e1) {
43  				throw e1;
44  			} catch (Exception e1) {
45  				throw new MalformedQueryException(e1);
46  			} catch (Throwable e1) {
47  			}
48  			throw new MalformedQueryException(e);
49  		} catch (Exception e) {
50  			throw new MalformedQueryException(e);
51  		}
52  	}
53  }