jena-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From a...@apache.org
Subject svn commit: r1177969 [1/4] - in /incubator/jena/Jena2/ARQ/trunk: ./ Grammar/ src/main/java/com/hp/hpl/jena/sparql/expr/ src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/ src/main/java/com/hp/hpl/jena/sparql/lang/arq/ src/main/java/com/hp/hpl/jena/sp...
Date Sat, 01 Oct 2011 12:06:42 GMT
Author: andy
Date: Sat Oct  1 12:06:41 2011
New Revision: 1177969

URL: http://svn.apache.org/viewvc?rev=1177969&view=rev
Log:
Add STRAFTER and STRBEFORE (ARQ syntax)

Added:
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrAfter.java
  (with props)
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrBefore.java
  (with props)
Modified:
    incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt
    incubator/jena/Jena2/ARQ/trunk/Grammar/arq.jj
    incubator/jena/Jena2/ARQ/trunk/Grammar/master.jj
    incubator/jena/Jena2/ARQ/trunk/Grammar/sparql_11.jj
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParser.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParserConstants.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParserTokenManager.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/sparql_11/SPARQLParser11.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/sparql_11/SPARQLParser11Constants.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/sparql_11/SPARQLParser11TokenManager.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/Tags.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderExpr.java

Modified: incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt?rev=1177969&r1=1177968&r2=1177969&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt (original)
+++ incubator/jena/Jena2/ARQ/trunk/ChangeLog.txt Sat Oct  1 12:06:41 2011
@@ -3,8 +3,10 @@ ChangeLog for ARQ
 
 ==== ARQ 2.8.9
 
-+ Add function UUID 
-+ Add function REPLACE (see fn:string-replace in XPath/XQuery F&O)  
++ Add function STRBEFORE (see fn:substring-before in XPath/XQuery F&O)  [ARQ language
only]  
++ Add function STRAFTER (see fn:substring-after in XPath/XQuery F&O)  [ARQ language only]
  
++ Add function UUID  [ARQ language only]  
++ Add function REPLACE (see fn:string-replace in XPath/XQuery F&O)  [ARQ language only]
  
 + Remove LARQ from ARQ.  LARQ is now a separate Jena module.
 + Fix reuse of query objects (aggregation used shared state) (JENA-121)
 + Spill to disk update (enable with ARQ.spillOnDiskUpdateThreshold) (JENA-45)

