This is an automated email from the ASF dual-hosted git repository.

hasan pushed a commit to branch reunited
in repository https://gitbox.apache.org/repos/asf/clerezza.git

commit 5bffbb5a194c37bd6a21efbd0736fa72bf1c34b6
Author: Hasan <[email protected]>
AuthorDate: Wed Nov 14 04:20:17 2018 +0100

    CLEREZZA-1026: Remove sparql parser generator in rdf.core
---
 .../rdf/core/sparql/JavaCCGeneratedQueryParser.jj  | 1284 ----------
 .../core/sparql/JavaCCGeneratedSparqlPreParser.jj  | 2556 --------------------
 2 files changed, 3840 deletions(-)

diff --git 
a/rdf/core/src/main/javacc/org/apache/clerezza/rdf/core/sparql/JavaCCGeneratedQueryParser.jj
 
b/rdf/core/src/main/javacc/org/apache/clerezza/rdf/core/sparql/JavaCCGeneratedQueryParser.jj
deleted file mode 100644
index c41426e..0000000
--- 
a/rdf/core/src/main/javacc/org/apache/clerezza/rdf/core/sparql/JavaCCGeneratedQueryParser.jj
+++ /dev/null
@@ -1,1284 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-options
-{
-   STATIC=false;
-   SUPPORT_CLASS_VISIBILITY_PUBLIC=false;
-   UNICODE_INPUT=true;
-   IGNORE_CASE=false;
-   JAVA_UNICODE_ESCAPE=false;
-   DEBUG_PARSER=false;
-   JDK_VERSION="1.6";
-}
-
-PARSER_BEGIN(JavaCCGeneratedQueryParser)
-
-package org.apache.clerezza.rdf.core.sparql;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import org.apache.clerezza.commons.rdf.BlankNode;
-import org.apache.clerezza.commons.rdf.Language;
-import org.apache.clerezza.commons.rdf.Literal;
-import org.apache.clerezza.commons.rdf.RDFTerm;
-import org.apache.clerezza.commons.rdf.IRI;
-import org.apache.clerezza.rdf.core.LiteralFactory;
-import org.apache.clerezza.commons.rdf.impl.utils.PlainLiteralImpl;
-import org.apache.clerezza.commons.rdf.impl.utils.TypedLiteralImpl;
-import org.apache.clerezza.rdf.core.sparql.query.GroupGraphPattern;
-import org.apache.clerezza.rdf.core.sparql.query.BinaryOperation;
-import org.apache.clerezza.rdf.core.sparql.query.Variable;
-import org.apache.clerezza.rdf.core.sparql.query.ResourceOrVariable;
-import org.apache.clerezza.rdf.core.sparql.query.UriRefOrVariable;
-import org.apache.clerezza.rdf.core.sparql.query.FunctionCall;
-import org.apache.clerezza.rdf.core.sparql.query.TriplePattern;
-import org.apache.clerezza.rdf.core.sparql.query.Query;
-import org.apache.clerezza.rdf.core.sparql.query.LiteralExpression;
-import org.apache.clerezza.rdf.core.sparql.query.AlternativeGraphPattern;
-import org.apache.clerezza.rdf.core.sparql.query.BuiltInCall;
-import org.apache.clerezza.rdf.core.sparql.query.Expression;
-import org.apache.clerezza.rdf.core.sparql.query.UriRefExpression;
-import org.apache.clerezza.rdf.core.sparql.query.UnaryOperation;
-import 
org.apache.clerezza.rdf.core.sparql.query.impl.SimpleAlternativeGraphPattern;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleAskQuery;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleConstructQuery;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleDescribeQuery;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleGraphGraphPattern;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleGroupGraphPattern;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleOrderCondition;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleQuery;
-import 
org.apache.clerezza.rdf.core.sparql.query.impl.SimpleQueryWithSolutionModifier;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleSelectQuery;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleTriplePattern;
-
-/**
- *
- * Credits: Fedora Commons, Inc.
- *            - for initial grammar of this file (available in mulgara 
project).
- * Modified by: Hasan <[email protected]>
- */
-class JavaCCGeneratedQueryParser {
-
-       private static final IRI RDF_TYPE =
-               new IRI("http://www.w3.org/1999/02/22-rdf-syntax-ns#type";);
-       private static final IRI RDF_FIRST =
-               new IRI("http://www.w3.org/1999/02/22-rdf-syntax-ns#first";);
-       private static final IRI RDF_REST =
-               new IRI("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest";);
-       private static final IRI RDF_NIL =
-               new IRI("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil";);
-
-       /** A RegEx pattern for separating out a namespace from a prefixed 
name. */
-       private static final Pattern pfxNamePattern = 
Pattern.compile("([^:]*):(.*)");
-
-       private Query query;
-       private String base;
-       private Map<String, String> prefixes;
-       private Map<String, ResourceOrVariable> bNodes;
-       private int count;
-       private Map<String, Variable> vars;
-
-       void initialize() {
-               query = null;
-               base = null;
-               prefixes = new HashMap<String, String>();
-               bNodes = new HashMap<String, ResourceOrVariable>();
-               count = 0;
-               vars = new HashMap<String, Variable>();
-       }
-
-       Query parse() throws ParseException {
-               initialize();
-               this.Query();
-               return this.query;
-       }
-
-       private static String unquote(String s) {
-               return s.substring(1, s.length() - 1);
-       }
-
-       private static String unTripleQuote(String s) {
-               return s.substring(3, s.length() - 3);
-       }
-
-       private Variable getVariable(String name) {
-               name = name.substring(1);
-               Variable v = vars.get(name);
-               if (v == null) {
-                       v = new Variable(name);
-                       vars.put(name, v);
-                       if (query instanceof SimpleSelectQuery) {
-                               SimpleSelectQuery sq = (SimpleSelectQuery) 
query;
-                               if (sq.isSelectAll()) {
-                                       sq.addSelection(v);
-                               }
-                       } else if (query instanceof SimpleDescribeQuery) {
-                               SimpleDescribeQuery dq = (SimpleDescribeQuery) 
query;
-                               if (dq.isDescribeAll()) {
-                                       dq.addResourceToDescribe(new 
ResourceOrVariable(v));
-                               }
-                       }
-               }
-               return v;
-       }
-
-       private void addTriplePatterns(Set<TriplePattern> triplePatterns,
-                       ResourceOrVariable subject,
-                       UriRefOrVariable predicate,
-                       Set<ResourceOrVariable> objects) {
-
-               for (ResourceOrVariable object : objects) {
-                       triplePatterns.add(
-                               new SimpleTriplePattern(subject, predicate, 
object));
-               }
-       }
-
-       // nodes contain at least one element
-       private ResourceOrVariable addTriplePatterns(
-                       Set<TriplePattern> triplePatterns,
-                       List<ResourceOrVariable> nodes) {
-
-               ResourceOrVariable head = null;
-               UriRefOrVariable rdfFirst = new UriRefOrVariable(RDF_FIRST);
-               UriRefOrVariable rdfRest = new UriRefOrVariable(RDF_REST);
-               UriRefOrVariable rdfNil = new UriRefOrVariable(RDF_NIL);
-
-               ResourceOrVariable prevSubject = null;
-               for (ResourceOrVariable node : nodes) {
-                       ResourceOrVariable currentSubject = getNewBNode();
-                       if (prevSubject != null) {
-                               triplePatterns.add(
-                                       new SimpleTriplePattern(prevSubject, 
rdfRest, currentSubject));
-                       } else {
-                               head = currentSubject;
-                       }
-                       triplePatterns.add(
-                               new SimpleTriplePattern(currentSubject, 
rdfFirst, node));
-                       prevSubject = currentSubject;
-               }
-               if (prevSubject != null) {
-                       triplePatterns.add(
-                               new SimpleTriplePattern(prevSubject, rdfRest, 
rdfNil));
-               }
-               return head;
-       }
-
-       private ResourceOrVariable getNewBNode() {
-               ResourceOrVariable bNode = new ResourceOrVariable(new 
BlankNode());
-               bNodes.put("*" + count++, bNode);
-               return bNode;
-       }
-
-       private ResourceOrVariable getBNode(String label) {
-               ResourceOrVariable bNode = bNodes.get(label);
-               if (bNode == null) {
-                       bNode = new ResourceOrVariable(new BlankNode());
-                       bNodes.put(label, bNode);
-               }
-               return bNode;
-       }
-
-       private IRI createUriRef(String r) throws ParseException {
-               // Create an IRI directly if the string does not start with a 
prefix
-               Matcher m = pfxNamePattern.matcher(r);
-               if (!m.matches()) {
-                       // either a normal IRI, or one with a BASE
-                       return isRelative(r) ? new IRI(base + r) : new IRI(r);
-               }
-               // extract the prefix, and attempt to convert to a URI before 
creating the reference
-               String ns = prefixes.get(m.group(1));
-               return ns == null ? new IRI(r) : new IRI(ns + m.group(2));
-       }
-
-       /**
-        * Tests if the string for a URI is relative or absolute. The test is 
based on a scheme existing
-        * in the string, which in turn expects a : character to follow it. If 
there is no colon, then
-        * it is presumed to be relative. Otherwise, if there are special 
characters preceding the first
-        * colon these are presumed to not be in a scheme.
-        * @param u A string for a URI.
-        * @return <code>true</code> if the URI appears to be relative, 
<code>false</code> otherwise.
-        */
-       private static boolean isRelative(String u) {
-               int colon = u.indexOf(':');
-               if (colon < 0) {
-                       return true;
-               }
-               for (int c = 0; c < colon; c++) {
-                       // if there a non-alphanum characters then this is not 
a scheme, so the URI is relative
-                       if (!Character.isLetterOrDigit(u.charAt(c))) {
-                               return true;
-                       }
-               }
-               // found a (probably) valid scheme, so the URI is absolute
-               return false;
-       }
-}
-PARSER_END(JavaCCGeneratedQueryParser)
-
-SKIP :
-{
-    "\t" | "\n" | "\r" | "\f" | " "
-}
-
-MORE :
-{
-    "#" : IN_COMMENT
-}
-
-<IN_COMMENT>
-SPECIAL_TOKEN :
-{
-  <COMMENT: ( ~[ "\r","\n" ] )* > : DEFAULT
-}
-
-TOKEN [IGNORE_CASE] :
-{
-    < SELECT : "SELECT" >
-|   < BASE : "BASE" >
-|   < ORDER : "ORDER" >
-|   < BY : "BY" >
-|   < FROM : "FROM" >
-|   < GRAPH : "GRAPH" >
-|   < STR : "STR" >
-|   < IS_URI : "isURI" >
-|   < PREFIX : "PREFIX" >
-|   < CONSTRUCT : "CONSTRUCT" >
-|   < LIMIT : "LIMIT" >
-|   < NAMED : "NAMED" >
-|   < OPTIONAL : "OPTIONAL" >
-|   < LANG : "lang" >
-|   < IS_IRI : "isIRI" >
-|   < DESCRIBE : "DESCRIBE" >
-|   < OFFSET : "OFFSET" >
-|   < WHERE : "WHERE" >
-|   < UNION : "UNION" >
-|   < LANGMATCHES : "langMatches" >
-|   < IS_BLANK : "isBlank" >
-|   < IS_LITERAL : "isLiteral" >
-|   < ASK : "ASK" >
-|   < DISTINCT : "DISTINCT" >
-|   < FILTER : "FILTER" >
-|   < DATATYPE : "datatype" >
-|   < REGEX : "regex" >
-|   < REDUCED : "REDUCED" >
-|   < BOUND : "bound" >
-|   < TRUE : "TRUE" >
-|   < SAME_TERM : "sameTerm" >
-|   < FALSE : "FALSE" >
-}
-
-
-/* [1]      Query      ::=      Prologue ( SelectQuery | ConstructQuery | 
DescribeQuery | AskQuery ) */
-private void Query() : {} {
-       Prologue() ( SelectQuery() | ConstructQuery() | DescribeQuery() | 
AskQuery() ) <EOF>
-}
-
-/* [2]      Prologue      ::=      BaseDecl? PrefixDecl* */
-private void Prologue() : {} {
-       ( BaseDecl() )? ( PrefixDecl() )*
-}
-
-/* [3]      BaseDecl      ::=      'BASE' IRI_REF */
-private void BaseDecl() : {
-       Token iriRef; } {
-
-       <BASE> iriRef=<IRI_REF> { base = unquote(iriRef.image); }
-}
-
-/* [4]      PrefixDecl      ::=      'PREFIX' PNAME_NS IRI_REF */
-private void PrefixDecl() : {
-       Token ns, iriRef; } {
-
-       <PREFIX> ns=<PNAME_NS> iriRef=<IRI_REF> {
-       String pfx = ns.image;
-       prefixes.put(pfx.substring(0, pfx.length() - 1), 
unquote(iriRef.image)); }
-}
-
-/* [5]      SelectQuery   ::=   'SELECT' ( 'DISTINCT' | 'REDUCED' )? ( Var+ | 
'*' ) DatasetClause* WhereClause SolutionModifier */
-private void SelectQuery() : {
-       Variable v; } {
-
-       <SELECT> {
-       query = new SimpleSelectQuery(); }
-       (
-               <DISTINCT> {
-               ((SimpleSelectQuery) query).setDistinct(); }
-       |
-               <REDUCED> {
-               ((SimpleSelectQuery) query).setReduced(); }
-       )?
-       (
-               ( v=Var() {
-                       ((SimpleSelectQuery) query).addSelection(v); } )+
-               |
-               "*" {
-                       ((SimpleSelectQuery) query).setSelectAll(); }
-       )
-       ( DatasetClause() )*
-       WhereClause()
-       SolutionModifier()
-}
-
-/* [6]      ConstructQuery    ::=   'CONSTRUCT' ConstructTemplate 
DatasetClause* WhereClause SolutionModifier */
-private void ConstructQuery() : {
-       Set<TriplePattern> triplePatterns = null; } {
-
-       <CONSTRUCT>
-       triplePatterns=ConstructTemplate() {
-       query = new SimpleConstructQuery(triplePatterns); }
-       ( DatasetClause() )*
-       WhereClause()
-       SolutionModifier()
-}
-
-/* [7]      DescribeQuery      ::=      'DESCRIBE' ( VarOrIRIref+ | '*' ) 
DatasetClause* WhereClause? SolutionModifier */
-private void DescribeQuery() : {
-       UriRefOrVariable node; } {
-
-       <DESCRIBE> {
-       query = new SimpleDescribeQuery(); }
-       (
-               ( node=VarOrIRIref() {
-                       ((SimpleDescribeQuery) 
query).addResourceToDescribe(node); } )+
-               |
-               "*" {
-                       ((SimpleDescribeQuery) query).setDescribeAll(); }
-       )
-       ( DatasetClause() )*
-       ( WhereClause() )?
-       SolutionModifier()
-}
-
-/* [8]      AskQuery      ::=   'ASK' DatasetClause* WhereClause */
-private void AskQuery() : {} {
-       <ASK> {
-       query = new SimpleAskQuery(); }
-       ( DatasetClause() )*
-       WhereClause()
-}
-
-/* [9]   DatasetClause   ::=   'FROM' ( DefaultGraphClause | NamedGraphClause 
) */
-private void DatasetClause() : {} {
-       <FROM> (DefaultGraphClause() | NamedGraphClause())
-}
-
-/* [10]    DefaultGraphClause    ::=    SourceSelector */
-private void DefaultGraphClause() : {
-       IRI defaultGraph; } {
-
-       defaultGraph=SourceSelector() {
-       ((SimpleQuery) query).addDefaultGraph(defaultGraph); }
-}
-
-/* [11]    NamedGraphClause    ::=    'NAMED' SourceSelector */
-private void NamedGraphClause() : {
-       IRI namedGraph; } {
-
-       <NAMED> namedGraph=SourceSelector() {
-       ((SimpleQuery) query).addNamedGraph(namedGraph); }
-}
-
-/* [12]    SourceSelector    ::=    IRIref */
-private IRI SourceSelector() : {
-       IRI graph; } {
-
-       graph=IRIref() {
-       return graph; }
-}
-
-/* [13]    WhereClause    ::=    'WHERE'? GroupGraphPattern */
-private void WhereClause() : {
-       GroupGraphPattern queryPattern; } {
-
-       (<WHERE>)? queryPattern=GroupGraphPattern() {
-       ((SimpleQuery) query).setQueryPattern(queryPattern); }
-}
-
-/* [14]    SolutionModifier    ::=    OrderClause? LimitOffsetClauses? */
-private void SolutionModifier() : {} {
-       ( OrderClause() )?
-       ( LimitOffsetClauses() )?
-}
-
-/* [15]    LimitOffsetClauses    ::=    ( LimitClause OffsetClause? | 
OffsetClause LimitClause? ) */
-private void LimitOffsetClauses() : {} {
-       ( LimitClause() (OffsetClause())? )
-       |
-       ( OffsetClause() (LimitClause())? )
-}
-
-/* [16]    OrderClause    ::=    'ORDER' 'BY' OrderCondition+ */
-private void OrderClause() : {} {
-       <ORDER> <BY> ( OrderCondition() )+
-}
-
-/* [17]    OrderCondition    ::=     ( ( 'ASC' | 'DESC' ) BrackettedExpression 
) | ( Constraint | Var ) */
-private void OrderCondition() : {
-       boolean asc = true;
-       Expression e; } {
-
-       (
-               ( ( "ASC" | "DESC" { asc = false; } ) e=BrackettedExpression() )
-               |
-               ( e=Constraint() | e=Var() )
-       ) {
-       ((SimpleQueryWithSolutionModifier) query).addOrderCondition(new 
SimpleOrderCondition(e, asc)); }
-}
-
-/* [18]    LimitClause    ::=    'LIMIT' INTEGER */
-private void LimitClause() : {
-       Token t; } {
-
-       <LIMIT> t=<INTEGER> {
-       ((SimpleQueryWithSolutionModifier) 
query).setLimit(Integer.parseInt(t.image)); }
-}
-
-/* [19]    OffsetClause    ::=    'OFFSET' INTEGER */
-private void OffsetClause() : {
-       Token t; } {
-
-       <OFFSET> t=<INTEGER> {
-       ((SimpleQueryWithSolutionModifier) 
query).setOffset(Integer.parseInt(t.image)); }
-}
-
-/* [20]    GroupGraphPattern    ::=    '{' TriplesBlock? ( ( 
GraphPatternNotTriples | Filter ) '.'? TriplesBlock? )* '}' */
-private GroupGraphPattern GroupGraphPattern() : {
-       GroupGraphPattern groupGraphPattern = new SimpleGroupGraphPattern();
-       Expression constraint; } {
-
-       "{"
-       ( TriplesBlock(groupGraphPattern) )?
-       (
-               (
-               GraphPatternNotTriples(groupGraphPattern)
-               |
-               constraint=Filter() {
-               ((SimpleGroupGraphPattern) 
groupGraphPattern).addConstraint(constraint); }
-               )
-
-               (".")?
-
-               (
-               TriplesBlock(groupGraphPattern)
-               )?
-       )*
-       "}" {
-       return groupGraphPattern; }
-}
-
-/* [21]    TriplesBlock    ::=    TriplesSameSubject ( '.' TriplesBlock? )? */
-private void TriplesBlock(GroupGraphPattern groupGraphPattern) : {
-       Set<TriplePattern> triplePatterns; } {
-
-       triplePatterns=TriplesSameSubject() {
-       ((SimpleGroupGraphPattern) 
groupGraphPattern).addTriplePatterns(triplePatterns); }
-
-       ( "." (TriplesBlock(groupGraphPattern) )?
-       )?
-}
-
-/* [22]    GraphPatternNotTriples    ::=    OptionalGraphPattern | 
GroupOrUnionGraphPattern | GraphGraphPattern */
-private void GraphPatternNotTriples(GroupGraphPattern groupGraphPattern) : {} {
-
-       (
-       OptionalGraphPattern(groupGraphPattern)
-       |
-       GroupOrUnionGraphPattern(groupGraphPattern)
-       |
-       GraphGraphPattern(groupGraphPattern)
-       )
-}
-
-/* [23]    OptionalGraphPattern    ::=    'OPTIONAL' GroupGraphPattern */
-private void OptionalGraphPattern(GroupGraphPattern groupGraphPattern) : {
-       GroupGraphPattern optional; } {
-
-       <OPTIONAL>
-       optional=GroupGraphPattern() {
-       ((SimpleGroupGraphPattern) 
groupGraphPattern).addOptionalGraphPattern(optional); }
-}
-
-/* [24]    GraphGraphPattern    ::=    'GRAPH' VarOrIRIref GroupGraphPattern */
-private void GraphGraphPattern(GroupGraphPattern groupGraphPattern) : {
-       UriRefOrVariable graph;
-       GroupGraphPattern g; } {
-
-       <GRAPH>
-       graph=VarOrIRIref()
-       g=GroupGraphPattern() {
-       ((SimpleGroupGraphPattern) groupGraphPattern).addGraphPattern(
-               new SimpleGraphGraphPattern(graph, g)); }
-}
-
-/* [25]    GroupOrUnionGraphPattern    ::=    GroupGraphPattern ( 'UNION' 
GroupGraphPattern )* */
-private void GroupOrUnionGraphPattern(GroupGraphPattern groupGraphPattern) : {
-       GroupGraphPattern g;
-       AlternativeGraphPattern unionGraphPattern = null; } {
-
-       g=GroupGraphPattern()
-       (
-               <UNION> {
-               if (unionGraphPattern == null) {
-                       unionGraphPattern = new 
SimpleAlternativeGraphPattern(g);
-               } }
-               g=GroupGraphPattern() {
-               ((SimpleAlternativeGraphPattern) 
unionGraphPattern).addAlternativeGraphPattern(g); }
-       )* {
-       if (unionGraphPattern != null) {
-               ((SimpleGroupGraphPattern) 
groupGraphPattern).addGraphPattern(unionGraphPattern);
-       } else {
-               ((SimpleGroupGraphPattern) 
groupGraphPattern).addGraphPattern(g);
-       } }
-}
-
-/* [26]    Filter    ::=    'FILTER' Constraint */
-private Expression Filter() : {
-       Expression c; } {
-
-       <FILTER>
-       c=Constraint() {
-       return c; }
-}
-
-/* [27]    Constraint    ::=    BrackettedExpression | BuiltInCall | 
FunctionCall */
-private Expression Constraint() : {
-       Expression c; } {
-
-    ( c=BrackettedExpression() | c=BuiltInCall() | c=FunctionCall() ) {
-       return c; }
-}
-
-/* [28]    FunctionCall    ::=    IRIref ArgList */
-private FunctionCall FunctionCall() : {
-       IRI name;
-       List<Expression> arguments;} {
-
-       name=IRIref()
-       arguments=ArgList() {
-       return new FunctionCall(name, arguments); }
-}
-
-/* [29]    ArgList    ::=    ( NIL | '(' Expression ( ',' Expression )* ')' ) 
*/
-private List<Expression> ArgList() : {
-       List<Expression> args = new ArrayList<Expression>();
-       Expression e; } {
-
-       (
-               <NIL>
-               |
-               (
-                       "("
-                       e=Expression() {
-                       args.add(e); }
-                               ( ","
-                               e=Expression() {
-                               args.add(e); }
-                               )*
-                       ")"
-               )
-       ) {
-       return args; }
-}
-
-/* [30]    ConstructTemplate    ::=    '{' ConstructTriples? '}' */
-private Set<TriplePattern> ConstructTemplate() : {
-       Set<TriplePattern> triplePatterns = null; } {
-
-       "{" (
-       triplePatterns=ConstructTriples()
-       )? "}" {
-       return triplePatterns; }
-}
-
-/* [31]    ConstructTriples    ::=    TriplesSameSubject ( '.' 
ConstructTriples? )? */
-private Set<TriplePattern> ConstructTriples() : {
-       Set<TriplePattern> triplePatterns, t; } {
-
-       triplePatterns=TriplesSameSubject()
-       ( "."
-               (
-               t=ConstructTriples() {
-               triplePatterns.addAll(t); }
-               )?
-       )? {
-       return triplePatterns; }
-}
-
-/* [32]    TriplesSameSubject    ::=    VarOrTerm PropertyListNotEmpty |  
TriplesNode PropertyList */
-private Set<TriplePattern> TriplesSameSubject() : {
-       Set<TriplePattern> triplePatterns = new LinkedHashSet<TriplePattern>();
-       ResourceOrVariable subject; } {
-
-       ( subject=VarOrTerm() PropertyListNotEmpty(subject, triplePatterns) {
-               return triplePatterns; }
-       )
-       |
-       ( subject=TriplesNode(triplePatterns) PropertyList(subject, 
triplePatterns) {
-               return triplePatterns; }
-       )
-}
-
-/* [33]    PropertyListNotEmpty    ::=    Verb ObjectList ( ';' ( Verb 
ObjectList )? )* */
-private void PropertyListNotEmpty(ResourceOrVariable subject,
-               Set<TriplePattern> triplePatterns) : {
-       UriRefOrVariable predicate;
-       Set<ResourceOrVariable> objects; } {
-       predicate=Verb()
-       objects=ObjectList(triplePatterns) {
-       addTriplePatterns(triplePatterns, subject, predicate, objects); }
-
-       ( ";"
-               ( predicate=Verb() objects=ObjectList(triplePatterns) {
-                       addTriplePatterns(triplePatterns, subject, predicate, 
objects); }
-               )?
-       )*
-}
-
-/* [34]    PropertyList    ::=    PropertyListNotEmpty? */
-private void PropertyList(ResourceOrVariable subject,
-               Set<TriplePattern> triplePatterns) : { } {
-       ( PropertyListNotEmpty(subject, triplePatterns) )?
-}
-
-/* [35]    ObjectList    ::=    Object ( ',' Object )* */
-private Set<ResourceOrVariable> ObjectList(Set<TriplePattern> triplePatterns) 
: {
-       ResourceOrVariable object; } {
-
-       {
-       Set<ResourceOrVariable> objects = new 
LinkedHashSet<ResourceOrVariable>();
-       }
-       object=Object(triplePatterns) {
-       objects.add(object); }
-
-       ( ","
-               object=Object(triplePatterns) {
-                       objects.add(object); }
-       )* {
-       return objects; }
-}
-
-/* [36]    Object    ::=    GraphNode */
-private ResourceOrVariable Object(Set<TriplePattern> triplePatterns) : {
-       ResourceOrVariable object; } {
-
-       object=GraphNode(triplePatterns) {
-       return object; }
-}
-
-/* [37]    Verb    ::=    VarOrIRIref | 'a' */
-private UriRefOrVariable Verb() : {
-       UriRefOrVariable predicate; } {
-
-       predicate=VarOrIRIref() {
-       return predicate; }
-       | "a" {
-       return new UriRefOrVariable(RDF_TYPE); }
-}
-
-// Fill in the specified set of TriplePattern and returns the subject node
-/* [38]    TriplesNode    ::=    Collection |  BlankNodePropertyList */
-private ResourceOrVariable TriplesNode(Set<TriplePattern> triplePatterns) : {
-       ResourceOrVariable subject; } {
-       (
-               subject=Collection(triplePatterns)
-       |
-               subject=BlankNodePropertyList(triplePatterns)
-       ) {
-       return subject; }
-}
-
-/* [39]    BlankNodePropertyList    ::=    '[' PropertyListNotEmpty ']' */
-private ResourceOrVariable BlankNodePropertyList(Set<TriplePattern> 
triplePatterns) : { } {
-       {
-       ResourceOrVariable subject = getNewBNode();
-       }
-       "[" PropertyListNotEmpty(subject, triplePatterns) "]" {
-       return subject; }
-}
-
-/* [40]    Collection    ::=    '(' GraphNode+ ')' */
-private ResourceOrVariable Collection(Set<TriplePattern> triplePatterns) : {
-       ResourceOrVariable node;
-       List<ResourceOrVariable> nodes = new ArrayList<ResourceOrVariable>(); } 
{
-
-       "("
-               (
-               node=GraphNode(triplePatterns) {
-               nodes.add(node); }
-               )+
-       ")" {
-       return addTriplePatterns(triplePatterns, nodes); }
-}
-
-/* [41]    GraphNode    ::=    VarOrTerm |  TriplesNode */
-private ResourceOrVariable GraphNode(Set<TriplePattern> triplePatterns) : {
-       ResourceOrVariable node; } {
-
-       (
-       node=VarOrTerm()
-       |
-       node=TriplesNode(triplePatterns)
-       ) {
-       return node; }
-}
-
-/* [42]    VarOrTerm    ::=    Var | GraphTerm */
-private ResourceOrVariable VarOrTerm() : {
-       ResourceOrVariable r;
-       Variable v; } {
-
-    (
-       v=Var() {
-       return new ResourceOrVariable(v); }
-       |
-       r=GraphTerm() {
-       return r; }
-       )
-}
-
-/* [43]    VarOrIRIref    ::=    Var | IRIref */
-private UriRefOrVariable VarOrIRIref() : {
-       Variable var;
-       IRI IRI; } {
-
-       (
-       var=Var() {
-       return new UriRefOrVariable(var); }
-       |
-       IRI=IRIref() {
-       return new UriRefOrVariable(IRI); }
-       )
-}
-
-/* [44]    Var    ::=    VAR1 | VAR2 */
-private Variable Var() : {
-       Token t;} {
-
-       (t=<VAR1> | t=<VAR2>) {
-       return getVariable(t.image); }
-}
-
-/* [45]    GraphTerm    ::=    IRIref |  RDFLiteral |  NumericLiteral |  
BooleanLiteral |  BlankNode |  NIL */
-private ResourceOrVariable GraphTerm() : {
-       ResourceOrVariable bNode = null;
-       RDFTerm r = null; } {
-
-       (r=IRIref() | r=RDFLiteral() | r=NumericLiteral() | r=BooleanLiteral() 
| bNode=BlankNode() | <NIL> {
-               r = RDF_NIL; }) {
-       if (bNode == null) {
-               return new ResourceOrVariable(r);
-       }
-       return bNode; }
-}
-
-/* [46]    Expression    ::=    ConditionalOrExpression */
-private Expression Expression() : {
-       Expression e; } {
-
-       e=ConditionalOrExpression() {
-       return e; }
-}
-
-/* [47]    ConditionalOrExpression    ::=    ConditionalAndExpression ( '||' 
ConditionalAndExpression )* */
-private Expression ConditionalOrExpression() : {
-       Expression e, ae; } {
-
-       e=ConditionalAndExpression()
-       ( "||"
-               ae=ConditionalAndExpression() {
-               e = new BinaryOperation("||", e, ae); }
-       )* {
-       return e; }
-}
-
-/* [48]    ConditionalAndExpression    ::=    ValueLogical ( '&&' ValueLogical 
)* */
-private Expression ConditionalAndExpression() : {
-       Expression e, e2; } {
-
-       e=ValueLogical()
-       ( "&&"
-               e2=ValueLogical() {
-               e = new BinaryOperation("&&", e, e2); }
-       )* {
-       return e; }
-}
-
-/* [49]    ValueLogical    ::=    RelationalExpression */
-private Expression ValueLogical() : {
-       Expression e; } {
-
-       e=RelationalExpression() {
-       return e; }
-}
-
-/* [50]    RelationalExpression    ::=    NumericExpression ( '=' 
NumericExpression | '!=' NumericExpression | '<' NumericExpression | '>' 
NumericExpression | '<=' NumericExpression | '>=' NumericExpression )? */
-private Expression RelationalExpression() : {
-       Expression e, e2; } {
-
-       e=NumericExpression()
-       (
-               "=" e2=NumericExpression() {
-                       e = new BinaryOperation("=", e, e2); }
-               | "!=" e2=NumericExpression() {
-                       e = new BinaryOperation("!=", e, e2); }
-               | "<" e2=NumericExpression() {
-                       e = new BinaryOperation("<", e, e2); }
-               | ">" e2=NumericExpression() {
-                       e = new BinaryOperation(">", e, e2); }
-               | "<=" e2=NumericExpression() {
-                       e = new BinaryOperation("<=", e, e2); }
-               | ">=" e2=NumericExpression() {
-                       e = new BinaryOperation(">=", e, e2); }
-       )? {
-       return e; }
-}
-
-/* [51]    NumericExpression    ::=    AdditiveExpression */
-private Expression NumericExpression() : {
-       Expression e; } {
-
-       e=AdditiveExpression() {
-       return e; }
-}
-
-/* [52]    AdditiveExpression    ::=    MultiplicativeExpression ( '+' 
MultiplicativeExpression | '-' MultiplicativeExpression | 
NumericLiteralPositive | NumericLiteralNegative )* */
-private Expression AdditiveExpression() : {
-       Expression e, e2;
-       Literal l; } {
-
-       e=MultiplicativeExpression()
-       (
-               "+" e2=MultiplicativeExpression() {
-                       e = new BinaryOperation("+", e, e2); }
-               | "-" e2=MultiplicativeExpression() {
-                       e = new BinaryOperation("-", e, e2); }
-               | l=NumericLiteralPositive() {
-                       e = new BinaryOperation("+", e, new 
LiteralExpression(l)); }
-               | l=NumericLiteralNegative() {
-                       e = new BinaryOperation("-", e, new 
LiteralExpression(l)); }
-       )* {
-       return e; }
-}
-
-/* [53]    MultiplicativeExpression    ::=    UnaryExpression ( '*' 
UnaryExpression | '/' UnaryExpression )* */
-private Expression MultiplicativeExpression() : {
-       Expression e, e2; } {
-
-       e=UnaryExpression()
-       (
-               "*" e2=UnaryExpression() {
-                       e = new BinaryOperation("*", e, e2); }
-               | "/" e2=UnaryExpression() {
-                       e = new BinaryOperation("/", e, e2); }
-       )* {
-       return e; }
-}
-
-/* [54]    UnaryExpression    ::=      '!' PrimaryExpression  |  '+' 
PrimaryExpression  | '-' PrimaryExpression  | PrimaryExpression */
-private Expression UnaryExpression() : {
-       Expression e; } {
-
-       "!" e=PrimaryExpression() {
-               return new UnaryOperation("!", e); }
-    | "+" e=PrimaryExpression() {
-               return new UnaryOperation("+", e); }
-    | "-" e=PrimaryExpression() {
-               return new UnaryOperation("-", e); }
-    | e=PrimaryExpression() {
-               return e; }
-}
-
-/* [55]    PrimaryExpression    ::=    BrackettedExpression | BuiltInCall | 
IRIrefOrFunction | RDFLiteral | NumericLiteral | BooleanLiteral | Var */
-private Expression PrimaryExpression() : {
-       Expression e = null;
-       Literal l = null; } {
-
-       (
-       e=BrackettedExpression() | e=BuiltInCall() | e=IRIrefOrFunction() | 
l=RDFLiteral() | l=NumericLiteral() | l=BooleanLiteral() | e=Var()
-       ) {
-       if (l != null) {
-               return new LiteralExpression(l);
-       }
-       return e; }
-}
-
-/* [56]    BrackettedExpression    ::=    '(' Expression ')' */
-private Expression BrackettedExpression() : {
-       Expression e; } {
-
-       "("
-       e=Expression()
-       ")" {
-       return e; }
-}
-
-/* [57]    BuiltInCall    ::=      'STR' '(' Expression ')' */
-/* |  'LANG' '(' Expression ')' */
-/* |  'LANGMATCHES' '(' Expression ',' Expression ')' */
-/* |  'DATATYPE' '(' Expression ')' */
-/* |  'BOUND' '(' Var ')' */
-/* |  'sameTerm' '(' Expression ',' Expression ')' */
-/* |  'isIRI' '(' Expression ')' */
-/* |  'isURI' '(' Expression ')' */
-/* |  'isBLANK' '(' Expression ')' */
-/* |  'isLITERAL' '(' Expression ')' */
-/* |  RegexExpression */
-private BuiltInCall BuiltInCall() : {
-       List<Expression> args = new ArrayList<Expression>();
-       String name;
-       Expression e; } {
-       (
-       <STR> {
-               name = "STR"; }
-               "("
-               e=Expression() {
-               args.add(e); }
-               ")"
-       | <LANG> {
-               name = "LANG"; }
-               "("
-               e=Expression() {
-               args.add(e); }
-               ")"
-       | <LANGMATCHES> {
-               name = "LANGMATCHES"; }
-               "("
-               e=Expression() {
-               args.add(e); }
-               ","
-               e=Expression() {
-               args.add(e); }
-               ")"
-       | <DATATYPE> {
-               name = "DATATYPE"; }
-               "("
-               e=Expression() {
-               args.add(e); }
-               ")"
-       | <BOUND> {
-               name = "BOUND"; }
-               "("
-               e=Var() {
-               args.add(e); }
-               ")"
-       | <SAME_TERM> {
-               name = "sameTerm"; }
-               "("
-               e=Expression() {
-               args.add(e); }
-               ","
-               e=Expression() {
-               args.add(e); }
-               ")"
-       | <IS_IRI> {
-               name = "isIRI"; }
-               "("
-               e=Expression() {
-               args.add(e); }
-               ")"
-       | <IS_URI> {
-               name = "isURI"; }
-               "("
-               e=Expression() {
-               args.add(e); }
-               ")"
-       | <IS_BLANK> {
-               name = "isBLANK"; }
-               "("
-               e=Expression() {
-               args.add(e); }
-               ")"
-       | <IS_LITERAL> {
-               name = "isLITERAL"; }
-               "("
-               e=Expression() {
-               args.add(e); }
-               ")"
-       | e=RegexExpression() {
-               return (BuiltInCall) e; }
-       ) {
-               return new BuiltInCall(name, args);
-       }
-}
-
-/* [58]    RegexExpression    ::=    'REGEX' '(' Expression ',' Expression ( 
',' Expression )? ')' */
-private BuiltInCall RegexExpression() : {
-       List<Expression> args = new ArrayList<Expression>();
-       Expression e = null; } {
-
-       <REGEX>
-       "("
-       e=Expression() {
-       args.add(e); }
-       ","
-       e=Expression() {
-       args.add(e); }
-       (
-               ","
-               e=Expression() {
-               args.add(e); }
-       )?
-       ")" {
-       return new BuiltInCall("REGEX", args); }
-}
-
-/* [59]    IRIrefOrFunction    ::=    IRIref ArgList? */
-private Expression IRIrefOrFunction() : {
-       IRI IRI;
-       List<Expression> args; } {
-
-       IRI=IRIref()
-       (
-               args=ArgList() {
-               return new FunctionCall(IRI, args); }
-       )? {
-       return new UriRefExpression(IRI); }
-}
-
-/* [60]    RDFLiteral    ::=    String ( LANGTAG | ( '^^' IRIref ) )? */
-private Literal RDFLiteral() : {
-       Token t;
-       String s;
-       IRI type; } {
-
-       s = String()
-       (
-               t=<LANGTAG> {
-               return new PlainLiteralImpl(s, new 
Language(t.image.substring(1))); }
-               |
-               ( "^^"
-                       type=IRIref() {
-                       return new TypedLiteralImpl(s, type); }
-               )
-       )? {
-       return new PlainLiteralImpl(s); }
-}
-
-/* [61]    NumericLiteral    ::=    NumericLiteralUnsigned | 
NumericLiteralPositive | NumericLiteralNegative */
-private Literal NumericLiteral() : {
-       Literal l; } {
-
-       ( l=NumericLiteralUnsigned() | l=NumericLiteralPositive() | 
l=NumericLiteralNegative() ) {
-       return l; }
-}
-
-/* [62]    NumericLiteralUnsigned    ::=    INTEGER |  DECIMAL |  DOUBLE */
-private Literal NumericLiteralUnsigned() : {
-       Token t; } {
-
-       t=<INTEGER> {
-               return 
LiteralFactory.getInstance().createTypedLiteral(Long.valueOf(t.image)); }
-       | t=<DECIMAL> {
-               return 
LiteralFactory.getInstance().createTypedLiteral(Float.valueOf(t.image)); }
-       | t=<DOUBLE> {
-               return 
LiteralFactory.getInstance().createTypedLiteral(Double.valueOf(t.image)); }
-}
-
-/* [63]    NumericLiteralPositive    ::=    INTEGER_POSITIVE |  
DECIMAL_POSITIVE |  DOUBLE_POSITIVE */
-private Literal NumericLiteralPositive() : {
-       Token t; } {
-
-       t=<INTEGER_POSITIVE> {
-               return 
LiteralFactory.getInstance().createTypedLiteral(Long.valueOf(t.image)); }
-       | t=<DECIMAL_POSITIVE> {
-               return 
LiteralFactory.getInstance().createTypedLiteral(Float.valueOf(t.image)); }
-       | t=<DOUBLE_POSITIVE> {
-               return 
LiteralFactory.getInstance().createTypedLiteral(Double.valueOf(t.image)); }
-}
-
-/* [64]    NumericLiteralNegative    ::=    INTEGER_NEGATIVE |  
DECIMAL_NEGATIVE |  DOUBLE_NEGATIVE */
-private Literal NumericLiteralNegative() : {
-       Token t; } {
-
-       t=<INTEGER_NEGATIVE> {
-               return 
LiteralFactory.getInstance().createTypedLiteral(Long.valueOf(t.image)); }
-       | t=<DECIMAL_NEGATIVE> {
-               return 
LiteralFactory.getInstance().createTypedLiteral(Float.valueOf(t.image)); }
-       | t=<DOUBLE_NEGATIVE> {
-               return 
LiteralFactory.getInstance().createTypedLiteral(Double.valueOf(t.image)); }
-}
-
-/* [65]    BooleanLiteral    ::=    'true' |  'false' */
-private Literal BooleanLiteral() : {} {
-
-       <TRUE> {
-               return LiteralFactory.getInstance().createTypedLiteral(true); }
-       | <FALSE> {
-               return LiteralFactory.getInstance().createTypedLiteral(false); }
-}
-
-/* [66]    String    ::=    STRING_LITERAL1 | STRING_LITERAL2 | 
STRING_LITERAL_LONG1 | STRING_LITERAL_LONG2 */
-private String String() : {
-       Token t; } {
-       t=<STRING_LITERAL1> {
-               return unquote(t.image) ; }
-       | t=<STRING_LITERAL2> {
-               return unquote(t.image) ; }
-       | t=<STRING_LITERAL_LONG1> {
-               return unTripleQuote(t.image) ; }
-       | t=<STRING_LITERAL_LONG2> {
-               return unTripleQuote(t.image) ; }
-}
-
-/* [67]    IRIref    ::=    IRI_REF |  PrefixedName */
-private IRI IRIref() : {
-       IRI IRI;
-       Token t; } {
-
-       t=<IRI_REF> {
-       return createUriRef(unquote(t.image)); }
-       |
-       IRI=PrefixedName() {
-       return IRI; }
-}
-
-/* [68]    PrefixedName    ::=    PNAME_LN | PNAME_NS */
-private IRI PrefixedName() : {
-       Token t; } {
-
-       ( t=<PNAME_LN> | t=<PNAME_NS> ) {
-       return createUriRef(t.image); }
-}
-
-/* [69]    BlankNode    ::=    BLANK_NODE_LABEL |  ANON */
-private ResourceOrVariable BlankNode() : {
-       Token t; } {
-
-       t=<BLANK_NODE_LABEL> {
-       return getBNode(t.image); }
-       | <ANON> {
-       return getNewBNode(); }
-}
-
-
-TOKEN : {
-  /* [70]    IRI_REF    ::=    '<' ([^<>"{}|^`\]-[#x00-#x20])* '>' */
-  < IRI_REF : "<" ( ~["<", ">", "\"", "{", "}", "|", "^", "`", "\\", 
"\u0000"-"\u0020"] )* ">" >
-  |
-  /* [71]    PNAME_NS    ::=    PN_PREFIX? ':' */
-  < PNAME_NS : (<PN_PREFIX>)? ":" >
-  |
-  /* [72]    PNAME_LN    ::=    PNAME_NS PN_LOCAL */
-  < PNAME_LN : <PNAME_NS> <PN_LOCAL> >
-  |
-  /* [73]    BLANK_NODE_LABEL    ::=    '_:' PN_LOCAL */
-  < BLANK_NODE_LABEL : "_:" <PN_LOCAL> >
-  |
-  /* [74]    VAR1    ::=    '?' VARNAME */
-  < VAR1 : "?" <VARNAME> >
-  |
-  /* [75]    VAR2    ::=    '$' VARNAME */
-  < VAR2 : "$" <VARNAME> >
-  |
-  /* [76]    LANGTAG    ::=    '@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)* */
-  < LANGTAG : "@" (["a"-"z", "A"-"Z"])+ ( "-" (["a"-"z", "A"-"Z", "0"-"9"])+ 
)* >
-}
-
-TOKEN : {
-  < #Z_9 : ["0"-"9"] >
-  |
-  < #Z_9r : (<Z_9>)+ >
-  |
-   < #Z_9o : (<Z_9>)* >
-  |
-  /* [77]    INTEGER    ::=    [0-9]+ */
-  < INTEGER : <Z_9r> >
-  |
-  /* [78]    DECIMAL    ::=    [0-9]+ '.' [0-9]* | '.' [0-9]+ */
-  < DECIMAL : ( <Z_9r> "." <Z_9o> ) | ( "." <Z_9r> ) >
-  |
-  /* [79]    DOUBLE    ::=    [0-9]+ '.' [0-9]* EXPONENT | '.' ([0-9])+ 
EXPONENT | ([0-9])+ EXPONENT */
-  < DOUBLE : ( <Z_9r> "." <Z_9o>  <EXPONENT> ) | ( "." <Z_9r> <EXPONENT> ) | ( 
<Z_9r> <EXPONENT> ) >
-  |
-  /* [80]    INTEGER_POSITIVE    ::=    '+' INTEGER */
-  < INTEGER_POSITIVE : "+" <INTEGER> >
-  |
-  /* [81]    DECIMAL_POSITIVE    ::=    '+' DECIMAL */
-  < DECIMAL_POSITIVE : "+" <DECIMAL> >
-  |
-  /* [82]    DOUBLE_POSITIVE    ::=    '+' DOUBLE */
-  < DOUBLE_POSITIVE : "+" <DOUBLE> >
-  |
-  /* [83]    INTEGER_NEGATIVE    ::=    '-' INTEGER */
-  < INTEGER_NEGATIVE : "-" <INTEGER> >
-  |
-  /* [84]    DECIMAL_NEGATIVE    ::=    '-' DECIMAL */
-  < DECIMAL_NEGATIVE : "-" <DECIMAL> >
-  |
-  /* [85]    DOUBLE_NEGATIVE    ::=    '-' DOUBLE */
-  < DOUBLE_NEGATIVE : "-" <DOUBLE> >
-  |
-  /* [86]    EXPONENT    ::=    [eE] [+-]? [0-9]+ */
-  < #EXPONENT : ["e","E"] (["+","-"])? <Z_9r> >
-}
-
-TOKEN : {
-  /* [87]    STRING_LITERAL1    ::=    "'" ( ([^#x27#x5C#xA#xD]) | ECHAR )* 
"'" */
-  < STRING_LITERAL1 : "'" ( ~["'", "\\", "\r", "\n"] | <ECHAR> )* "'" >
-  |
-  /* [88]    STRING_LITERAL2    ::=    '"' ( ([^#x22#x5C#xA#xD]) | ECHAR )* 
'"' */
-  < STRING_LITERAL2 : "\"" ( ~["\"", "\\", "\r", "\n"] | <ECHAR> )* "\"" >
-  |
-  /* [89]    STRING_LITERAL_LONG1    ::=    "'''" ( ( "'" | "''" )? ( [^'\] | 
ECHAR ) )* "'''" */
-  < STRING_LITERAL_LONG1 : "'''" ( ( "'" | "''" )? ( ~["'","\\"] | <ECHAR> ) 
)* "'''" >
-  |
-  /* [90]    STRING_LITERAL_LONG2    ::=    '"""' ( ( '"' | '""' )? ( [^"\] | 
ECHAR ) )* '"""' */
-  < STRING_LITERAL_LONG2 : "\"\"\"" ( ( "\"" | "\"\"" )? ( ~["\"","\\"] | 
<ECHAR> ) )* "\"\"\"" >
-  |
-  /* [91]    #ECHAR    ::=    '\' [tbnrf\"'] */
-  < #ECHAR : "\\" ["t","b","n","r","f","\\","\"","'"] >
-}
-
-TOKEN : {
-  /* [92]    NIL    ::=    '(' WS* ')' */
-  < NIL : "(" (<WS>)* ")" >
-  |
-  /* [93]    WS    ::=    #x20 | #x9 | #xD | #xA */
-  < #WS : " " | "\t" | "\n" | "\r" >
-  |
-  /* [94]   ANON    ::=    '[' WS* ']' */
-  < ANON : "[" (<WS>)* "]" >
-}
-
-TOKEN : {
-  /* [95]   #PN_CHARS_BASE ::=  [A-Z] | [a-z] | [#x00C0-#x00D6] | 
[#x00D8-#x00F6] | [#x00F8-#x02FF] | [#x0370-#x037D] | [#x037F-#x1FFF] | 
[#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | 
[#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] */
-  < #PN_CHARS_BASE : ["A"-"Z", "a"-"z", "\u00C0"-"\u00D6", "\u00D8"-"\u00F6", 
"\u00F8"-"\u02FF", "\u0370"-"\u037D", "\u037F"-"\u1FFF", "\u200C"-"\u200D", 
"\u2070"-"\u218F", "\u2C00"-"\u2FEF", "\u3001"-"\uD7FF", "\uF900"-"\uFDCF", 
"\uFDF0"-"\uFFFD"] >
-  |
-  /* [96]   #PN_CHARS_U    ::=  PN_CHARS_BASE | '_' */
-  < #PN_CHARS_U : <PN_CHARS_BASE> | "_" >
-  |
-  /* [97]   #VARNAME  ::=   ( PN_CHARS_U | [0-9] ) ( PN_CHARS_U | [0-9] | 
#x00B7 | [#x0300-#x036F] | [#x203F-#x2040] )* */
-  < #VARNAME : (<PN_CHARS_U> | <Z_9>) ( <PN_CHARS_U> | <Z_9> | "\u00b7" | 
["\u0300"-"\u036f"] | ["\u203f"-"\u2040"] )* >
-  |
-  /* [98]   #PN_CHARS  ::=  PN_CHARS_U | '-' | [0-9] | #x00B7 | 
[#x0300-#x036F] | [#x203F-#x2040] */
-  < #PN_CHARS : <PN_CHARS_U> | "-" | <Z_9> | "\u00b7" | ["\u0300"-"\u036f"] | 
["\u203f"-"\u2040"] >
-  |
-  /* [99]   PN_PREFIX  ::=  PN_CHARS_BASE ((PN_CHARS|'.')* PN_CHARS)? */
-  < PN_PREFIX : <PN_CHARS_BASE> (( <PN_CHARS> | "." )* <PN_CHARS>)? >
-  |
-  /* [100]  PN_LOCAL  ::=   ( PN_CHARS_U | [0-9] ) ((PN_CHARS|'.')* PN_CHARS)? 
 */
