You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2016/03/13 18:27:57 UTC

[11/16] jena git commit: JENA-1156: Use standard SQL naming. Add keywords to extended SPARQL.

JENA-1156: Use standard SQL naming.  Add keywords to extended SPARQL.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/6e588daa
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/6e588daa
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/6e588daa

Branch: refs/heads/master
Commit: 6e588daa7a9c94fe01f511c5f26aa071bd936b60
Parents: 69ef0a7
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Mar 12 21:38:59 2016 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Mar 13 17:22:25 2016 +0000

----------------------------------------------------------------------
 jena-arq/Grammar/arq.jj                         |   20 +-
 jena-arq/Grammar/master.jj                      |   27 +-
 jena-arq/Grammar/sparql_11.jj                   |    8 +-
 jena-arq/Grammar/tokens.txt                     |    7 +
 .../expr/aggregate/AggregateRegistry.java       |    4 +-
 .../expr/aggregate/AggregatorFactory.java       |    4 +
 .../jena/sparql/expr/aggregate/lib/AggURI.java  |   29 +
 .../expr/aggregate/lib/StandardAggregates.java  |   72 +
 .../aggregate/lib/StandardCustomAggregates.java |   65 -
 .../apache/jena/sparql/lang/arq/ARQParser.java  | 1521 ++++++++++--------
 .../sparql/lang/arq/ARQParserConstants.java     |  313 ++--
 .../sparql/lang/arq/ARQParserTokenManager.java  | 1424 ++++++++--------
 .../sparql/lang/sparql_11/SPARQLParser11.java   |   17 +-
 .../lang/sparql_11/SPARQLParser11Constants.java |  301 ++--
 .../sparql_11/SPARQLParser11TokenManager.java   | 1407 ++++++++--------
 .../sparql/expr/TestStatisticsAggregates.java   |  231 ++-
 16 files changed, 3028 insertions(+), 2422 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/6e588daa/jena-arq/Grammar/arq.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/arq.jj b/jena-arq/Grammar/arq.jj
index 1d30d0f..5169735 100644
--- a/jena-arq/Grammar/arq.jj
+++ b/jena-arq/Grammar/arq.jj
@@ -31,6 +31,7 @@ import org.apache.jena.sparql.syntax.* ;
 import org.apache.jena.sparql.expr.* ;
 import org.apache.jena.sparql.path.* ;
 import org.apache.jena.sparql.expr.aggregate.* ;
+import org.apache.jena.sparql.expr.aggregate.lib.* ;
 import org.apache.jena.update.* ;
 import org.apache.jena.sparql.modify.request.* ;
 import org.apache.jena.sparql.core.Quad ;
@@ -1463,6 +1464,18 @@ Expr Aggregate() : { Aggregator agg = null ; String sep = null ;
     )?
     <RPAREN>
     { agg = AggregatorFactory.createGroupConcat(distinct, expr, sep, ordered) ; }
+  | t = <STDEV> <LPAREN> ( <DISTINCT> { distinct = true ; } )? expr = Expression() <RPAREN>
+    { agg = AggregatorFactory.createCustom(AggURI.stdev, distinct, expr) ; }
+  | t = <STDEV_SAMP> <LPAREN> ( <DISTINCT> { distinct = true ; } )? expr = Expression() <RPAREN>
+    { agg = AggregatorFactory.createCustom(AggURI.stdev_samp, distinct, expr) ; }
+  | t = <STDEV_POP> <LPAREN> ( <DISTINCT> { distinct = true ; } )? expr = Expression() <RPAREN>
+    { agg = AggregatorFactory.createCustom(AggURI.stdev_pop, distinct, expr) ; }
+  | t = <VARIANCE> <LPAREN> ( <DISTINCT> { distinct = true ; } )? expr = Expression() <RPAREN>
+    { agg = AggregatorFactory.createCustom(AggURI.variance, distinct, expr) ; }
+  | t = <VAR_SAMP> <LPAREN> ( <DISTINCT> { distinct = true ; } )? expr = Expression() <RPAREN>
+    { agg = AggregatorFactory.createCustom(AggURI.var_samp, distinct, expr) ; }
+  | t = <VAR_POP> <LPAREN> ( <DISTINCT> { distinct = true ; } )? expr = Expression() <RPAREN>
+    { agg = AggregatorFactory.createCustom(AggURI.var_pop, distinct, expr) ; }
   | t = <AGG>
     { String iri ; }
     iri = iri()
@@ -1642,7 +1655,12 @@ TOKEN [IGNORE_CASE] :
 | < MAX: "max" >
 | < SUM: "sum" >
 | < AVG: "avg" >
-| < STDDEV: "stdev" >
+| < STDEV: "stdev" >
+| < STDEV_SAMP: "stdev_samp" >
+| < STDEV_POP: "stdev_pop" >
+| < VARIANCE: "variance" >
+| < VAR_SAMP: "var_samp" >
+| < VAR_POP: "var_pop" >
 | < SAMPLE: "sample" >
 | < GROUP_CONCAT: "group_concat" >
 | < FILTER: "filter" >

http://git-wip-us.apache.org/repos/asf/jena/blob/6e588daa/jena-arq/Grammar/master.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/master.jj b/jena-arq/Grammar/master.jj
index c04d1ca..effbe1b 100644
--- a/jena-arq/Grammar/master.jj
+++ b/jena-arq/Grammar/master.jj
@@ -90,6 +90,7 @@ import org.apache.jena.sparql.expr.* ;
 import org.apache.jena.sparql.path.* ;
 import org.apache.jena.sparql.expr.aggregate.* ;
 #ifdef  UPDATE
+import org.apache.jena.sparql.expr.aggregate.lib.* ;
 import org.apache.jena.update.* ;
 import org.apache.jena.sparql.modify.request.* ;
 #endif
