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 2015/08/24 12:44:41 UTC

[1/3] jena git commit: JENA-803 : Support AGG(DISTNCT ...)

Repository: jena
Updated Branches:
  refs/heads/master ae00d8611 -> b93e38988


http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/JavaCharStream.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/JavaCharStream.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/JavaCharStream.java
index c888a7d..dd87d27 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/JavaCharStream.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/JavaCharStream.java
@@ -1,617 +1,617 @@
-/* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 5.0 */
-/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
-package org.apache.jena.sparql.lang.sparql_11 ;
-
-/**
- * An implementation of interface CharStream, where the stream is assumed to
- * contain only ASCII characters (with java-like unicode escape processing).
- */
-
-public
-class JavaCharStream
-{
-  /** Whether parser is static. */
-  public static final boolean staticFlag = false;
-
-  static final int hexval(char c) throws java.io.IOException {
-    switch(c)
-    {
-       case '0' :
-          return 0;
-       case '1' :
-          return 1;
-       case '2' :
-          return 2;
-       case '3' :
-          return 3;
-       case '4' :
-          return 4;
-       case '5' :
-          return 5;
-       case '6' :
-          return 6;
-       case '7' :
-          return 7;
-       case '8' :
-          return 8;
-       case '9' :
-          return 9;
-
-       case 'a' :
-       case 'A' :
-          return 10;
-       case 'b' :
-       case 'B' :
-          return 11;
-       case 'c' :
-       case 'C' :
-          return 12;
-       case 'd' :
-       case 'D' :
-          return 13;
-       case 'e' :
-       case 'E' :
-          return 14;
-       case 'f' :
-       case 'F' :
-          return 15;
-    }
-
-    throw new java.io.IOException(); // Should never come here
-  }
-
-/** Position in buffer. */
-  public int bufpos = -1;
-  int bufsize;
-  int available;
-  int tokenBegin;
-  protected int bufline[];
-  protected int bufcolumn[];
-
-  protected int column = 0;
-  protected int line = 1;
-
-  protected boolean prevCharIsCR = false;
-  protected boolean prevCharIsLF = false;
-
-  protected java.io.Reader inputStream;
-
-  protected char[] nextCharBuf;
-  protected char[] buffer;
-  protected int maxNextCharInd = 0;
-  protected int nextCharInd = -1;
-  protected int inBuf = 0;
-  protected int tabSize = 8;
-
-  protected void setTabSize(int i) { tabSize = i; }
-  protected int getTabSize(int i) { return tabSize; }
-
-  protected void ExpandBuff(boolean wrapAround)
-  {
-    char[] newbuffer = new char[bufsize + 2048];
-    int newbufline[] = new int[bufsize + 2048];
-    int newbufcolumn[] = new int[bufsize + 2048];
-
-    try
-    {
-      if (wrapAround)
-      {
-        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-        System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos);
-        buffer = newbuffer;
-
-        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-        System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
-        bufline = newbufline;
-
-        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-        System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
-        bufcolumn = newbufcolumn;
-
-        bufpos += (bufsize - tokenBegin);
-    }
-    else
-    {
-        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-        buffer = newbuffer;
-
-        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-        bufline = newbufline;
-
-        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-        bufcolumn = newbufcolumn;
-
-        bufpos -= tokenBegin;
-      }
-    }
-    catch (Throwable t)
-    {
-      throw new Error(t.getMessage());
-    }
-
-    available = (bufsize += 2048);
-    tokenBegin = 0;
-  }
-
-  protected void FillBuff() throws java.io.IOException
-  {
-    int i;
-    if (maxNextCharInd == 4096)
-      maxNextCharInd = nextCharInd = 0;
-
-    try {
-      if ((i = inputStream.read(nextCharBuf, maxNextCharInd,
-                                          4096 - maxNextCharInd)) == -1)
-      {
-        inputStream.close();
-        throw new java.io.IOException();
-      }
-      else
-         maxNextCharInd += i;
-      return;
-    }
-    catch(java.io.IOException e) {
-      if (bufpos != 0)
-      {
-        --bufpos;
-        backup(0);
-      }
-      else
-      {
-        bufline[bufpos] = line;
-        bufcolumn[bufpos] = column;
-      }
-      throw e;
-    }
-  }
-
-  protected char ReadByte() throws java.io.IOException
-  {
-    if (++nextCharInd >= maxNextCharInd)
-      FillBuff();
-
-    return nextCharBuf[nextCharInd];
-  }
-
-/** @return starting character for token. */
-  public char BeginToken() throws java.io.IOException
-  {
-    if (inBuf > 0)
-    {
-      --inBuf;
-
-      if (++bufpos == bufsize)
-        bufpos = 0;
-
-      tokenBegin = bufpos;
-      return buffer[bufpos];
-    }
-
-    tokenBegin = 0;
-    bufpos = -1;
-
-    return readChar();
-  }
-
-  protected void AdjustBuffSize()
-  {
-    if (available == bufsize)
-    {
-      if (tokenBegin > 2048)
-      {
-        bufpos = 0;
-        available = tokenBegin;
-      }
-      else
-        ExpandBuff(false);
-    }
-    else if (available > tokenBegin)
-      available = bufsize;
-    else if ((tokenBegin - available) < 2048)
-      ExpandBuff(true);
-    else
-      available = tokenBegin;
-  }
-
-  protected void UpdateLineColumn(char c)
-  {
-    column++;
-
-    if (prevCharIsLF)
-    {
-      prevCharIsLF = false;
-      line += (column = 1);
-    }
-    else if (prevCharIsCR)
-    {
-      prevCharIsCR = false;
-      if (c == '\n')
-      {
-        prevCharIsLF = true;
-      }
-      else
-        line += (column = 1);
-    }
-
-    switch (c)
-    {
-      case '\r' :
-        prevCharIsCR = true;
-        break;
-      case '\n' :
-        prevCharIsLF = true;
-        break;
-      case '\t' :
-        column--;
-        column += (tabSize - (column % tabSize));
-        break;
-      default :
-        break;
-    }
-
-    bufline[bufpos] = line;
-    bufcolumn[bufpos] = column;
-  }
-
-/** Read a character. */
-  public char readChar() throws java.io.IOException
-  {
-    if (inBuf > 0)
-    {
-      --inBuf;
-
-      if (++bufpos == bufsize)
-        bufpos = 0;
-
-      return buffer[bufpos];
-    }
-
-    char c;
-
-    if (++bufpos == available)
-      AdjustBuffSize();
-
-    if ((buffer[bufpos] = c = ReadByte()) == '\\')
-    {
-      UpdateLineColumn(c);
-
-      int backSlashCnt = 1;
-
-      for (;;) // Read all the backslashes
-      {
-        if (++bufpos == available)
-          AdjustBuffSize();
-
-        try
-        {
-          if ((buffer[bufpos] = c = ReadByte()) != '\\')
-          {
-            UpdateLineColumn(c);
-            // found a non-backslash char.
-            if ((c == 'u') && ((backSlashCnt & 1) == 1))
-            {
-              if (--bufpos < 0)
-                bufpos = bufsize - 1;
-
-              break;
-            }
-
-            backup(backSlashCnt);
-            return '\\';
-          }
-        }
-        catch(java.io.IOException e)
-        {
-	  // We are returning one backslash so we should only backup (count-1)
-          if (backSlashCnt > 1)
-            backup(backSlashCnt-1);
-
-          return '\\';
-        }
-
-        UpdateLineColumn(c);
-        backSlashCnt++;
-      }
-
-      // Here, we have seen an odd number of backslash's followed by a 'u'
-      try
-      {
-        while ((c = ReadByte()) == 'u')
-          ++column;
-
-        buffer[bufpos] = c = (char)(hexval(c) << 12 |
-                                    hexval(ReadByte()) << 8 |
-                                    hexval(ReadByte()) << 4 |
-                                    hexval(ReadByte()));
-
-        column += 4;
-      }
-      catch(java.io.IOException e)
-      {
-        throw new Error("Invalid escape character at line " + line +
-                                         " column " + column + ".");
-      }
-
-      if (backSlashCnt == 1)
-        return c;
-      else
-      {
-        backup(backSlashCnt - 1);
-        return '\\';
-      }
-    }
-    else
-    {
-      UpdateLineColumn(c);
-      return c;
-    }
-  }
-
-  @Deprecated
-  /**
-   * @deprecated
-   * @see #getEndColumn
-   */
-  public int getColumn() {
-    return bufcolumn[bufpos];
-  }
-
-  @Deprecated
-  /**
-   * @deprecated
-   * @see #getEndLine
-   */
-  public int getLine() {
-    return bufline[bufpos];
-  }
-
-/** Get end column. */
-  public int getEndColumn() {
-    return bufcolumn[bufpos];
-  }
-
-/** Get end line. */
-  public int getEndLine() {
-    return bufline[bufpos];
-  }
-
-/** @return column of token start */
-  public int getBeginColumn() {
-    return bufcolumn[tokenBegin];
-  }
-
-/** @return line number of token start */
-  public int getBeginLine() {
-    return bufline[tokenBegin];
-  }
-
-/** Retreat. */
-  public void backup(int amount) {
-
-    inBuf += amount;
-    if ((bufpos -= amount) < 0)
-      bufpos += bufsize;
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.Reader dstream,
-                 int startline, int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    available = bufsize = buffersize;
-    buffer = new char[buffersize];
-    bufline = new int[buffersize];
-    bufcolumn = new int[buffersize];
-    nextCharBuf = new char[4096];
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.Reader dstream,
-                                        int startline, int startcolumn)
-  {
-    this(dstream, startline, startcolumn, 4096);
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.Reader dstream)
-  {
-    this(dstream, 1, 1, 4096);
-  }
-/** Reinitialise. */
-  public void ReInit(java.io.Reader dstream,
-                 int startline, int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    if (buffer == null || buffersize != buffer.length)
-    {
-      available = bufsize = buffersize;
-      buffer = new char[buffersize];
-      bufline = new int[buffersize];
-      bufcolumn = new int[buffersize];
-      nextCharBuf = new char[4096];
-    }
-    prevCharIsLF = prevCharIsCR = false;
-    tokenBegin = inBuf = maxNextCharInd = 0;
-    nextCharInd = bufpos = -1;
-  }
-
-/** Reinitialise. */
-  public void ReInit(java.io.Reader dstream,
-                                        int startline, int startcolumn)
-  {
-    ReInit(dstream, startline, startcolumn, 4096);
-  }
-
-/** Reinitialise. */
-  public void ReInit(java.io.Reader dstream)
-  {
-    ReInit(dstream, 1, 1, 4096);
-  }
-/** Constructor. */
-  public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,
-  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-    this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.InputStream dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,
-                        int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-    this(dstream, encoding, startline, startcolumn, 4096);
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.InputStream dstream, int startline,
-                        int startcolumn)
-  {
-    this(dstream, startline, startcolumn, 4096);
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-    this(dstream, encoding, 1, 1, 4096);
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.InputStream dstream)
-  {
-    this(dstream, 1, 1, 4096);
-  }
-
-/** Reinitialise. */
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-    ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-/** Reinitialise. */
-  public void ReInit(java.io.InputStream dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
-  }
-/** Reinitialise. */
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-                     int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-    ReInit(dstream, encoding, startline, startcolumn, 4096);
-  }
-/** Reinitialise. */
-  public void ReInit(java.io.InputStream dstream, int startline,
-                     int startcolumn)
-  {
-    ReInit(dstream, startline, startcolumn, 4096);
-  }
-/** Reinitialise. */
-  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-    ReInit(dstream, encoding, 1, 1, 4096);
-  }
-
-/** Reinitialise. */
-  public void ReInit(java.io.InputStream dstream)
-  {
-    ReInit(dstream, 1, 1, 4096);
-  }
-
-  /** @return token image as String */
-  public String GetImage()
-  {
-    if (bufpos >= tokenBegin)
-      return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
-    else
-      return new String(buffer, tokenBegin, bufsize - tokenBegin) +
-                              new String(buffer, 0, bufpos + 1);
-  }
-
-  /** @return suffix */
-  public char[] GetSuffix(int len)
-  {
-    char[] ret = new char[len];
-
-    if ((bufpos + 1) >= len)
-      System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
-    else
-    {
-      System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
-                                                        len - bufpos - 1);
-      System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
-    }
-
-    return ret;
-  }
-
-  /** Set buffers back to null when finished. */
-  public void Done()
-  {
-    nextCharBuf = null;
-    buffer = null;
-    bufline = null;
-    bufcolumn = null;
-  }
-
-  /**
-   * Method to adjust line and column numbers for the start of a token.
-   */
-  public void adjustBeginLineColumn(int newLine, int newCol)
-  {
-    int start = tokenBegin;
-    int len;
-
-    if (bufpos >= tokenBegin)
-    {
-      len = bufpos - tokenBegin + inBuf + 1;
-    }
-    else
-    {
-      len = bufsize - tokenBegin + bufpos + 1 + inBuf;
-    }
-
-    int i = 0, j = 0, k = 0;
-    int nextColDiff = 0, columnDiff = 0;
-
-    while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
-    {
-      bufline[j] = newLine;
-      nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
-      bufcolumn[j] = newCol + columnDiff;
-      columnDiff = nextColDiff;
-      i++;
-    }
-
-    if (i < len)
-    {
-      bufline[j] = newLine++;
-      bufcolumn[j] = newCol + columnDiff;
-
-      while (i++ < len)
-      {
-        if (bufline[j = start % bufsize] != bufline[++start % bufsize])
-          bufline[j] = newLine++;
-        else
-          bufline[j] = newLine;
-      }
-    }
-
-    line = bufline[j];
-    column = bufcolumn[j];
-  }
-
-}
-/* JavaCC - OriginalChecksum=a46b9601f1eb7fc99070860ae4df29a9 (do not edit this line) */
+/* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 5.0 */
+/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
+package org.apache.jena.sparql.lang.sparql_11 ;
+
+/**
+ * An implementation of interface CharStream, where the stream is assumed to
+ * contain only ASCII characters (with java-like unicode escape processing).
+ */
+
+public
+class JavaCharStream
+{
+  /** Whether parser is static. */
+  public static final boolean staticFlag = false;
+
+  static final int hexval(char c) throws java.io.IOException {
+    switch(c)
+    {
+       case '0' :
+          return 0;
+       case '1' :
+          return 1;
+       case '2' :
+          return 2;
+       case '3' :
+          return 3;
+       case '4' :
+          return 4;
+       case '5' :
+          return 5;
+       case '6' :
+          return 6;
+       case '7' :
+          return 7;
+       case '8' :
+          return 8;
+       case '9' :
+          return 9;
+
+       case 'a' :
+       case 'A' :
+          return 10;
+       case 'b' :
+       case 'B' :
+          return 11;
+       case 'c' :
+       case 'C' :
+          return 12;
+       case 'd' :
+       case 'D' :
+          return 13;
+       case 'e' :
+       case 'E' :
+          return 14;
+       case 'f' :
+       case 'F' :
+          return 15;
+    }
+
+    throw new java.io.IOException(); // Should never come here
+  }
+
+/** Position in buffer. */
+  public int bufpos = -1;
+  int bufsize;
+  int available;
+  int tokenBegin;
+  protected int bufline[];
+  protected int bufcolumn[];
+
+  protected int column = 0;
+  protected int line = 1;
+
+  protected boolean prevCharIsCR = false;
+  protected boolean prevCharIsLF = false;
+
+  protected java.io.Reader inputStream;
+
+  protected char[] nextCharBuf;
+  protected char[] buffer;
+  protected int maxNextCharInd = 0;
+  protected int nextCharInd = -1;
+  protected int inBuf = 0;
+  protected int tabSize = 8;
+
+  protected void setTabSize(int i) { tabSize = i; }
+  protected int getTabSize(int i) { return tabSize; }
+
+  protected void ExpandBuff(boolean wrapAround)
+  {
+    char[] newbuffer = new char[bufsize + 2048];
+    int newbufline[] = new int[bufsize + 2048];
+    int newbufcolumn[] = new int[bufsize + 2048];
+
+    try
+    {
+      if (wrapAround)
+      {
+        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+        System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos);
+        buffer = newbuffer;
+
+        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+        System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
+        bufline = newbufline;
+
+        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+        System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
+        bufcolumn = newbufcolumn;
+
+        bufpos += (bufsize - tokenBegin);
+    }
+    else
+    {
+        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+        buffer = newbuffer;
+
+        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+        bufline = newbufline;
+
+        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+        bufcolumn = newbufcolumn;
+
+        bufpos -= tokenBegin;
+      }
+    }
+    catch (Throwable t)
+    {
+      throw new Error(t.getMessage());
+    }
+
+    available = (bufsize += 2048);
+    tokenBegin = 0;
+  }
+
+  protected void FillBuff() throws java.io.IOException
+  {
+    int i;
+    if (maxNextCharInd == 4096)
+      maxNextCharInd = nextCharInd = 0;
+
+    try {
+      if ((i = inputStream.read(nextCharBuf, maxNextCharInd,
+                                          4096 - maxNextCharInd)) == -1)
+      {
+        inputStream.close();
+        throw new java.io.IOException();
+      }
+      else
+         maxNextCharInd += i;
+      return;
+    }
+    catch(java.io.IOException e) {
+      if (bufpos != 0)
+      {
+        --bufpos;
+        backup(0);
+      }
+      else
+      {
+        bufline[bufpos] = line;
+        bufcolumn[bufpos] = column;
+      }
+      throw e;
+    }
+  }
+
+  protected char ReadByte() throws java.io.IOException
+  {
+    if (++nextCharInd >= maxNextCharInd)
+      FillBuff();
+
+    return nextCharBuf[nextCharInd];
+  }
+
+/** @return starting character for token. */
+  public char BeginToken() throws java.io.IOException
+  {
+    if (inBuf > 0)
+    {
+      --inBuf;
+
+      if (++bufpos == bufsize)
+        bufpos = 0;
+
+      tokenBegin = bufpos;
+      return buffer[bufpos];
+    }
+
+    tokenBegin = 0;
+    bufpos = -1;
+
+    return readChar();
+  }
+
+  protected void AdjustBuffSize()
+  {
+    if (available == bufsize)
+    {
+      if (tokenBegin > 2048)
+      {
+        bufpos = 0;
+        available = tokenBegin;
+      }
+      else
+        ExpandBuff(false);
+    }
+    else if (available > tokenBegin)
+      available = bufsize;
+    else if ((tokenBegin - available) < 2048)
+      ExpandBuff(true);
+    else
+      available = tokenBegin;
+  }
+
+  protected void UpdateLineColumn(char c)
+  {
+    column++;
+
+    if (prevCharIsLF)
+    {
+      prevCharIsLF = false;
+      line += (column = 1);
+    }
+    else if (prevCharIsCR)
+    {
+      prevCharIsCR = false;
+      if (c == '\n')
+      {
+        prevCharIsLF = true;
+      }
+      else
+        line += (column = 1);
+    }
+
+    switch (c)
+    {
+      case '\r' :
+        prevCharIsCR = true;
+        break;
+      case '\n' :
+        prevCharIsLF = true;
+        break;
+      case '\t' :
+        column--;
+        column += (tabSize - (column % tabSize));
+        break;
+      default :
+        break;
+    }
+
+    bufline[bufpos] = line;
+    bufcolumn[bufpos] = column;
+  }
+
+/** Read a character. */
+  public char readChar() throws java.io.IOException
+  {
+    if (inBuf > 0)
+    {
+      --inBuf;
+
+      if (++bufpos == bufsize)
+        bufpos = 0;
+
+      return buffer[bufpos];
+    }
+
+    char c;
+
+    if (++bufpos == available)
+      AdjustBuffSize();
+
+    if ((buffer[bufpos] = c = ReadByte()) == '\\')
+    {
+      UpdateLineColumn(c);
+
+      int backSlashCnt = 1;
+
+      for (;;) // Read all the backslashes
+      {
+        if (++bufpos == available)
+          AdjustBuffSize();
+
+        try
+        {
+          if ((buffer[bufpos] = c = ReadByte()) != '\\')
+          {
+            UpdateLineColumn(c);
+            // found a non-backslash char.
+            if ((c == 'u') && ((backSlashCnt & 1) == 1))
+            {
+              if (--bufpos < 0)
+                bufpos = bufsize - 1;
+
+              break;
+            }
+
+            backup(backSlashCnt);
+            return '\\';
+          }
+        }
+        catch(java.io.IOException e)
+        {
+	  // We are returning one backslash so we should only backup (count-1)
+          if (backSlashCnt > 1)
+            backup(backSlashCnt-1);
+
+          return '\\';
+        }
+
+        UpdateLineColumn(c);
+        backSlashCnt++;
+      }
+
+      // Here, we have seen an odd number of backslash's followed by a 'u'
+      try
+      {
+        while ((c = ReadByte()) == 'u')
+          ++column;
+
+        buffer[bufpos] = c = (char)(hexval(c) << 12 |
+                                    hexval(ReadByte()) << 8 |
+                                    hexval(ReadByte()) << 4 |
+                                    hexval(ReadByte()));
+
+        column += 4;
+      }
+      catch(java.io.IOException e)
+      {
+        throw new Error("Invalid escape character at line " + line +
+                                         " column " + column + ".");
+      }
+
+      if (backSlashCnt == 1)
+        return c;
+      else
+      {
+        backup(backSlashCnt - 1);
+        return '\\';
+      }
+    }
+    else
+    {
+      UpdateLineColumn(c);
+      return c;
+    }
+  }
+
+  @Deprecated
+  /**
+   * @deprecated
+   * @see #getEndColumn
+   */
+  public int getColumn() {
+    return bufcolumn[bufpos];
+  }
+
+  @Deprecated
+  /**
+   * @deprecated
+   * @see #getEndLine
+   */
+  public int getLine() {
+    return bufline[bufpos];
+  }
+
+/** Get end column. */
+  public int getEndColumn() {
+    return bufcolumn[bufpos];
+  }
+
+/** Get end line. */
+  public int getEndLine() {
+    return bufline[bufpos];
+  }
+
+/** @return column of token start */
+  public int getBeginColumn() {
+    return bufcolumn[tokenBegin];
+  }
+
+/** @return line number of token start */
+  public int getBeginLine() {
+    return bufline[tokenBegin];
+  }
+
+/** Retreat. */
+  public void backup(int amount) {
+
+    inBuf += amount;
+    if ((bufpos -= amount) < 0)
+      bufpos += bufsize;
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.Reader dstream,
+                 int startline, int startcolumn, int buffersize)
+  {
+    inputStream = dstream;
+    line = startline;
+    column = startcolumn - 1;
+
+    available = bufsize = buffersize;
+    buffer = new char[buffersize];
+    bufline = new int[buffersize];
+    bufcolumn = new int[buffersize];
+    nextCharBuf = new char[4096];
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.Reader dstream,
+                                        int startline, int startcolumn)
+  {
+    this(dstream, startline, startcolumn, 4096);
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.Reader dstream)
+  {
+    this(dstream, 1, 1, 4096);
+  }
+/** Reinitialise. */
+  public void ReInit(java.io.Reader dstream,
+                 int startline, int startcolumn, int buffersize)
+  {
+    inputStream = dstream;
+    line = startline;
+    column = startcolumn - 1;
+
+    if (buffer == null || buffersize != buffer.length)
+    {
+      available = bufsize = buffersize;
+      buffer = new char[buffersize];
+      bufline = new int[buffersize];
+      bufcolumn = new int[buffersize];
+      nextCharBuf = new char[4096];
+    }
+    prevCharIsLF = prevCharIsCR = false;
+    tokenBegin = inBuf = maxNextCharInd = 0;
+    nextCharInd = bufpos = -1;
+  }
+
+/** Reinitialise. */
+  public void ReInit(java.io.Reader dstream,
+                                        int startline, int startcolumn)
+  {
+    ReInit(dstream, startline, startcolumn, 4096);
+  }
+
+/** Reinitialise. */
+  public void ReInit(java.io.Reader dstream)
+  {
+    ReInit(dstream, 1, 1, 4096);
+  }
+/** Constructor. */
+  public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,
+  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+  {
+    this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.InputStream dstream, int startline,
+  int startcolumn, int buffersize)
+  {
+    this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,
+                        int startcolumn) throws java.io.UnsupportedEncodingException
+  {
+    this(dstream, encoding, startline, startcolumn, 4096);
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.InputStream dstream, int startline,
+                        int startcolumn)
+  {
+    this(dstream, startline, startcolumn, 4096);
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+  {
+    this(dstream, encoding, 1, 1, 4096);
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.InputStream dstream)
+  {
+    this(dstream, 1, 1, 4096);
+  }
+
+/** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+  {
+    ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+  }
+
+/** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, int startline,
+  int startcolumn, int buffersize)
+  {
+    ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+  }
+/** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+                     int startcolumn) throws java.io.UnsupportedEncodingException
+  {
+    ReInit(dstream, encoding, startline, startcolumn, 4096);
+  }
+/** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, int startline,
+                     int startcolumn)
+  {
+    ReInit(dstream, startline, startcolumn, 4096);
+  }
+/** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+  {
+    ReInit(dstream, encoding, 1, 1, 4096);
+  }
+
+/** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream)
+  {
+    ReInit(dstream, 1, 1, 4096);
+  }
+
+  /** @return token image as String */
+  public String GetImage()
+  {
+    if (bufpos >= tokenBegin)
+      return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
+    else
+      return new String(buffer, tokenBegin, bufsize - tokenBegin) +
+                              new String(buffer, 0, bufpos + 1);
+  }
+
+  /** @return suffix */
+  public char[] GetSuffix(int len)
+  {
+    char[] ret = new char[len];
+
+    if ((bufpos + 1) >= len)
+      System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
+    else
+    {
+      System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
+                                                        len - bufpos - 1);
+      System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
+    }
+
+    return ret;
+  }
+
+  /** Set buffers back to null when finished. */
+  public void Done()
+  {
+    nextCharBuf = null;
+    buffer = null;
+    bufline = null;
+    bufcolumn = null;
+  }
+
+  /**
+   * Method to adjust line and column numbers for the start of a token.
+   */
+  public void adjustBeginLineColumn(int newLine, int newCol)
+  {
+    int start = tokenBegin;
+    int len;
+
+    if (bufpos >= tokenBegin)
+    {
+      len = bufpos - tokenBegin + inBuf + 1;
+    }
+    else
+    {
+      len = bufsize - tokenBegin + bufpos + 1 + inBuf;
+    }
+
+    int i = 0, j = 0, k = 0;
+    int nextColDiff = 0, columnDiff = 0;
+
+    while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
+    {
+      bufline[j] = newLine;
+      nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
+      bufcolumn[j] = newCol + columnDiff;
+      columnDiff = nextColDiff;
+      i++;
+    }
+
+    if (i < len)
+    {
+      bufline[j] = newLine++;
+      bufcolumn[j] = newCol + columnDiff;
+
+      while (i++ < len)
+      {
+        if (bufline[j = start % bufsize] != bufline[++start % bufsize])
+          bufline[j] = newLine++;
+        else
+          bufline[j] = newLine;
+      }
+    }
+
+    line = bufline[j];
+    column = bufcolumn[j];
+  }
+
+}
+/* JavaCC - OriginalChecksum=d63a793bd614cb11b1bb35c273b7864c (do not edit this line) */

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/ParseException.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/ParseException.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/ParseException.java
index 60ac059..2c32e0a 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/ParseException.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/ParseException.java
@@ -1,187 +1,187 @@
-/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */
-/* JavaCCOptions:KEEP_LINE_COL=null */
-package org.apache.jena.sparql.lang.sparql_11 ;
-
-/**
- * This exception is thrown when parse errors are encountered.
- * You can explicitly create objects of this exception type by
- * calling the method generateParseException in the generated
- * parser.
- *
- * You can modify this class to customize your error reporting
- * mechanisms so long as you retain the public fields.
- */
-public class ParseException extends Exception {
-
-  /**
-   * The version identifier for this Serializable class.
-   * Increment only if the <i>serialized</i> form of the
-   * class changes.
-   */
-  private static final long serialVersionUID = 1L;
-
-  /**
-   * This constructor is used by the method "generateParseException"
-   * in the generated parser.  Calling this constructor generates
-   * a new object of this type with the fields "currentToken",
-   * "expectedTokenSequences", and "tokenImage" set.
-   */
-  public ParseException(Token currentTokenVal,
-                        int[][] expectedTokenSequencesVal,
-                        String[] tokenImageVal
-                       )
-  {
-    super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal));
-    currentToken = currentTokenVal;
-    expectedTokenSequences = expectedTokenSequencesVal;
-    tokenImage = tokenImageVal;
-  }
-
-  /**
-   * The following constructors are for use by you for whatever
-   * purpose you can think of.  Constructing the exception in this
-   * manner makes the exception behave in the normal way - i.e., as
-   * documented in the class "Throwable".  The fields "errorToken",
-   * "expectedTokenSequences", and "tokenImage" do not contain
-   * relevant information.  The JavaCC generated code does not use
-   * these constructors.
-   */
-
-  public ParseException() {
-    super();
-  }
-
-  /** Constructor with message. */
-  public ParseException(String message) {
-    super(message);
-  }
-
-
-  /**
-   * This is the last token that has been consumed successfully.  If
-   * this object has been created due to a parse error, the token
-   * followng this token will (therefore) be the first error token.
-   */
-  public Token currentToken;
-
-  /**
-   * Each entry in this array is an array of integers.  Each array
-   * of integers represents a sequence of tokens (by their ordinal
-   * values) that is expected at this point of the parse.
-   */
-  public int[][] expectedTokenSequences;
-
-  /**
-   * This is a reference to the "tokenImage" array of the generated
-   * parser within which the parse error occurred.  This array is
-   * defined in the generated ...Constants interface.
-   */
-  public String[] tokenImage;
-
-  /**
-   * It uses "currentToken" and "expectedTokenSequences" to generate a parse
-   * error message and returns it.  If this object has been created
-   * due to a parse error, and you do not catch it (it gets thrown
-   * from the parser) the correct error message
-   * gets displayed.
-   */
-  private static String initialise(Token currentToken,
-                           int[][] expectedTokenSequences,
-                           String[] tokenImage) {
-    String eol = System.getProperty("line.separator", "\n");
-    StringBuffer expected = new StringBuffer();
-    int maxSize = 0;
-    for (int i = 0; i < expectedTokenSequences.length; i++) {
-      if (maxSize < expectedTokenSequences[i].length) {
-        maxSize = expectedTokenSequences[i].length;
-      }
-      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
-        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');
-      }
-      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
-        expected.append("...");
-      }
-      expected.append(eol).append("    ");
-    }
-    String retval = "Encountered \"";
-    Token tok = currentToken.next;
-    for (int i = 0; i < maxSize; i++) {
-      if (i != 0) retval += " ";
-      if (tok.kind == 0) {
-        retval += tokenImage[0];
-        break;
-      }
-      retval += " " + tokenImage[tok.kind];
-      retval += " \"";
-      retval += add_escapes(tok.image);
-      retval += " \"";
-      tok = tok.next;
-    }
-    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
-    retval += "." + eol;
-    if (expectedTokenSequences.length == 1) {
-      retval += "Was expecting:" + eol + "    ";
-    } else {
-      retval += "Was expecting one of:" + eol + "    ";
-    }
-    retval += expected.toString();
-    return retval;
-  }
-
-  /**
-   * The end of line string for this machine.
-   */
-  protected String eol = System.getProperty("line.separator", "\n");
-
-  /**
-   * Used to convert raw characters to their escaped version
-   * when these raw version cannot be used as part of an ASCII
-   * string literal.
-   */
-  static String add_escapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-}
-/* JavaCC - OriginalChecksum=7419551656da229f9adc90489da6fc86 (do not edit this line) */
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */
+/* JavaCCOptions:KEEP_LINE_COL=null */
+package org.apache.jena.sparql.lang.sparql_11 ;
+
+/**
+ * This exception is thrown when parse errors are encountered.
+ * You can explicitly create objects of this exception type by
+ * calling the method generateParseException in the generated
+ * parser.
+ *
+ * You can modify this class to customize your error reporting
+ * mechanisms so long as you retain the public fields.
+ */
+public class ParseException extends Exception {
+
+  /**
+   * The version identifier for this Serializable class.
+   * Increment only if the <i>serialized</i> form of the
+   * class changes.
+   */
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * This constructor is used by the method "generateParseException"
+   * in the generated parser.  Calling this constructor generates
+   * a new object of this type with the fields "currentToken",
+   * "expectedTokenSequences", and "tokenImage" set.
+   */
+  public ParseException(Token currentTokenVal,
+                        int[][] expectedTokenSequencesVal,
+                        String[] tokenImageVal
+                       )
+  {
+    super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal));
+    currentToken = currentTokenVal;
+    expectedTokenSequences = expectedTokenSequencesVal;
+    tokenImage = tokenImageVal;
+  }
+
+  /**
+   * The following constructors are for use by you for whatever
+   * purpose you can think of.  Constructing the exception in this
+   * manner makes the exception behave in the normal way - i.e., as
+   * documented in the class "Throwable".  The fields "errorToken",
+   * "expectedTokenSequences", and "tokenImage" do not contain
+   * relevant information.  The JavaCC generated code does not use
+   * these constructors.
+   */
+
+  public ParseException() {
+    super();
+  }
+
+  /** Constructor with message. */
+  public ParseException(String message) {
+    super(message);
+  }
+
+
+  /**
+   * This is the last token that has been consumed successfully.  If
+   * this object has been created due to a parse error, the token
+   * followng this token will (therefore) be the first error token.
+   */
+  public Token currentToken;
+
+  /**
+   * Each entry in this array is an array of integers.  Each array
+   * of integers represents a sequence of tokens (by their ordinal
+   * values) that is expected at this point of the parse.
+   */
+  public int[][] expectedTokenSequences;
+
+  /**
+   * This is a reference to the "tokenImage" array of the generated
+   * parser within which the parse error occurred.  This array is
+   * defined in the generated ...Constants interface.
+   */
+  public String[] tokenImage;
+
+  /**
+   * It uses "currentToken" and "expectedTokenSequences" to generate a parse
+   * error message and returns it.  If this object has been created
+   * due to a parse error, and you do not catch it (it gets thrown
+   * from the parser) the correct error message
+   * gets displayed.
+   */
+  private static String initialise(Token currentToken,
+                           int[][] expectedTokenSequences,
+                           String[] tokenImage) {
+    String eol = System.getProperty("line.separator", "\n");
+    StringBuffer expected = new StringBuffer();
+    int maxSize = 0;
+    for (int i = 0; i < expectedTokenSequences.length; i++) {
+      if (maxSize < expectedTokenSequences[i].length) {
+        maxSize = expectedTokenSequences[i].length;
+      }
+      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
+        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');
+      }
+      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
+        expected.append("...");
+      }
+      expected.append(eol).append("    ");
+    }
+    String retval = "Encountered \"";
+    Token tok = currentToken.next;
+    for (int i = 0; i < maxSize; i++) {
+      if (i != 0) retval += " ";
+      if (tok.kind == 0) {
+        retval += tokenImage[0];
+        break;
+      }
+      retval += " " + tokenImage[tok.kind];
+      retval += " \"";
+      retval += add_escapes(tok.image);
+      retval += " \"";
+      tok = tok.next;
+    }
+    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
+    retval += "." + eol;
+    if (expectedTokenSequences.length == 1) {
+      retval += "Was expecting:" + eol + "    ";
+    } else {
+      retval += "Was expecting one of:" + eol + "    ";
+    }
+    retval += expected.toString();
+    return retval;
+  }
+
+  /**
+   * The end of line string for this machine.
+   */
+  protected String eol = System.getProperty("line.separator", "\n");
+
+  /**
+   * Used to convert raw characters to their escaped version
+   * when these raw version cannot be used as part of an ASCII
+   * string literal.
+   */
+  static String add_escapes(String str) {
+      StringBuffer retval = new StringBuffer();
+      char ch;
+      for (int i = 0; i < str.length(); i++) {
+        switch (str.charAt(i))
+        {
+           case 0 :
+              continue;
+           case '\b':
+              retval.append("\\b");
+              continue;
+           case '\t':
+              retval.append("\\t");
+              continue;
+           case '\n':
+              retval.append("\\n");
+              continue;
+           case '\f':
+              retval.append("\\f");
+              continue;
+           case '\r':
+              retval.append("\\r");
+              continue;
+           case '\"':
+              retval.append("\\\"");
+              continue;
+           case '\'':
+              retval.append("\\\'");
+              continue;
+           case '\\':
+              retval.append("\\\\");
+              continue;
+           default:
+              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+                 String s = "0000" + Integer.toString(ch, 16);
+                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+              } else {
+                 retval.append(ch);
+              }
+              continue;
+        }
+      }
+      return retval.toString();
+   }
+
+}
+/* JavaCC - OriginalChecksum=25807f74c6efb1bcbd3321a6af1d8604 (do not edit this line) */

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11.java
index a6d961f..d5fc8d2 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11.java
@@ -2260,7 +2260,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
      if ( AggregateRegistry.isRegistered(fname) ) {
          if ( ! allowAggregatesInExpressions )
             throwParseException("Aggregate expression not legal at this point : "+fname, -1, -1) ;
-         Aggregator agg = AggregatorFactory.createCustom(fname, a) ;
+         Aggregator agg = AggregatorFactory.createCustom(true, false, fname, a) ;
          Expr exprAgg = getQuery().allocAggregate(agg) ;
          {if (true) return exprAgg ;}
      }