Modified: incubator/jena/Jena2/ARQ/trunk/Grammar/arq.jj
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/Grammar/arq.jj?rev=1177969&r1=1177968&r2=1177969&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/Grammar/arq.jj (original)
+++ incubator/jena/Jena2/ARQ/trunk/Grammar/arq.jj Sat Oct  1 12:06:41 2011
@@ -1315,6 +1315,10 @@ Expr BuiltInCall() : { Expr expr ; Expr 
     { return new E_StrStartsWith(expr1, expr2) ; }
   | <STRENDS> <LPAREN> expr1 = Expression() <COMMA> expr2 = Expression()
<RPAREN>
     { return new E_StrEndsWith(expr1, expr2) ; }
+  | <STRBEFORE> <LPAREN> expr1 = Expression() <COMMA> expr2 = Expression()
<RPAREN>
+    { return new E_StrBefore(expr1, expr2) ; }
+  | <STRAFTER> <LPAREN> expr1 = Expression() <COMMA> expr2 = Expression()
<RPAREN>
+    { return new E_StrAfter(expr1, expr2) ; }
   | <YEAR> <LPAREN> expr1 = Expression() <RPAREN> { return new E_DateTimeYear(expr1)
; }
   | <MONTH> <LPAREN> expr1 = Expression() <RPAREN> { return new E_DateTimeMonth(expr1)
; }
   | <DAY> <LPAREN> expr1 = Expression() <RPAREN> { return new E_DateTimeDay(expr1)
; }
@@ -1674,8 +1678,10 @@ TOKEN [IGNORE_CASE] :
 | < LCASE: "LCASE" >
 | < ENCODE_FOR_URI: "ENCODE_FOR_URI" >
 | < CONTAINS: "CONTAINS" >
-| < STRSTARTS: "strSTARTS" >
-| < STRENDS: "strENDS" >
+| < STRSTARTS: "STRSTARTS" >
+| < STRENDS: "STRENDS" >
+| < STRBEFORE: "STRBEFORE" >
+| < STRAFTER : "STRAFTER" >
 | < YEAR: "YEAR" >
 | < MONTH: "MONTH" >
 | < DAY: "DAY" >

Modified: incubator/jena/Jena2/ARQ/trunk/Grammar/master.jj
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/Grammar/master.jj?rev=1177969&r1=1177968&r2=1177969&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/Grammar/master.jj (original)
+++ incubator/jena/Jena2/ARQ/trunk/Grammar/master.jj Sat Oct  1 12:06:41 2011
@@ -1659,7 +1659,12 @@ Expr BuiltInCall() : { Expr expr ; Expr 
     
   | <STRENDS> <LPAREN> expr1 = Expression() <COMMA> expr2 = Expression()
<RPAREN>
     { return new E_StrEndsWith(expr1, expr2) ; }
-    
+#ifdef ARQ
+  |  <STRBEFORE>  <LPAREN> expr1 = Expression() <COMMA> expr2 = Expression()
<RPAREN>
+    { return new E_StrBefore(expr1, expr2) ; }
+  | <STRAFTER>    <LPAREN> expr1 = Expression() <COMMA> expr2 = Expression()
<RPAREN>
+    { return new E_StrAfter(expr1, expr2) ; }
+#endif    
   | <YEAR> <LPAREN> expr1 = Expression() <RPAREN> { return new E_DateTimeYear(expr1)
; }
     
   | <MONTH> <LPAREN> expr1 = Expression() <RPAREN> { return new E_DateTimeMonth(expr1)
; }
@@ -2135,8 +2140,10 @@ TOKEN [IGNORE_CASE] :
 |  < LCASE:       "LCASE" >
 |  < ENCODE_FOR_URI:      "ENCODE_FOR_URI" >
 |  < CONTAINS:    "CONTAINS" >
-|  < STRSTARTS:   "strSTARTS" >
-|  < STRENDS:     "strENDS" >
+|  < STRSTARTS:   "STRSTARTS" >
+|  < STRENDS:     "STRENDS" >
+|  < STRBEFORE:   "STRBEFORE" >
+|  < STRAFTER :   "STRAFTER" >
 |  < YEAR:        "YEAR" >
 |  < MONTH:       "MONTH" >
 |  < DAY:         "DAY" >

Modified: incubator/jena/Jena2/ARQ/trunk/Grammar/sparql_11.jj
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/Grammar/sparql_11.jj?rev=1177969&r1=1177968&r2=1177969&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/Grammar/sparql_11.jj (original)
+++ incubator/jena/Jena2/ARQ/trunk/Grammar/sparql_11.jj Sat Oct  1 12:06:41 2011
@@ -1562,8 +1562,10 @@ TOKEN [IGNORE_CASE] :
 | < LCASE: "LCASE" >
 | < ENCODE_FOR_URI: "ENCODE_FOR_URI" >
 | < CONTAINS: "CONTAINS" >
-| < STRSTARTS: "strSTARTS" >
-| < STRENDS: "strENDS" >
+| < STRSTARTS: "STRSTARTS" >
+| < STRENDS: "STRENDS" >
+| < STRBEFORE: "STRBEFORE" >
+| < STRAFTER : "STRAFTER" >
 | < YEAR: "YEAR" >
 | < MONTH: "MONTH" >
 | < DAY: "DAY" >

Added: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrAfter.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrAfter.java?rev=1177969&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrAfter.java
(added)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrAfter.java
Sat Oct  1 12:06:41 2011
@@ -0,0 +1,38 @@
+/**
+ * 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 com.hp.hpl.jena.sparql.expr;
+
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.sse.Tags ;
+
+public class E_StrAfter extends ExprFunction2
+{
+    private static final String symbol = Tags.tagStrAfter ;
+
+    public E_StrAfter(Expr expr1, Expr expr2)
+    {
+        super(expr1, expr2, symbol) ;
+    }
+    
+    @Override
+    public NodeValue eval(NodeValue v1, NodeValue v2) { return XSDFuncOp.strAfter(v1, v2)
; }
+    
+    @Override
+    public Expr copy(Expr expr1, Expr expr2) { return new E_StrAfter(expr1, expr2) ; } 
+}

Propchange: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrAfter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrBefore.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrBefore.java?rev=1177969&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrBefore.java
(added)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrBefore.java
Sat Oct  1 12:06:41 2011
@@ -0,0 +1,38 @@
+/**
+ * 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 com.hp.hpl.jena.sparql.expr;
+
+import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
+import com.hp.hpl.jena.sparql.sse.Tags ;
+
+public class E_StrBefore extends ExprFunction2
+{
+    private static final String symbol = Tags.tagStrBefore ;
+
+    public E_StrBefore(Expr expr1, Expr expr2)
+    {
+        super(expr1, expr2, symbol) ;
+    }
+    
+    @Override
+    public NodeValue eval(NodeValue v1, NodeValue v2) { return XSDFuncOp.strBefore(v1, v2)
; } 
+    
+    @Override
+    public Expr copy(Expr expr1, Expr expr2) { return new E_StrBefore(expr1, expr2) ; } 
+}

Propchange: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_StrBefore.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java?rev=1177969&r1=1177968&r2=1177969&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
(original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
Sat Oct  1 12:06:41 2011
@@ -18,30 +18,30 @@
 
 package com.hp.hpl.jena.sparql.expr.nodevalue;
 
-import static com.hp.hpl.jena.sparql.expr.nodevalue.NumericType.OP_DECIMAL ;
-import static com.hp.hpl.jena.sparql.expr.nodevalue.NumericType.OP_DOUBLE ;
-import static com.hp.hpl.jena.sparql.expr.nodevalue.NumericType.OP_FLOAT ;
-import static com.hp.hpl.jena.sparql.expr.nodevalue.NumericType.OP_INTEGER ;
-
-import java.math.BigDecimal ;
-import java.math.BigInteger ;
-import java.text.DecimalFormat ;
-import java.util.HashSet ;
-import java.util.List ;
-import java.util.Set ;
+import static com.hp.hpl.jena.sparql.expr.nodevalue.NumericType.OP_DECIMAL ;
+import static com.hp.hpl.jena.sparql.expr.nodevalue.NumericType.OP_DOUBLE ;
+import static com.hp.hpl.jena.sparql.expr.nodevalue.NumericType.OP_FLOAT ;
+import static com.hp.hpl.jena.sparql.expr.nodevalue.NumericType.OP_INTEGER ;
+
+import java.math.BigDecimal ;
+import java.math.BigInteger ;
+import java.text.DecimalFormat ;
+import java.util.HashSet ;
+import java.util.List ;
+import java.util.Set ;
 import java.util.regex.Pattern ;
-
-import org.openjena.atlas.lib.StrUtils ;
-import org.openjena.atlas.logging.Log ;
-
-import com.hp.hpl.jena.datatypes.RDFDatatype ;
-import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ;
-import com.hp.hpl.jena.datatypes.xsd.XSDDateTime ;
-import com.hp.hpl.jena.datatypes.xsd.XSDDuration ;
-import com.hp.hpl.jena.graph.Node ;
-import com.hp.hpl.jena.sparql.ARQInternalErrorException ;
+
+import org.openjena.atlas.lib.StrUtils ;
+import org.openjena.atlas.logging.Log ;
+
+import com.hp.hpl.jena.datatypes.RDFDatatype ;
+import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ;
+import com.hp.hpl.jena.datatypes.xsd.XSDDateTime ;
+import com.hp.hpl.jena.datatypes.xsd.XSDDuration ;
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.sparql.ARQInternalErrorException ;
 import com.hp.hpl.jena.sparql.expr.* ;
-import com.hp.hpl.jena.sparql.util.DateTimeStruct ;
+import com.hp.hpl.jena.sparql.util.DateTimeStruct ;
 /**
  * Implementation of XQuery/XPath functions and operators.
  * http://www.w3.org/TR/xpath-functions/ */
@@ -575,6 +575,38 @@ public class XSDFuncOp
         String lex1 = string.asNode().getLiteralLexicalForm() ;
         String lex2 = match.asNode().getLiteralLexicalForm() ;
         return NodeValue.booleanReturn(lex1.endsWith(lex2)) ;
+    }
+    
+    public static NodeValue strBefore(NodeValue string, NodeValue match)
+    {
+        check2("strBefore", string, match) ;
+        String lex1 = string.asNode().getLiteralLexicalForm() ;
+        String lex2 = match.asNode().getLiteralLexicalForm() ;
+        if ( lex2.length() == 0 )
+            return NodeValue.nvEmptyString ;
+        
+        int i = lex1.indexOf(lex2) ;
+        if ( i < 0 )
+            return NodeValue.nvEmptyString ;
+        
+        String s = lex1.substring(0, i) ;
+        return NodeValue.makeString(s) ;
+    }
+    
+    public static NodeValue strAfter(NodeValue string, NodeValue match)
+    {
+        check2("strAfter", string, match) ;
+        String lex1 = string.asNode().getLiteralLexicalForm() ;
+        String lex2 = match.asNode().getLiteralLexicalForm() ;
+        if ( lex2.length() == 0 )
+            return NodeValue.nvEmptyString ;
+        
+        int i = lex1.indexOf(lex2) ;
+        if ( i < 0 )
+            return NodeValue.nvEmptyString ;
+        i += lex2.length() ;
+        String s = lex1.substring(i) ;
+        return NodeValue.makeString(s) ;
     }
 
     public static NodeValue strLowerCase(NodeValue string)

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParser.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParser.java?rev=1177969&r1=1177968&r2=1177969&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParser.java
(original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParser.java
Sat Oct  1 12:06:41 2011
@@ -217,6 +217,8 @@ public class ARQParser extends ARQParser
     case CONTAINS:
     case STRSTARTS:
     case STRENDS:
+    case STRBEFORE:
+    case STRAFTER:
     case YEAR:
     case MONTH:
     case DAY:
@@ -304,6 +306,8 @@ public class ARQParser extends ARQParser
         case CONTAINS:
         case STRSTARTS:
         case STRENDS:
+        case STRBEFORE:
+        case STRAFTER:
         case YEAR:
         case MONTH:
         case DAY:
@@ -377,6 +381,8 @@ public class ARQParser extends ARQParser
             case CONTAINS:
             case STRSTARTS:
             case STRENDS:
+            case STRBEFORE:
+            case STRAFTER:
             case YEAR:
             case MONTH:
             case DAY:
@@ -505,6 +511,8 @@ public class ARQParser extends ARQParser
         case CONTAINS:
         case STRSTARTS:
         case STRENDS:
+        case STRBEFORE:
+        case STRAFTER:
         case YEAR:
         case MONTH:
         case DAY:
@@ -867,6 +875,8 @@ public class ARQParser extends ARQParser
       case CONTAINS:
       case STRSTARTS:
       case STRENDS:
+      case STRBEFORE:
+      case STRAFTER:
       case YEAR:
       case MONTH:
       case DAY:
@@ -933,6 +943,8 @@ public class ARQParser extends ARQParser
     case CONTAINS:
     case STRSTARTS:
     case STRENDS:
+    case STRBEFORE:
+    case STRAFTER:
     case YEAR:
     case MONTH:
     case DAY:
@@ -1032,6 +1044,8 @@ public class ARQParser extends ARQParser
       case CONTAINS:
       case STRSTARTS:
       case STRENDS:
+      case STRBEFORE:
+      case STRAFTER:
       case YEAR:
       case MONTH:
       case DAY:
@@ -1116,6 +1130,8 @@ public class ARQParser extends ARQParser
       case CONTAINS:
       case STRSTARTS:
       case STRENDS:
+      case STRBEFORE:
+      case STRAFTER:
       case YEAR:
       case MONTH:
       case DAY:
@@ -1206,6 +1222,8 @@ public class ARQParser extends ARQParser
     case CONTAINS:
     case STRSTARTS:
     case STRENDS:
+    case STRBEFORE:
+    case STRAFTER:
     case YEAR:
     case MONTH:
     case DAY:
@@ -1264,6 +1282,8 @@ public class ARQParser extends ARQParser
       case CONTAINS:
       case STRSTARTS:
       case STRENDS:
+      case STRBEFORE:
+      case STRAFTER:
       case YEAR:
       case MONTH:
       case DAY:
@@ -2588,6 +2608,8 @@ public class ARQParser extends ARQParser
     case CONTAINS:
     case STRSTARTS:
     case STRENDS:
+    case STRBEFORE:
+    case STRAFTER:
     case YEAR:
     case MONTH:
     case DAY:
@@ -3977,6 +3999,8 @@ public class ARQParser extends ARQParser
     case CONTAINS:
     case STRSTARTS:
     case STRENDS:
+    case STRBEFORE:
+    case STRAFTER:
     case YEAR:
     case MONTH:
     case DAY:
@@ -4064,6 +4088,8 @@ public class ARQParser extends ARQParser
     case CONTAINS:
     case STRSTARTS:
     case STRENDS:
+    case STRBEFORE:
+    case STRAFTER:
     case YEAR:
     case MONTH:
     case DAY:
@@ -4321,6 +4347,24 @@ public class ARQParser extends ARQParser
       jj_consume_token(RPAREN);
       {if (true) return new E_StrEndsWith(expr1, expr2) ;}
       break;
+    case STRBEFORE:
+      jj_consume_token(STRBEFORE);
+      jj_consume_token(LPAREN);
+      expr1 = Expression();
+      jj_consume_token(COMMA);
+      expr2 = Expression();
+      jj_consume_token(RPAREN);
+      {if (true) return new E_StrBefore(expr1, expr2) ;}
+      break;
+    case STRAFTER:
+      jj_consume_token(STRAFTER);
+      jj_consume_token(LPAREN);
+      expr1 = Expression();
+      jj_consume_token(COMMA);
+      expr2 = Expression();
+      jj_consume_token(RPAREN);
+      {if (true) return new E_StrAfter(expr1, expr2) ;}
+      break;
     case YEAR:
       jj_consume_token(YEAR);
       jj_consume_token(LPAREN);
@@ -4687,6 +4731,8 @@ public class ARQParser extends ARQParser
       case CONTAINS:
       case STRSTARTS:
       case STRENDS:
+      case STRBEFORE:
+      case STRAFTER:
       case YEAR:
       case MONTH:
       case DAY:
@@ -5173,101 +5219,78 @@ public class ARQParser extends ARQParser
     finally { jj_save(3, xla); }
   }
 
-  private boolean jj_3R_74() {
-    if (jj_scan_token(FALSE)) return true;
+  private boolean jj_3R_96() {
+    if (jj_scan_token(DOUBLE_NEGATIVE)) return true;
     return false;
   }
 
-  private boolean jj_3R_37() {
-    if (jj_scan_token(COUNT)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3_3() {
+    if (jj_scan_token(DOT)) return true;
+    if (jj_3R_36()) return true;
     return false;
   }
 
-  private boolean jj_3R_73() {
-    if (jj_scan_token(TRUE)) return true;
+  private boolean jj_3R_95() {
+    if (jj_scan_token(DECIMAL_NEGATIVE)) return true;
     return false;
   }
 
-  private boolean jj_3_3() {
-    if (jj_scan_token(DOT)) return true;
-    if (jj_3R_36()) return true;
+  private boolean jj_3R_94() {
+    if (jj_scan_token(INTEGER_NEGATIVE)) return true;
     return false;
   }
 
-  private boolean jj_3R_35() {
+  private boolean jj_3R_85() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_37()) {
-    jj_scanpos = xsp;
-    if (jj_3R_38()) {
-    jj_scanpos = xsp;
-    if (jj_3R_39()) {
-    jj_scanpos = xsp;
-    if (jj_3R_40()) {
-    jj_scanpos = xsp;
-    if (jj_3R_41()) {
+    if (jj_3R_94()) {
     jj_scanpos = xsp;
-    if (jj_3R_42()) {
+    if (jj_3R_95()) {
     jj_scanpos = xsp;
-    if (jj_3R_43()) return true;
-    }
-    }
-    }
-    }
+    if (jj_3R_96()) return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_65() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_73()) {
-    jj_scanpos = xsp;
-    if (jj_3R_74()) return true;
-    }
+  private boolean jj_3R_61() {
+    if (jj_scan_token(NIL)) return true;
     return false;
   }
 
-  private boolean jj_3R_96() {
-    if (jj_scan_token(DOUBLE_NEGATIVE)) return true;
+  private boolean jj_3R_93() {
+    if (jj_scan_token(DOUBLE_POSITIVE)) return true;
     return false;
   }
 
-  private boolean jj_3R_95() {
-    if (jj_scan_token(DECIMAL_NEGATIVE)) return true;
+  private boolean jj_3R_92() {
+    if (jj_scan_token(DECIMAL_POSITIVE)) return true;
     return false;
   }
 
-  private boolean jj_3R_61() {
-    if (jj_scan_token(NIL)) return true;
+  private boolean jj_3R_60() {
+    if (jj_3R_66()) return true;
     return false;
   }
 
-  private boolean jj_3R_94() {
-    if (jj_scan_token(INTEGER_NEGATIVE)) return true;
+  private boolean jj_3R_91() {
+    if (jj_scan_token(INTEGER_POSITIVE)) return true;
     return false;
   }
 
-  private boolean jj_3R_85() {
+  private boolean jj_3R_84() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_94()) {
+    if (jj_3R_91()) {
     jj_scanpos = xsp;
-    if (jj_3R_95()) {
+    if (jj_3R_92()) {
     jj_scanpos = xsp;
-    if (jj_3R_96()) return true;
+    if (jj_3R_93()) return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_60() {
-    if (jj_3R_66()) return true;
-    return false;
-  }
-
   private boolean jj_3R_59() {
     if (jj_3R_65()) return true;
     return false;
@@ -5278,21 +5301,11 @@ public class ARQParser extends ARQParser
     return false;
   }
 
-  private boolean jj_3R_93() {
-    if (jj_scan_token(DOUBLE_POSITIVE)) return true;
-    return false;
-  }
-
   private boolean jj_3R_57() {
     if (jj_3R_63()) return true;
     return false;
   }
 
-  private boolean jj_3R_92() {
-    if (jj_scan_token(DECIMAL_POSITIVE)) return true;
-    return false;
-  }
-
   private boolean jj_3R_53() {
     Token xsp;
     xsp = jj_scanpos;
@@ -5320,21 +5333,13 @@ public class ARQParser extends ARQParser
     return false;
   }
 
-  private boolean jj_3R_91() {
-    if (jj_scan_token(INTEGER_POSITIVE)) return true;
+  private boolean jj_3R_90() {
+    if (jj_scan_token(DOUBLE)) return true;
     return false;
   }
 
-  private boolean jj_3R_84() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_91()) {
-    jj_scanpos = xsp;
-    if (jj_3R_92()) {
-    jj_scanpos = xsp;
-    if (jj_3R_93()) return true;
-    }
-    }
+  private boolean jj_3R_89() {
+    if (jj_scan_token(DECIMAL)) return true;
     return false;
   }
 
@@ -5343,26 +5348,6 @@ public class ARQParser extends ARQParser
     return false;
   }
 
-  private boolean jj_3R_52() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(13)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(14)) return true;
-    }
-    return false;
-  }
-
-  private boolean jj_3R_90() {
-    if (jj_scan_token(DOUBLE)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_89() {
-    if (jj_scan_token(DECIMAL)) return true;
-    return false;
-  }
-
   private boolean jj_3R_88() {
     if (jj_scan_token(INTEGER)) return true;
     return false;
@@ -5381,6 +5366,16 @@ public class ARQParser extends ARQParser
     return false;
   }
 
+  private boolean jj_3R_52() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(13)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(14)) return true;
+    }
+    return false;
+  }
+
   private boolean jj_3R_72() {
     if (jj_3R_85()) return true;
     return false;
@@ -5396,6 +5391,19 @@ public class ARQParser extends ARQParser
     return false;
   }
 
+  private boolean jj_3R_64() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_70()) {
+    jj_scanpos = xsp;
+    if (jj_3R_71()) {
+    jj_scanpos = xsp;
+    if (jj_3R_72()) return true;
+    }
+    }
+    return false;
+  }
+
   private boolean jj_3R_48() {
     if (jj_3R_52()) return true;
     return false;
@@ -5411,19 +5419,6 @@ public class ARQParser extends ARQParser
     return false;
   }
 
-  private boolean jj_3R_64() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_70()) {
-    jj_scanpos = xsp;
-    if (jj_3R_71()) {
-    jj_scanpos = xsp;
-    if (jj_3R_72()) return true;
-    }
-    }
-    return false;
-  }
-
   private boolean jj_3R_63() {
     if (jj_3R_69()) return true;
     return false;
@@ -5439,19 +5434,13 @@ public class ARQParser extends ARQParser
     return false;
   }
 
-  private boolean jj_3R_54() {
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
   private boolean jj_3R_76() {
     if (jj_scan_token(ANON)) return true;
     return false;
   }
 
-  private boolean jj_3_2() {
-    if (jj_scan_token(DOT)) return true;
-    if (jj_3R_36()) return true;
+  private boolean jj_3R_54() {
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
@@ -5470,13 +5459,14 @@ public class ARQParser extends ARQParser
     return false;
   }
 
-  private boolean jj_3R_87() {
-    if (jj_scan_token(PNAME_NS)) return true;
+  private boolean jj_3_2() {
+    if (jj_scan_token(DOT)) return true;
+    if (jj_3R_36()) return true;
     return false;
   }
 
-  private boolean jj_3R_55() {
-    if (jj_scan_token(LBRACKET)) return true;
+  private boolean jj_3R_87() {
+    if (jj_scan_token(PNAME_NS)) return true;
     return false;
   }
 
@@ -5501,28 +5491,18 @@ public class ARQParser extends ARQParser
     return false;
   }
 
-  private boolean jj_3R_51() {
-    if (jj_3R_55()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_47() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_50()) {
-    jj_scanpos = xsp;
-    if (jj_3R_51()) return true;
-    }
+  private boolean jj_3R_55() {
+    if (jj_scan_token(LBRACKET)) return true;
     return false;
   }
 
-  private boolean jj_3R_50() {
-    if (jj_3R_54()) return true;
+  private boolean jj_3R_68() {
+    if (jj_3R_78()) return true;
     return false;
   }
 
-  private boolean jj_3R_68() {
-    if (jj_3R_78()) return true;
+  private boolean jj_3R_51() {
+    if (jj_3R_55()) return true;
     return false;
   }
 
@@ -5537,6 +5517,21 @@ public class ARQParser extends ARQParser
     return false;
   }
 
+  private boolean jj_3R_47() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_50()) {
+    jj_scanpos = xsp;
+    if (jj_3R_51()) return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_50() {
+    if (jj_3R_54()) return true;
+    return false;
+  }
+
   private boolean jj_3R_62() {
     Token xsp;
     xsp = jj_scanpos;
@@ -5597,11 +5592,6 @@ public class ARQParser extends ARQParser
     return false;
   }
 
-  private boolean jj_3R_45() {
-    if (jj_3R_47()) return true;
-    return false;
-  }
-
   private boolean jj_3R_69() {
     Token xsp;
     xsp = jj_scanpos;
@@ -5618,6 +5608,27 @@ public class ARQParser extends ARQParser
     return false;
   }
 
+  private boolean jj_3R_45() {
+    if (jj_3R_47()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_74() {
+    if (jj_scan_token(FALSE)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_37() {
+    if (jj_scan_token(COUNT)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_73() {
+    if (jj_scan_token(TRUE)) return true;
+    return false;
+  }
+
   private boolean jj_3R_44() {
     if (jj_3R_46()) return true;
     return false;
@@ -5633,6 +5644,41 @@ public class ARQParser extends ARQParser
     return false;
   }
 
+  private boolean jj_3R_35() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_37()) {
+    jj_scanpos = xsp;
+    if (jj_3R_38()) {
+    jj_scanpos = xsp;
+    if (jj_3R_39()) {
+    jj_scanpos = xsp;
+    if (jj_3R_40()) {
+    jj_scanpos = xsp;
+    if (jj_3R_41()) {
+    jj_scanpos = xsp;
+    if (jj_3R_42()) {
+    jj_scanpos = xsp;
+    if (jj_3R_43()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_65() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_73()) {
+    jj_scanpos = xsp;
+    if (jj_3R_74()) return true;
+    }
+    return false;
+  }
+
   /** Generated Token Manager. */
   public ARQParserTokenManager token_source;
   JavaCharStream jj_input_stream;
@@ -5671,16 +5717,16 @@ public class ARQParser extends ARQParser
       jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0xffffff3d,0x0,0xffffff3d,0xffffff3d,0xffffff3d,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff3d,0x0,0xffffff3d,0xffffff3d,0xffffff3d,0x0,0xffffff3d,0xffffff3d,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff3d,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,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,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff3d,0xffffff3d,0x0,0xffffff3d,0x0,0x0,0x0,0x0,0xffffff3d,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,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,0x7fffff,0x0,0x7fffff,0x7fffff,0x7fffff,0x0,0x0,0x600000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fffff,0x0,0x1fffff,0x1fffff,0x1fffff,0x0,0x1fffff,0x1fffff,0x0,0x0,0x0,0x0,0x0,0x600000,0x0,0x0,0x600000,0x0,0xff000000,0xff000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x3000000,0x0,0x0,0x2000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x600000,0x0,0x0,0x600000,0x600000,0x0,0x0,0x600000,0x0,0x0,0x600000,0x600000,0x0,0x0,0x0,0x0,0x1fffff,0x0,0x0,0x0,0x0,0x0,0x600000,0x0,0x600000,0x0,0x0,0x0,0x0,0x0,0x600000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x600000,0x600000,0x600000,0x0,0x0,0x600000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7fffff,0x7fffff,0x0,0x1fffff,0x0,0x0,0x0,0x0,0x7fffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x600000,0x0,0x0,0x0,0x0,};
+      jj_la1_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x1ffffff,0x0,0x1ffffff,0x1ffffff,0x1ffffff,0x0,0x0,0x1800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7fffff,0x0,0x7fffff,0x7fffff,0x7fffff,0x0,0x7fffff,0x7fffff,0x0,0x0,0x0,0x0,0x0,0x1800000,0x0,0x0,0x1800000,0x0,0xfc000000,0xfc000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0xc000000,0x0,0x0,0x8000000,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1800000,0x0,0x0,0x1800000,0x1800000,0x0,0x0,0x1800000,0x0,0x0,0x1800000,0x1800000,0x0,0x0,0x0,0x0,0x7fffff,0x0,0x0,0x0,0x0,0x0,0x1800000,0x0,0x1800000,0x0,0x0,0x0,0x0,0x0,0x1800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1800000,0x1800000,0x1800000,0x0,0x0,0x1800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ffffff,0x1ffffff,0x0,0x7fffff,0x0,0x0,0x0,0x0,0x1ffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1800000,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_4() {
-      jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x787fc000,0x0,0xf87fc000,0xf87fc000,0xf87fc000,0x0,0x0,0xf87fc000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x80000000,0x80000000,0x80000000,0x0,0x80000000,0x80000000,0x0,0x0,0x0,0x0,0x80000000,0x787fc000,0x80000000,0x0,0x787fc000,0x0,0x84f,0x84f,0x20,0x0,0x80,0x20,0x20,0x20,0x20,0x20,0x20,0x800,0x0,0x0,0x1000,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x0,0x0,0x200,0x600,0x600,0xf87fc000,0x0,0x0,0xf87fc000,0xf87fc000,0x0,0x0,0xf87fc000,0x0,0x0,0xf87fc000,0xf87fc000,0x0,0x0,0x20,0x0,0x80000000,0x0,0x0,0x80000000,0x0,0x80000000,0xf87fc000,0x0,0xf87fc000,0x0,0x0,0x0,0x0,0x0,0xf87fc000,0x80000000,0x0,0x80000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x80000000,0x4000,0x0,0x4000,0x0,0x80000000,0x0,0x0,0x80000000,0x0,0x0,0x80000000,0xf87fc000,0xf87fc000,0x787fc000,0x0,0x0,0x787fc000,0x0,0x0,0x0,0x0,0x7e0000,0x7e0000,0x0,0x0,0x7e0000,0x0,0x0,0xf87fc000,0xf87fc000,0x80000000,0x0,0x0,0x0,0x0,0x0,0xf87fc000,0x0,0x0,0x0,0x0,0x0,0x0,
 0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x7fc000,0x1c000,0xe0000,0x700000,0x0,0x78000000,0x0,0x0,0x0,};
+      jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0xe1ff0000,0x0,0xe1ff0000,0xe1ff0000,0xe1ff0000,0x0,0x0,0xe1ff0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe1ff0000,0x0,0x0,0xe1ff0000,0x0,0x213f,0x213f,0x80,0x0,0x200,0x80,0x80,0x80,0x80,0x80,0x80,0x2000,0x0,0x0,0x4000,0x0,0x0,0x0,0x200,0x200,0x0,0x0,0x0,0x0,0x800,0x1800,0x1800,0xe1ff0000,0x0,0x0,0xe1ff0000,0xe1ff0000,0x0,0x0,0xe1ff0000,0x0,0x0,0xe1ff0000,0xe1ff0000,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe1ff0000,0x0,0xe1ff0000,0x0,0x0,0x0,0x0,0x0,0xe1ff0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000,0x0,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe1ff0000,0xe1ff0000,0xe1ff0000,0x0,0x0,0xe1ff0000,0x0,0x0,0x0,0x0,0x1f80000,0x1f80000,0x0,0x0,0x1f80000,0x0,0x0,0xe1ff0000,0xe1ff0000,0x0,0x0,0x0,0x0,0x0,0x0,0xe1ff0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ff0000,0x70000,0x380000,0x1c00000,0x0,0xe0000000,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_5() {
-      jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x0,0x0,0x52,0x4,0x0,0x800000,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x2,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x52,0x0,0x200,0x52,0x52,0x200,0x0,0x52,0x4,0x200,0x52,0x52,0x200,0x4,0x0,0x0,0x0,0x0,0x100,0x2,0x100,0x2,0x52,0x200,0x52,0x80,0x0,0x0,0x100,0x0,0x52,0x20010000,0x80,0x20010000,0x20010000,0x0,0x10000000,0x21000000,0x21000000,0xa00004,0x20010000,0x8,0x108,0x100,0xa00004,0x10000,0x10000000,0x20000000,0x20000000,0x0,0x20000000,0x10,0x52,0x52,0x42,0x0,0x0,0x42,0x80000,0x100000,0xfc00,0xfc00,0x600000,0x0,0x1800000,0x1800000,0x600000,0x1800000,0x1800000,0x610000,0x0,0x2,0x0,0x100,0x100,0x100,0x0,0xe10000,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x0,0x2,0x2000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,};
+      jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3,0x3,0x2000003,0x0,0x0,0x14b,0x10,0x0,0x2000000,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x2,0x2,0x2,0x0,0x2,0x2,0x0,0x0,0x0,0x0,0xa,0x1,0xa,0x0,0x1,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x14b,0x0,0x800,0x14b,0x14b,0x800,0x0,0x14b,0x10,0x800,0x14b,0x14b,0x800,0x10,0x0,0x0,0x2,0x0,0x400,0xa,0x400,0xa,0x14b,0x800,0x14b,0x200,0x0,0x0,0x400,0x0,0x14b,0x80040002,0x200,0x80040002,0x80040002,0x0,0x40000000,0x84000000,0x84000000,0x2800010,0x80040002,0x20,0x420,0x400,0x2800010,0x40002,0x40000000,0x80000000,0x80000002,0x0,0x80000000,0x42,0x14b,0x14b,0x109,0x0,0x0,0x109,0x200000,0x400000,0x3f000,0x3f000,0x1800000,0x0,0x6000000,0x6000000,0x1800000,0x6000000,0x6000000,0x1840003,0x3,0xa,0x0,0x400,0x400,0x400,0x0,0x3840003,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x200,0x200,0x0,0xa,0x8000000,0x8000000,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x100,};
    }
    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,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,};
+      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,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
   final private JJCalls[] jj_2_rtns = new JJCalls[4];
   private boolean jj_rescan = false;
@@ -5866,7 +5912,7 @@ public class ARQParser extends ARQParser
   /** Generate ParseException. */
   public ParseException generateParseException() {
     jj_expentries.clear();
-    boolean[] la1tokens = new boolean[200];
+    boolean[] la1tokens = new boolean[202];
     if (jj_kind >= 0) {
       la1tokens[jj_kind] = true;
       jj_kind = -1;
@@ -5898,7 +5944,7 @@ public class ARQParser extends ARQParser
         }
       }
     }
-    for (int i = 0; i < 200; i++) {
+    for (int i = 0; i < 202; i++) {
       if (la1tokens[i]) {
         jj_expentry = new int[1];
         jj_expentry[0] = i;

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParserConstants.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParserConstants.java?rev=1177969&r1=1177968&r2=1177969&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParserConstants.java
(original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/arq/ARQParserConstants.java
Sat Oct  1 12:06:41 2011
@@ -216,205 +216,209 @@ public interface ARQParserConstants {
   /** RegularExpression Id. */
   int STRENDS = 99;
   /** RegularExpression Id. */
-  int YEAR = 100;
+  int STRBEFORE = 100;
   /** RegularExpression Id. */
-  int MONTH = 101;
+  int STRAFTER = 101;
   /** RegularExpression Id. */
-  int DAY = 102;
+  int YEAR = 102;
   /** RegularExpression Id. */
-  int HOURS = 103;
+  int MONTH = 103;
   /** RegularExpression Id. */
-  int MINUTES = 104;
+  int DAY = 104;
   /** RegularExpression Id. */
-  int SECONDS = 105;
+  int HOURS = 105;
   /** RegularExpression Id. */
-  int TIMEZONE = 106;
+  int MINUTES = 106;
   /** RegularExpression Id. */
-  int TZ = 107;
+  int SECONDS = 107;
   /** RegularExpression Id. */
-  int NOW = 108;
+  int TIMEZONE = 108;
   /** RegularExpression Id. */
-  int UUID = 109;
+  int TZ = 109;
   /** RegularExpression Id. */
-  int VERSION = 110;
+  int NOW = 110;
   /** RegularExpression Id. */
-  int MD5 = 111;
+  int UUID = 111;
   /** RegularExpression Id. */
-  int SHA1 = 112;
+  int VERSION = 112;
   /** RegularExpression Id. */
-  int SHA224 = 113;
+  int MD5 = 113;
   /** RegularExpression Id. */
-  int SHA256 = 114;
+  int SHA1 = 114;
   /** RegularExpression Id. */
-  int SHA384 = 115;
+  int SHA224 = 115;
   /** RegularExpression Id. */
-  int SHA512 = 116;
+  int SHA256 = 116;
   /** RegularExpression Id. */
-  int TRUE = 117;
+  int SHA384 = 117;
   /** RegularExpression Id. */
-  int FALSE = 118;
+  int SHA512 = 118;
   /** RegularExpression Id. */
-  int DATA = 119;
+  int TRUE = 119;
   /** RegularExpression Id. */
-  int INSERT = 120;
+  int FALSE = 120;
   /** RegularExpression Id. */
-  int DELETE = 121;
+  int DATA = 121;
   /** RegularExpression Id. */
-  int INSERT_DATA = 122;
+  int INSERT = 122;
   /** RegularExpression Id. */
-  int DELETE_DATA = 123;
+  int DELETE = 123;
   /** RegularExpression Id. */
-  int DELETE_WHERE = 124;
+  int INSERT_DATA = 124;
   /** RegularExpression Id. */
-  int MODIFY = 125;
+  int DELETE_DATA = 125;
   /** RegularExpression Id. */
-  int LOAD = 126;
+  int DELETE_WHERE = 126;
   /** RegularExpression Id. */
-  int CLEAR = 127;
+  int MODIFY = 127;
   /** RegularExpression Id. */
-  int CREATE = 128;
+  int LOAD = 128;
   /** RegularExpression Id. */
-  int ADD = 129;
+  int CLEAR = 129;
   /** RegularExpression Id. */
-  int MOVE = 130;
+  int CREATE = 130;
   /** RegularExpression Id. */
-  int COPY = 131;
+  int ADD = 131;
   /** RegularExpression Id. */
-  int META = 132;
+  int MOVE = 132;
   /** RegularExpression Id. */
-  int SILENT = 133;
+  int COPY = 133;
   /** RegularExpression Id. */
-  int DROP = 134;
+  int META = 134;
   /** RegularExpression Id. */
-  int INTO = 135;
+  int SILENT = 135;
   /** RegularExpression Id. */
-  int TO = 136;
+  int DROP = 136;
   /** RegularExpression Id. */
-  int DFT = 137;
+  int INTO = 137;
   /** RegularExpression Id. */
-  int ALL = 138;
+  int TO = 138;
   /** RegularExpression Id. */
-  int WITH = 139;
+  int DFT = 139;
   /** RegularExpression Id. */
-  int USING = 140;
+  int ALL = 140;
   /** RegularExpression Id. */
-  int DIGITS = 141;
+  int WITH = 141;
   /** RegularExpression Id. */
-  int INTEGER = 142;
+  int USING = 142;
   /** RegularExpression Id. */
-  int DECIMAL = 143;
+  int DIGITS = 143;
   /** RegularExpression Id. */
-  int DOUBLE = 144;
+  int INTEGER = 144;
   /** RegularExpression Id. */
-  int INTEGER_POSITIVE = 145;
+  int DECIMAL = 145;
   /** RegularExpression Id. */
-  int DECIMAL_POSITIVE = 146;
+  int DOUBLE = 146;
   /** RegularExpression Id. */
-  int DOUBLE_POSITIVE = 147;
+  int INTEGER_POSITIVE = 147;
   /** RegularExpression Id. */
-  int INTEGER_NEGATIVE = 148;
+  int DECIMAL_POSITIVE = 148;
   /** RegularExpression Id. */
-  int DECIMAL_NEGATIVE = 149;
+  int DOUBLE_POSITIVE = 149;
   /** RegularExpression Id. */
-  int DOUBLE_NEGATIVE = 150;
+  int INTEGER_NEGATIVE = 150;
   /** RegularExpression Id. */
-  int EXPONENT = 151;
+  int DECIMAL_NEGATIVE = 151;
   /** RegularExpression Id. */
-  int QUOTE_3D = 152;
+  int DOUBLE_NEGATIVE = 152;
   /** RegularExpression Id. */
-  int QUOTE_3S = 153;
+  int EXPONENT = 153;
   /** RegularExpression Id. */
-  int ECHAR = 154;
+  int QUOTE_3D = 154;
   /** RegularExpression Id. */
-  int STRING_LITERAL1 = 155;
+  int QUOTE_3S = 155;
   /** RegularExpression Id. */
-  int STRING_LITERAL2 = 156;
+  int ECHAR = 156;
   /** RegularExpression Id. */
-  int STRING_LITERAL_LONG1 = 157;
+  int STRING_LITERAL1 = 157;
   /** RegularExpression Id. */
-  int STRING_LITERAL_LONG2 = 158;
+  int STRING_LITERAL2 = 158;
   /** RegularExpression Id. */
-  int LPAREN = 159;
+  int STRING_LITERAL_LONG1 = 159;
   /** RegularExpression Id. */
-  int RPAREN = 160;
+  int STRING_LITERAL_LONG2 = 160;
   /** RegularExpression Id. */
-  int NIL = 161;
+  int LPAREN = 161;
   /** RegularExpression Id. */
-  int LBRACE = 162;
+  int RPAREN = 162;
   /** RegularExpression Id. */
-  int RBRACE = 163;
+  int NIL = 163;
   /** RegularExpression Id. */
-  int LBRACKET = 164;
+  int LBRACE = 164;
   /** RegularExpression Id. */
-  int RBRACKET = 165;
+  int RBRACE = 165;
   /** RegularExpression Id. */
-  int ANON = 166;
+  int LBRACKET = 166;
   /** RegularExpression Id. */
-  int SEMICOLON = 167;
+  int RBRACKET = 167;
   /** RegularExpression Id. */
-  int COMMA = 168;
+  int ANON = 168;
   /** RegularExpression Id. */
-  int DOT = 169;
+  int SEMICOLON = 169;
   /** RegularExpression Id. */
-  int EQ = 170;
+  int COMMA = 170;
   /** RegularExpression Id. */
-  int NE = 171;
+  int DOT = 171;
   /** RegularExpression Id. */
-  int GT = 172;
+  int EQ = 172;
   /** RegularExpression Id. */
-  int LT = 173;
+  int NE = 173;
   /** RegularExpression Id. */
-  int LE = 174;
+  int GT = 174;
   /** RegularExpression Id. */
-  int GE = 175;
+  int LT = 175;
   /** RegularExpression Id. */
-  int BANG = 176;
+  int LE = 176;
   /** RegularExpression Id. */
-  int TILDE = 177;
+  int GE = 177;
   /** RegularExpression Id. */
-  int COLON = 178;
+  int BANG = 178;
   /** RegularExpression Id. */
-  int SC_OR = 179;
+  int TILDE = 179;
   /** RegularExpression Id. */
-  int SC_AND = 180;
+  int COLON = 180;
   /** RegularExpression Id. */
-  int PLUS = 181;
+  int SC_OR = 181;
   /** RegularExpression Id. */
-  int MINUS = 182;
+  int SC_AND = 182;
   /** RegularExpression Id. */
-  int STAR = 183;
+  int PLUS = 183;
   /** RegularExpression Id. */
-  int SLASH = 184;
+  int MINUS = 184;
   /** RegularExpression Id. */
-  int DATATYPE = 185;
+  int STAR = 185;
   /** RegularExpression Id. */
-  int AT = 186;
+  int SLASH = 186;
   /** RegularExpression Id. */
-  int ASSIGN = 187;
+  int DATATYPE = 187;
   /** RegularExpression Id. */
-  int VBAR = 188;
+  int AT = 188;
   /** RegularExpression Id. */
-  int CARAT = 189;
+  int ASSIGN = 189;
   /** RegularExpression Id. */
-  int FPATH = 190;
+  int VBAR = 190;
   /** RegularExpression Id. */
-  int RPATH = 191;
+  int CARAT = 191;
   /** RegularExpression Id. */
-  int QMARK = 192;
+  int FPATH = 192;
   /** RegularExpression Id. */
-  int PN_CHARS_BASE = 193;
+  int RPATH = 193;
   /** RegularExpression Id. */
-  int PN_CHARS_U = 194;
+  int QMARK = 194;
   /** RegularExpression Id. */
-  int PN_CHARS = 195;
+  int PN_CHARS_BASE = 195;
   /** RegularExpression Id. */
-  int PN_PREFIX = 196;
+  int PN_CHARS_U = 196;
   /** RegularExpression Id. */
-  int PN_LOCAL = 197;
+  int PN_CHARS = 197;
   /** RegularExpression Id. */
-  int VARNAME = 198;
+  int PN_PREFIX = 198;
   /** RegularExpression Id. */
-  int UNKNOWN = 199;
+  int PN_LOCAL = 199;
+  /** RegularExpression Id. */
+  int VARNAME = 200;
+  /** RegularExpression Id. */
+  int UNKNOWN = 201;
 
   /** Lexical state. */
   int DEFAULT = 0;
@@ -519,8 +523,10 @@ public interface ARQParserConstants {
     "\"LCASE\"",
     "\"ENCODE_FOR_URI\"",
     "\"CONTAINS\"",
-    "\"strSTARTS\"",
-    "\"strENDS\"",
+    "\"STRSTARTS\"",
+    "\"STRENDS\"",
+    "\"STRBEFORE\"",
+    "\"STRAFTER\"",
     "\"YEAR\"",
     "\"MONTH\"",
     "\"DAY\"",



Mime
View raw message