1
2
3
4
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
20
21
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 }