@@ -4653,7 +4653,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
     if ( AggregateRegistry.isRegistered(iri) ) {
          if ( ! allowAggregatesInExpressions )
             throwParseException("Aggregate expression not legal at this point : "+iri, -1, -1) ;
-         Aggregator agg = AggregatorFactory.createCustom(iri, a) ;
+         Aggregator agg = AggregatorFactory.createCustom(true, false, iri, a) ;
          Expr exprAgg = getQuery().allocAggregate(agg) ;
          {if (true) return exprAgg ;}
       }

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11Constants.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11Constants.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11Constants.java
index b427b22..56bcfbd 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11Constants.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/SPARQLParser11Constants.java
@@ -1,612 +1,612 @@
-/* Generated By:JavaCC: Do not edit this line. SPARQLParser11Constants.java */
-package org.apache.jena.sparql.lang.sparql_11 ;
-
-
-/**
- * Token literal values and constants.
- * Generated by org.javacc.parser.OtherFilesGen#start()
- */
-public interface SPARQLParser11Constants {
-
-  /** End of File. */
-  int EOF = 0;
-  /** RegularExpression Id. */
-  int SINGLE_LINE_COMMENT = 6;
-  /** RegularExpression Id. */
-  int WS = 7;
-  /** RegularExpression Id. */
-  int WSC = 8;
-  /** RegularExpression Id. */
-  int BOM = 9;
-  /** RegularExpression Id. */
-  int IRIref = 10;
-  /** RegularExpression Id. */
-  int PNAME_NS = 11;
-  /** RegularExpression Id. */
-  int PNAME_LN = 12;
-  /** RegularExpression Id. */
-  int BLANK_NODE_LABEL = 13;
-  /** RegularExpression Id. */
-  int VAR1 = 14;
-  /** RegularExpression Id. */
-  int VAR2 = 15;
-  /** RegularExpression Id. */
-  int LANGTAG = 16;
-  /** RegularExpression Id. */
-  int A2Z = 17;
-  /** RegularExpression Id. */
-  int A2ZN = 18;
-  /** RegularExpression Id. */
-  int KW_A = 19;
-  /** RegularExpression Id. */
-  int BASE = 20;
-  /** RegularExpression Id. */
-  int PREFIX = 21;
-  /** RegularExpression Id. */
-  int SELECT = 22;
-  /** RegularExpression Id. */
-  int DISTINCT = 23;
-  /** RegularExpression Id. */
-  int REDUCED = 24;
-  /** RegularExpression Id. */
-  int DESCRIBE = 25;
-  /** RegularExpression Id. */
-  int CONSTRUCT = 26;
-  /** RegularExpression Id. */
-  int ASK = 27;
-  /** RegularExpression Id. */
-  int LIMIT = 28;
-  /** RegularExpression Id. */
-  int OFFSET = 29;
-  /** RegularExpression Id. */
-  int ORDER = 30;
-  /** RegularExpression Id. */
-  int BY = 31;
-  /** RegularExpression Id. */
-  int VALUES = 32;
-  /** RegularExpression Id. */
-  int UNDEF = 33;
-  /** RegularExpression Id. */
-  int ASC = 34;
-  /** RegularExpression Id. */
-  int DESC = 35;
-  /** RegularExpression Id. */
-  int NAMED = 36;
-  /** RegularExpression Id. */
-  int FROM = 37;
-  /** RegularExpression Id. */
-  int WHERE = 38;
-  /** RegularExpression Id. */
-  int AND = 39;
-  /** RegularExpression Id. */
-  int GRAPH = 40;
-  /** RegularExpression Id. */
-  int OPTIONAL = 41;
-  /** RegularExpression Id. */
-  int UNION = 42;
-  /** RegularExpression Id. */
-  int MINUS_P = 43;
-  /** RegularExpression Id. */
-  int BIND = 44;
-  /** RegularExpression Id. */
-  int SERVICE = 45;
-  /** RegularExpression Id. */
-  int EXISTS = 46;
-  /** RegularExpression Id. */
-  int NOT = 47;
-  /** RegularExpression Id. */
-  int AS = 48;
-  /** RegularExpression Id. */
-  int GROUP = 49;
-  /** RegularExpression Id. */
-  int HAVING = 50;
-  /** RegularExpression Id. */
-  int SEPARATOR = 51;
-  /** RegularExpression Id. */
-  int AGG = 52;
-  /** RegularExpression Id. */
-  int COUNT = 53;
-  /** RegularExpression Id. */
-  int MIN = 54;
-  /** RegularExpression Id. */
-  int MAX = 55;
-  /** RegularExpression Id. */
-  int SUM = 56;
-  /** RegularExpression Id. */
-  int AVG = 57;
-  /** RegularExpression Id. */
-  int STDDEV = 58;
-  /** RegularExpression Id. */
-  int SAMPLE = 59;
-  /** RegularExpression Id. */
-  int GROUP_CONCAT = 60;
-  /** RegularExpression Id. */
-  int FILTER = 61;
-  /** RegularExpression Id. */
-  int BOUND = 62;
-  /** RegularExpression Id. */
-  int COALESCE = 63;
-  /** RegularExpression Id. */
-  int IN = 64;
-  /** RegularExpression Id. */
-  int IF = 65;
-  /** RegularExpression Id. */
-  int BNODE = 66;
-  /** RegularExpression Id. */
-  int IRI = 67;
-  /** RegularExpression Id. */
-  int URI = 68;
-  /** RegularExpression Id. */
-  int STR = 69;
-  /** RegularExpression Id. */
-  int STRLANG = 70;
-  /** RegularExpression Id. */
-  int STRDT = 71;
-  /** RegularExpression Id. */
-  int DTYPE = 72;
-  /** RegularExpression Id. */
-  int LANG = 73;
-  /** RegularExpression Id. */
-  int LANGMATCHES = 74;
-  /** RegularExpression Id. */
-  int IS_URI = 75;
-  /** RegularExpression Id. */
-  int IS_IRI = 76;
-  /** RegularExpression Id. */
-  int IS_BLANK = 77;
-  /** RegularExpression Id. */
-  int IS_LITERAL = 78;
-  /** RegularExpression Id. */
-  int IS_NUMERIC = 79;
-  /** RegularExpression Id. */
-  int REGEX = 80;
-  /** RegularExpression Id. */
-  int SAME_TERM = 81;
-  /** RegularExpression Id. */
-  int RAND = 82;
-  /** RegularExpression Id. */
-  int ABS = 83;
-  /** RegularExpression Id. */
-  int CEIL = 84;
-  /** RegularExpression Id. */
-  int FLOOR = 85;
-  /** RegularExpression Id. */
-  int ROUND = 86;
-  /** RegularExpression Id. */
-  int CONCAT = 87;
-  /** RegularExpression Id. */
-  int SUBSTR = 88;
-  /** RegularExpression Id. */
-  int STRLEN = 89;
-  /** RegularExpression Id. */
-  int REPLACE = 90;
-  /** RegularExpression Id. */
-  int UCASE = 91;
-  /** RegularExpression Id. */
-  int LCASE = 92;
-  /** RegularExpression Id. */
-  int ENCODE_FOR_URI = 93;
-  /** RegularExpression Id. */
-  int CONTAINS = 94;
-  /** RegularExpression Id. */
-  int STRSTARTS = 95;
-  /** RegularExpression Id. */
-  int STRENDS = 96;
-  /** RegularExpression Id. */
-  int STRBEFORE = 97;
-  /** RegularExpression Id. */
-  int STRAFTER = 98;
-  /** RegularExpression Id. */
-  int YEAR = 99;
-  /** RegularExpression Id. */
-  int MONTH = 100;
-  /** RegularExpression Id. */
-  int DAY = 101;
-  /** RegularExpression Id. */
-  int HOURS = 102;
-  /** RegularExpression Id. */
-  int MINUTES = 103;
-  /** RegularExpression Id. */
-  int SECONDS = 104;
-  /** RegularExpression Id. */
-  int TIMEZONE = 105;
-  /** RegularExpression Id. */
-  int TZ = 106;
-  /** RegularExpression Id. */
-  int NOW = 107;
-  /** RegularExpression Id. */
-  int UUID = 108;
-  /** RegularExpression Id. */
-  int STRUUID = 109;
-  /** RegularExpression Id. */
-  int MD5 = 110;
-  /** RegularExpression Id. */
-  int SHA1 = 111;
-  /** RegularExpression Id. */
-  int SHA224 = 112;
-  /** RegularExpression Id. */
-  int SHA256 = 113;
-  /** RegularExpression Id. */
-  int SHA384 = 114;
-  /** RegularExpression Id. */
-  int SHA512 = 115;
-  /** RegularExpression Id. */
-  int TRUE = 116;
-  /** RegularExpression Id. */
-  int FALSE = 117;
-  /** RegularExpression Id. */
-  int DATA = 118;
-  /** RegularExpression Id. */
-  int INSERT = 119;
-  /** RegularExpression Id. */
-  int DELETE = 120;
-  /** RegularExpression Id. */
-  int INSERT_DATA = 121;
-  /** RegularExpression Id. */
-  int DELETE_DATA = 122;
-  /** RegularExpression Id. */
-  int DELETE_WHERE = 123;
-  /** RegularExpression Id. */
-  int LOAD = 124;
-  /** RegularExpression Id. */
-  int CLEAR = 125;
-  /** RegularExpression Id. */
-  int CREATE = 126;
-  /** RegularExpression Id. */
-  int ADD = 127;
-  /** RegularExpression Id. */
-  int MOVE = 128;
-  /** RegularExpression Id. */
-  int COPY = 129;
-  /** RegularExpression Id. */
-  int META = 130;
-  /** RegularExpression Id. */
-  int SILENT = 131;
-  /** RegularExpression Id. */
-  int DROP = 132;
-  /** RegularExpression Id. */
-  int INTO = 133;
-  /** RegularExpression Id. */
-  int TO = 134;
-  /** RegularExpression Id. */
-  int DFT = 135;
-  /** RegularExpression Id. */
-  int ALL = 136;
-  /** RegularExpression Id. */
-  int WITH = 137;
-  /** RegularExpression Id. */
-  int USING = 138;
-  /** RegularExpression Id. */
-  int DIGITS = 139;
-  /** RegularExpression Id. */
-  int INTEGER = 140;
-  /** RegularExpression Id. */
-  int DECIMAL = 141;
-  /** RegularExpression Id. */
-  int DOUBLE = 142;
-  /** RegularExpression Id. */
-  int INTEGER_POSITIVE = 143;
-  /** RegularExpression Id. */
-  int DECIMAL_POSITIVE = 144;
-  /** RegularExpression Id. */
-  int DOUBLE_POSITIVE = 145;
-  /** RegularExpression Id. */
-  int INTEGER_NEGATIVE = 146;
-  /** RegularExpression Id. */
-  int DECIMAL_NEGATIVE = 147;
-  /** RegularExpression Id. */
-  int DOUBLE_NEGATIVE = 148;
-  /** RegularExpression Id. */
-  int EXPONENT = 149;
-  /** RegularExpression Id. */
-  int QUOTE_3D = 150;
-  /** RegularExpression Id. */
-  int QUOTE_3S = 151;
-  /** RegularExpression Id. */
-  int ECHAR = 152;
-  /** RegularExpression Id. */
-  int STRING_LITERAL1 = 153;
-  /** RegularExpression Id. */
-  int STRING_LITERAL2 = 154;
-  /** RegularExpression Id. */
-  int STRING_LITERAL_LONG1 = 155;
-  /** RegularExpression Id. */
-  int STRING_LITERAL_LONG2 = 156;
-  /** RegularExpression Id. */
-  int LPAREN = 157;
-  /** RegularExpression Id. */
-  int RPAREN = 158;
-  /** RegularExpression Id. */
-  int NIL = 159;
-  /** RegularExpression Id. */
-  int LBRACE = 160;
-  /** RegularExpression Id. */
-  int RBRACE = 161;
-  /** RegularExpression Id. */
-  int LBRACKET = 162;
-  /** RegularExpression Id. */
-  int RBRACKET = 163;
-  /** RegularExpression Id. */
-  int ANON = 164;
-  /** RegularExpression Id. */
-  int SEMICOLON = 165;
-  /** RegularExpression Id. */
-  int COMMA = 166;
-  /** RegularExpression Id. */
-  int DOT = 167;
-  /** RegularExpression Id. */
-  int EQ = 168;
-  /** RegularExpression Id. */
-  int NE = 169;
-  /** RegularExpression Id. */
-  int GT = 170;
-  /** RegularExpression Id. */
-  int LT = 171;
-  /** RegularExpression Id. */
-  int LE = 172;
-  /** RegularExpression Id. */
-  int GE = 173;
-  /** RegularExpression Id. */
-  int BANG = 174;
-  /** RegularExpression Id. */
-  int TILDE = 175;
-  /** RegularExpression Id. */
-  int COLON = 176;
-  /** RegularExpression Id. */
-  int SC_OR = 177;
-  /** RegularExpression Id. */
-  int SC_AND = 178;
-  /** RegularExpression Id. */
-  int PLUS = 179;
-  /** RegularExpression Id. */
-  int MINUS = 180;
-  /** RegularExpression Id. */
-  int STAR = 181;
-  /** RegularExpression Id. */
-  int SLASH = 182;
-  /** RegularExpression Id. */
-  int DATATYPE = 183;
-  /** RegularExpression Id. */
-  int AT = 184;
-  /** RegularExpression Id. */
-  int VBAR = 185;
-  /** RegularExpression Id. */
-  int CARAT = 186;
-  /** RegularExpression Id. */
-  int FPATH = 187;
-  /** RegularExpression Id. */
-  int RPATH = 188;
-  /** RegularExpression Id. */
-  int QMARK = 189;
-  /** RegularExpression Id. */
-  int PN_CHARS_BASE = 190;
-  /** RegularExpression Id. */
-  int PN_CHARS_U = 191;
-  /** RegularExpression Id. */
-  int PN_CHARS = 192;
-  /** RegularExpression Id. */
-  int PN_PREFIX = 193;
-  /** RegularExpression Id. */
-  int PN_LOCAL = 194;
-  /** RegularExpression Id. */
-  int VARNAME = 195;
-  /** RegularExpression Id. */
-  int PN_LOCAL_ESC = 196;
-  /** RegularExpression Id. */
-  int PLX = 197;
-  /** RegularExpression Id. */
-  int HEX = 198;
-  /** RegularExpression Id. */
-  int PERCENT = 199;
-  /** RegularExpression Id. */
-  int UNKNOWN = 200;
-
-  /** Lexical state. */
-  int DEFAULT = 0;
-
-  /** Literal token values. */
-  String[] tokenImage = {
-    "<EOF>",
-    "\" \"",
-    "\"\\t\"",
-    "\"\\n\"",
-    "\"\\r\"",
-    "\"\\f\"",
-    "<SINGLE_LINE_COMMENT>",
-    "<WS>",
-    "<WSC>",
-    "\"\\ufeff\"",
-    "<IRIref>",
-    "<PNAME_NS>",
-    "<PNAME_LN>",
-    "<BLANK_NODE_LABEL>",
-    "<VAR1>",
-    "<VAR2>",
-    "<LANGTAG>",
-    "<A2Z>",
-    "<A2ZN>",
-    "\"a\"",
-    "\"base\"",
-    "\"prefix\"",
-    "\"select\"",
-    "\"distinct\"",
-    "\"reduced\"",
-    "\"describe\"",
-    "\"construct\"",
-    "\"ask\"",
-    "\"limit\"",
-    "\"offset\"",
-    "\"order\"",
-    "\"by\"",
-    "\"values\"",
-    "\"undef\"",
-    "\"asc\"",
-    "\"desc\"",
-    "\"named\"",
-    "\"from\"",
-    "\"where\"",
-    "\"and\"",
-    "\"graph\"",
-    "\"optional\"",
-    "\"union\"",
-    "\"minus\"",
-    "\"bind\"",
-    "\"service\"",
-    "\"exists\"",
-    "\"not\"",
-    "\"as\"",
-    "\"group\"",
-    "\"having\"",
-    "\"separator\"",
-    "\"agg\"",
-    "\"count\"",
-    "\"min\"",
-    "\"max\"",
-    "\"sum\"",
-    "\"avg\"",
-    "\"stdev\"",
-    "\"sample\"",
-    "\"group_concat\"",
-    "\"filter\"",
-    "\"bound\"",
-    "\"coalesce\"",
-    "\"in\"",
-    "\"if\"",
-    "\"bnode\"",
-    "\"iri\"",
-    "\"uri\"",
-    "\"str\"",
-    "\"strlang\"",
-    "\"strdt\"",
-    "\"datatype\"",
-    "\"lang\"",
-    "\"langmatches\"",
-    "\"isURI\"",
-    "\"isIRI\"",
-    "\"isBlank\"",
-    "\"isLiteral\"",
-    "\"isNumeric\"",
-    "\"regex\"",
-    "\"sameTerm\"",
-    "\"RAND\"",
-    "\"ABS\"",
-    "\"CEIL\"",
-    "\"FLOOR\"",
-    "\"ROUND\"",
-    "\"CONCAT\"",
-    "\"SUBSTR\"",
-    "\"STRLEN\"",
-    "\"REPLACE\"",
-    "\"UCASE\"",
-    "\"LCASE\"",
-    "\"ENCODE_FOR_URI\"",
-    "\"CONTAINS\"",
-    "\"STRSTARTS\"",
-    "\"STRENDS\"",
-    "\"STRBEFORE\"",
-    "\"STRAFTER\"",
-    "\"YEAR\"",
-    "\"MONTH\"",
-    "\"DAY\"",
-    "\"HOURS\"",
-    "\"MINUTES\"",
-    "\"SECONDS\"",
-    "\"TIMEZONE\"",
-    "\"TZ\"",
-    "\"NOW\"",
-    "\"UUID\"",
-    "\"STRUUID\"",
-    "\"MD5\"",
-    "\"SHA1\"",
-    "\"SHA224\"",
-    "\"SHA256\"",
-    "\"SHA384\"",
-    "\"SHA512\"",
-    "\"true\"",
-    "\"false\"",
-    "\"data\"",
-    "\"insert\"",
-    "\"delete\"",
-    "<INSERT_DATA>",
-    "<DELETE_DATA>",
-    "<DELETE_WHERE>",
-    "\"load\"",
-    "\"clear\"",
-    "\"create\"",
-    "\"add\"",
-    "\"move\"",
-    "\"copy\"",
-    "\"meta\"",
-    "\"silent\"",
-    "\"drop\"",
-    "\"into\"",
-    "\"to\"",
-    "\"default\"",
-    "\"all\"",
-    "\"with\"",
-    "\"using\"",
-    "<DIGITS>",
-    "<INTEGER>",
-    "<DECIMAL>",
-    "<DOUBLE>",
-    "<INTEGER_POSITIVE>",
-    "<DECIMAL_POSITIVE>",
-    "<DOUBLE_POSITIVE>",
-    "<INTEGER_NEGATIVE>",
-    "<DECIMAL_NEGATIVE>",
-    "<DOUBLE_NEGATIVE>",
-    "<EXPONENT>",
-    "\"\\\"\\\"\\\"\"",
-    "\"\\\'\\\'\\\'\"",
-    "<ECHAR>",
-    "<STRING_LITERAL1>",
-    "<STRING_LITERAL2>",
-    "<STRING_LITERAL_LONG1>",
-    "<STRING_LITERAL_LONG2>",
-    "\"(\"",
-    "\")\"",
-    "<NIL>",
-    "\"{\"",
-    "\"}\"",
-    "\"[\"",
-    "\"]\"",
-    "<ANON>",
-    "\";\"",
-    "\",\"",
-    "\".\"",
-    "\"=\"",
-    "\"!=\"",
-    "\">\"",
-    "\"<\"",
-    "\"<=\"",
-    "\">=\"",
-    "\"!\"",
-    "\"~\"",
-    "\":\"",
-    "\"||\"",
-    "\"&&\"",
-    "\"+\"",
-    "\"-\"",
-    "\"*\"",
-    "\"/\"",
-    "\"^^\"",
-    "\"@\"",
-    "\"|\"",
-    "\"^\"",
-    "\"->\"",
-    "\"<-\"",
-    "\"?\"",
-    "<PN_CHARS_BASE>",
-    "<PN_CHARS_U>",
-    "<PN_CHARS>",
-    "<PN_PREFIX>",
-    "<PN_LOCAL>",
-    "<VARNAME>",
-    "<PN_LOCAL_ESC>",
-    "<PLX>",
-    "<HEX>",
-    "<PERCENT>",
-    "<UNKNOWN>",
-  };
-
-}
+/* Generated By:JavaCC: Do not edit this line. SPARQLParser11Constants.java */
+package org.apache.jena.sparql.lang.sparql_11 ;
+
+
+/**
+ * Token literal values and constants.
+ * Generated by org.javacc.parser.OtherFilesGen#start()
+ */
+public interface SPARQLParser11Constants {
+
+  /** End of File. */
+  int EOF = 0;
+  /** RegularExpression Id. */
+  int SINGLE_LINE_COMMENT = 6;
+  /** RegularExpression Id. */
+  int WS = 7;
+  /** RegularExpression Id. */
+  int WSC = 8;
+  /** RegularExpression Id. */
+  int BOM = 9;
+  /** RegularExpression Id. */
+  int IRIref = 10;
+  /** RegularExpression Id. */
+  int PNAME_NS = 11;
+  /** RegularExpression Id. */
+  int PNAME_LN = 12;
+  /** RegularExpression Id. */
+  int BLANK_NODE_LABEL = 13;
+  /** RegularExpression Id. */
+  int VAR1 = 14;
+  /** RegularExpression Id. */
+  int VAR2 = 15;
+  /** RegularExpression Id. */
+  int LANGTAG = 16;
+  /** RegularExpression Id. */
+  int A2Z = 17;
+  /** RegularExpression Id. */
+  int A2ZN = 18;
+  /** RegularExpression Id. */
+  int KW_A = 19;
+  /** RegularExpression Id. */
+  int BASE = 20;
+  /** RegularExpression Id. */
+  int PREFIX = 21;
+  /** RegularExpression Id. */
+  int SELECT = 22;
+  /** RegularExpression Id. */
+  int DISTINCT = 23;
+  /** RegularExpression Id. */
+  int REDUCED = 24;
+  /** RegularExpression Id. */
+  int DESCRIBE = 25;
+  /** RegularExpression Id. */
+  int CONSTRUCT = 26;
+  /** RegularExpression Id. */
+  int ASK = 27;
+  /** RegularExpression Id. */
+  int LIMIT = 28;
+  /** RegularExpression Id. */
+  int OFFSET = 29;
+  /** RegularExpression Id. */
+  int ORDER = 30;
+  /** RegularExpression Id. */
+  int BY = 31;
+  /** RegularExpression Id. */
+  int VALUES = 32;
+  /** RegularExpression Id. */
+  int UNDEF = 33;
+  /** RegularExpression Id. */
+  int ASC = 34;
+  /** RegularExpression Id. */
+  int DESC = 35;
+  /** RegularExpression Id. */
+  int NAMED = 36;
+  /** RegularExpression Id. */
+  int FROM = 37;
+  /** RegularExpression Id. */
+  int WHERE = 38;
+  /** RegularExpression Id. */
+  int AND = 39;
+  /** RegularExpression Id. */
+  int GRAPH = 40;
+  /** RegularExpression Id. */
+  int OPTIONAL = 41;
+  /** RegularExpression Id. */
+  int UNION = 42;
+  /** RegularExpression Id. */
+  int MINUS_P = 43;
+  /** RegularExpression Id. */
+  int BIND = 44;
+  /** RegularExpression Id. */
+  int SERVICE = 45;
+  /** RegularExpression Id. */
+  int EXISTS = 46;
+  /** RegularExpression Id. */
+  int NOT = 47;
+  /** RegularExpression Id. */
+  int AS = 48;
+  /** RegularExpression Id. */
+  int GROUP = 49;
+  /** RegularExpression Id. */
+  int HAVING = 50;
+  /** RegularExpression Id. */
+  int SEPARATOR = 51;
+  /** RegularExpression Id. */
+  int AGG = 52;
+  /** RegularExpression Id. */
+  int COUNT = 53;
+  /** RegularExpression Id. */
+  int MIN = 54;
+  /** RegularExpression Id. */
+  int MAX = 55;
+  /** RegularExpression Id. */
+  int SUM = 56;
+  /** RegularExpression Id. */
+  int AVG = 57;
+  /** RegularExpression Id. */
+  int STDDEV = 58;
+  /** RegularExpression Id. */
+  int SAMPLE = 59;
+  /** RegularExpression Id. */
+  int GROUP_CONCAT = 60;
+  /** RegularExpression Id. */
+  int FILTER = 61;
+  /** RegularExpression Id. */
+  int BOUND = 62;
+  /** RegularExpression Id. */
+  int COALESCE = 63;
+  /** RegularExpression Id. */
+  int IN = 64;
+  /** RegularExpression Id. */
+  int IF = 65;
+  /** RegularExpression Id. */
+  int BNODE = 66;
+  /** RegularExpression Id. */
+  int IRI = 67;
+  /** RegularExpression Id. */
+  int URI = 68;
+  /** RegularExpression Id. */
+  int STR = 69;
+  /** RegularExpression Id. */
+  int STRLANG = 70;
+  /** RegularExpression Id. */
+  int STRDT = 71;
+  /** RegularExpression Id. */
+  int DTYPE = 72;
+  /** RegularExpression Id. */
+  int LANG = 73;
+  /** RegularExpression Id. */
+  int LANGMATCHES = 74;
+  /** RegularExpression Id. */
+  int IS_URI = 75;
+  /** RegularExpression Id. */
+  int IS_IRI = 76;
+  /** RegularExpression Id. */
+  int IS_BLANK = 77;
+  /** RegularExpression Id. */
+  int IS_LITERAL = 78;
+  /** RegularExpression Id. */
+  int IS_NUMERIC = 79;
+  /** RegularExpression Id. */
+  int REGEX = 80;
+  /** RegularExpression Id. */
+  int SAME_TERM = 81;
+  /** RegularExpression Id. */
+  int RAND = 82;
+  /** RegularExpression Id. */
+  int ABS = 83;
+  /** RegularExpression Id. */
+  int CEIL = 84;
+  /** RegularExpression Id. */
+  int FLOOR = 85;
+  /** RegularExpression Id. */
+  int ROUND = 86;
+  /** RegularExpression Id. */
+  int CONCAT = 87;
+  /** RegularExpression Id. */
+  int SUBSTR = 88;
+  /** RegularExpression Id. */
+  int STRLEN = 89;
+  /** RegularExpression Id. */
+  int REPLACE = 90;
+  /** RegularExpression Id. */
+  int UCASE = 91;
+  /** RegularExpression Id. */
+  int LCASE = 92;
+  /** RegularExpression Id. */
+  int ENCODE_FOR_URI = 93;
+  /** RegularExpression Id. */
+  int CONTAINS = 94;
+  /** RegularExpression Id. */
+  int STRSTARTS = 95;
+  /** RegularExpression Id. */
+  int STRENDS = 96;
+  /** RegularExpression Id. */
+  int STRBEFORE = 97;
+  /** RegularExpression Id. */
+  int STRAFTER = 98;
+  /** RegularExpression Id. */
+  int YEAR = 99;
+  /** RegularExpression Id. */
+  int MONTH = 100;
+  /** RegularExpression Id. */
+  int DAY = 101;
+  /** RegularExpression Id. */
+  int HOURS = 102;
+  /** RegularExpression Id. */
+  int MINUTES = 103;
+  /** RegularExpression Id. */
+  int SECONDS = 104;
+  /** RegularExpression Id. */
+  int TIMEZONE = 105;
+  /** RegularExpression Id. */
+  int TZ = 106;
+  /** RegularExpression Id. */
+  int NOW = 107;
+  /** RegularExpression Id. */
+  int UUID = 108;
+  /** RegularExpression Id. */
+  int STRUUID = 109;
+  /** RegularExpression Id. */
+  int MD5 = 110;
+  /** RegularExpression Id. */
+  int SHA1 = 111;
+  /** RegularExpression Id. */
+  int SHA224 = 112;
+  /** RegularExpression Id. */
+  int SHA256 = 113;
+  /** RegularExpression Id. */
+  int SHA384 = 114;
+  /** RegularExpression Id. */
+  int SHA512 = 115;
+  /** RegularExpression Id. */
+  int TRUE = 116;
+  /** RegularExpression Id. */
+  int FALSE = 117;
+  /** RegularExpression Id. */
+  int DATA = 118;
+  /** RegularExpression Id. */
+  int INSERT = 119;
+  /** RegularExpression Id. */
+  int DELETE = 120;
+  /** RegularExpression Id. */
+  int INSERT_DATA = 121;
+  /** RegularExpression Id. */
+  int DELETE_DATA = 122;
+  /** RegularExpression Id. */
+  int DELETE_WHERE = 123;
+  /** RegularExpression Id. */
+  int LOAD = 124;
+  /** RegularExpression Id. */
+  int CLEAR = 125;
+  /** RegularExpression Id. */
+  int CREATE = 126;
+  /** RegularExpression Id. */
+  int ADD = 127;
+  /** RegularExpression Id. */
+  int MOVE = 128;
+  /** RegularExpression Id. */
+  int COPY = 129;
+  /** RegularExpression Id. */
+  int META = 130;
+  /** RegularExpression Id. */
+  int SILENT = 131;
+  /** RegularExpression Id. */
+  int DROP = 132;
+  /** RegularExpression Id. */
+  int INTO = 133;
+  /** RegularExpression Id. */
+  int TO = 134;
+  /** RegularExpression Id. */
+  int DFT = 135;
+  /** RegularExpression Id. */
+  int ALL = 136;
+  /** RegularExpression Id. */
+  int WITH = 137;
+  /** RegularExpression Id. */
+  int USING = 138;
+  /** RegularExpression Id. */
+  int DIGITS = 139;
+  /** RegularExpression Id. */
+  int INTEGER = 140;
+  /** RegularExpression Id. */
+  int DECIMAL = 141;
+  /** RegularExpression Id. */
+  int DOUBLE = 142;
+  /** RegularExpression Id. */
+  int INTEGER_POSITIVE = 143;
+  /** RegularExpression Id. */
+  int DECIMAL_POSITIVE = 144;
+  /** RegularExpression Id. */
+  int DOUBLE_POSITIVE = 145;
+  /** RegularExpression Id. */
+  int INTEGER_NEGATIVE = 146;
+  /** RegularExpression Id. */
+  int DECIMAL_NEGATIVE = 147;
+  /** RegularExpression Id. */
+  int DOUBLE_NEGATIVE = 148;
+  /** RegularExpression Id. */
+  int EXPONENT = 149;
+  /** RegularExpression Id. */
+  int QUOTE_3D = 150;
+  /** RegularExpression Id. */
+  int QUOTE_3S = 151;
+  /** RegularExpression Id. */
+  int ECHAR = 152;
+  /** RegularExpression Id. */
+  int STRING_LITERAL1 = 153;
+  /** RegularExpression Id. */
+  int STRING_LITERAL2 = 154;
+  /** RegularExpression Id. */
+  int STRING_LITERAL_LONG1 = 155;
+  /** RegularExpression Id. */
+  int STRING_LITERAL_LONG2 = 156;
+  /** RegularExpression Id. */
+  int LPAREN = 157;
+  /** RegularExpression Id. */
+  int RPAREN = 158;
+  /** RegularExpression Id. */
+  int NIL = 159;
+  /** RegularExpression Id. */
+  int LBRACE = 160;
+  /** RegularExpression Id. */
+  int RBRACE = 161;
+  /** RegularExpression Id. */
+  int LBRACKET = 162;
+  /** RegularExpression Id. */
+  int RBRACKET = 163;
+  /** RegularExpression Id. */
+  int ANON = 164;
+  /** RegularExpression Id. */
+  int SEMICOLON = 165;
+  /** RegularExpression Id. */
+  int COMMA = 166;
+  /** RegularExpression Id. */
+  int DOT = 167;
+  /** RegularExpression Id. */
+  int EQ = 168;
+  /** RegularExpression Id. */
+  int NE = 169;
+  /** RegularExpression Id. */
+  int GT = 170;
+  /** RegularExpression Id. */
+  int LT = 171;
+  /** RegularExpression Id. */
+  int LE = 172;
+  /** RegularExpression Id. */
+  int GE = 173;
+  /** RegularExpression Id. */
+  int BANG = 174;
+  /** RegularExpression Id. */
+  int TILDE = 175;
+  /** RegularExpression Id. */
+  int COLON = 176;
+  /** RegularExpression Id. */
+  int SC_OR = 177;
+  /** RegularExpression Id. */
+  int SC_AND = 178;
+  /** RegularExpression Id. */
+  int PLUS = 179;
+  /** RegularExpression Id. */
+  int MINUS = 180;
+  /** RegularExpression Id. */
+  int STAR = 181;
+  /** RegularExpression Id. */
+  int SLASH = 182;
+  /** RegularExpression Id. */
+  int DATATYPE = 183;
+  /** RegularExpression Id. */
+  int AT = 184;
+  /** RegularExpression Id. */
+  int VBAR = 185;
+  /** RegularExpression Id. */
+  int CARAT = 186;
+  /** RegularExpression Id. */
+  int FPATH = 187;
+  /** RegularExpression Id. */
+  int RPATH = 188;
+  /** RegularExpression Id. */
+  int QMARK = 189;
+  /** RegularExpression Id. */
+  int PN_CHARS_BASE = 190;
+  /** RegularExpression Id. */
+  int PN_CHARS_U = 191;
+  /** RegularExpression Id. */
+  int PN_CHARS = 192;
+  /** RegularExpression Id. */
+  int PN_PREFIX = 193;
+  /** RegularExpression Id. */
+  int PN_LOCAL = 194;
+  /** RegularExpression Id. */
+  int VARNAME = 195;
+  /** RegularExpression Id. */
+  int PN_LOCAL_ESC = 196;
+  /** RegularExpression Id. */
+  int PLX = 197;
+  /** RegularExpression Id. */
+  int HEX = 198;
+  /** RegularExpression Id. */
+  int PERCENT = 199;
+  /** RegularExpression Id. */
+  int UNKNOWN = 200;
+
+  /** Lexical state. */
+  int DEFAULT = 0;
+
+  /** Literal token values. */
+  String[] tokenImage = {
+    "<EOF>",
+    "\" \"",
+    "\"\\t\"",
+    "\"\\n\"",
+    "\"\\r\"",
+    "\"\\f\"",
+    "<SINGLE_LINE_COMMENT>",
+    "<WS>",
+    "<WSC>",
+    "\"\\ufeff\"",
+    "<IRIref>",
+    "<PNAME_NS>",
+    "<PNAME_LN>",
+    "<BLANK_NODE_LABEL>",
+    "<VAR1>",
+    "<VAR2>",
+    "<LANGTAG>",
+    "<A2Z>",
+    "<A2ZN>",
+    "\"a\"",
+    "\"base\"",
+    "\"prefix\"",
+    "\"select\"",
+    "\"distinct\"",
+    "\"reduced\"",
+    "\"describe\"",
+    "\"construct\"",
+    "\"ask\"",
+    "\"limit\"",
+    "\"offset\"",
+    "\"order\"",
+    "\"by\"",
+    "\"values\"",
+    "\"undef\"",
+    "\"asc\"",
+    "\"desc\"",
+    "\"named\"",
+    "\"from\"",
+    "\"where\"",
+    "\"and\"",
+    "\"graph\"",
+    "\"optional\"",
+    "\"union\"",
+    "\"minus\"",
+    "\"bind\"",
+    "\"service\"",
+    "\"exists\"",
+    "\"not\"",
+    "\"as\"",
+    "\"group\"",
+    "\"having\"",
+    "\"separator\"",
+    "\"agg\"",
+    "\"count\"",
+    "\"min\"",
+    "\"max\"",
+    "\"sum\"",
+    "\"avg\"",
+    "\"stdev\"",
+    "\"sample\"",
+    "\"group_concat\"",
+    "\"filter\"",
+    "\"bound\"",
+    "\"coalesce\"",
+    "\"in\"",
+    "\"if\"",
+    "\"bnode\"",
+    "\"iri\"",
+    "\"uri\"",
+    "\"str\"",
+    "\"strlang\"",
+    "\"strdt\"",
+    "\"datatype\"",
+    "\"lang\"",
+    "\"langmatches\"",
+    "\"isURI\"",
+    "\"isIRI\"",
+    "\"isBlank\"",
+    "\"isLiteral\"",
+    "\"isNumeric\"",
+    "\"regex\"",
+    "\"sameTerm\"",
+    "\"RAND\"",
+    "\"ABS\"",
+    "\"CEIL\"",
+    "\"FLOOR\"",
+    "\"ROUND\"",
+    "\"CONCAT\"",
+    "\"SUBSTR\"",
+    "\"STRLEN\"",
+    "\"REPLACE\"",
+    "\"UCASE\"",
+    "\"LCASE\"",
+    "\"ENCODE_FOR_URI\"",
+    "\"CONTAINS\"",
+    "\"STRSTARTS\"",
+    "\"STRENDS\"",
+    "\"STRBEFORE\"",
+    "\"STRAFTER\"",
+    "\"YEAR\"",
+    "\"MONTH\"",
+    "\"DAY\"",
+    "\"HOURS\"",
+    "\"MINUTES\"",
+    "\"SECONDS\"",
+    "\"TIMEZONE\"",
+    "\"TZ\"",
+    "\"NOW\"",
+    "\"UUID\"",
+    "\"STRUUID\"",
+    "\"MD5\"",
+    "\"SHA1\"",
+    "\"SHA224\"",
+    "\"SHA256\"",
+    "\"SHA384\"",
+    "\"SHA512\"",
+    "\"true\"",
+    "\"false\"",
+    "\"data\"",
+    "\"insert\"",
+    "\"delete\"",
+    "<INSERT_DATA>",
+    "<DELETE_DATA>",
+    "<DELETE_WHERE>",
+    "\"load\"",
+    "\"clear\"",
+    "\"create\"",
+    "\"add\"",
+    "\"move\"",
+    "\"copy\"",
+    "\"meta\"",
+    "\"silent\"",
+    "\"drop\"",
+    "\"into\"",
+    "\"to\"",
+    "\"default\"",
+    "\"all\"",
+    "\"with\"",
+    "\"using\"",
+    "<DIGITS>",
+    "<INTEGER>",
+    "<DECIMAL>",
+    "<DOUBLE>",
+    "<INTEGER_POSITIVE>",
+    "<DECIMAL_POSITIVE>",
+    "<DOUBLE_POSITIVE>",
+    "<INTEGER_NEGATIVE>",
+    "<DECIMAL_NEGATIVE>",
+    "<DOUBLE_NEGATIVE>",
+    "<EXPONENT>",
+    "\"\\\"\\\"\\\"\"",
+    "\"\\\'\\\'\\\'\"",
+    "<ECHAR>",
+    "<STRING_LITERAL1>",
+    "<STRING_LITERAL2>",
+    "<STRING_LITERAL_LONG1>",
+    "<STRING_LITERAL_LONG2>",
+    "\"(\"",
+    "\")\"",
+    "<NIL>",
+    "\"{\"",
+    "\"}\"",
+    "\"[\"",
+    "\"]\"",
+    "<ANON>",
+    "\";\"",
+    "\",\"",
+    "\".\"",
+    "\"=\"",
+    "\"!=\"",
+    "\">\"",
+    "\"<\"",
+    "\"<=\"",
+    "\">=\"",
+    "\"!\"",
+    "\"~\"",
+    "\":\"",
+    "\"||\"",
+    "\"&&\"",
+    "\"+\"",
+    "\"-\"",
+    "\"*\"",
+    "\"/\"",
+    "\"^^\"",
+    "\"@\"",
+    "\"|\"",
+    "\"^\"",
+    "\"->\"",
+    "\"<-\"",
+    "\"?\"",
+    "<PN_CHARS_BASE>",
+    "<PN_CHARS_U>",
+    "<PN_CHARS>",
+    "<PN_PREFIX>",
+    "<PN_LOCAL>",
+    "<VARNAME>",
+    "<PN_LOCAL_ESC>",
+    "<PLX>",
+    "<HEX>",
+    "<PERCENT>",
+    "<UNKNOWN>",
+  };
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/Token.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/Token.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/Token.java
index c4514db..994d8dc 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/Token.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/Token.java
@@ -128,4 +128,4 @@ public class Token implements java.io.Serializable {
   }
 
 }