@@ -2034,6 +2035,24 @@ Expr Aggregate() : { Aggregator agg = null ; String sep = null ;
     { agg = AggregatorFactory.createGroupConcat(distinct, expr, sep, ordered) ; }
 
 #ifdef ARQ
+  | t = <STDEV> <LPAREN> ( <DISTINCT> { distinct = true ; } )? expr = Expression() <RPAREN>
+    { agg = AggregatorFactory.createCustom(AggURI.stdev, distinct, expr) ; }
+
+  | t = <STDEV_SAMP> <LPAREN> ( <DISTINCT> { distinct = true ; } )? expr = Expression() <RPAREN>
+    { agg = AggregatorFactory.createCustom(AggURI.stdev_samp, distinct, expr) ; }
+
+  | t = <STDEV_POP> <LPAREN> ( <DISTINCT> { distinct = true ; } )? expr = Expression() <RPAREN>
+    { agg = AggregatorFactory.createCustom(AggURI.stdev_pop, distinct, expr) ; }
+
+  | t = <VARIANCE> <LPAREN> ( <DISTINCT> { distinct = true ; } )? expr = Expression() <RPAREN>
+    { agg = AggregatorFactory.createCustom(AggURI.variance, distinct, expr) ; }
+
+  | t = <VAR_SAMP> <LPAREN> ( <DISTINCT> { distinct = true ; } )? expr = Expression() <RPAREN>
+    { agg = AggregatorFactory.createCustom(AggURI.var_samp, distinct, expr) ; }
+
+  | t = <VAR_POP> <LPAREN> ( <DISTINCT> { distinct = true ; } )? expr = Expression() <RPAREN>
+    { agg = AggregatorFactory.createCustom(AggURI.var_pop, distinct, expr) ; }
+
     /* Explicit syntax (aggregate even if not registered) */
   | t = <AGG>
     { String iri ; }
@@ -2301,7 +2320,13 @@ TOKEN [IGNORE_CASE] :
 |  < MAX:         "max" >
 |  < SUM:         "sum" >
 |  < AVG:         "avg" >
-|  < STDDEV:      "stdev" >
+|  < STDEV:       "stdev" >
+|  < STDEV_SAMP:  "stdev_samp" >
+|  < STDEV_POP:   "stdev_pop" >
+|  < VARIANCE:    "variance" >
+|  < VAR_SAMP:    "var_samp" >
+|  < VAR_POP:     "var_pop" >
+
 |  < SAMPLE:      "sample" >
 |  < GROUP_CONCAT: "group_concat" >
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6e588daa/jena-arq/Grammar/sparql_11.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/sparql_11.jj b/jena-arq/Grammar/sparql_11.jj
index 7f19c46..0da06d9 100644
--- a/jena-arq/Grammar/sparql_11.jj
+++ b/jena-arq/Grammar/sparql_11.jj
@@ -31,6 +31,7 @@ import org.apache.jena.sparql.syntax.* ;
 import org.apache.jena.sparql.expr.* ;
 import org.apache.jena.sparql.path.* ;
 import org.apache.jena.sparql.expr.aggregate.* ;
+import org.apache.jena.sparql.expr.aggregate.lib.* ;
 import org.apache.jena.update.* ;
 import org.apache.jena.sparql.modify.request.* ;
 public class SPARQLParser11 extends SPARQLParser11Base
@@ -1498,7 +1499,12 @@ TOKEN [IGNORE_CASE] :
 | < MAX: "max" >
 | < SUM: "sum" >
 | < AVG: "avg" >
-| < STDDEV: "stdev" >
+| < STDEV: "stdev" >
+| < STDEV_SAMP: "stdev_samp" >
+| < STDEV_POP: "stdev_pop" >
+| < VARIANCE: "variance" >
+| < VAR_SAMP: "var_samp" >
+| < VAR_POP: "var_pop" >
 | < SAMPLE: "sample" >
 | < GROUP_CONCAT: "group_concat" >
 | < FILTER: "filter" >

http://git-wip-us.apache.org/repos/asf/jena/blob/6e588daa/jena-arq/Grammar/tokens.txt
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/tokens.txt b/jena-arq/Grammar/tokens.txt
index 945d30e..a95d6a5 100644
--- a/jena-arq/Grammar/tokens.txt
+++ b/jena-arq/Grammar/tokens.txt
@@ -79,6 +79,13 @@
 [<SAMPLE>]     ::= 'SAMPLE'
 [<GROUP_CONCAT>]     ::= 'GROUP_CONCAT'
 
+[<STDEV>]      ::= 'STDEV'
+[<STDEV_SAMP>] ::= 'STDEVP_SAMP'
+[<STDEV_POP>]  ::= 'STDEV_POP'
+[<VARIANCE>]   ::= 'VARIANCE'
+[<VAR_SAMP>]   ::= 'VAR_SAMP'
+[<VAR_POP>]    ::= 'VAR_POP'
+
 [<SERVICE>]    ::=    'SERVICE'
 [<MINUS_P>]    ::=    'MINUS'
 [<DIFF>]       ::=    'DIFF'

http://git-wip-us.apache.org/repos/asf/jena/blob/6e588daa/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregateRegistry.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregateRegistry.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregateRegistry.java
index 0955398..4544abd 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregateRegistry.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregateRegistry.java
@@ -22,7 +22,7 @@ import java.util.HashMap ;
 import java.util.Map ;
 
 import org.apache.jena.graph.Node ;
-import org.apache.jena.sparql.expr.aggregate.lib.StandardCustomAggregates ;
+import org.apache.jena.sparql.expr.aggregate.lib.StandardAggregates ;
 
 /** Registry of custom aggregates
  * There is only a single global registry of aggregates - it affects parsing
@@ -34,7 +34,7 @@ public class AggregateRegistry {
     private static Map<String, Node>               noGroupValues    = new HashMap<>() ;
     
     public static void init() {
-        StandardCustomAggregates.register();
+        StandardAggregates.register();
     }
     
     /**

http://git-wip-us.apache.org/repos/asf/jena/blob/6e588daa/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorFactory.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorFactory.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorFactory.java
index d055929..71a437e 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorFactory.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorFactory.java
@@ -67,6 +67,10 @@ public class AggregatorFactory {
         return createCustom(iri, a.distinct, ExprList.copy(a)) ;
     }
     
+    public static Aggregator createCustom(String iri, boolean distinct, Expr expr) {
+        return createCustom(iri, distinct, new ExprList(expr)) ;
+    }
+    
     public static Aggregator createCustom(String iri, boolean distinct, ExprList exprs) {
         if ( ! AggregateRegistry.isRegistered(iri) )
             Log.warn(AggregatorFactory.class, "Not registered: custom aggregate <"+iri+">") ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6e588daa/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/lib/AggURI.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/lib/AggURI.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/lib/AggURI.java
new file mode 100644
index 0000000..5b1d721
--- /dev/null
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/lib/AggURI.java
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+
+package org.apache.jena.sparql.expr.aggregate.lib;
+
+public class AggURI {
+    // = stddev-samp except one element -> 0. ?????????????
+    public static final String stdev       = StandardAggregates.BASE + "stdev";     
+    public static final String stdev_samp  = StandardAggregates.BASE + "stdev_samp";  
+    public static final String stdev_pop   = StandardAggregates.BASE + "stdev_pop";
+    public static final String variance    = StandardAggregates.BASE + "variance";
+    public static final String var_samp    = StandardAggregates.BASE + "var_samp";
+    public static final String var_pop     = StandardAggregates.BASE + "var_pop";
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/6e588daa/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/lib/StandardAggregates.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/lib/StandardAggregates.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/lib/StandardAggregates.java
new file mode 100644
index 0000000..cbb5882
--- /dev/null
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/lib/StandardAggregates.java
@@ -0,0 +1,72 @@
+/*
+ * 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.
+ */
+
+package org.apache.jena.sparql.expr.aggregate.lib;
+
+import org.apache.jena.sparql.ARQConstants ;
+import org.apache.jena.sparql.expr.aggregate.AccumulatorFactory ;
+import org.apache.jena.sparql.expr.aggregate.AggregateRegistry ;
+
+/** Register custom aggregates in addition to the SPARQL defined ones.
+ * This includes the statistics aggregate functions as custom aggregates, 
+ * as {@code <http://jena.apache.org/ARQ/function#stdev} etc.
+ * This is commonly abbreviated {@code afn:stdev}.
+ */ 
+public class StandardAggregates {
+    
+    public static String BASE = ARQConstants.ARQAggregateLibraryURI ;
+    public static String BASE2 = ARQConstants.ARQFunctionLibraryURI ;   
+
+    public static void register() {
+        // PGSQL names:
+//        stddev(expression)
+//        stddev_pop(expression)
+//        stddev_samp(expression)
+//        variance(expression)
+//        var_pop(expression)
+//        var_samp(expression)
+        
+//        |  < STDEV:       "stdev" >
+//        |  < STDEV_SAMP:  "stdev_samp" >
+//        |  < STDEV_POP:   "stdev_pop" >
+//        |  < VARIANCE:    "variance" >
+//        |  < VAR_SAMP:    "var_samp" >
+//        |  < VAR_POP:     "var_pop" >
+       
+        // The statistics aggregates
+        // = stddev-samp except one element -> 0. ?????????????
+        AccumulatorFactory f_Stdev      =  (agg, distinct) -> new AccStatStdDevSample(agg.getExpr(), distinct) ;
+        AccumulatorFactory f_StdevSamp  =  (agg, distinct) -> new AccStatStdDevSample(agg.getExpr(), distinct) ;
+        AccumulatorFactory f_StdevPop   =  (agg, distinct) -> new AccStatStdDevPopulation(agg.getExpr(), distinct) ;
+        AccumulatorFactory f_VarPop     =  (agg, distinct) -> new AccStatVarPopulation(agg.getExpr(), distinct) ;
+        AccumulatorFactory f_VarSamp    =  (agg, distinct) -> new AccStatVarSample(agg.getExpr(), distinct) ;
+        
+        r(AggURI.stdev,        f_Stdev) ;
+        r(AggURI.stdev_samp,   f_StdevSamp) ;
+        r(AggURI.stdev_pop,    f_StdevPop) ;
+        r(AggURI.variance,     f_VarSamp) ;
+        r(AggURI.var_samp,     f_VarSamp) ;
+        r(AggURI.var_pop,      f_VarPop) ;
+    }
+    
+    private static void r(String uri, AccumulatorFactory f) {
+        AggregateRegistry.register(uri, f, null) ;
+        // Again in the afn@ (not encouraged but easy to do)
+        AggregateRegistry.register(uri.replace("/aggregate", ""), f, null) ;
+    }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/6e588daa/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/lib/StandardCustomAggregates.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/lib/StandardCustomAggregates.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/lib/StandardCustomAggregates.java
deleted file mode 100644
index a581348..0000000
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/lib/StandardCustomAggregates.java
+++ /dev/null
@@ -1,65 +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.
- */
-
-package org.apache.jena.sparql.expr.aggregate.lib;
-
-import org.apache.jena.sparql.ARQConstants ;
-import org.apache.jena.sparql.expr.aggregate.AccumulatorFactory ;
-import org.apache.jena.sparql.expr.aggregate.AggregateRegistry ;
-
-/** Register custom aggregates.
- * This includes the statistics aggregate functions as custom aggregates, 
- * as {@code <http://jena.apache.org/ARQ/function#stdev} etc.
- * This is commonly abbreviated {@code afn:stdev}.
- */ 
-public class StandardCustomAggregates {
-
-    public static String BASE = ARQConstants.ARQAggregateLibraryURI ;
-    public static String BASE2 = ARQConstants.ARQFunctionLibraryURI ;   
-
-    public static void register() {
-        // The statistics aggregates
-        AccumulatorFactory f_VarP =     (agg, distinct) -> new AccStatVarPopulation(agg.getExpr(), distinct) ;
-        AccumulatorFactory f_Var =      (agg, distinct) -> new AccStatVarSample(agg.getExpr(), distinct) ;
-        AccumulatorFactory f_StdevP =   (agg, distinct) -> new AccStatStdDevPopulation(agg.getExpr(), distinct) ;
-        AccumulatorFactory f_Stdev =    (agg, distinct) -> new AccStatStdDevSample(agg.getExpr(), distinct) ;
-        
-        AggregateRegistry.register(BASE+"stdevp",   f_StdevP, null) ;
-        AggregateRegistry.register(BASE+"stdev",    f_Stdev, null) ;
-        AggregateRegistry.register(BASE+"varp",     f_VarP, null) ;
-        AggregateRegistry.register(BASE+"var",      f_Var, null) ;
-        
-        // Again in the afn@ (not encouraged but easy to do)
-        AggregateRegistry.register(BASE2+"stdevp",  f_StdevP, null) ;
-        AggregateRegistry.register(BASE2+"stdev",   f_Stdev, null) ;
-        AggregateRegistry.register(BASE2+"varp",    f_VarP, null) ;
-        AggregateRegistry.register(BASE2+"var",     f_Var, null) ;
-
-        // DISTINCT versions as URIs.
-        AccumulatorFactory f_VarP_d =     (agg, distinct) -> new AccStatVarPopulation(agg.getExpr(), true) ;
-        AccumulatorFactory f_Var_d =      (agg, distinct) -> new AccStatVarSample(agg.getExpr(), true) ;
-        AccumulatorFactory f_StdevP_d =   (agg, distinct) -> new AccStatStdDevPopulation(agg.getExpr(), true) ;
-        AccumulatorFactory f_Stdev_d =    (agg, distinct) -> new AccStatStdDevSample(agg.getExpr(), true) ;
-
-        AggregateRegistry.register(BASE+"varpd",    f_VarP_d, null) ;
-        AggregateRegistry.register(BASE+"vard",     f_Var_d, null) ;
-        AggregateRegistry.register(BASE+"stdevpd",  f_StdevP_d, null) ;
-        AggregateRegistry.register(BASE+"stdevd",   f_Stdev_d, null) ;
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/6e588daa/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java
index b5445d1..2057f49 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java
@@ -7,6 +7,7 @@ import org.apache.jena.sparql.syntax.* ;
 import org.apache.jena.sparql.expr.* ;
 import org.apache.jena.sparql.path.* ;
 import org.apache.jena.sparql.expr.aggregate.* ;
+import org.apache.jena.sparql.expr.aggregate.lib.* ;
 import org.apache.jena.update.* ;
 import org.apache.jena.sparql.modify.request.* ;
 import org.apache.jena.sparql.core.Quad ;
@@ -173,6 +174,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     case MAX:
     case SUM:
     case AVG:
+    case STDEV:
+    case STDEV_SAMP:
+    case STDEV_POP:
+    case VARIANCE:
+    case VAR_SAMP:
+    case VAR_POP:
     case SAMPLE:
     case GROUP_CONCAT:
     case BOUND:
@@ -264,6 +271,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         case MAX:
         case SUM:
         case AVG:
+        case STDEV:
+        case STDEV_SAMP:
+        case STDEV_POP:
+        case VARIANCE:
+        case VAR_SAMP:
+        case VAR_POP:
         case SAMPLE:
         case GROUP_CONCAT:
         case BOUND:
@@ -413,6 +426,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         case MAX:
         case SUM:
         case AVG:
+        case STDEV:
+        case STDEV_SAMP:
+        case STDEV_POP:
+        case VARIANCE:
+        case VAR_SAMP:
+        case VAR_POP:
         case SAMPLE:
         case GROUP_CONCAT:
         case BOUND:
@@ -751,6 +770,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       case MAX:
       case SUM:
       case AVG:
+      case STDEV:
+      case STDEV_SAMP:
+      case STDEV_POP:
+      case VARIANCE:
+      case VAR_SAMP:
+      case VAR_POP:
       case SAMPLE:
       case GROUP_CONCAT:
       case BOUND:
@@ -828,6 +853,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     case MAX:
     case SUM:
     case AVG:
+    case STDEV:
+    case STDEV_SAMP:
+    case STDEV_POP:
+    case VARIANCE:
+    case VAR_SAMP:
+    case VAR_POP:
     case SAMPLE:
     case GROUP_CONCAT:
     case BOUND:
@@ -938,6 +969,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       case MAX:
       case SUM:
       case AVG:
+      case STDEV:
+      case STDEV_SAMP:
+      case STDEV_POP:
+      case VARIANCE:
+      case VAR_SAMP:
+      case VAR_POP:
       case SAMPLE:
       case GROUP_CONCAT:
       case BOUND:
@@ -1034,6 +1071,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       case MAX:
       case SUM:
       case AVG:
+      case STDEV:
+      case STDEV_SAMP:
+      case STDEV_POP:
+      case VARIANCE:
+      case VAR_SAMP:
+      case VAR_POP:
       case SAMPLE:
       case GROUP_CONCAT:
       case BOUND:
@@ -1136,6 +1179,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     case MAX:
     case SUM:
     case AVG:
+    case STDEV:
+    case STDEV_SAMP:
+    case STDEV_POP:
+    case VARIANCE:
+    case VAR_SAMP:
+    case VAR_POP:
     case SAMPLE:
     case GROUP_CONCAT:
     case BOUND:
@@ -1205,6 +1254,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       case MAX:
       case SUM:
       case AVG:
+      case STDEV:
+      case STDEV_SAMP:
+      case STDEV_POP:
+      case VARIANCE:
+      case VAR_SAMP:
+      case VAR_POP:
       case SAMPLE:
       case GROUP_CONCAT:
       case BOUND:
@@ -2641,6 +2696,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     case MAX:
     case SUM:
     case AVG:
+    case STDEV:
+    case STDEV_SAMP:
+    case STDEV_POP:
+    case VARIANCE:
+    case VAR_SAMP:
+    case VAR_POP:
     case SAMPLE:
     case GROUP_CONCAT:
     case BOUND:
@@ -4223,6 +4284,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     case MAX:
     case SUM:
     case AVG:
+    case STDEV:
+    case STDEV_SAMP:
+    case STDEV_POP:
+    case VARIANCE:
+    case VAR_SAMP:
+    case VAR_POP:
     case SAMPLE:
     case GROUP_CONCAT:
     case BOUND:
@@ -4321,6 +4388,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     case MAX:
     case SUM:
     case AVG:
+    case STDEV:
+    case STDEV_SAMP:
+    case STDEV_POP:
+    case VARIANCE:
+    case VAR_SAMP:
+    case VAR_POP:
     case SAMPLE:
     case GROUP_CONCAT:
     case BOUND:
@@ -4442,6 +4515,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     case MAX:
     case SUM:
     case AVG:
+    case STDEV:
+    case STDEV_SAMP:
+    case STDEV_POP:
+    case VARIANCE:
+    case VAR_SAMP:
+    case VAR_POP:
     case SAMPLE:
     case GROUP_CONCAT:
       expr = Aggregate();
@@ -4986,6 +5065,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       case MAX:
       case SUM:
       case AVG:
+      case STDEV:
+      case STDEV_SAMP:
+      case STDEV_POP:
+      case VARIANCE:
+      case VAR_SAMP:
+      case VAR_POP:
       case SAMPLE:
       case GROUP_CONCAT:
       case BOUND:
@@ -5207,6 +5292,102 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       jj_consume_token(RPAREN);
       agg = AggregatorFactory.createGroupConcat(distinct, expr, sep, ordered) ;
       break;
+    case STDEV:
+      t = jj_consume_token(STDEV);
+      jj_consume_token(LPAREN);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case DISTINCT:
+        jj_consume_token(DISTINCT);
+                                        distinct = true ;
+        break;
+      default:
+        jj_la1[163] = jj_gen;
+        ;
+      }
+      expr = Expression();
+      jj_consume_token(RPAREN);
+      agg = AggregatorFactory.createCustom(AggURI.stdev, distinct, expr) ;
+      break;
+    case STDEV_SAMP:
+      t = jj_consume_token(STDEV_SAMP);
+      jj_consume_token(LPAREN);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case DISTINCT:
+        jj_consume_token(DISTINCT);
+                                             distinct = true ;
+        break;
+      default:
+        jj_la1[164] = jj_gen;
+        ;
+      }
+      expr = Expression();
+      jj_consume_token(RPAREN);
+      agg = AggregatorFactory.createCustom(AggURI.stdev_samp, distinct, expr) ;
+      break;
+    case STDEV_POP:
+      t = jj_consume_token(STDEV_POP);
+      jj_consume_token(LPAREN);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case DISTINCT:
+        jj_consume_token(DISTINCT);
+                                            distinct = true ;
+        break;
+      default:
+        jj_la1[165] = jj_gen;
+        ;
+      }
+      expr = Expression();
+      jj_consume_token(RPAREN);
+      agg = AggregatorFactory.createCustom(AggURI.stdev_pop, distinct, expr) ;
+      break;
+    case VARIANCE:
+      t = jj_consume_token(VARIANCE);
+      jj_consume_token(LPAREN);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case DISTINCT:
+        jj_consume_token(DISTINCT);
+                                           distinct = true ;
+        break;
+      default:
+        jj_la1[166] = jj_gen;
+        ;
+      }
+      expr = Expression();
+      jj_consume_token(RPAREN);
+      agg = AggregatorFactory.createCustom(AggURI.variance, distinct, expr) ;
+      break;
+    case VAR_SAMP:
+      t = jj_consume_token(VAR_SAMP);
+      jj_consume_token(LPAREN);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case DISTINCT:
+        jj_consume_token(DISTINCT);
+                                           distinct = true ;
+        break;
+      default:
+        jj_la1[167] = jj_gen;
+        ;
+      }
+      expr = Expression();
+      jj_consume_token(RPAREN);
+      agg = AggregatorFactory.createCustom(AggURI.var_samp, distinct, expr) ;
+      break;
+    case VAR_POP:
+      t = jj_consume_token(VAR_POP);
+      jj_consume_token(LPAREN);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case DISTINCT:
+        jj_consume_token(DISTINCT);
+                                          distinct = true ;
+        break;
+      default:
+        jj_la1[168] = jj_gen;
+        ;
+      }
+      expr = Expression();
+      jj_consume_token(RPAREN);
+      agg = AggregatorFactory.createCustom(AggURI.var_pop, distinct, expr) ;
+      break;
     case AGG:
       t = jj_consume_token(AGG);
       String iri ;