-  /* Note that SPARQL local names allow leading digits while XML local names 
do not. */
-  < PN_LOCAL : ( <PN_CHARS_U> | <Z_9> ) (( <PN_CHARS> | "." )* <PN_CHARS>)? >
-}
diff --git 
a/rdf/core/src/main/javacc/org/apache/clerezza/rdf/core/sparql/JavaCCGeneratedSparqlPreParser.jj
 
b/rdf/core/src/main/javacc/org/apache/clerezza/rdf/core/sparql/JavaCCGeneratedSparqlPreParser.jj
deleted file mode 100644
index 4ef0976..0000000
--- 
a/rdf/core/src/main/javacc/org/apache/clerezza/rdf/core/sparql/JavaCCGeneratedSparqlPreParser.jj
+++ /dev/null
@@ -1,2556 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-options
-{
-   STATIC=false;
-   UNICODE_INPUT=true;
-   IGNORE_CASE=false;
-   JAVA_UNICODE_ESCAPE=false;
-   DEBUG_PARSER=false;
-   JDK_VERSION="1.6";
-}
-
-PARSER_BEGIN(JavaCCGeneratedSparqlPreParser)
-
-package org.apache.clerezza.rdf.core.sparql;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import org.apache.clerezza.commons.rdf.BlankNode;
-import org.apache.clerezza.commons.rdf.Language;
-import org.apache.clerezza.commons.rdf.Literal;
-import org.apache.clerezza.commons.rdf.RDFTerm;
-import org.apache.clerezza.commons.rdf.IRI;
-import org.apache.clerezza.rdf.core.LiteralFactory;
-import org.apache.clerezza.commons.rdf.impl.utils.PlainLiteralImpl;
-import org.apache.clerezza.commons.rdf.impl.utils.TypedLiteralImpl;
-import org.apache.clerezza.rdf.core.sparql.query.AlternativeGraphPattern;
-import org.apache.clerezza.rdf.core.sparql.query.BinaryOperation;
-import org.apache.clerezza.rdf.core.sparql.query.BinaryPropertyPathOperation;
-import org.apache.clerezza.rdf.core.sparql.query.BuiltInCall;
-import org.apache.clerezza.rdf.core.sparql.query.Expression;
-import org.apache.clerezza.rdf.core.sparql.query.FunctionCall;
-import org.apache.clerezza.rdf.core.sparql.query.GroupGraphPattern;
-import org.apache.clerezza.rdf.core.sparql.query.InlineData;
-import org.apache.clerezza.rdf.core.sparql.query.LiteralExpression;
-import org.apache.clerezza.rdf.core.sparql.query.PatternExistenceCondition;
-import org.apache.clerezza.rdf.core.sparql.query.PredicatePath;
-import 
org.apache.clerezza.rdf.core.sparql.query.PropertyPathExpressionOrVariable;
-import org.apache.clerezza.rdf.core.sparql.query.PropertyPathExpression;
-import org.apache.clerezza.rdf.core.sparql.query.PropertyPathPattern;
-import org.apache.clerezza.rdf.core.sparql.query.PropertySet;
-import org.apache.clerezza.rdf.core.sparql.query.Query;
-import org.apache.clerezza.rdf.core.sparql.query.ResourceOrVariable;
-import org.apache.clerezza.rdf.core.sparql.query.RhsListBinaryOperation;
-import org.apache.clerezza.rdf.core.sparql.query.SelectQuery;
-import org.apache.clerezza.rdf.core.sparql.query.SparqlUnit;
-import org.apache.clerezza.rdf.core.sparql.query.TriplePattern;
-import org.apache.clerezza.rdf.core.sparql.query.UnaryOperation;
-import org.apache.clerezza.rdf.core.sparql.query.UnaryPropertyPathOperation;
-import org.apache.clerezza.rdf.core.sparql.query.UriRefExpression;
-import org.apache.clerezza.rdf.core.sparql.query.UriRefOrVariable;
-import org.apache.clerezza.rdf.core.sparql.query.Variable;
-import 
org.apache.clerezza.rdf.core.sparql.query.impl.SimpleAlternativeGraphPattern;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleAskQuery;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleConstructQuery;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleDataSet;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleDescribeQuery;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleGraphGraphPattern;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleGroupGraphPattern;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleInlineData;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleOrderCondition;
-import 
org.apache.clerezza.rdf.core.sparql.query.impl.SimplePropertyPathPattern;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleQuery;
-import 
org.apache.clerezza.rdf.core.sparql.query.impl.SimpleQueryWithSolutionModifier;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleSelectQuery;
-import 
org.apache.clerezza.rdf.core.sparql.query.impl.SimpleServiceGraphPattern;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleSparqlUnit;
-import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleTriplePattern;
-import org.apache.clerezza.rdf.core.sparql.update.Update;
-import org.apache.clerezza.rdf.core.sparql.update.UpdateOperation;
-import org.apache.clerezza.rdf.core.sparql.update.UpdateOperation.GraphSpec;
-import org.apache.clerezza.rdf.core.sparql.update.impl.AddOperation;
-import org.apache.clerezza.rdf.core.sparql.update.impl.ClearOperation;
-import org.apache.clerezza.rdf.core.sparql.update.impl.ClearOrDropOperation;
-import org.apache.clerezza.rdf.core.sparql.update.impl.CopyOperation;
-import org.apache.clerezza.rdf.core.sparql.update.impl.CreateOperation;
-import org.apache.clerezza.rdf.core.sparql.update.impl.DeleteDataOperation;
-import org.apache.clerezza.rdf.core.sparql.update.impl.DeleteWhereOperation;
-import org.apache.clerezza.rdf.core.sparql.update.impl.DropOperation;
-import org.apache.clerezza.rdf.core.sparql.update.impl.InsertDataOperation;
-import org.apache.clerezza.rdf.core.sparql.update.impl.LoadOperation;
-import org.apache.clerezza.rdf.core.sparql.update.impl.ModifyOperation;
-import org.apache.clerezza.rdf.core.sparql.update.impl.MoveOperation;
-import org.apache.clerezza.rdf.core.sparql.update.impl.SimpleUpdate;
-import org.apache.clerezza.rdf.core.sparql.update.impl.SimpleUpdateOperation;
-import 
org.apache.clerezza.rdf.core.sparql.update.impl.UpdateOperationWithQuads;
-
-/**
- *
- * Credits: Fedora Commons, Inc.
- *            - for initial grammar of this file (available in mulgara 
project).
- * Modified by: Hasan <[email protected]>
- */
-class JavaCCGeneratedSparqlPreParser {
-
-    private static final IRI RDF_TYPE =
-        new IRI("http://www.w3.org/1999/02/22-rdf-syntax-ns#type";);
-    private static final IRI RDF_FIRST =
-        new IRI("http://www.w3.org/1999/02/22-rdf-syntax-ns#first";);
-    private static final IRI RDF_REST =
-        new IRI("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest";);
-    private static final IRI RDF_NIL =
-        new IRI("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil";);
-
-    /** A RegEx pattern for separating out a namespace from a prefixed name. */
-    private static final Pattern pfxNamePattern = 
Pattern.compile("([^:]*):(.*)");
-
-    private String base;
-    private Map<String, String> prefixes;
-    private Map<String, ResourceOrVariable> bNodes;
-    private int count;
-
-    private class GraphRefAllSpec {
-        GraphSpec graphSpec;
-        IRI graph;
-        public void setGraphSpec(GraphSpec graphSpec) {
-            this.graphSpec = graphSpec;
-        }
-        public GraphSpec getGraphSpec() {
-            return this.graphSpec;
-        }
-        public void setGraph(IRI graph){
-            this.graph = graph;
-        }
-        public IRI getGraph() {
-            return this.graph;
-        }
-    }
-
-    void initialize() {
-        base = null;
-        prefixes = new HashMap<String, String>();
-        bNodes = new HashMap<String, ResourceOrVariable>();
-        count = 0;
-    }
-
-    SparqlUnit parse() throws ParseException {
-        SparqlUnit sparqlUnit;
-        initialize();
-        sparqlUnit = this.SparqlUnit();
-        return sparqlUnit;
-    }
-
-    Query parseQuery() throws ParseException {
-        Query query;
-        initialize();
-        query = this.QueryUnit();
-        return query;
-    }
-
-    Update parseUpdate() throws ParseException {
-        Update update;
-        initialize();
-        update = this.UpdateUnit();
-        return update;
-    }
-
-    private static String unquote(String s) {
-        return s.substring(1, s.length() - 1);
-    }
-
-    private static String unTripleQuote(String s) {
-        return s.substring(3, s.length() - 3);
-    }
-
-    private Variable createVariable(String name) {
-        name = name.substring(1);
-        Variable v = new Variable(name);
-        return v;
-    }
-
-    private void addPropertyPathPatterns(Set<PropertyPathPattern> 
propertyPathPatterns,
-            ResourceOrVariable subject,
-            PropertyPathExpressionOrVariable propertyPathExpression,
-            Set<ResourceOrVariable> objects) {
-
-        for (ResourceOrVariable object : objects) {
-            propertyPathPatterns.add(
-                new SimplePropertyPathPattern(subject, propertyPathExpression, 
object));
-        }
-    }
-
-    // nodes contain at least one element
-    private ResourceOrVariable 
addPropertyPathPatterns(Set<PropertyPathPattern> propertyPathPatterns,
-            List<ResourceOrVariable> nodes) {
-
-        ResourceOrVariable head = null;
-        PropertyPathExpressionOrVariable rdfFirst = new 
PropertyPathExpressionOrVariable(new PredicatePath(RDF_FIRST));
-        PropertyPathExpressionOrVariable rdfRest = new 
PropertyPathExpressionOrVariable(new PredicatePath(RDF_REST));
-        UriRefOrVariable rdfNil = new UriRefOrVariable(RDF_NIL);
-
-        ResourceOrVariable prevSubject = null;
-        for (ResourceOrVariable node : nodes) {
-            ResourceOrVariable currentSubject = getNewBNode();
-            if (prevSubject != null) {
-                propertyPathPatterns.add(
-                    new SimplePropertyPathPattern(prevSubject, rdfRest, 
currentSubject));
-            } else {
-                head = currentSubject;
-            }
-            propertyPathPatterns.add(
-                new SimplePropertyPathPattern(currentSubject, rdfFirst, node));
-            prevSubject = currentSubject;
-        }
-        if (prevSubject != null) {
-            propertyPathPatterns.add(
-                new SimplePropertyPathPattern(prevSubject, rdfRest, rdfNil));
-        }
-        return head;
-    }
-
-    private void addTriplePatterns(Set<TriplePattern> triplePatterns,
-            ResourceOrVariable subject,
-            UriRefOrVariable predicate,
-            Set<ResourceOrVariable> objects) {
-
-        for (ResourceOrVariable object : objects) {
-            triplePatterns.add(
-                new SimpleTriplePattern(subject, predicate, object));
-        }
-    }
-
-    // nodes contain at least one element
-    private ResourceOrVariable addTriplePatterns(
-            Set<TriplePattern> triplePatterns,
-            List<ResourceOrVariable> nodes) {
-
-        ResourceOrVariable head = null;
-        UriRefOrVariable rdfFirst = new UriRefOrVariable(RDF_FIRST);
-        UriRefOrVariable rdfRest = new UriRefOrVariable(RDF_REST);
-        UriRefOrVariable rdfNil = new UriRefOrVariable(RDF_NIL);
-
-        ResourceOrVariable prevSubject = null;
-        for (ResourceOrVariable node : nodes) {
-            ResourceOrVariable currentSubject = getNewBNode();
-            if (prevSubject != null) {
-                triplePatterns.add(
-                    new SimpleTriplePattern(prevSubject, rdfRest, 
currentSubject));
-            } else {
-                head = currentSubject;
-            }
-            triplePatterns.add(
-                new SimpleTriplePattern(currentSubject, rdfFirst, node));
-            prevSubject = currentSubject;
-        }
-        if (prevSubject != null) {
-            triplePatterns.add(
-                new SimpleTriplePattern(prevSubject, rdfRest, rdfNil));
-        }
-        return head;
-    }
-
-    private ResourceOrVariable getNewBNode() {
-        ResourceOrVariable bNode = new ResourceOrVariable(new BlankNode());
-        bNodes.put("*" + count++, bNode);
-        return bNode;
-    }
-
-    private ResourceOrVariable getBNode(String label) {
-        ResourceOrVariable bNode = bNodes.get(label);
-        if (bNode == null) {
-            bNode = new ResourceOrVariable(new BlankNode());
-            bNodes.put(label, bNode);
-        }
-        return bNode;
-    }
-
-    private IRI createUriRef(String r) throws ParseException {
-        // Create an IRI directly if the string does not start with a prefix
-        Matcher m = pfxNamePattern.matcher(r);
-        if (!m.matches()) {
-            // either a normal IRI, or one with a BASE
-            return isRelative(r) ? new IRI(base + r) : new IRI(r);
-        }
-        // extract the prefix, and attempt to convert to a URI before creating 
the reference
-        String ns = prefixes.get(m.group(1));
-        return ns == null ? new IRI(r) : new IRI(ns + m.group(2));
-    }
-
-    /**
-     * Tests if the string for a URI is relative or absolute. The test is 
based on a scheme existing
-     * in the string, which in turn expects a : character to follow it. If 
there is no colon, then
-     * it is presumed to be relative. Otherwise, if there are special 
characters preceding the first
-     * colon these are presumed to not be in a scheme.
-     * @param u A string for a URI.
-     * @return <code>true</code> if the URI appears to be relative, 
<code>false</code> otherwise.
-     */
-    private static boolean isRelative(String u) {
-        int colon = u.indexOf(':');
-        if (colon < 0) {
-            return true;
-        }
-        for (int c = 0; c < colon; c++) {
-            // if there a non-alphanum characters then this is not a scheme, 
so the URI is relative
-            if (!Character.isLetterOrDigit(u.charAt(c))) {
-                return true;
-            }
-        }
-        // found a (probably) valid scheme, so the URI is absolute
-        return false;
-    }
-}
-PARSER_END(JavaCCGeneratedSparqlPreParser)
-
-SKIP :
-{
-    "\t" | "\n" | "\r" | "\f" | " "
-}
-
-MORE :
-{
-    "#" : IN_COMMENT
-}
-
-<IN_COMMENT>
-SPECIAL_TOKEN :
-{
-  <COMMENT: ( ~[ "\r","\n" ] )* > : DEFAULT
-}
-
-TOKEN [IGNORE_CASE] :
-{
-    < SELECT : "SELECT" >
-|   < BASE : "BASE" >
-|   < ORDER : "ORDER" >
-|   < BY : "BY" >
-|   < FROM : "FROM" >
-|   < GRAPH : "GRAPH" >
-|   < PREFIX : "PREFIX" >
-|   < CONSTRUCT : "CONSTRUCT" >
-|   < LIMIT : "LIMIT" >
-|   < NAMED : "NAMED" >
-|   < OPTIONAL : "OPTIONAL" >
-|   < DESCRIBE : "DESCRIBE" >
-|   < OFFSET : "OFFSET" >
-|   < WHERE : "WHERE" >
-|   < UNION : "UNION" >
-|   < ASK : "ASK" >
-|   < DISTINCT : "DISTINCT" >
-|   < FILTER : "FILTER" >
-|   < REDUCED : "REDUCED" >
-|   < GROUP_CONCAT : "GROUP_CONCAT" >
-|   < BOUND : "bound" >
-|   < TRUE : "TRUE" >
-|   < FALSE : "FALSE" >
-|   < VALUES : "VALUES" >
-|   < UNDEF : "UNDEF" >
-|   < AS : "AS" >
-|   < BIND : "BIND" >
-|   < MINUS : "MINUS" >
-|   < SERVICE : "SERVICE" >
-|   < GROUP : "GROUP" >
-|   < HAVING : "HAVING" >
-|   < LOAD : "LOAD" >
-|   < SILENT : "SILENT" >
-|   < INTO : "INTO" >
-|   < CLEAR : "CLEAR" >
-|   < DROP : "DROP" >
-|   < CREATE : "CREATE" >
-|   < ADD : "ADD" >
-|   < TO : "TO" >
-|   < MOVE : "MOVE" >
-|   < COPY : "COPY" >
-|   < INSERT : "INSERT" >
-|   < DELETE : "DELETE" >
-|   < DATA : "DATA" >
-|   < WITH : "WITH" >
-|   < USING : "USING" >
-|   < DEFAULT_T : "DEFAULT" >
-|   < ALL : "ALL" >
-|   < IN : "IN" >
-|   < NOT : "NOT" >
-|   < EXISTS : "EXISTS" >
-|   < BNODE : "BNODE" >
-|   < RAND : "RAND" >
-|   < CONCAT : "CONCAT" >
-|   < NOW : "NOW" >
-|   < UUID : "UUID" >
-|   < STRUUID : "STRUUID" >
-|   < COALESCE : "COALESCE" >
-|   < SEPARATOR : "SEPARATOR" >
-}
-
-/* SparqlUnit ::= Prologue ( Query | Update ) */
-private SparqlUnit SparqlUnit() : {
-    Query query;
-    Update update; } {
-
-    Prologue()
-    (
-        query=QueryUnit() {
-        return new SimpleSparqlUnit(query); }
-    |
-        update=UpdateUnit() {
-        return new SimpleSparqlUnit(update); }
-    )
-}
-
-/* [1]    QueryUnit ::= Query */
-private Query QueryUnit() : {
-    Query query; } {
-
-    query=Query() {
-    return query; }
-}
-
-/* [2]    Query ::= Prologue ( SelectQuery | ConstructQuery | DescribeQuery | 
AskQuery ) ValuesClause */
-/* [2]    Query ::= ( SelectQuery | ConstructQuery | DescribeQuery | AskQuery 
) ValuesClause */
-private Query Query() : {
-    Query query; } {
-    (
-        query = SelectQuery()
-    |
-        query = ConstructQuery()
-    |
-        query = DescribeQuery()
-    |
-        query = AskQuery()
-    ) {
-    return query;
-    }
-}
-
-/* [3]    UpdateUnit ::= Update */
-private Update UpdateUnit() : {
-    Update update = new SimpleUpdate(); } {
-    Update(update) {
-    return update; }
-}
-
-/* [4]    Prologue ::= ( BaseDecl | PrefixDecl )* */
-private void Prologue() : {} {
-    ( BaseDecl() | PrefixDecl() )*
-}
-
-/* [5]    BaseDecl ::= 'BASE' IRIREF */
-private void BaseDecl() : {
-    Token iriRef; } {
-
-    <BASE> iriRef=<IRIREF> { base = unquote(iriRef.image); }
-}
-
-/* [6]    PrefixDecl ::= 'PREFIX' PNAME_NS IRIREF */
-private void PrefixDecl() : {
-    Token ns, iriRef; } {
-
-    <PREFIX> ns=<PNAME_NS> iriRef=<IRIREF> {
-    String pfx = ns.image;
-    prefixes.put(pfx.substring(0, pfx.length() - 1), unquote(iriRef.image)); }
-}
-
-/* [7]    SelectQuery ::= SelectClause DatasetClause* WhereClause 
SolutionModifier */
-private Query SelectQuery() : {
-    Query query; } {
-    query = SelectClause()
-    ( DatasetClause(query) )*
-    WhereClause(query)
-    SolutionModifier(query) {
-    return query; }
-}
-
-/* [8]    SubSelect ::= SelectClause WhereClause SolutionModifier ValuesClause 
*/
-private Query SubSelect() : {
-    Query query; } {
-    query = SelectClause()
-    WhereClause(query)
-    SolutionModifier(query)
-    ValuesClause(query) {
-    return query; }
-}
-
-/* [9]    SelectClause ::= 'SELECT' ( 'DISTINCT' | 'REDUCED' )? ( ( Var | ( 
'(' Expression 'AS' Var ')' ) )+ | '*' ) */
-private Query SelectClause() : {
-    Query query;
-    Variable v; 
-    Expression e; } {
-
-    <SELECT> {
-    query = new SimpleSelectQuery(); }
-    (
-        <DISTINCT> {
-        ((SimpleSelectQuery) query).setDistinct(); }
-    |
-        <REDUCED> {
-        ((SimpleSelectQuery) query).setReduced(); }
-    )?
-    (
-        (
-            v=Var() {
-            ((SimpleSelectQuery) query).addSelection(v); }
-        |
-            (
-                "("
-                e=Expression()
-                <AS>
-                v=Var() {
-                v.setBoundExpression(e); 
-                ((SimpleSelectQuery) query).addSelection(v); }
-                ")"
-            )
-        )+
-    |
-        "*" {
-        ((SimpleSelectQuery) query).setSelectAll(); }
-    ) {
-    return query; }
-}
-
-/* [10]    ConstructQuery ::= 'CONSTRUCT' ( ConstructTemplate DatasetClause* 
WhereClause SolutionModifier | DatasetClause* 'WHERE' '{' TriplesTemplate? '}' 
SolutionModifier ) */
-private Query ConstructQuery() : {
-    Query query;
-    Set<TriplePattern> triplePatterns = null;
-    GroupGraphPattern queryPattern; } {
-
-    <CONSTRUCT>
-    (
-        triplePatterns=ConstructTemplate() {
-        query = new SimpleConstructQuery(triplePatterns); }
-        ( DatasetClause(query) )*
-        WhereClause(query)
-    |
-        {
-        query = new SimpleConstructQuery(triplePatterns); }
-        ( DatasetClause(query) )*
-        <WHERE>
-        "{" {
-        queryPattern = new SimpleGroupGraphPattern(); }
-        (
-            triplePatterns=TriplesTemplate()
-        )? {
-        ((SimpleGroupGraphPattern) 
queryPattern).addTriplePatterns(triplePatterns); }
-        "}" {
-        ((SimpleQuery) query).setQueryPattern(queryPattern); }
-    )
-    SolutionModifier(query) {
-    return query; }
-}
-
-/* [11]    DescribeQuery ::= 'DESCRIBE' ( VarOrIRI+ | '*' ) DatasetClause* 
WhereClause? SolutionModifier */
-private Query DescribeQuery() : {
-    Query query;
-    UriRefOrVariable node; } {
-
-    <DESCRIBE> {
-    query = new SimpleDescribeQuery(); }
-    (
-        ( node=VarOrIRI() {
-            ((SimpleDescribeQuery) query).addResourceToDescribe(node); } )+
-        |
-        "*" {
-            ((SimpleDescribeQuery) query).setDescribeAll(); }
-    )
-    ( DatasetClause(query) )*
-    ( WhereClause(query) )?
-    SolutionModifier(query) {
-    return query; }
-}
-
-/* [12]    AskQuery ::= 'ASK' DatasetClause* WhereClause SolutionModifier */
-private Query AskQuery() : {
-    Query query; } {
-
-    <ASK> {
-    query = new SimpleAskQuery(); }
-    ( DatasetClause(query) )*
-    WhereClause(query)
-    SolutionModifier(query) {
-    return query; }
-}
-
-/* [13]    DatasetClause ::= 'FROM' ( DefaultGraphClause | NamedGraphClause ) 
*/
-private void DatasetClause(Query query) : {} {
-    <FROM> (DefaultGraphClause(query) | NamedGraphClause(query))
-}
-
-/* [14]    DefaultGraphClause ::= SourceSelector */
-private void DefaultGraphClause(Query query) : {
-    IRI defaultGraph; } {
-
-    defaultGraph=SourceSelector() {
-    ((SimpleQuery) query).addDefaultGraph(defaultGraph); }
-}
-
-/* [15]    NamedGraphClause ::= 'NAMED' SourceSelector */
-private void NamedGraphClause(Query query) : {
-    IRI namedGraph; } {
-
-    <NAMED> namedGraph=SourceSelector() {
-    ((SimpleQuery) query).addNamedGraph(namedGraph); }
-}
-
-/* [16]    SourceSelector ::= iri */
-private IRI SourceSelector() : {
-    IRI graph; } {
-
-    graph=IRI() {
-    return graph; }
-}
-
-/* [17]    WhereClause ::= 'WHERE'? GroupGraphPattern */
-private void WhereClause(Query query) : {
-    GroupGraphPattern queryPattern; } {
-
-    (<WHERE>)?
-    queryPattern=GroupGraphPattern() {
-    ((SimpleQuery) query).setQueryPattern(queryPattern); }
-}
-
-/* [18] SolutionModifier ::= GroupClause? HavingClause? OrderClause? 
LimitOffsetClauses? */
-private void SolutionModifier(Query query) : {} {
-    ( GroupClause(query) )?
-    ( HavingClause(query) )?
-    ( OrderClause(query) )?
-    ( LimitOffsetClauses(query) )?
-}
-
-/* [19] GroupClause ::= 'GROUP' 'BY' GroupCondition+ */
-private void GroupClause(Query query) : {} {
-    <GROUP> <BY> ( GroupCondition(query) )+
-}
-
-/* [20] GroupCondition ::= BuiltInCall | FunctionCall | '(' Expression ( 'AS' 
Var )? ')' | Var */
-private void GroupCondition(Query query) : {
-    Expression e;
-    Variable v; } {
-    (
-        e=BuiltInCall()
-    |
-        e=FunctionCall()
-    |
-        (
-            "("
-            e=Expression()
-            (
-                <AS>
-                v=Var() {
-                v.setBoundExpression(e);
-                e = v; }
-            )?
-            ")"
-        )
-    |
-        e=Var()
-    ) {
-    ((SimpleQueryWithSolutionModifier) query).addGroupCondition(e); }
-}
-
-/* [21] HavingClause ::= 'HAVING' HavingCondition+ */
-private void HavingClause(Query query) : {} {
-    <HAVING> ( HavingCondition(query) )+
-}
-
-/* [22] HavingCondition ::= Constraint */
-private void HavingCondition(Query query) : {
-    Expression c; } {
-
-    c=Constraint() {
-    ((SimpleQueryWithSolutionModifier) query).addHavingCondition(c); }
-}
-
-/* [23] OrderClause ::= 'ORDER' 'BY' OrderCondition+ */
-private void OrderClause(Query query) : {} {
-    <ORDER> <BY> ( OrderCondition(query) )+
-}
-
-/* [24] OrderCondition ::= ( ( 'ASC' | 'DESC' ) BrackettedExpression ) | ( 
Constraint | Var ) */
-private void OrderCondition(Query query) : {
-    boolean asc = true;
-    Expression e; } {
-
-    (
-        ( ( "ASC" | "DESC" { asc = false; } ) e=BrackettedExpression() )
-    |
-        ( e=Constraint() | e=Var() )
-    ) {
-    ((SimpleQueryWithSolutionModifier) query).addOrderCondition(new 
SimpleOrderCondition(e, asc)); }
-}
-
-/* [25] LimitOffsetClauses ::= LimitClause OffsetClause? | OffsetClause 
LimitClause? */
-private void LimitOffsetClauses(Query query) : {} {
-    ( LimitClause(query) (OffsetClause(query))? )
-    |
-    ( OffsetClause(query) (LimitClause(query))? )
-}
-
-/* [26] LimitClause ::= 'LIMIT' INTEGER */
-private void LimitClause(Query query) : {
-    Token t; } {
-
-    <LIMIT> t=<INTEGER> {
-    ((SimpleQueryWithSolutionModifier) 
query).setLimit(Integer.parseInt(t.image)); }
-}
-
-/* [27] OffsetClause ::= 'OFFSET' INTEGER */
-private void OffsetClause(Query query) : {
-    Token t; } {
-
-    <OFFSET> t=<INTEGER> {
-    ((SimpleQueryWithSolutionModifier) 
query).setOffset(Integer.parseInt(t.image)); }
-}
-
-/* [28] ValuesClause ::= ( 'VALUES' DataBlock )? */
-private void ValuesClause(Query query) : {
-    InlineData data; } {
-    (
-        <VALUES>
-        data=DataBlock() {
-        ((SimpleQuery) query).setInlineData(data); }
-    )?
-}
-
-/* [29]    Update ::= Prologue ( Update1 ( ';' Update )? )? */
-/* [29]    Update ::= ( Update1 ( ';' Prologue Update )? )? */
-private void Update(Update update) : {} {
-    (
-        Update1(update)
-        (
-            ";"
-            Prologue()
-            Update(update)
-        )?
-    )?
-}
-
-/* [30]    Update1 ::= Load | Clear | Drop | Add | Move | Copy | Create | 
InsertData | DeleteData | DeleteWhere | Modify */
-private void Update1(Update update) : {
-    UpdateOperation updateOperation = null; } {
-
-    (
-        updateOperation = Load()
-    |
-        updateOperation = Clear()
-    |
-        updateOperation = Drop()
-    |
-        updateOperation = Add()
-    |
-        updateOperation = Move()
-    |
-        updateOperation = Copy()
-    |
-        updateOperation = Create()
-    |
-        LOOKAHEAD(2)
-        updateOperation = InsertData()
-    |
-        LOOKAHEAD(2)
-        updateOperation = DeleteData()
-    |
-        LOOKAHEAD(2)
-        updateOperation = DeleteWhere()
-    |
-        updateOperation = Modify()
-    ) {
-    if (updateOperation != null) {
-        update.addOperation(updateOperation);
-    } }
-}
-
-/* [31]    Load ::= 'LOAD' 'SILENT'? iri ( 'INTO' GraphRef )? */
-private UpdateOperation Load() : {
-    IRI uriRef;
-    LoadOperation operation; } {
-    <LOAD> {
-    operation = new LoadOperation(); }
-    (
-        <SILENT> {
-        operation.setSilent(true); }
-    )?
-    uriRef = IRI() {
-    operation.setSource(uriRef); }
-    (
-        <INTO>
-        uriRef = GraphRef() {
-        operation.setDestinationGraph(uriRef); }
-    )? {
-    return operation; }
-}
-
-/* [32]    Clear ::= 'CLEAR' 'SILENT'? GraphRefAll */
-private UpdateOperation Clear() : {
-    ClearOperation operation; } {
-    <CLEAR> {
-    operation = new ClearOperation(); }
-    ProcessParametersOfClearOrDropOperation(operation) {
-    return operation; }
-}
-
-private void ProcessParametersOfClearOrDropOperation(ClearOrDropOperation 
operation) : {
-    GraphRefAllSpec graphRefAllSpec;
-    GraphSpec graphSpec; } {
-    (
-        <SILENT> {
-        operation.setSilent(true); }
-    )?
-    graphRefAllSpec = GraphRefAll() {
-    graphSpec = graphRefAllSpec.getGraphSpec();
-    operation.setDestinationGraphSpec(graphSpec);
-    if (graphSpec == GraphSpec.GRAPH) {
-        operation.setDestinationGraph(graphRefAllSpec.getGraph());
-    } }
-}
-
-/* [33]    Drop ::= 'DROP' 'SILENT'? GraphRefAll */
-private UpdateOperation Drop() : {
-    DropOperation operation; } {
-    <DROP> {
-    operation = new DropOperation(); }
-    ProcessParametersOfClearOrDropOperation(operation) {
-    return operation; }
-}
-
-/* [34]    Create ::= 'CREATE' 'SILENT'? GraphRef */
-private UpdateOperation Create() : {
-    IRI uriRef;
-    CreateOperation operation; } {
-    <CREATE> {
-    operation = new CreateOperation(); }
-    (
-        <SILENT> {
-        operation.setSilent(true); }
-    )?
-    uriRef = GraphRef() {
-    operation.setDestinationGraph(uriRef);
-    return operation; }
-}
-
-/* [35]    Add ::= 'ADD' 'SILENT'? GraphOrDefault 'TO' GraphOrDefault */
-private UpdateOperation Add() : {
-    AddOperation operation; } {
-    <ADD> {
-    operation = new AddOperation(); }
-    ProcessParametersOfAddMoveOrCopyOperation(operation) {
-    return operation; }
-}
-
-private void ProcessParametersOfAddMoveOrCopyOperation(SimpleUpdateOperation 
operation) : {
-    GraphRefAllSpec graphRefAllSpec;
-    GraphSpec graphSpec; } {
-    (
-        <SILENT> {
-        operation.setSilent(true); }
-    )?
-    graphRefAllSpec = GraphOrDefault() {
-    graphSpec = graphRefAllSpec.getGraphSpec();
-    if (graphSpec == GraphSpec.GRAPH) {
-        operation.setInputGraph(graphRefAllSpec.getGraph());
-    } else {
-        operation.setInputGraphSpec(graphSpec);
-    } }
-    <TO>
-    graphRefAllSpec = GraphOrDefault() {
-    graphSpec = graphRefAllSpec.getGraphSpec();
-    if (graphSpec == GraphSpec.GRAPH) {
-        operation.setDestinationGraph(graphRefAllSpec.getGraph());
-    } else {
-        operation.setDestinationGraphSpec(graphSpec);
-    } }
-}
-
-/* [36]    Move ::= 'MOVE' 'SILENT'? GraphOrDefault 'TO' GraphOrDefault */
-private UpdateOperation Move() : {
-    MoveOperation operation; } {
-    <MOVE> {
-    operation = new MoveOperation(); }
-    ProcessParametersOfAddMoveOrCopyOperation(operation) {
-    return operation; }
-}
-
-/* [37]    Copy ::= 'COPY' 'SILENT'? GraphOrDefault 'TO' GraphOrDefault */
-private UpdateOperation Copy() : {
-    CopyOperation operation; } {
-    <COPY> {
-    operation = new CopyOperation(); }
-    ProcessParametersOfAddMoveOrCopyOperation(operation) {
-    return operation; }
-}
-
-/* [38]    InsertData ::= 'INSERT DATA' QuadData */
-private UpdateOperation InsertData() : {
-    InsertDataOperation operation; } {
-    <INSERT> <DATA> {
-    operation = new InsertDataOperation(); }
-    QuadData(operation) {
-    return operation; }
-}
-
-/* [39]    DeleteData ::= 'DELETE DATA' QuadData */
-private UpdateOperation DeleteData() : {
-    DeleteDataOperation operation; } {
-    <DELETE> <DATA> {
-    operation = new DeleteDataOperation(); }
-    QuadData(operation) {
-    return operation; }
-}
-
-/* [40]    DeleteWhere ::= 'DELETE WHERE' QuadPattern */
-private UpdateOperation DeleteWhere() : {
-    DeleteWhereOperation operation; } {
-    <DELETE> <WHERE> {
-    operation = new DeleteWhereOperation(); }
-    QuadPattern(operation) {
-    return operation; }
-}
-
-/* [41]    Modify ::= ( 'WITH' iri )? ( DeleteClause InsertClause? | 
InsertClause ) UsingClause* 'WHERE' GroupGraphPattern */
-private UpdateOperation Modify() : {
-    IRI fallbackGraph = null;
-    UpdateOperationWithQuads deleteOperation = null;
-    UpdateOperationWithQuads insertOperation = null;
-    SimpleDataSet dataSet = new SimpleDataSet();
-    GroupGraphPattern queryPattern;
-    ModifyOperation operation; } {
-    (
-        <WITH>
-        fallbackGraph = IRI()
-    )?
-    (
-        deleteOperation = DeleteClause()
-        (
-            insertOperation = InsertClause()
-        )?
-    |
-        insertOperation = InsertClause()
-    ) {
-    operation = new ModifyOperation();
-    if (fallbackGraph != null) {
-        operation.setFallbackGraph(fallbackGraph);
-    }
-    if (deleteOperation != null) {
-        operation.setDeleteOperation(deleteOperation);
-    }
-    if (insertOperation != null) {
-        operation.setInsertOperation(insertOperation);
-    } }
-    (
-        UsingClause(dataSet)
-    )* {
-    operation.setDataSet(dataSet); }
-
-    <WHERE>
-    queryPattern = GroupGraphPattern() {
-    operation.setQueryPattern(queryPattern);
-    return operation; }
-}
-
-/* [42]    DeleteClause ::= 'DELETE' QuadPattern */
-private UpdateOperationWithQuads DeleteClause() : {
-    UpdateOperationWithQuads operation; } {
-    <DELETE> {
-    operation = new UpdateOperationWithQuads(); }
-    QuadPattern(operation) {
-    return operation; }
-}
-
-/* [43]    InsertClause ::= 'INSERT' QuadPattern */
-private UpdateOperationWithQuads InsertClause() : {
-    UpdateOperationWithQuads operation; } {
-    <INSERT> {
-    operation = new UpdateOperationWithQuads(); }
-    QuadPattern(operation) {
-    return operation; }
-}
-
-/* [44]    UsingClause ::= 'USING' ( iri | 'NAMED' iri ) */
-private void UsingClause(SimpleDataSet dataSet) : {
-    IRI graph; } {
-    <USING>
-    (
-        graph = IRI() {
-        dataSet.addDefaultGraph(graph); }
-    |
-        <NAMED>
-        graph = IRI() {
-        dataSet.addNamedGraph(graph); }
-    )
-}
-
-/* [45]    GraphOrDefault ::= 'DEFAULT_T' | 'GRAPH'? iri */
-private GraphRefAllSpec GraphOrDefault() : {
-    IRI uriRef;
-    GraphRefAllSpec graphRefAllSpec = new GraphRefAllSpec(); } {
-    (
-        <DEFAULT_T> {
-        graphRefAllSpec.setGraphSpec(GraphSpec.DEFAULT); }
-    |
-        (
-            <GRAPH>
-        )?
-        uriRef = IRI() {
-        graphRefAllSpec.setGraph(uriRef);
-        graphRefAllSpec.setGraphSpec(GraphSpec.GRAPH); }
-    ) {
-    return graphRefAllSpec; }
-}
-
-/* [46]    GraphRef ::= 'GRAPH' iri */
-private IRI GraphRef() : {
-    IRI uriRef; } {
-    <GRAPH>
-    uriRef = IRI() {
-    return uriRef; }
-}
-
-/* [47]    GraphRefAll ::= GraphRef | 'DEFAULT_T' | 'NAMED' | 'ALL' */
-private GraphRefAllSpec GraphRefAll() : {
-    IRI uriRef;
-    GraphRefAllSpec graphRefAllSpec = new GraphRefAllSpec(); } {
-    (
-        uriRef = GraphRef() {
-        graphRefAllSpec.setGraph(uriRef);
-        graphRefAllSpec.setGraphSpec(GraphSpec.GRAPH); }
-    |
-        <DEFAULT_T> {
-        graphRefAllSpec.setGraphSpec(GraphSpec.DEFAULT); }
-    |
-        <NAMED> {
-        graphRefAllSpec.setGraphSpec(GraphSpec.NAMED); }
-    |
-        <ALL> {
-        graphRefAllSpec.setGraphSpec(GraphSpec.ALL); }
-    ) {
-    return graphRefAllSpec; }
-}
-
-/* [48]    QuadPattern ::= '{' Quads '}' */
-private void QuadPattern(UpdateOperationWithQuads operation) : {} {
-    "{"
-    Quads(operation)
-    "}"
-}
-
-/* [49]    QuadData ::= '{' Quads '}' */
-private void QuadData(UpdateOperationWithQuads operation) : {} {
-    "{"
-    Quads(operation)
-    "}"
-}
-
-/* [50]    Quads ::= TriplesTemplate? ( QuadsNotTriples '.'? TriplesTemplate? 
)* */
-private void Quads(UpdateOperationWithQuads operation) : {
-    Set<TriplePattern> triplePatterns; } {
-    (
-        triplePatterns=TriplesTemplate() {
-        operation.addQuad(triplePatterns); }
-    )?
-    (
-        QuadsNotTriples(operation)
-        ( "." )?
-        (
-            triplePatterns=TriplesTemplate() {
-            operation.addQuad(triplePatterns); }
-        )?
-    )*
-}
-
-/* [51]    QuadsNotTriples ::= 'GRAPH' VarOrIRI '{' TriplesTemplate? '}' */
-private void QuadsNotTriples(UpdateOperationWithQuads operation) : {
-    UriRefOrVariable graph;
-    Set<TriplePattern> triplePatterns = null; } {
-
-    <GRAPH>
-    graph=VarOrIRI()
-    "{"
-    (
-        triplePatterns=TriplesTemplate()
-    )?
-    "}" {
-    operation.addQuad(graph, triplePatterns); }
-}
-
-/* [52]    TriplesTemplate ::= TriplesSameSubject ( '.' TriplesTemplate? )? */
-private Set<TriplePattern> TriplesTemplate() : {
-    Set<TriplePattern> triplePatterns, t; } {
-
-    triplePatterns=TriplesSameSubject()
-    (
-        "."
-        (
-            t=TriplesTemplate() {
-            triplePatterns.addAll(t); }
-        )?
-    )? {
-    return triplePatterns; }
-}
-
-/* [53]    GroupGraphPattern ::= '{' ( SubSelect | GroupGraphPatternSub ) '}' 
*/
-private GroupGraphPattern GroupGraphPattern() : {
-    Query query;
-    GroupGraphPattern groupGraphPattern = new SimpleGroupGraphPattern(); } {
-    "{"
-    (
-        query = SubSelect() {
-        ((SimpleGroupGraphPattern) 
groupGraphPattern).setSubSelect((SelectQuery) query); }
-    |
-        GroupGraphPatternSub(groupGraphPattern)
-    )
-    "}" {
-    return groupGraphPattern; }
-}
-
-/* [54]    GroupGraphPatternSub ::= TriplesBlock? ( GraphPatternNotTriples 
'.'? TriplesBlock? )* */
-private void GroupGraphPatternSub(GroupGraphPattern groupGraphPattern) : {} {
-    ( TriplesBlock(groupGraphPattern) )?
-    (
-        GraphPatternNotTriples(groupGraphPattern)
-        (".")?
-        ( TriplesBlock(groupGraphPattern) )?
-    )*
-}
-
-/* [55]    TriplesBlock ::= TriplesSameSubjectPath ( '.' TriplesBlock? )? */
-private void TriplesBlock(GroupGraphPattern groupGraphPattern) : {
-    Set<PropertyPathPattern> propertyPathPatterns; } {
-
-    propertyPathPatterns=TriplesSameSubjectPath() {
-    ((SimpleGroupGraphPattern) 
groupGraphPattern).addPropertyPathPatterns(propertyPathPatterns); }
-    (
-        "." ( TriplesBlock(groupGraphPattern) )?
-    )?
-}
-
-/* [56]    GraphPatternNotTriples ::= GroupOrUnionGraphPattern | 
OptionalGraphPattern | MinusGraphPattern | GraphGraphPattern | 
ServiceGraphPattern | Filter | Bind | InlineData */
-private void GraphPatternNotTriples(GroupGraphPattern groupGraphPattern) : {
-    Expression constraint;
-    Variable v; } {
-    (
-        GroupOrUnionGraphPattern(groupGraphPattern)
-    |
-        OptionalGraphPattern(groupGraphPattern)
-    |
-        MinusGraphPattern(groupGraphPattern)
-    |
-        GraphGraphPattern(groupGraphPattern)
-    |
-        ServiceGraphPattern(groupGraphPattern)
-    |
-        constraint=Filter() {
-        ((SimpleGroupGraphPattern) 
groupGraphPattern).addConstraint(constraint); }
-    |
-        v=Bind() {
-        // We should either store this binding in the respective variable in 
SelectQuery
-        // or we extend the BasicGraphPattern to store such binding.
-        // If we store the binding in the respective variable in SelectQuery, 
a serializer
-        // won't be able to determine whether a binding is defined by the BIND 
keyword or
-        // by an expression in the SELECT clause.
-        // The pre parser needs only to consume tokens, thus may ignore this 
binding.
-
-        // The use of BIND ends the preceding basic graph pattern, thus ...
-        ((SimpleGroupGraphPattern) 
groupGraphPattern).endLastBasicGraphPattern(); }
-    |
-        InlineData(groupGraphPattern)
-    )
-}
-
-/* [57]    OptionalGraphPattern ::= 'OPTIONAL' GroupGraphPattern */
-private void OptionalGraphPattern(GroupGraphPattern groupGraphPattern) : {
-    GroupGraphPattern optional; } {
-
-    <OPTIONAL>
-    optional=GroupGraphPattern() {
-    ((SimpleGroupGraphPattern) 
groupGraphPattern).addOptionalGraphPattern(optional); }
-}
-
-/* [58]    GraphGraphPattern ::= 'GRAPH' VarOrIRI GroupGraphPattern */
-private void GraphGraphPattern(GroupGraphPattern groupGraphPattern) : {
-    UriRefOrVariable graph;
-    GroupGraphPattern g; } {
-
-    <GRAPH>
-    graph=VarOrIRI()
-    g=GroupGraphPattern() {
-    ((SimpleGroupGraphPattern) groupGraphPattern).addGraphPattern(new 
SimpleGraphGraphPattern(graph, g)); }
-}
-
-/* [59]    ServiceGraphPattern ::= 'SERVICE' 'SILENT'? VarOrIRI 
GroupGraphPattern */
-private void ServiceGraphPattern(GroupGraphPattern groupGraphPattern) : {
-    UriRefOrVariable service;
-    GroupGraphPattern g;
-    boolean silent = false; } {
-
-    <SERVICE>
-    (
-        <SILENT> {
-        silent = true; }
-    )?
-    service=VarOrIRI()
-    g=GroupGraphPattern() {
-    SimpleServiceGraphPattern simpleServiceGraphPattern;
-    simpleServiceGraphPattern = new SimpleServiceGraphPattern(service, g);
-    ((SimpleGroupGraphPattern) 
groupGraphPattern).addGraphPattern(simpleServiceGraphPattern);
-    if (silent) {
-        simpleServiceGraphPattern.setSilent(true);
-    } }
-}
-
-/* [60]    Bind ::= 'BIND' '(' Expression 'AS' Var ')' */
-private Variable Bind() : {
-    Variable v;
-    Expression e; } {
-
-    <BIND>
-    "("
-    e=Expression()
-    <AS>
-    v=Var() {
-    v.setBoundExpression(e); }
-    ")" {
-    return v; }
-}
-
-/* [61]    InlineData ::= 'VALUES' DataBlock */
-private void InlineData(GroupGraphPattern groupGraphPattern) : {
-    InlineData data; } {
-
-    <VALUES>
-    data=DataBlock() {
-    ((SimpleGroupGraphPattern) groupGraphPattern).addGraphPattern(data); }
-}
-
-/* [62]    DataBlock ::= InlineDataOneVar | InlineDataFull */
-private InlineData DataBlock() : {
-    InlineData inlineData = new SimpleInlineData(); } {
-
-    (
-        InlineDataOneVar(inlineData)
-    |
-        InlineDataFull(inlineData)
-    ) {
-    return inlineData; }
-}
-
-/* [63]    InlineDataOneVar ::= Var '{' DataBlockValue* '}' */
-private void InlineDataOneVar(InlineData inlineData) : {
-    Variable var;
-    RDFTerm val; } {
-
-    var=Var() {
-    ((SimpleInlineData) inlineData).addVariable(var); }
-    "{"
-    (
-        val=DataBlockValue() {
-        List<RDFTerm> values = new ArrayList<RDFTerm>();
-        values.add(val);
-        ((SimpleInlineData) inlineData).addValues(values); }
-    )*
-    "}"
-}
-
-/* [64]    InlineDataFull ::= ( NIL | '(' Var* ')' ) '{' ( '(' DataBlockValue* 
')' | NIL )* '}' */
-private void InlineDataFull(InlineData inlineData) : {
-    Variable var;
-    RDFTerm val; } {
-    (
-        <NIL>
-    |
-        "("
-        (
-            var=Var() {
-            ((SimpleInlineData) inlineData).addVariable(var); }
-        )*
-        
-        ")"
-    )
-    "{"
-    (
-        (
-            "(" {
-            List<RDFTerm> values = new ArrayList<RDFTerm>(); }
-            (
-                val=DataBlockValue() {
-                values.add(val); }
-            )*
-            ")" {
-            ((SimpleInlineData) inlineData).addValues(values); }
-        )
-    |
-        <NIL> {
-        ((SimpleInlineData) inlineData).addValues(new ArrayList<RDFTerm>()); }
-    )*
-    "}"
-}
-
-/* [65]    DataBlockValue ::= iri | RDFLiteral | NumericLiteral | 
BooleanLiteral | 'UNDEF' */
-private RDFTerm DataBlockValue() : {
-    RDFTerm r = null; } {
-    (r=IRI() | r=RDFLiteral() | r=NumericLiteral() | r=BooleanLiteral() | 
<UNDEF> ) {
-    return r; }
-}
-
-/* [66]    MinusGraphPattern ::= 'MINUS' GroupGraphPattern */
-private void MinusGraphPattern(GroupGraphPattern groupGraphPattern) : {
-    GroupGraphPattern subtrahend; } {
-
-    <MINUS>
-    subtrahend=GroupGraphPattern() {
-    ((SimpleGroupGraphPattern) 
groupGraphPattern).addMinusGraphPattern(subtrahend); }
-}
-
-/* [67]    GroupOrUnionGraphPattern ::= GroupGraphPattern ( 'UNION' 
GroupGraphPattern )* */
-private void GroupOrUnionGraphPattern(GroupGraphPattern groupGraphPattern) : {
-    GroupGraphPattern g;
-    AlternativeGraphPattern unionGraphPattern = null; } {
-
-    g=GroupGraphPattern()
-    (
-        <UNION> {
-        if (unionGraphPattern == null) {
-            unionGraphPattern = new SimpleAlternativeGraphPattern(g);
-        } }
-        g=GroupGraphPattern() {
-        ((SimpleAlternativeGraphPattern) 
unionGraphPattern).addAlternativeGraphPattern(g); }
-    )* {
-    if (unionGraphPattern != null) {
-        ((SimpleGroupGraphPattern) 
groupGraphPattern).addGraphPattern(unionGraphPattern);
-    } else {
-        ((SimpleGroupGraphPattern) groupGraphPattern).addGraphPattern(g);
-    } }
-}
-
-/* [68]    Filter ::= 'FILTER' Constraint */
-private Expression Filter() : {
-    Expression c; } {
-
-    <FILTER>
-    c=Constraint() {
-    return c; }
-}
-
-/* [69]    Constraint ::= BrackettedExpression | BuiltInCall | FunctionCall */
-private Expression Constraint() : {
-    Expression c; } {
-
-    ( c=BrackettedExpression() | c=BuiltInCall() | c=FunctionCall() ) {
-    return c; }
-}
-
-/* [70]    FunctionCall ::= iri ArgList */
-private FunctionCall FunctionCall() : {
-    IRI name;
-    List<Expression> arguments; } {
-
-    name=IRI()
-    arguments=ArgList() {
-    return new FunctionCall(name, arguments); }
-}
-
-/* [71]    ArgList ::= NIL | '(' 'DISTINCT'? Expression ( ',' Expression )* 
')' */
-private List<Expression> ArgList() : {
-    List<Expression> args = new ArrayList<Expression>();
-    Expression e; } {
-
-    (
-        <NIL>
-    |
-        (
-            "("
-            (
-                <DISTINCT>
-            )?
-            e=Expression() {
-            args.add(e); }
-            (
-                ","
-                e=Expression() {
-                args.add(e); }
-            )*
-            ")"
-        )
-    ) {
-    return args; }
-}
-
-/* [72]    ExpressionList ::= NIL | '(' Expression ( ',' Expression )* ')' */
-private List<Expression> ExpressionList() : {
-    List<Expression> args = new ArrayList<Expression>();
-    Expression e; } {
-
-    (
-        <NIL>
-    |
-        (
-            "("
-            e=Expression() {
-            args.add(e); }
-            (
-                ","
-                e=Expression() {
-                args.add(e); }
-            )*
-            ")"
-        )
-    ) {
-    return args; }
-}
-
-/* [73]    ConstructTemplate ::= '{' ConstructTriples? '}' */
-private Set<TriplePattern> ConstructTemplate() : {
-    Set<TriplePattern> triplePatterns = null; } {
-
-    "{"
-    (
-        triplePatterns=ConstructTriples()
-    )?
-    "}" {
-    return triplePatterns; }
-}
-
-/* [74]    ConstructTriples ::= TriplesSameSubject ( '.' ConstructTriples? )? 
*/
-private Set<TriplePattern> ConstructTriples() : {
-    Set<TriplePattern> triplePatterns, t; } {
-
-    triplePatterns=TriplesSameSubject()
-    (
-        "."
-        (
-            t=ConstructTriples() {
-            triplePatterns.addAll(t); }
-        )?
-    )? {
-    return triplePatterns; }
-}
-
-/* [75]    TriplesSameSubject ::= VarOrTerm PropertyListNotEmpty |  
TriplesNode PropertyList */
-private Set<TriplePattern> TriplesSameSubject() : {
-    Set<TriplePattern> triplePatterns = new LinkedHashSet<TriplePattern>();
-    ResourceOrVariable subject; } {
-
-    ( subject=VarOrTerm() PropertyListNotEmpty(subject, triplePatterns) {
-        return triplePatterns; }
-    )
-    |
-    ( subject=TriplesNode(triplePatterns) PropertyList(subject, 
triplePatterns) {
-        return triplePatterns; }
-    )
-}
-
-/* [76]    PropertyList ::= PropertyListNotEmpty? */
-private void PropertyList(ResourceOrVariable subject, Set<TriplePattern> 
triplePatterns) : { } {
-    ( PropertyListNotEmpty(subject, triplePatterns) )?
-}
-
-/* [77]    PropertyListNotEmpty ::= Verb ObjectList ( ';' ( Verb ObjectList )? 
)* */
-private void PropertyListNotEmpty(ResourceOrVariable subject, 
Set<TriplePattern> triplePatterns) : {
-    UriRefOrVariable predicate;
-    Set<ResourceOrVariable> objects; } {
-    predicate=Verb()
-    objects=ObjectList(triplePatterns) {
-    addTriplePatterns(triplePatterns, subject, predicate, objects); }
-
-    ( ";"
-        ( predicate=Verb() objects=ObjectList(triplePatterns) {
-            addTriplePatterns(triplePatterns, subject, predicate, objects); }
-        )?
-    )*
-}
-
-/* [78]    Verb ::= VarOrIRI | 'a' */
-private UriRefOrVariable Verb() : {
-    UriRefOrVariable predicate; } {
-
-    predicate=VarOrIRI() {
-    return predicate; }
-    | "a" {
-    return new UriRefOrVariable(RDF_TYPE); }
-}
-
-/* [79]    ObjectList ::= Object ( ',' Object )* */
-private Set<ResourceOrVariable> ObjectList(Set<TriplePattern> triplePatterns) 
: {
-    ResourceOrVariable object; } {
-
-    {
-    Set<ResourceOrVariable> objects = new LinkedHashSet<ResourceOrVariable>();
-    }
-    object=Object(triplePatterns) {
-    objects.add(object); }
-
-    ( ","
-        object=Object(triplePatterns) {
-            objects.add(object); }
-    )* {
-    return objects; }
-}
-
-/* [80]    Object ::= GraphNode */
-private ResourceOrVariable Object(Set<TriplePattern> triplePatterns) : {
-    ResourceOrVariable object; } {
-
-    object=GraphNode(triplePatterns) {
-    return object; }
-}
-
-/* [81]    TriplesSameSubjectPath ::= VarOrTerm PropertyListPathNotEmpty | 
TriplesNodePath PropertyListPath */
-private Set<PropertyPathPattern> TriplesSameSubjectPath() : {
-    Set<PropertyPathPattern> propertyPathPatterns = new 
LinkedHashSet<PropertyPathPattern>();
-    ResourceOrVariable subject; } {
-
-    (
-        subject=VarOrTerm()
-        PropertyListPathNotEmpty(subject, propertyPathPatterns) {
-        return propertyPathPatterns; }
-    )
-    |
-    (
-        subject=TriplesNodePath(propertyPathPatterns)
-        PropertyListPath(subject, propertyPathPatterns) {
-        return propertyPathPatterns; }
-    )
-}
-
-/* [82]    PropertyListPath ::= PropertyListPathNotEmpty? */
-private void PropertyListPath(ResourceOrVariable subject, 
Set<PropertyPathPattern> propertyPathPatterns) : { } {
-    (
-        PropertyListPathNotEmpty(subject, propertyPathPatterns)
-    )?
-}
-
-/* [83]    PropertyListPathNotEmpty ::= ( VerbPath | VerbSimple ) 
ObjectListPath ( ';' ( ( VerbPath | VerbSimple ) ObjectList )? )* */
-private void PropertyListPathNotEmpty(ResourceOrVariable subject, 
Set<PropertyPathPattern> propertyPathPatterns) : {
-    PropertyPathExpressionOrVariable propertyPathExpressionOrVariable;
-    PropertyPathExpression propertyPathExpression;
-    Variable v;
-    Set<ResourceOrVariable> objects; } {
-    (
-        propertyPathExpression=VerbPath() {
-        propertyPathExpressionOrVariable = new 
PropertyPathExpressionOrVariable(propertyPathExpression); }
-    |
-        v=VerbSimple() {
-        propertyPathExpressionOrVariable = new 
PropertyPathExpressionOrVariable(v); }
-    )
-    objects=ObjectListPath(propertyPathPatterns) {
-    addPropertyPathPatterns(propertyPathPatterns, subject, 
propertyPathExpressionOrVariable, objects); }
-    (
-        ";"
-        (
-            (
-                propertyPathExpression=VerbPath() {
-                propertyPathExpressionOrVariable = new 
PropertyPathExpressionOrVariable(propertyPathExpression); }
-
-            |
-                v=VerbSimple() {
-                propertyPathExpressionOrVariable = new 
PropertyPathExpressionOrVariable(v); }
-            )
-            objects=ObjectListPath(propertyPathPatterns) {
-            addPropertyPathPatterns(propertyPathPatterns, subject, 
propertyPathExpressionOrVariable, objects); }
-        )?
-    )*
-}
-
-/* [84]    VerbPath ::= Path */
-private PropertyPathExpression VerbPath() : {
-    PropertyPathExpression propertyPathExpression; } {
-    propertyPathExpression=Path() {
-    return propertyPathExpression; }
-}
-
-/* [85]    VerbSimple ::= Var */
-private Variable VerbSimple() : {
-    Variable v; } {
-    v=Var() {
-    return v; }
-}
-
-/* [86]    ObjectListPath ::= ObjectPath ( ',' ObjectPath )* */
-private Set<ResourceOrVariable> ObjectListPath(Set<PropertyPathPattern> 
propertyPathPatterns) : {
-    ResourceOrVariable object; } {
-    {
-    Set<ResourceOrVariable> objects = new LinkedHashSet<ResourceOrVariable>();
-    }
-    object=ObjectPath(propertyPathPatterns) {
-    objects.add(object); }
-
-    (
-        ","
-        object=ObjectPath(propertyPathPatterns) {
-        objects.add(object); }
-    )* {
-    return objects; }
-}
-
-/* [87]    ObjectPath ::= GraphNodePath */
-private ResourceOrVariable ObjectPath(Set<PropertyPathPattern> 
propertyPathPatterns) : {
-    ResourceOrVariable object; } {
-
-    object=GraphNodePath(propertyPathPatterns) {
-    return object; }
-}
-
-/* [88]    Path ::= PathAlternative */
-private PropertyPathExpression Path() : {
-    PropertyPathExpression propertyPathExpression; } {
-    propertyPathExpression=PathAlternative() {
-    return propertyPathExpression; }
-}
-
-/* [89]    PathAlternative ::= PathSequence ( '|' PathSequence )* */
-private PropertyPathExpression PathAlternative() : {
-    PropertyPathExpression ppe, pathSequence; } {
-
-    ppe=PathSequence()
-    (
-        "|"
-        pathSequence=PathSequence() {
-        ppe = new BinaryPropertyPathOperation("|", ppe, pathSequence); }
-    )* {
-    return ppe; }
-}
-
-/* [90]    PathSequence ::= PathEltOrInverse ( '/' PathEltOrInverse )* */
-private PropertyPathExpression PathSequence() : {
-    PropertyPathExpression ppe, pathEltOrInverse; } {
-
-    ppe=PathEltOrInverse()
-    (
-        "/"
-        pathEltOrInverse=PathEltOrInverse() {
-        ppe = new BinaryPropertyPathOperation("/", ppe, pathEltOrInverse); }
-    )* {
-    return ppe; }
-}
-
-/* [91]    PathElt ::= PathPrimary PathMod? */
-private PropertyPathExpression PathElt() : {
-    PropertyPathExpression ppe;
-    String pathMode; } {
-
-    ppe=PathPrimary()
-    (
-        pathMode=PathMod() {
-        ppe = new UnaryPropertyPathOperation(pathMode, ppe); }
-    )? {
-    return ppe; }
-}
-
-/* [92]    PathEltOrInverse ::= PathElt | '^' PathElt */
-private PropertyPathExpression PathEltOrInverse() : {
-    PropertyPathExpression ppe; } {
-
-    (
-        ppe=PathElt() {
-        return ppe; }
-    |
-        "^"
-        ppe=PathElt() {
-        return new UnaryPropertyPathOperation("^", ppe); }
-    )
-}
-
-/* [93]    PathMod ::= '?' | '*' | '+' */
-private String PathMod() : {} {
-    (
-        "?" {
-        return "?"; }
-    |
-        "*" {
-        return "*"; }
-    |
-        "+" {
-        return "+"; }
-    )
-}
-
-/* [94]    PathPrimary ::= iri | 'a' | '!' PathNegatedPropertySet | '(' Path 
')' */
-private PropertyPathExpression PathPrimary() : {
-    PropertyPathExpression ppe;
-    IRI uriRef; } {
-
-    (
-        uriRef=IRI() {
-        return new PredicatePath(uriRef); }
-    |
-        "a" {
-        return new PredicatePath(RDF_TYPE); }
-    |
-        "!"
-        ppe=PathNegatedPropertySet() {
-        return new UnaryPropertyPathOperation("!", ppe); }
-    |
-        "("
-        ppe=Path() {
-        return ppe; }
-        ")"
-    )
-}
-
-/* [95]    PathNegatedPropertySet ::= PathOneInPropertySet | '(' ( 
PathOneInPropertySet ( '|' PathOneInPropertySet )* )? ')' */
-private PropertyPathExpression PathNegatedPropertySet() : {
-    PropertyPathExpression pathOneInPropertySet;
-    PropertySet propertySet = new PropertySet(); } {
-
-    (
-        pathOneInPropertySet=PathOneInPropertySet() {
-        return pathOneInPropertySet; }
-    |
-        "("
-        (
-            pathOneInPropertySet=PathOneInPropertySet() {
-            propertySet.addElement(pathOneInPropertySet); }
-            (
-                "|"
-                pathOneInPropertySet=PathOneInPropertySet() {
-                propertySet.addElement(pathOneInPropertySet); }
-            )*
-        )?
-        ")" {
-        return propertySet; }
-    )
-}
-
-/* [96]    PathOneInPropertySet ::= iri | 'a' | '^' ( iri | 'a' ) */
-private PropertyPathExpression PathOneInPropertySet() : {
-    IRI uriRef; } {
-
-    (
-        uriRef=IRI() {
-        return new PredicatePath(uriRef); }
-    |
-        "a" {
-        return new PredicatePath(RDF_TYPE); }
-    |
-        "^"
-        (
-            uriRef=IRI() {
-            return new UnaryPropertyPathOperation("^", new 
PredicatePath(uriRef)); }
-        |
-            "a" {
-            return new UnaryPropertyPathOperation("^", new 
PredicatePath(RDF_TYPE)); }
-        )
-    )
-}
-
-/* [97]    Integer ::= INTEGER */
-
-// Fill in the specified set of TriplePattern and returns the subject node
-/* [98]    TriplesNode ::= Collection |  BlankNodePropertyList */
-private ResourceOrVariable TriplesNode(Set<TriplePattern> triplePatterns) : {
-    ResourceOrVariable subject; } {
-    (
-        subject=Collection(triplePatterns)
-    |
-        subject=BlankNodePropertyList(triplePatterns)
-    ) {
-    return subject; }
-}
-
-/* [99]    BlankNodePropertyList ::= '[' PropertyListNotEmpty ']' */
-private ResourceOrVariable BlankNodePropertyList(Set<TriplePattern> 
triplePatterns) : { } {
-    {
-    ResourceOrVariable subject = getNewBNode();
-    }
-    "["
-    PropertyListNotEmpty(subject, triplePatterns)
-    "]" {
-    return subject; }
-}
-
-/* [100] TriplesNodePath ::= CollectionPath | BlankNodePropertyListPath */
-private ResourceOrVariable TriplesNodePath(Set<PropertyPathPattern> 
propertyPathPatterns) : {
-    ResourceOrVariable subject; } {
-    (
-        subject=CollectionPath(propertyPathPatterns)
-    |
-        subject=BlankNodePropertyListPath(propertyPathPatterns)
-    ) {
-    return subject; }
-}
-
-
-/* [101] BlankNodePropertyListPath ::= '[' PropertyListPathNotEmpty ']' */
-private ResourceOrVariable BlankNodePropertyListPath(Set<PropertyPathPattern> 
propertyPathPatterns) : {} {
-    {
-    ResourceOrVariable subject = getNewBNode();
-    }
-    "["
-    PropertyListPathNotEmpty(subject, propertyPathPatterns)
-    "]" {
-    return subject; }
-}
-
-/* [102]    Collection ::= '(' GraphNode+ ')' */
-private ResourceOrVariable Collection(Set<TriplePattern> triplePatterns) : {
-    ResourceOrVariable node;
-    List<ResourceOrVariable> nodes = new ArrayList<ResourceOrVariable>(); } {
-
-    "("
-    (
-        node=GraphNode(triplePatterns) {
-        nodes.add(node); }
-    )+
-    ")" {
-    return addTriplePatterns(triplePatterns, nodes); }
-}
-
-/* [103]    CollectionPath ::= '(' GraphNodePath+ ')' */
-private ResourceOrVariable CollectionPath(Set<PropertyPathPattern> 
propertyPathPatterns) : {
-    ResourceOrVariable node;
-    List<ResourceOrVariable> nodes = new ArrayList<ResourceOrVariable>(); } {
-
-    "("
-    (
-        node=GraphNodePath(propertyPathPatterns) {
-        nodes.add(node); }
-    )+
-    ")" {
-    return addPropertyPathPatterns(propertyPathPatterns, nodes); }
-}
-
-/* [104]    GraphNode ::= VarOrTerm | TriplesNode */
-private ResourceOrVariable GraphNode(Set<TriplePattern> triplePatterns) : {
-    ResourceOrVariable node; } {
-    (
-        node=VarOrTerm()
-    |
-        node=TriplesNode(triplePatterns)
-    ) {
-    return node; }
-}
-
-/* [105]    GraphNodePath ::= VarOrTerm | TriplesNodePath */
-private ResourceOrVariable GraphNodePath(Set<PropertyPathPattern> 
propertyPathPatterns) : {
-    ResourceOrVariable node; } {
-    (
-        node=VarOrTerm()
-    |
-        node=TriplesNodePath(propertyPathPatterns)
-    ) {
-    return node; }
-}
-
-/* [106]    VarOrTerm ::= Var | GraphTerm */
-private ResourceOrVariable VarOrTerm() : {
-    ResourceOrVariable r;
-    Variable v; } {
-
-    (
-        v=Var() {
-        return new ResourceOrVariable(v); }
-    |
-        r=GraphTerm() {
-        return r; }
-    )
-}
-
-/* [107]    VarOrIRI ::= Var | iri */
-private UriRefOrVariable VarOrIRI() : {
-    Variable var;
-    IRI uriRef; } {
-
-    (
-    var=Var() {
-    return new UriRefOrVariable(var); }
-    |
-    uriRef=IRI() {
-    return new UriRefOrVariable(uriRef); }
-    )
-}
-
-/* [108]    Var ::= VAR1 | VAR2 */
-private Variable Var() : {
-    Token t;} {
-
-    (t=<VAR1> | t=<VAR2>) {
-    return createVariable(t.image); }
-}
-
-/* [109]    GraphTerm ::= IRI | RDFLiteral | NumericLiteral | BooleanLiteral | 
BlankNode | NIL */
-private ResourceOrVariable GraphTerm() : {
-    ResourceOrVariable bNode = null;
-    RDFTerm r = null; } {
-
-    (r=IRI() | r=RDFLiteral() | r=NumericLiteral() | r=BooleanLiteral() | 
bNode=BlankNode() | <NIL> {
-        r = RDF_NIL; }) {
-    if (bNode == null) {
-        return new ResourceOrVariable(r);
-    }
-    return bNode; }
-}
-
-/* [110]    Expression ::= ConditionalOrExpression */
-private Expression Expression() : {
-    Expression e; } {
-
-    e=ConditionalOrExpression() {
-    return e; }
-}
-
-/* [111]    ConditionalOrExpression ::= ConditionalAndExpression ( '||' 
ConditionalAndExpression )* */
-private Expression ConditionalOrExpression() : {
-    Expression e, ae; } {
-
-    e=ConditionalAndExpression()
-    (
-        "||" ae=ConditionalAndExpression() {
-        e = new BinaryOperation("||", e, ae); }
-    )* {
-    return e; }
-}
-
-/* [112]    ConditionalAndExpression ::= ValueLogical ( '&&' ValueLogical )* */
-private Expression ConditionalAndExpression() : {
-    Expression e, e2; } {
-
-    e=ValueLogical()
-    (
-        "&&" e2=ValueLogical() {
-        e = new BinaryOperation("&&", e, e2); }
-    )* {
-    return e; }
-}
-
-/* [113]    ValueLogical ::= RelationalExpression */
-private Expression ValueLogical() : {
-    Expression e; } {
-
-    e=RelationalExpression() {
-    return e; }
-}
-
-/* [114]    RelationalExpression ::= NumericExpression ( '=' NumericExpression 
| '!=' NumericExpression | '<' NumericExpression | '>' NumericExpression | '<=' 
NumericExpression | '>=' NumericExpression | 'IN' ExpressionList | 'NOT' 'IN' 
ExpressionList )? */
-private Expression RelationalExpression() : {
-    Expression e, e2; 
-    List<Expression> l; } {
-
-    e=NumericExpression()
-    (
-        "=" e2=NumericExpression() {
-        e = new BinaryOperation("=", e, e2); }
-    |
-        "!=" e2=NumericExpression() {
-        e = new BinaryOperation("!=", e, e2); }
-    |
-        "<" e2=NumericExpression() {
-        e = new BinaryOperation("<", e, e2); }
-    |
-        ">" e2=NumericExpression() {
-        e = new BinaryOperation(">", e, e2); }
-    |
-        "<=" e2=NumericExpression() {
-        e = new BinaryOperation("<=", e, e2); }
-    |
-        ">=" e2=NumericExpression() {
-        e = new BinaryOperation(">=", e, e2); }
-    |
-        <IN> l=ExpressionList() {
-        e = new RhsListBinaryOperation("IN", e, l); }
-    |
-        <NOT> <IN> l=ExpressionList() {
-        e = new RhsListBinaryOperation("NOT IN", e, l); }
-    )? {
-    return e; }
-}
-
-/* [115]    NumericExpression ::= AdditiveExpression */
-private Expression NumericExpression() : {
-    Expression e; } {
-
-    e=AdditiveExpression() {
-    return e; }
-}
-
-/* [116]    AdditiveExpression ::= MultiplicativeExpression ( '+' 
MultiplicativeExpression | '-' MultiplicativeExpression | ( 
NumericLiteralPositive | NumericLiteralNegative ) ( ( '*' UnaryExpression ) | ( 
'/' UnaryExpression ) )* )* */
-private Expression AdditiveExpression() : {
-    Expression e, e2, u;
-    Literal l; } {
-
-    e=MultiplicativeExpression()
-    (
-        "+" e2=MultiplicativeExpression() {
-        e = new BinaryOperation("+", e, e2); }
-    |
-        "-" e2=MultiplicativeExpression() {
-        e = new BinaryOperation("-", e, e2); }
-    |
-        (
-            (
-                l=NumericLiteralPositive()
-            |
-                l=NumericLiteralNegative()
-            ) {
-            e2 = new LiteralExpression(l); }
-            (
-                "*" u=UnaryExpression() {
-                e2 = new BinaryOperation("*", e2, u); }
-            |
-                "/" u=UnaryExpression() {
-                e2 = new BinaryOperation("/", e2, u); }
-            )*
-        ) {
-        e = new BinaryOperation("+", e, e2); }
-    )* {
-    return e; }
-}
-
-/* [117]    MultiplicativeExpression ::= UnaryExpression ( '*' UnaryExpression 
| '/' UnaryExpression )* */
-private Expression MultiplicativeExpression() : {
-    Expression e, e2; } {
-
-    e=UnaryExpression()
-    (
-        "*" e2=UnaryExpression() {
-        e = new BinaryOperation("*", e, e2); }
-    |
-        "/" e2=UnaryExpression() {
-        e = new BinaryOperation("/", e, e2); }
-    )* {
-    return e; }
-}
-
-/* [118]    UnaryExpression ::=   '!' PrimaryExpression  |  '+' 
PrimaryExpression  | '-' PrimaryExpression  | PrimaryExpression */
-private Expression UnaryExpression() : {
-    Expression e; } {
-
-        "!" e=PrimaryExpression() {
-        return new UnaryOperation("!", e); }
-    |
-        "+" e=PrimaryExpression() {
-        return new UnaryOperation("+", e); }
-    |
-        "-" e=PrimaryExpression() {
-        return new UnaryOperation("-", e); }
-    |
-        e=PrimaryExpression() {
-        return e; }
-}
-
-/* [119]    PrimaryExpression ::= BrackettedExpression | BuiltInCall | 
iriOrFunction | RDFLiteral | NumericLiteral | BooleanLiteral | Var */
-private Expression PrimaryExpression() : {
-    Expression e = null;
-    Literal l = null; } {
-
-    (
-        e=BrackettedExpression()
-/* There is a capture all names in BuiltInCall, so put it last
-    |
-        e=BuiltInCall()
-*/
-    |
-        e=IRIOrFunction()
-    |
-        l=RDFLiteral()
-    |
-        l=NumericLiteral()
-    |
-        l=BooleanLiteral()
-    |
-        e=Var()
-    |
-        e=BuiltInCall()
-    ) {
-    if (l != null) {
-        return new LiteralExpression(l);
-    }
-    return e; }
-}
-
-/* [120]    BrackettedExpression ::= '(' Expression ')' */
-private Expression BrackettedExpression() : {
-    Expression e; } {
-
-    "("
-    e=Expression()
-    ")" {
-    return e; }
-}
-
-/* [121]    BuiltInCall ::= Aggregate 
-|    'STR' '(' Expression ')' 
-|    'LANG' '(' Expression ')' 
-|    'LANGMATCHES' '(' Expression ',' Expression ')' 
-|    'DATATYPE' '(' Expression ')' 
-|    'BOUND' '(' Var ')' 
-|    'IRI' '(' Expression ')' 
-|    'URI' '(' Expression ')' 
-|    'BNODE' ( '(' Expression ')' | NIL ) 
-|    'RAND' NIL 
-|    'ABS' '(' Expression ')' 
-|    'CEIL' '(' Expression ')' 
-|    'FLOOR' '(' Expression ')' 
-|    'ROUND' '(' Expression ')' 
-|    'CONCAT' ExpressionList 
-|    SubstringExpression 
-|    'STRLEN' '(' Expression ')' 
-|    StrReplaceExpression 
-|    'UCASE' '(' Expression ')' 
-|    'LCASE' '(' Expression ')' 
-|    'ENCODE_FOR_URI' '(' Expression ')' 
-|    'CONTAINS' '(' Expression ',' Expression ')' 
-|    'STRSTARTS' '(' Expression ',' Expression ')' 
-|    'STRENDS' '(' Expression ',' Expression ')' 
-|    'STRBEFORE' '(' Expression ',' Expression ')' 
-|    'STRAFTER' '(' Expression ',' Expression ')' 
-|    'YEAR' '(' Expression ')' 
-|    'MONTH' '(' Expression ')' 
-|    'DAY' '(' Expression ')' 
-|    'HOURS' '(' Expression ')' 
-|    'MINUTES' '(' Expression ')' 
-|    'SECONDS' '(' Expression ')' 
-|    'TIMEZONE' '(' Expression ')' 
-|    'TZ' '(' Expression ')' 
-|    'NOW' NIL 
-|    'UUID' NIL 
-|    'STRUUID' NIL 
-|    'MD5' '(' Expression ')' 
-|    'SHA1' '(' Expression ')' 
-|    'SHA256' '(' Expression ')' 
-|    'SHA384' '(' Expression ')' 
-|    'SHA512' '(' Expression ')' 
-|    'COALESCE' ExpressionList 
-|    'IF' '(' Expression ',' Expression ',' Expression ')' 
-|    'STRLANG' '(' Expression ',' Expression ')' 
-|    'STRDT' '(' Expression ',' Expression ')' 
-|    'sameTerm' '(' Expression ',' Expression ')' 
-|    'isIRI' '(' Expression ')' 
-|    'isURI' '(' Expression ')' 
-|    'isBLANK' '(' Expression ')' 
-|    'isLITERAL' '(' Expression ')' 
-|    'isNUMERIC' '(' Expression ')' 
-|    RegexExpression 
-|    ExistsFunc 
-|    NotExistsFunc
-
-[122]    RegexExpression ::= 'REGEX' '(' Expression ',' Expression ( ',' 
Expression )? ')'
-[123]    SubstringExpression ::= 'SUBSTR' '(' Expression ',' Expression ( ',' 
Expression )? ')'
-[124]    StrReplaceExpression ::= 'REPLACE' '(' Expression ',' Expression ',' 
Expression ( ',' Expression )? ')'
-
-[127]    Aggregate ::= 'COUNT' '(' 'DISTINCT'? ( '*' | Expression ) ')' 
-| 'SUM' '(' 'DISTINCT'? Expression ')' 
-| 'MIN' '(' 'DISTINCT'? Expression ')' 
-| 'MAX' '(' 'DISTINCT'? Expression ')' 
-| 'AVG' '(' 'DISTINCT'? Expression ')' 
-| 'SAMPLE' '(' 'DISTINCT'? Expression ')' 
-| 'GROUP_CONCAT' '(' 'DISTINCT'? Expression ( ';' 'SEPARATOR' '=' String )? ')'
-
-*/
-
-private BuiltInCall BuiltInCall() : {
-    List<Expression> args = new ArrayList<Expression>();
-    String name, s;
-    Expression e; } {
-    (
-        <GROUP_CONCAT> {
-        name = "GROUP_CONCAT"; }
-        "("
-        (
-            <DISTINCT>
-        )?
-        (
-            e=Expression() {
-            args.add(e); }
-            (
-                ";"
-                <SEPARATOR>
-                "="
-                s = String()
-            )?
-        )
-        ")"
-    |
-        <BOUND> {
-        name = "BOUND"; }
-        "("
-        e=Var() {
-        args.add(e); }
-        ")"
-    |
-        <BNODE> {
-        name = "BNODE"; }
-        (
-            (
-                "("
-                e=Expression() {
-                args.add(e); }
-                ")"
-            )
-        |
-            <NIL>
-        )
-    |
-        <RAND> {
-        name = "RAND"; }
-        <NIL>
-    |
-        <CONCAT> {
-        name = "CONCAT"; }
-        args=ExpressionList()
-    |
-        <NOW> {
-        name = "NOW"; }
-        <NIL>
-    |
-        <UUID> {
-        name = "UUID"; }
-        <NIL>
-    |
-        <STRUUID> {
-        name = "STRUUID"; }
-        <NIL>
-    |
-        <COALESCE> {
-        name = "COALESCE"; }
-        args=ExpressionList()
-    |
-        e=NotExistsFunc() {
-        return (BuiltInCall) e; }
-    |
-        e=ExistsFunc() {
-        return (BuiltInCall) e; }
-    |
-        name=BuiltInCallName()
-        "("
-        (
-            <DISTINCT>
-        )?
-        (
-            "*"
-        |
-            (
-                e=Expression() {
-                args.add(e); }
-                (
-                    ","
-                    e=Expression() {
-                    args.add(e); }
-                )*
-            )
-        )
-        ")"
-    ) {
-    return new BuiltInCall(name, args); }
-}
-
-private String BuiltInCallName() : {
-    Token t;} {
-
-    t=<BUILT_IN_CALL_NAME> {
-    return t.image; }
-}
-
-/* [125]    ExistsFunc ::= 'EXISTS' GroupGraphPattern */
-private Expression ExistsFunc() : {
-    GroupGraphPattern pattern; 
-    PatternExistenceCondition patternExistenceCondition; } {
-
-    <EXISTS>
-    pattern = GroupGraphPattern() {
-    patternExistenceCondition = new PatternExistenceCondition();
-    patternExistenceCondition.setPattern(pattern);
-    return patternExistenceCondition; }
-}
-
-/* [126]    NotExistsFunc ::= 'NOT' 'EXISTS' GroupGraphPattern */
-private Expression NotExistsFunc() : {
-    GroupGraphPattern pattern; 
-    PatternExistenceCondition patternExistenceCondition; } {
-
-    <NOT> <EXISTS>
-    pattern = GroupGraphPattern() {
-    patternExistenceCondition = new PatternExistenceCondition();
-    patternExistenceCondition.setPattern(pattern);
-    patternExistenceCondition.setExistenceTest(false);
-    return patternExistenceCondition; }
-}
-
-/* [128]    IRIOrFunction ::= iri ArgList? */
-private Expression IRIOrFunction() : {
-    IRI uriRef;
-    List<Expression> args; } {
-
-    uriRef=IRI()
-    (
-        args=ArgList() {
-        return new FunctionCall(uriRef, args); }
-    )? {
-    return new UriRefExpression(uriRef); }
-}
-
-/* [129]    RDFLiteral ::= String ( LANGTAG | ( '^^' iri ) )? */
-private Literal RDFLiteral() : {
-    Token t;
-    String s;
-    IRI type; } {
-
-    s = String()
-    (
-        t=<LANGTAG> {
-        return new PlainLiteralImpl(s, new Language(t.image.substring(1))); }
-    |
-        (
-            "^^"
-            type=IRI() {
-            return new TypedLiteralImpl(s, type); }
-        )
-    )? {
-    return new PlainLiteralImpl(s); }
-}
-
-/* [130]    NumericLiteral ::= NumericLiteralUnsigned | NumericLiteralPositive 
| NumericLiteralNegative */
-private Literal NumericLiteral() : {
-    Literal l; } {
-
-    (
-        l=NumericLiteralUnsigned()
-    |
-        l=NumericLiteralPositive()
-    |
-        l=NumericLiteralNegative()
-    ) {
-    return l; }
-}
-
-/* [131]    NumericLiteralUnsigned ::= INTEGER |  DECIMAL |  DOUBLE */
-private Literal NumericLiteralUnsigned() : {
-    Token t; } {
-
-        t=<INTEGER> {
-        return 
LiteralFactory.getInstance().createTypedLiteral(Long.valueOf(t.image)); }
-    |
-        t=<DECIMAL> {
-        return 
LiteralFactory.getInstance().createTypedLiteral(Float.valueOf(t.image)); }
-    |
-        t=<DOUBLE> {
-        return 
LiteralFactory.getInstance().createTypedLiteral(Double.valueOf(t.image)); }
-}
-
-/* [132]    NumericLiteralPositive ::= INTEGER_POSITIVE |  DECIMAL_POSITIVE |  
DOUBLE_POSITIVE */
-private Literal NumericLiteralPositive() : {
-    Token t; } {
-
-        t=<INTEGER_POSITIVE> {
-        return 
LiteralFactory.getInstance().createTypedLiteral(Long.valueOf(t.image)); }
-    |
-        t=<DECIMAL_POSITIVE> {
-        return 
LiteralFactory.getInstance().createTypedLiteral(Float.valueOf(t.image)); }
-    |
-        t=<DOUBLE_POSITIVE> {
-        return 
LiteralFactory.getInstance().createTypedLiteral(Double.valueOf(t.image)); }
-}
-
-/* [133]    NumericLiteralNegative ::= INTEGER_NEGATIVE | DECIMAL_NEGATIVE | 
DOUBLE_NEGATIVE */
-private Literal NumericLiteralNegative() : {
-    Token t; } {
-
-        t=<INTEGER_NEGATIVE> {
-        return 
LiteralFactory.getInstance().createTypedLiteral(Long.valueOf(t.image)); }
-    |
-        t=<DECIMAL_NEGATIVE> {
-        return 
LiteralFactory.getInstance().createTypedLiteral(Float.valueOf(t.image)); }
-    |
-        t=<DOUBLE_NEGATIVE> {
-        return 
LiteralFactory.getInstance().createTypedLiteral(Double.valueOf(t.image)); }
-}
-
-/* [134]    BooleanLiteral ::= 'true' | 'false' */
-private Literal BooleanLiteral() : {} {
-
-        <TRUE> {
-        return LiteralFactory.getInstance().createTypedLiteral(true); }
-    |
-        <FALSE> {
-        return LiteralFactory.getInstance().createTypedLiteral(false); }
-}
-
-/* [135]    String ::= STRING_LITERAL1 | STRING_LITERAL2 | 
STRING_LITERAL_LONG1 | STRING_LITERAL_LONG2 */
-private String String() : {
-    Token t; } {
-
-        t=<STRING_LITERAL1> {
-        return unquote(t.image) ; }
-    |
-        t=<STRING_LITERAL2> {
-        return unquote(t.image) ; }
-    |
-        t=<STRING_LITERAL_LONG1> {
-        return unTripleQuote(t.image) ; }
-    |
-        t=<STRING_LITERAL_LONG2> {
-        return unTripleQuote(t.image) ; }
-}
-
-/* [136]    iri ::= IRIREF |  PrefixedName */
-private IRI IRI() : {
-    IRI uriRef;
-    Token t; } {
-
-        t=<IRIREF> {
-        return createUriRef(unquote(t.image)); }
-    |
-        uriRef=PrefixedName() {
-        return uriRef; }
-}
-
-/* [137]    PrefixedName ::= PNAME_LN | PNAME_NS */
-private IRI PrefixedName() : {
-    Token t; } {
-
-    ( t=<PNAME_LN> | t=<PNAME_NS> ) {
-    return createUriRef(t.image); }
-}
-
-/* [138]    BlankNode ::= BLANK_NODE_LABEL | ANON */
-private ResourceOrVariable BlankNode() : {
-    Token t; } {
-
-        t=<BLANK_NODE_LABEL> {
-        return getBNode(t.image); }
-    |
-        <ANON> {
-        return getNewBNode(); }
-}
-
-
-TOKEN : {
-  /* [139]    IRIREF ::= '<' ([^<>"{}|^`\]-[#x00-#x20])* '>' */
-  < IRIREF : "<" ( ~["<", ">", "\"", "{", "}", "|", "^", "`", "\\", 
"\u0000"-"\u0020"] )* ">" >
-  |
-  /* [140]    PNAME_NS ::= PN_PREFIX? ':' */
-  < PNAME_NS : (<PN_PREFIX>)? ":" >
-  |
-  /* [141]    PNAME_LN ::= PNAME_NS PN_LOCAL */
-  < PNAME_LN : <PNAME_NS> <PN_LOCAL> >
-  |
-  /* [142]    BLANK_NODE_LABEL ::= '_:' ( PN_CHARS_U | [0-9] ) 
((PN_CHARS|'.')* PN_CHARS)? */
-  < BLANK_NODE_LABEL : "_:" ( <PN_CHARS_U> | ["0"-"9"] ) ( ( <PN_CHARS> | "." 
)* <PN_CHARS> )? >
-  |
-  /* [143]    VAR1 ::= '?' VARNAME */
-  < VAR1 : "?" <VARNAME> >
-  |
-  /* [144]    VAR2 ::= '$' VARNAME */
-  < VAR2 : "$" <VARNAME> >
-  |
-  /* [145]    LANGTAG ::= '@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)* */
-  < LANGTAG : "@" (["a"-"z", "A"-"Z"])+ ( "-" (["a"-"z", "A"-"Z", "0"-"9"])+ 
)* >
-  |
-  < BUILT_IN_CALL_NAME : ["a"-"z", "A"-"Z", "_"] (["a"-"z", "A"-"Z", "0"-"9", 
"_"])* >
-}
-
-TOKEN : {
-  < #Z_9 : ["0"-"9"] >
-  |
-  < #Z_9r : (<Z_9>)+ >
-  |
-  < #Z_9o : (<Z_9>)* >
-  |
-  /* [146]    INTEGER ::= [0-9]+ */
-  < INTEGER : <Z_9r> >
-  |
-  /* [147]    DECIMAL ::= [0-9]* '.' [0-9]+ */
-  < DECIMAL : <Z_9o> "." <Z_9r> >
-  |
-  /* [148]    DOUBLE ::= [0-9]+ '.' [0-9]* EXPONENT | '.' ([0-9])+ EXPONENT | 
([0-9])+ EXPONENT */
-  < DOUBLE : ( <Z_9r> "." <Z_9o>  <EXPONENT> ) | ( "." <Z_9r> <EXPONENT> ) | ( 
<Z_9r> <EXPONENT> ) >
-  |
-  /* [149]    INTEGER_POSITIVE ::= '+' INTEGER */
-  < INTEGER_POSITIVE : "+" <INTEGER> >
-  |
-  /* [150]    DECIMAL_POSITIVE ::= '+' DECIMAL */
-  < DECIMAL_POSITIVE : "+" <DECIMAL> >
-  |
-  /* [151]    DOUBLE_POSITIVE ::= '+' DOUBLE */
-  < DOUBLE_POSITIVE : "+" <DOUBLE> >
-  |
-  /* [152]    INTEGER_NEGATIVE ::= '-' INTEGER */
-  < INTEGER_NEGATIVE : "-" <INTEGER> >
-  |
-  /* [153]    DECIMAL_NEGATIVE ::= '-' DECIMAL */
-  < DECIMAL_NEGATIVE : "-" <DECIMAL> >
-  |
-  /* [154]    DOUBLE_NEGATIVE ::= '-' DOUBLE */
-  < DOUBLE_NEGATIVE : "-" <DOUBLE> >
-  |
-  /* [155]    EXPONENT ::= [eE] [+-]? [0-9]+ */
-  < #EXPONENT : ["e","E"] (["+","-"])? <Z_9r> >
-}
-
-TOKEN : {
-  /* [156]    STRING_LITERAL1 ::= "'" ( ([^#x27#x5C#xA#xD]) | ECHAR )* "'" */
-  < STRING_LITERAL1 : "'" ( ~["'", "\\", "\r", "\n"] | <ECHAR> )* "'" >
-  |
-  /* [157]    STRING_LITERAL2 ::= '"' ( ([^#x22#x5C#xA#xD]) | ECHAR )* '"' */
-  < STRING_LITERAL2 : "\"" ( ~["\"", "\\", "\r", "\n"] | <ECHAR> )* "\"" >
-  |
-  /* [158]    STRING_LITERAL_LONG1 ::= "'''" ( ( "'" | "''" )? ( [^'\] | ECHAR 
) )* "'''" */
-  < STRING_LITERAL_LONG1 : "'''" ( ( "'" | "''" )? ( ~["'","\\"] | <ECHAR> ) 
)* "'''" >
-  |
-  /* [159]    STRING_LITERAL_LONG2 ::= '"""' ( ( '"' | '""' )? ( [^"\] | ECHAR 
) )* '"""' */
-  < STRING_LITERAL_LONG2 : "\"\"\"" ( ( "\"" | "\"\"" )? ( ~["\"","\\"] | 
<ECHAR> ) )* "\"\"\"" >
-  |
-  /* [160]    #ECHAR ::= '\' [tbnrf\"'] */
-  < #ECHAR : "\\" ["t","b","n","r","f","\\","\"","'"] >
-}
-
-TOKEN : {
-  /* [161]    NIL ::= '(' WS* ')' */
-  < NIL : "(" (<WS>)* ")" >
-  |
-  /* [162]    WS ::= #x20 | #x9 | #xD | #xA */
-  < #WS : " " | "\t" | "\n" | "\r" >
-  |
-  /* [163]    ANON ::= '[' WS* ']' */
-  < ANON : "[" (<WS>)* "]" >
-}
-
-TOKEN : {
-  /* [164]    #PN_CHARS_BASE ::= [A-Z] | [a-z] | [#x00C0-#x00D6] | 
[#x00D8-#x00F6] | [#x00F8-#x02FF] | [#x0370-#x037D] | [#x037F-#x1FFF] | 
[#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | 
[#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] */
-  < #PN_CHARS_BASE : ["A"-"Z", "a"-"z", "\u00C0"-"\u00D6", "\u00D8"-"\u00F6", 
"\u00F8"-"\u02FF", "\u0370"-"\u037D", "\u037F"-"\u1FFF", "\u200C"-"\u200D", 
"\u2070"-"\u218F", "\u2C00"-"\u2FEF", "\u3001"-"\uD7FF", "\uF900"-"\uFDCF", 
"\uFDF0"-"\uFFFD"] >
-  |
-  /* [165]    #PN_CHARS_U ::= PN_CHARS_BASE | '_' */
-  < #PN_CHARS_U : <PN_CHARS_BASE> | "_" >
-  |
-  /* [166]    #VARNAME ::= ( PN_CHARS_U | [0-9] ) ( PN_CHARS_U | [0-9] | 
#x00B7 | [#x0300-#x036F] | [#x203F-#x2040] )* */
-  < #VARNAME : (<PN_CHARS_U> | <Z_9>) (<PN_CHARS_U> | <Z_9> | "\u00b7" | 
["\u0300"-"\u036f"] | ["\u203f"-"\u2040"])* >
-  |
-  /* [167]    #PN_CHARS ::= PN_CHARS_U | '-' | [0-9] | #x00B7 | 
[#x0300-#x036F] | [#x203F-#x2040] */
-  < #PN_CHARS : <PN_CHARS_U> | "-" | <Z_9> | "\u00b7" | ["\u0300"-"\u036f"] | 
["\u203f"-"\u2040"] >
-  |
-  /* [168]    PN_PREFIX ::= PN_CHARS_BASE ((PN_CHARS|'.')* PN_CHARS)? */
-  < PN_PREFIX : <PN_CHARS_BASE> ((<PN_CHARS> | "." )* <PN_CHARS>)? >
-  |
-  /* [169]    PN_LOCAL ::= ( PN_CHARS_U | ':' | [0-9] | PLX ) ((PN_CHARS | '.' 
| ':' | PLX)* (PN_CHARS | ':' | PLX) )? */
-  /* Note that SPARQL local names allow leading digits while XML local names 
do not. */
-  < PN_LOCAL : (<PN_CHARS_U> | ":" | <Z_9> | <PLX>) ((<PN_CHARS> | "." | ":" | 
<PLX>)* (<PN_CHARS> | ":" | <PLX>) )? >
-  |
-  /* [170]    PLX ::= PERCENT | PN_LOCAL_ESC */
-  < PLX : <PERCENT> | <PN_LOCAL_ESC> >
-  |
-  /* [171]    PERCENT ::= '%' HEX HEX */
-  < PERCENT : "%" <HEX> <HEX> >
-  |
-  /* [172]    HEX ::= [0-9] | [A-F] | [a-f] */
-  < #HEX : <Z_9> | ["A"-"F", "a"-"f"] >
-  |
-  /* [173]    PN_LOCAL_ESC ::= '\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&' | 
"'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' | '/' | '?' | '#' | '@' | '%' ) */
-  < PN_LOCAL_ESC : "\\" ( "_" | "~" | "." | "-" | "!" | "$" | "&" | "'" | "(" 
| ")" | "*" | "+" | "," | ";" | "=" | "/" | "?" | "#" | "@" | "%" ) >
-}

Reply via email to