-/* JavaCC - OriginalChecksum=2e111759cc5d23b5f328692361ef7edf (do not edit this line) */
+/* JavaCC - OriginalChecksum=14a2dd2c56b347f7b769eacf6b50c9b9 (do not edit this line) */

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/TokenMgrError.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/TokenMgrError.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/TokenMgrError.java
index c3f4585..023874f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/TokenMgrError.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_11/TokenMgrError.java
@@ -144,4 +144,4 @@ public class TokenMgrError extends Error
     this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
   }
 }
-/* JavaCC - OriginalChecksum=2748ab83006aee357b29341477722d1b (do not edit this line) */
+/* JavaCC - OriginalChecksum=0c993d195e89c16550efa6afecdeb1ab (do not edit this line) */

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/src/main/java/org/apache/jena/sparql/sse/builders/BuilderExpr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/sse/builders/BuilderExpr.java b/jena-arq/src/main/java/org/apache/jena/sparql/sse/builders/BuilderExpr.java
index 39a7a54..777df8b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/sse/builders/BuilderExpr.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/sse/builders/BuilderExpr.java
@@ -1402,7 +1402,7 @@ public class BuilderExpr
             if ( distinct )
                 x = x.cdr();
             ExprList e = buildExprListUntagged(x, 0) ;