@@ -5216,7 +5397,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       agg = AggregatorFactory.createCustom(iri, a) ;
       break;
     default:
-      jj_la1[163] = jj_gen;
+      jj_la1[169] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5237,7 +5418,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       a = ArgList();
       break;
     default:
-      jj_la1[164] = jj_gen;
+      jj_la1[170] = jj_gen;
       ;
     }
     if ( a == null )
@@ -5270,13 +5451,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         uri = iri();
         break;
       default:
-        jj_la1[165] = jj_gen;
+        jj_la1[171] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[166] = jj_gen;
+      jj_la1[172] = jj_gen;
       ;
     }
       {if (true) return createLiteral(lex, lang, uri) ;}
@@ -5302,7 +5483,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       n = NumericLiteralNegative();
       break;
     default:
-      jj_la1[167] = jj_gen;
+      jj_la1[173] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5326,7 +5507,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                  {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[168] = jj_gen;
+      jj_la1[174] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5349,7 +5530,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                           {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[169] = jj_gen;
+      jj_la1[175] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5372,7 +5553,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                           {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[170] = jj_gen;
+      jj_la1[176] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5390,7 +5571,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
             {if (true) return XSD_FALSE ;}
       break;
     default:
-      jj_la1[171] = jj_gen;
+      jj_la1[177] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5417,7 +5598,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                  lex = stripQuotes3(t.image) ;
       break;
     default:
-      jj_la1[172] = jj_gen;
+      jj_la1[178] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5439,7 +5620,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                          {if (true) return iri ;}
       break;
     default:
-      jj_la1[173] = jj_gen;
+      jj_la1[179] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5458,7 +5639,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       {if (true) return resolvePName(t.image, t.beginLine, t.beginColumn) ;}
       break;
     default:
-      jj_la1[174] = jj_gen;
+      jj_la1[180] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5477,7 +5658,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                {if (true) return createBNode(t.beginLine, t.beginColumn) ;}
       break;
     default:
-      jj_la1[175] = jj_gen;
+      jj_la1[181] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5526,210 +5707,603 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     finally { jj_save(4, xla); }
   }
 
-  private boolean jj_3R_70() {
-    if (jj_scan_token(YEAR)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_69() {
-    if (jj_scan_token(STRAFTER)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_171() {
-    if (jj_scan_token(DOUBLE)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_170() {
-    if (jj_scan_token(DECIMAL)) return true;
+  private boolean jj_3R_163() {
+    if (jj_3R_174()) return true;
     return false;
   }
 
-  private boolean jj_3R_68() {
-    if (jj_scan_token(STRBEFORE)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_162() {
+    if (jj_3R_173()) return true;
     return false;
   }
 
-  private boolean jj_3R_169() {
-    if (jj_scan_token(INTEGER)) return true;
+  private boolean jj_3R_161() {
+    if (jj_3R_172()) return true;
     return false;
   }
 
-  private boolean jj_3R_166() {
+  private boolean jj_3R_155() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_169()) {
+    if (jj_3R_161()) {
     jj_scanpos = xsp;
-    if (jj_3R_170()) {
+    if (jj_3R_162()) {
     jj_scanpos = xsp;
-    if (jj_3R_171()) return true;
+    if (jj_3R_163()) return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_67() {
-    if (jj_scan_token(STRENDS)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_129() {
-    if (jj_3R_135()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_66() {
-    if (jj_scan_token(STRSTARTS)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_157() {
-    if (jj_3R_168()) return true;
+  private boolean jj_3R_135() {
+    if (jj_3R_141()) return true;
     return false;
   }
 
   private boolean jj_3R_115() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_129()) {
+    if (jj_3R_135()) {
     jj_scanpos = xsp;
-    if (jj_3R_130()) return true;
+    if (jj_3R_136()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_156() {
-    if (jj_3R_167()) return true;
+  private boolean jj_3R_154() {
+    if (jj_3R_160()) return true;
     return false;
   }
 
-  private boolean jj_3R_65() {
-    if (jj_scan_token(CONTAINS)) return true;
+  private boolean jj_3R_130() {
+    if (jj_scan_token(AGG)) return true;
+    if (jj_3R_139()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_129() {
+    if (jj_scan_token(VAR_POP)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_155() {
-    if (jj_3R_166()) return true;
+  private boolean jj_3R_128() {
+    if (jj_scan_token(VAR_SAMP)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_64() {
-    if (jj_scan_token(ENCODE_FOR_URI)) return true;
+  private boolean jj_3R_127() {
+    if (jj_scan_token(VARIANCE)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_63() {
-    if (jj_scan_token(LCASE)) return true;
+  private boolean jj_3R_126() {
+    if (jj_scan_token(STDEV_POP)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_62() {
-    if (jj_scan_token(UCASE)) return true;
+  private boolean jj_3R_125() {
+    if (jj_scan_token(STDEV_SAMP)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_149() {
+  private boolean jj_3_2() {
+    if (jj_scan_token(SEMICOLON)) return true;
+    if (jj_3R_42()) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_155()) {
+    if (jj_scan_token(135)) {
     jj_scanpos = xsp;
-    if (jj_3R_156()) {
+    if (jj_scan_token(136)) {
     jj_scanpos = xsp;
-    if (jj_3R_157()) return true;
+    if (jj_scan_token(143)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(138)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(139)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(140)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(137)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(148)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(131)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(130)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(149)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(132)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(133)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(134)) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
     }
     }
     return false;
   }
 
-  private boolean jj_3R_61() {
-    if (jj_3R_109()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_60() {
-    if (jj_scan_token(STRLEN)) return true;
+  private boolean jj_3R_124() {
+    if (jj_scan_token(STDEV)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_59() {
-    if (jj_3R_108()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_58() {
-    if (jj_scan_token(CONCAT)) return true;
-    if (jj_3R_107()) return true;
+  private boolean jj_3_5() {
+    if (jj_scan_token(SEMICOLON)) return true;
+    if (jj_scan_token(SEPARATOR)) return true;
     return false;
   }
 
-  private boolean jj_3R_57() {
-    if (jj_scan_token(ROUND)) return true;
+  private boolean jj_3R_143() {
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_56() {
-    if (jj_scan_token(FLOOR)) return true;
+  private boolean jj_3R_123() {
+    if (jj_scan_token(GROUP_CONCAT)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_55() {
-    if (jj_scan_token(CEIL)) return true;
+  private boolean jj_3R_122() {
+    if (jj_scan_token(SAMPLE)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_54() {
-    if (jj_scan_token(ABS)) return true;
+  private boolean jj_3R_121() {
+    if (jj_scan_token(AVG)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_53() {
-    if (jj_scan_token(RAND)) return true;
-    if (jj_scan_token(NIL)) return true;
+  private boolean jj_3R_120() {
+    if (jj_scan_token(MAX)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_106() {
-    if (jj_scan_token(NIL)) return true;
+  private boolean jj_3R_119() {
+    if (jj_scan_token(MIN)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_148() {
-    if (jj_3R_154()) return true;
+  private boolean jj_3R_118() {
+    if (jj_scan_token(SUM)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_105() {
+  private boolean jj_3R_117() {
+    if (jj_scan_token(COUNT)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_52() {
-    if (jj_scan_token(BNODE)) return true;
+  private boolean jj_3R_104() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_105()) {
+    if (jj_3R_117()) {
     jj_scanpos = xsp;
-    if (jj_3R_106()) return true;
-    }
-    return false;
-  }
-
-  private boolean jj_3R_51() {
+    if (jj_3R_118()) {
+    jj_scanpos = xsp;
+    if (jj_3R_119()) {
+    jj_scanpos = xsp;
+    if (jj_3R_120()) {
+    jj_scanpos = xsp;
+    if (jj_3R_121()) {
+    jj_scanpos = xsp;
+    if (jj_3R_122()) {
+    jj_scanpos = xsp;
+    if (jj_3R_123()) {
+    jj_scanpos = xsp;
+    if (jj_3R_124()) {
+    jj_scanpos = xsp;
+    if (jj_3R_125()) {
+    jj_scanpos = xsp;
+    if (jj_3R_126()) {
+    jj_scanpos = xsp;
+    if (jj_3R_127()) {
+    jj_scanpos = xsp;
+    if (jj_3R_128()) {
+    jj_scanpos = xsp;
+    if (jj_3R_129()) {
+    jj_scanpos = xsp;
+    if (jj_3R_130()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_144() {
+    if (jj_scan_token(LBRACKET)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_138() {
+    if (jj_3R_144()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_116() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_137()) {
+    jj_scanpos = xsp;
+    if (jj_3R_138()) return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_137() {
+    if (jj_3R_143()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_112() {
+    if (jj_scan_token(NOT)) return true;
+    if (jj_scan_token(EXISTS)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_111() {
+    if (jj_scan_token(EXISTS)) return true;
+    if (jj_3R_132()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_109() {
+    if (jj_scan_token(REPLACE)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_108() {
+    if (jj_scan_token(SUBSTR)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_110() {
+    if (jj_scan_token(REGEX)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_100() {
+    if (jj_3R_112()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_99() {
+    if (jj_3R_111()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_98() {
+    if (jj_3R_110()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_97() {
+    if (jj_scan_token(IS_NUMERIC)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_96() {
+    if (jj_scan_token(IS_LITERAL)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_95() {
+    if (jj_scan_token(IS_BLANK)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_94() {
+    if (jj_scan_token(IS_URI)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_93() {
+    if (jj_scan_token(IS_IRI)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_92() {
+    if (jj_scan_token(SAME_TERM)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_91() {
+    if (jj_scan_token(STRDT)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_90() {
+    if (jj_scan_token(STRLANG)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_89() {
+    if (jj_scan_token(IF)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_88() {
+    if (jj_scan_token(CALL)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_87() {
+    if (jj_scan_token(COALESCE)) return true;
+    if (jj_3R_107()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_86() {
+    if (jj_scan_token(VERSION)) return true;
+    if (jj_scan_token(NIL)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_85() {
+    if (jj_scan_token(SHA512)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_84() {
+    if (jj_scan_token(SHA384)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_83() {
+    if (jj_scan_token(SHA256)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_82() {
+    if (jj_scan_token(SHA1)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_81() {
+    if (jj_scan_token(MD5)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_80() {
+    if (jj_scan_token(STRUUID)) return true;
+    if (jj_scan_token(NIL)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_79() {
+    if (jj_scan_token(UUID)) return true;
+    if (jj_scan_token(NIL)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_78() {
+    if (jj_scan_token(NOW)) return true;
+    if (jj_scan_token(NIL)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_77() {
+    if (jj_scan_token(TZ)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_76() {
+    if (jj_scan_token(TIMEZONE)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_75() {
+    if (jj_scan_token(SECONDS)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_74() {
+    if (jj_scan_token(MINUTES)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_73() {
+    if (jj_scan_token(HOURS)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_72() {
+    if (jj_scan_token(DAY)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_71() {
+    if (jj_scan_token(MONTH)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_70() {
+    if (jj_scan_token(YEAR)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_69() {
+    if (jj_scan_token(STRAFTER)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_68() {
+    if (jj_scan_token(STRBEFORE)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_67() {
+    if (jj_scan_token(STRENDS)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_66() {
+    if (jj_scan_token(STRSTARTS)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_65() {
+    if (jj_scan_token(CONTAINS)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_64() {
+    if (jj_scan_token(ENCODE_FOR_URI)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_63() {
+    if (jj_scan_token(LCASE)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_62() {
+    if (jj_scan_token(UCASE)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_61() {
+    if (jj_3R_109()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_60() {
+    if (jj_scan_token(STRLEN)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_59() {
+    if (jj_3R_108()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_58() {
+    if (jj_scan_token(CONCAT)) return true;
+    if (jj_3R_107()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_57() {
+    if (jj_scan_token(ROUND)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_56() {
+    if (jj_scan_token(FLOOR)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_55() {
+    if (jj_scan_token(CEIL)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_54() {
+    if (jj_scan_token(ABS)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_106() {
+    if (jj_scan_token(NIL)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_53() {
+    if (jj_scan_token(RAND)) return true;
+    if (jj_scan_token(NIL)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_105() {
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_52() {
+    if (jj_scan_token(BNODE)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_105()) {
+    jj_scanpos = xsp;
+    if (jj_3R_106()) return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_51() {
     if (jj_scan_token(URI)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
@@ -5747,14 +6321,14 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_48() {
-    if (jj_scan_token(DTYPE)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_132() {
+    if (jj_scan_token(LBRACE)) return true;
     return false;
   }
 
-  private boolean jj_3R_126() {
-    if (jj_scan_token(LBRACE)) return true;
+  private boolean jj_3R_48() {
+    if (jj_scan_token(DTYPE)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
@@ -5782,6 +6356,11 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
+  private boolean jj_3R_44() {
+    if (jj_3R_104()) return true;
+    return false;
+  }
+
   private boolean jj_3R_41() {
     Token xsp;
     xsp = jj_scanpos;
@@ -5921,250 +6500,62 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     }
     }
     }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    return false;
-  }
-
-  private boolean jj_3R_44() {
-    if (jj_3R_104()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_124() {
-    if (jj_scan_token(AGG)) return true;
-    if (jj_3R_133()) return true;
-    return false;
-  }
-
-  private boolean jj_3_2() {
-    if (jj_scan_token(SEMICOLON)) return true;
-    if (jj_3R_42()) return true;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(130)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(131)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(138)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(133)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(134)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(135)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(132)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(143)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(126)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(125)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(144)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(127)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(128)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(129)) return true;
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    return false;
-  }
-
-  private boolean jj_3_5() {
-    if (jj_scan_token(SEMICOLON)) return true;
-    if (jj_scan_token(SEPARATOR)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_137() {
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_123() {
-    if (jj_scan_token(GROUP_CONCAT)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_122() {
-    if (jj_scan_token(SAMPLE)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_121() {
-    if (jj_scan_token(AVG)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3_1() {
-    if (jj_3R_41()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_120() {
-    if (jj_scan_token(MAX)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_119() {
-    if (jj_scan_token(MIN)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_118() {
-    if (jj_scan_token(SUM)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_117() {
-    if (jj_scan_token(COUNT)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_104() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_117()) {
-    jj_scanpos = xsp;
-    if (jj_3R_118()) {
-    jj_scanpos = xsp;
-    if (jj_3R_119()) {
-    jj_scanpos = xsp;
-    if (jj_3R_120()) {
-    jj_scanpos = xsp;
-    if (jj_3R_121()) {
-    jj_scanpos = xsp;
-    if (jj_3R_122()) {
-    jj_scanpos = xsp;
-    if (jj_3R_123()) {
-    jj_scanpos = xsp;
-    if (jj_3R_124()) return true;
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    return false;
-  }
-
-  private boolean jj_3R_138() {
-    if (jj_scan_token(LBRACKET)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_132() {
-    if (jj_3R_138()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_131() {
-    if (jj_3R_137()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_116() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_131()) {
-    jj_scanpos = xsp;
-    if (jj_3R_132()) return true;
-    }
-    return false;
-  }
-
-  private boolean jj_3R_112() {
-    if (jj_scan_token(NOT)) return true;
-    if (jj_scan_token(EXISTS)) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
     return false;
   }
 
-  private boolean jj_3R_111() {
-    if (jj_scan_token(EXISTS)) return true;
-    if (jj_3R_126()) return true;
+  private boolean jj_3_1() {
+    if (jj_3R_41()) return true;
     return false;
   }
 
   private boolean jj_3R_114() {
-    if (jj_3R_128()) return true;
+    if (jj_3R_134()) return true;
     return false;
   }
 
-  private boolean jj_3R_128() {
+  private boolean jj_3R_134() {
     if (jj_scan_token(PREFIX)) return true;
     if (jj_scan_token(PNAME_NS)) return true;
-    if (jj_3R_134()) return true;
+    if (jj_3R_140()) return true;
     return false;
   }
 
-  private boolean jj_3R_127() {
+  private boolean jj_3R_133() {
     if (jj_scan_token(BASE)) return true;
-    if (jj_3R_134()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_109() {
-    if (jj_scan_token(REPLACE)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_113() {
-    if (jj_3R_127()) return true;
+    if (jj_3R_140()) return true;
     return false;
   }
 
@@ -6178,6 +6569,11 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
+  private boolean jj_3R_113() {
+    if (jj_3R_133()) return true;
+    return false;
+  }
+
   private boolean jj_3R_42() {
     Token xsp;
     while (true) {
@@ -6187,14 +6583,18 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_108() {
-    if (jj_scan_token(SUBSTR)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_103() {
+    if (jj_3R_116()) return true;
     return false;
   }
 
-  private boolean jj_3R_103() {
-    if (jj_3R_116()) return true;
+  private boolean jj_3R_140() {
+    if (jj_scan_token(IRIref)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_102() {
+    if (jj_3R_115()) return true;
     return false;
   }
 
@@ -6208,314 +6608,238 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_102() {
-    if (jj_3R_115()) return true;
-    return false;
-  }
-
   private boolean jj_3_4() {
     if (jj_scan_token(DOT)) return true;
     if (jj_3R_43()) return true;
     return false;
   }
 
-  private boolean jj_3R_110() {
-    if (jj_scan_token(REGEX)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_134() {
-    if (jj_scan_token(IRIref)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_161() {
+  private boolean jj_3R_167() {
     if (jj_scan_token(ANON)) return true;
     return false;
   }
 
-  private boolean jj_3R_100() {
-    if (jj_3R_112()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_99() {
-    if (jj_3R_111()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_98() {
-    if (jj_3R_110()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_160() {
-    if (jj_scan_token(BLANK_NODE_LABEL)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_151() {
+  private boolean jj_3R_157() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_160()) {
+    if (jj_3R_166()) {
     jj_scanpos = xsp;
-    if (jj_3R_161()) return true;
+    if (jj_3R_167()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_97() {
-    if (jj_scan_token(IS_NUMERIC)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_166() {
+    if (jj_scan_token(BLANK_NODE_LABEL)) return true;
     return false;
   }
 
-  private boolean jj_3R_153() {
+  private boolean jj_3R_159() {
     if (jj_scan_token(PNAME_NS)) return true;
     return false;
-  }
-
-  private boolean jj_3R_96() {
-    if (jj_scan_token(IS_LITERAL)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_95() {
-    if (jj_scan_token(IS_BLANK)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_152() {
-    if (jj_scan_token(PNAME_LN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_125() {
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_94() {
-    if (jj_scan_token(IS_URI)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  }
+
+  private boolean jj_3R_158() {
+    if (jj_scan_token(PNAME_LN)) return true;
     return false;
   }
 
-  private boolean jj_3R_147() {
+  private boolean jj_3R_153() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_152()) {
+    if (jj_3R_158()) {
     jj_scanpos = xsp;
-    if (jj_3R_153()) return true;
+    if (jj_3R_159()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_93() {
-    if (jj_scan_token(IS_IRI)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_146() {
+    if (jj_3R_153()) return true;
     return false;
   }
 
-  private boolean jj_3R_107() {
+  private boolean jj_3R_139() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(165)) {
+    if (jj_3R_145()) {
     jj_scanpos = xsp;
-    if (jj_3R_125()) return true;
+    if (jj_3R_146()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_92() {
-    if (jj_scan_token(SAME_TERM)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_140() {
-    if (jj_3R_147()) return true;
+  private boolean jj_3R_145() {
+    if (jj_3R_140()) return true;
     return false;
   }
 
-  private boolean jj_3R_91() {
-    if (jj_scan_token(STRDT)) return true;
+  private boolean jj_3R_131() {
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_139() {
-    if (jj_3R_134()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_133() {
+  private boolean jj_3R_107() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_139()) {
+    if (jj_scan_token(170)) {
     jj_scanpos = xsp;
-    if (jj_3R_140()) return true;
+    if (jj_3R_131()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_90() {
-    if (jj_scan_token(STRLANG)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_89() {
-    if (jj_scan_token(IF)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_165() {
+  private boolean jj_3R_171() {
     if (jj_scan_token(STRING_LITERAL_LONG2)) return true;
     return false;
   }
 
-  private boolean jj_3R_164() {
+  private boolean jj_3R_170() {
     if (jj_scan_token(STRING_LITERAL_LONG1)) return true;
     return false;
   }
 
-  private boolean jj_3R_163() {
+  private boolean jj_3R_169() {
     if (jj_scan_token(STRING_LITERAL2)) return true;
     return false;
   }
 
-  private boolean jj_3R_162() {
+  private boolean jj_3R_168() {
     if (jj_scan_token(STRING_LITERAL1)) return true;
     return false;
   }
 
-  private boolean jj_3R_154() {
+  private boolean jj_3R_160() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_162()) {
+    if (jj_3R_168()) {
     jj_scanpos = xsp;
-    if (jj_3R_163()) {
+    if (jj_3R_169()) {
     jj_scanpos = xsp;
-    if (jj_3R_164()) {
+    if (jj_3R_170()) {
     jj_scanpos = xsp;
-    if (jj_3R_165()) return true;
+    if (jj_3R_171()) return true;
     }
     }
     }
     return false;
   }
 
-  private boolean jj_3R_88() {
-    if (jj_scan_token(CALL)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_165() {
+    if (jj_scan_token(FALSE)) return true;
     return false;
   }
 
-  private boolean jj_3R_87() {
-    if (jj_scan_token(COALESCE)) return true;
-    if (jj_3R_107()) return true;
+  private boolean jj_3R_156() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_164()) {
+    jj_scanpos = xsp;
+    if (jj_3R_165()) return true;
+    }
     return false;
   }
 
-  private boolean jj_3R_146() {
-    if (jj_scan_token(NIL)) return true;
+  private boolean jj_3R_164() {
+    if (jj_scan_token(TRUE)) return true;
     return false;
   }
 
-  private boolean jj_3R_86() {
-    if (jj_scan_token(VERSION)) return true;
-    if (jj_scan_token(NIL)) return true;
+  private boolean jj_3R_183() {
+    if (jj_scan_token(DOUBLE_NEGATIVE)) return true;
     return false;
   }
 
-  private boolean jj_3R_159() {
-    if (jj_scan_token(FALSE)) return true;
+  private boolean jj_3R_182() {
+    if (jj_scan_token(DECIMAL_NEGATIVE)) return true;
     return false;
   }
 
-  private boolean jj_3R_145() {
-    if (jj_3R_151()) return true;
+  private boolean jj_3R_181() {
+    if (jj_scan_token(INTEGER_NEGATIVE)) return true;
     return false;
   }
 
-  private boolean jj_3R_85() {
-    if (jj_scan_token(SHA512)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_174() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_181()) {
+    jj_scanpos = xsp;
+    if (jj_3R_182()) {
+    jj_scanpos = xsp;
+    if (jj_3R_183()) return true;
+    }
+    }
     return false;
   }
 
-  private boolean jj_3R_144() {
-    if (jj_3R_150()) return true;
+  private boolean jj_3R_152() {
+    if (jj_scan_token(NIL)) return true;
     return false;
   }
 
-  private boolean jj_3R_84() {
-    if (jj_scan_token(SHA384)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_151() {
+    if (jj_3R_157()) return true;
     return false;
   }
 
-  private boolean jj_3R_158() {
-    if (jj_scan_token(TRUE)) return true;
+  private boolean jj_3R_180() {
+    if (jj_scan_token(DOUBLE_POSITIVE)) return true;
     return false;
   }
 
   private boolean jj_3R_150() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_158()) {
-    jj_scanpos = xsp;
-    if (jj_3R_159()) return true;
-    }
+    if (jj_3R_156()) return true;
     return false;
   }
 
-  private boolean jj_3R_143() {
-    if (jj_3R_149()) return true;
+  private boolean jj_3R_179() {
+    if (jj_scan_token(DECIMAL_POSITIVE)) return true;
     return false;
   }
 
-  private boolean jj_3R_83() {
-    if (jj_scan_token(SHA256)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_149() {
+    if (jj_3R_155()) return true;
     return false;
   }
 
-  private boolean jj_3R_142() {
-    if (jj_3R_148()) return true;
+  private boolean jj_3R_148() {
+    if (jj_3R_154()) return true;
     return false;
   }
 
-  private boolean jj_3R_82() {
-    if (jj_scan_token(SHA1)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_173() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_178()) {
+    jj_scanpos = xsp;
+    if (jj_3R_179()) {
+    jj_scanpos = xsp;
+    if (jj_3R_180()) return true;
+    }
+    }
     return false;
   }
 
-  private boolean jj_3R_141() {
-    if (jj_3R_133()) return true;
+  private boolean jj_3R_178() {
+    if (jj_scan_token(INTEGER_POSITIVE)) return true;
     return false;
   }
 
-  private boolean jj_3R_136() {
+  private boolean jj_3R_142() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_141()) {
+    if (jj_3R_147()) {
     jj_scanpos = xsp;
-    if (jj_3R_142()) {
+    if (jj_3R_148()) {
     jj_scanpos = xsp;
-    if (jj_3R_143()) {
+    if (jj_3R_149()) {
     jj_scanpos = xsp;
-    if (jj_3R_144()) {
+    if (jj_3R_150()) {
     jj_scanpos = xsp;
-    if (jj_3R_145()) {
+    if (jj_3R_151()) {
     jj_scanpos = xsp;
-    if (jj_3R_146()) return true;
+    if (jj_3R_152()) return true;
     }
     }
     }
@@ -6524,35 +6848,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_81() {
-    if (jj_scan_token(MD5)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_80() {
-    if (jj_scan_token(STRUUID)) return true;
-    if (jj_scan_token(NIL)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_177() {
-    if (jj_scan_token(DOUBLE_NEGATIVE)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_79() {
-    if (jj_scan_token(UUID)) return true;
-    if (jj_scan_token(NIL)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_176() {
-    if (jj_scan_token(DECIMAL_NEGATIVE)) return true;
+  private boolean jj_3R_147() {
+    if (jj_3R_139()) return true;
     return false;
   }
 
-  private boolean jj_3R_135() {
+  private boolean jj_3R_141() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(14)) {
@@ -6562,18 +6863,17 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_78() {
-    if (jj_scan_token(NOW)) return true;
-    if (jj_scan_token(NIL)) return true;
+  private boolean jj_3R_177() {
+    if (jj_scan_token(DOUBLE)) return true;
     return false;
   }
 
-  private boolean jj_3R_175() {
-    if (jj_scan_token(INTEGER_NEGATIVE)) return true;
+  private boolean jj_3R_176() {
+    if (jj_scan_token(DECIMAL)) return true;
     return false;
   }
 
-  private boolean jj_3R_168() {
+  private boolean jj_3R_172() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_3R_175()) {
@@ -6586,78 +6886,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_77() {
-    if (jj_scan_token(TZ)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_76() {
-    if (jj_scan_token(TIMEZONE)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_130() {
-    if (jj_3R_136()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_75() {
-    if (jj_scan_token(SECONDS)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_74() {
-    if (jj_scan_token(MINUTES)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_174() {
-    if (jj_scan_token(DOUBLE_POSITIVE)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_73() {
-    if (jj_scan_token(HOURS)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_173() {
-    if (jj_scan_token(DECIMAL_POSITIVE)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_72() {
-    if (jj_scan_token(DAY)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_172() {
-    if (jj_scan_token(INTEGER_POSITIVE)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_167() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_172()) {
-    jj_scanpos = xsp;
-    if (jj_3R_173()) {
-    jj_scanpos = xsp;
-    if (jj_3R_174()) return true;
-    }
-    }
+  private boolean jj_3R_175() {
+    if (jj_scan_token(INTEGER)) return true;
     return false;
   }
 
-  private boolean jj_3R_71() {
-    if (jj_scan_token(MONTH)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_136() {
+    if (jj_3R_142()) return true;
     return false;
   }
 
@@ -6672,7 +6907,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   private Token jj_scanpos, jj_lastpos;
   private int jj_la;
   private int jj_gen;
-  final private int[] jj_la1 = new int[176];
+  final private int[] jj_la1 = new int[182];
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static private int[] jj_la1_2;
@@ -6690,25 +6925,25 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       jj_la1_init_6();
    }
    private static void jj_la1_init_0() {
-      jj_la1_0 = new int[] {0xe400000,0x200,0x300000,0x300000,0x0,0x1800000,0x1800000,0x1c00,0x0,0xdc00,0xdc00,0xdc00,0x0,0x0,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x1c00,0x0,0x0,0x0,0x40000000,0x30000000,0xdc00,0x0,0xdc00,0x1c00,0xdc00,0x0,0xdc00,0xdc00,0x20000000,0x10000000,0x30000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00,0x0,0x1c00,0x0,0xfc00,0x0,0x0,0xfc00,0xfc00,0xfc00,0x0,0x0,0xfc00,0x0,0xfc00,0x0,0x400000,0xfc00,0x0,0x0,0xfc00,0xfc00,0x0,0x0,0x0,0xc000,0x3c00,0xc000,0x0,0x0,0x3c00,0x0,0x3c00,0x0,0x1c00,0x800000,0x0,0x0,0x0,0x0,0x0,0xfc00,0x8dc00,0x0,0x8dc00,0x8dc00,0x0,0xfc00,0x88dc00,0x88dc00,0x0,0x88dc00,0x88dc00,0x0,0x0,0x0,0x0,0x0,0x881c00,0x0,0x0,0x0,0x0,0x881c00,0x0,0x81c00,0x81c00,0x81c00,0x81c00,0x0,0x0,0xfc00,0xfc00,0xfc00,0xfc00,0xfc00,0xdc00,0xfc00,0xc000,0x3c00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0xdc00,0x800000,0x800000,0x800000,0x800000,0x800000,0x800000,0x0,0x0,0x0,0x0,0x0,0x10000,0
 x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00,0x1800,0x2000,};
+      jj_la1_0 = new int[] {0xe400000,0x200,0x300000,0x300000,0x0,0x1800000,0x1800000,0x1c00,0x0,0xdc00,0xdc00,0xdc00,0x0,0x0,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x1c00,0x0,0x0,0x0,0x40000000,0x30000000,0xdc00,0x0,0xdc00,0x1c00,0xdc00,0x0,0xdc00,0xdc00,0x20000000,0x10000000,0x30000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00,0x0,0x1c00,0x0,0xfc00,0x0,0x0,0xfc00,0xfc00,0xfc00,0x0,0x0,0xfc00,0x0,0xfc00,0x0,0x400000,0xfc00,0x0,0x0,0xfc00,0xfc00,0x0,0x0,0x0,0xc000,0x3c00,0xc000,0x0,0x0,0x3c00,0x0,0x3c00,0x0,0x1c00,0x800000,0x0,0x0,0x0,0x0,0x0,0xfc00,0x8dc00,0x0,0x8dc00,0x8dc00,0x0,0xfc00,0x88dc00,0x88dc00,0x0,0x88dc00,0x88dc00,0x0,0x0,0x0,0x0,0x0,0x881c00,0x0,0x0,0x0,0x0,0x881c00,0x0,0x81c00,0x81c00,0x81c00,0x81c00,0x0,0x0,0xfc00,0xfc00,0xfc00,0xfc00,0xfc00,0xdc00,0xfc00,0xc000,0x3c00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0xdc00,0x800000,0x800000,0x800000,0x800000,0x800000,0x800000,0x0,0x0,0x0,0x800000,0x800000
 ,0x800000,0x800000,0x800000,0x800000,0x0,0x0,0x10000,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00,0x1800,0x2000,};
    }
    private static void jj_la1_init_1() {
-      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x20000,0xb7e18000,0xb7e18000,0xb7e18000,0x20,0x20,0x60,0x0,0x0,0x20,0x40,0x20,0x10,0x40,0x40000,0x80000,0x0,0x0,0xb7e18000,0x20000,0xb7e18000,0xb7e18000,0xb7e1800c,0xc,0xb7e18000,0xb7e1800c,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x100,0x100,0x110,0x0,0x100,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x4001fb01,0x0,0x0,0x0,0x0,0x4001fb01,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x2,0x400,0xb7e18000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb7e18000,0xb7e18000,0x0,0x0,0xb7e18000,0x0,0x0,0x0,0x0,0xb7e18000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x37e00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x20000,0xffe18000,0xffe18000,0xffe18000,0x20,0x20,0x60,0x0,0x0,0x20,0x40,0x20,0x10,0x40,0x40000,0x80000,0x0,0x0,0xffe18000,0x20000,0xffe18000,0xffe18000,0xffe1800c,0xc,0xffe18000,0xffe1800c,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x100,0x100,0x110,0x0,0x100,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x1fb01,0x0,0x0,0x0,0x0,0x1fb01,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x2,0x400,0xffe18000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffe18000,0xffe18000,0x0,0x0,0xffe18000,0x0,0x0,0x0,0x0,0xffe18000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffe00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_2() {
-      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffcbd,0xfffffcbd,0xfffffcbd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffcbd,0x0,0xfffffcbd,0xfffffcbd,0xfffffcbd,0x0,0xfffffcbd,0xfffffcbd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffcbd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x300,0x300,0x0,0x300,0x300,0x0,0x0,0x0,0x0,0x0,0x300,0x0,0x0,0x0,0x0,0x300,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffcbd,0xfffffcbd,0x0,0x0,0xfffffcbd,0x0,0x0,0x0,0x0,0xfffffcbd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffff97b7,0xffff97b7,0xffff97b7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffff97b7,0x0,0xffff97b7,0xffff97b7,0xffff97b7,0x0,0xffff97b7,0xffff97b7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffff97b7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000,0x6000,0x0,0x6000,0x6000,0x0,0x0,0x0,0x0,0x0,0x6000,0x0,0x0,0x0,0x0,0x6000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffff97b7,0xffff97b7,0x0,0x0,0xffff97b7,0x0,0x0,0x0,0x0,0xffff97b7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_3() {
-      jj_la1_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0xfbfffff,0xfbfffff,0xfbfffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3bfffff,0x0,0x3bfffff,0x3bfffff,0x3bfffff,0x0,0x3bfffff,0x3bfffff,0x0,0x0,0x0,0x0,0x0,0xe0000000,0xe0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x60000000,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0xc000000,0xc000000,0xc000000,0x0,0x0,0xc000000,0x0,0xc000000,0x0,0x0,0xc000000,0x0,0x0,0xc000000,0xc000000,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0x0,0xc000000,0x0,0xc000000,0x0,0x3bfffff,0x0,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000000,0xc000000,0xc000000,0xc000000,0xc000000,0x0,0x0,0x0,0xc000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfbfffff,0xfbfffff,0x0,0x0,0x3bfffff,0x0,0x0,0x0,0x0,0xfbfffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0x0,0x0,};
+      jj_la1_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0xf7ffffff,0xf7ffffff,0xf7ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x77ffffff,0x0,0x77ffffff,0x77ffffff,0x77ffffff,0x0,0x77ffffff,0x77ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x80000000,0x80000000,0x80000000,0x0,0x0,0x80000000,0x0,0x80000000,0x0,0x0,0x80000000,0x0,0x0,0x80000000,0x80000000,0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x80000000,0x0,0x80000000,0x0,0x77ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf7ffffff,0xf7ffffff,0x0,0x0,0x77ffffff,0x0,0x0,0x0,0x0,0xf7ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0
 x0,0x0,0x0,};
    }
    private static void jj_la1_init_4() {
-      jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x0,0x87fc0000,0x87fc0000,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x84ff,0x84ff,0x200,0x800,0x200,0x200,0x200,0x200,0x200,0x200,0x8000,0x0,0x0,0x10000,0x0,0x0,0x2000,0x6000,0x87fc0000,0x0,0x0,0x87fc0000,0x87fc0000,0x87fc0000,0x0,0x0,0x87fc0000,0x0,0x87fc0000,0x0,0x0,0x87fc0000,0x0,0x0,0x87fc0000,0x87fc0000,0x0,0x0,0x200,0x0,0x87fc0000,0x0,0x0,0x0,0x87fc0000,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x87fc0000,0x87fc0000,0x87fc0000,0x87fc0000,0x0,0x0,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x7e00000,0x7e00000,0x0,0x0,0x7e00000,0x0,0x0,0x87fc0000,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x87fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7fc0000,0x1c0000,0xe00000,0x7000000,0x0,0x80000
 000,0x0,0x0,0x0,};
+      jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff800001,0x0,0xff800001,0xff800001,0xff800001,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x109ffc,0x109ffc,0x4000,0x10000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x100000,0x4,0xc,0x200000,0x0,0x0,0x40000,0xc0000,0xff800001,0x0,0x0,0xff800001,0xff800001,0xff800001,0x0,0x0,0xff800001,0x0,0xff800001,0x0,0x0,0xff800001,0x0,0x0,0xff800001,0xff800001,0x0,0x0,0x4000,0x0,0xff800001,0x0,0x0,0x0,0xff800001,0x0,0xff800001,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff800001,0x0,0x0,0x0,0x0,0x0,0xff800001,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x0,0x800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff800001,0xff800001,0xff800001,0xff800001,0xff800001,0x0,0x0,0x0,0xff800001,0x0,0x0,0x0,0x0,0xfc000000,0xfc000000,0x0,0x0,0xfc000000,0x0,0x0,0xff800001,0xff800001,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff800001,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0
 xff800000,0x3800000,0x1c000000,0xe0000000,0x1,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_5() {
-      jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0xf,0xf,0x800000f,0x0,0x0,0x40,0x0,0x8000000,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x8,0x8,0x8,0x0,0x8,0x8,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x52f,0x0,0x2000,0x52f,0x52f,0x52f,0x40,0x2000,0x52f,0x0,0x52f,0x2000,0x0,0x52f,0x40,0x2000,0x52f,0x52f,0x2000,0x40,0x0,0x28,0x407,0x0,0x28,0x28,0x407,0x28,0x407,0x0,0x8,0x0,0x1000,0x28,0x1000,0x28,0x2000,0x52f,0x0,0x800,0x0,0x0,0x1000,0x52f,0x100008,0x100008,0x800,0x100008,0x100008,0x1000,0x0,0x10000000,0x10000000,0xa000040,0x100008,0x80,0x1080,0xa001000,0xa000040,0x100008,0x0,0x0,0x8,0x0,0x0,0x108,0x108,0x52f,0x52f,0x52f,0x52f,0x427,0x0,0x400,0x0,0x427,0x800000,0x1000000,0xfc000,0xfc000,0x6000000,0x0,0x18000000,0x18000000,0x6000000,0x18000000,0x18000000,0x610000f,0xf,0x28,0x1000,0x0,0x1000,0x1000,0x1000,0x0,0xe10000f,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x800,0x800,0x0,0x28,0x20000000,0x20000000,0x0,0x0,0x0,0x0,0x0,0x7,0
 x0,0x0,0x400,};
+      jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x1f0,0x1f0,0x1f0,0x0,0x0,0x800,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x100,0x100,0x100,0x0,0x100,0x100,0x0,0x0,0x0,0x0,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa5f0,0x0,0x40000,0xa5f0,0xa5f0,0xa5f0,0x800,0x40000,0xa5f0,0x0,0xa5f0,0x40000,0x0,0xa5f0,0x800,0x40000,0xa5f0,0xa5f0,0x40000,0x800,0x0,0x500,0x80f0,0x0,0x500,0x500,0x80f0,0x500,0x80f0,0x0,0x100,0x0,0x20000,0x500,0x20000,0x500,0x40000,0xa5f0,0x0,0x10000,0x0,0x0,0x20000,0xa5f0,0x2000100,0x2000100,0x10000,0x2000100,0x2000100,0x20000,0x0,0x0,0x0,0x40000800,0x2000100,0x1000,0x21000,0x40020000,0x40000800,0x2000100,0x0,0x0,0x100,0x0,0x0,0x2100,0x2100,0xa5f0,0xa5f0,0xa5f0,0xa5f0,0x84f0,0x0,0x8000,0x0,0x84f0,0x10000000,0x20000000,0x1f80000,0x1f80000,0xc0000000,0x0,0x0,0x0,0xc0000000,0x0,0x0,0xc20001f0,0x1f0,0x500,0x20000,0x0,0x20000,0x20000,0x20000,0x0,0xc20001f0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000,0x10000,0x10000,0
 x0,0x0,0x0,0x0,0x0,0x0,0x0,0x500,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x8000,};
    }
    private static void jj_la1_init_6() {
-      jj_la1_6 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x0,0x2,0x2,0x0,0x1,0x2,0x2,0x10,0x2,0x0,0x0,0x0,0x10,0x0,0x1,0x2,0x2,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_6 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x0,0x40,0x40,0x0,0x20,0x42,0x42,0x201,0x40,0x0,0x0,0x1,0x201,0x0,0x20,0x40,0x40,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
   final private JJCalls[] jj_2_rtns = new JJCalls[5];
   private boolean jj_rescan = false;
@@ -6725,7 +6960,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 176; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 182; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6740,7 +6975,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 176; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 182; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6751,7 +6986,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 176; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 182; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6762,7 +6997,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 176; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 182; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6772,7 +7007,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 176; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 182; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6782,7 +7017,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 176; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 182; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6894,12 +7129,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   /** Generate ParseException. */
   public ParseException generateParseException() {
     jj_expentries.clear();
-    boolean[] la1tokens = new boolean[208];
+    boolean[] la1tokens = new boolean[213];
     if (jj_kind >= 0) {
       la1tokens[jj_kind] = true;
       jj_kind = -1;
     }
-    for (int i = 0; i < 176; i++) {
+    for (int i = 0; i < 182; i++) {
       if (jj_la1[i] == jj_gen) {
         for (int j = 0; j < 32; j++) {
           if ((jj_la1_0[i] & (1<<j)) != 0) {
@@ -6926,7 +7161,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         }
       }
     }
-    for (int i = 0; i < 208; i++) {
+    for (int i = 0; i < 213; i++) {
       if (la1tokens[i]) {
         jj_expentry = new int[1];
         jj_expentry[0] = i;