-            Aggregator agg = AggregatorFactory.createCustom(z.getNode().getURI(), e) ;
+            Aggregator agg = AggregatorFactory.createCustom(false, distinct, z.getNode().getURI(), e) ;
             return new ExprAggregator(null, agg) ; 
         }
     } ;


[3/3] jena git commit: JENA-803 : Support AGG(DISTNCT ...)

Posted by an...@apache.org.
JENA-803 : Support AGG<uri>(DISTNCT ...)

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

Branch: refs/heads/master
Commit: b93e38988b3b3bb168e04d1f38cadb3650f5ccb2
Parents: ae00d86
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Aug 24 11:44:29 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Aug 24 11:44:29 2015 +0100

----------------------------------------------------------------------
 jena-arq/Grammar/arq.jj                         |   15 +-
 jena-arq/Grammar/master.jj                      |   18 +-
 jena-arq/Grammar/sparql_11.jj                   |    4 +-
 .../jena/sparql/expr/aggregate/AggCustom.java   |    7 +-
 .../expr/aggregate/AggregatorFactory.java       |    2 +-
 .../apache/jena/sparql/lang/arq/ARQParser.java  |  774 ++++++-----
 .../sparql/lang/arq/ARQParserConstants.java     | 1266 +++++++++---------
 .../jena/sparql/lang/arq/JavaCharStream.java    | 1234 ++++++++---------
 .../jena/sparql/lang/arq/ParseException.java    |  374 +++---
 .../org/apache/jena/sparql/lang/arq/Token.java  |    2 +-
 .../jena/sparql/lang/arq/TokenMgrError.java     |    2 +-
 .../sparql/lang/sparql_11/JavaCharStream.java   | 1234 ++++++++---------
 .../sparql/lang/sparql_11/ParseException.java   |  374 +++---
 .../sparql/lang/sparql_11/SPARQLParser11.java   |    4 +-
 .../lang/sparql_11/SPARQLParser11Constants.java | 1224 ++++++++---------
 .../jena/sparql/lang/sparql_11/Token.java       |    2 +-
 .../sparql/lang/sparql_11/TokenMgrError.java    |    2 +-
 .../jena/sparql/sse/builders/BuilderExpr.java   |    2 +-
 18 files changed, 3337 insertions(+), 3203 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/Grammar/arq.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/arq.jj b/jena-arq/Grammar/arq.jj
index 3e0f9d4..459ed7c 100644
--- a/jena-arq/Grammar/arq.jj
+++ b/jena-arq/Grammar/arq.jj
@@ -760,7 +760,7 @@ Expr FunctionCall() : { String fname ; ExprList a ; }
      if ( AggregateRegistry.isRegistered(fname) ) {
          if ( ! allowAggregatesInExpressions )
             throwParseException("Aggregate expression not legal at this point : "+fname, -1, -1) ;
-         Aggregator agg = AggregatorFactory.createCustom(fname, a) ;
+         Aggregator agg = AggregatorFactory.createCustom(true, false, fname, a) ;
          Expr exprAgg = getQuery().allocAggregate(agg) ;
          return exprAgg ;
      }
@@ -1465,8 +1465,15 @@ Expr Aggregate() : { Aggregator agg = null ; String sep = null ;
     { agg = AggregatorFactory.createGroupConcat(distinct, expr, sep, ordered) ; }
     | t = <AGG>
           { String iri ; }
-          iri = iri() a = ExpressionList()
-      { agg = AggregatorFactory.createCustom(iri, a) ; }
+          iri = iri()
+          <LPAREN>
+          ( <DISTINCT> { distinct = true ; } )?
+          (
+             expr = Expression() { a.add(expr) ; }
+             (<COMMA> expr = Expression() { a.add(expr) ; } )*
+          )?
+          <RPAREN>
+      { agg = AggregatorFactory.createCustom(false, distinct, iri, a) ; }
    )
    {
      if ( ! allowAggregatesInExpressions )
@@ -1487,7 +1494,7 @@ Expr iriOrFunction() : { String iri ; ExprList a = null ;
     if ( AggregateRegistry.isRegistered(iri) ) {
          if ( ! allowAggregatesInExpressions )
             throwParseException("Aggregate expression not legal at this point : "+iri, -1, -1) ;
-         Aggregator agg = AggregatorFactory.createCustom(iri, a) ;
+         Aggregator agg = AggregatorFactory.createCustom(true, false, iri, a) ;
          Expr exprAgg = getQuery().allocAggregate(agg) ;
          return exprAgg ;
       }

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/Grammar/master.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/master.jj b/jena-arq/Grammar/master.jj
index b2ae620..043f745 100644
--- a/jena-arq/Grammar/master.jj
+++ b/jena-arq/Grammar/master.jj
@@ -1075,7 +1075,7 @@ Expr FunctionCall() : { String fname ; ExprList a ; }
          // aggregates
          if ( ! allowAggregatesInExpressions )
             throwParseException("Aggregate expression not legal at this point : "+fname, -1, -1) ;
-         Aggregator agg = AggregatorFactory.createCustom(fname, a) ;
+         Aggregator agg = AggregatorFactory.createCustom(true, false, fname, a) ;
          Expr exprAgg = getQuery().allocAggregate(agg) ;
          return exprAgg ;
      }
@@ -2044,13 +2044,19 @@ Expr Aggregate() : { Aggregator agg = null ; String sep = null ;
     { agg = AggregatorFactory.createGroupConcat(distinct, expr, sep, ordered) ; }
 
 #ifdef ARQ
-    /* Explciit syntax (aggregate even if not registered) */
+    /* Explicit syntax (aggregate even if not registered) */
     | t = <AGG>
           { String iri ; }
-          iri = iri() a = ExpressionList()
-      { agg = AggregatorFactory.createCustom(iri, a) ; }
+          iri = iri()
+          <LPAREN>
+          ( <DISTINCT> { distinct = true ; } )?
+          (
+             expr = Expression() { a.add(expr) ; } 
+             (<COMMA> expr = Expression() { a.add(expr) ; } )*            
+          )?
+          <RPAREN>
+      { agg = AggregatorFactory.createCustom(false, distinct, iri, a) ; }
 #endif
-
    )
 
    {
@@ -2078,7 +2084,7 @@ Expr iriOrFunction() : { String iri ; ExprList a = null ;
          // aggregates
          if ( ! allowAggregatesInExpressions )
             throwParseException("Aggregate expression not legal at this point : "+iri, -1, -1) ;
-         Aggregator agg = AggregatorFactory.createCustom(iri, a) ;
+         Aggregator agg = AggregatorFactory.createCustom(true, false, iri, a) ;
          Expr exprAgg = getQuery().allocAggregate(agg) ;
          return exprAgg ;
       }

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/Grammar/sparql_11.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/sparql_11.jj b/jena-arq/Grammar/sparql_11.jj
index df2b3b8..4d3a866 100644
--- a/jena-arq/Grammar/sparql_11.jj
+++ b/jena-arq/Grammar/sparql_11.jj
@@ -689,7 +689,7 @@ Expr FunctionCall() : { String fname ; ExprList a ; }
      if ( AggregateRegistry.isRegistered(fname) ) {
          if ( ! allowAggregatesInExpressions )
             throwParseException("Aggregate expression not legal at this point : "+fname, -1, -1) ;
-         Aggregator agg = AggregatorFactory.createCustom(fname, a) ;
+         Aggregator agg = AggregatorFactory.createCustom(true, false, fname, a) ;
          Expr exprAgg = getQuery().allocAggregate(agg) ;
          return exprAgg ;
      }
@@ -1350,7 +1350,7 @@ Expr iriOrFunction() : { String iri ; ExprList a = null ;
     if ( AggregateRegistry.isRegistered(iri) ) {
          if ( ! allowAggregatesInExpressions )
             throwParseException("Aggregate expression not legal at this point : "+iri, -1, -1) ;
-         Aggregator agg = AggregatorFactory.createCustom(iri, a) ;
+         Aggregator agg = AggregatorFactory.createCustom(true, false, iri, a) ;
          Expr exprAgg = getQuery().allocAggregate(agg) ;
          return exprAgg ;
       }

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCustom.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCustom.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCustom.java
index c8ff032..ab70376 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCustom.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCustom.java
@@ -55,7 +55,7 @@ public class AggCustom extends AggregatorBase
         IndentedLineBuffer x = new IndentedLineBuffer() ;
         if ( ! AggregateRegistry.isRegistered(iri) ) {
             // If not registered and if parsed in again not registered, it becomes a function.
-            // AGG <iri>(...) syntax.  It can;'t have been legal SPARQL 1.1 unless it got
+            // AGG <iri>(...) syntax.  It can't have been legal SPARQL 1.1 unless it got
             // unregistered in which case all bets are off anyway.
             x.append(getName()) ;
             x.append(" ") ;
@@ -63,11 +63,12 @@ public class AggCustom extends AggregatorBase
         x.append("<") ;
         x.append(iri);
         x.append(">") ;
+        x.append("(") ;
         if ( isDistinct )
-            x.append(" DISTINCT ") ;
+            x.append("DISTINCT ") ;
         x.incIndent(); 
-        x.append("(") ;
         ExprUtils.fmtSPARQL(x, getExprList(), sCxt) ;
+        x.decIndent(); 
         x.append(")") ;
         return x.asString() ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/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 4a74c8e..a268f49 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
@@ -63,7 +63,7 @@ public class AggregatorFactory {
         return new AggNull() ;
     }
 
-    public static Aggregator createCustom(String iri, ExprList a) {
+    public static Aggregator createCustom(boolean usedAsFunction, boolean distinct, String iri, ExprList a) {
         if ( ! AggregateRegistry.isRegistered(iri) )
             Log.warn(AggregatorFactory.class, "Not registered: custom aggregate <"+iri+">") ;
         return new AggCustom(iri, a) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/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 6a070c2..3718cd6 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
@@ -2711,7 +2711,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
      if ( AggregateRegistry.isRegistered(fname) ) {
          if ( ! allowAggregatesInExpressions )
             throwParseException("Aggregate expression not legal at this point : "+fname, -1, -1) ;
-         Aggregator agg = AggregatorFactory.createCustom(fname, a) ;
+         Aggregator agg = AggregatorFactory.createCustom(true, false, fname, a) ;
          Expr exprAgg = getQuery().allocAggregate(agg) ;
          {if (true) return exprAgg ;}
      }
@@ -5205,11 +5205,131 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       t = jj_consume_token(AGG);
             String iri ;
       iri = iri();
-      a = ExpressionList();
-        agg = AggregatorFactory.createCustom(iri, a) ;
+      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;
+        ;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IRIref:
+      case PNAME_NS:
+      case PNAME_LN:
+      case VAR1:
+      case VAR2:
+      case EXISTS:
+      case NOT:
+      case AGG:
+      case COUNT:
+      case MIN:
+      case MAX:
+      case SUM:
+      case AVG:
+      case SAMPLE:
+      case GROUP_CONCAT:
+      case BOUND:
+      case COALESCE:
+      case IF:
+      case BNODE:
+      case IRI:
+      case URI:
+      case CALL:
+      case STR:
+      case STRLANG:
+      case STRDT:
+      case DTYPE:
+      case LANG:
+      case LANGMATCHES:
+      case IS_URI:
+      case IS_IRI:
+      case IS_BLANK:
+      case IS_LITERAL:
+      case IS_NUMERIC:
+      case REGEX:
+      case SAME_TERM:
+      case RAND:
+      case ABS:
+      case CEIL:
+      case FLOOR:
+      case ROUND:
+      case CONCAT:
+      case SUBSTR:
+      case STRLEN:
+      case REPLACE:
+      case UCASE:
+      case LCASE:
+      case ENCODE_FOR_URI:
+      case CONTAINS:
+      case STRSTARTS:
+      case STRENDS:
+      case STRBEFORE:
+      case STRAFTER:
+      case YEAR:
+      case MONTH:
+      case DAY:
+      case HOURS:
+      case MINUTES:
+      case SECONDS:
+      case TIMEZONE:
+      case TZ:
+      case NOW:
+      case UUID:
+      case STRUUID:
+      case VERSION:
+      case MD5:
+      case SHA1:
+      case SHA256:
+      case SHA384:
+      case SHA512:
+      case TRUE:
+      case FALSE:
+      case INTEGER:
+      case DECIMAL:
+      case DOUBLE:
+      case INTEGER_POSITIVE:
+      case DECIMAL_POSITIVE:
+      case DOUBLE_POSITIVE:
+      case INTEGER_NEGATIVE:
+      case DECIMAL_NEGATIVE:
+      case DOUBLE_NEGATIVE:
+      case STRING_LITERAL1:
+      case STRING_LITERAL2:
+      case STRING_LITERAL_LONG1:
+      case STRING_LITERAL_LONG2:
+      case LPAREN:
+      case BANG:
+      case PLUS:
+      case MINUS:
+        expr = Expression();
+                                   a.add(expr) ;
+        label_41:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case COMMA:
+            ;
+            break;
+          default:
+            jj_la1[164] = jj_gen;
+            break label_41;
+          }
+          jj_consume_token(COMMA);
+          expr = Expression();
+                                            a.add(expr) ;
+        }
+        break;
+      default:
+        jj_la1[165] = jj_gen;
+        ;
+      }
+      jj_consume_token(RPAREN);
+        agg = AggregatorFactory.createCustom(false, distinct, iri, a) ;
       break;
     default:
-      jj_la1[163] = jj_gen;
+      jj_la1[166] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5232,7 +5352,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       a = ArgList();
       break;
     default:
-      jj_la1[164] = jj_gen;
+      jj_la1[167] = jj_gen;
       ;
     }
     if ( a == null )
@@ -5240,7 +5360,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     if ( AggregateRegistry.isRegistered(iri) ) {
          if ( ! allowAggregatesInExpressions )
             throwParseException("Aggregate expression not legal at this point : "+iri, -1, -1) ;
-         Aggregator agg = AggregatorFactory.createCustom(iri, a) ;
+         Aggregator agg = AggregatorFactory.createCustom(true, false, iri, a) ;
          Expr exprAgg = getQuery().allocAggregate(agg) ;
          {if (true) return exprAgg ;}
       }
@@ -5265,13 +5385,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         uri = iri();
         break;
       default:
-        jj_la1[165] = jj_gen;
+        jj_la1[168] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[166] = jj_gen;
+      jj_la1[169] = jj_gen;
       ;
     }
       {if (true) return createLiteral(lex, lang, uri) ;}
@@ -5297,7 +5417,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       n = NumericLiteralNegative();
       break;
     default:
-      jj_la1[167] = jj_gen;
+      jj_la1[170] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5321,7 +5441,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                  {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[168] = jj_gen;
+      jj_la1[171] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5344,7 +5464,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                           {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[169] = jj_gen;
+      jj_la1[172] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5367,7 +5487,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                           {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[170] = jj_gen;
+      jj_la1[173] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5385,7 +5505,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
             {if (true) return XSD_FALSE ;}
       break;
     default:
-      jj_la1[171] = jj_gen;
+      jj_la1[174] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5412,7 +5532,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                  lex = stripQuotes3(t.image) ;
       break;
     default:
-      jj_la1[172] = jj_gen;
+      jj_la1[175] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5434,7 +5554,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                          {if (true) return iri ;}
       break;
     default:
-      jj_la1[173] = jj_gen;
+      jj_la1[176] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5453,7 +5573,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[177] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5472,7 +5592,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[178] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5521,273 +5641,243 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     finally { jj_save(4, xla); }
   }
 
-  private boolean jj_3R_71() {
+  private boolean jj_3R_72() {
     if (jj_scan_token(MONTH)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_70() {
+  private boolean jj_3R_71() {
     if (jj_scan_token(YEAR)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_171() {
-    if (jj_scan_token(DOUBLE)) return true;
+  private boolean jj_3R_158() {
+    if (jj_3R_169()) return true;
     return false;
   }
 
-  private boolean jj_3R_69() {
+  private boolean jj_3R_157() {
+    if (jj_3R_168()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_70() {
     if (jj_scan_token(STRAFTER)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_170() {
-    if (jj_scan_token(DECIMAL)) return true;
+  private boolean jj_3R_156() {
+    if (jj_3R_167()) return true;
     return false;
   }
 
-  private boolean jj_3R_169() {
-    if (jj_scan_token(INTEGER)) return true;
+  private boolean jj_3R_69() {
+    if (jj_scan_token(STRBEFORE)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_166() {
+  private boolean jj_3R_150() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_169()) {
+    if (jj_3R_156()) {
     jj_scanpos = xsp;
-    if (jj_3R_170()) {
+    if (jj_3R_157()) {
     jj_scanpos = xsp;
-    if (jj_3R_171()) return true;
+    if (jj_3R_158()) 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_129() {
-    if (jj_3R_135()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_157() {
-    if (jj_3R_168()) return true;
+  private boolean jj_3R_130() {
+    if (jj_3R_136()) return true;
     return false;
   }
 
-  private boolean jj_3R_66() {
+  private boolean jj_3R_67() {
     if (jj_scan_token(STRSTARTS)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_156() {
-    if (jj_3R_167()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_115() {
+  private boolean jj_3R_116() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_129()) {
+    if (jj_3R_130()) {
     jj_scanpos = xsp;
-    if (jj_3R_130()) return true;
+    if (jj_3R_131()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_155() {
-    if (jj_3R_166()) return true;
+  private boolean jj_3R_66() {
+    if (jj_scan_token(CONTAINS)) 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(ENCODE_FOR_URI)) 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(LCASE)) 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(UCASE)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_149() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_155()) {
-    jj_scanpos = xsp;
-    if (jj_3R_156()) {
-    jj_scanpos = xsp;
-    if (jj_3R_157()) return true;
-    }
-    }
+  private boolean jj_3R_62() {
+    if (jj_3R_110()) return true;
     return false;
   }
 
-  private boolean jj_3R_62() {
-    if (jj_scan_token(UCASE)) return true;
+  private boolean jj_3R_61() {
+    if (jj_scan_token(STRLEN)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_61() {
+  private boolean jj_3R_60() {
     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;
+  private boolean jj_3R_149() {
+    if (jj_3R_155()) return true;
     return false;
   }
 
   private boolean jj_3R_59() {
+    if (jj_scan_token(CONCAT)) return true;
     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() {
+  private boolean jj_3R_57() {
     if (jj_scan_token(FLOOR)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_55() {
+  private boolean jj_3R_56() {
     if (jj_scan_token(CEIL)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_54() {
+  private boolean jj_3R_55() {
     if (jj_scan_token(ABS)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_53() {
+  private boolean jj_3R_54() {
     if (jj_scan_token(RAND)) return true;
     if (jj_scan_token(NIL)) return true;
     return false;
   }
 
-  private boolean jj_3R_106() {
+  private boolean jj_3R_107() {
     if (jj_scan_token(NIL)) return true;
     return false;
   }
 
-  private boolean jj_3R_148() {
-    if (jj_3R_154()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_105() {
+  private boolean jj_3R_106() {
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_52() {
+  private boolean jj_3R_53() {
     if (jj_scan_token(BNODE)) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_105()) {
+    if (jj_3R_106()) {
     jj_scanpos = xsp;
-    if (jj_3R_106()) return true;
+    if (jj_3R_107()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_51() {
+  private boolean jj_3R_52() {
     if (jj_scan_token(URI)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_50() {
+  private boolean jj_3R_51() {
     if (jj_scan_token(IRI)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_49() {
+  private boolean jj_3R_50() {
     if (jj_scan_token(BOUND)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_48() {
+  private boolean jj_3R_49() {
     if (jj_scan_token(DTYPE)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_126() {
+  private boolean jj_3R_127() {
     if (jj_scan_token(LBRACE)) return true;
     return false;
   }
 
   private boolean jj_3_3() {
     if (jj_scan_token(DOT)) return true;
-    if (jj_3R_43()) return true;
+    if (jj_3R_44()) return true;
     return false;
   }
 
-  private boolean jj_3R_47() {
+  private boolean jj_3R_48() {
     if (jj_scan_token(LANGMATCHES)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_46() {
+  private boolean jj_3R_47() {
     if (jj_scan_token(LANG)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_45() {
+  private boolean jj_3R_46() {
     if (jj_scan_token(STR)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_41() {
+  private boolean jj_3R_42() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_44()) {
-    jj_scanpos = xsp;
     if (jj_3R_45()) {
     jj_scanpos = xsp;
     if (jj_3R_46()) {
@@ -5898,7 +5988,9 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     jj_scanpos = xsp;
     if (jj_3R_99()) {
     jj_scanpos = xsp;
-    if (jj_3R_100()) return true;
+    if (jj_3R_100()) {
+    jj_scanpos = xsp;
+    if (jj_3R_101()) return true;
     }
     }
     }
@@ -5958,20 +6050,20 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_44() {
-    if (jj_3R_104()) return true;
+  private boolean jj_3R_45() {
+    if (jj_3R_105()) return true;
     return false;
   }
 
-  private boolean jj_3R_124() {
+  private boolean jj_3R_125() {
     if (jj_scan_token(AGG)) return true;
-    if (jj_3R_133()) return true;
+    if (jj_3R_134()) return true;
     return false;
   }
 
   private boolean jj_3_2() {
     if (jj_scan_token(SEMICOLON)) return true;
-    if (jj_3R_42()) return true;
+    if (jj_3R_43()) return true;
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(130)) {
@@ -6023,63 +6115,61 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_137() {
+  private boolean jj_3R_138() {
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_123() {
+  private boolean jj_3R_124() {
     if (jj_scan_token(GROUP_CONCAT)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_122() {
+  private boolean jj_3R_123() {
     if (jj_scan_token(SAMPLE)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
   private boolean jj_3_1() {
-    if (jj_3R_41()) return true;
+    if (jj_3R_42()) return true;
     return false;
   }
 
-  private boolean jj_3R_121() {
+  private boolean jj_3R_122() {
     if (jj_scan_token(AVG)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_120() {
+  private boolean jj_3R_121() {
     if (jj_scan_token(MAX)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_119() {
+  private boolean jj_3R_120() {
     if (jj_scan_token(MIN)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_118() {
+  private boolean jj_3R_119() {
     if (jj_scan_token(SUM)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_117() {
+  private boolean jj_3R_118() {
     if (jj_scan_token(COUNT)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_104() {
+  private boolean jj_3R_105() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_117()) {
-    jj_scanpos = xsp;
     if (jj_3R_118()) {
     jj_scanpos = xsp;
     if (jj_3R_119()) {
@@ -6092,7 +6182,9 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     jj_scanpos = xsp;
     if (jj_3R_123()) {
     jj_scanpos = xsp;
-    if (jj_3R_124()) return true;
+    if (jj_3R_124()) {
+    jj_scanpos = xsp;
+    if (jj_3R_125()) return true;
     }
     }
     }
@@ -6103,136 +6195,161 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_138() {
+  private boolean jj_3R_139() {
     if (jj_scan_token(LBRACKET)) return true;
     return false;
   }
 
-  private boolean jj_3R_132() {
-    if (jj_3R_138()) return true;
+  private boolean jj_3R_133() {
+    if (jj_3R_139()) return true;
     return false;
   }
 
-  private boolean jj_3R_131() {
-    if (jj_3R_137()) return true;
+  private boolean jj_3R_132() {
+    if (jj_3R_138()) return true;
     return false;
   }
 
-  private boolean jj_3R_116() {
+  private boolean jj_3R_117() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_131()) {
+    if (jj_3R_132()) {
     jj_scanpos = xsp;
-    if (jj_3R_132()) return true;
+    if (jj_3R_133()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_112() {
+  private boolean jj_3R_113() {
     if (jj_scan_token(NOT)) return true;
     if (jj_scan_token(EXISTS)) return true;
     return false;
   }
 
-  private boolean jj_3R_114() {
-    if (jj_3R_128()) return true;
+  private boolean jj_3R_115() {
+    if (jj_3R_129()) return true;
     return false;
   }
 
-  private boolean jj_3R_111() {
+  private boolean jj_3R_112() {
     if (jj_scan_token(EXISTS)) return true;
-    if (jj_3R_126()) return true;
+    if (jj_3R_127()) return true;
     return false;
   }
 
-  private boolean jj_3R_128() {
+  private boolean jj_3R_129() {
     if (jj_scan_token(PREFIX)) return true;
     if (jj_scan_token(PNAME_NS)) return true;
-    if (jj_3R_134()) return true;
+    if (jj_3R_135()) return true;
     return false;
   }
 
-  private boolean jj_3R_127() {
+  private boolean jj_3R_128() {
     if (jj_scan_token(BASE)) return true;
-    if (jj_3R_134()) return true;
+    if (jj_3R_135()) return true;
     return false;
   }
 
-  private boolean jj_3R_113() {
-    if (jj_3R_127()) return true;
+  private boolean jj_3R_114() {
+    if (jj_3R_128()) return true;
     return false;
   }
 
-  private boolean jj_3R_101() {
+  private boolean jj_3R_102() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_113()) {
+    if (jj_3R_114()) {
     jj_scanpos = xsp;
-    if (jj_3R_114()) return true;
+    if (jj_3R_115()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_109() {
+  private boolean jj_3R_110() {
     if (jj_scan_token(REPLACE)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_42() {
+  private boolean jj_3R_43() {
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_101()) { jj_scanpos = xsp; break; }
+      if (jj_3R_102()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_108() {
+  private boolean jj_3R_109() {
     if (jj_scan_token(SUBSTR)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_103() {
-    if (jj_3R_116()) return true;
+  private boolean jj_3R_104() {
+    if (jj_3R_117()) return true;
     return false;
   }
 
-  private boolean jj_3R_43() {
+  private boolean jj_3R_44() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_102()) {
+    if (jj_3R_103()) {
     jj_scanpos = xsp;
-    if (jj_3R_103()) return true;
+    if (jj_3R_104()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_102() {
-    if (jj_3R_115()) return true;
+  private boolean jj_3R_103() {
+    if (jj_3R_116()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_135() {
+    if (jj_scan_token(IRIref)) return true;
     return false;
   }
 
   private boolean jj_3_4() {
     if (jj_scan_token(DOT)) return true;
-    if (jj_3R_43()) return true;
+    if (jj_3R_44()) return true;
     return false;
   }
 
-  private boolean jj_3R_134() {
-    if (jj_scan_token(IRIref)) return true;
+  private boolean jj_3R_162() {
+    if (jj_scan_token(ANON)) return true;
     return false;
   }
 
-  private boolean jj_3R_110() {
+  private boolean jj_3R_161() {
+    if (jj_scan_token(BLANK_NODE_LABEL)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_152() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_161()) {
+    jj_scanpos = xsp;
+    if (jj_3R_162()) return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_111() {
     if (jj_scan_token(REGEX)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_161() {
-    if (jj_scan_token(ANON)) return true;
+  private boolean jj_3R_154() {
+    if (jj_scan_token(PNAME_NS)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_101() {
+    if (jj_3R_113()) return true;
     return false;
   }
 
@@ -6241,227 +6358,241 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_99() {
-    if (jj_3R_111()) return true;
+  private boolean jj_3R_153() {
+    if (jj_scan_token(PNAME_LN)) return true;
     return false;
   }
 
-  private boolean jj_3R_160() {
-    if (jj_scan_token(BLANK_NODE_LABEL)) return true;
+  private boolean jj_3R_99() {
+    if (jj_3R_111()) return true;
     return false;
   }
 
-  private boolean jj_3R_151() {
+  private boolean jj_3R_148() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_160()) {
+    if (jj_3R_153()) {
     jj_scanpos = xsp;
-    if (jj_3R_161()) return true;
+    if (jj_3R_154()) 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_153() {
-    if (jj_scan_token(PNAME_NS)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_96() {
+  private boolean jj_3R_97() {
     if (jj_scan_token(IS_LITERAL)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_152() {
-    if (jj_scan_token(PNAME_LN)) return true;
+  private boolean jj_3R_141() {
+    if (jj_3R_148()) return true;
     return false;
   }
 
-  private boolean jj_3R_95() {
+  private boolean jj_3R_96() {
     if (jj_scan_token(IS_BLANK)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_125() {
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_140() {
+    if (jj_3R_135()) return true;
     return false;
   }
 
-  private boolean jj_3R_147() {
+  private boolean jj_3R_134() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_152()) {
+    if (jj_3R_140()) {
     jj_scanpos = xsp;
-    if (jj_3R_153()) return true;
+    if (jj_3R_141()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_94() {
-    if (jj_scan_token(IS_URI)) return true;
+  private boolean jj_3R_126() {
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_93() {
-    if (jj_scan_token(IS_IRI)) return true;
+  private boolean jj_3R_95() {
+    if (jj_scan_token(IS_URI)) 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_94() {
+    if (jj_scan_token(IS_IRI)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_107() {
+  private boolean jj_3R_108() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(165)) {
     jj_scanpos = xsp;
-    if (jj_3R_125()) return true;
+    if (jj_3R_126()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_92() {
+  private boolean jj_3R_93() {
     if (jj_scan_token(SAME_TERM)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_139() {
-    if (jj_3R_134()) return true;
+  private boolean jj_3R_166() {
+    if (jj_scan_token(STRING_LITERAL_LONG2)) return true;
     return false;
   }
 
-  private boolean jj_3R_133() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_139()) {
-    jj_scanpos = xsp;
-    if (jj_3R_140()) return true;
-    }
+  private boolean jj_3R_92() {
+    if (jj_scan_token(STRDT)) 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;
+  private boolean jj_3R_165() {
+    if (jj_scan_token(STRING_LITERAL_LONG1)) return true;
     return false;
   }
 
-  private boolean jj_3R_90() {
+  private boolean jj_3R_164() {
+    if (jj_scan_token(STRING_LITERAL2)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_91() {
     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;
+  private boolean jj_3R_163() {
+    if (jj_scan_token(STRING_LITERAL1)) return true;
     return false;
   }
 
-  private boolean jj_3R_165() {
-    if (jj_scan_token(STRING_LITERAL_LONG2)) return true;
+  private boolean jj_3R_155() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_163()) {
+    jj_scanpos = xsp;
+    if (jj_3R_164()) {
+    jj_scanpos = xsp;
+    if (jj_3R_165()) {
+    jj_scanpos = xsp;
+    if (jj_3R_166()) return true;
+    }
+    }
+    }
     return false;
   }
 
-  private boolean jj_3R_164() {
-    if (jj_scan_token(STRING_LITERAL_LONG1)) return true;
+  private boolean jj_3R_90() {
+    if (jj_scan_token(IF)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_163() {
-    if (jj_scan_token(STRING_LITERAL2)) return true;
+  private boolean jj_3R_160() {
+    if (jj_scan_token(FALSE)) return true;
     return false;
   }
 
-  private boolean jj_3R_162() {
-    if (jj_scan_token(STRING_LITERAL1)) return true;
+  private boolean jj_3R_159() {
+    if (jj_scan_token(TRUE)) return true;
     return false;
   }
 
-  private boolean jj_3R_154() {
+  private boolean jj_3R_151() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_162()) {
+    if (jj_3R_159()) {
     jj_scanpos = xsp;
-    if (jj_3R_163()) {
-    jj_scanpos = xsp;
-    if (jj_3R_164()) {
-    jj_scanpos = xsp;
-    if (jj_3R_165()) return true;
-    }
-    }
+    if (jj_3R_160()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_88() {
+  private boolean jj_3R_89() {
     if (jj_scan_token(CALL)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_87() {
+  private boolean jj_3R_178() {
+    if (jj_scan_token(DOUBLE_NEGATIVE)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_88() {
     if (jj_scan_token(COALESCE)) return true;
-    if (jj_3R_107()) return true;
+    if (jj_3R_108()) return true;
     return false;
   }
 
-  private boolean jj_3R_159() {
-    if (jj_scan_token(FALSE)) return true;
+  private boolean jj_3R_177() {
+    if (jj_scan_token(DECIMAL_NEGATIVE)) return true;
     return false;
   }
 
-  private boolean jj_3R_146() {
+  private boolean jj_3R_147() {
     if (jj_scan_token(NIL)) return true;
     return false;
   }
 
-  private boolean jj_3R_86() {
+  private boolean jj_3R_87() {
     if (jj_scan_token(VERSION)) return true;
     if (jj_scan_token(NIL)) return true;
     return false;
   }
 
-  private boolean jj_3R_145() {
-    if (jj_3R_151()) return true;
+  private boolean jj_3R_176() {
+    if (jj_scan_token(INTEGER_NEGATIVE)) return true;
     return false;
   }
 
-  private boolean jj_3R_85() {
+  private boolean jj_3R_169() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_176()) {
+    jj_scanpos = xsp;
+    if (jj_3R_177()) {
+    jj_scanpos = xsp;
+    if (jj_3R_178()) return true;
+    }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_146() {
+    if (jj_3R_152()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_86() {
     if (jj_scan_token(SHA512)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_158() {
-    if (jj_scan_token(TRUE)) return true;
+  private boolean jj_3R_145() {
+    if (jj_3R_151()) 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;
-    }
+  private boolean jj_3R_85() {
+    if (jj_scan_token(SHA384)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
@@ -6471,7 +6602,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   }
 
   private boolean jj_3R_84() {
-    if (jj_scan_token(SHA384)) return true;
+    if (jj_scan_token(SHA256)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
@@ -6482,32 +6613,24 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   }
 
   private boolean jj_3R_83() {
-    if (jj_scan_token(SHA256)) return true;
+    if (jj_scan_token(SHA1)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_142() {
-    if (jj_3R_148()) 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_175() {
+    if (jj_scan_token(DOUBLE_POSITIVE)) return true;
     return false;
   }
 
-  private boolean jj_3R_141() {
-    if (jj_3R_133()) return true;
+  private boolean jj_3R_142() {
+    if (jj_3R_134()) return true;
     return false;
   }
 
-  private boolean jj_3R_136() {
+  private boolean jj_3R_137() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_141()) {
-    jj_scanpos = xsp;
     if (jj_3R_142()) {
     jj_scanpos = xsp;
     if (jj_3R_143()) {
@@ -6516,7 +6639,9 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     jj_scanpos = xsp;
     if (jj_3R_145()) {
     jj_scanpos = xsp;
-    if (jj_3R_146()) return true;
+    if (jj_3R_146()) {
+    jj_scanpos = xsp;
+    if (jj_3R_147()) return true;
     }
     }
     }
@@ -6525,53 +6650,48 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_81() {
+  private boolean jj_3R_82() {
     if (jj_scan_token(MD5)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_177() {
-    if (jj_scan_token(DOUBLE_NEGATIVE)) return true;
+  private boolean jj_3R_174() {
+    if (jj_scan_token(DECIMAL_POSITIVE)) return true;
     return false;
   }
 
-  private boolean jj_3R_80() {
+  private boolean jj_3R_81() {
     if (jj_scan_token(STRUUID)) return true;
     if (jj_scan_token(NIL)) return true;
     return false;
   }
 
-  private boolean jj_3R_176() {
-    if (jj_scan_token(DECIMAL_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_175() {
-    if (jj_scan_token(INTEGER_NEGATIVE)) return true;
+  private boolean jj_3R_173() {
+    if (jj_scan_token(INTEGER_POSITIVE)) return true;
     return false;
   }
 
   private boolean jj_3R_168() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_175()) {
+    if (jj_3R_173()) {
     jj_scanpos = xsp;
-    if (jj_3R_176()) {
+    if (jj_3R_174()) {
     jj_scanpos = xsp;
-    if (jj_3R_177()) return true;
+    if (jj_3R_175()) return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_135() {
+  private boolean jj_3R_80() {
+    if (jj_scan_token(UUID)) return true;
+    if (jj_scan_token(NIL)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_136() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(14)) {
@@ -6581,76 +6701,76 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_78() {
+  private boolean jj_3R_79() {
     if (jj_scan_token(NOW)) return true;
     if (jj_scan_token(NIL)) return true;
     return false;
   }
 
-  private boolean jj_3R_77() {
+  private boolean jj_3R_78() {
     if (jj_scan_token(TZ)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_76() {
+  private boolean jj_3R_77() {
     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;
+  private boolean jj_3R_172() {
+    if (jj_scan_token(DOUBLE)) return true;
     return false;
   }
 
-  private boolean jj_3R_174() {
-    if (jj_scan_token(DOUBLE_POSITIVE)) return true;
+  private boolean jj_3R_131() {
+    if (jj_3R_137()) return true;
     return false;
   }
 
-  private boolean jj_3R_74() {
-    if (jj_scan_token(MINUTES)) return true;
+  private boolean jj_3R_76() {
+    if (jj_scan_token(SECONDS)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_173() {
-    if (jj_scan_token(DECIMAL_POSITIVE)) return true;
+  private boolean jj_3R_171() {
+    if (jj_scan_token(DECIMAL)) return true;
     return false;
   }
 
-  private boolean jj_3R_73() {
-    if (jj_scan_token(HOURS)) return true;
+  private boolean jj_3R_75() {
+    if (jj_scan_token(MINUTES)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_172() {
-    if (jj_scan_token(INTEGER_POSITIVE)) return true;
+  private boolean jj_3R_170() {
+    if (jj_scan_token(INTEGER)) return true;
     return false;
   }
 
   private boolean jj_3R_167() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_172()) {
+    if (jj_3R_170()) {
     jj_scanpos = xsp;
-    if (jj_3R_173()) {
+    if (jj_3R_171()) {
     jj_scanpos = xsp;
-    if (jj_3R_174()) return true;
+    if (jj_3R_172()) return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_72() {
+  private boolean jj_3R_74() {
+    if (jj_scan_token(HOURS)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_73() {
     if (jj_scan_token(DAY)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
@@ -6667,7 +6787,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[179];
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static private int[] jj_la1_2;
@@ -6685,25 +6805,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,0x1c00,0xc000,0x0,0x0,0x1c00,0x0,0x1c00,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,0x1c00,0xc000,0x0,0x0,0x1c00,0x0,0x1c00,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,0x0,0xdc
 00,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,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,0x0,0x0,0xb7e18000,0x37e00000,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,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,0xfffffcbd,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,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,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,0xfbfffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,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,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,0x87fc0000,0x0,0x0,0x0,0x0,0x7fc0000,0x1c0000,0xe00000,0x
 7000000,0x0,0x80000000,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,0x7,0x0,0x28,0x28,0x7,0x28,0x7,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,0x0,0x0
 ,0x400,};
+      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,0x7,0x0,0x28,0x28,0x7,0x28,0x7,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,0x1000,0x610000f,0x0,0x28,0x20000000,0x20000000,0x0,0x0,0x
 0,0x0,0x0,0x7,0x0,0x0,0x400,};
    }
    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,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,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,0x0,0x0,0x0,};
    }
   final private JJCalls[] jj_2_rtns = new JJCalls[5];
   private boolean jj_rescan = false;
@@ -6720,7 +6840,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 < 179; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6735,7 +6855,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 < 179; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6746,7 +6866,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 < 179; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6757,7 +6877,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 < 179; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6767,7 +6887,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 < 179; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6777,7 +6897,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 < 179; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6894,7 +7014,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       la1tokens[jj_kind] = true;
       jj_kind = -1;
     }
-    for (int i = 0; i < 176; i++) {
+    for (int i = 0; i < 179; i++) {
       if (jj_la1[i] == jj_gen) {
         for (int j = 0; j < 32; j++) {
           if ((jj_la1_0[i] & (1<<j)) != 0) {


[2/3] jena git commit: JENA-803 : Support AGG(DISTNCT ...)

Posted by an...@apache.org.
http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserConstants.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserConstants.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserConstants.java
index 801238b..3d41145 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserConstants.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserConstants.java
@@ -1,633 +1,633 @@
-/* Generated By:JavaCC: Do not edit this line. ARQParserConstants.java */
-package org.apache.jena.sparql.lang.arq ;
-
-
-/**
- * Token literal values and constants.
- * Generated by org.javacc.parser.OtherFilesGen#start()
- */
-public interface ARQParserConstants {
-
-  /** End of File. */
-  int EOF = 0;
-  /** RegularExpression Id. */
-  int SINGLE_LINE_COMMENT = 6;
-  /** RegularExpression Id. */
-  int WS = 7;
-  /** RegularExpression Id. */
-  int WSC = 8;
-  /** RegularExpression Id. */
-  int BOM = 9;
-  /** RegularExpression Id. */
-  int IRIref = 10;
-  /** RegularExpression Id. */
-  int PNAME_NS = 11;
-  /** RegularExpression Id. */
-  int PNAME_LN = 12;
-  /** RegularExpression Id. */
-  int BLANK_NODE_LABEL = 13;
-  /** RegularExpression Id. */
-  int VAR1 = 14;
-  /** RegularExpression Id. */
-  int VAR2 = 15;
-  /** RegularExpression Id. */
-  int LANGTAG = 16;
-  /** RegularExpression Id. */
-  int A2Z = 17;
-  /** RegularExpression Id. */
-  int A2ZN = 18;
-  /** RegularExpression Id. */
-  int KW_A = 19;
-  /** RegularExpression Id. */
-  int BASE = 20;
-  /** RegularExpression Id. */
-  int PREFIX = 21;
-  /** RegularExpression Id. */
-  int SELECT = 22;
-  /** RegularExpression Id. */
-  int DISTINCT = 23;
-  /** RegularExpression Id. */
-  int REDUCED = 24;
-  /** RegularExpression Id. */
-  int DESCRIBE = 25;
-  /** RegularExpression Id. */
-  int CONSTRUCT = 26;
-  /** RegularExpression Id. */
-  int ASK = 27;
-  /** RegularExpression Id. */
-  int LIMIT = 28;
-  /** RegularExpression Id. */
-  int OFFSET = 29;
-  /** RegularExpression Id. */
-  int ORDER = 30;
-  /** RegularExpression Id. */
-  int BY = 31;
-  /** RegularExpression Id. */
-  int VALUES = 32;
-  /** RegularExpression Id. */
-  int UNDEF = 33;
-  /** RegularExpression Id. */
-  int ASC = 34;
-  /** RegularExpression Id. */
-  int DESC = 35;
-  /** RegularExpression Id. */
-  int NAMED = 36;
-  /** RegularExpression Id. */
-  int FROM = 37;
-  /** RegularExpression Id. */
-  int WHERE = 38;
-  /** RegularExpression Id. */
-  int AND = 39;
-  /** RegularExpression Id. */
-  int GRAPH = 40;
-  /** RegularExpression Id. */
-  int OPTIONAL = 41;
-  /** RegularExpression Id. */
-  int UNION = 42;
-  /** RegularExpression Id. */
-  int MINUS_P = 43;
-  /** RegularExpression Id. */
-  int BIND = 44;
-  /** RegularExpression Id. */
-  int SERVICE = 45;
-  /** RegularExpression Id. */
-  int LET = 46;
-  /** RegularExpression Id. */
-  int EXISTS = 47;
-  /** RegularExpression Id. */
-  int NOT = 48;
-  /** RegularExpression Id. */
-  int AS = 49;
-  /** RegularExpression Id. */
-  int GROUP = 50;
-  /** RegularExpression Id. */
-  int HAVING = 51;
-  /** RegularExpression Id. */
-  int SEPARATOR = 52;
-  /** RegularExpression Id. */
-  int AGG = 53;
-  /** RegularExpression Id. */
-  int COUNT = 54;
-  /** RegularExpression Id. */
-  int MIN = 55;
-  /** RegularExpression Id. */
-  int MAX = 56;
-  /** RegularExpression Id. */
-  int SUM = 57;
-  /** RegularExpression Id. */
-  int AVG = 58;
-  /** RegularExpression Id. */
-  int STDDEV = 59;
-  /** RegularExpression Id. */
-  int SAMPLE = 60;
-  /** RegularExpression Id. */
-  int GROUP_CONCAT = 61;
-  /** RegularExpression Id. */
-  int FILTER = 62;
-  /** RegularExpression Id. */
-  int BOUND = 63;
-  /** RegularExpression Id. */
-  int COALESCE = 64;
-  /** RegularExpression Id. */
-  int IN = 65;
-  /** RegularExpression Id. */
-  int IF = 66;
-  /** RegularExpression Id. */
-  int BNODE = 67;
-  /** RegularExpression Id. */
-  int IRI = 68;
-  /** RegularExpression Id. */
-  int URI = 69;
-  /** RegularExpression Id. */
-  int CAST = 70;
-  /** RegularExpression Id. */
-  int CALL = 71;
-  /** RegularExpression Id. */
-  int MULTI = 72;
-  /** RegularExpression Id. */
-  int SHORTEST = 73;
-  /** RegularExpression Id. */
-  int STR = 74;
-  /** RegularExpression Id. */
-  int STRLANG = 75;
-  /** RegularExpression Id. */
-  int STRDT = 76;
-  /** RegularExpression Id. */
-  int DTYPE = 77;
-  /** RegularExpression Id. */
-  int LANG = 78;
-  /** RegularExpression Id. */
-  int LANGMATCHES = 79;
-  /** RegularExpression Id. */
-  int IS_URI = 80;
-  /** RegularExpression Id. */
-  int IS_IRI = 81;
-  /** RegularExpression Id. */
-  int IS_BLANK = 82;
-  /** RegularExpression Id. */
-  int IS_LITERAL = 83;
-  /** RegularExpression Id. */
-  int IS_NUMERIC = 84;
-  /** RegularExpression Id. */
-  int REGEX = 85;
-  /** RegularExpression Id. */
-  int SAME_TERM = 86;
-  /** RegularExpression Id. */
-  int RAND = 87;
-  /** RegularExpression Id. */
-  int ABS = 88;
-  /** RegularExpression Id. */
-  int CEIL = 89;
-  /** RegularExpression Id. */
-  int FLOOR = 90;
-  /** RegularExpression Id. */
-  int ROUND = 91;
-  /** RegularExpression Id. */
-  int CONCAT = 92;
-  /** RegularExpression Id. */
-  int SUBSTR = 93;
-  /** RegularExpression Id. */
-  int STRLEN = 94;
-  /** RegularExpression Id. */
-  int REPLACE = 95;
-  /** RegularExpression Id. */
-  int UCASE = 96;
-  /** RegularExpression Id. */
-  int LCASE = 97;
-  /** RegularExpression Id. */
-  int ENCODE_FOR_URI = 98;
-  /** RegularExpression Id. */
-  int CONTAINS = 99;
-  /** RegularExpression Id. */
-  int STRSTARTS = 100;
-  /** RegularExpression Id. */
-  int STRENDS = 101;
-  /** RegularExpression Id. */
-  int STRBEFORE = 102;
-  /** RegularExpression Id. */
-  int STRAFTER = 103;
-  /** RegularExpression Id. */
-  int YEAR = 104;
-  /** RegularExpression Id. */
-  int MONTH = 105;
-  /** RegularExpression Id. */
-  int DAY = 106;
-  /** RegularExpression Id. */
-  int HOURS = 107;
-  /** RegularExpression Id. */
-  int MINUTES = 108;
-  /** RegularExpression Id. */
-  int SECONDS = 109;
-  /** RegularExpression Id. */
-  int TIMEZONE = 110;
-  /** RegularExpression Id. */
-  int TZ = 111;
-  /** RegularExpression Id. */
-  int NOW = 112;
-  /** RegularExpression Id. */
-  int UUID = 113;
-  /** RegularExpression Id. */
-  int STRUUID = 114;
-  /** RegularExpression Id. */
-  int VERSION = 115;
-  /** RegularExpression Id. */
-  int MD5 = 116;
-  /** RegularExpression Id. */
-  int SHA1 = 117;
-  /** RegularExpression Id. */
-  int SHA224 = 118;
-  /** RegularExpression Id. */
-  int SHA256 = 119;
-  /** RegularExpression Id. */
-  int SHA384 = 120;
-  /** RegularExpression Id. */
-  int SHA512 = 121;
-  /** RegularExpression Id. */
-  int TRUE = 122;
-  /** RegularExpression Id. */
-  int FALSE = 123;
-  /** RegularExpression Id. */
-  int DATA = 124;
-  /** RegularExpression Id. */
-  int INSERT = 125;
-  /** RegularExpression Id. */
-  int DELETE = 126;
-  /** RegularExpression Id. */
-  int INSERT_DATA = 127;
-  /** RegularExpression Id. */
-  int DELETE_DATA = 128;
-  /** RegularExpression Id. */
-  int DELETE_WHERE = 129;
-  /** RegularExpression Id. */
-  int LOAD = 130;
-  /** RegularExpression Id. */
-  int CLEAR = 131;
-  /** RegularExpression Id. */
-  int CREATE = 132;
-  /** RegularExpression Id. */
-  int ADD = 133;
-  /** RegularExpression Id. */
-  int MOVE = 134;
-  /** RegularExpression Id. */
-  int COPY = 135;
-  /** RegularExpression Id. */
-  int META = 136;
-  /** RegularExpression Id. */
-  int SILENT = 137;
-  /** RegularExpression Id. */
-  int DROP = 138;
-  /** RegularExpression Id. */
-  int INTO = 139;
-  /** RegularExpression Id. */
-  int TO = 140;
-  /** RegularExpression Id. */
-  int DFT = 141;
-  /** RegularExpression Id. */
-  int ALL = 142;
-  /** RegularExpression Id. */
-  int WITH = 143;
-  /** RegularExpression Id. */
-  int USING = 144;
-  /** RegularExpression Id. */
-  int DIGITS = 145;
-  /** RegularExpression Id. */
-  int INTEGER = 146;
-  /** RegularExpression Id. */
-  int DECIMAL = 147;
-  /** RegularExpression Id. */
-  int DOUBLE = 148;
-  /** RegularExpression Id. */
-  int INTEGER_POSITIVE = 149;
-  /** RegularExpression Id. */
-  int DECIMAL_POSITIVE = 150;
-  /** RegularExpression Id. */
-  int DOUBLE_POSITIVE = 151;
-  /** RegularExpression Id. */
-  int INTEGER_NEGATIVE = 152;
-  /** RegularExpression Id. */
-  int DECIMAL_NEGATIVE = 153;
-  /** RegularExpression Id. */
-  int DOUBLE_NEGATIVE = 154;
-  /** RegularExpression Id. */
-  int EXPONENT = 155;
-  /** RegularExpression Id. */
-  int QUOTE_3D = 156;
-  /** RegularExpression Id. */
-  int QUOTE_3S = 157;
-  /** RegularExpression Id. */
-  int ECHAR = 158;
-  /** RegularExpression Id. */
-  int STRING_LITERAL1 = 159;
-  /** RegularExpression Id. */
-  int STRING_LITERAL2 = 160;
-  /** RegularExpression Id. */
-  int STRING_LITERAL_LONG1 = 161;
-  /** RegularExpression Id. */
-  int STRING_LITERAL_LONG2 = 162;
-  /** RegularExpression Id. */
-  int LPAREN = 163;
-  /** RegularExpression Id. */
-  int RPAREN = 164;
-  /** RegularExpression Id. */
-  int NIL = 165;
-  /** RegularExpression Id. */
-  int LBRACE = 166;
-  /** RegularExpression Id. */
-  int RBRACE = 167;
-  /** RegularExpression Id. */
-  int LBRACKET = 168;
-  /** RegularExpression Id. */
-  int RBRACKET = 169;
-  /** RegularExpression Id. */
-  int ANON = 170;
-  /** RegularExpression Id. */
-  int SEMICOLON = 171;
-  /** RegularExpression Id. */
-  int COMMA = 172;
-  /** RegularExpression Id. */
-  int DOT = 173;
-  /** RegularExpression Id. */
-  int EQ = 174;
-  /** RegularExpression Id. */
-  int NE = 175;
-  /** RegularExpression Id. */
-  int GT = 176;
-  /** RegularExpression Id. */
-  int LT = 177;
-  /** RegularExpression Id. */
-  int LE = 178;
-  /** RegularExpression Id. */
-  int GE = 179;
-  /** RegularExpression Id. */
-  int BANG = 180;
-  /** RegularExpression Id. */
-  int TILDE = 181;
-  /** RegularExpression Id. */
-  int COLON = 182;
-  /** RegularExpression Id. */
-  int SC_OR = 183;
-  /** RegularExpression Id. */
-  int SC_AND = 184;
-  /** RegularExpression Id. */
-  int PLUS = 185;
-  /** RegularExpression Id. */
-  int MINUS = 186;
-  /** RegularExpression Id. */
-  int STAR = 187;
-  /** RegularExpression Id. */
-  int SLASH = 188;
-  /** RegularExpression Id. */
-  int DATATYPE = 189;
-  /** RegularExpression Id. */
-  int AT = 190;
-  /** RegularExpression Id. */
-  int ASSIGN = 191;
-  /** RegularExpression Id. */
-  int VBAR = 192;
-  /** RegularExpression Id. */
-  int CARAT = 193;
-  /** RegularExpression Id. */
-  int FPATH = 194;
-  /** RegularExpression Id. */
-  int RPATH = 195;
-  /** RegularExpression Id. */
-  int QMARK = 196;
-  /** RegularExpression Id. */
-  int PN_CHARS_BASE = 197;
-  /** RegularExpression Id. */
-  int PN_CHARS_U = 198;
-  /** RegularExpression Id. */
-  int PN_CHARS = 199;
-  /** RegularExpression Id. */
-  int PN_PREFIX = 200;
-  /** RegularExpression Id. */
-  int PN_LOCAL = 201;
-  /** RegularExpression Id. */
-  int VARNAME = 202;
-  /** RegularExpression Id. */
-  int PN_LOCAL_ESC = 203;
-  /** RegularExpression Id. */
-  int PLX = 204;
-  /** RegularExpression Id. */
-  int HEX = 205;
-  /** RegularExpression Id. */
-  int PERCENT = 206;
-  /** RegularExpression Id. */
-  int UNKNOWN = 207;
-
-  /** Lexical state. */
-  int DEFAULT = 0;
-
-  /** Literal token values. */
-  String[] tokenImage = {
-    "<EOF>",
-    "\" \"",
-    "\"\\t\"",
-    "\"\\n\"",
-    "\"\\r\"",
-    "\"\\f\"",
-    "<SINGLE_LINE_COMMENT>",
-    "<WS>",
-    "<WSC>",
-    "\"\\ufeff\"",
-    "<IRIref>",
-    "<PNAME_NS>",
-    "<PNAME_LN>",
-    "<BLANK_NODE_LABEL>",
-    "<VAR1>",
-    "<VAR2>",
-    "<LANGTAG>",
-    "<A2Z>",
-    "<A2ZN>",
-    "\"a\"",
-    "\"base\"",
-    "\"prefix\"",
-    "\"select\"",
-    "\"distinct\"",
-    "\"reduced\"",
-    "\"describe\"",
-    "\"construct\"",
-    "\"ask\"",
-    "\"limit\"",
-    "\"offset\"",
-    "\"order\"",
-    "\"by\"",
-    "\"values\"",
-    "\"undef\"",
-    "\"asc\"",
-    "\"desc\"",
-    "\"named\"",
-    "\"from\"",
-    "\"where\"",
-    "\"and\"",
-    "\"graph\"",
-    "\"optional\"",
-    "\"union\"",
-    "\"minus\"",
-    "\"bind\"",
-    "\"service\"",
-    "\"let\"",
-    "\"exists\"",
-    "\"not\"",
-    "\"as\"",
-    "\"group\"",
-    "\"having\"",
-    "\"separator\"",
-    "\"agg\"",
-    "\"count\"",
-    "\"min\"",
-    "\"max\"",
-    "\"sum\"",
-    "\"avg\"",
-    "\"stdev\"",
-    "\"sample\"",
-    "\"group_concat\"",
-    "\"filter\"",
-    "\"bound\"",
-    "\"coalesce\"",
-    "\"in\"",
-    "\"if\"",
-    "\"bnode\"",
-    "\"iri\"",
-    "\"uri\"",
-    "\"cast\"",
-    "\"call\"",
-    "\"multi\"",
-    "\"shortest\"",
-    "\"str\"",
-    "\"strlang\"",
-    "\"strdt\"",
-    "\"datatype\"",
-    "\"lang\"",
-    "\"langmatches\"",
-    "\"isURI\"",
-    "\"isIRI\"",
-    "\"isBlank\"",
-    "\"isLiteral\"",
-    "\"isNumeric\"",
-    "\"regex\"",
-    "\"sameTerm\"",
-    "\"RAND\"",
-    "\"ABS\"",
-    "\"CEIL\"",
-    "\"FLOOR\"",
-    "\"ROUND\"",
-    "\"CONCAT\"",
-    "\"SUBSTR\"",
-    "\"STRLEN\"",
-    "\"REPLACE\"",
-    "\"UCASE\"",
-    "\"LCASE\"",
-    "\"ENCODE_FOR_URI\"",
-    "\"CONTAINS\"",
-    "\"STRSTARTS\"",
-    "\"STRENDS\"",
-    "\"STRBEFORE\"",
-    "\"STRAFTER\"",
-    "\"YEAR\"",
-    "\"MONTH\"",
-    "\"DAY\"",
-    "\"HOURS\"",
-    "\"MINUTES\"",
-    "\"SECONDS\"",
-    "\"TIMEZONE\"",
-    "\"TZ\"",
-    "\"NOW\"",
-    "\"UUID\"",
-    "\"STRUUID\"",
-    "\"VERSION\"",
-    "\"MD5\"",
-    "\"SHA1\"",
-    "\"SHA224\"",
-    "\"SHA256\"",
-    "\"SHA384\"",
-    "\"SHA512\"",
-    "\"true\"",
-    "\"false\"",
-    "\"data\"",
-    "\"insert\"",
-    "\"delete\"",
-    "<INSERT_DATA>",
-    "<DELETE_DATA>",
-    "<DELETE_WHERE>",
-    "\"load\"",
-    "\"clear\"",
-    "\"create\"",
-    "\"add\"",
-    "\"move\"",
-    "\"copy\"",
-    "\"meta\"",
-    "\"silent\"",
-    "\"drop\"",
-    "\"into\"",
-    "\"to\"",
-    "\"default\"",
-    "\"all\"",
-    "\"with\"",
-    "\"using\"",
-    "<DIGITS>",
-    "<INTEGER>",
-    "<DECIMAL>",
-    "<DOUBLE>",
-    "<INTEGER_POSITIVE>",
-    "<DECIMAL_POSITIVE>",
-    "<DOUBLE_POSITIVE>",
-    "<INTEGER_NEGATIVE>",
-    "<DECIMAL_NEGATIVE>",
-    "<DOUBLE_NEGATIVE>",
-    "<EXPONENT>",
-    "\"\\\"\\\"\\\"\"",
-    "\"\\\'\\\'\\\'\"",
-    "<ECHAR>",
-    "<STRING_LITERAL1>",
-    "<STRING_LITERAL2>",
-    "<STRING_LITERAL_LONG1>",
-    "<STRING_LITERAL_LONG2>",
-    "\"(\"",
-    "\")\"",
-    "<NIL>",
-    "\"{\"",
-    "\"}\"",
-    "\"[\"",
-    "\"]\"",
-    "<ANON>",
-    "\";\"",
-    "\",\"",
-    "\".\"",
-    "\"=\"",
-    "\"!=\"",
-    "\">\"",
-    "\"<\"",
-    "\"<=\"",
-    "\">=\"",
-    "\"!\"",
-    "\"~\"",
-    "\":\"",
-    "\"||\"",
-    "\"&&\"",
-    "\"+\"",
-    "\"-\"",
-    "\"*\"",
-    "\"/\"",
-    "\"^^\"",
-    "\"@\"",
-    "\":=\"",
-    "\"|\"",
-    "\"^\"",
-    "\"->\"",
-    "\"<-\"",
-    "\"?\"",
-    "<PN_CHARS_BASE>",
-    "<PN_CHARS_U>",
-    "<PN_CHARS>",
-    "<PN_PREFIX>",
-    "<PN_LOCAL>",
-    "<VARNAME>",
-    "<PN_LOCAL_ESC>",
-    "<PLX>",
-    "<HEX>",
-    "<PERCENT>",
-    "<UNKNOWN>",
-  };
-
-}
+/* Generated By:JavaCC: Do not edit this line. ARQParserConstants.java */
+package org.apache.jena.sparql.lang.arq ;
+
+
+/**
+ * Token literal values and constants.
+ * Generated by org.javacc.parser.OtherFilesGen#start()
+ */
+public interface ARQParserConstants {
+
+  /** End of File. */
+  int EOF = 0;
+  /** RegularExpression Id. */
+  int SINGLE_LINE_COMMENT = 6;
+  /** RegularExpression Id. */
+  int WS = 7;
+  /** RegularExpression Id. */
+  int WSC = 8;
+  /** RegularExpression Id. */
+  int BOM = 9;
+  /** RegularExpression Id. */
+  int IRIref = 10;
+  /** RegularExpression Id. */
+  int PNAME_NS = 11;
+  /** RegularExpression Id. */
+  int PNAME_LN = 12;
+  /** RegularExpression Id. */
+  int BLANK_NODE_LABEL = 13;
+  /** RegularExpression Id. */
+  int VAR1 = 14;
+  /** RegularExpression Id. */
+  int VAR2 = 15;
+  /** RegularExpression Id. */
+  int LANGTAG = 16;
+  /** RegularExpression Id. */
+  int A2Z = 17;
+  /** RegularExpression Id. */
+  int A2ZN = 18;
+  /** RegularExpression Id. */
+  int KW_A = 19;
+  /** RegularExpression Id. */
+  int BASE = 20;
+  /** RegularExpression Id. */
+  int PREFIX = 21;
+  /** RegularExpression Id. */
+  int SELECT = 22;
+  /** RegularExpression Id. */
+  int DISTINCT = 23;
+  /** RegularExpression Id. */
+  int REDUCED = 24;
+  /** RegularExpression Id. */
+  int DESCRIBE = 25;
+  /** RegularExpression Id. */
+  int CONSTRUCT = 26;
+  /** RegularExpression Id. */
+  int ASK = 27;
+  /** RegularExpression Id. */
+  int LIMIT = 28;
+  /** RegularExpression Id. */
+  int OFFSET = 29;
+  /** RegularExpression Id. */
+  int ORDER = 30;
+  /** RegularExpression Id. */
+  int BY = 31;
+  /** RegularExpression Id. */
+  int VALUES = 32;
+  /** RegularExpression Id. */
+  int UNDEF = 33;
+  /** RegularExpression Id. */
+  int ASC = 34;
+  /** RegularExpression Id. */
+  int DESC = 35;
+  /** RegularExpression Id. */
+  int NAMED = 36;
+  /** RegularExpression Id. */
+  int FROM = 37;
+  /** RegularExpression Id. */
+  int WHERE = 38;
+  /** RegularExpression Id. */
+  int AND = 39;
+  /** RegularExpression Id. */
+  int GRAPH = 40;
+  /** RegularExpression Id. */
+  int OPTIONAL = 41;
+  /** RegularExpression Id. */
+  int UNION = 42;
+  /** RegularExpression Id. */
+  int MINUS_P = 43;
+  /** RegularExpression Id. */
+  int BIND = 44;
+  /** RegularExpression Id. */
+  int SERVICE = 45;
+  /** RegularExpression Id. */
+  int LET = 46;
+  /** RegularExpression Id. */
+  int EXISTS = 47;
+  /** RegularExpression Id. */
+  int NOT = 48;
+  /** RegularExpression Id. */
+  int AS = 49;
+  /** RegularExpression Id. */
+  int GROUP = 50;
+  /** RegularExpression Id. */
+  int HAVING = 51;
+  /** RegularExpression Id. */
+  int SEPARATOR = 52;
+  /** RegularExpression Id. */
+  int AGG = 53;
+  /** RegularExpression Id. */
+  int COUNT = 54;
+  /** RegularExpression Id. */
+  int MIN = 55;
+  /** RegularExpression Id. */
+  int MAX = 56;
+  /** RegularExpression Id. */
+  int SUM = 57;
+  /** RegularExpression Id. */
+  int AVG = 58;
+  /** RegularExpression Id. */
+  int STDDEV = 59;
+  /** RegularExpression Id. */
+  int SAMPLE = 60;
+  /** RegularExpression Id. */
+  int GROUP_CONCAT = 61;
+  /** RegularExpression Id. */
+  int FILTER = 62;
+  /** RegularExpression Id. */
+  int BOUND = 63;
+  /** RegularExpression Id. */
+  int COALESCE = 64;
+  /** RegularExpression Id. */
+  int IN = 65;
+  /** RegularExpression Id. */
+  int IF = 66;
+  /** RegularExpression Id. */
+  int BNODE = 67;
+  /** RegularExpression Id. */
+  int IRI = 68;
+  /** RegularExpression Id. */
+  int URI = 69;
+  /** RegularExpression Id. */
+  int CAST = 70;
+  /** RegularExpression Id. */
+  int CALL = 71;
+  /** RegularExpression Id. */
+  int MULTI = 72;
+  /** RegularExpression Id. */
+  int SHORTEST = 73;
+  /** RegularExpression Id. */
+  int STR = 74;
+  /** RegularExpression Id. */
+  int STRLANG = 75;
+  /** RegularExpression Id. */
+  int STRDT = 76;
+  /** RegularExpression Id. */
+  int DTYPE = 77;
+  /** RegularExpression Id. */
+  int LANG = 78;
+  /** RegularExpression Id. */
+  int LANGMATCHES = 79;
+  /** RegularExpression Id. */
+  int IS_URI = 80;
+  /** RegularExpression Id. */
+  int IS_IRI = 81;
+  /** RegularExpression Id. */
+  int IS_BLANK = 82;
+  /** RegularExpression Id. */
+  int IS_LITERAL = 83;
+  /** RegularExpression Id. */
+  int IS_NUMERIC = 84;
+  /** RegularExpression Id. */
+  int REGEX = 85;
+  /** RegularExpression Id. */
+  int SAME_TERM = 86;
+  /** RegularExpression Id. */
+  int RAND = 87;
+  /** RegularExpression Id. */
+  int ABS = 88;
+  /** RegularExpression Id. */
+  int CEIL = 89;
+  /** RegularExpression Id. */
+  int FLOOR = 90;
+  /** RegularExpression Id. */
+  int ROUND = 91;
+  /** RegularExpression Id. */
+  int CONCAT = 92;
+  /** RegularExpression Id. */
+  int SUBSTR = 93;
+  /** RegularExpression Id. */
+  int STRLEN = 94;
+  /** RegularExpression Id. */
+  int REPLACE = 95;
+  /** RegularExpression Id. */
+  int UCASE = 96;
+  /** RegularExpression Id. */
+  int LCASE = 97;
+  /** RegularExpression Id. */
+  int ENCODE_FOR_URI = 98;
+  /** RegularExpression Id. */
+  int CONTAINS = 99;
+  /** RegularExpression Id. */
+  int STRSTARTS = 100;
+  /** RegularExpression Id. */
+  int STRENDS = 101;
+  /** RegularExpression Id. */
+  int STRBEFORE = 102;
+  /** RegularExpression Id. */
+  int STRAFTER = 103;
+  /** RegularExpression Id. */
+  int YEAR = 104;
+  /** RegularExpression Id. */
+  int MONTH = 105;
+  /** RegularExpression Id. */
+  int DAY = 106;
+  /** RegularExpression Id. */
+  int HOURS = 107;
+  /** RegularExpression Id. */
+  int MINUTES = 108;
+  /** RegularExpression Id. */
+  int SECONDS = 109;
+  /** RegularExpression Id. */
+  int TIMEZONE = 110;
+  /** RegularExpression Id. */
+  int TZ = 111;
+  /** RegularExpression Id. */
+  int NOW = 112;
+  /** RegularExpression Id. */
+  int UUID = 113;
+  /** RegularExpression Id. */
+  int STRUUID = 114;
+  /** RegularExpression Id. */
+  int VERSION = 115;
+  /** RegularExpression Id. */
+  int MD5 = 116;
+  /** RegularExpression Id. */
+  int SHA1 = 117;
+  /** RegularExpression Id. */
+  int SHA224 = 118;
+  /** RegularExpression Id. */
+  int SHA256 = 119;
+  /** RegularExpression Id. */
+  int SHA384 = 120;
+  /** RegularExpression Id. */
+  int SHA512 = 121;
+  /** RegularExpression Id. */
+  int TRUE = 122;
+  /** RegularExpression Id. */
+  int FALSE = 123;
+  /** RegularExpression Id. */
+  int DATA = 124;
+  /** RegularExpression Id. */
+  int INSERT = 125;
+  /** RegularExpression Id. */
+  int DELETE = 126;
+  /** RegularExpression Id. */
+  int INSERT_DATA = 127;
+  /** RegularExpression Id. */
+  int DELETE_DATA = 128;
+  /** RegularExpression Id. */
+  int DELETE_WHERE = 129;
+  /** RegularExpression Id. */
+  int LOAD = 130;
+  /** RegularExpression Id. */
+  int CLEAR = 131;
+  /** RegularExpression Id. */
+  int CREATE = 132;
+  /** RegularExpression Id. */
+  int ADD = 133;
+  /** RegularExpression Id. */
+  int MOVE = 134;
+  /** RegularExpression Id. */
+  int COPY = 135;
+  /** RegularExpression Id. */
+  int META = 136;
+  /** RegularExpression Id. */
+  int SILENT = 137;
+  /** RegularExpression Id. */
+  int DROP = 138;
+  /** RegularExpression Id. */
+  int INTO = 139;
+  /** RegularExpression Id. */
+  int TO = 140;
+  /** RegularExpression Id. */
+  int DFT = 141;
+  /** RegularExpression Id. */
+  int ALL = 142;
+  /** RegularExpression Id. */
+  int WITH = 143;
+  /** RegularExpression Id. */
+  int USING = 144;
+  /** RegularExpression Id. */
+  int DIGITS = 145;
+  /** RegularExpression Id. */
+  int INTEGER = 146;
+  /** RegularExpression Id. */
+  int DECIMAL = 147;
+  /** RegularExpression Id. */
+  int DOUBLE = 148;
+  /** RegularExpression Id. */
+  int INTEGER_POSITIVE = 149;
+  /** RegularExpression Id. */
+  int DECIMAL_POSITIVE = 150;
+  /** RegularExpression Id. */
+  int DOUBLE_POSITIVE = 151;
+  /** RegularExpression Id. */
+  int INTEGER_NEGATIVE = 152;
+  /** RegularExpression Id. */
+  int DECIMAL_NEGATIVE = 153;
+  /** RegularExpression Id. */
+  int DOUBLE_NEGATIVE = 154;
+  /** RegularExpression Id. */
+  int EXPONENT = 155;
+  /** RegularExpression Id. */
+  int QUOTE_3D = 156;
+  /** RegularExpression Id. */
+  int QUOTE_3S = 157;
+  /** RegularExpression Id. */
+  int ECHAR = 158;
+  /** RegularExpression Id. */
+  int STRING_LITERAL1 = 159;
+  /** RegularExpression Id. */
+  int STRING_LITERAL2 = 160;
+  /** RegularExpression Id. */
+  int STRING_LITERAL_LONG1 = 161;
+  /** RegularExpression Id. */
+  int STRING_LITERAL_LONG2 = 162;
+  /** RegularExpression Id. */
+  int LPAREN = 163;
+  /** RegularExpression Id. */
+  int RPAREN = 164;
+  /** RegularExpression Id. */
+  int NIL = 165;
+  /** RegularExpression Id. */
+  int LBRACE = 166;
+  /** RegularExpression Id. */
+  int RBRACE = 167;
+  /** RegularExpression Id. */
+  int LBRACKET = 168;
+  /** RegularExpression Id. */
+  int RBRACKET = 169;
+  /** RegularExpression Id. */
+  int ANON = 170;
+  /** RegularExpression Id. */
+  int SEMICOLON = 171;
+  /** RegularExpression Id. */
+  int COMMA = 172;
+  /** RegularExpression Id. */
+  int DOT = 173;
+  /** RegularExpression Id. */
+  int EQ = 174;
+  /** RegularExpression Id. */
+  int NE = 175;
+  /** RegularExpression Id. */
+  int GT = 176;
+  /** RegularExpression Id. */
+  int LT = 177;
+  /** RegularExpression Id. */
+  int LE = 178;
+  /** RegularExpression Id. */
+  int GE = 179;
+  /** RegularExpression Id. */
+  int BANG = 180;
+  /** RegularExpression Id. */
+  int TILDE = 181;
+  /** RegularExpression Id. */
+  int COLON = 182;
+  /** RegularExpression Id. */
+  int SC_OR = 183;
+  /** RegularExpression Id. */
+  int SC_AND = 184;
+  /** RegularExpression Id. */
+  int PLUS = 185;
+  /** RegularExpression Id. */
+  int MINUS = 186;
+  /** RegularExpression Id. */
+  int STAR = 187;
+  /** RegularExpression Id. */
+  int SLASH = 188;
+  /** RegularExpression Id. */
+  int DATATYPE = 189;
+  /** RegularExpression Id. */
+  int AT = 190;
+  /** RegularExpression Id. */
+  int ASSIGN = 191;
+  /** RegularExpression Id. */
+  int VBAR = 192;
+  /** RegularExpression Id. */
+  int CARAT = 193;
+  /** RegularExpression Id. */
+  int FPATH = 194;
+  /** RegularExpression Id. */
+  int RPATH = 195;
+  /** RegularExpression Id. */
+  int QMARK = 196;
+  /** RegularExpression Id. */
+  int PN_CHARS_BASE = 197;
+  /** RegularExpression Id. */
+  int PN_CHARS_U = 198;
+  /** RegularExpression Id. */
+  int PN_CHARS = 199;
+  /** RegularExpression Id. */
+  int PN_PREFIX = 200;
+  /** RegularExpression Id. */
+  int PN_LOCAL = 201;
+  /** RegularExpression Id. */
+  int VARNAME = 202;
+  /** RegularExpression Id. */
+  int PN_LOCAL_ESC = 203;
+  /** RegularExpression Id. */
+  int PLX = 204;
+  /** RegularExpression Id. */
+  int HEX = 205;
+  /** RegularExpression Id. */
+  int PERCENT = 206;
+  /** RegularExpression Id. */
+  int UNKNOWN = 207;
+
+  /** Lexical state. */
+  int DEFAULT = 0;
+
+  /** Literal token values. */
+  String[] tokenImage = {
+    "<EOF>",
+    "\" \"",
+    "\"\\t\"",
+    "\"\\n\"",
+    "\"\\r\"",
+    "\"\\f\"",
+    "<SINGLE_LINE_COMMENT>",
+    "<WS>",
+    "<WSC>",
+    "\"\\ufeff\"",
+    "<IRIref>",
+    "<PNAME_NS>",
+    "<PNAME_LN>",
+    "<BLANK_NODE_LABEL>",
+    "<VAR1>",
+    "<VAR2>",
+    "<LANGTAG>",
+    "<A2Z>",
+    "<A2ZN>",
+    "\"a\"",
+    "\"base\"",
+    "\"prefix\"",
+    "\"select\"",
+    "\"distinct\"",
+    "\"reduced\"",
+    "\"describe\"",
+    "\"construct\"",
+    "\"ask\"",
+    "\"limit\"",
+    "\"offset\"",
+    "\"order\"",
+    "\"by\"",
+    "\"values\"",
+    "\"undef\"",
+    "\"asc\"",
+    "\"desc\"",
+    "\"named\"",
+    "\"from\"",
+    "\"where\"",
+    "\"and\"",
+    "\"graph\"",
+    "\"optional\"",
+    "\"union\"",
+    "\"minus\"",
+    "\"bind\"",
+    "\"service\"",
+    "\"let\"",
+    "\"exists\"",
+    "\"not\"",
+    "\"as\"",
+    "\"group\"",
+    "\"having\"",
+    "\"separator\"",
+    "\"agg\"",
+    "\"count\"",
+    "\"min\"",
+    "\"max\"",
+    "\"sum\"",
+    "\"avg\"",
+    "\"stdev\"",
+    "\"sample\"",
+    "\"group_concat\"",
+    "\"filter\"",
+    "\"bound\"",
+    "\"coalesce\"",
+    "\"in\"",
+    "\"if\"",
+    "\"bnode\"",
+    "\"iri\"",
+    "\"uri\"",
+    "\"cast\"",
+    "\"call\"",
+    "\"multi\"",
+    "\"shortest\"",
+    "\"str\"",
+    "\"strlang\"",
+    "\"strdt\"",
+    "\"datatype\"",
+    "\"lang\"",
+    "\"langmatches\"",
+    "\"isURI\"",
+    "\"isIRI\"",
+    "\"isBlank\"",
+    "\"isLiteral\"",
+    "\"isNumeric\"",
+    "\"regex\"",
+    "\"sameTerm\"",
+    "\"RAND\"",
+    "\"ABS\"",
+    "\"CEIL\"",
+    "\"FLOOR\"",
+    "\"ROUND\"",
+    "\"CONCAT\"",
+    "\"SUBSTR\"",
+    "\"STRLEN\"",
+    "\"REPLACE\"",
+    "\"UCASE\"",
+    "\"LCASE\"",
+    "\"ENCODE_FOR_URI\"",
+    "\"CONTAINS\"",
+    "\"STRSTARTS\"",
+    "\"STRENDS\"",
+    "\"STRBEFORE\"",
+    "\"STRAFTER\"",
+    "\"YEAR\"",
+    "\"MONTH\"",
+    "\"DAY\"",
+    "\"HOURS\"",
+    "\"MINUTES\"",
+    "\"SECONDS\"",
+    "\"TIMEZONE\"",
+    "\"TZ\"",
+    "\"NOW\"",
+    "\"UUID\"",
+    "\"STRUUID\"",
+    "\"VERSION\"",
+    "\"MD5\"",
+    "\"SHA1\"",
+    "\"SHA224\"",
+    "\"SHA256\"",
+    "\"SHA384\"",
+    "\"SHA512\"",
+    "\"true\"",
+    "\"false\"",
+    "\"data\"",
+    "\"insert\"",
+    "\"delete\"",
+    "<INSERT_DATA>",
+    "<DELETE_DATA>",
+    "<DELETE_WHERE>",
+    "\"load\"",
+    "\"clear\"",
+    "\"create\"",
+    "\"add\"",
+    "\"move\"",
+    "\"copy\"",
+    "\"meta\"",
+    "\"silent\"",
+    "\"drop\"",
+    "\"into\"",
+    "\"to\"",
+    "\"default\"",
+    "\"all\"",
+    "\"with\"",
+    "\"using\"",
+    "<DIGITS>",
+    "<INTEGER>",
+    "<DECIMAL>",
+    "<DOUBLE>",
+    "<INTEGER_POSITIVE>",
+    "<DECIMAL_POSITIVE>",
+    "<DOUBLE_POSITIVE>",
+    "<INTEGER_NEGATIVE>",
+    "<DECIMAL_NEGATIVE>",
+    "<DOUBLE_NEGATIVE>",
+    "<EXPONENT>",
+    "\"\\\"\\\"\\\"\"",
+    "\"\\\'\\\'\\\'\"",
+    "<ECHAR>",
+    "<STRING_LITERAL1>",
+    "<STRING_LITERAL2>",
+    "<STRING_LITERAL_LONG1>",
+    "<STRING_LITERAL_LONG2>",
+    "\"(\"",
+    "\")\"",
+    "<NIL>",
+    "\"{\"",
+    "\"}\"",
+    "\"[\"",
+    "\"]\"",
+    "<ANON>",
+    "\";\"",
+    "\",\"",
+    "\".\"",
+    "\"=\"",
+    "\"!=\"",
+    "\">\"",
+    "\"<\"",
+    "\"<=\"",
+    "\">=\"",
+    "\"!\"",
+    "\"~\"",
+    "\":\"",
+    "\"||\"",
+    "\"&&\"",
+    "\"+\"",
+    "\"-\"",
+    "\"*\"",
+    "\"/\"",
+    "\"^^\"",
+    "\"@\"",
+    "\":=\"",
+    "\"|\"",
+    "\"^\"",
+    "\"->\"",
+    "\"<-\"",
+    "\"?\"",
+    "<PN_CHARS_BASE>",
+    "<PN_CHARS_U>",
+    "<PN_CHARS>",
+    "<PN_PREFIX>",
+    "<PN_LOCAL>",
+    "<VARNAME>",
+    "<PN_LOCAL_ESC>",
+    "<PLX>",
+    "<HEX>",
+    "<PERCENT>",
+    "<UNKNOWN>",
+  };
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/JavaCharStream.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/JavaCharStream.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/JavaCharStream.java
index acabbc0..e0cdb86 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/JavaCharStream.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/JavaCharStream.java
@@ -1,617 +1,617 @@
-/* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 5.0 */
-/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
-package org.apache.jena.sparql.lang.arq ;
-
-/**
- * An implementation of interface CharStream, where the stream is assumed to
- * contain only ASCII characters (with java-like unicode escape processing).
- */
-
-public
-class JavaCharStream
-{
-  /** Whether parser is static. */
-  public static final boolean staticFlag = false;
-
-  static final int hexval(char c) throws java.io.IOException {
-    switch(c)
-    {
-       case '0' :
-          return 0;
-       case '1' :
-          return 1;
-       case '2' :
-          return 2;
-       case '3' :
-          return 3;
-       case '4' :
-          return 4;
-       case '5' :
-          return 5;
-       case '6' :
-          return 6;
-       case '7' :
-          return 7;
-       case '8' :
-          return 8;
-       case '9' :
-          return 9;
-
-       case 'a' :
-       case 'A' :
-          return 10;
-       case 'b' :
-       case 'B' :
-          return 11;
-       case 'c' :
-       case 'C' :
-          return 12;
-       case 'd' :
-       case 'D' :
-          return 13;
-       case 'e' :
-       case 'E' :
-          return 14;
-       case 'f' :
-       case 'F' :
-          return 15;
-    }
-
-    throw new java.io.IOException(); // Should never come here
-  }
-
-/** Position in buffer. */
-  public int bufpos = -1;
-  int bufsize;
-  int available;
-  int tokenBegin;
-  protected int bufline[];
-  protected int bufcolumn[];
-
-  protected int column = 0;
-  protected int line = 1;
-
-  protected boolean prevCharIsCR = false;
-  protected boolean prevCharIsLF = false;
-
-  protected java.io.Reader inputStream;
-
-  protected char[] nextCharBuf;
-  protected char[] buffer;
-  protected int maxNextCharInd = 0;
-  protected int nextCharInd = -1;
-  protected int inBuf = 0;
-  protected int tabSize = 8;
-
-  protected void setTabSize(int i) { tabSize = i; }
-  protected int getTabSize(int i) { return tabSize; }
-
-  protected void ExpandBuff(boolean wrapAround)
-  {
-    char[] newbuffer = new char[bufsize + 2048];
-    int newbufline[] = new int[bufsize + 2048];
-    int newbufcolumn[] = new int[bufsize + 2048];
-
-    try
-    {
-      if (wrapAround)
-      {
-        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-        System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos);
-        buffer = newbuffer;
-
-        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-        System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
-        bufline = newbufline;
-
-        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-        System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
-        bufcolumn = newbufcolumn;
-
-        bufpos += (bufsize - tokenBegin);
-    }
-    else
-    {
-        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-        buffer = newbuffer;
-
-        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-        bufline = newbufline;
-
-        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-        bufcolumn = newbufcolumn;
-
-        bufpos -= tokenBegin;
-      }
-    }
-    catch (Throwable t)
-    {
-      throw new Error(t.getMessage());
-    }
-
-    available = (bufsize += 2048);
-    tokenBegin = 0;
-  }
-
-  protected void FillBuff() throws java.io.IOException
-  {
-    int i;
-    if (maxNextCharInd == 4096)
-      maxNextCharInd = nextCharInd = 0;
-
-    try {
-      if ((i = inputStream.read(nextCharBuf, maxNextCharInd,
-                                          4096 - maxNextCharInd)) == -1)
-      {
-        inputStream.close();
-        throw new java.io.IOException();
-      }
-      else
-         maxNextCharInd += i;
-      return;
-    }
-    catch(java.io.IOException e) {
-      if (bufpos != 0)
-      {
-        --bufpos;
-        backup(0);
-      }
-      else
-      {
-        bufline[bufpos] = line;
-        bufcolumn[bufpos] = column;
-      }
-      throw e;
-    }
-  }
-
-  protected char ReadByte() throws java.io.IOException
-  {
-    if (++nextCharInd >= maxNextCharInd)
-      FillBuff();
-
-    return nextCharBuf[nextCharInd];
-  }
-
-/** @return starting character for token. */
-  public char BeginToken() throws java.io.IOException
-  {
-    if (inBuf > 0)
-    {
-      --inBuf;
-
-      if (++bufpos == bufsize)
-        bufpos = 0;
-
-      tokenBegin = bufpos;
-      return buffer[bufpos];
-    }
-
-    tokenBegin = 0;
-    bufpos = -1;
-
-    return readChar();
-  }
-
-  protected void AdjustBuffSize()
-  {
-    if (available == bufsize)
-    {
-      if (tokenBegin > 2048)
-      {
-        bufpos = 0;
-        available = tokenBegin;
-      }
-      else
-        ExpandBuff(false);
-    }
-    else if (available > tokenBegin)
-      available = bufsize;
-    else if ((tokenBegin - available) < 2048)
-      ExpandBuff(true);
-    else
-      available = tokenBegin;
-  }
-
-  protected void UpdateLineColumn(char c)
-  {
-    column++;
-
-    if (prevCharIsLF)
-    {
-      prevCharIsLF = false;
-      line += (column = 1);
-    }
-    else if (prevCharIsCR)
-    {
-      prevCharIsCR = false;
-      if (c == '\n')
-      {
-        prevCharIsLF = true;
-      }
-      else
-        line += (column = 1);
-    }
-
-    switch (c)
-    {
-      case '\r' :
-        prevCharIsCR = true;
-        break;
-      case '\n' :
-        prevCharIsLF = true;
-        break;
-      case '\t' :
-        column--;
-        column += (tabSize - (column % tabSize));
-        break;
-      default :
-        break;
-    }
-
-    bufline[bufpos] = line;
-    bufcolumn[bufpos] = column;
-  }
-
-/** Read a character. */
-  public char readChar() throws java.io.IOException
-  {
-    if (inBuf > 0)
-    {
-      --inBuf;
-
-      if (++bufpos == bufsize)
-        bufpos = 0;
-
-      return buffer[bufpos];
-    }
-
-    char c;
-
-    if (++bufpos == available)
-      AdjustBuffSize();
-
-    if ((buffer[bufpos] = c = ReadByte()) == '\\')
-    {
-      UpdateLineColumn(c);
-
-      int backSlashCnt = 1;
-
-      for (;;) // Read all the backslashes
-      {
-        if (++bufpos == available)
-          AdjustBuffSize();
-
-        try
-        {
-          if ((buffer[bufpos] = c = ReadByte()) != '\\')
-          {
-            UpdateLineColumn(c);
-            // found a non-backslash char.
-            if ((c == 'u') && ((backSlashCnt & 1) == 1))
-            {
-              if (--bufpos < 0)
-                bufpos = bufsize - 1;
-
-              break;
-            }
-
-            backup(backSlashCnt);
-            return '\\';
-          }
-        }
-        catch(java.io.IOException e)
-        {
-	  // We are returning one backslash so we should only backup (count-1)
-          if (backSlashCnt > 1)
-            backup(backSlashCnt-1);
-
-          return '\\';
-        }
-
-        UpdateLineColumn(c);
-        backSlashCnt++;
-      }
-
-      // Here, we have seen an odd number of backslash's followed by a 'u'
-      try
-      {
-        while ((c = ReadByte()) == 'u')
-          ++column;
-
-        buffer[bufpos] = c = (char)(hexval(c) << 12 |
-                                    hexval(ReadByte()) << 8 |
-                                    hexval(ReadByte()) << 4 |
-                                    hexval(ReadByte()));
-
-        column += 4;
-      }
-      catch(java.io.IOException e)
-      {
-        throw new Error("Invalid escape character at line " + line +
-                                         " column " + column + ".");
-      }
-
-      if (backSlashCnt == 1)
-        return c;
-      else
-      {
-        backup(backSlashCnt - 1);
-        return '\\';
-      }
-    }
-    else
-    {
-      UpdateLineColumn(c);
-      return c;
-    }
-  }
-
-  @Deprecated
-  /**
-   * @deprecated
-   * @see #getEndColumn
-   */
-  public int getColumn() {
-    return bufcolumn[bufpos];
-  }
-
-  @Deprecated
-  /**
-   * @deprecated
-   * @see #getEndLine
-   */
-  public int getLine() {
-    return bufline[bufpos];
-  }
-
-/** Get end column. */
-  public int getEndColumn() {
-    return bufcolumn[bufpos];
-  }
-
-/** Get end line. */
-  public int getEndLine() {
-    return bufline[bufpos];
-  }
-
-/** @return column of token start */
-  public int getBeginColumn() {
-    return bufcolumn[tokenBegin];
-  }
-
-/** @return line number of token start */
-  public int getBeginLine() {
-    return bufline[tokenBegin];
-  }
-
-/** Retreat. */
-  public void backup(int amount) {
-
-    inBuf += amount;
-    if ((bufpos -= amount) < 0)
-      bufpos += bufsize;
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.Reader dstream,
-                 int startline, int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    available = bufsize = buffersize;
-    buffer = new char[buffersize];
-    bufline = new int[buffersize];
-    bufcolumn = new int[buffersize];
-    nextCharBuf = new char[4096];
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.Reader dstream,
-                                        int startline, int startcolumn)
-  {
-    this(dstream, startline, startcolumn, 4096);
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.Reader dstream)
-  {
-    this(dstream, 1, 1, 4096);
-  }
-/** Reinitialise. */
-  public void ReInit(java.io.Reader dstream,
-                 int startline, int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    if (buffer == null || buffersize != buffer.length)
-    {
-      available = bufsize = buffersize;
-      buffer = new char[buffersize];
-      bufline = new int[buffersize];
-      bufcolumn = new int[buffersize];
-      nextCharBuf = new char[4096];
-    }
-    prevCharIsLF = prevCharIsCR = false;
-    tokenBegin = inBuf = maxNextCharInd = 0;
-    nextCharInd = bufpos = -1;
-  }
-
-/** Reinitialise. */
-  public void ReInit(java.io.Reader dstream,
-                                        int startline, int startcolumn)
-  {
-    ReInit(dstream, startline, startcolumn, 4096);
-  }
-
-/** Reinitialise. */
-  public void ReInit(java.io.Reader dstream)
-  {
-    ReInit(dstream, 1, 1, 4096);
-  }
-/** Constructor. */
-  public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,
-  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-    this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.InputStream dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,
-                        int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-    this(dstream, encoding, startline, startcolumn, 4096);
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.InputStream dstream, int startline,
-                        int startcolumn)
-  {
-    this(dstream, startline, startcolumn, 4096);
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-    this(dstream, encoding, 1, 1, 4096);
-  }
-
-/** Constructor. */
-  public JavaCharStream(java.io.InputStream dstream)
-  {
-    this(dstream, 1, 1, 4096);
-  }
-
-/** Reinitialise. */
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-    ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-/** Reinitialise. */
-  public void ReInit(java.io.InputStream dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
-  }
-/** Reinitialise. */
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-                     int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-    ReInit(dstream, encoding, startline, startcolumn, 4096);
-  }
-/** Reinitialise. */
-  public void ReInit(java.io.InputStream dstream, int startline,
-                     int startcolumn)
-  {
-    ReInit(dstream, startline, startcolumn, 4096);
-  }
-/** Reinitialise. */
-  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-    ReInit(dstream, encoding, 1, 1, 4096);
-  }
-
-/** Reinitialise. */
-  public void ReInit(java.io.InputStream dstream)
-  {
-    ReInit(dstream, 1, 1, 4096);
-  }
-
-  /** @return token image as String */
-  public String GetImage()
-  {
-    if (bufpos >= tokenBegin)
-      return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
-    else
-      return new String(buffer, tokenBegin, bufsize - tokenBegin) +
-                              new String(buffer, 0, bufpos + 1);
-  }
-
-  /** @return suffix */
-  public char[] GetSuffix(int len)
-  {
-    char[] ret = new char[len];
-
-    if ((bufpos + 1) >= len)
-      System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
-    else
-    {
-      System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
-                                                        len - bufpos - 1);
-      System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
-    }
-
-    return ret;
-  }
-
-  /** Set buffers back to null when finished. */
-  public void Done()
-  {
-    nextCharBuf = null;
-    buffer = null;
-    bufline = null;
-    bufcolumn = null;
-  }
-
-  /**
-   * Method to adjust line and column numbers for the start of a token.
-   */
-  public void adjustBeginLineColumn(int newLine, int newCol)
-  {
-    int start = tokenBegin;
-    int len;
-
-    if (bufpos >= tokenBegin)
-    {
-      len = bufpos - tokenBegin + inBuf + 1;
-    }
-    else
-    {
-      len = bufsize - tokenBegin + bufpos + 1 + inBuf;
-    }
-
-    int i = 0, j = 0, k = 0;
-    int nextColDiff = 0, columnDiff = 0;
-
-    while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
-    {
-      bufline[j] = newLine;
-      nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
-      bufcolumn[j] = newCol + columnDiff;
-      columnDiff = nextColDiff;
-      i++;
-    }
-
-    if (i < len)
-    {
-      bufline[j] = newLine++;
-      bufcolumn[j] = newCol + columnDiff;
-
-      while (i++ < len)
-      {
-        if (bufline[j = start % bufsize] != bufline[++start % bufsize])
-          bufline[j] = newLine++;
-        else
-          bufline[j] = newLine;
-      }
-    }
-
-    line = bufline[j];
-    column = bufcolumn[j];
-  }
-
-}
-/* JavaCC - OriginalChecksum=a998d62a33c8c380f8e4549b1a77ca0f (do not edit this line) */
+/* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 5.0 */
+/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
+package org.apache.jena.sparql.lang.arq ;
+
+/**
+ * An implementation of interface CharStream, where the stream is assumed to
+ * contain only ASCII characters (with java-like unicode escape processing).
+ */
+
+public
+class JavaCharStream
+{
+  /** Whether parser is static. */
+  public static final boolean staticFlag = false;
+
+  static final int hexval(char c) throws java.io.IOException {
+    switch(c)
+    {
+       case '0' :
+          return 0;
+       case '1' :
+          return 1;
+       case '2' :
+          return 2;
+       case '3' :
+          return 3;
+       case '4' :
+          return 4;
+       case '5' :
+          return 5;
+       case '6' :
+          return 6;
+       case '7' :
+          return 7;
+       case '8' :
+          return 8;
+       case '9' :
+          return 9;
+
+       case 'a' :
+       case 'A' :
+          return 10;
+       case 'b' :
+       case 'B' :
+          return 11;
+       case 'c' :
+       case 'C' :
+          return 12;
+       case 'd' :
+       case 'D' :
+          return 13;
+       case 'e' :
+       case 'E' :
+          return 14;
+       case 'f' :
+       case 'F' :
+          return 15;
+    }
+
+    throw new java.io.IOException(); // Should never come here
+  }
+
+/** Position in buffer. */
+  public int bufpos = -1;
+  int bufsize;
+  int available;
+  int tokenBegin;
+  protected int bufline[];
+  protected int bufcolumn[];
+
+  protected int column = 0;
+  protected int line = 1;
+
+  protected boolean prevCharIsCR = false;
+  protected boolean prevCharIsLF = false;
+
+  protected java.io.Reader inputStream;
+
+  protected char[] nextCharBuf;
+  protected char[] buffer;
+  protected int maxNextCharInd = 0;
+  protected int nextCharInd = -1;
+  protected int inBuf = 0;
+  protected int tabSize = 8;
+
+  protected void setTabSize(int i) { tabSize = i; }
+  protected int getTabSize(int i) { return tabSize; }
+
+  protected void ExpandBuff(boolean wrapAround)
+  {
+    char[] newbuffer = new char[bufsize + 2048];
+    int newbufline[] = new int[bufsize + 2048];
+    int newbufcolumn[] = new int[bufsize + 2048];
+
+    try
+    {
+      if (wrapAround)
+      {
+        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+        System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos);
+        buffer = newbuffer;
+
+        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+        System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
+        bufline = newbufline;
+
+        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+        System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
+        bufcolumn = newbufcolumn;
+
+        bufpos += (bufsize - tokenBegin);
+    }
+    else
+    {
+        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+        buffer = newbuffer;
+
+        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+        bufline = newbufline;
+
+        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+        bufcolumn = newbufcolumn;
+
+        bufpos -= tokenBegin;
+      }
+    }
+    catch (Throwable t)
+    {
+      throw new Error(t.getMessage());
+    }
+
+    available = (bufsize += 2048);
+    tokenBegin = 0;
+  }
+
+  protected void FillBuff() throws java.io.IOException
+  {
+    int i;
+    if (maxNextCharInd == 4096)
+      maxNextCharInd = nextCharInd = 0;
+
+    try {
+      if ((i = inputStream.read(nextCharBuf, maxNextCharInd,
+                                          4096 - maxNextCharInd)) == -1)
+      {
+        inputStream.close();
+        throw new java.io.IOException();
+      }
+      else
+         maxNextCharInd += i;
+      return;
+    }
+    catch(java.io.IOException e) {
+      if (bufpos != 0)
+      {
+        --bufpos;
+        backup(0);
+      }
+      else
+      {
+        bufline[bufpos] = line;
+        bufcolumn[bufpos] = column;
+      }
+      throw e;
+    }
+  }
+
+  protected char ReadByte() throws java.io.IOException
+  {
+    if (++nextCharInd >= maxNextCharInd)
+      FillBuff();
+
+    return nextCharBuf[nextCharInd];
+  }
+
+/** @return starting character for token. */
+  public char BeginToken() throws java.io.IOException
+  {
+    if (inBuf > 0)
+    {
+      --inBuf;
+
+      if (++bufpos == bufsize)
+        bufpos = 0;
+
+      tokenBegin = bufpos;
+      return buffer[bufpos];
+    }
+
+    tokenBegin = 0;
+    bufpos = -1;
+
+    return readChar();
+  }
+
+  protected void AdjustBuffSize()
+  {
+    if (available == bufsize)
+    {
+      if (tokenBegin > 2048)
+      {
+        bufpos = 0;
+        available = tokenBegin;
+      }
+      else
+        ExpandBuff(false);
+    }
+    else if (available > tokenBegin)
+      available = bufsize;
+    else if ((tokenBegin - available) < 2048)
+      ExpandBuff(true);
+    else
+      available = tokenBegin;
+  }
+
+  protected void UpdateLineColumn(char c)
+  {
+    column++;
+
+    if (prevCharIsLF)
+    {
+      prevCharIsLF = false;
+      line += (column = 1);
+    }
+    else if (prevCharIsCR)
+    {
+      prevCharIsCR = false;
+      if (c == '\n')
+      {
+        prevCharIsLF = true;
+      }
+      else
+        line += (column = 1);
+    }
+
+    switch (c)
+    {
+      case '\r' :
+        prevCharIsCR = true;
+        break;
+      case '\n' :
+        prevCharIsLF = true;
+        break;
+      case '\t' :
+        column--;
+        column += (tabSize - (column % tabSize));
+        break;
+      default :
+        break;
+    }
+
+    bufline[bufpos] = line;
+    bufcolumn[bufpos] = column;
+  }
+
+/** Read a character. */
+  public char readChar() throws java.io.IOException
+  {
+    if (inBuf > 0)
+    {
+      --inBuf;
+
+      if (++bufpos == bufsize)
+        bufpos = 0;
+
+      return buffer[bufpos];
+    }
+
+    char c;
+
+    if (++bufpos == available)
+      AdjustBuffSize();
+
+    if ((buffer[bufpos] = c = ReadByte()) == '\\')
+    {
+      UpdateLineColumn(c);
+
+      int backSlashCnt = 1;
+
+      for (;;) // Read all the backslashes
+      {
+        if (++bufpos == available)
+          AdjustBuffSize();
+
+        try
+        {
+          if ((buffer[bufpos] = c = ReadByte()) != '\\')
+          {
+            UpdateLineColumn(c);
+            // found a non-backslash char.
+            if ((c == 'u') && ((backSlashCnt & 1) == 1))
+            {
+              if (--bufpos < 0)
+                bufpos = bufsize - 1;
+
+              break;
+            }
+
+            backup(backSlashCnt);
+            return '\\';
+          }
+        }
+        catch(java.io.IOException e)
+        {
+	  // We are returning one backslash so we should only backup (count-1)
+          if (backSlashCnt > 1)
+            backup(backSlashCnt-1);
+
+          return '\\';
+        }
+
+        UpdateLineColumn(c);
+        backSlashCnt++;
+      }
+
+      // Here, we have seen an odd number of backslash's followed by a 'u'
+      try
+      {
+        while ((c = ReadByte()) == 'u')
+          ++column;
+
+        buffer[bufpos] = c = (char)(hexval(c) << 12 |
+                                    hexval(ReadByte()) << 8 |
+                                    hexval(ReadByte()) << 4 |
+                                    hexval(ReadByte()));
+
+        column += 4;
+      }
+      catch(java.io.IOException e)
+      {
+        throw new Error("Invalid escape character at line " + line +
+                                         " column " + column + ".");
+      }
+
+      if (backSlashCnt == 1)
+        return c;
+      else
+      {
+        backup(backSlashCnt - 1);
+        return '\\';
+      }
+    }
+    else
+    {
+      UpdateLineColumn(c);
+      return c;
+    }
+  }
+
+  @Deprecated
+  /**
+   * @deprecated
+   * @see #getEndColumn
+   */
+  public int getColumn() {
+    return bufcolumn[bufpos];
+  }
+
+  @Deprecated
+  /**
+   * @deprecated
+   * @see #getEndLine
+   */
+  public int getLine() {
+    return bufline[bufpos];
+  }
+
+/** Get end column. */
+  public int getEndColumn() {
+    return bufcolumn[bufpos];
+  }
+
+/** Get end line. */
+  public int getEndLine() {
+    return bufline[bufpos];
+  }
+
+/** @return column of token start */
+  public int getBeginColumn() {
+    return bufcolumn[tokenBegin];
+  }
+
+/** @return line number of token start */
+  public int getBeginLine() {
+    return bufline[tokenBegin];
+  }
+
+/** Retreat. */
+  public void backup(int amount) {
+
+    inBuf += amount;
+    if ((bufpos -= amount) < 0)
+      bufpos += bufsize;
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.Reader dstream,
+                 int startline, int startcolumn, int buffersize)
+  {
+    inputStream = dstream;
+    line = startline;
+    column = startcolumn - 1;
+
+    available = bufsize = buffersize;
+    buffer = new char[buffersize];
+    bufline = new int[buffersize];
+    bufcolumn = new int[buffersize];
+    nextCharBuf = new char[4096];
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.Reader dstream,
+                                        int startline, int startcolumn)
+  {
+    this(dstream, startline, startcolumn, 4096);
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.Reader dstream)
+  {
+    this(dstream, 1, 1, 4096);
+  }
+/** Reinitialise. */
+  public void ReInit(java.io.Reader dstream,
+                 int startline, int startcolumn, int buffersize)
+  {
+    inputStream = dstream;
+    line = startline;
+    column = startcolumn - 1;
+
+    if (buffer == null || buffersize != buffer.length)
+    {
+      available = bufsize = buffersize;
+      buffer = new char[buffersize];
+      bufline = new int[buffersize];
+      bufcolumn = new int[buffersize];
+      nextCharBuf = new char[4096];
+    }
+    prevCharIsLF = prevCharIsCR = false;
+    tokenBegin = inBuf = maxNextCharInd = 0;
+    nextCharInd = bufpos = -1;
+  }
+
+/** Reinitialise. */
+  public void ReInit(java.io.Reader dstream,
+                                        int startline, int startcolumn)
+  {
+    ReInit(dstream, startline, startcolumn, 4096);
+  }
+
+/** Reinitialise. */
+  public void ReInit(java.io.Reader dstream)
+  {
+    ReInit(dstream, 1, 1, 4096);
+  }
+/** Constructor. */
+  public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,
+  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+  {
+    this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.InputStream dstream, int startline,
+  int startcolumn, int buffersize)
+  {
+    this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,
+                        int startcolumn) throws java.io.UnsupportedEncodingException
+  {
+    this(dstream, encoding, startline, startcolumn, 4096);
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.InputStream dstream, int startline,
+                        int startcolumn)
+  {
+    this(dstream, startline, startcolumn, 4096);
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+  {
+    this(dstream, encoding, 1, 1, 4096);
+  }
+
+/** Constructor. */
+  public JavaCharStream(java.io.InputStream dstream)
+  {
+    this(dstream, 1, 1, 4096);
+  }
+
+/** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+  {
+    ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+  }
+
+/** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, int startline,
+  int startcolumn, int buffersize)
+  {
+    ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+  }
+/** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+                     int startcolumn) throws java.io.UnsupportedEncodingException
+  {
+    ReInit(dstream, encoding, startline, startcolumn, 4096);
+  }
+/** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, int startline,
+                     int startcolumn)
+  {
+    ReInit(dstream, startline, startcolumn, 4096);
+  }
+/** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+  {
+    ReInit(dstream, encoding, 1, 1, 4096);
+  }
+
+/** Reinitialise. */
+  public void ReInit(java.io.InputStream dstream)
+  {
+    ReInit(dstream, 1, 1, 4096);
+  }
+
+  /** @return token image as String */
+  public String GetImage()
+  {
+    if (bufpos >= tokenBegin)
+      return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
+    else
+      return new String(buffer, tokenBegin, bufsize - tokenBegin) +
+                              new String(buffer, 0, bufpos + 1);
+  }
+
+  /** @return suffix */
+  public char[] GetSuffix(int len)
+  {
+    char[] ret = new char[len];
+
+    if ((bufpos + 1) >= len)
+      System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
+    else
+    {
+      System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
+                                                        len - bufpos - 1);
+      System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
+    }
+
+    return ret;
+  }
+
+  /** Set buffers back to null when finished. */
+  public void Done()
+  {
+    nextCharBuf = null;
+    buffer = null;
+    bufline = null;
+    bufcolumn = null;
+  }
+
+  /**
+   * Method to adjust line and column numbers for the start of a token.
+   */
+  public void adjustBeginLineColumn(int newLine, int newCol)
+  {
+    int start = tokenBegin;
+    int len;
+
+    if (bufpos >= tokenBegin)
+    {
+      len = bufpos - tokenBegin + inBuf + 1;
+    }
+    else
+    {
+      len = bufsize - tokenBegin + bufpos + 1 + inBuf;
+    }
+
+    int i = 0, j = 0, k = 0;
+    int nextColDiff = 0, columnDiff = 0;
+
+    while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
+    {
+      bufline[j] = newLine;
+      nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
+      bufcolumn[j] = newCol + columnDiff;
+      columnDiff = nextColDiff;
+      i++;
+    }
+
+    if (i < len)
+    {
+      bufline[j] = newLine++;
+      bufcolumn[j] = newCol + columnDiff;
+
+      while (i++ < len)
+      {
+        if (bufline[j = start % bufsize] != bufline[++start % bufsize])
+          bufline[j] = newLine++;
+        else
+          bufline[j] = newLine;
+      }
+    }
+
+    line = bufline[j];
+    column = bufcolumn[j];
+  }
+
+}
+/* JavaCC - OriginalChecksum=b0062bbcf1b890f58413a4e69d4dc950 (do not edit this line) */

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ParseException.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ParseException.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ParseException.java
index cef35d8..b41e002 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ParseException.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ParseException.java
@@ -1,187 +1,187 @@
-/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */
-/* JavaCCOptions:KEEP_LINE_COL=null */
-package org.apache.jena.sparql.lang.arq ;
-
-/**
- * This exception is thrown when parse errors are encountered.
- * You can explicitly create objects of this exception type by
- * calling the method generateParseException in the generated
- * parser.
- *
- * You can modify this class to customize your error reporting
- * mechanisms so long as you retain the public fields.
- */
-public class ParseException extends Exception {
-
-  /**
-   * The version identifier for this Serializable class.
-   * Increment only if the <i>serialized</i> form of the
-   * class changes.
-   */
-  private static final long serialVersionUID = 1L;
-
-  /**
-   * This constructor is used by the method "generateParseException"
-   * in the generated parser.  Calling this constructor generates
-   * a new object of this type with the fields "currentToken",
-   * "expectedTokenSequences", and "tokenImage" set.
-   */
-  public ParseException(Token currentTokenVal,
-                        int[][] expectedTokenSequencesVal,
-                        String[] tokenImageVal
-                       )
-  {
-    super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal));
-    currentToken = currentTokenVal;
-    expectedTokenSequences = expectedTokenSequencesVal;
-    tokenImage = tokenImageVal;
-  }
-
-  /**
-   * The following constructors are for use by you for whatever
-   * purpose you can think of.  Constructing the exception in this
-   * manner makes the exception behave in the normal way - i.e., as
-   * documented in the class "Throwable".  The fields "errorToken",
-   * "expectedTokenSequences", and "tokenImage" do not contain
-   * relevant information.  The JavaCC generated code does not use
-   * these constructors.
-   */
-
-  public ParseException() {
-    super();
-  }
-
-  /** Constructor with message. */
-  public ParseException(String message) {
-    super(message);
-  }
-
-
-  /**
-   * This is the last token that has been consumed successfully.  If
-   * this object has been created due to a parse error, the token
-   * followng this token will (therefore) be the first error token.
-   */
-  public Token currentToken;
-
-  /**
-   * Each entry in this array is an array of integers.  Each array
-   * of integers represents a sequence of tokens (by their ordinal
-   * values) that is expected at this point of the parse.
-   */
-  public int[][] expectedTokenSequences;
-
-  /**
-   * This is a reference to the "tokenImage" array of the generated
-   * parser within which the parse error occurred.  This array is
-   * defined in the generated ...Constants interface.
-   */
-  public String[] tokenImage;
-
-  /**
-   * It uses "currentToken" and "expectedTokenSequences" to generate a parse
-   * error message and returns it.  If this object has been created
-   * due to a parse error, and you do not catch it (it gets thrown
-   * from the parser) the correct error message
-   * gets displayed.
-   */
-  private static String initialise(Token currentToken,
-                           int[][] expectedTokenSequences,
-                           String[] tokenImage) {
-    String eol = System.getProperty("line.separator", "\n");
-    StringBuffer expected = new StringBuffer();
-    int maxSize = 0;
-    for (int i = 0; i < expectedTokenSequences.length; i++) {
-      if (maxSize < expectedTokenSequences[i].length) {
-        maxSize = expectedTokenSequences[i].length;
-      }
-      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
-        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');
-      }
-      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
-        expected.append("...");
-      }
-      expected.append(eol).append("    ");
-    }
-    String retval = "Encountered \"";
-    Token tok = currentToken.next;
-    for (int i = 0; i < maxSize; i++) {
-      if (i != 0) retval += " ";
-      if (tok.kind == 0) {
-        retval += tokenImage[0];
-        break;
-      }
-      retval += " " + tokenImage[tok.kind];
-      retval += " \"";
-      retval += add_escapes(tok.image);
-      retval += " \"";
-      tok = tok.next;
-    }
-    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
-    retval += "." + eol;
-    if (expectedTokenSequences.length == 1) {
-      retval += "Was expecting:" + eol + "    ";
-    } else {
-      retval += "Was expecting one of:" + eol + "    ";
-    }
-    retval += expected.toString();
-    return retval;
-  }
-
-  /**
-   * The end of line string for this machine.
-   */
-  protected String eol = System.getProperty("line.separator", "\n");
-
-  /**
-   * Used to convert raw characters to their escaped version
-   * when these raw version cannot be used as part of an ASCII
-   * string literal.
-   */
-  static String add_escapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-}
-/* JavaCC - OriginalChecksum=15a9c1dcf732eb71243f022768ba6725 (do not edit this line) */
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */
+/* JavaCCOptions:KEEP_LINE_COL=null */
+package org.apache.jena.sparql.lang.arq ;
+
+/**
+ * This exception is thrown when parse errors are encountered.
+ * You can explicitly create objects of this exception type by
+ * calling the method generateParseException in the generated
+ * parser.
+ *
+ * You can modify this class to customize your error reporting
+ * mechanisms so long as you retain the public fields.
+ */
+public class ParseException extends Exception {
+
+  /**
+   * The version identifier for this Serializable class.
+   * Increment only if the <i>serialized</i> form of the
+   * class changes.
+   */
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * This constructor is used by the method "generateParseException"
+   * in the generated parser.  Calling this constructor generates
+   * a new object of this type with the fields "currentToken",
+   * "expectedTokenSequences", and "tokenImage" set.
+   */
+  public ParseException(Token currentTokenVal,
+                        int[][] expectedTokenSequencesVal,
+                        String[] tokenImageVal
+                       )
+  {
+    super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal));
+    currentToken = currentTokenVal;
+    expectedTokenSequences = expectedTokenSequencesVal;
+    tokenImage = tokenImageVal;
+  }
+
+  /**
+   * The following constructors are for use by you for whatever
+   * purpose you can think of.  Constructing the exception in this
+   * manner makes the exception behave in the normal way - i.e., as
+   * documented in the class "Throwable".  The fields "errorToken",
+   * "expectedTokenSequences", and "tokenImage" do not contain
+   * relevant information.  The JavaCC generated code does not use
+   * these constructors.
+   */
+
+  public ParseException() {
+    super();
+  }
+
+  /** Constructor with message. */
+  public ParseException(String message) {
+    super(message);
+  }
+
+
+  /**
+   * This is the last token that has been consumed successfully.  If
+   * this object has been created due to a parse error, the token
+   * followng this token will (therefore) be the first error token.
+   */
+  public Token currentToken;
+
+  /**
+   * Each entry in this array is an array of integers.  Each array
+   * of integers represents a sequence of tokens (by their ordinal
+   * values) that is expected at this point of the parse.
+   */
+  public int[][] expectedTokenSequences;
+
+  /**
+   * This is a reference to the "tokenImage" array of the generated
+   * parser within which the parse error occurred.  This array is
+   * defined in the generated ...Constants interface.
+   */
+  public String[] tokenImage;
+
+  /**
+   * It uses "currentToken" and "expectedTokenSequences" to generate a parse
+   * error message and returns it.  If this object has been created
+   * due to a parse error, and you do not catch it (it gets thrown
+   * from the parser) the correct error message
+   * gets displayed.
+   */
+  private static String initialise(Token currentToken,
+                           int[][] expectedTokenSequences,
+                           String[] tokenImage) {
+    String eol = System.getProperty("line.separator", "\n");
+    StringBuffer expected = new StringBuffer();
+    int maxSize = 0;
+    for (int i = 0; i < expectedTokenSequences.length; i++) {
+      if (maxSize < expectedTokenSequences[i].length) {
+        maxSize = expectedTokenSequences[i].length;
+      }
+      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
+        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');
+      }
+      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
+        expected.append("...");
+      }
+      expected.append(eol).append("    ");
+    }
+    String retval = "Encountered \"";
+    Token tok = currentToken.next;
+    for (int i = 0; i < maxSize; i++) {
+      if (i != 0) retval += " ";
+      if (tok.kind == 0) {
+        retval += tokenImage[0];
+        break;
+      }
+      retval += " " + tokenImage[tok.kind];
+      retval += " \"";
+      retval += add_escapes(tok.image);
+      retval += " \"";
+      tok = tok.next;
+    }
+    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
+    retval += "." + eol;
+    if (expectedTokenSequences.length == 1) {
+      retval += "Was expecting:" + eol + "    ";
+    } else {
+      retval += "Was expecting one of:" + eol + "    ";
+    }
+    retval += expected.toString();
+    return retval;
+  }
+
+  /**
+   * The end of line string for this machine.
+   */
+  protected String eol = System.getProperty("line.separator", "\n");
+
+  /**
+   * Used to convert raw characters to their escaped version
+   * when these raw version cannot be used as part of an ASCII
+   * string literal.
+   */
+  static String add_escapes(String str) {
+      StringBuffer retval = new StringBuffer();
+      char ch;
+      for (int i = 0; i < str.length(); i++) {
+        switch (str.charAt(i))
+        {
+           case 0 :
+              continue;
+           case '\b':
+              retval.append("\\b");
+              continue;
+           case '\t':
+              retval.append("\\t");
+              continue;
+           case '\n':
+              retval.append("\\n");
+              continue;
+           case '\f':
+              retval.append("\\f");
+              continue;
+           case '\r':
+              retval.append("\\r");
+              continue;
+           case '\"':
+              retval.append("\\\"");
+              continue;
+           case '\'':
+              retval.append("\\\'");
+              continue;
+           case '\\':
+              retval.append("\\\\");
+              continue;
+           default:
+              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+                 String s = "0000" + Integer.toString(ch, 16);
+                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+              } else {
+                 retval.append(ch);
+              }
+              continue;
+        }
+      }
+      return retval.toString();
+   }
+
+}
+/* JavaCC - OriginalChecksum=48a48010f2f271416e60bbfb8cf25e4b (do not edit this line) */

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/Token.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/Token.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/Token.java
index cd93539..b4dd76f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/Token.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/Token.java
@@ -128,4 +128,4 @@ public class Token implements java.io.Serializable {
   }
 
 }
-/* JavaCC - OriginalChecksum=335d1922781852977208d5cdca0fc164 (do not edit this line) */
+/* JavaCC - OriginalChecksum=d9b4c8c9332fa3054a004615fdb22b89 (do not edit this line) */

http://git-wip-us.apache.org/repos/asf/jena/blob/b93e3898/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/TokenMgrError.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/TokenMgrError.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/TokenMgrError.java
index 1a90eae..11bdbb0 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/TokenMgrError.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/TokenMgrError.java
@@ -144,4 +144,4 @@ public class TokenMgrError extends Error
     this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
   }
 }
-/* JavaCC - OriginalChecksum=40dd5a50628172020d125efba41c4b63 (do not edit this line) */
+/* JavaCC - OriginalChecksum=8f945f6081b6c05a3722e27c60c90cda (do not edit this line) */