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/17 17:09:40 UTC

[01/50] [abbrv] jena git commit: create new Template for SPARQL_11

Repository: jena
Updated Branches:
  refs/heads/JENA-491-construct-quads c8528b7b9 -> d828c378a


http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/QuadAcc.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/QuadAcc.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/QuadAcc.java
index bf97295..5728f24 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/QuadAcc.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/QuadAcc.java
@@ -18,12 +18,13 @@
 
 package org.apache.jena.sparql.modify.request;
 
-import java.util.ArrayList ;
-import java.util.Collections ;
-import java.util.List ;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 
-import org.apache.jena.atlas.lib.SinkToCollection ;
-import org.apache.jena.sparql.core.Quad ;
+import org.apache.jena.atlas.lib.SinkToCollection;
+import org.apache.jena.sparql.core.BasicPattern;
+import org.apache.jena.sparql.core.Quad;
 
 /** Accumulate quads (including allowing variables) during parsing. */
 public class QuadAcc extends QuadAccSink
@@ -60,5 +61,13 @@ public class QuadAcc extends QuadAccSink
         QuadAcc acc = (QuadAcc)other ;
         return quads.equals(acc.quads) ; 
     }
+    
+    public BasicPattern getBGP(){
+    	BasicPattern bgp = new BasicPattern();
+    	for(Quad qd: this.quadsView){
+    		bgp.add(qd.asTriple());
+    	}
+    	return bgp;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
index a1b65fd..1b08876 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
@@ -55,7 +55,7 @@ public class FmtTemplate extends FormatterBase
         out.incIndent(INDENT) ;
         out.pad() ;
     
-        formatTriples(template.getBGP()) ;
+        formatQuads(template.getQuads()) ;
         
         out.decIndent(INDENT) ;
         out.print("}") ;

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FormatterBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FormatterBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FormatterBase.java
index fddb3a2..3eb26fc 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FormatterBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FormatterBase.java
@@ -17,11 +17,14 @@
  */
 
 package org.apache.jena.sparql.serializer;
-import org.apache.jena.atlas.io.IndentedWriter ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.graph.Triple ;
-import org.apache.jena.sparql.core.BasicPattern ;
-import org.apache.jena.sparql.util.FmtUtils ;
+import java.util.List;
+
+import org.apache.jena.atlas.io.IndentedWriter;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.sparql.core.BasicPattern;
+import org.apache.jena.sparql.core.Quad;
+import org.apache.jena.sparql.util.FmtUtils;
 
 public abstract class FormatterBase
 {
@@ -43,6 +46,11 @@ public abstract class FormatterBase
         FmtUtils.formatPattern(out, pattern, context) ;
     }
     
+    protected void formatQuads(List<Quad> quads)
+    {
+        FmtUtils.formatQuads(out, quads, context) ;
+    }
+    
     protected void formatTriple(Triple tp)
     {
         out.print(slotToString(tp.getSubject())) ;
@@ -51,7 +59,7 @@ public abstract class FormatterBase
         out.print(" ") ;
         out.print(slotToString(tp.getObject())) ;
     }
-    
+        
     protected String slotToString(Node n)
     {
         return FmtUtils.stringForNode(n, context) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
index 61c8f96..bdd3142 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
@@ -18,29 +18,31 @@
 
 package org.apache.jena.sparql.syntax;
 
-import java.util.Collection ;
-import java.util.List ;
-import java.util.Map ;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
 
-import org.apache.jena.graph.Node ;
-import org.apache.jena.graph.Triple ;
-import org.apache.jena.sparql.core.BasicPattern ;
-import org.apache.jena.sparql.engine.binding.Binding ;
-import org.apache.jena.sparql.modify.TemplateLib ;
-import org.apache.jena.sparql.serializer.FormatterTemplate ;
-import org.apache.jena.sparql.util.Iso ;
-import org.apache.jena.sparql.util.NodeIsomorphismMap ;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.sparql.core.Quad;
+import org.apache.jena.sparql.engine.binding.Binding;
+import org.apache.jena.sparql.modify.TemplateLib;
+import org.apache.jena.sparql.modify.request.QuadAcc;
+import org.apache.jena.sparql.serializer.FormatterTemplate;
+import org.apache.jena.sparql.util.Iso;
+import org.apache.jena.sparql.util.NodeIsomorphismMap;
 
 /** Triples template. */
 
 public class Template 
 {
     static final int HashTemplateGroup     = 0xB1 ;
-    private final BasicPattern bgp ;
+    private final QuadAcc qp ;
     
-    public Template(BasicPattern bgp)
+    public Template(QuadAcc qp)
     { 
-        this.bgp = bgp ;
+        this.qp = qp ;
     }
 
 //    public void addTriple(Triple t) { quads.addTriple(t) ; }
@@ -53,13 +55,21 @@ public class Template
 //    { throw new ARQException("Triples-only collector") ; }
 
 
-    public BasicPattern getBGP()        { return bgp ; }
-    public List<Triple> getTriples()    { return bgp.getList() ; }
+//    public BasicPattern getBGP()        { return bgp ; }
+    public List<Triple> getTriples()
+    { 
+    	List<Triple> triples = new ArrayList<Triple>();
+    	for(Quad q: qp.getQuads()){
+    		triples.add(q.asTriple());
+    	}
+    	return triples;
+    }
+    public List<Quad> getQuads()		{ return qp.getQuads() ; }
     // -------------------------
 
     public void subst(Collection<Triple> acc, Map<Node, Node> bNodeMap, Binding b)
     {
-        for ( Triple t : bgp.getList() )
+        for ( Triple t : getTriples() )
         {
             t = TemplateLib.subst(t, b, bNodeMap) ;
             acc.add(t) ;
@@ -72,17 +82,18 @@ public class Template
     { 
         // BNode invariant hashCode. 
         int calcHashCode = Template.HashTemplateGroup ;
-        for ( Triple t : bgp.getList() )
-            calcHashCode ^=  hash(t) ^ calcHashCode<<1 ; 
+        for ( Quad q : qp.getQuads() )
+            calcHashCode ^=  hash(q) ^ calcHashCode<<1 ; 
         return calcHashCode ;
     }
     
-    private static int hash(Triple triple)
+    private static int hash(Quad quad)
     {
         int hash = 0 ;
-        hash = hashNode(triple.getSubject())   ^ hash<<1 ;
-        hash = hashNode(triple.getPredicate()) ^ hash<<1 ;
-        hash = hashNode(triple.getObject())    ^ hash<<1 ;
+        hash = hashNode(quad.getSubject())   ^ hash<<1 ;
+        hash = hashNode(quad.getPredicate()) ^ hash<<1 ;
+        hash = hashNode(quad.getObject())    ^ hash<<1 ;
+        hash = hashNode(quad.getGraph())     ^ hash<<1 ;
         return hash ;
     }
 
@@ -96,15 +107,15 @@ public class Template
     {
         if ( ! ( temp2 instanceof Template) ) return false ;
         Template tg2 = (Template)temp2 ;
-        List<Triple> list1 = this.bgp.getList() ;
-        List<Triple> list2 = tg2.bgp.getList() ;
+        List<Quad> list1 = this.getQuads() ;
+        List<Quad> list2 = tg2.getQuads() ;
         if ( list1.size() != list2.size() ) return false ;
         
         for ( int i = 0 ; i < list1.size() ; i++ )
         {
-            Triple t1 = list1.get(i) ;
-            Triple t2 = list2.get(i) ;
-            Iso.tripleIso(t1, t2, labelMap) ;
+            Quad q1 = list1.get(i) ;
+            Quad q2 = list2.get(i) ;
+            Iso.quadIso(q1, q2, labelMap) ;
         }
         return true ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/jena-arq/src/main/java/org/apache/jena/sparql/util/FmtUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/FmtUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/FmtUtils.java
index aa1500c..6af1859 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/FmtUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/FmtUtils.java
@@ -18,28 +18,29 @@
 
 package org.apache.jena.sparql.util;
 
-import java.util.Locale ;
-import java.util.regex.Pattern ;
-
-import org.apache.jena.atlas.io.IndentedWriter ;
-import org.apache.jena.atlas.logging.Log ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.graph.Node_Literal ;
-import org.apache.jena.graph.Triple ;
-import org.apache.jena.iri.IRI ;
-import org.apache.jena.iri.IRIFactory ;
-import org.apache.jena.iri.IRIRelativize ;
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.rdf.model.RDFNode ;
-import org.apache.jena.rdf.model.Resource ;
-import org.apache.jena.shared.PrefixMapping ;
-import org.apache.jena.sparql.ARQConstants ;
-import org.apache.jena.sparql.ARQInternalErrorException ;
-import org.apache.jena.sparql.core.BasicPattern ;
-import org.apache.jena.sparql.core.Prologue ;
-import org.apache.jena.sparql.core.Quad ;
-import org.apache.jena.sparql.serializer.SerializationContext ;
-import org.apache.jena.vocabulary.XSD ;
+import java.util.List;
+import java.util.Locale;
+import java.util.regex.Pattern;
+
+import org.apache.jena.atlas.io.IndentedWriter;
+import org.apache.jena.atlas.logging.Log;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Node_Literal;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.iri.IRI;
+import org.apache.jena.iri.IRIFactory;
+import org.apache.jena.iri.IRIRelativize;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.RDFNode;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.shared.PrefixMapping;
+import org.apache.jena.sparql.ARQConstants;
+import org.apache.jena.sparql.ARQInternalErrorException;
+import org.apache.jena.sparql.core.BasicPattern;
+import org.apache.jena.sparql.core.Prologue;
+import org.apache.jena.sparql.core.Quad;
+import org.apache.jena.sparql.serializer.SerializationContext;
+import org.apache.jena.vocabulary.XSD;
 
 /** Presentation forms of various kinds of objects.
  *  Beware that bNodes are abbreviated to _:b0 etc.
@@ -159,6 +160,24 @@ public class FmtUtils
         }
     }
     
+    public static void formatQuads(IndentedWriter out, List<Quad> quads, SerializationContext sCxt)
+    {
+        StringBuilder buffer = new StringBuilder() ;  
+        boolean first = true ;
+        for (Quad quad : quads )
+        {
+            if ( ! first )
+                buffer.append("\n") ;
+            stringForQuad(buffer, quad, sCxt) ;
+            buffer.append(" ." ) ;
+            out.print(buffer.toString()) ;
+            buffer.setLength(0) ;
+            first = false ;
+        }
+    }
+    
+    
+    
     public static String stringForObject(Object obj)
     {
         if ( obj == null )


[21/50] [abbrv] jena git commit: Merge pull request #10 from apache/master

Posted by an...@apache.org.
Merge pull request #10 from apache/master

pull master 2015-07-28

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 1ce04970fdf72c1b5bf2d209349ad4fec4390b65
Parents: 6e4379e 290c663
Author: confidencesun <co...@gmail.com>
Authored: Tue Jul 28 16:40:08 2015 -0300
Committer: confidencesun <co...@gmail.com>
Committed: Tue Jul 28 16:40:08 2015 -0300

----------------------------------------------------------------------
 apache-jena-libs/pom.xml                        |  6 +--
 apache-jena-osgi/jena-osgi/pom.xml              | 12 ++---
 apache-jena-osgi/pom.xml                        |  4 +-
 apache-jena/bin/tdbloader2common                | 30 +++++++++---
 apache-jena/bin/tdbloader2index                 | 51 +++++++++++---------
 apache-jena/pom.xml                             | 25 +++++-----
 jena-arq/pom.xml                                | 12 ++---
 jena-base/pom.xml                               |  6 +--
 jena-core/pom.xml                               | 13 +++--
 jena-csv/pom.xml                                |  8 +--
 jena-elephas/jena-elephas-common/pom.xml        |  2 +-
 jena-elephas/jena-elephas-io/pom.xml            |  2 +-
 jena-elephas/jena-elephas-mapreduce/pom.xml     |  2 +-
 jena-elephas/jena-elephas-stats/pom.xml         |  2 +-
 jena-elephas/pom.xml                            |  6 +--
 .../jena/example/helloworld/HelloWorld.java     |  8 +--
 .../jena/example/pizza/PizzaSparqlNoInf.java    | 16 +++---
 jena-extras/jena-querybuilder/pom.xml           |  2 +-
 jena-extras/pom.xml                             |  6 +--
 jena-fuseki1/pom.xml                            | 18 +++----
 jena-fuseki2/apache-jena-fuseki/pom.xml         |  4 +-
 jena-fuseki2/jena-fuseki-core/pom.xml           | 14 +++---
 jena-fuseki2/jena-fuseki-server/pom.xml         |  2 +-
 jena-fuseki2/jena-fuseki-war/pom.xml            |  2 +-
 jena-fuseki2/pom.xml                            |  4 +-
 jena-iri/pom.xml                                |  4 +-
 jena-jdbc/jena-jdbc-core/pom.xml                |  4 +-
 jena-jdbc/jena-jdbc-driver-bundle/pom.xml       | 20 ++++----
 jena-jdbc/jena-jdbc-driver-mem/pom.xml          |  6 +--
 jena-jdbc/jena-jdbc-driver-remote/pom.xml       | 10 ++--
 jena-jdbc/jena-jdbc-driver-tdb/pom.xml          | 10 ++--
 jena-jdbc/pom.xml                               |  4 +-
 jena-maven-tools/pom.xml                        |  6 +--
 jena-parent/pom.xml                             |  2 +-
 jena-permissions/pom.xml                        |  4 +-
 jena-sdb/pom.xml                                | 12 ++---
 jena-shaded-guava/pom.xml                       |  4 +-
 jena-spatial/pom.xml                            |  8 +--
 jena-tdb/pom.xml                                | 12 ++---
 jena-text/pom.xml                               |  8 +--
 pom.xml                                         |  2 +-
 41 files changed, 197 insertions(+), 176 deletions(-)
----------------------------------------------------------------------



[03/50] [abbrv] jena git commit: create new Template for SPARQL_11

Posted by an...@apache.org.
create new Template for SPARQL_11

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 2d09a7dfe84539ecdafc9f99247019d0ddeefd5e
Parents: ca1dc7b
Author: confidencesun <co...@gmail.com>
Authored: Thu Jun 11 22:56:15 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Thu Jun 11 22:56:15 2015 +0800

----------------------------------------------------------------------
 jena-arq/Grammar/arq.jj                         |    8 +-
 jena-arq/Grammar/master.jj                      |   56 +-
 jena-arq/Grammar/sparql_11.jj                   |    8 +-
 .../apache/jena/sparql/lang/ParserSPARQL11.java |    2 +-
 .../apache/jena/sparql/lang/arq/ARQParser.java  |   21 +-
 .../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_10/SPARQLParser10.java   |   80 +-
 .../sparql/lang/sparql_11/JavaCharStream.java   | 1234 ++++++++---------
 .../sparql/lang/sparql_11/ParseException.java   |  374 +++---
 .../sparql/lang/sparql_11/SPARQLParser11.java   |    8 +-
 .../lang/sparql_11/SPARQLParser11Constants.java | 1224 ++++++++---------
 .../jena/sparql/lang/sparql_11/Token.java       |    2 +-
 .../sparql/lang/sparql_11/TokenMgrError.java    |    2 +-
 .../jena/sparql/modify/request/QuadAcc.java     |   19 +-
 .../jena/sparql/serializer/FmtTemplate.java     |    2 +-
 .../jena/sparql/serializer/FormatterBase.java   |   20 +-
 .../org/apache/jena/sparql/syntax/Template.java |   67 +-
 .../org/apache/jena/sparql/util/FmtUtils.java   |   63 +-
 22 files changed, 3087 insertions(+), 2981 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/jena-arq/Grammar/arq.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/arq.jj b/jena-arq/Grammar/arq.jj
index 62ab2cb..2f80284 100644
--- a/jena-arq/Grammar/arq.jj
+++ b/jena-arq/Grammar/arq.jj
@@ -129,7 +129,7 @@ void SelectClause() : { Var v ; Expr expr ; Node n ; }
   { allowAggregatesInExpressions = false ; }
 }
 void ConstructQuery() : { Template t ;
-                          TripleCollectorBGP acc = new TripleCollectorBGP() ; }
+                          QuadAcc acc = new QuadAcc() ; }
 {
  <CONSTRUCT>
    { getQuery().setQueryConstructType() ; }
@@ -147,7 +147,7 @@ void ConstructQuery() : { Template t ;
     <RBRACE>
     SolutionModifier()
     {
-      t = new Template(acc.getBGP()) ;
+      t = new Template(acc) ;
       getQuery().setConstructTemplate(t) ;
       ElementPathBlock epb = new ElementPathBlock(acc.getBGP()) ;
       ElementGroup elg = new ElementGroup() ;
@@ -780,8 +780,8 @@ ExprList ExpressionList() : { Expr expr = null ; ExprList args = new ExprList()
   )
   { return args ; }
 }
-Template ConstructTemplate() : { TripleCollectorBGP acc = new TripleCollectorBGP();
-                                 Template t = new Template(acc.getBGP()) ; }
+Template ConstructTemplate() : { QuadAcc acc = new QuadAcc() ;
+                                 Template t = new Template(acc) ; }
 {
     { setInConstructTemplate(true) ; }
   <LBRACE>

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/jena-arq/Grammar/master.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/master.jj b/jena-arq/Grammar/master.jj
index a8a189e..2de8bba 100644
--- a/jena-arq/Grammar/master.jj
+++ b/jena-arq/Grammar/master.jj
@@ -233,19 +233,44 @@ void SelectClause() : {  Var v ; Expr expr ; Node n ; }
 #include  "json-extra.jj"
 #endif
 
+#ifdef ARQ
 void ConstructQuery() : { Template t ; 
-                          TripleCollectorBGP acc = new TripleCollectorBGP() ; }
-{
-// #ifndef ARQ
-//   <CONSTRUCT>
-//      { getQuery().setQueryConstructType() ; }
-//   t = ConstructTemplate() 
-//     { getQuery().setConstructTemplate(t) ; }
-//   ( DatasetClause() )*
-//   WhereClause()
-//   SolutionModifier()
-// #else
-
+                          QuadAcc acc = new QuadAcc() ; }
+{
+ <CONSTRUCT>
+   { getQuery().setQueryConstructType() ; }
+ (
+    // Full form.
+    t = ConstructTemplate() 
+      { getQuery().setConstructTemplate(t) ; }
+    ( DatasetClause() )*
+    WhereClause()
+    SolutionModifier()
+ |
+    // Abbreviated CONSTRUCT WHERE {}
+    ( DatasetClause() )*
+    <WHERE>
+    // Should have been "ConstructTemplate()"
+    <LBRACE>  
+    (TriplesTemplate(acc))?
+    <RBRACE>
+    SolutionModifier()
+    { 
+      t = new Template(acc) ;
+      getQuery().setConstructTemplate(t) ;
+      // Create a query in the same shape as the query created by writing out in full.
+      ElementPathBlock epb = new ElementPathBlock(acc.getBGP()) ;
+      ElementGroup elg = new ElementGroup() ;
+      elg.addElement(epb) ;
+      getQuery().setQueryPattern(elg) ;
+    }
+ )
+//#endif
+}
+#else
+void ConstructQuery() : { Template t ; 
+                          QuadAcc acc = new QuadAcc() ; }
+{
  <CONSTRUCT>
    { getQuery().setQueryConstructType() ; }
  (
@@ -265,7 +290,7 @@ void ConstructQuery() : { Template t ;
     <RBRACE>
     SolutionModifier()
     { 
-      t = new Template(acc.getBGP()) ;
+      t = new Template(acc) ;
       getQuery().setConstructTemplate(t) ;
       // Create a query in the same shape as the query created by writing out in full.
       ElementPathBlock epb = new ElementPathBlock(acc.getBGP()) ;
@@ -276,6 +301,7 @@ void ConstructQuery() : { Template t ;
  )
 //#endif
 }
+#endif
 
 void DescribeQuery() : { Node n ; }
 {
@@ -1059,8 +1085,8 @@ ExprList ExpressionList() : { Expr expr = null ; ExprList args = new ExprList()
 
 // -------- Construct patterns
 
-Template ConstructTemplate() : { TripleCollectorBGP acc = new TripleCollectorBGP(); 
-                                 Template t = new Template(acc.getBGP()) ; }
+Template ConstructTemplate() : { QuadAcc acc = new QuadAcc() ; 
+                                 Template t = new Template(acc) ; }
 {
     { setInConstructTemplate(true) ; }
   <LBRACE> 

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/jena-arq/Grammar/sparql_11.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/sparql_11.jj b/jena-arq/Grammar/sparql_11.jj
index df2b3b8..e82bc3e 100644
--- a/jena-arq/Grammar/sparql_11.jj
+++ b/jena-arq/Grammar/sparql_11.jj
@@ -121,7 +121,7 @@ void SelectClause() : { Var v ; Expr expr ; Node n ; }
   { allowAggregatesInExpressions = false ; }
 }
 void ConstructQuery() : { Template t ;
-                          TripleCollectorBGP acc = new TripleCollectorBGP() ; }
+                          QuadAcc acc = new QuadAcc() ; }
 {
  <CONSTRUCT>
    { getQuery().setQueryConstructType() ; }
@@ -139,7 +139,7 @@ void ConstructQuery() : { Template t ;
     <RBRACE>
     SolutionModifier()
     {
-      t = new Template(acc.getBGP()) ;
+      t = new Template(acc) ;
       getQuery().setConstructTemplate(t) ;
       ElementPathBlock epb = new ElementPathBlock(acc.getBGP()) ;
       ElementGroup elg = new ElementGroup() ;
@@ -729,8 +729,8 @@ ExprList ExpressionList() : { Expr expr = null ; ExprList args = new ExprList()
   )
   { return args ; }
 }
-Template ConstructTemplate() : { TripleCollectorBGP acc = new TripleCollectorBGP();
-                                 Template t = new Template(acc.getBGP()) ; }
+Template ConstructTemplate() : { QuadAcc acc = new QuadAcc() ;
+                                 Template t = new Template(acc) ; }
 {
     { setInConstructTemplate(true) ; }
   <LBRACE>

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/jena-arq/src/main/java/org/apache/jena/sparql/lang/ParserSPARQL11.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/ParserSPARQL11.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/ParserSPARQL11.java
index a459d32..4182b21 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/ParserSPARQL11.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/ParserSPARQL11.java
@@ -97,7 +97,7 @@ public class ParserSPARQL11 extends SPARQLParser
             action.exec(parser) ;
         }
         catch (org.apache.jena.sparql.lang.sparql_11.ParseException ex)
-        { 
+        {   
             throw new QueryParseException(ex.getMessage(),
                                           ex.currentToken.beginLine,
                                           ex.currentToken.beginColumn

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/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 9132d85..77c79e1 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
@@ -11,7 +11,7 @@ import org.apache.jena.update.* ;
 import org.apache.jena.sparql.modify.request.* ;
 
 @SuppressWarnings("all")
-public class ARQParser extends ARQParserBase {
+public class ARQParser extends ARQParserBase implements ARQParserConstants {
     boolean allowAggregatesInExpressions = false ;
 
   final public void QueryUnit() throws ParseException {
@@ -507,7 +507,7 @@ public class ARQParser extends ARQParserBase {
 
   final public void ConstructQuery() throws ParseException {
                           Template t ;
-                          TripleCollectorBGP acc = new TripleCollectorBGP() ;
+                          QuadAcc acc = new QuadAcc() ;
     jj_consume_token(CONSTRUCT);
      getQuery().setQueryConstructType() ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -579,7 +579,7 @@ public class ARQParser extends ARQParserBase {
       }
       jj_consume_token(RBRACE);
       SolutionModifier();
-      t = new Template(acc.getBGP()) ;
+      t = new Template(acc) ;
       getQuery().setConstructTemplate(t) ;
       ElementPathBlock epb = new ElementPathBlock(acc.getBGP()) ;
       ElementGroup elg = new ElementGroup() ;
@@ -2699,8 +2699,8 @@ public class ARQParser extends ARQParserBase {
   }
 
   final public Template ConstructTemplate() throws ParseException {
-                                 TripleCollectorBGP acc = new TripleCollectorBGP();
-                                 Template t = new Template(acc.getBGP()) ;
+                                 QuadAcc acc = new QuadAcc() ;
+                                 Template t = new Template(acc) ;
       setInConstructTemplate(true) ;
     jj_consume_token(LBRACE);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -6796,21 +6796,18 @@ public class ARQParser extends ARQParserBase {
       for (int i = 0; i < jj_endpos; i++) {
         jj_expentry[i] = jj_lasttokens[i];
       }
-      boolean exists = false;
-      for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) {
-        exists = true;
+      jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) {
         int[] oldentry = (int[])(it.next());
         if (oldentry.length == jj_expentry.length) {
           for (int i = 0; i < jj_expentry.length; i++) {
             if (oldentry[i] != jj_expentry[i]) {
-              exists = false;
-              break;
+              continue jj_entries_loop;
             }
           }
-          if (exists) break;
+          jj_expentries.add(jj_expentry);
+          break jj_entries_loop;
         }
       }
-      if (!exists) jj_expentries.add(jj_expentry);
       if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
     }
   }

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/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 3d41145..801238b 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/2d09a7df/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 e0cdb86..acabbc0 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=b0062bbcf1b890f58413a4e69d4dc950 (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=a998d62a33c8c380f8e4549b1a77ca0f (do not edit this line) */

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/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 b41e002..cef35d8 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=48a48010f2f271416e60bbfb8cf25e4b (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=15a9c1dcf732eb71243f022768ba6725 (do not edit this line) */

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/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 b4dd76f..cd93539 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=d9b4c8c9332fa3054a004615fdb22b89 (do not edit this line) */
+/* JavaCC - OriginalChecksum=335d1922781852977208d5cdca0fc164 (do not edit this line) */


[18/50] [abbrv] jena git commit: better way to print datasets

Posted by an...@apache.org.
better way to print datasets

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 7d0986fbde189afa79c8cf52a81a56802f37aff5
Parents: 5b73280
Author: confidencesun <co...@gmail.com>
Authored: Sat Jul 25 05:40:12 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Sat Jul 25 05:40:12 2015 +0800

----------------------------------------------------------------------
 .../arq/examples/constructquads/ExampleConstructQuads.java       | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/7d0986fb/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
----------------------------------------------------------------------
diff --git a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
index 580dc6c..887f7b5 100644
--- a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
+++ b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
@@ -32,6 +32,8 @@ import org.apache.jena.rdf.model.Model;
 import org.apache.jena.rdf.model.ModelFactory;
 import org.apache.jena.rdf.model.Property;
 import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.riot.Lang;
+import org.apache.jena.riot.RDFDataMgr;
 import org.apache.jena.sparql.core.Quad;
 import org.apache.jena.util.PrintUtil;
 
@@ -97,7 +99,7 @@ public class ExampleConstructQuads {
 		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
 		qexec = QueryExecutionFactory.create(query, dataset);
 		Dataset d = qexec.execConstructDataset();
-		PrintUtil.printOut(d.getNamedModel("<http://eg.com/g1>").listStatements());
+		RDFDataMgr.write(System.out, d, Lang.TRIG) ;
 		qexec.close();
 		
 		//short form 1


[19/50] [abbrv] jena git commit: No need to write the package name - add an import

Posted by an...@apache.org.
No need to write the package name - add an import

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 44d8010659bbc813dddee9ffca8ef529f716ad11
Parents: 7d0986f
Author: confidencesun <co...@gmail.com>
Authored: Sat Jul 25 07:39:32 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Sat Jul 25 07:39:32 2015 +0800

----------------------------------------------------------------------
 jena-arq/Grammar/arq.jj                         |  3 +-
 jena-arq/Grammar/master.jj                      |  5 +-
 .../apache/jena/sparql/lang/arq/ARQParser.java  | 51 ++++++++++----------
 .../sparql/lang/arq/ARQParserTokenManager.java  |  1 +
 4 files changed, 33 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/44d80106/jena-arq/Grammar/arq.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/arq.jj b/jena-arq/Grammar/arq.jj
index 25d5bc4..3e0f9d4 100644
--- a/jena-arq/Grammar/arq.jj
+++ b/jena-arq/Grammar/arq.jj
@@ -33,6 +33,7 @@ import org.apache.jena.sparql.path.* ;
 import org.apache.jena.sparql.expr.aggregate.* ;
 import org.apache.jena.update.* ;
 import org.apache.jena.sparql.modify.request.* ;
+import org.apache.jena.sparql.core.Quad ;
 public class ARQParser extends ARQParserBase
 {
     boolean allowAggregatesInExpressions = false ;
@@ -507,7 +508,7 @@ void ConstructQuads(QuadAcc acc) : {}
        (TriplesTemplate(acc))?
     )*
 }
-void ConstructQuadsNotTriples(QuadAccSink acc) : {Node gn = org.apache.jena.sparql.core.Quad.defaultGraphNodeGenerated ; Node prev = acc.getGraph() ; }
+void ConstructQuadsNotTriples(QuadAccSink acc) : {Node gn = Quad.defaultGraphNodeGenerated ; Node prev = acc.getGraph() ; }
 {
     (
     <GRAPH>

http://git-wip-us.apache.org/repos/asf/jena/blob/44d80106/jena-arq/Grammar/master.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/master.jj b/jena-arq/Grammar/master.jj
index 04217ec..b2ae620 100644
--- a/jena-arq/Grammar/master.jj
+++ b/jena-arq/Grammar/master.jj
@@ -93,6 +93,9 @@ import org.apache.jena.sparql.expr.aggregate.* ;
 import org.apache.jena.update.* ;
 import org.apache.jena.sparql.modify.request.* ;
 #endif
+#ifdef ARQ
+import org.apache.jena.sparql.core.Quad ;
+#endif
 
 public class CLASS extends PARSERBASE
 {
@@ -748,7 +751,7 @@ void ConstructQuads(QuadAcc acc) : {}
     )*    
 }
 
-void ConstructQuadsNotTriples(QuadAccSink acc) : {Node gn = org.apache.jena.sparql.core.Quad.defaultGraphNodeGenerated ; Node prev = acc.getGraph() ; }
+void ConstructQuadsNotTriples(QuadAccSink acc) : {Node gn = Quad.defaultGraphNodeGenerated ; Node prev = acc.getGraph() ; }
 {
     (
   	 <GRAPH>

http://git-wip-us.apache.org/repos/asf/jena/blob/44d80106/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 bfa0e85..6a070c2 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
@@ -9,6 +9,7 @@ import org.apache.jena.sparql.path.* ;
 import org.apache.jena.sparql.expr.aggregate.* ;
 import org.apache.jena.update.* ;
 import org.apache.jena.sparql.modify.request.* ;
+import org.apache.jena.sparql.core.Quad ;
 
 @SuppressWarnings("all")
 public class ARQParser extends ARQParserBase implements ARQParserConstants {
@@ -1995,7 +1996,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   }
 
   final public void ConstructQuadsNotTriples(QuadAccSink acc) throws ParseException {
-                                                  Node gn = org.apache.jena.sparql.core.Quad.defaultGraphNodeGenerated ; Node prev = acc.getGraph() ;
+                                                  Node gn = Quad.defaultGraphNodeGenerated ; Node prev = acc.getGraph() ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case GRAPH:
       jj_consume_token(GRAPH);
@@ -5520,30 +5521,6 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     finally { jj_save(4, xla); }
   }
 
-  private boolean jj_3R_172() {
-    if (jj_scan_token(INTEGER_POSITIVE)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_167() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_172()) {
-    jj_scanpos = xsp;
-    if (jj_3R_173()) {
-    jj_scanpos = xsp;
-    if (jj_3R_174()) return true;
-    }
-    }
-    return false;
-  }
-
-  private boolean jj_3R_72() {
-    if (jj_scan_token(DAY)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
   private boolean jj_3R_71() {
     if (jj_scan_token(MONTH)) return true;
     if (jj_scan_token(LPAREN)) return true;
@@ -6655,6 +6632,30 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
+  private boolean jj_3R_172() {
+    if (jj_scan_token(INTEGER_POSITIVE)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_167() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_172()) {
+    jj_scanpos = xsp;
+    if (jj_3R_173()) {
+    jj_scanpos = xsp;
+    if (jj_3R_174()) return true;
+    }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_72() {
+    if (jj_scan_token(DAY)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
   /** Generated Token Manager. */
   public ARQParserTokenManager token_source;
   JavaCharStream jj_input_stream;

http://git-wip-us.apache.org/repos/asf/jena/blob/44d80106/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserTokenManager.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserTokenManager.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserTokenManager.java
index 7dc6bff..942d0e2 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserTokenManager.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserTokenManager.java
@@ -10,6 +10,7 @@ package org.apache.jena.sparql.lang.arq ;
 
 
 
+
 /** Token Manager. */
 public class ARQParserTokenManager implements ARQParserConstants
 {


[41/50] [abbrv] jena git commit: Add more tests of construct quad: 1) duplication; 3) prefix; 3) short form

Posted by an...@apache.org.
Add more tests of construct quad: 1) duplication; 3) prefix; 3) short
form

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

Branch: refs/heads/JENA-491-construct-quads
Commit: fcbbf9b6549ccabcc9786a9fb59f2f2bde42c2f6
Parents: 54e48f3
Author: confidencesun <co...@gmail.com>
Authored: Fri Aug 14 22:25:41 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Fri Aug 14 22:25:41 2015 +0800

----------------------------------------------------------------------
 .../org/apache/jena/sparql/api/TestAPI.java     | 83 ++++++++++++++++++++
 1 file changed, 83 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/fcbbf9b6/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java b/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
index ecc576a..5630804 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
@@ -28,6 +28,7 @@ import org.apache.jena.query.Query;
 import org.apache.jena.query.QueryExecution;
 import org.apache.jena.query.QueryExecutionFactory;
 import org.apache.jena.query.QueryFactory;
+import org.apache.jena.query.QueryParseException;
 import org.apache.jena.query.QuerySolution;
 import org.apache.jena.query.QuerySolutionMap;
 import org.apache.jena.query.ResultSet;
@@ -448,6 +449,88 @@ public class TestAPI extends BaseTest
         assertTrue(IsoMatcher.isomorphic( expected, result.asDatasetGraph()) );
     }
     
+    // Allow duplicated template quads in execConstructQuads()
+    @Test public void testARQConstructQuad_Duplicate_3() {
+        String queryString = "CONSTRUCT { GRAPH ?g1 {?s ?p ?o} GRAPH ?g1 {?s ?p ?o} } WHERE { ?s ?p ?o. GRAPH ?g1 {?s1 ?p1 ?o1} }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        
+        Iterator<Quad> ts = qExec.execConstructQuads();
+        long count = 0;
+        Quad expected = Quad.create( g1.asNode(), s.asNode(), p.asNode(), o.asNode());
+        while (ts.hasNext()) {
+            count++;
+            Quad qd = ts.next();
+            assertEquals(expected, qd);
+        }
+        assertEquals(6, count); // 6 duplicated quads
+    }
+    
+    // Allow duplicated template quads in execConstructQuads()
+    @Test public void testARQConstructQuad_Prefix() {
+        String queryString = "PREFIX :   <http://example/ns#> CONSTRUCT { GRAPH :g1 { ?s :p ?o} } WHERE { ?s ?p ?o }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        
+        Iterator<Quad> quads = qExec.execConstructQuads();
+        DatasetGraph result = DatasetGraphFactory.createMem();
+        long count = 0;
+        while (quads.hasNext()) {
+            count++;
+            Quad qd = quads.next();
+            result.add(qd);
+        }
+        
+        DatasetGraph expected = DatasetGraphFactory.createMem();
+        expected.add(g1.asNode(), s.asNode(), p.asNode(), o.asNode());
+        
+        assertEquals(1, count); 
+        assertTrue(IsoMatcher.isomorphic( expected, result) );
+        
+    }
+    
+    // Test construct triple short form:
+    @Test public void testARQConstructQuad_ShortForm_1() {
+        String queryString = "CONSTRUCT WHERE {?s ?p ?o }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        
+        Model result = ModelFactory.createDefaultModel();
+        qExec.execConstruct(result);
+
+        assertEquals(1, result.size());
+        assertTrue(dft.isIsomorphicWith(result));
+    }
+    
+    // Test construct quad short form:
+    @Test public void testARQConstructQuad_ShortForm_2() {
+        String queryString = "CONSTRUCT WHERE { GRAPH ?g {?s ?p ?o} }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        Dataset result = qExec.execConstructDataset();
+        
+        Dataset expected = DatasetFactory.createMem();
+        expected.addNamedModel(g1.getURI(), m);
+        
+        assertTrue(IsoMatcher.isomorphic( expected.asDatasetGraph(), result.asDatasetGraph()) );
+    }
+    
+    // Test bad construct quad short form:
+    @Test public void testARQConstructQuad_ShortForm_bad() {
+        String queryString = "CONSTRUCT WHERE { GRAPH ?g {?s ?p ?o. FILTER isIRI(?o)}  }";
+        try {
+        	QueryFactory.create(queryString, Syntax.syntaxARQ);
+        }catch (QueryParseException e){
+        	return;
+        }
+        fail("Short form of construct quad MUST be simple graph patterns!");
+    }
+    
+    
     private QueryExecution makeQExec(String queryString)
     {
         Query q = QueryFactory.create(queryString) ;


[36/50] [abbrv] jena git commit: Merge remote-tracking branch 'origin/master'

Posted by an...@apache.org.
Merge remote-tracking branch 'origin/master'

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

Branch: refs/heads/JENA-491-construct-quads
Commit: e819ac32dac6efac1c7726dd9d738db7e33769ef
Parents: 3a67dbc e743d25
Author: confidencesun <co...@gmail.com>
Authored: Mon Aug 10 19:24:31 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Mon Aug 10 19:24:31 2015 +0800

----------------------------------------------------------------------
 .../arq/querybuilder/handlers/WhereHandler.java |   14 +-
 .../querybuilder/handlers/WhereHandlerTest.java |   33 +
 .../permissions/example/ExampleEvaluator.java   |   43 +-
 .../example/ShiroExampleEvaluator.java          |   15 +-
 .../jena/security/example/fuseki/config.ttl     |   26 +-
 .../apache/jena/permissions/SecuredItem.java    |  142 +-
 .../jena/permissions/SecurityEvaluator.java     |  112 +-
 .../jena/permissions/graph/SecuredGraph.java    |  102 +-
 .../graph/SecuredGraphEventManager.java         |  233 ++--
 .../permissions/graph/SecuredPrefixMapping.java |   81 +-
 .../graph/impl/SecuredGraphImpl.java            |  184 ++-
 .../graph/impl/SecuredPrefixMappingImpl.java    |   89 +-
 .../impl/CachedSecurityEvaluator.java           |   28 +-
 .../jena/permissions/impl/SecuredItemImpl.java  |  779 +++++------
 .../jena/permissions/model/SecuredAlt.java      |  163 ++-
 .../permissions/model/SecuredContainer.java     |  133 +-
 .../jena/permissions/model/SecuredLiteral.java  |   93 +-
 .../jena/permissions/model/SecuredModel.java    | 1243 ++++++++++++------
 .../jena/permissions/model/SecuredProperty.java |   11 +-
 .../jena/permissions/model/SecuredRDFList.java  |  236 +++-
 .../jena/permissions/model/SecuredRDFNode.java  |   26 +-
 .../model/SecuredReifiedStatement.java          |   12 +-
 .../jena/permissions/model/SecuredResource.java |  214 ++-
 .../jena/permissions/model/SecuredSeq.java      |  288 ++--
 .../permissions/model/SecuredStatement.java     |  166 ++-
 .../permissions/model/impl/SecuredAltImpl.java  |  207 ++-
 .../model/impl/SecuredContainerImpl.java        |  438 ++----
 .../model/impl/SecuredLiteralImpl.java          |  162 ++-
 .../model/impl/SecuredModelImpl.java            |  610 +++++----
 .../model/impl/SecuredPropertyImpl.java         |   51 +-
 .../model/impl/SecuredRDFListImpl.java          |  704 ++++------
 .../model/impl/SecuredRDFNodeImpl.java          |  211 ++-
 .../model/impl/SecuredReifiedStatementImpl.java |   29 +-
 .../model/impl/SecuredResourceImpl.java         |  570 ++++----
 .../permissions/model/impl/SecuredSelector.java |   39 +-
 .../permissions/model/impl/SecuredSeqImpl.java  |  326 ++---
 .../model/impl/SecuredStatementImpl.java        |  278 ++--
 .../permissions/query/SecuredQueryEngine.java   |  100 +-
 .../permissions/query/rewriter/OpRewriter.java  |  379 +++---
 .../query/rewriter/SecuredFunction.java         |  104 +-
 .../permissions/utils/PermStatementFilter.java  |   48 +-
 .../permissions/utils/PermTripleFilter.java     |   45 +-
 .../permissions/utils/RDFListSecFilter.java     |   23 +-
 .../jena/permissions/MockSecurityEvaluator.java |    6 +
 .../ModelBasedSecurityEvaluator.java            |    9 +-
 .../permissions/StaticSecurityEvaluator.java    |    5 +
 .../jena/permissions/graph/TDBGraphTest.java    |    3 -
 .../model/SecuredModelDetailTest.java           |    5 +
 .../permissions/model/SecuredModelTest.java     |    6 +-
 .../jena/permissions/query/DataSetTest.java     |   15 +-
 .../jena/permissions/query/QueryEngineTest.java |    9 +-
 51 files changed, 4778 insertions(+), 4070 deletions(-)
----------------------------------------------------------------------



[14/50] [abbrv] jena git commit: Merge pull request #8 from apache/master

Posted by an...@apache.org.
Merge pull request #8 from apache/master

pull master up to date

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 1348bf5498543f747f1b4707f011a46bfcca90e1
Parents: 21b37d1 d38ba28
Author: confidencesun <co...@gmail.com>
Authored: Wed Jul 22 03:16:15 2015 -0300
Committer: confidencesun <co...@gmail.com>
Committed: Wed Jul 22 03:16:15 2015 -0300

----------------------------------------------------------------------
 apache-jena-osgi/jena-osgi/pom.xml              |    4 +-
 apache-jena/README                              |    9 +-
 apache-jena/bin/arq                             |   77 +-
 apache-jena/bin/infer                           |   77 +-
 apache-jena/bin/iri                             |   77 +-
 apache-jena/bin/juuid                           |   77 +-
 apache-jena/bin/nquads                          |   77 +-
 apache-jena/bin/ntriples                        |   77 +-
 apache-jena/bin/qparse                          |   77 +-
 apache-jena/bin/rdfcat                          |   77 +-
 apache-jena/bin/rdfcompare                      |   77 +-
 apache-jena/bin/rdfcopy                         |   77 +-
 apache-jena/bin/rdfparse                        |   77 +-
 apache-jena/bin/rdfxml                          |   77 +-
 apache-jena/bin/riot                            |   77 +-
 apache-jena/bin/rset                            |   77 +-
 apache-jena/bin/rsparql                         |   77 +-
 apache-jena/bin/rupdate                         |   77 +-
 apache-jena/bin/schemagen                       |   77 +-
 apache-jena/bin/sparql                          |   77 +-
 apache-jena/bin/tdbbackup                       |   77 +-
 apache-jena/bin/tdbdump                         |   77 +-
 apache-jena/bin/tdbloader                       |   77 +-
 apache-jena/bin/tdbloader2                      |  331 ++-
 apache-jena/bin/tdbloader2common                |  195 ++
 apache-jena/bin/tdbloader2data                  |  288 +++
 apache-jena/bin/tdbloader2index                 |  426 ++++
 apache-jena/bin/tdbloader2worker                |  154 --
 apache-jena/bin/tdbquery                        |   77 +-
 apache-jena/bin/tdbstats                        |   77 +-
 apache-jena/bin/tdbupdate                       |   77 +-
 apache-jena/bin/trig                            |   77 +-
 apache-jena/bin/turtle                          |   77 +-
 apache-jena/bin/uparse                          |   77 +-
 apache-jena/bin/update                          |   77 +-
 apache-jena/bin/utf8                            |   77 +-
 apache-jena/bin/wwwdec                          |   77 +-
 apache-jena/bin/wwwenc                          |   77 +-
 apache-jena/cmd-maker                           |   12 +-
 apache-jena/pom.xml                             |   78 +-
 apache-jena/template.bin                        |   77 +-
 jena-arq/src/main/java/arq/cmd/Arg.java         |   69 -
 jena-arq/src/main/java/arq/cmd/ArgDecl.java     |   97 -
 jena-arq/src/main/java/arq/cmd/ArgModule.java   |   27 -
 .../src/main/java/arq/cmd/ArgModuleGeneral.java |   29 -
 jena-arq/src/main/java/arq/cmd/ArgProc.java     |   27 -
 .../src/main/java/arq/cmd/CmdArgModule.java     |   68 -
 .../src/main/java/arq/cmd/CmdException.java     |   30 -
 jena-arq/src/main/java/arq/cmd/CmdLineArgs.java |  412 ----
 jena-arq/src/main/java/arq/cmd/CmdMain.java     |  114 -
 .../src/main/java/arq/cmd/CommandLineBase.java  |  137 --
 .../main/java/arq/cmd/TerminationException.java |   30 -
 jena-arq/src/main/java/arq/cmd/Usage.java       |  105 -
 .../src/main/java/arq/cmdline/CallbackHelp.java |   24 -
 jena-arq/src/main/java/arq/cmdline/CmdARQ.java  |   18 +-
 .../src/main/java/arq/cmdline/CmdGeneral.java   |   89 -
 .../src/main/java/arq/cmdline/ModAlgebra.java   |   10 +-
 .../src/main/java/arq/cmdline/ModAssembler.java |    9 +-
 jena-arq/src/main/java/arq/cmdline/ModBase.java |   25 -
 .../src/main/java/arq/cmdline/ModDataset.java   |    2 +
 .../java/arq/cmdline/ModDatasetAssembler.java   |   10 +-
 .../java/arq/cmdline/ModDatasetGeneral.java     |    8 +-
 .../arq/cmdline/ModDatasetGeneralAssembler.java |    4 +-
 .../src/main/java/arq/cmdline/ModEngine.java    |   96 +-
 .../src/main/java/arq/cmdline/ModFormat.java    |   14 +-
 .../src/main/java/arq/cmdline/ModGeneral.java   |   63 -
 jena-arq/src/main/java/arq/cmdline/ModItem.java |   12 +-
 .../main/java/arq/cmdline/ModLangOutput.java    |    9 +-
 .../src/main/java/arq/cmdline/ModLangParse.java |    9 +-
 .../src/main/java/arq/cmdline/ModQueryIn.java   |   10 +-
 .../src/main/java/arq/cmdline/ModQueryOut.java  |   10 +-
 .../src/main/java/arq/cmdline/ModRemote.java    |   11 +-
 .../src/main/java/arq/cmdline/ModResultsIn.java |    9 +-
 .../main/java/arq/cmdline/ModResultsOut.java    |   10 +-
 .../src/main/java/arq/cmdline/ModSymbol.java    |   14 +-
 jena-arq/src/main/java/arq/cmdline/ModTime.java |   13 +-
 .../src/main/java/arq/cmdline/ModVersion.java   |   71 -
 jena-arq/src/main/java/arq/juuid.java           |    9 +-
 jena-arq/src/main/java/arq/load.java            |    6 +-
 jena-arq/src/main/java/arq/qexpr.java           |    9 +-
 jena-arq/src/main/java/arq/qparse.java          |    6 +-
 jena-arq/src/main/java/arq/query.java           |    8 +-
 jena-arq/src/main/java/arq/rsparql.java         |    4 +-
 jena-arq/src/main/java/arq/rupdate.java         |    6 +-
 jena-arq/src/main/java/arq/sse.java             |    6 +-
 jena-arq/src/main/java/arq/sse_query.java       |    8 +-
 jena-arq/src/main/java/arq/uparse.java          |    6 +-
 jena-arq/src/main/java/arq/update.java          |    6 +-
 jena-arq/src/main/java/arq/version.java         |    2 +-
 .../main/java/org/apache/jena/query/ARQ.java    |   12 +
 .../java/org/apache/jena/query/Dataset.java     |    3 +-
 .../main/java/org/apache/jena/query/Query.java  |    7 -
 .../org/apache/jena/query/QuerySolutionMap.java |   12 +-
 .../main/java/org/apache/jena/riot/RIOT.java    |    2 +-
 .../jena/riot/checker/CheckerVisitor.java       |    3 +-
 .../jena/riot/lang/BlankNodeAllocatorHash.java  |    3 +-
 .../jena/riot/lang/BlankNodeAllocatorLabel.java |    3 +-
 .../lang/BlankNodeAllocatorLabelEncoded.java    |    5 +-
 .../lang/BlankNodeAllocatorTraditional.java     |    2 +-
 .../java/org/apache/jena/riot/lang/LangCSV.java |    2 +-
 .../org/apache/jena/riot/lang/LangRDFXML.java   |    2 +-
 .../apache/jena/riot/lang/LangTurtleBase.java   |    2 +-
 .../org/apache/jena/riot/system/RiotLib.java    |    3 +-
 .../apache/jena/riot/thrift/ThriftConvert.java  |    3 +-
 .../java/org/apache/jena/riot/tokens/Token.java |   27 +-
 .../jena/riot/writer/StreamWriterTriX.java      |   24 +-
 .../apache/jena/sparql/algebra/OpAsQuery.java   | 1063 +++++----
 .../jena/sparql/algebra/optimize/Optimize.java  |    9 +-
 .../optimize/TransformEliminateAssignments.java |  618 +++++
 .../optimize/TransformRemoveAssignment.java     |  143 ++
 .../algebra/optimize/VariableUsagePopper.java   |   57 +
 .../algebra/optimize/VariableUsagePusher.java   |   59 +
 .../algebra/optimize/VariableUsageTracker.java  |   92 +
 .../algebra/optimize/VariableUsageVisitor.java  |  206 ++
 .../apache/jena/sparql/core/DatasetChanges.java |    4 +
 .../jena/sparql/core/DatasetChangesBatched.java |   76 +-
 .../jena/sparql/core/DatasetChangesCapture.java |  109 +-
 .../jena/sparql/core/DatasetChangesCounter.java |    1 +
 .../sparql/core/DatasetGraphCollection.java     |   10 +-
 .../org/apache/jena/sparql/core/Prologue.java   |   10 +
 .../engine/binding/BindingInputStream.java      |    3 +-
 .../org/apache/jena/sparql/expr/E_BNode.java    |    2 +-
 .../org/apache/jena/sparql/expr/E_Exists.java   |   42 +-
 .../apache/jena/sparql/expr/E_NotExists.java    |   14 +-
 .../java/org/apache/jena/sparql/expr/Expr.java  |   33 +
 .../apache/jena/sparql/expr/ExprAggregator.java |    5 +-
 .../apache/jena/sparql/expr/ExprFunction.java   |   16 +-
 .../apache/jena/sparql/expr/ExprFunctionOp.java |    1 +
 .../org/apache/jena/sparql/expr/ExprList.java   |   14 +-
 .../org/apache/jena/sparql/expr/ExprNode.java   |   75 +-
 .../org/apache/jena/sparql/expr/ExprVar.java    |    5 +-
 .../org/apache/jena/sparql/expr/ExprVars.java   |   28 +
 .../org/apache/jena/sparql/expr/NodeValue.java  |   36 +-
 .../jena/sparql/expr/aggregate/AggAvg.java      |    6 +-
 .../sparql/expr/aggregate/AggAvgDistinct.java   |    6 +-
 .../jena/sparql/expr/aggregate/AggCount.java    |    4 +-
 .../sparql/expr/aggregate/AggCountDistinct.java |    4 +-
 .../jena/sparql/expr/aggregate/AggCountVar.java |    6 +-
 .../expr/aggregate/AggCountVarDistinct.java     |    6 +-
 .../jena/sparql/expr/aggregate/AggCustom.java   |   18 +-
 .../sparql/expr/aggregate/AggGroupConcat.java   |    7 +-
 .../expr/aggregate/AggGroupConcatDistinct.java  |    7 +-
 .../jena/sparql/expr/aggregate/AggMax.java      |    8 +-
 .../sparql/expr/aggregate/AggMaxDistinct.java   |    9 +-
 .../jena/sparql/expr/aggregate/AggMin.java      |    8 +-
 .../sparql/expr/aggregate/AggMinDistinct.java   |    8 +-
 .../jena/sparql/expr/aggregate/AggNull.java     |    4 +-
 .../jena/sparql/expr/aggregate/AggSample.java   |    8 +-
 .../expr/aggregate/AggSampleDistinct.java       |    8 +-
 .../jena/sparql/expr/aggregate/AggSum.java      |    6 +-
 .../sparql/expr/aggregate/AggSumDistinct.java   |    8 +-
 .../jena/sparql/expr/aggregate/Aggregator.java  |    3 +
 .../sparql/expr/aggregate/AggregatorBase.java   |    8 +-
 .../org/apache/jena/sparql/lang/ParserBase.java |    4 +-
 .../apache/jena/sparql/lang/SyntaxVarScope.java |    4 +-
 .../apache/jena/sparql/modify/TemplateLib.java  |    2 +-
 .../apache/jena/sparql/path/eval/PathEval.java  |    3 +-
 .../sparql/resultset/JSONInputIterator.java     |   28 +-
 .../jena/sparql/resultset/XMLInputStAX.java     |    3 +-
 .../jena/sparql/serializer/FmtExprSPARQL.java   |   13 +-
 .../sparql/serializer/FormatterElement.java     |  408 ++--
 .../jena/sparql/sse/lang/ParseHandlerPlain.java |    2 +-
 .../jena/sparql/syntax/ElementFilter.java       |    2 +-
 .../apache/jena/sparql/syntax/ElementGroup.java |   11 +-
 .../syntaxtransform/ElementTransform.java       |   51 +
 .../ElementTransformCleanGroupsOfOne.java       |  108 +
 .../ElementTransformCopyBase.java               |  145 ++
 .../ElementTransformIdentity.java               |   74 +
 .../syntaxtransform/ElementTransformSubst.java  |  109 +
 .../syntaxtransform/ElementTransformer.java     |  289 +++
 .../ExprTransformApplyElementTransform.java     |   52 +
 .../ExprTransformNodeElement.java               |   78 +
 .../syntaxtransform/NodeTransformSubst.java     |   42 +
 .../syntaxtransform/QueryTransformOps.java      |  238 ++
 .../syntaxtransform/TransformElementLib.java    |   61 +
 .../syntaxtransform/UpdateTransformOps.java     |  209 ++
 .../org/apache/jena/sparql/util/Context.java    |   27 +-
 .../apache/jena/sparql/util/LabelToNodeMap.java |    2 +-
 .../org/apache/jena/sparql/util/Version.java    |  148 --
 .../jena/sparql/util/graph/GraphList.java       |    4 +-
 .../src/main/java/riotcmd/CmdLangParse.java     |   29 +-
 jena-arq/src/main/java/riotcmd/infer.java       |    7 +-
 jena-arq/src/test/java/arq/TestCmdLine.java     |    5 +-
 jena-arq/src/test/java/arq/qtest.java           |    8 +-
 .../jena/atlas/data/TestDistinctDataBag.java    |    6 +-
 .../jena/atlas/data/TestDistinctDataNet.java    |    6 +-
 .../jena/atlas/data/TestSortedDataBag.java      |    6 +-
 .../jena/riot/lang/TestCollectorStream.java     |    4 +-
 .../apache/jena/riot/lang/TestNodeToLabel.java  |    6 +-
 .../jena/riot/lang/TestPipedRDFIterators.java   |    4 +-
 .../apache/jena/riot/thrift/TestThriftTerm.java |    5 +-
 .../jena/riot/tokens/TestTokenForNode.java      |    3 +-
 .../apache/jena/riot/writer/TestRDFJSON.java    |    2 +-
 .../java/org/apache/jena/sparql/TC_General.java |    4 +-
 .../jena/sparql/algebra/TestOpAsQuery.java      |  333 ++-
 .../algebra/optimize/TS_Optimization.java       |    1 +
 .../TestTransformEliminateAssignments.java      |  744 ++++++
 .../sparql/core/AbstractDatasetGraphTests.java  |    6 +-
 .../apache/jena/sparql/core/TestContext.java    |   27 +-
 .../engine/binding/TestBindingStreams.java      |    3 +-
 .../engine/iterator/TestQueryIterSort.java      |    6 +-
 .../jena/sparql/expr/TestExpressions.java       |    2 +-
 .../jena/sparql/expr/TestNodeFunctions.java     |    6 +-
 .../apache/jena/sparql/expr/TestOrdering.java   |    2 +-
 .../apache/jena/sparql/expr/TestXSDFuncOp.java  |    8 +-
 .../sparql/modify/AbstractTestUpdateGraph.java  |    8 +-
 .../jena/sparql/syntax/TS_Serialization.java    |   30 -
 .../apache/jena/sparql/syntax/TS_Syntax.java    |   37 +
 .../syntaxtransform/TestFlattenSyntax.java      |  120 +
 .../syntax/syntaxtransform/TestQueryOps.java    |   59 +
 .../syntaxtransform/TestSubstitution.java       |   93 +
 .../org/apache/jena/sparql/util/TS_Util.java    |    1 -
 .../apache/jena/sparql/util/TestFmtUtils.java   |    8 +-
 .../apache/jena/sparql/util/TestVersion.java    |   14 +-
 jena-arq/src/test/java/riotcmd/rdflangtest.java |   10 +-
 jena-arq/testing/ARQ/Serialization/func.sh      |    1 -
 jena-arq/testing/ARQ/Serialization/manifest.ttl |   24 +
 .../testing/ARQ/Serialization/syntax-path-01.rq |    5 +
 .../testing/ARQ/Serialization/syntax-path-02.rq |    5 +
 .../testing/ARQ/Serialization/syntax-path-03.rq |    6 +
 .../testing/ARQ/Serialization/syntax-path-04.rq |    6 +
 .../testing/ARQ/Serialization/syntax-path-05.rq |    7 +
 .../testing/ARQ/Serialization/syntax-path-06.rq |    8 +
 jena-base/src/main/java/jena/cmd/Arg.java       |   69 +
 jena-base/src/main/java/jena/cmd/ArgDecl.java   |   93 +
 jena-base/src/main/java/jena/cmd/ArgModule.java |   26 +
 .../main/java/jena/cmd/ArgModuleGeneral.java    |   25 +
 jena-base/src/main/java/jena/cmd/ArgProc.java   |   27 +
 .../src/main/java/jena/cmd/CmdArgModule.java    |   70 +
 .../src/main/java/jena/cmd/CmdException.java    |   30 +
 .../src/main/java/jena/cmd/CmdGeneral.java      |   92 +
 .../src/main/java/jena/cmd/CmdLineArgs.java     |  413 ++++
 jena-base/src/main/java/jena/cmd/CmdMain.java   |  108 +
 .../src/main/java/jena/cmd/CommandLineBase.java |  136 ++
 jena-base/src/main/java/jena/cmd/ModBase.java   |   23 +
 .../src/main/java/jena/cmd/ModGeneral.java      |   57 +
 .../src/main/java/jena/cmd/ModVersion.java      |   67 +
 .../java/jena/cmd/TerminationException.java     |   31 +
 jena-base/src/main/java/jena/cmd/Usage.java     |  102 +
 .../src/main/java/jena/cmd/package-info.java    |    6 +
 .../apache/jena/atlas/lib/ActionKeyValue.java   |    2 +-
 .../java/org/apache/jena/atlas/lib/Bytes.java   |    4 +-
 .../org/apache/jena/atlas/lib/ListUtils.java    |    2 +-
 .../apache/jena/atlas/lib/PropertyUtils.java    |   27 +-
 .../java/org/apache/jena/atlas/lib/Version.java |  139 ++
 .../org/apache/jena/atlas/logging/LogCtl.java   |   42 +-
 jena-core/pom.xml                               |  509 ++--
 jena-core/src/main/java/jena/rdfcat.java        |   14 +-
 jena-core/src/main/java/jena/rdfcompare.java    |    2 +-
 jena-core/src/main/java/jena/rdfcopy.java       |    2 +-
 jena-core/src/main/java/jena/rdfparse.java      |    2 +-
 jena-core/src/main/java/jena/schemagen.java     |    2 +-
 jena-core/src/main/java/jena/version.java       |    2 +-
 .../java/org/apache/jena/graph/BlankNodeId.java |  156 ++
 .../main/java/org/apache/jena/graph/Node.java   |   34 +-
 .../java/org/apache/jena/graph/NodeFactory.java |   49 +-
 .../java/org/apache/jena/graph/NodeVisitor.java |    5 +-
 .../java/org/apache/jena/graph/Node_Blank.java  |   12 +-
 .../org/apache/jena/graph/Node_Literal.java     |    5 +
 .../java/org/apache/jena/graph/Node_URI.java    |    5 +
 .../org/apache/jena/graph/Node_Variable.java    |    1 +
 .../apache/jena/n3/turtle/LabelToNodeMap.java   |    2 +-
 .../org/apache/jena/n3/turtle/ParserBase.java   |    3 +-
 .../jena/ontology/CardinalityQRestriction.java  |    3 +-
 .../java/org/apache/jena/rdf/model/AnonId.java  |  121 +-
 .../apache/jena/rdf/model/impl/ModelCom.java    |    4 +-
 .../rdf/model/impl/RDFDefaultErrorHandler.java  |    9 +-
 .../apache/jena/rdf/model/impl/ReifierStd.java  |    2 +-
 .../jena/rdf/model/impl/ResourceImpl.java       |   13 +-
 .../apache/jena/rdfxml/xmlinput/JenaReader.java |    2 +-
 .../jena/rdfxml/xmloutput/impl/Unparser.java    |    9 +-
 .../jena/reasoner/rulesys/FBRuleInfGraph.java   |    2 +-
 .../org/apache/jena/reasoner/rulesys/Rule.java  |   19 +-
 .../org/apache/jena/reasoner/rulesys/Util.java  |    2 +-
 .../reasoner/rulesys/builtins/MakeSkolem.java   |   10 +-
 .../reasoner/rulesys/builtins/MakeTemp.java     |    2 +-
 .../reasoner/rulesys/impl/BindingStack.java     |    6 +-
 .../reasoner/rulesys/impl/BindingVector.java    |    6 +-
 .../rulesys/impl/LPBindingEnvironment.java      |    6 +-
 .../reasoner/rulesys/impl/TempNodeCache.java    |    2 +-
 .../jena/shared/AccessDeniedException.java      |   56 +
 .../apache/jena/shared/AddDeniedException.java  |   44 +-
 .../shared/AuthenticationRequiredException.java |   45 +
 .../jena/shared/CannotCreateException.java      |    2 +-
 .../jena/shared/DeleteDeniedException.java      |   44 +-
 .../jena/shared/OperationDeniedException.java   |   31 +
 .../apache/jena/shared/ReadDeniedException.java |   57 +
 .../jena/shared/UpdateDeniedException.java      |   74 +-
 .../util/iterator/EarlyBindingIterator.java     |   38 -
 .../jena/util/iterator/LateBindingIterator.java |   75 -
 .../apache/jena/util/iterator/LazyIterator.java |   49 +-
 .../util/iterator/UniqueExtendedIterator.java   |   93 -
 .../src/test/java/jena/test/Test_rdfcat.java    |   11 +
 .../jena/assembler/test/TestAssemblerGroup.java |   12 +-
 .../jena/assembler/test/TestAssemblerHelp.java  |   12 +-
 .../apache/jena/enhanced/test/TestPackage.java  |    2 +-
 .../jena/graph/test/AbstractTestReifier.java    |    2 +-
 .../apache/jena/graph/test/NodeCreateUtils.java |    4 +-
 .../org/apache/jena/graph/test/TestNode.java    |   46 +-
 .../org/apache/jena/graph/test/TestTriple.java  |    7 +-
 .../jena/rdfxml/xmloutput/TestXMLFeatures.java  |    2 +-
 .../jena/reasoner/rulesys/test/TestBugs.java    |    4 +-
 .../jena/reasoner/rulesys/test/TestFBRules.java |    2 +-
 .../java/org/apache/jena/test/TestPackage.java  |    9 +-
 .../jena/testing_framework/NodeCreateUtils.java |   20 +-
 .../jena/testing_framework/TestFileData.java    |   36 +-
 jena-elephas/jena-elephas-common/pom.xml        |   13 +-
 .../hadoop/rdf/types/NodeTupleWritable.java     |    2 +-
 jena-elephas/jena-elephas-io/pom.xml            |   21 +-
 jena-elephas/jena-elephas-mapreduce/pom.xml     |   31 +-
 jena-elephas/pom.xml                            |   52 +-
 .../arq/querybuilder/AbstractQueryBuilder.java  |    1 +
 .../arq/querybuilder/handlers/WhereHandler.java |   23 +-
 .../jena/arq/AbstractRegexpBasedTest.java       |    7 +-
 .../arq/querybuilder/SelectBuilderTest.java     |   32 +-
 .../querybuilder/clauses/WhereClauseTest.java   |   66 +-
 .../handlers/PrologHandlerTest.java             |   12 +-
 .../querybuilder/handlers/WhereHandlerTest.java |   82 +-
 jena-extras/pom.xml                             |    2 +-
 .../java/org/apache/jena/fuseki/FusekiCmd.java  |    4 +-
 jena-fuseki2/apache-jena-fuseki/fuseki          |   27 +-
 .../main/java/org/apache/jena/fuseki/DEF.java   |    6 +-
 .../org/apache/jena/fuseki/build/Builder.java   |    2 +-
 .../apache/jena/fuseki/build/FusekiConfig.java  |   45 +-
 .../org/apache/jena/fuseki/cmd/FusekiCmd.java   |    4 +-
 .../apache/jena/fuseki/mgt/ActionAsyncTask.java |    5 +-
 .../apache/jena/fuseki/mgt/ActionBackup.java    |   10 -
 .../jena/fuseki/mgt/ActionBackupList.java       |   94 +
 .../jena/fuseki/mgt/ActionContainerItem.java    |   26 +-
 .../apache/jena/fuseki/mgt/ActionDatasets.java  |  157 +-
 .../org/apache/jena/fuseki/mgt/ActionSleep.java |    2 +-
 .../org/apache/jena/fuseki/mgt/ActionStats.java |    7 -
 .../java/org/apache/jena/fuseki/mgt/Async.java  |    2 +-
 .../java/org/apache/jena/fuseki/mgt/Backup.java |    2 +-
 .../org/apache/jena/fuseki/mgt/MgtConst.java    |   11 +-
 .../apache/jena/fuseki/server/FusekiEnv.java    |    2 +-
 .../apache/jena/fuseki/server/FusekiServer.java |    2 +-
 .../apache/jena/fuseki/servlets/ActionBase.java |    4 +-
 .../src/main/webapp/WEB-INF/web.xml             |   12 +-
 .../java/org/apache/jena/fuseki/ServerTest.java |    2 +
 .../java/org/apache/jena/fuseki/TestAdmin.java  |   73 +-
 .../jdbc/mem/metadata/MemDatasetMetadata.java   |   10 +-
 .../remote/metadata/RemoteEndpointMetadata.java |   12 +-
 .../jdbc/tdb/metadata/TDBDatasetMetadata.java   |   12 +-
 jena-maven-tools/pom.xml                        |    8 +-
 jena-parent/pom.xml                             |   54 +-
 jena-permissions/pom.xml                        |    4 +
 .../permissions/example/ExampleEvaluator.java   |   59 +-
 .../example/ShiroExampleEvaluator.java          |   69 +-
 .../jena/permissions/AccessDeniedException.java |   66 -
 .../apache/jena/permissions/SecuredItem.java    |  241 ++
 .../jena/permissions/SecurityEvaluator.java     |  380 +--
 .../permissions/SecurityEvaluatorAssembler.java |    2 +-
 .../permissions/graph/SecuredCapabilities.java  |   14 +-
 .../jena/permissions/graph/SecuredGraph.java    |   68 +-
 .../graph/SecuredGraphEventManager.java         |   55 +-
 .../permissions/graph/SecuredPrefixMapping.java |   57 +-
 .../graph/impl/SecuredGraphImpl.java            |    5 +-
 .../impl/CachedSecurityEvaluator.java           |   18 +-
 .../jena/permissions/impl/ItemHolder.java       |    1 +
 .../jena/permissions/impl/SecuredItem.java      |  185 --
 .../jena/permissions/impl/SecuredItemImpl.java  |  349 ++-
 .../permissions/impl/SecuredItemInvoker.java    |    2 +
 .../jena/permissions/model/SecuredAlt.java      |  117 +-
 .../permissions/model/SecuredContainer.java     |  103 +-
 .../jena/permissions/model/SecuredLiteral.java  |   83 +-
 .../jena/permissions/model/SecuredModel.java    |  688 +++---
 .../jena/permissions/model/SecuredProperty.java |    6 +-
 .../jena/permissions/model/SecuredRDFList.java  |  144 +-
 .../jena/permissions/model/SecuredRDFNode.java  |   16 +-
 .../model/SecuredReifiedStatement.java          |    7 +-
 .../jena/permissions/model/SecuredResource.java |  154 +-
 .../jena/permissions/model/SecuredSeq.java      |  153 +-
 .../permissions/model/SecuredStatement.java     |  128 +-
 ...SecuredUnsupportedPolymorphismException.java |    5 +
 .../model/impl/SecuredModelImpl.java            | 2215 +++++++-----------
 .../model/impl/SecuredRDFListImpl.java          |   67 +-
 .../model/impl/SecuredRSIterator.java           |    7 +-
 .../model/impl/SecuredResourceImpl.java         |   13 +-
 .../permissions/model/impl/SecuredSelector.java |   19 +-
 .../model/impl/SecuredStatementImpl.java        |    6 +-
 .../permissions/query/SecuredQueryEngine.java   |   25 +-
 .../permissions/query/rewriter/OpRewriter.java  |   20 +-
 .../query/rewriter/SecuredFunction.java         |   34 +-
 .../permissions/utils/PermStatementFilter.java  |   10 +-
 .../permissions/utils/PermTripleFilter.java     |   12 +-
 .../permissions/utils/RDFListSecFilter.java     |    6 +-
 .../jena/permissions/MockSecurityEvaluator.java |   30 +-
 .../ModelBasedSecurityEvaluator.java            |   20 +-
 .../jena/permissions/SecuredAssemblerTest.java  |    1 -
 .../permissions/StaticSecurityEvaluator.java    |   39 +-
 .../graph/CachedSecurityEvaluatorTest.java      |    8 +-
 .../graph/CrossIDGraphEventManagerTest.java     |   20 +-
 .../graph/GraphEventManagerTest.java            |   58 +-
 .../jena/permissions/graph/MemGraphTest.java    |  221 +-
 .../graph/RecordingGraphListener.java           |   55 +-
 .../graph/SecuredPrefixMappingTest.java         |  332 +--
 .../jena/permissions/graph/TDBGraphTest.java    |   20 +-
 .../permissions/impl/SecuredItemImplTest.java   |  232 ++
 .../jena/permissions/model/SecuredAltTest.java  |  554 ++---
 .../jena/permissions/model/SecuredBagTest.java  |   13 +-
 .../permissions/model/SecuredContainerTest.java |  392 ++--
 .../permissions/model/SecuredLiteralTest.java   |  405 ++--
 .../model/SecuredModelDetailTest.java           |  457 ++--
 .../permissions/model/SecuredModelTest.java     | 1741 +++++---------
 .../permissions/model/SecuredPropertyTest.java  |   40 +-
 .../permissions/model/SecuredRDFListTest.java   |  806 +++----
 .../permissions/model/SecuredRDFNodeTest.java   |  112 +-
 .../model/SecuredReifiedStatementTest.java      |   42 +-
 .../permissions/model/SecuredResourceTest.java  |  717 ++----
 .../jena/permissions/model/SecuredSeqTest.java  |  860 +++----
 .../permissions/model/SecuredStatementTest.java |  546 ++---
 .../jena/permissions/query/DataSetTest.java     |  203 +-
 .../jena/permissions/query/QueryEngineTest.java |   96 +-
 .../query/rewriter/OpRewriterTest.java          |  128 +-
 .../apache/jena/sdb/layout1/CodecSimple.java    |    4 +-
 .../org/apache/jena/sdb/layout2/SQLBridge2.java |   13 +-
 .../org/apache/jena/sdb/script/CmdDesc.java     |    3 +-
 jena-sdb/src/main/java/sdb/SDBCmd.java          |    3 +-
 jena-sdb/src/main/java/sdb/cmd/CmdArgsDB.java   |   17 +-
 jena-sdb/src/main/java/sdb/cmd/ModConfig.java   |    8 +-
 jena-sdb/src/main/java/sdb/cmd/ModData.java     |   12 +-
 .../src/main/java/sdb/cmd/ModDatasetStore.java  |   10 +-
 jena-sdb/src/main/java/sdb/cmd/ModGraph.java    |    9 +-
 jena-sdb/src/main/java/sdb/cmd/ModLogSQL.java   |   11 +-
 jena-sdb/src/main/java/sdb/cmd/ModStore.java    |   11 +-
 jena-sdb/src/main/java/sdb/sdbconfig.java       |    4 +-
 jena-sdb/src/main/java/sdb/sdbdelete.java       |    4 +-
 jena-sdb/src/main/java/sdb/sdbdump.java         |    4 +-
 jena-sdb/src/main/java/sdb/sdbinfo.java         |    4 +-
 jena-sdb/src/main/java/sdb/sdbload.java         |    4 +-
 jena-sdb/src/main/java/sdb/sdbmeta.java         |    8 +-
 jena-sdb/src/main/java/sdb/sdbprint.java        |    6 +-
 jena-sdb/src/main/java/sdb/sdbquery.java        |    4 +-
 jena-sdb/src/main/java/sdb/sdbsql.java          |    6 +-
 jena-sdb/src/main/java/sdb/sdbtruncate.java     |    6 +-
 jena-sdb/src/main/java/sdb/sdbtuple.java        |   10 +-
 jena-sdb/src/test/java/sdb/DBTest.java          |    4 +-
 jena-sdb/src/test/java/sdb/sdbtest.java         |    4 +-
 .../src/main/java/jena/spatialindexdump.java    |    4 +-
 .../src/main/java/jena/spatialindexer.java      |    4 +-
 .../spatial/SpatialDocProducerTriples.java      |    3 +
 .../jena/query/spatial/SpatialQueryFuncs.java   |    3 +-
 jena-tdb/bin/tdbloader2                         |   47 -
 jena-tdb/bin/tdbloader2worker                   |  154 --
 .../java/org/apache/jena/tdb/lib/DumpOps.java   |    3 +-
 .../store/bulkloader2/CmdNodeTableBuilder.java  |    8 +-
 .../jena/tdb/store/nodetable/NodecLib.java      |    3 +-
 .../jena/tdb/store/nodetable/NodecSSE.java      |    3 +-
 jena-tdb/src/main/java/tdb/cmdline/CmdSub.java  |    2 +-
 .../src/main/java/tdb/cmdline/CmdTDBGraph.java  |    5 +-
 .../src/main/java/tdb/cmdline/ModLocation.java  |   12 +-
 .../src/main/java/tdb/cmdline/ModModel.java     |   11 +-
 .../main/java/tdb/cmdline/ModTDBAssembler.java  |    8 +-
 .../main/java/tdb/cmdline/ModTDBDataset.java    |   10 +-
 jena-tdb/src/main/java/tdb/tdbconfig.java       |    4 +-
 jena-tdb/src/main/java/tdb/tdbloader.java       |    6 +-
 jena-tdb/src/main/java/tdb/tools/dumpbpt.java   |    5 +-
 .../src/main/java/tdb/tools/dumpnodetable.java  |    5 +-
 .../jena/tdb/store/nodetable/TestCodec.java     |    9 +-
 jena-text/pom.xml                               |    7 +-
 jena-text/src/main/java/jena/textindexdump.java |    4 +-
 jena-text/src/main/java/jena/textindexer.java   |    4 +-
 .../jena/query/text/DatasetGraphText.java       |    2 +-
 .../java/org/apache/jena/query/text/Entity.java |   19 +-
 .../jena/query/text/EntityDefinition.java       |    9 +
 .../jena/query/text/TextDocProducerTriples.java |   27 +-
 .../org/apache/jena/query/text/TextHit.java     |   10 +-
 .../jena/query/text/TextHitConverter.java       |   11 +-
 .../org/apache/jena/query/text/TextIndex.java   |    5 +-
 .../apache/jena/query/text/TextIndexConfig.java |    9 +
 .../apache/jena/query/text/TextIndexLucene.java |   81 +-
 .../apache/jena/query/text/TextIndexSolr.java   |   21 +-
 .../apache/jena/query/text/TextQueryFuncs.java  |   15 +-
 .../org/apache/jena/query/text/TextQueryPF.java |   47 +-
 .../assembler/EntityDefinitionAssembler.java    |    5 +
 .../assembler/TextIndexLuceneAssembler.java     |   11 +
 .../jena/query/text/assembler/TextVocab.java    |    2 +
 ...tasetWithLuceneTextIndexDeletionSupport.java |   53 +
 .../AbstractTestDatasetWithTextIndexBase.java   |   56 +-
 .../org/apache/jena/query/text/TS_Text.java     |    4 +-
 ...tDatasetWithLuceneMultilingualTextIndex.java |    2 +-
 .../TestDatasetWithLuceneStoredLiterals.java    |  248 ++
 ...tasetWithLuceneTextIndexDeletionSupport.java |  109 +
 ...DatasetWithLuceneTextIndexWithLangField.java |    2 +-
 .../text/TestLuceneWithMultipleThreads.java     |    2 +-
 .../assembler/TestTextDatasetAssembler.java     |    6 +
 pom.xml                                         |    2 +-
 488 files changed, 18522 insertions(+), 13332 deletions(-)
----------------------------------------------------------------------



[10/50] [abbrv] jena git commit: new QueryExecution operations: execConstrucQuads(), execConstructDataset()

Posted by an...@apache.org.
new QueryExecution operations: execConstrucQuads(),
execConstructDataset()

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 5076b1ed0844d0a1e7c57b539b64af3d831ee039
Parents: c475249
Author: confidencesun <co...@gmail.com>
Authored: Fri Jun 19 16:22:38 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Fri Jun 19 16:22:38 2015 +0800

----------------------------------------------------------------------
 jena-arq/Grammar/arq.jj                         |   4 +-
 jena-arq/Grammar/master.jj                      |   4 +-
 .../org/apache/jena/query/QueryExecution.java   |  32 ++++-
 .../jena/sparql/engine/QueryExecutionBase.java  | 116 ++++++++++++++-----
 .../sparql/engine/http/QueryEngineHTTP.java     |  11 ++
 .../apache/jena/sparql/lang/arq/ARQParser.java  |  86 +++++++-------
 .../jena/sparql/lang/arq/ARQParserBase.java     |  33 ++++++
 7 files changed, 202 insertions(+), 84 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/5076b1ed/jena-arq/Grammar/arq.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/arq.jj b/jena-arq/Grammar/arq.jj
index a344b94..0f1ef8e 100644
--- a/jena-arq/Grammar/arq.jj
+++ b/jena-arq/Grammar/arq.jj
@@ -149,9 +149,7 @@ void ConstructQuery() : { Template t ;
     {
       t = new Template(acc) ;
       getQuery().setConstructTemplate(t) ;
-      ElementPathBlock epb = new ElementPathBlock(acc.getBGP()) ;
-      ElementGroup elg = new ElementGroup() ;
-      elg.addElement(epb) ;
+   ElementGroup elg = createQueryPattern(t);
       getQuery().setQueryPattern(elg) ;
     }
  )

http://git-wip-us.apache.org/repos/asf/jena/blob/5076b1ed/jena-arq/Grammar/master.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/master.jj b/jena-arq/Grammar/master.jj
index aeddc84..4005ce0 100644
--- a/jena-arq/Grammar/master.jj
+++ b/jena-arq/Grammar/master.jj
@@ -259,9 +259,7 @@ void ConstructQuery() : { Template t ;
       t = new Template(acc) ;
       getQuery().setConstructTemplate(t) ;
       // Create a query in the same shape as the query created by writing out in full.
-      ElementPathBlock epb = new ElementPathBlock(acc.getBGP()) ;
-      ElementGroup elg = new ElementGroup() ;
-      elg.addElement(epb) ;
+	  ElementGroup elg = createQueryPattern(t);
       getQuery().setQueryPattern(elg) ;
     }
  )

http://git-wip-us.apache.org/repos/asf/jena/blob/5076b1ed/jena-arq/src/main/java/org/apache/jena/query/QueryExecution.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/query/QueryExecution.java b/jena-arq/src/main/java/org/apache/jena/query/QueryExecution.java
index c249724..affd46c 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/QueryExecution.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/QueryExecution.java
@@ -18,16 +18,25 @@
 
 package org.apache.jena.query;
 
-import java.util.Iterator ;
-import java.util.concurrent.TimeUnit ;
+import java.util.Iterator;
+import java.util.concurrent.TimeUnit;
 
-import org.apache.jena.graph.Triple ;
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.sparql.util.Context ;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.sparql.core.Quad;
+import org.apache.jena.sparql.util.Context;
 
 /** A interface for a single execution of a query. */
 
 
+/**
+ * @author Administrator
+ *
+ */
+/**
+ * @author Administrator
+ *
+ */
 public interface QueryExecution extends AutoCloseable 
 {
     /** Set the initial association of variables and values.
@@ -101,6 +110,19 @@ public interface QueryExecution extends AutoCloseable
      * by applying the CONSTRUCT template of the query to the bindings in the WHERE clause.
      */
     public Iterator<Triple> execConstructTriples();
+    
+    
+    /**
+     * Similar to execConstructTriples(), except that constructing {@link Quad}.
+     */
+    public Iterator<Quad> execConstructQuads();
+    
+    
+    /**
+     * Similar to execConstructTriples(), except that constructing {@link Dataset}.
+     */
+    public Dataset execConstructDataset();
+
 
     /** Execute a DESCRIBE query */
     public Model execDescribe();

http://git-wip-us.apache.org/repos/asf/jena/blob/5076b1ed/jena-arq/src/main/java/org/apache/jena/sparql/engine/QueryExecutionBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/QueryExecutionBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/QueryExecutionBase.java
index 444f83c..af66134 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/QueryExecutionBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/QueryExecutionBase.java
@@ -18,35 +18,50 @@
 
 package org.apache.jena.sparql.engine;
 
-import java.util.HashSet ;
-import java.util.Iterator ;
-import java.util.List ;
-import java.util.Set ;
-import java.util.concurrent.TimeUnit ;
-
-import org.apache.jena.atlas.lib.AlarmClock ;
-import org.apache.jena.atlas.logging.Log ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.graph.Triple ;
-import org.apache.jena.query.* ;
-import org.apache.jena.rdf.model.* ;
-import org.apache.jena.riot.system.IRIResolver ;
-import org.apache.jena.shared.PrefixMapping ;
-import org.apache.jena.sparql.ARQConstants ;
-import org.apache.jena.sparql.core.DatasetGraph ;
-import org.apache.jena.sparql.core.describe.DescribeHandler ;
-import org.apache.jena.sparql.core.describe.DescribeHandlerRegistry ;
-import org.apache.jena.sparql.engine.binding.Binding ;
-import org.apache.jena.sparql.engine.binding.BindingRoot ;
-import org.apache.jena.sparql.engine.binding.BindingUtils ;
-import org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper ;
-import org.apache.jena.sparql.graph.GraphFactory ;
-import org.apache.jena.sparql.modify.TemplateLib ;
-import org.apache.jena.sparql.syntax.ElementGroup ;
-import org.apache.jena.sparql.syntax.Template ;
-import org.apache.jena.sparql.util.Context ;
-import org.apache.jena.sparql.util.DatasetUtils ;
-import org.apache.jena.sparql.util.ModelUtils ;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.jena.atlas.lib.AlarmClock;
+import org.apache.jena.atlas.logging.Log;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.query.ARQ;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.query.DatasetFactory;
+import org.apache.jena.query.Query;
+import org.apache.jena.query.QueryCancelledException;
+import org.apache.jena.query.QueryExecException;
+import org.apache.jena.query.QueryExecution;
+import org.apache.jena.query.QuerySolution;
+import org.apache.jena.query.ResultSet;
+import org.apache.jena.query.Syntax;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.ModelFactory;
+import org.apache.jena.rdf.model.RDFNode;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.rdf.model.Statement;
+import org.apache.jena.riot.system.IRIResolver;
+import org.apache.jena.shared.PrefixMapping;
+import org.apache.jena.sparql.ARQConstants;
+import org.apache.jena.sparql.core.DatasetGraph;
+import org.apache.jena.sparql.core.DatasetGraphFactory;
+import org.apache.jena.sparql.core.Quad;
+import org.apache.jena.sparql.core.describe.DescribeHandler;
+import org.apache.jena.sparql.core.describe.DescribeHandlerRegistry;
+import org.apache.jena.sparql.engine.binding.Binding;
+import org.apache.jena.sparql.engine.binding.BindingRoot;
+import org.apache.jena.sparql.engine.binding.BindingUtils;
+import org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper;
+import org.apache.jena.sparql.graph.GraphFactory;
+import org.apache.jena.sparql.modify.TemplateLib;
+import org.apache.jena.sparql.syntax.ElementGroup;
+import org.apache.jena.sparql.syntax.Template;
+import org.apache.jena.sparql.util.Context;
+import org.apache.jena.sparql.util.DatasetUtils;
+import org.apache.jena.sparql.util.ModelUtils;
 
 /** All the SPARQL query result forms made from a graph-level execution object */ 
 
@@ -242,6 +257,49 @@ public class QueryExecutionBase implements QueryExecution
         Template template = query.getConstructTemplate() ;
         return TemplateLib.calcTriples(template.getTriples(), queryIterator);
     }
+    
+    @Override
+    public Iterator<Quad> execConstructQuads()
+    {
+        checkNotClosed() ;
+        if ( ! query.isConstructType() )
+            throw new QueryExecException("Attempt to get a CONSTRUCT model from a "+labelForQuery(query)+" query") ;
+        // This causes there to be no PROJECT around the pattern.
+        // That in turn, exposes the initial bindings.  
+        if ( ! Syntax.syntaxARQ.equals( query.getSyntax() ) )
+        	throw new QueryExecException("Attempt to CONSTRUCT quads from a "+labelForQuery(query)+" query, which is not ARQ Syntax") ;
+        	
+        query.setQueryResultStar(true) ;
+
+        startQueryIterator() ;
+        
+        Template template = query.getConstructTemplate() ;
+        return TemplateLib.calcQuads(template.getQuads(), queryIterator);
+    }
+    
+    @Override
+    public Dataset execConstructDataset(){
+    	
+    	DatasetGraph graph = DatasetGraphFactory.createMem();
+    	
+        checkNotClosed() ;
+        try
+        {
+            Iterator<Quad> it = execConstructQuads();
+                        
+            while (it.hasNext())
+            {
+                Quad q = it.next();
+                graph.add(q);
+            }
+        }
+        finally
+        {
+            this.close();
+        }
+        return DatasetFactory.create(graph);
+
+    }
 
     @Override
     public Model execDescribe()

http://git-wip-us.apache.org/repos/asf/jena/blob/5076b1ed/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/QueryEngineHTTP.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/QueryEngineHTTP.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/QueryEngineHTTP.java
index ef9b8f1..a35fffc 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/QueryEngineHTTP.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/QueryEngineHTTP.java
@@ -36,6 +36,7 @@ import org.apache.jena.rdf.model.Model ;
 import org.apache.jena.riot.* ;
 import org.apache.jena.riot.web.HttpOp ;
 import org.apache.jena.sparql.ARQException ;
+import org.apache.jena.sparql.core.Quad;
 import org.apache.jena.sparql.engine.ResultSetCheckCondition ;
 import org.apache.jena.sparql.graph.GraphFactory ;
 import org.apache.jena.sparql.resultset.CSVInput ;
@@ -390,6 +391,16 @@ public class QueryEngineHTTP implements QueryExecution {
     public Iterator<Triple> execConstructTriples() {
         return execTriples();
     }
+    
+    @Override
+    public Iterator<Quad> execConstructQuads(){
+    	return null;
+    }
+    
+    @Override
+    public Dataset execConstructDataset(){
+    	return null;
+    }
 
     @Override
     public Model execDescribe() {

http://git-wip-us.apache.org/repos/asf/jena/blob/5076b1ed/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 2b1e141..9bb2611 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
@@ -550,9 +550,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       SolutionModifier();
       t = new Template(acc) ;
       getQuery().setConstructTemplate(t) ;
-      ElementPathBlock epb = new ElementPathBlock(acc.getBGP()) ;
-      ElementGroup elg = new ElementGroup() ;
-      elg.addElement(epb) ;
+   ElementGroup elg = createQueryPattern(t);
       getQuery().setQueryPattern(elg) ;
       break;
     default:
@@ -5522,6 +5520,36 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     finally { jj_save(4, xla); }
   }
 
+  private boolean jj_3R_172() {
+    if (jj_scan_token(INTEGER_POSITIVE)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_167() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_172()) {
+    jj_scanpos = xsp;
+    if (jj_3R_173()) {
+    jj_scanpos = xsp;
+    if (jj_3R_174()) return true;
+    }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_72() {
+    if (jj_scan_token(DAY)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_71() {
+    if (jj_scan_token(MONTH)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
   private boolean jj_3R_70() {
     if (jj_scan_token(YEAR)) return true;
     if (jj_scan_token(LPAREN)) return true;
@@ -6035,14 +6063,14 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_121() {
-    if (jj_scan_token(AVG)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3_1() {
+    if (jj_3R_41()) return true;
     return false;
   }
 
-  private boolean jj_3_1() {
-    if (jj_3R_41()) return true;
+  private boolean jj_3R_121() {
+    if (jj_scan_token(AVG)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
@@ -6153,12 +6181,6 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_109() {
-    if (jj_scan_token(REPLACE)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
   private boolean jj_3R_113() {
     if (jj_3R_127()) return true;
     return false;
@@ -6174,6 +6196,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
+  private boolean jj_3R_109() {
+    if (jj_scan_token(REPLACE)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
   private boolean jj_3R_42() {
     Token xsp;
     while (true) {
@@ -6627,36 +6655,6 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_172() {
-    if (jj_scan_token(INTEGER_POSITIVE)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_167() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_172()) {
-    jj_scanpos = xsp;
-    if (jj_3R_173()) {
-    jj_scanpos = xsp;
-    if (jj_3R_174()) return true;
-    }
-    }
-    return false;
-  }
-
-  private boolean jj_3R_72() {
-    if (jj_scan_token(DAY)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_71() {
-    if (jj_scan_token(MONTH)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
   /** Generated Token Manager. */
   public ARQParserTokenManager token_source;
   JavaCharStream jj_input_stream;

http://git-wip-us.apache.org/repos/asf/jena/blob/5076b1ed/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
index 580aeac..3a11805 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
@@ -17,10 +17,22 @@
  */
 
 package org.apache.jena.sparql.lang.arq;
+import java.util.HashMap;
+import java.util.List;
+
 import org.apache.jena.atlas.json.io.JSONHandler ;
 import org.apache.jena.atlas.json.io.JSONHandlerBase ;
 import org.apache.jena.atlas.lib.NotImplemented ;
+import org.apache.jena.graph.Node;
+import org.apache.jena.sparql.core.BasicPattern;
+import org.apache.jena.sparql.core.Quad;
 import org.apache.jena.sparql.lang.SPARQLParserBase ;
+import org.apache.jena.sparql.syntax.Element;
+import org.apache.jena.sparql.syntax.ElementGroup;
+import org.apache.jena.sparql.syntax.ElementNamedGraph;
+import org.apache.jena.sparql.syntax.ElementPathBlock;
+import org.apache.jena.sparql.syntax.Template;
+import org.apache.jena.util.PrintUtil;
 
 class ARQParserBase
     extends SPARQLParserBase
@@ -67,4 +79,25 @@ class ARQParserBase
     protected void jsonValueNull(long currLine, long currCol)                    { handler.valueNull(currLine, currCol) ; }
     
     protected void jsonValueVar(String image, long currLine, long currCol)       { throw new NotImplemented("yet") ; }
+    protected ElementGroup createQueryPattern(Template t){
+        ElementGroup elg = new ElementGroup();
+        List<Quad> quads = t.getQuads();
+        HashMap<Node, BasicPattern> graphs = new HashMap<Node, BasicPattern>();
+        for (Quad q: quads){
+          BasicPattern bgp = graphs.get(q.getGraph());
+          if (bgp == null){
+            bgp = new BasicPattern();
+            graphs.put(q.getGraph(), bgp);
+          }
+          bgp.add( q.asTriple() );
+        }
+        for(Node n: graphs.keySet()){
+          Element el = new ElementPathBlock(graphs.get(n));
+          if(! Quad.defaultGraphIRI.equals(n) ){
+            el = new ElementNamedGraph(n, el);
+          }
+          elg.addElement(el);
+        }
+        return elg;
+    }
 }


[29/50] [abbrv] jena git commit: fix hashCode for re-parsing query

Posted by an...@apache.org.
fix hashCode for re-parsing query

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 36d32da64b53d4af930f9395b2fd90c7d302b30f
Parents: 4bb4a7f
Author: confidencesun <co...@gmail.com>
Authored: Thu Aug 6 10:05:04 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Thu Aug 6 10:05:04 2015 +0800

----------------------------------------------------------------------
 .../constructquads/ExampleConstructQuads.java   | 228 ++++++++++---------
 .../jena/sparql/lang/arq/ARQParserBase.java     |  12 +-
 .../jena/sparql/serializer/FmtTemplate.java     |  59 +++--
 .../org/apache/jena/sparql/syntax/Template.java |  28 ++-
 4 files changed, 169 insertions(+), 158 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/36d32da6/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
----------------------------------------------------------------------
diff --git a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
index 0f509b0..ff54915 100644
--- a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
+++ b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
@@ -46,119 +46,119 @@ import org.apache.jena.util.PrintUtil;
 public class ExampleConstructQuads {
 	public static void main(String[] args) throws FileNotFoundException, IOException {
 
-		// create testing data :
-		// 1) default graph data
-		Model model = ModelFactory.createDefaultModel();
-		Resource s = model.createResource("http://eg.com/s");
-		Property p = model.createProperty("http://eg.com/p");
-		Resource o = model.createResource("http://eg.com/o");
-		model.add(s, p, o);
-		Dataset dataset = DatasetFactory.create(model);
-		// 2) named graph data
-		Model model1 = ModelFactory.createDefaultModel();
-		Resource s1 = model.createResource("http://eg.com/s1");
-		Property p1 = model.createProperty("http://eg.com/p1");
-		Resource o1 = model.createResource("http://eg.com/o1");
-		model1.add(s1, p1, o1);
-		dataset.addNamedModel("http://eg.com/g1", model1);
-
-		// construct named graph
-		System.out.println("construct named graph:");
-		String queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
-		Query query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		try (QueryExecution qexec = QueryExecutionFactory
-				.create(query, dataset)) {
-			Iterator<Quad> quads = qexec.execConstructQuads();
-			PrintUtil.printOut(quads);
-		}
-		arq.qparse.main("--in", "arq", queryString);
-
-		// construct default graph 1
-		System.out.println("construct default graph 1:");
-		queryString = "CONSTRUCT {  {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
-		try (QueryExecution qexec = QueryExecutionFactory
-				.create(query, dataset)) {
-			Iterator<Quad> quads = qexec.execConstructQuads();
-			PrintUtil.printOut(quads);
-		}
-		arq.qparse.main("--in", "arq", queryString);
-
-		// construct default graph 2
-		System.out.println("construct default graph 2:");
-		queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o}  WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
-		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		try (QueryExecution qexec = QueryExecutionFactory
-				.create(query, dataset)) {
-			Iterator<Quad> quads = qexec.execConstructQuads();
-			PrintUtil.printOut(quads);
-		}
-		arq.qparse.main("--in", "arq", queryString);
-
-		// construct triples
-		System.out.println("construct default graph 2:");
-		queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o}  WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
-		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		try (QueryExecution qexec = QueryExecutionFactory
-				.create(query, dataset)) {
-			Iterator<Triple> triples = qexec.execConstructTriples();
-			PrintUtil.printOut(triples);
-		}
-		arq.qparse.main("--in", "arq", queryString);
-
-		// construct dataset
-		System.out.println("construct dataset:");
-		queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
-		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		try (QueryExecution qexec = QueryExecutionFactory
-				.create(query, dataset)) {
-			Dataset d = qexec.execConstructDataset();
-			RDFDataMgr.write(System.out, d, Lang.TRIG);
-		}
-		arq.qparse.main("--in", "arq", queryString);
-
-		// short form 1
-		System.out.println("short form 1:");
-		queryString = "CONSTRUCT WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
-		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		try (QueryExecution qexec = QueryExecutionFactory
-				.create(query, dataset)) {
-			Iterator<Quad> quads = qexec.execConstructQuads();
-			PrintUtil.printOut(quads);
-		}
-		arq.qparse.main("--in", "arq", queryString);
-
-		// short form 2
-		System.out.println("short form 2:");
-		queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }";
-		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		try (QueryExecution qexec = QueryExecutionFactory
-				.create(query, dataset)) {
-			Iterator<Quad> quads = qexec.execConstructQuads();
-			PrintUtil.printOut(quads);
-		}
-		arq.qparse.main("--in", "arq", queryString);
-
-		// short form 3
-		System.out.println("short form 3:");
-		queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }";
-		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		try (QueryExecution qexec = QueryExecutionFactory
-				.create(query, dataset)) {
-			Iterator<Triple> triples = qexec.execConstructTriples();
-			PrintUtil.printOut(triples);
-		}
-		arq.qparse.main("--in", "arq", queryString);
-
-		// short form 4
-		System.out.println("short form 4:");
-		queryString = "CONSTRUCT WHERE{ {<http://eg.com/s> <http://eg.com/p> ?o} }";
-		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		try (QueryExecution qexec = QueryExecutionFactory
-				.create(query, dataset)) {
-			Iterator<Quad> quads = qexec.execConstructQuads();
-			PrintUtil.printOut(quads);
-		}
-		arq.qparse.main("--in", "arq", queryString);
+//		// create testing data :
+//		// 1) default graph data
+//		Model model = ModelFactory.createDefaultModel();
+//		Resource s = model.createResource("http://eg.com/s");
+//		Property p = model.createProperty("http://eg.com/p");
+//		Resource o = model.createResource("http://eg.com/o");
+//		model.add(s, p, o);
+//		Dataset dataset = DatasetFactory.create(model);
+//		// 2) named graph data
+//		Model model1 = ModelFactory.createDefaultModel();
+//		Resource s1 = model.createResource("http://eg.com/s1");
+//		Property p1 = model.createProperty("http://eg.com/p1");
+//		Resource o1 = model.createResource("http://eg.com/o1");
+//		model1.add(s1, p1, o1);
+//		dataset.addNamedModel("http://eg.com/g1", model1);
+//
+//		// construct named graph
+//		System.out.println("construct named graph:");
+//		String queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+//		Query query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+//		try (QueryExecution qexec = QueryExecutionFactory
+//				.create(query, dataset)) {
+//			Iterator<Quad> quads = qexec.execConstructQuads();
+//			PrintUtil.printOut(quads);
+//		}
+//		arq.qparse.main("--in", "arq", queryString);
+//
+//		// construct default graph 1
+//		System.out.println("construct default graph 1:");
+//		queryString = "CONSTRUCT {  {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+//		try (QueryExecution qexec = QueryExecutionFactory
+//				.create(query, dataset)) {
+//			Iterator<Quad> quads = qexec.execConstructQuads();
+//			PrintUtil.printOut(quads);
+//		}
+//		arq.qparse.main("--in", "arq", queryString);
+//
+//		// construct default graph 2
+//		System.out.println("construct default graph 2:");
+//		queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o}  WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+//		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+//		try (QueryExecution qexec = QueryExecutionFactory
+//				.create(query, dataset)) {
+//			Iterator<Quad> quads = qexec.execConstructQuads();
+//			PrintUtil.printOut(quads);
+//		}
+//		arq.qparse.main("--in", "arq", queryString);
+//
+//		// construct triples
+//		System.out.println("construct default graph 2:");
+//		queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o}  WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+//		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+//		try (QueryExecution qexec = QueryExecutionFactory
+//				.create(query, dataset)) {
+//			Iterator<Triple> triples = qexec.execConstructTriples();
+//			PrintUtil.printOut(triples);
+//		}
+//		arq.qparse.main("--in", "arq", queryString);
+//
+//		// construct dataset
+//		System.out.println("construct dataset:");
+//		queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+//		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+//		try (QueryExecution qexec = QueryExecutionFactory
+//				.create(query, dataset)) {
+//			Dataset d = qexec.execConstructDataset();
+//			RDFDataMgr.write(System.out, d, Lang.TRIG);
+//		}
+//		arq.qparse.main("--in", "arq", queryString);
+//
+//		// short form 1
+//		System.out.println("short form 1:");
+//		queryString = "CONSTRUCT WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+//		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+//		try (QueryExecution qexec = QueryExecutionFactory
+//				.create(query, dataset)) {
+//			Iterator<Quad> quads = qexec.execConstructQuads();
+//			PrintUtil.printOut(quads);
+//		}
+//		arq.qparse.main("--in", "arq", queryString);
+//
+//		// short form 2
+//		System.out.println("short form 2:");
+//		queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }";
+//		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+//		try (QueryExecution qexec = QueryExecutionFactory
+//				.create(query, dataset)) {
+//			Iterator<Quad> quads = qexec.execConstructQuads();
+//			PrintUtil.printOut(quads);
+//		}
+//		arq.qparse.main("--in", "arq", queryString);
+//
+//		// short form 3
+//		System.out.println("short form 3:");
+//		queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }";
+//		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+//		try (QueryExecution qexec = QueryExecutionFactory
+//				.create(query, dataset)) {
+//			Iterator<Triple> triples = qexec.execConstructTriples();
+//			PrintUtil.printOut(triples);
+//		}
+//		arq.qparse.main("--in", "arq", queryString);
+//
+//		// short form 4
+//		System.out.println("short form 4:");
+//		queryString = "CONSTRUCT WHERE{ {<http://eg.com/s> <http://eg.com/p> ?o} }";
+//		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+//		try (QueryExecution qexec = QueryExecutionFactory
+//				.create(query, dataset)) {
+//			Iterator<Quad> quads = qexec.execConstructQuads();
+//			PrintUtil.printOut(quads);
+//		}
+//		arq.qparse.main("--in", "arq", queryString);
 
 		// run-construct-quad-test
 		System.out.println("run-construct-quad-test:");
@@ -171,7 +171,9 @@ public class ExampleConstructQuads {
 						return false;
 					}
 				});
+		int i=0;
 		for (File test : tests) {
+//			if (++i != 4) continue;
 			System.out.println("======== File: "+test.getName());
 			try (BufferedReader br = new BufferedReader(new FileReader(test))) {
 				String line = null;

http://git-wip-us.apache.org/repos/asf/jena/blob/36d32da6/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
index bb2a01b..abfb512 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
@@ -19,6 +19,7 @@
 package org.apache.jena.sparql.lang.arq;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.jena.atlas.json.io.JSONHandler ;
 import org.apache.jena.atlas.json.io.JSONHandlerBase ;
@@ -81,16 +82,7 @@ class ARQParserBase
     protected void jsonValueVar(String image, long currLine, long currCol)       { throw new NotImplemented("yet") ; }
     protected ElementGroup createQueryPattern(Template t){
         ElementGroup elg = new ElementGroup();
-        List<Quad> quads = t.getQuads();
-        HashMap<Node, BasicPattern> graphs = new HashMap<>();
-        for (Quad q: quads){
-          BasicPattern bgp = graphs.get(q.getGraph());
-          if (bgp == null){
-            bgp = new BasicPattern();
-            graphs.put(q.getGraph(), bgp);
-          }
-          bgp.add( q.asTriple() );
-        }
+        Map<Node, BasicPattern> graphs = t.getGraphPattern();
         for(Node n: graphs.keySet()){
           Element el = new ElementPathBlock(graphs.get(n));
           if(! Quad.defaultGraphNodeGenerated.equals(n) ){

http://git-wip-us.apache.org/repos/asf/jena/blob/36d32da6/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
index d422d1c..facb963 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
@@ -18,8 +18,12 @@
 
 package org.apache.jena.sparql.serializer;
 
+import java.util.List;
+
 import org.apache.jena.atlas.io.IndentedLineBuffer;
 import org.apache.jena.atlas.io.IndentedWriter;
+import org.apache.jena.sparql.core.BasicPattern;
+import org.apache.jena.sparql.core.Quad;
 import org.apache.jena.sparql.syntax.Template;
 import org.apache.jena.sparql.util.FmtUtils;
 
@@ -52,35 +56,42 @@ public class FmtTemplate extends FormatterBase
     @Override
     public void format(Template template)
     {
-    	
-    	if (template.isConstructQuadTemplate()){
-            out.print("{") ;
-            out.incIndent(INDENT) ;
-            out.pad() ;
-            
-    		out.print("GRAPH");
-    		out.print(" ");
-    		out.print(FmtUtils.stringForNode(template.getGraphNode()));
-    		out.print(" ");
-    	}
-    	
-    
         out.print("{") ;
         out.incIndent(INDENT) ;
         out.pad() ;
-    
-        formatTriples(template.getBGP()) ;
         
-        out.decIndent(INDENT) ;
-        out.print("}") ;
-        out.newline() ;
-        
-    	if (template.isConstructQuadTemplate()){
-            out.decIndent(INDENT) ;
-            out.print("}") ;
-            out.newline() ;
-    	}
+        List<Quad> quads = template.getQuads();
+        for(Quad quad: quads){
+          BasicPattern bgp = new BasicPattern();
+          bgp.add(quad.asTriple());
+          out.newline() ;
+          if(! Quad.defaultGraphNodeGenerated.equals(quad.getGraph()) ){
 
+        	out.print("GRAPH");
+      		out.print(" ");
+      		out.print(FmtUtils.stringForNode(quad.getGraph()));
+      		out.print(" ");
+      		
+      		out.newline() ;
+            out.incIndent(INDENT) ;
+            out.pad() ;
+            out.print("{") ;
+            out.incIndent(INDENT) ;
+            out.pad() ;
+          }
+          
+          formatTriples(bgp) ;
+          
+          if(! Quad.defaultGraphNodeGenerated.equals(quad.getGraph()) ){
+              out.decIndent(INDENT) ;
+              out.print("}") ;
+              out.decIndent(INDENT) ;
+          }
+       }
+       out.newline() ;
+       out.decIndent(INDENT) ;
+       out.print("}") ;
+       out.newline() ;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/36d32da6/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
index eb970c1..3955866 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
@@ -20,9 +20,11 @@ package org.apache.jena.sparql.syntax;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.jena.ext.com.google.common.collect.Multimap;
 import org.apache.jena.graph.Node;
 import org.apache.jena.graph.Triple;
 import org.apache.jena.sparql.core.BasicPattern;
@@ -54,17 +56,6 @@ public class Template
     	this.qp = null;
     }
     
-    public boolean isConstructQuadTemplate(){
-    	return this.qp != null && ! this.getQuads().isEmpty();
-    }
-    
-    public Node getGraphNode() {
-    	if (!this.isConstructQuadTemplate()){
-    		return null;
-    	}
-    	return this.getQuads().get(0).getGraph();
-    }
-
 //    public void addTriple(Triple t) { quads.addTriple(t) ; }
 //    public int mark() { return quads.mark() ; }
 //    public void addTriple(int index, Triple t) { quads.addTriple(index, t) ; }
@@ -106,6 +97,21 @@ public class Template
     	}   	
     	return qp.getQuads() ; 
     }
+    
+    public Map<Node, BasicPattern> getGraphPattern(){
+        List<Quad> quads = getQuads();
+        HashMap<Node, BasicPattern> graphs = new HashMap<>();
+        for (Quad q: quads){
+          BasicPattern bgp = graphs.get(q.getGraph());
+          if (bgp == null){
+            bgp = new BasicPattern();
+            graphs.put(q.getGraph(), bgp);
+          }
+          bgp.add( q.asTriple() );
+        }
+        return graphs;
+    }
+
     // -------------------------
 
     public void subst(Collection<Triple> acc, Map<Node, Node> bNodeMap, Binding b)


[46/50] [abbrv] jena git commit: Add another null InputStream check.

Posted by an...@apache.org.
Add another null InputStream check.

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

Branch: refs/heads/JENA-491-construct-quads
Commit: b2045b222a3cfcbac511a8d2719689992369a9d3
Parents: 96e3629
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Aug 15 23:02:36 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Aug 15 23:02:36 2015 +0100

----------------------------------------------------------------------
 jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/b2045b22/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
index 2180a19..3a511f8 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
@@ -252,6 +252,7 @@ public class RDFDataMgr
      * @param lang      Language syntax
      */
     public static void read(Graph graph, InputStream in, String base, Lang lang) {
+        Objects.requireNonNull(in, "InputStream is null") ;
         StreamRDF dest = StreamRDFLib.graph(graph) ;
         process(dest, new TypedInputStream(in), base, lang, null) ;
     }


[15/50] [abbrv] jena git commit: Merge remote-tracking branch 'origin/JENA-491'

Posted by an...@apache.org.
Merge remote-tracking branch 'origin/JENA-491'

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

Branch: refs/heads/JENA-491-construct-quads
Commit: e58b62cb2e288cc71754776e00179cd011ecdf5f
Parents: 1348bf5 5e56c1f
Author: confidencesun <co...@gmail.com>
Authored: Wed Jul 22 15:07:10 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Wed Jul 22 15:07:10 2015 +0800

----------------------------------------------------------------------
 jena-arq/Grammar/arq.jj                         |   37 +-
 jena-arq/Grammar/master.jj                      |   73 +
 .../constructquads/ExampleConstructQuads.java   |  141 ++
 .../org/apache/jena/query/QueryExecution.java   |   32 +-
 .../jena/sparql/engine/QueryExecutionBase.java  |  116 +-
 .../sparql/engine/http/QueryEngineHTTP.java     |   11 +
 .../apache/jena/sparql/lang/arq/ARQParser.java  | 1800 +++++++++---------
 .../jena/sparql/lang/arq/ARQParserBase.java     |   33 +
 .../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 ++--
 .../lang/sparql_11/SPARQLParser11Constants.java | 1224 ++++++------
 .../jena/sparql/lang/sparql_11/Token.java       |    2 +-
 .../sparql/lang/sparql_11/TokenMgrError.java    |    2 +-
 .../org/apache/jena/sparql/syntax/Template.java |  103 +-
 19 files changed, 4266 insertions(+), 3794 deletions(-)
----------------------------------------------------------------------



[45/50] [abbrv] jena git commit: Add some null InputStream checking. Reformat and tidy.

Posted by an...@apache.org.
Add some null InputStream checking.  Reformat and tidy.

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 96e3629e86ea85c535a416cdc5682535f8063d50
Parents: f6beee6
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Aug 15 22:26:47 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Aug 15 22:26:47 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/jena/riot/RDFDataMgr.java   | 421 +++++++------------
 .../jena/riot/adapters/JenaReadersWriters.java  |   3 -
 2 files changed, 141 insertions(+), 283 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/96e3629e/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
index 64fa07f..2180a19 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
@@ -20,6 +20,7 @@ package org.apache.jena.riot;
 
 import java.io.* ;
 import java.util.Iterator ;
+import java.util.Objects ;
 
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.Lib ;
@@ -250,8 +251,7 @@ public class RDFDataMgr
      * @param base      Base URI 
      * @param lang      Language syntax
      */
-    public static void read(Graph graph, InputStream in, String base, Lang lang)
-    {
+    public static void read(Graph graph, InputStream in, String base, Lang lang) {
         StreamRDF dest = StreamRDFLib.graph(graph) ;
         process(dest, new TypedInputStream(in), base, lang, null) ;
     }
@@ -266,8 +266,7 @@ public class RDFDataMgr
      * @param lang      Language syntax
      */
     @Deprecated
-    public static void read(Model model, Reader in, String base, Lang lang)
-    {
+    public static void read(Model model, Reader in, String base, Lang lang) {
         read(model.getGraph(), in, base,  lang) ;
     }
 
@@ -281,8 +280,7 @@ public class RDFDataMgr
      * @param lang      Language syntax
      */
     @Deprecated
-    public static void read(Graph graph, Reader in, String base, Lang lang)
-    {
+    public static void read(Graph graph, Reader in, String base, Lang lang) {
         StreamRDF dest = StreamRDFLib.graph(graph) ;
         process(dest, in, base, lang, null) ;
     }
@@ -293,8 +291,7 @@ public class RDFDataMgr
      * @param base      Base URI 
      * @param lang      Language syntax
      */
-    public static void read(Model model, StringReader in, String base, Lang lang)
-    {
+    public static void read(Model model, StringReader in, String base, Lang lang) {
         Graph g = model.getGraph() ;
         StreamRDF dest = StreamRDFLib.graph(g) ;
         process(dest, in, base, lang, null) ;
@@ -306,8 +303,7 @@ public class RDFDataMgr
      * @param base      Base URI 
      * @param lang      Language syntax
      */
-    public static void read(Graph graph, StringReader in, String base, Lang lang)
-    {
+    public static void read(Graph graph, StringReader in, String base, Lang lang) {
         StreamRDF dest = StreamRDFLib.graph(graph) ;
         process(dest, in, base, lang, null) ;
     }
@@ -321,8 +317,7 @@ public class RDFDataMgr
     /** Create a memory Model and read in some data
      * @see #read(Model,String) 
      */ 
-    public static Model loadModel(String uri)
-    { 
+    public static Model loadModel(String uri) { 
         Model m = createModel() ;
         read(m, uri) ;
         return m ;
@@ -331,8 +326,7 @@ public class RDFDataMgr
     /** Create a memory Model and read in some data
      * @see #read(Model,String,Lang) 
      */
-    public static Model loadModel(String uri, Lang lang)
-	{
+    public static Model loadModel(String uri, Lang lang) {
 		Model m = createModel() ;
         read(m, uri,lang) ;
         return m ;
@@ -344,8 +338,7 @@ public class RDFDataMgr
     /** Create a memory Graph and read in some data
      * @see #read(Graph,String) 
      */ 
-    public static Graph loadGraph(String uri)
-	{ 
+    public static Graph loadGraph(String uri) { 
         Graph g = createGraph() ;
         read(g, uri) ;
         return g ;
@@ -354,8 +347,7 @@ public class RDFDataMgr
 	/** Create a memory Graph and read in some data
      * @see #read(Graph,String,Lang) 
      */ 
-    public static Graph loadGraph(String uri, Lang lang)
-	{ 
+    public static Graph loadGraph(String uri, Lang lang) { 
         Graph g = createGraph() ;
         read(g, uri, lang) ;
         return g ;
@@ -367,8 +359,7 @@ public class RDFDataMgr
 	/** Create a memory Dataset and read in some data
      * @see #read(Dataset,String) 
      */ 
-    public static Dataset loadDataset(String uri)
-	{ 
+    public static Dataset loadDataset(String uri) { 
         Dataset ds = createDataset() ;
         read(ds, uri) ;
         return ds ;
@@ -377,8 +368,7 @@ public class RDFDataMgr
 	/** Create a memory Dataset and read in some data
      * @see #read(Dataset,String,Lang) 
      */
-    public static Dataset loadDataset(String uri, Lang lang)
-	{
+    public static Dataset loadDataset(String uri, Lang lang) {
         Dataset ds = createDataset() ;
         read(ds, uri, lang) ;
         return ds ;
@@ -391,8 +381,7 @@ public class RDFDataMgr
 	/** Create a memory DatasetGraph and read in some data
      * @see #read(DatasetGraph,String) 
      */ 
-    public static DatasetGraph loadDatasetGraph(String uri)
-	{
+    public static DatasetGraph loadDatasetGraph(String uri)	{
 		DatasetGraph ds = createDatasetGraph() ;
         read(ds, uri) ;
         return ds ;
@@ -400,8 +389,7 @@ public class RDFDataMgr
 	/** Create a memory DatasetGraph and read in some data
      * @see #read(DatasetGraph,String,Lang) 
      */
-    public static DatasetGraph loadDatasetGraph(String uri, Lang lang)
-	{
+    public static DatasetGraph loadDatasetGraph(String uri, Lang lang) {
 		DatasetGraph ds = createDatasetGraph() ;
         read(ds, uri, lang) ;
         return ds ;	
@@ -416,8 +404,7 @@ public class RDFDataMgr
      * @param dataset   Destination
      * @param uri       URI to read from (includes file: and a plain file name).
      */
-    public static void read(Dataset dataset, String uri)
-    {
+    public static void read(Dataset dataset, String uri) {
         read(dataset.asDatasetGraph(), uri) ;
     }
 
@@ -426,8 +413,7 @@ public class RDFDataMgr
      * @param dataset   Destination
      * @param uri       URI to read from (includes file: and a plain file name).
      */
-    public static void read(DatasetGraph dataset, String uri)
-    {
+    public static void read(DatasetGraph dataset, String uri) {
         read(dataset, uri, null) ;
     }
 
@@ -437,8 +423,7 @@ public class RDFDataMgr
      * @param uri       URI to read from (includes file: and a plain file name).
      * @param hintLang  Language syntax
      */
-    public static void read(Dataset dataset, String uri, Lang hintLang)
-    {
+    public static void read(Dataset dataset, String uri, Lang hintLang) {
         read(dataset.asDatasetGraph(), uri, hintLang) ;
     }
 
@@ -448,8 +433,7 @@ public class RDFDataMgr
      * @param uri       URI to read from (includes file: and a plain file name).
      * @param hintLang  Language syntax
      */
-    public static void read(DatasetGraph dataset, String uri, Lang hintLang)
-    {
+    public static void read(DatasetGraph dataset, String uri, Lang hintLang) {
         read(dataset, uri, hintLang, null) ;
     }
 
@@ -460,8 +444,7 @@ public class RDFDataMgr
      * @param base      Base URI (defaults to uri).
      * @param hintLang  Language syntax
      */
-    public static void read(Dataset dataset, String uri, String base, Lang hintLang)
-    {
+    public static void read(Dataset dataset, String uri, String base, Lang hintLang) {
         read(dataset.asDatasetGraph(), uri, base, hintLang) ;
     }
 
@@ -472,8 +455,7 @@ public class RDFDataMgr
      * @param base      Base URI (defaults to uri).
      * @param hintLang  Language syntax
      */
-    public static void read(DatasetGraph dataset, String uri, String base, Lang hintLang)
-    {
+    public static void read(DatasetGraph dataset, String uri, String base, Lang hintLang) {
         read(dataset, uri, base, hintLang, null) ;
     }
 
@@ -484,8 +466,7 @@ public class RDFDataMgr
      * @param uri       URI to read from (includes file: and a plain file name).
      * @param hintLang  Language syntax
      */
-    public static void read(Dataset dataset, String uri, Lang hintLang, Context context)
-    {
+    public static void read(Dataset dataset, String uri, Lang hintLang, Context context) {
         read(dataset.asDatasetGraph(), uri, hintLang, context) ;
     }
     
@@ -495,8 +476,7 @@ public class RDFDataMgr
      * @param uri       URI to read from (includes file: and a plain file name).
      * @param hintLang  Language syntax
      */
-    public static void read(DatasetGraph dataset, String uri, Lang hintLang, Context context)
-    {
+    public static void read(DatasetGraph dataset, String uri, Lang hintLang, Context context) {
         read(dataset, uri, uri, hintLang, context) ;
     }
     
@@ -511,8 +491,7 @@ public class RDFDataMgr
 	 * Throws parse errors depending on the language and reader; the dataset may be partially updated. 
 	 */ 
 
-    public static void read(Dataset dataset, String uri, String base, Lang hintLang, Context context)
-    {
+    public static void read(Dataset dataset, String uri, String base, Lang hintLang, Context context) {
 		read(dataset.asDatasetGraph(), uri, uri, hintLang, context) ;
     }
 
@@ -527,8 +506,7 @@ public class RDFDataMgr
 	 * Throws parse errors depending on the language and reader; the dataset may be partially updated. 
 	 */ 
 
-    public static void read(DatasetGraph dataset, String uri, String base, Lang hintLang, Context context)
-    {
+    public static void read(DatasetGraph dataset, String uri, String base, Lang hintLang, Context context) {
         StreamRDF sink = StreamRDFLib.dataset(dataset) ;
         parse(sink, uri, base, hintLang, context) ;
     }
@@ -538,8 +516,7 @@ public class RDFDataMgr
      * @param in        InputStream
      * @param lang      Language syntax
      */
-    public static void read(Dataset dataset, InputStream in, Lang lang)
-    {
+    public static void read(Dataset dataset, InputStream in, Lang lang) {
         read(dataset.asDatasetGraph(), in, lang) ;
     }
     
@@ -548,8 +525,7 @@ public class RDFDataMgr
      * @param in        InputStream
      * @param lang      Language syntax
      */
-    public static void read(DatasetGraph dataset, InputStream in, Lang lang)
-    {
+    public static void read(DatasetGraph dataset, InputStream in, Lang lang) {
         read(dataset, in, null, lang) ;
     }
     
@@ -559,8 +535,7 @@ public class RDFDataMgr
      * @param base      Base URI
      * @param lang      Language syntax
      */
-    public static void read(Dataset dataset, InputStream in, String base, Lang lang)
-    {
+    public static void read(Dataset dataset, InputStream in, String base, Lang lang) {
         read(dataset.asDatasetGraph(), in, base, lang) ; 
     }
     
@@ -570,8 +545,8 @@ public class RDFDataMgr
      * @param base      Base URI
      * @param lang      Language syntax
      */
-    public static void read(DatasetGraph dataset, InputStream in, String base, Lang lang)
-    {
+    public static void read(DatasetGraph dataset, InputStream in, String base, Lang lang) {
+        Objects.requireNonNull(in, "InputStream is null") ;
         StreamRDF dest = StreamRDFLib.dataset(dataset) ;
         process(dest, new TypedInputStream(in), base, lang, null) ;
     }
@@ -586,8 +561,7 @@ public class RDFDataMgr
      * @deprecated use an InputStream or a StringReader.
      */
     @Deprecated
-    public static void read(Dataset dataset, Reader in, String base, Lang lang)
-    {
+    public static void read(Dataset dataset, Reader in, String base, Lang lang) {
 		read(dataset.asDatasetGraph(), in, base, lang) ;
     }
 
@@ -601,8 +575,7 @@ public class RDFDataMgr
      * @deprecated use an InputStream or a StringReader.
      */
     @Deprecated
-    public static void read(DatasetGraph dataset, Reader in, String base, Lang lang)
-    {
+    public static void read(DatasetGraph dataset, Reader in, String base, Lang lang) {
         StreamRDF dest = StreamRDFLib.dataset(dataset) ;
         process(dest, in, base, lang, null) ;
     }
@@ -628,8 +601,7 @@ public class RDFDataMgr
      * @param base      Base URI
      * @param lang      Language syntax
      */
-    public static void read(DatasetGraph dataset, StringReader in, String base, Lang lang)
-    {
+    public static void read(DatasetGraph dataset, StringReader in, String base, Lang lang) {
         StreamRDF dest = StreamRDFLib.dataset(dataset) ;
         process(dest, in, base, lang, null) ;
     }
@@ -638,8 +610,7 @@ public class RDFDataMgr
      * @param sink     Destination for the RDF read.
      * @param uri       URI to read from (includes file: and a plain file name).
      */
-    public static void parse(StreamRDF sink, String uri)
-    {
+    public static void parse(StreamRDF sink, String uri) {
         parse(sink, uri, null) ;
     }
 
@@ -648,8 +619,7 @@ public class RDFDataMgr
      * @param uri       URI to read from (includes file: and a plain file name).
      * @param lang      Hint for the syntax
      */
-    public static void parse(StreamRDF sink, String uri, Lang lang)
-    {
+    public static void parse(StreamRDF sink, String uri, Lang lang) {
         parse(sink, uri, lang, null) ;
     }
 
@@ -660,8 +630,7 @@ public class RDFDataMgr
      * @param hintLang  Hint for the syntax
      * @param context   Content object to control reading process.
      */
-    public static void parse(StreamRDF sink, String uri, Lang hintLang, Context context)
-    {
+    public static void parse(StreamRDF sink, String uri, Lang hintLang, Context context) {
         parse(sink, uri, uri, hintLang, context) ;
     }
 
@@ -672,8 +641,7 @@ public class RDFDataMgr
      * @param hintLang  Hint for the syntax
      * @param context   Content object to control reading process.
      */
-    public static void parse(StreamRDF sink, String uri, String base, Lang hintLang, Context context)
-    {
+    public static void parse(StreamRDF sink, String uri, String base, Lang hintLang, Context context) {
         if ( uri == null )
             throw new IllegalArgumentException("URI to read from is null") ;
         if ( base == null )
@@ -692,8 +660,7 @@ public class RDFDataMgr
      * @param in        Bytes to read.
      * @param lang      Syntax for the stream.
      */
-    public static void parse(StreamRDF sink, InputStream in, Lang lang)
-    {
+    public static void parse(StreamRDF sink, InputStream in, Lang lang) {
         parse(sink, in, null, lang, null) ;  
     }
 
@@ -703,8 +670,7 @@ public class RDFDataMgr
      * @param base      Base URI (defaults to uri).
      * @param hintLang  Hint for the syntax
      */
-    public static void parse(StreamRDF sink, InputStream in, String base, Lang hintLang)
-    {
+    public static void parse(StreamRDF sink, InputStream in, String base, Lang hintLang) {
         parse(sink, in, base, hintLang, null) ;  
     }
 
@@ -715,8 +681,7 @@ public class RDFDataMgr
      * @param hintLang  Hint for the syntax
      * @param context   Content object to control reading process.
      */
-    public static void parse(StreamRDF sink, StringReader in, String base, Lang hintLang, Context context)
-    {
+    public static void parse(StreamRDF sink, StringReader in, String base, Lang hintLang, Context context) {
         process(sink, in, base, hintLang, context) ;
     }
 
@@ -725,8 +690,7 @@ public class RDFDataMgr
      * @param in        StringReader
      * @param lang      Syntax for the stream.
      */
-    public static void parse(StreamRDF sink, StringReader in, Lang lang)
-    {
+    public static void parse(StreamRDF sink, StringReader in, Lang lang) {
         parse(sink, in, null, lang, null) ;  
     }
 
@@ -736,8 +700,7 @@ public class RDFDataMgr
      * @param base      Base URI (defaults to uri).
      * @param hintLang  Hint for the syntax
      */
-    public static void parse(StreamRDF sink, StringReader in, String base, Lang hintLang)
-    {
+    public static void parse(StreamRDF sink, StringReader in, String base, Lang hintLang) {
         parse(sink, in, base, hintLang, null) ;  
     }
 
@@ -750,8 +713,7 @@ public class RDFDataMgr
      * @deprecated     Use an InputStream or a StringReader. 
      */
     @Deprecated
-    public static void parse(StreamRDF sink, Reader in, String base, Lang hintLang, Context context)
-    {
+    public static void parse(StreamRDF sink, Reader in, String base, Lang hintLang, Context context) {
         process(sink, in, base, hintLang, context) ;
     }
 
@@ -762,8 +724,7 @@ public class RDFDataMgr
      * @deprecated     Use an InputStream or a StringReader. 
      */
     @Deprecated
-    public static void parse(StreamRDF sink, Reader in, Lang lang)
-    {
+    public static void parse(StreamRDF sink, Reader in, Lang lang) {
         parse(sink, in, null, lang, null) ;  
     }
 
@@ -775,8 +736,7 @@ public class RDFDataMgr
      * @deprecated     Use an InputStream or a StringReader. 
      */
     @Deprecated
-    public static void parse(StreamRDF sink, Reader in, String base, Lang hintLang)
-    {
+    public static void parse(StreamRDF sink, Reader in, String base, Lang hintLang) {
         parse(sink, in, base, hintLang, null) ;  
     }
 
@@ -787,8 +747,7 @@ public class RDFDataMgr
      * @param hintLang  Hint for the syntax
      * @param context   Content object to control reading process.
      */
-    public static void parse(StreamRDF sink, InputStream in, String base, Lang hintLang, Context context)
-    {
+    public static void parse(StreamRDF sink, InputStream in, String base, Lang hintLang, Context context) {
         process(sink, new TypedInputStream(in), base, hintLang, context) ;
     }
 
@@ -796,8 +755,7 @@ public class RDFDataMgr
      * @param sink      Destination for the RDF read.
      * @param in        Bytes to read.  This must include the content type.
      */
-    public static void parse(StreamRDF sink, TypedInputStream in)
-    {
+    public static void parse(StreamRDF sink, TypedInputStream in) {
         parse(sink, in, (String)null) ;
     }
 
@@ -807,9 +765,8 @@ public class RDFDataMgr
      * @param in        Bytes to read.
      * @param base      Base URI
      */
-    public static void parse(StreamRDF sink, TypedInputStream in, String base)
-    {
-        parse(sink, in, base, (Context)null) ;
+    public static void parse(StreamRDF sink, TypedInputStream in, String base) {
+        parse(sink, in, base, (Context)null);
     }
 
     /** Read RDF data.
@@ -818,10 +775,10 @@ public class RDFDataMgr
      * @param base      Base URI
      * @param context   Content object to control reading process.
      */
-    public static void parse(StreamRDF sink, TypedInputStream in, String base, Context context)
-    {
+    public static void parse(StreamRDF sink, TypedInputStream in, String base, Context context) {
+        Objects.requireNonNull(in, "TypedInputStream is null") ;
         Lang hintLang = RDFLanguages.contentTypeToLang(in.getMediaType()) ;
-        process(sink, new TypedInputStream(in), base, hintLang, context) ;
+        process(sink, in, base, hintLang, context) ;
     }
 
     /** Open a stream to the destination (URI or filename)
@@ -838,8 +795,7 @@ public class RDFDataMgr
      * @param context
      * @return TypedInputStream
      */
-    public static TypedInputStream open(String filenameOrURI, Context context)
-    {
+    public static TypedInputStream open(String filenameOrURI, Context context) {
         StreamManager sMgr = StreamManager.get() ;
         if ( context != null )
         {
@@ -857,12 +813,10 @@ public class RDFDataMgr
      * @param streamManager
      * @return TypedInputStream
      */
-    public static TypedInputStream open(String filenameOrURI, StreamManager streamManager)
-    {
+    public static TypedInputStream open(String filenameOrURI, StreamManager streamManager) {
         TypedInputStream in = streamManager.open(filenameOrURI) ;
             
-        if ( in == null )
-        {
+        if ( in == null ) {
             if ( log.isDebugEnabled() )
                 //log.debug("Found: "+filenameOrURI+" ("+loc.getName()+")") ;
                 log.debug("Not Found: "+filenameOrURI) ;
@@ -883,18 +837,7 @@ public class RDFDataMgr
 
     private static void process(StreamRDF destination, TypedInputStream in, String baseUri, Lang lang, Context context)
     {
-        // Issue is whether lang overrides all.
-        // Not in the case of remote conneg, no file extension, when lang is default. 
-//        // ---- NEW
-//        if ( lang != null ) {
-//            ReaderRIOT reader = createReader(lang) ;
-//            if ( reader == null )
-//                throw new RiotException("No parser registered for language: "+lang.getLabel()) ;
-//            reader.read(in, baseUri, lang.getContentType(), destination, context) ;
-//            return ;
-//        }
-//        // ---- NEW
-        
+        Objects.requireNonNull(in, "TypedInputStream is null") ;
         ContentType ct = WebContent.determineCT(in.getContentType(), lang, baseUri) ;
         if ( ct == null )
             throw new RiotException("Failed to determine the content type: (URI="+baseUri+" : stream="+in.getContentType()+")") ;
@@ -906,19 +849,8 @@ public class RDFDataMgr
     }
     
     // java.io.Readers are NOT preferred.
-    private static void process(StreamRDF destination, Reader in, String baseUri, Lang lang, Context context )
-    {
-//        // ---- NEW
-//        if ( lang != null ) {
-//            ReaderRIOT reader = createReader(lang) ;
-//            if ( reader == null )
-//                throw new RiotException("No parser registered for language: "+lang.getLabel()) ;
-//            reader.read(in, baseUri, lang.getContentType(), destination, context) ;
-//            return ;
-//        }
-//        // ---- NEW
-
-        // Not as good as from an InputStream 
+    private static void process(StreamRDF destination, Reader in, String baseUri, Lang lang, Context context ) {
+        Objects.requireNonNull(in, "Reader is null") ;
         ContentType ct = WebContent.determineCT(null, lang, baseUri) ;
         if ( ct == null )
             throw new RiotException("Failed to determine the content type: (URI="+baseUri+" : hint="+lang+")") ;
@@ -928,38 +860,6 @@ public class RDFDataMgr
         reader.read(in, baseUri, ct, destination, context) ;
     }
 
-//    ///---- NEW / rewrite
-//    // Lang is definitive.  needs further consideration
-//    private static void process2(StreamRDF destination, TypedInputStream in, String uri, Lang givenLang, Context context)
-//    {
-//        Pair<Lang, ContentType> p = selectLang(in.getMediaType(), uri, givenLang, context) ;
-//        Lang lang = p.getLeft() ;
-//        ContentType ct = p.getRight() ;
-//
-//        if ( lang == null )
-//            throw new RiotException("Syntax not identified (URI="+uri+" : stream="+in.getContentType()+")") ;
-//
-//        ReaderRIOT reader = createReader(lang) ;
-//        if ( reader == null )
-//            throw new RiotException("No parser registered for lang: "+lang.getLabel()) ;
-//        reader.read(in, uri, ct, destination, context) ;
-//    }
-//
-//    private static Pair<Lang, ContentType> selectLang(ContentType ct, String uri, Lang lang, Context context) {
-//        if ( lang != null )
-//            return Pair.create(lang, lang.getContentType()) ;
-//
-//        Lang ctLang = RDFLanguages.contentTypeToLang(ct) ;
-//        if ( ctLang != null )
-//            return Pair.create(ctLang, ct) ;
-//
-//        Lang filenameLang = RDFLanguages.filenameToLang(uri) ;
-//        if ( filenameLang != null )
-//            return Pair.create(filenameLang, filenameLang.getContentType()) ;
-//        return null ;
-//    }
-//    ///---- NEW
-
     /** 
      * @see RDFLanguages#shortnameToLang  to go from Jena short name to {@link Lang}
      * @see RDFLanguages#contentTypeToLang to go from content type to {@link Lang}
@@ -974,8 +874,7 @@ public class RDFDataMgr
         return r.create(lang) ;
     }
     
-    private static ReaderRIOT getReader(ContentType ct)
-    {
+    private static ReaderRIOT getReader(ContentType ct) {
         Lang lang = RDFLanguages.contentTypeToLang(ct) ;
         if ( lang == null )
             return null ;
@@ -1003,9 +902,8 @@ public class RDFDataMgr
      * @param model     Graph to write
      * @param lang      Language for the seralization.
      */
-    public static void write(OutputStream out, Model model, Lang lang)
-    {
-        write(out, model.getGraph(), lang) ;
+    public static void write(OutputStream out, Model model, Lang lang) {
+        write(out, model.getGraph(), lang);
     }
 
     /** Write the model to the output stream in the default serialization for the language.
@@ -1013,9 +911,8 @@ public class RDFDataMgr
      * @param model         Model to write
      * @param serialization Serialization format
      */
-    public static void write(OutputStream out, Model model, RDFFormat serialization)
-    {
-        write(out, model.getGraph(), serialization) ;
+    public static void write(OutputStream out, Model model, RDFFormat serialization) {
+        write(out, model.getGraph(), serialization);
     }
     
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1023,11 +920,9 @@ public class RDFDataMgr
      * @param model         Model to write
      * @param lang          Serialization format
      */
-    public static void write(StringWriter out, Model model, Lang lang)
-    {
-        write(out, model.getGraph(), lang) ;
+    public static void write(StringWriter out, Model model, Lang lang) {
+        write(out, model.getGraph(), lang);
     }
-    
 
     /** Write the graph to the output stream in the default serialization for the language.
      * @param out           Writer
@@ -1036,9 +931,8 @@ public class RDFDataMgr
      * @deprecated Use of writers is deprecated - use an OutputStream
      */
     @Deprecated
-    public static void write(Writer out, Model model, Lang lang)
-    {
-        write(out, model.getGraph(), lang) ;
+    public static void write(Writer out, Model model, Lang lang) {
+        write(out, model.getGraph(), lang);
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1046,9 +940,8 @@ public class RDFDataMgr
      * @param model         Model to write
      * @param serialization Serialization format
      */
-    public static void write(StringWriter out, Model model, RDFFormat serialization)
-    {
-        write(out, model.getGraph(), serialization) ;
+    public static void write(StringWriter out, Model model, RDFFormat serialization) {
+        write(out, model.getGraph(), serialization);
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1058,9 +951,8 @@ public class RDFDataMgr
      * @deprecated Use of writers is deprecated - use an OutputStream
      */
     @Deprecated
-    public static void write(Writer out, Model model, RDFFormat serialization)
-    {
-        write(out, model.getGraph(), serialization) ;
+    public static void write(Writer out, Model model, RDFFormat serialization) {
+        write(out, model.getGraph(), serialization);
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1068,10 +960,9 @@ public class RDFDataMgr
      * @param graph     Graph to write
      * @param lang      Language for the seralization.
      */
-    public static void write(OutputStream out, Graph graph, Lang lang)
-    {
-        RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang) ;
-        write(out, graph, serialization) ;
+    public static void write(OutputStream out, Graph graph, Lang lang) {
+        RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang);
+        write(out, graph, serialization);
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1079,9 +970,8 @@ public class RDFDataMgr
      * @param graph         Graph to write
      * @param serialization Serialization format
      */
-    public static void write(OutputStream out, Graph graph, RDFFormat serialization)
-    {
-        write$(out, graph, serialization) ;
+    public static void write(OutputStream out, Graph graph, RDFFormat serialization) {
+        write$(out, graph, serialization);
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1089,10 +979,9 @@ public class RDFDataMgr
      * @param graph         Graph to write
      * @param lang          Serialization format
      */
-    public static void write(StringWriter out, Graph graph, Lang lang)
-    {
+    public static void write(StringWriter out, Graph graph, Lang lang) {
         // Only known reasonable use of a Writer
-        write$(out, graph, RDFWriterRegistry.defaultSerialization(lang)) ;
+        write$(out, graph, RDFWriterRegistry.defaultSerialization(lang));
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1102,20 +991,18 @@ public class RDFDataMgr
      * @deprecated Use of writers is deprecated - use an OutputStream
      */
     @Deprecated
-    public static void write(Writer out, Graph graph, Lang lang)
-    {
-        write$(out, graph, RDFWriterRegistry.defaultSerialization(lang)) ;
+    public static void write(Writer out, Graph graph, Lang lang) {
+        write$(out, graph, RDFWriterRegistry.defaultSerialization(lang));
     }
-    
+
     /** Write the graph to the output stream in the default serialization for the language.
      * @param out           OutputStream
      * @param graph         Graph to write
      * @param serialization Serialization format
      */
-    public static void write(StringWriter out, Graph graph, RDFFormat serialization)
-    {
+    public static void write(StringWriter out, Graph graph, RDFFormat serialization) {
         // Only known reasonable use of a Writer
-        write$(out, graph, serialization) ;
+        write$(out, graph, serialization);
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1125,9 +1012,8 @@ public class RDFDataMgr
      * @deprecated Use of writers is deprecated - use an OutputStream
      */
     @Deprecated
-    public static void write(Writer out, Graph graph, RDFFormat serialization)
-    {
-        write$(out, graph, serialization) ;
+    public static void write(Writer out, Graph graph, RDFFormat serialization) {
+        write$(out, graph, serialization);
     }
     
     /** Write the Dataset to the output stream in the default serialization for the language.
@@ -1135,9 +1021,8 @@ public class RDFDataMgr
      * @param dataset   Dataset to write
      * @param lang      Language for the seralization.
      */
-    public static void write(OutputStream out, Dataset dataset, Lang lang)
-    {
-        write(out, dataset.asDatasetGraph(), lang) ;
+    public static void write(OutputStream out, Dataset dataset, Lang lang) {
+        write(out, dataset.asDatasetGraph(), lang);
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1145,9 +1030,8 @@ public class RDFDataMgr
      * @param dataset       Dataset to write
      * @param serialization Serialization format
      */
-    public static void write(OutputStream out, Dataset dataset, RDFFormat serialization)
-    {
-        write(out, dataset.asDatasetGraph(), serialization) ;
+    public static void write(OutputStream out, Dataset dataset, RDFFormat serialization) {
+        write(out, dataset.asDatasetGraph(), serialization);
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1155,9 +1039,8 @@ public class RDFDataMgr
      * @param dataset       Dataset to write
      * @param serialization Serialization format
      */
-    public static void write(StringWriter out, Dataset dataset, RDFFormat serialization)
-    {
-        write$(out, dataset.asDatasetGraph(), serialization) ;
+    public static void write(StringWriter out, Dataset dataset, RDFFormat serialization) {
+        write$(out, dataset.asDatasetGraph(), serialization);
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1165,10 +1048,9 @@ public class RDFDataMgr
      * @param dataset       Dataset to write
      * @param lang      Language for the seralization.
      */
-    public static void write(StringWriter out, Dataset dataset, Lang lang)
-    {
-        RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang) ;
-        write$(out, dataset.asDatasetGraph(), serialization) ;
+    public static void write(StringWriter out, Dataset dataset, Lang lang) {
+        RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang);
+        write$(out, dataset.asDatasetGraph(), serialization);
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1178,9 +1060,8 @@ public class RDFDataMgr
      * @deprecated Use of writers is deprecated - use an OutputStream
      */
     @Deprecated
-    public static void write(Writer out, Dataset dataset, RDFFormat serialization)
-    {
-        write$(out, dataset.asDatasetGraph(), serialization) ;
+    public static void write(Writer out, Dataset dataset, RDFFormat serialization) {
+        write$(out, dataset.asDatasetGraph(), serialization);
     }
 
     /** Write the DatasetGraph to the output stream in the default serialization for the language.
@@ -1188,10 +1069,9 @@ public class RDFDataMgr
      * @param dataset   DatasetGraph to write
      * @param lang      Language for the seralization.
      */
-    public static void write(OutputStream out, DatasetGraph dataset, Lang lang)
-    {
-        RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang) ;
-        write(out, dataset, serialization) ;
+    public static void write(OutputStream out, DatasetGraph dataset, Lang lang) {
+        RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang);
+        write(out, dataset, serialization);
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1199,9 +1079,8 @@ public class RDFDataMgr
      * @param dataset       DatasetGraph to write
      * @param serialization Serialization format
      */
-    public static void write(OutputStream out, DatasetGraph dataset, RDFFormat serialization)
-    {
-        write$(out, dataset, serialization) ;
+    public static void write(OutputStream out, DatasetGraph dataset, RDFFormat serialization) {
+        write$(out, dataset, serialization);
     }
 
     /** Write the DatasetGraph to the output stream in the default serialization for the language.
@@ -1209,10 +1088,9 @@ public class RDFDataMgr
      * @param dataset   DatasetGraph to write
      * @param lang      Language for the seralization.
      */
-    public static void write(StringWriter out, DatasetGraph dataset, Lang lang)
-    {
-        RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang) ;
-        write(out, dataset, serialization) ;
+    public static void write(StringWriter out, DatasetGraph dataset, Lang lang) {
+        RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang);
+        write(out, dataset, serialization);
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1220,9 +1098,8 @@ public class RDFDataMgr
      * @param dataset       DatasetGraph to write
      * @param serialization Serialization format
      */
-    public static void write(StringWriter out, DatasetGraph dataset, RDFFormat serialization)
-    {
-        write$(out, dataset, serialization) ;
+    public static void write(StringWriter out, DatasetGraph dataset, RDFFormat serialization) {
+        write$(out, dataset, serialization);
     }
 
     /** Write the graph to the output stream in the default serialization for the language.
@@ -1232,108 +1109,92 @@ public class RDFDataMgr
      * @deprecated Use of writers is deprecated - use an OutputStream
      */
     @Deprecated
-    public static void write(Writer out, DatasetGraph dataset, RDFFormat serialization)
-    {
-        write$(out, dataset, serialization) ;
+    public static void write(Writer out, DatasetGraph dataset, RDFFormat serialization) {
+        write$(out, dataset, serialization);
     }
 
     /** Write an iterator of triples (in N-Triples)
      * @param out
      * @param iterator
      */
-    public static void writeTriples(OutputStream out, Iterator<Triple> iterator)
-    {
-        NTriplesWriter.write(out, iterator) ;        
+    public static void writeTriples(OutputStream out, Iterator<Triple> iterator) {
+        NTriplesWriter.write(out, iterator);
     }
-    
 
     /** Write an iterator of quads (in N-Quads)
      * @param out
      * @param iterator
      */
-    public static void writeQuads(OutputStream out, Iterator<Quad> iterator)
-    {
-        NQuadsWriter.write(out, iterator) ;        
+    public static void writeQuads(OutputStream out, Iterator<Quad> iterator) {
+        NQuadsWriter.write(out, iterator);
     }
 
     /** Create a writer for an RDF language
      * @param lang   Language for the seralization.
      * @return WriterGraphRIOT
      */
-    
-    public static WriterGraphRIOT createGraphWriter(Lang lang)
-    {
-        RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang) ;
-        return createGraphWriter$(serialization) ;    
+    public static WriterGraphRIOT createGraphWriter(Lang lang) {
+        RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang);
+        return createGraphWriter$(serialization);
     }
 
     /** Create a writer for an RDF language
      * @param serialization Serialization format
      * @return WriterGraphRIOT
      */
-    public static WriterGraphRIOT createGraphWriter(RDFFormat serialization)
-    {
-        return createGraphWriter$(serialization) ;    
+    public static WriterGraphRIOT createGraphWriter(RDFFormat serialization) {
+        return createGraphWriter$(serialization);
     }
 
     /** Create a writer for an RDF language
      * @param lang   Language for the seralization.
      * @return WriterGraphRIOT
      */
-    
-    public static WriterDatasetRIOT createDatasetWriter(Lang lang)
-    {
-        RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang) ;
-        return createDatasetWriter$(serialization) ;    
+    public static WriterDatasetRIOT createDatasetWriter(Lang lang) {
+        RDFFormat serialization = RDFWriterRegistry.defaultSerialization(lang);
+        return createDatasetWriter$(serialization);
     }
     
     /** Create a writer for an RDF language
      * @param serialization Serialization format
      * @return WriterGraphRIOT
      */
-    public static WriterDatasetRIOT createDatasetWriter(RDFFormat serialization)
-    {
-        return createDatasetWriter$(serialization) ;    
+    public static WriterDatasetRIOT createDatasetWriter(RDFFormat serialization) {
+        return createDatasetWriter$(serialization);
     }
     
-    private static WriterGraphRIOT createGraphWriter$(RDFFormat serialization)
-    {
-        WriterGraphRIOTFactory wf = RDFWriterRegistry.getWriterGraphFactory(serialization) ;
+    private static WriterGraphRIOT createGraphWriter$(RDFFormat serialization) {
+        WriterGraphRIOTFactory wf = RDFWriterRegistry.getWriterGraphFactory(serialization);
         if ( wf == null )
-            throw new RiotException("No graph writer for "+serialization) ; 
-        return wf.create(serialization) ;
+            throw new RiotException("No graph writer for " + serialization);
+        return wf.create(serialization);
     }
 
-    private static WriterDatasetRIOT createDatasetWriter$(RDFFormat serialization)
-    {
-        WriterDatasetRIOTFactory wf = RDFWriterRegistry.getWriterDatasetFactory(serialization) ;
+    private static WriterDatasetRIOT createDatasetWriter$(RDFFormat serialization) {
+        WriterDatasetRIOTFactory wf = RDFWriterRegistry.getWriterDatasetFactory(serialization);
         if ( wf == null )
-            throw new RiotException("No dataset writer for "+serialization) ; 
-        return wf.create(serialization) ;
+            throw new RiotException("No dataset writer for " + serialization);
+        return wf.create(serialization);
     }
 
-    private static void write$(OutputStream out, Graph graph, RDFFormat serialization)
-    {
-        WriterGraphRIOT w = createGraphWriter$(serialization) ;
-        w.write(out, graph, RiotLib.prefixMap(graph), null, null) ;
+    private static void write$(OutputStream out, Graph graph, RDFFormat serialization) {
+        WriterGraphRIOT w = createGraphWriter$(serialization);
+        w.write(out, graph, RiotLib.prefixMap(graph), null, null);
     }
 
-    private static void write$(Writer out, Graph graph, RDFFormat serialization)
-    {
-        WriterGraphRIOT w = createGraphWriter$(serialization) ;
-        w.write(out, graph, RiotLib.prefixMap(graph), null, null) ;
+    private static void write$(Writer out, Graph graph, RDFFormat serialization) {
+        WriterGraphRIOT w = createGraphWriter$(serialization);
+        w.write(out, graph, RiotLib.prefixMap(graph), null, null);
     }
 
-    private static void write$(OutputStream out, DatasetGraph dataset, RDFFormat serialization)
-    {
-        WriterDatasetRIOT w = createDatasetWriter$(serialization) ;
-        w.write(out, dataset, RiotLib.prefixMap(dataset), null, null) ;
+    private static void write$(OutputStream out, DatasetGraph dataset, RDFFormat serialization) {
+        WriterDatasetRIOT w = createDatasetWriter$(serialization);
+        w.write(out, dataset, RiotLib.prefixMap(dataset), null, null);
     }
 
-    private static void write$(Writer out, DatasetGraph dataset, RDFFormat serialization)
-    {
-        WriterDatasetRIOT w = createDatasetWriter$(serialization) ;
-        w.write(out, dataset, RiotLib.prefixMap(dataset), null, null) ;
+    private static void write$(Writer out, DatasetGraph dataset, RDFFormat serialization) {
+        WriterDatasetRIOT w = createDatasetWriter$(serialization);
+        w.write(out, dataset, RiotLib.prefixMap(dataset), null, null);
     }
 }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/96e3629e/jena-arq/src/main/java/org/apache/jena/riot/adapters/JenaReadersWriters.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/adapters/JenaReadersWriters.java b/jena-arq/src/main/java/org/apache/jena/riot/adapters/JenaReadersWriters.java
index a471827..c92b05a 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/adapters/JenaReadersWriters.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/adapters/JenaReadersWriters.java
@@ -23,9 +23,6 @@ import org.apache.jena.n3.N3JenaWriter ;
 
 public class JenaReadersWriters
 {
-    // Temporary - eventually, replace all model.read calls with the correct call to RIOT
-    // and then the common RDFReaderRIOT can be used.
-    
     public static class RDFReaderRIOT_RDFXML        extends RDFReaderRIOT   { public RDFReaderRIOT_RDFXML()     { super("RDF/XML") ; } }
     public static class RDFReaderRIOT_TTL           extends RDFReaderRIOT   { public RDFReaderRIOT_TTL()        { super("TTL") ; } }
     public static class RDFReaderRIOT_NT            extends RDFReaderRIOT   { public RDFReaderRIOT_NT()         { super("N-TRIPLE") ; } }


[07/50] [abbrv] jena git commit: The SPARQL 1.1 parser (like the SPARQL 1.0 parser) are now unchanged.

Posted by an...@apache.org.
http://git-wip-us.apache.org/repos/asf/jena/blob/a8b0d53e/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 77c79e1..4fc136d 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
@@ -512,8 +512,10 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
      getQuery().setQueryConstructType() ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case LBRACE:
-      t = ConstructTemplate();
+      jj_consume_token(LBRACE);
+      t = ConstructQuads(acc);
         getQuery().setConstructTemplate(t) ;
+      jj_consume_token(RBRACE);
       label_4:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -545,38 +547,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       }
       jj_consume_token(WHERE);
       jj_consume_token(LBRACE);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case IRIref:
-      case PNAME_NS:
-      case PNAME_LN:
-      case BLANK_NODE_LABEL:
-      case VAR1:
-      case VAR2:
-      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 NIL:
-      case LBRACKET:
-      case ANON:
-        TriplesTemplate(acc);
-        break;
-      default:
-        jj_la1[14] = jj_gen;
-        ;
-      }
+      ConstructQuads(acc);
       jj_consume_token(RBRACE);
       SolutionModifier();
       t = new Template(acc) ;
@@ -587,7 +558,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       getQuery().setQueryPattern(elg) ;
       break;
     default:
-      jj_la1[15] = jj_gen;
+      jj_la1[14] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -616,7 +587,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
           ;
           break;
         default:
-          jj_la1[16] = jj_gen;
+          jj_la1[15] = jj_gen;
           break label_6;
         }
       }
@@ -627,7 +598,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       getQuery().setQueryResultStar(true) ;
       break;
     default:
-      jj_la1[17] = jj_gen;
+      jj_la1[16] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -638,7 +609,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[18] = jj_gen;
+        jj_la1[17] = jj_gen;
         break label_7;
       }
       DatasetClause();
@@ -649,7 +620,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       WhereClause();
       break;
     default:
-      jj_la1[19] = jj_gen;
+      jj_la1[18] = jj_gen;
       ;
     }
     SolutionModifier();
@@ -665,7 +636,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[20] = jj_gen;
+        jj_la1[19] = jj_gen;
         break label_8;
       }
       DatasetClause();
@@ -686,7 +657,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       NamedGraphClause();
       break;
     default:
-      jj_la1[21] = jj_gen;
+      jj_la1[20] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -719,7 +690,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       jj_consume_token(WHERE);
       break;
     default:
-      jj_la1[22] = jj_gen;
+      jj_la1[21] = jj_gen;
       ;
     }
      startWherePattern() ;
@@ -734,7 +705,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       GroupClause();
       break;
     default:
-      jj_la1[23] = jj_gen;
+      jj_la1[22] = jj_gen;
       ;
     }
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -742,7 +713,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       HavingClause();
       break;
     default:
-      jj_la1[24] = jj_gen;
+      jj_la1[23] = jj_gen;
       ;
     }
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -750,7 +721,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       OrderClause();
       break;
     default:
-      jj_la1[25] = jj_gen;
+      jj_la1[24] = jj_gen;
       ;
     }
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -759,7 +730,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       LimitOffsetClauses();
       break;
     default:
-      jj_la1[26] = jj_gen;
+      jj_la1[25] = jj_gen;
       ;
     }
   }
@@ -844,7 +815,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[27] = jj_gen;
+        jj_la1[26] = jj_gen;
         break label_9;
       }
     }
@@ -935,7 +906,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         v = Var();
         break;
       default:
-        jj_la1[28] = jj_gen;
+        jj_la1[27] = jj_gen;
         ;
       }
       jj_consume_token(RPAREN);
@@ -947,7 +918,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       getQuery().addGroupBy(v) ;
       break;
     default:
-      jj_la1[29] = jj_gen;
+      jj_la1[28] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -1031,7 +1002,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[30] = jj_gen;
+        jj_la1[29] = jj_gen;
         break label_10;
       }
     }
@@ -1127,7 +1098,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[31] = jj_gen;
+        jj_la1[30] = jj_gen;
         break label_11;
       }
     }
@@ -1150,7 +1121,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                  direction = Query.ORDER_DESCENDING ;
         break;
       default:
-        jj_la1[32] = jj_gen;
+        jj_la1[31] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -1302,13 +1273,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         v = Var();
         break;
       default:
-        jj_la1[33] = jj_gen;
+        jj_la1[32] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[34] = jj_gen;
+      jj_la1[33] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -1327,7 +1298,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         OffsetClause();
         break;
       default:
-        jj_la1[35] = jj_gen;
+        jj_la1[34] = jj_gen;
         ;
       }
       break;
@@ -1338,12 +1309,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         LimitClause();
         break;
       default:
-        jj_la1[36] = jj_gen;
+        jj_la1[35] = jj_gen;
         ;
       }
       break;
     default:
-      jj_la1[37] = jj_gen;
+      jj_la1[36] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -1373,7 +1344,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       finishValuesClause(t.beginLine, t.beginColumn) ;
       break;
     default:
-      jj_la1[38] = jj_gen;
+      jj_la1[37] = jj_gen;
       ;
     }
   }
@@ -1412,12 +1383,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         Prologue();
         break;
       default:
-        jj_la1[39] = jj_gen;
+        jj_la1[38] = jj_gen;
         ;
       }
       break;
     default:
-      jj_la1[40] = jj_gen;
+      jj_la1[39] = jj_gen;
       ;
     }
   }
@@ -1462,7 +1433,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       DeleteData();
       break;
     default:
-      jj_la1[41] = jj_gen;
+      jj_la1[40] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -1479,7 +1450,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                        silent = true ;
       break;
     default:
-      jj_la1[42] = jj_gen;
+      jj_la1[41] = jj_gen;
       ;
     }
     url = iri();
@@ -1489,7 +1460,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       dest = GraphRef();
       break;
     default:
-      jj_la1[43] = jj_gen;
+      jj_la1[42] = jj_gen;
       ;
     }
       {if (true) return new UpdateLoad(url, dest, silent) ;}
@@ -1505,7 +1476,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                        silent = true ;
       break;
     default:
-      jj_la1[44] = jj_gen;
+      jj_la1[43] = jj_gen;
       ;
     }
     target = GraphRefAll();
@@ -1522,7 +1493,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                       silent = true ;
       break;
     default:
-      jj_la1[45] = jj_gen;
+      jj_la1[44] = jj_gen;
       ;
     }
     target = GraphRefAll();
@@ -1539,7 +1510,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                         silent=true ;
       break;
     default:
-      jj_la1[46] = jj_gen;
+      jj_la1[45] = jj_gen;
       ;
     }
     iri = GraphRef();
@@ -1556,7 +1527,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                     silent=true ;
       break;
     default:
-      jj_la1[47] = jj_gen;
+      jj_la1[46] = jj_gen;
       ;
     }
     src = GraphOrDefault();
@@ -1575,7 +1546,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                      silent=true ;
       break;
     default:
-      jj_la1[48] = jj_gen;
+      jj_la1[47] = jj_gen;
       ;
     }
     src = GraphOrDefault();
@@ -1594,7 +1565,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                      silent=true ;
       break;
     default:
-      jj_la1[49] = jj_gen;
+      jj_la1[48] = jj_gen;
       ;
     }
     src = GraphOrDefault();
@@ -1646,7 +1617,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                          Node n = createNode(iri) ; up.setWithIRI(n) ;
       break;
     default:
-      jj_la1[50] = jj_gen;
+      jj_la1[49] = jj_gen;
       ;
     }
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1657,7 +1628,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         InsertClause(up);
         break;
       default:
-        jj_la1[51] = jj_gen;
+        jj_la1[50] = jj_gen;
         ;
       }
       break;
@@ -1665,7 +1636,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       InsertClause(up);
       break;
     default:
-      jj_la1[52] = jj_gen;
+      jj_la1[51] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -1676,7 +1647,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[53] = jj_gen;
+        jj_la1[52] = jj_gen;
         break label_13;
       }
       UsingClause(up);
@@ -1727,7 +1698,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       n = createNode(iri) ; update.addUsingNamed(n) ;
       break;
     default:
-      jj_la1[54] = jj_gen;
+      jj_la1[53] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -1749,14 +1720,14 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         jj_consume_token(GRAPH);
         break;
       default:
-        jj_la1[55] = jj_gen;
+        jj_la1[54] = jj_gen;
         ;
       }
       iri = iri();
        {if (true) return Target.create(createNode(iri)) ;}
       break;
     default:
-      jj_la1[56] = jj_gen;
+      jj_la1[55] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -1791,7 +1762,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
              {if (true) return Target.ALL ;}
       break;
     default:
-      jj_la1[57] = jj_gen;
+      jj_la1[56] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -1840,7 +1811,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       TriplesTemplate(acc);
       break;
     default:
-      jj_la1[58] = jj_gen;
+      jj_la1[57] = jj_gen;
       ;
     }
     label_14:
@@ -1850,7 +1821,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[59] = jj_gen;
+        jj_la1[58] = jj_gen;
         break label_14;
       }
       QuadsNotTriples(acc);
@@ -1859,7 +1830,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         jj_consume_token(DOT);
         break;
       default:
-        jj_la1[60] = jj_gen;
+        jj_la1[59] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1891,7 +1862,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         TriplesTemplate(acc);
         break;
       default:
-        jj_la1[61] = jj_gen;
+        jj_la1[60] = jj_gen;
         ;
       }
     }
@@ -1932,21 +1903,163 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       TriplesTemplate(acc);
       break;
     default:
+      jj_la1[61] = jj_gen;
+      ;
+    }
+    jj_consume_token(RBRACE);
+      setAccGraph(acc, prev) ;
+  }
+
+  final public Template ConstructQuads(QuadAcc acc) throws ParseException {
+                                        Template t = new Template (acc);
+      setInConstructTemplate(true) ;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IRIref:
+    case PNAME_NS:
+    case PNAME_LN:
+    case BLANK_NODE_LABEL:
+    case VAR1:
+    case VAR2:
+    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 NIL:
+    case LBRACKET:
+    case ANON:
+      TriplesTemplate(acc);
+      break;
+    default:
       jj_la1[62] = jj_gen;
       ;
     }
+    label_15:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case GRAPH:
+      case LBRACE:
+        ;
+        break;
+      default:
+        jj_la1[63] = jj_gen;
+        break label_15;
+      }
+      ConstructQuadsNotTriples(acc);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case DOT:
+        jj_consume_token(DOT);
+        break;
+      default:
+        jj_la1[64] = jj_gen;
+        ;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IRIref:
+      case PNAME_NS:
+      case PNAME_LN:
+      case BLANK_NODE_LABEL:
+      case VAR1:
+      case VAR2:
+      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 NIL:
+      case LBRACKET:
+      case ANON:
+        TriplesTemplate(acc);
+        break;
+      default:
+        jj_la1[65] = jj_gen;
+        ;
+      }
+    }
+      setInConstructTemplate(false) ;
+      {if (true) return t ;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public void ConstructQuadsNotTriples(QuadAccSink acc) throws ParseException {
+                                                  Node gn = null ; Node prev = acc.getGraph() ;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case GRAPH:
+      jj_consume_token(GRAPH);
+      gn = VarOrIri();
+      break;
+    default:
+      jj_la1[66] = jj_gen;
+      ;
+    }
+      setAccGraph(acc, gn) ;
+    jj_consume_token(LBRACE);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IRIref:
+    case PNAME_NS:
+    case PNAME_LN:
+    case BLANK_NODE_LABEL:
+    case VAR1:
+    case VAR2:
+    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 NIL:
+    case LBRACKET:
+    case ANON:
+      TriplesTemplate(acc);
+      break;
+    default:
+      jj_la1[67] = jj_gen;
+      ;
+    }
     jj_consume_token(RBRACE);
       setAccGraph(acc, prev) ;
   }
 
   final public void TriplesTemplate(TripleCollector acc) throws ParseException {
     TriplesSameSubject(acc);
-    label_15:
+    label_16:
     while (true) {
       if (jj_2_3(2)) {
         ;
       } else {
-        break label_15;
+        break label_16;
       }
       jj_consume_token(DOT);
       TriplesSameSubject(acc);
@@ -1956,7 +2069,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       jj_consume_token(DOT);
       break;
     default:
-      jj_la1[63] = jj_gen;
+      jj_la1[68] = jj_gen;
       ;
     }
   }
@@ -1973,7 +2086,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       el = new ElementSubQuery(q) ;
       break;
     default:
-      jj_la1[64] = jj_gen;
+      jj_la1[69] = jj_gen;
       el = GroupGraphPatternSub();
     }
     jj_consume_token(RBRACE);
@@ -2017,10 +2130,10 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       elg.addElement(el) ;
       break;
     default:
-      jj_la1[65] = jj_gen;
+      jj_la1[70] = jj_gen;
       ;
     }
-    label_16:
+    label_17:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case VALUES:
@@ -2037,8 +2150,8 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[66] = jj_gen;
-        break label_16;
+        jj_la1[71] = jj_gen;
+        break label_17;
       }
       el = GraphPatternNotTriples();
       elg.addElement(el) ;
@@ -2047,7 +2160,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         jj_consume_token(DOT);
         break;
       default:
-        jj_la1[67] = jj_gen;
+        jj_la1[72] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -2082,7 +2195,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         elg.addElement(el) ;
         break;
       default:
-        jj_la1[68] = jj_gen;
+        jj_la1[73] = jj_gen;
         ;
       }
     }
@@ -2127,12 +2240,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         TriplesBlock(acc);
         break;
       default:
-        jj_la1[69] = jj_gen;
+        jj_la1[74] = jj_gen;
         ;
       }
       break;
     default:
-      jj_la1[70] = jj_gen;
+      jj_la1[75] = jj_gen;
       ;
     }
       {if (true) return acc ;}
@@ -2176,7 +2289,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       el = NotExistsElt();
       break;
     default:
-      jj_la1[71] = jj_gen;
+      jj_la1[76] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -2210,7 +2323,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
      silent=true;
       break;
     default:
-      jj_la1[72] = jj_gen;
+      jj_la1[77] = jj_gen;
       ;
     }
     n = VarOrIri();
@@ -2254,7 +2367,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       InlineDataFull();
       break;
     default:
-      jj_la1[73] = jj_gen;
+      jj_la1[78] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -2265,7 +2378,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     v = Var();
     emitDataBlockVariable(v) ;
     t = jj_consume_token(LBRACE);
-    label_17:
+    label_18:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case IRIref:
@@ -2290,8 +2403,8 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[74] = jj_gen;
-        break label_17;
+        jj_la1[79] = jj_gen;
+        break label_18;
       }
       n = DataBlockValue();
       startDataBlockValueRow(-1, -1) ;
@@ -2309,7 +2422,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       break;
     case LPAREN:
       jj_consume_token(LPAREN);
-      label_18:
+      label_19:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case VAR1:
@@ -2317,8 +2430,8 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
           ;
           break;
         default:
-          jj_la1[75] = jj_gen;
-          break label_18;
+          jj_la1[80] = jj_gen;
+          break label_19;
         }
         v = Var();
                  emitDataBlockVariable(v) ;
@@ -2326,12 +2439,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       jj_consume_token(RPAREN);
       break;
     default:
-      jj_la1[76] = jj_gen;
+      jj_la1[81] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
     jj_consume_token(LBRACE);
-    label_19:
+    label_20:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case LPAREN:
@@ -2339,15 +2452,15 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[77] = jj_gen;
-        break label_19;
+        jj_la1[82] = jj_gen;
+        break label_20;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case LPAREN:
         t = jj_consume_token(LPAREN);
       beginLine = t.beginLine; beginColumn = t.beginColumn; t = null;
       startDataBlockValueRow(beginLine, beginColumn) ;
-        label_20:
+        label_21:
         while (true) {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case IRIref:
@@ -2372,8 +2485,8 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
             ;
             break;
           default:
-            jj_la1[78] = jj_gen;
-            break label_20;
+            jj_la1[83] = jj_gen;
+            break label_21;
           }
           n = DataBlockValue();
           emitDataBlockValue(n, beginLine, beginColumn) ;
@@ -2389,7 +2502,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         finishDataBlockValueRow(beginLine, beginColumn) ;
         break;
       default:
-        jj_la1[79] = jj_gen;
+        jj_la1[84] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -2435,7 +2548,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
             {if (true) return null ;}
       break;
     default:
-      jj_la1[80] = jj_gen;
+      jj_la1[85] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -2482,15 +2595,15 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   final public Element GroupOrUnionGraphPattern() throws ParseException {
       Element el = null ; ElementUnion el2 = null ;
     el = GroupGraphPattern();
-    label_21:
+    label_22:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case UNION:
         ;
         break;
       default:
-        jj_la1[81] = jj_gen;
-        break label_21;
+        jj_la1[86] = jj_gen;
+        break label_22;
       }
       jj_consume_token(UNION);
       if ( el2 == null )
@@ -2591,7 +2704,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       c = FunctionCall();
       break;
     default:
-      jj_la1[82] = jj_gen;
+      jj_la1[87] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -2633,20 +2746,20 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                  beginLine, beginColumn) ;
         break;
       default:
-        jj_la1[83] = jj_gen;
+        jj_la1[88] = jj_gen;
         ;
       }
       expr = Expression();
                             args.add(expr) ;
-      label_22:
+      label_23:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case COMMA:
           ;
           break;
         default:
-          jj_la1[84] = jj_gen;
-          break label_22;
+          jj_la1[89] = jj_gen;
+          break label_23;
         }
         jj_consume_token(COMMA);
         expr = Expression();
@@ -2655,7 +2768,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       jj_consume_token(RPAREN);
       break;
     default:
-      jj_la1[85] = jj_gen;
+      jj_la1[90] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -2673,15 +2786,15 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       jj_consume_token(LPAREN);
       expr = Expression();
                           args.add(expr) ;
-      label_23:
+      label_24:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case COMMA:
           ;
           break;
         default:
-          jj_la1[86] = jj_gen;
-          break label_23;
+          jj_la1[91] = jj_gen;
+          break label_24;
         }
         jj_consume_token(COMMA);
         expr = Expression();
@@ -2690,7 +2803,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       jj_consume_token(RPAREN);
       break;
     default:
-      jj_la1[87] = jj_gen;
+      jj_la1[92] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -2699,8 +2812,8 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   }
 
   final public Template ConstructTemplate() throws ParseException {
-                                 QuadAcc acc = new QuadAcc() ;
-                                 Template t = new Template(acc) ;
+                                 TripleCollectorBGP acc = new TripleCollectorBGP();
+                                 Template t = new Template(acc.getBGP()) ;
       setInConstructTemplate(true) ;
     jj_consume_token(LBRACE);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -2732,7 +2845,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       ConstructTriples(acc);
       break;
     default:
-      jj_la1[88] = jj_gen;
+      jj_la1[93] = jj_gen;
       ;
     }
     jj_consume_token(RBRACE);
@@ -2743,12 +2856,12 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
 
   final public void ConstructTriples(TripleCollector acc) throws ParseException {
     TriplesSameSubject(acc);
-    label_24:
+    label_25:
     while (true) {
       if (jj_2_4(2)) {
         ;
       } else {
-        break label_24;
+        break label_25;
       }
       jj_consume_token(DOT);
       TriplesSameSubject(acc);
@@ -2758,7 +2871,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       jj_consume_token(DOT);
       break;
     default:
-      jj_la1[89] = jj_gen;
+      jj_la1[94] = jj_gen;
       ;
     }
   }
@@ -2800,7 +2913,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     insert(acc, tempAcc) ;
       break;
     default:
-      jj_la1[90] = jj_gen;
+      jj_la1[95] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -2817,7 +2930,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       PropertyListNotEmpty(s, acc);
       break;
     default:
-      jj_la1[91] = jj_gen;
+      jj_la1[96] = jj_gen;
       ;
     }
   }
@@ -2826,15 +2939,15 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       Node p = null ;
     p = Verb();
     ObjectList(s, p, null, acc);
-    label_25:
+    label_26:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case SEMICOLON:
         ;
         break;
       default:
-        jj_la1[92] = jj_gen;
-        break label_25;
+        jj_la1[97] = jj_gen;
+        break label_26;
       }
       jj_consume_token(SEMICOLON);
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -2848,7 +2961,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ObjectList(s, p, null, acc);
         break;
       default:
-        jj_la1[93] = jj_gen;
+        jj_la1[98] = jj_gen;
         ;
       }
     }
@@ -2869,7 +2982,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                               p = nRDFtype ;
       break;
     default:
-      jj_la1[94] = jj_gen;
+      jj_la1[99] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -2880,15 +2993,15 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   final public void ObjectList(Node s, Node p, Path path, TripleCollector acc) throws ParseException {
                                                                    Node o ;
     Object(s, p, path, acc);
-    label_26:
+    label_27:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case COMMA:
         ;
         break;
       default:
-        jj_la1[95] = jj_gen;
-        break label_26;
+        jj_la1[100] = jj_gen;
+        break label_27;
       }
       jj_consume_token(COMMA);
       Object(s, p, path, acc);
@@ -2939,7 +3052,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     insert(acc, tempAcc) ;
       break;
     default:
-      jj_la1[96] = jj_gen;
+      jj_la1[101] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -2962,7 +3075,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       PropertyListPathNotEmpty(s, acc);
       break;
     default:
-      jj_la1[97] = jj_gen;
+      jj_la1[102] = jj_gen;
       ;
     }
   }
@@ -2987,20 +3100,20 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       p = VerbSimple();
       break;
     default:
-      jj_la1[98] = jj_gen;
+      jj_la1[103] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
     ObjectListPath(s, p, path, acc);
-    label_27:
+    label_28:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case SEMICOLON:
         ;
         break;
       default:
-        jj_la1[99] = jj_gen;
-        break label_27;
+        jj_la1[104] = jj_gen;
+        break label_28;
       }
       jj_consume_token(SEMICOLON);
       path = null ; p = null ;
@@ -3035,14 +3148,14 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
           p = VerbSimple();
           break;
         default:
-          jj_la1[100] = jj_gen;
+          jj_la1[105] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
         ObjectListPath(s, p, path, acc);
         break;
       default:
-        jj_la1[101] = jj_gen;
+        jj_la1[106] = jj_gen;
         ;
       }
     }
@@ -3065,15 +3178,15 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   final public void ObjectListPath(Node s, Node p, Path path, TripleCollector acc) throws ParseException {
                                                                        Node o ;
     ObjectPath(s, p, path, acc);
-    label_28:
+    label_29:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case COMMA:
         ;
         break;
       default:
-        jj_la1[102] = jj_gen;
-        break label_28;
+        jj_la1[107] = jj_gen;
+        break label_29;
       }
       jj_consume_token(COMMA);
       ObjectPath(s, p, path, acc);
@@ -3106,15 +3219,15 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   final public Path PathAlternative() throws ParseException {
                            Path p1 , p2 ;
     p1 = PathSequence();
-    label_29:
+    label_30:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case VBAR:
         ;
         break;
       default:
-        jj_la1[103] = jj_gen;
-        break label_29;
+        jj_la1[108] = jj_gen;
+        break label_30;
       }
       jj_consume_token(VBAR);
       p2 = PathSequence();
@@ -3127,7 +3240,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   final public Path PathSequence() throws ParseException {
                         Path p1 , p2 ;
     p1 = PathEltOrInverse();
-    label_30:
+    label_31:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case SLASH:
@@ -3135,8 +3248,8 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[104] = jj_gen;
-        break label_30;
+        jj_la1[109] = jj_gen;
+        break label_31;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case SLASH:
@@ -3150,7 +3263,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         p1 = PathFactory.pathSeq(p1, new P_Inverse(p2)) ;
         break;
       default:
-        jj_la1[105] = jj_gen;
+        jj_la1[110] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -3170,7 +3283,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       p = PathMod(p);
       break;
     default:
-      jj_la1[106] = jj_gen;
+      jj_la1[111] = jj_gen;
       ;
     }
      {if (true) return p ;}
@@ -3197,7 +3310,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
        p = PathFactory.pathInverse(p) ;
       break;
     default:
-      jj_la1[107] = jj_gen;
+      jj_la1[112] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3249,7 +3362,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                 {if (true) return PathFactory.pathMod(p, i1, i2) ;}
             break;
           default:
-            jj_la1[108] = jj_gen;
+            jj_la1[113] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
@@ -3259,7 +3372,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                        {if (true) return PathFactory.pathFixedLength(p, i1) ;}
           break;
         default:
-          jj_la1[109] = jj_gen;
+          jj_la1[114] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
@@ -3271,13 +3384,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
              {if (true) return PathFactory.pathMod(p, PathFactory.UNSET, i2) ;}
         break;
       default:
-        jj_la1[110] = jj_gen;
+        jj_la1[115] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[111] = jj_gen;
+      jj_la1[116] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3328,7 +3441,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       jj_consume_token(RPAREN);
       break;
     default:
-      jj_la1[112] = jj_gen;
+      jj_la1[117] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3358,15 +3471,15 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       case CARAT:
         p = PathOneInPropertySet();
                                    pNegSet.add(p) ;
-        label_31:
+        label_32:
         while (true) {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case VBAR:
             ;
             break;
           default:
-            jj_la1[113] = jj_gen;
-            break label_31;
+            jj_la1[118] = jj_gen;
+            break label_32;
           }
           jj_consume_token(VBAR);
           p = PathOneInPropertySet();
@@ -3374,13 +3487,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         }
         break;
       default:
-        jj_la1[114] = jj_gen;
+        jj_la1[119] = jj_gen;
         ;
       }
       jj_consume_token(RPAREN);
       break;
     default:
-      jj_la1[115] = jj_gen;
+      jj_la1[120] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3415,13 +3528,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                {if (true) return new P_ReverseLink(nRDFtype) ;}
         break;
       default:
-        jj_la1[116] = jj_gen;
+        jj_la1[121] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[117] = jj_gen;
+      jj_la1[122] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3447,7 +3560,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                    {if (true) return n ;}
       break;
     default:
-      jj_la1[118] = jj_gen;
+      jj_la1[123] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3476,7 +3589,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                        {if (true) return n ;}
       break;
     default:
-      jj_la1[119] = jj_gen;
+      jj_la1[124] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3497,7 +3610,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       Node listHead = nRDFnil ; Node lastCell = null ; int mark ; Node n ; Token t ;
     t = jj_consume_token(LPAREN);
     int beginLine = t.beginLine; int beginColumn = t.beginColumn; t = null;
-    label_32:
+    label_33:
     while (true) {
       Node cell = createListNode( beginLine, beginColumn) ;
       if ( listHead == nRDFnil )
@@ -3537,8 +3650,8 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[120] = jj_gen;
-        break label_32;
+        jj_la1[125] = jj_gen;
+        break label_33;
       }
     }
     jj_consume_token(RPAREN);
@@ -3552,7 +3665,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       Node listHead = nRDFnil ; Node lastCell = null ; int mark ; Node n ; Token t ;
     t = jj_consume_token(LPAREN);
     int beginLine = t.beginLine; int beginColumn = t.beginColumn; t = null;
-    label_33:
+    label_34:
     while (true) {
       Node cell = createListNode( beginLine, beginColumn) ;
       if ( listHead == nRDFnil )
@@ -3592,8 +3705,8 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[121] = jj_gen;
-        break label_33;
+        jj_la1[126] = jj_gen;
+        break label_34;
       }
     }
     jj_consume_token(RPAREN);
@@ -3638,7 +3751,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                          {if (true) return n ;}
       break;
     default:
-      jj_la1[122] = jj_gen;
+      jj_la1[127] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3680,7 +3793,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                              {if (true) return n ;}
       break;
     default:
-      jj_la1[123] = jj_gen;
+      jj_la1[128] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3718,7 +3831,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       n = GraphTerm();
       break;
     default:
-      jj_la1[124] = jj_gen;
+      jj_la1[129] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3740,7 +3853,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                               n = createNode(iri) ;
       break;
     default:
-      jj_la1[125] = jj_gen;
+      jj_la1[130] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3766,7 +3879,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                                 n = createNode(iri) ;
       break;
     default:
-      jj_la1[126] = jj_gen;
+      jj_la1[131] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3784,7 +3897,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       t = jj_consume_token(VAR2);
       break;
     default:
-      jj_la1[127] = jj_gen;
+      jj_la1[132] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3835,7 +3948,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
           {if (true) return nRDFnil ;}
       break;
     default:
-      jj_la1[128] = jj_gen;
+      jj_la1[133] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3852,15 +3965,15 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   final public Expr ConditionalOrExpression() throws ParseException {
                                    Expr expr1, expr2 ;
     expr1 = ConditionalAndExpression();
-    label_34:
+    label_35:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case SC_OR:
         ;
         break;
       default:
-        jj_la1[129] = jj_gen;
-        break label_34;
+        jj_la1[134] = jj_gen;
+        break label_35;
       }
       jj_consume_token(SC_OR);
       expr2 = ConditionalAndExpression();
@@ -3873,15 +3986,15 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   final public Expr ConditionalAndExpression() throws ParseException {
                                     Expr expr1, expr2 ;
     expr1 = ValueLogical();
-    label_35:
+    label_36:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case SC_AND:
         ;
         break;
       default:
-        jj_la1[130] = jj_gen;
-        break label_35;
+        jj_la1[135] = jj_gen;
+        break label_36;
       }
       jj_consume_token(SC_AND);
       expr2 = ValueLogical();
@@ -3953,13 +4066,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         expr1 = new E_NotOneOf(expr1, a) ;
         break;
       default:
-        jj_la1[131] = jj_gen;
+        jj_la1[136] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[132] = jj_gen;
+      jj_la1[137] = jj_gen;
       ;
     }
       {if (true) return expr1 ;}
@@ -3976,7 +4089,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   final public Expr AdditiveExpression() throws ParseException {
                               Expr expr1, expr2, expr3 ; boolean addition ; Node n ;
     expr1 = MultiplicativeExpression();
-    label_36:
+    label_37:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case INTEGER_POSITIVE:
@@ -3990,8 +4103,8 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[133] = jj_gen;
-        break label_36;
+        jj_la1[138] = jj_gen;
+        break label_37;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case PLUS:
@@ -4028,11 +4141,11 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
          addition = false ;
           break;
         default:
-          jj_la1[134] = jj_gen;
+          jj_la1[139] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
-        label_37:
+        label_38:
         while (true) {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case STAR:
@@ -4040,8 +4153,8 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
             ;
             break;
           default:
-            jj_la1[135] = jj_gen;
-            break label_37;
+            jj_la1[140] = jj_gen;
+            break label_38;
           }
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case STAR:
@@ -4055,7 +4168,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                             expr2 = new E_Divide(expr2, expr3) ;
             break;
           default:
-            jj_la1[136] = jj_gen;
+            jj_la1[141] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
@@ -4066,7 +4179,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
          expr1 = new E_Subtract(expr1, expr2) ;
         break;
       default:
-        jj_la1[137] = jj_gen;
+        jj_la1[142] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -4078,7 +4191,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   final public Expr MultiplicativeExpression() throws ParseException {
                                     Expr expr1, expr2 ;
     expr1 = UnaryExpression();
-    label_38:
+    label_39:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case STAR:
@@ -4086,8 +4199,8 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[138] = jj_gen;
-        break label_38;
+        jj_la1[143] = jj_gen;
+        break label_39;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case STAR:
@@ -4101,7 +4214,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       expr1 = new E_Divide(expr1, expr2) ;
         break;
       default:
-        jj_la1[139] = jj_gen;
+        jj_la1[144] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -4217,7 +4330,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                  {if (true) return expr ;}
       break;
     default:
-      jj_la1[140] = jj_gen;
+      jj_la1[145] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4334,7 +4447,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                  {if (true) return asExpr(gn) ;}
       break;
     default:
-      jj_la1[141] = jj_gen;
+      jj_la1[146] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4430,7 +4543,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
               {if (true) return new E_BNode() ;}
         break;
       default:
-        jj_la1[142] = jj_gen;
+        jj_la1[147] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -4676,15 +4789,15 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       jj_consume_token(LPAREN);
       expr = Expression();
                             a.add(expr) ;
-      label_39:
+      label_40:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case COMMA:
           ;
           break;
         default:
-          jj_la1[143] = jj_gen;
-          break label_39;
+          jj_la1[148] = jj_gen;
+          break label_40;
         }
         jj_consume_token(COMMA);
         expr = Expression();
@@ -4779,7 +4892,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                              {if (true) return expr ;}
       break;
     default:
-      jj_la1[144] = jj_gen;
+      jj_la1[149] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4799,7 +4912,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       flagsExpr = Expression();
       break;
     default:
-      jj_la1[145] = jj_gen;
+      jj_la1[150] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -4820,7 +4933,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       expr3 = Expression();
       break;
     default:
-      jj_la1[146] = jj_gen;
+      jj_la1[151] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -4843,7 +4956,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       expr4 = Expression();
       break;
     default:
-      jj_la1[147] = jj_gen;
+      jj_la1[152] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -4885,7 +4998,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                    distinct = true ;
         break;
       default:
-        jj_la1[148] = jj_gen;
+        jj_la1[153] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -4983,7 +5096,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         expr = Expression();
         break;
       default:
-        jj_la1[149] = jj_gen;
+        jj_la1[154] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -5000,7 +5113,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                       distinct = true ;
         break;
       default:
-        jj_la1[150] = jj_gen;
+        jj_la1[155] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5016,7 +5129,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                       distinct = true ;
         break;
       default:
-        jj_la1[151] = jj_gen;
+        jj_la1[156] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5032,7 +5145,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                       distinct = true ;
         break;
       default:
-        jj_la1[152] = jj_gen;
+        jj_la1[157] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5048,7 +5161,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                       distinct = true ;
         break;
       default:
-        jj_la1[153] = jj_gen;
+        jj_la1[158] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5064,7 +5177,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                          distinct = true ;
         break;
       default:
-        jj_la1[154] = jj_gen;
+        jj_la1[159] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5080,7 +5193,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                       distinct = true ;
         break;
       default:
-        jj_la1[155] = jj_gen;
+        jj_la1[160] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5101,7 +5214,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                                            ordered.add(expr2) ;
             break;
           default:
-            jj_la1[156] = jj_gen;
+            jj_la1[161] = jj_gen;
             ;
           }
         } else {
@@ -5114,14 +5227,14 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                                        ordered.add(expr2) ;
             break;
           default:
-            jj_la1[157] = jj_gen;
+            jj_la1[162] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
         }
         break;
       default:
-        jj_la1[158] = jj_gen;
+        jj_la1[163] = jj_gen;
         ;
       }
       jj_consume_token(RPAREN);
@@ -5135,7 +5248,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         agg = AggregatorFactory.createCustom(iri, a) ;
       break;
     default:
-      jj_la1[159] = jj_gen;
+      jj_la1[164] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5158,7 +5271,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       a = ArgList();
       break;
     default:
-      jj_la1[160] = jj_gen;
+      jj_la1[165] = jj_gen;
       ;
     }
     if ( a == null )
@@ -5191,13 +5304,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         uri = iri();
         break;
       default:
-        jj_la1[161] = jj_gen;
+        jj_la1[166] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[162] = jj_gen;
+      jj_la1[167] = jj_gen;
       ;
     }
       {if (true) return createLiteral(lex, lang, uri) ;}
@@ -5223,7 +5336,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       n = NumericLiteralNegative();
       break;
     default:
-      jj_la1[163] = jj_gen;
+      jj_la1[168] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5247,7 +5360,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                  {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[164] = jj_gen;
+      jj_la1[169] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5270,7 +5383,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                           {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[165] = jj_gen;
+      jj_la1[170] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5293,7 +5406,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                           {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[166] = jj_gen;
+      jj_la1[171] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5311,7 +5424,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
             {if (true) return XSD_FALSE ;}
       break;
     default:
-      jj_la1[167] = jj_gen;
+      jj_la1[172] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5338,7 +5451,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                  lex = stripQuotes3(t.image) ;
       break;
     default:
-      jj_la1[168] = jj_gen;
+      jj_la1[173] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5360,7 +5473,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                          {if (true) return iri ;}
       break;
     default:
-      jj_la1[169] = jj_gen;
+      jj_la1[174] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5379,7 +5492,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       {if (true) return resolvePName(t.image, t.beginLine, t.beginColumn) ;}
       break;
     default:
-      jj_la1[170] = jj_gen;
+      jj_la1[175] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5398,7 +5511,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                {if (true) return createBNode(t.beginLine, t.beginColumn) ;}
       break;
     default:
-      jj_la1[171] = jj_gen;
+      jj_la1[176] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5447,1138 +5560,1138 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     finally { jj_save(4, xla); }
   }
 
-  private boolean jj_3R_153() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_161()) {
-    jj_scanpos = xsp;
-    if (jj_3R_162()) {
-    jj_scanpos = xsp;
-    if (jj_3R_163()) {
-    jj_scanpos = xsp;
-    if (jj_3R_164()) return true;
-    }
-    }
-    }
+  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_87() {
-    if (jj_scan_token(CALL)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_129() {
+    if (jj_3R_135()) return true;
     return false;
   }
 
-  private boolean jj_3R_86() {
-    if (jj_scan_token(COALESCE)) return true;
-    if (jj_3R_106()) return true;
+  private boolean jj_3R_157() {
+    if (jj_3R_168()) return true;
     return false;
   }
 
-  private boolean jj_3R_158() {
-    if (jj_scan_token(FALSE)) return true;
+  private boolean jj_3R_66() {
+    if (jj_scan_token(STRSTARTS)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_145() {
-    if (jj_scan_token(NIL)) return true;
+  private boolean jj_3R_156() {
+    if (jj_3R_167()) return true;
     return false;
   }
 
-  private boolean jj_3R_85() {
-    if (jj_scan_token(VERSION)) return true;
-    if (jj_scan_token(NIL)) return true;
+  private boolean jj_3R_115() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_129()) {
+    jj_scanpos = xsp;
+    if (jj_3R_130()) return true;
+    }
     return false;
   }
 
-  private boolean jj_3R_144() {
-    if (jj_3R_150()) return true;
+  private boolean jj_3R_155() {
+    if (jj_3R_166()) return true;
     return false;
   }
 
-  private boolean jj_3R_84() {
-    if (jj_scan_token(SHA512)) return true;
+  private boolean jj_3R_65() {
+    if (jj_scan_token(CONTAINS)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_157() {
-    if (jj_scan_token(TRUE)) return true;
+  private boolean jj_3R_64() {
+    if (jj_scan_token(ENCODE_FOR_URI)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_63() {
+    if (jj_scan_token(LCASE)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
   private boolean jj_3R_149() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_157()) {
+    if (jj_3R_155()) {
     jj_scanpos = xsp;
-    if (jj_3R_158()) return true;
+    if (jj_3R_156()) {
+    jj_scanpos = xsp;
+    if (jj_3R_157()) return true;
+    }
     }
     return false;
   }
 
-  private boolean jj_3R_143() {
-    if (jj_3R_149()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_83() {
-    if (jj_scan_token(SHA384)) return true;
+  private boolean jj_3R_62() {
+    if (jj_scan_token(UCASE)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_142() {
-    if (jj_3R_148()) return true;
+  private boolean jj_3R_61() {
+    if (jj_3R_109()) return true;
     return false;
   }
 
-  private boolean jj_3R_82() {
-    if (jj_scan_token(SHA256)) return true;
+  private boolean jj_3R_60() {
+    if (jj_scan_token(STRLEN)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_141() {
-    if (jj_3R_147()) return true;
+  private boolean jj_3R_59() {
+    if (jj_3R_108()) return true;
     return false;
   }
 
-  private boolean jj_3R_81() {
-    if (jj_scan_token(SHA1)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_58() {
+    if (jj_scan_token(CONCAT)) return true;
+    if (jj_3R_107()) return true;
     return false;
   }
 
-  private boolean jj_3R_140() {
-    if (jj_3R_132()) return true;
+  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_135() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_140()) {
-    jj_scanpos = xsp;
-    if (jj_3R_141()) {
-    jj_scanpos = xsp;
-    if (jj_3R_142()) {
-    jj_scanpos = xsp;
-    if (jj_3R_143()) {
-    jj_scanpos = xsp;
-    if (jj_3R_144()) {
-    jj_scanpos = xsp;
-    if (jj_3R_145()) return true;
-    }
-    }
-    }
-    }
-    }
+  private boolean jj_3R_56() {
+    if (jj_scan_token(FLOOR)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_80() {
-    if (jj_scan_token(MD5)) return true;
+  private boolean jj_3R_55() {
+    if (jj_scan_token(CEIL)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_176() {
-    if (jj_scan_token(DOUBLE_NEGATIVE)) return true;
+  private boolean jj_3R_54() {
+    if (jj_scan_token(ABS)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_79() {
-    if (jj_scan_token(STRUUID)) return true;
+  private boolean jj_3R_53() {
+    if (jj_scan_token(RAND)) return true;
     if (jj_scan_token(NIL)) return true;
     return false;
   }
 
-  private boolean jj_3R_175() {
-    if (jj_scan_token(DECIMAL_NEGATIVE)) return true;
+  private boolean jj_3R_106() {
+    if (jj_scan_token(NIL)) return true;
     return false;
   }
 
-  private boolean jj_3R_78() {
-    if (jj_scan_token(UUID)) return true;
-    if (jj_scan_token(NIL)) return true;
+  private boolean jj_3R_148() {
+    if (jj_3R_154()) return true;
     return false;
   }
 
-  private boolean jj_3R_174() {
-    if (jj_scan_token(INTEGER_NEGATIVE)) return true;
+  private boolean jj_3R_105() {
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_167() {
+  private boolean jj_3R_52() {
+    if (jj_scan_token(BNODE)) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_174()) {
-    jj_scanpos = xsp;
-    if (jj_3R_175()) {
+    if (jj_3R_105()) {
     jj_scanpos = xsp;
-    if (jj_3R_176()) return true;
-    }
+    if (jj_3R_106()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_134() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(14)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(15)) return true;
-    }
+  private boolean jj_3R_51() {
+    if (jj_scan_token(URI)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_77() {
-    if (jj_scan_token(NOW)) return true;
-    if (jj_scan_token(NIL)) return true;
+  private boolean jj_3R_50() {
+    if (jj_scan_token(IRI)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_76() {
-    if (jj_scan_token(TZ)) return true;
+  private boolean jj_3R_49() {
+    if (jj_scan_token(BOUND)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_75() {
-    if (jj_scan_token(TIMEZONE)) return true;
+  private boolean jj_3R_48() {
+    if (jj_scan_token(DTYPE)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_129() {
-    if (jj_3R_135()) return true;
+  private boolean jj_3R_126() {
+    if (jj_scan_token(LBRACE)) return true;
     return false;
   }
 
-  private boolean jj_3R_74() {
-    if (jj_scan_token(SECONDS)) return true;
+  private boolean jj_3_3() {
+    if (jj_scan_token(DOT)) return true;
+    if (jj_3R_43()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_47() {
+    if (jj_scan_token(LANGMATCHES)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_173() {
-    if (jj_scan_token(DOUBLE_POSITIVE)) return true;
+  private boolean jj_3R_46() {
+    if (jj_scan_token(LANG)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_73() {
-    if (jj_scan_token(MINUTES)) return true;
+  private boolean jj_3R_45() {
+    if (jj_scan_token(STR)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_172() {
-    if (jj_scan_token(DECIMAL_POSITIVE)) return true;
+  private boolean jj_3R_41() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_44()) {
+    jj_scanpos = xsp;
+    if (jj_3R_45()) {
+    jj_scanpos = xsp;
+    if (jj_3R_46()) {
+    jj_scanpos = xsp;
+    if (jj_3R_47()) {
+    jj_scanpos = xsp;
+    if (jj_3R_48()) {
+    jj_scanpos = xsp;
+    if (jj_3R_49()) {
+    jj_scanpos = xsp;
+    if (jj_3R_50()) {
+    jj_scanpos = xsp;
+    if (jj_3R_51()) {
+    jj_scanpos = xsp;
+    if (jj_3R_52()) {
+    jj_scanpos = xsp;
+    if (jj_3R_53()) {
+    jj_scanpos = xsp;
+    if (jj_3R_54()) {
+    jj_scanpos = xsp;
+    if (jj_3R_55()) {
+    jj_scanpos = xsp;
+    if (jj_3R_56()) {
+    jj_scanpos = xsp;
+    if (jj_3R_57()) {
+    jj_scanpos = xsp;
+    if (jj_3R_58()) {
+    jj_scanpos = xsp;
+    if (jj_3R_59()) {
+    jj_scanpos = xsp;
+    if (jj_3R_60()) {
+    jj_scanpos = xsp;
+    if (jj_3R_61()) {
+    jj_scanpos = xsp;
+    if (jj_3R_62()) {
+    jj_scanpos = xsp;
+    if (jj_3R_63()) {
+    jj_scanpos = xsp;
+    if (jj_3R_64()) {
+    jj_scanpos = xsp;
+    if (jj_3R_65()) {
+    jj_scanpos = xsp;
+    if (jj_3R_66()) {
+    jj_scanpos = xsp;
+    if (jj_3R_67()) {
+    jj_scanpos = xsp;
+    if (jj_3R_68()) {
+    jj_scanpos = xsp;
+    if (jj_3R_69()) {
+    jj_scanpos = xsp;
+    if (jj_3R_70()) {
+    jj_scanpos = xsp;
+    if (jj_3R_71()) {
+    jj_scanpos = xsp;
+    if (jj_3R_72()) {
+    jj_scanpos = xsp;
+    if (jj_3R_73()) {
+    jj_scanpos = xsp;
+    if (jj_3R_74()) {
+    jj_scanpos = xsp;
+    if (jj_3R_75()) {
+    jj_scanpos = xsp;
+    if (jj_3R_76()) {
+    jj_scanpos = xsp;
+    if (jj_3R_77()) {
+    jj_scanpos = xsp;
+    if (jj_3R_78()) {
+    jj_scanpos = xsp;
+    if (jj_3R_79()) {
+    jj_scanpos = xsp;
+    if (jj_3R_80()) {
+    jj_scanpos = xsp;
+    if (jj_3R_81()) {
+    jj_scanpos = xsp;
+    if (jj_3R_82()) {
+    jj_scanpos = xsp;
+    if (jj_3R_83()) {
+    jj_scanpos = xsp;
+    if (jj_3R_84()) {
+    jj_scanpos = xsp;
+    if (jj_3R_85()) {
+    jj_scanpos = xsp;
+    if (jj_3R_86()) {
+    jj_scanpos = xsp;
+    if (jj_3R_87()) {
+    jj_scanpos = xsp;
+    if (jj_3R_88()) {
+    jj_scanpos = xsp;
+    if (jj_3R_89()) {
+    jj_scanpos = xsp;
+    if (jj_3R_90()) {
+    jj_scanpos = xsp;
+    if (jj_3R_91()) {
+    jj_scanpos = xsp;
+    if (jj_3R_92()) {
+    jj_scanpos = xsp;
+    if (jj_3R_93()) {
+    jj_scanpos = xsp;
+    if (jj_3R_94()) {
+    jj_scanpos = xsp;
+    if (jj_3R_95()) {
+    jj_scanpos = xsp;
+    if (jj_3R_96()) {
+    jj_scanpos = xsp;
+    if (jj_3R_97()) {
+    jj_scanpos = xsp;
+    if (jj_3R_98()) {
+    jj_scanpos = xsp;
+    if (jj_3R_99()) {
+    jj_scanpos = xsp;
+    if (jj_3R_100()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
     return false;
   }
 
-  private boolean jj_3R_72() {
-    if (jj_scan_token(HOURS)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_44() {
+    if (jj_3R_104()) return true;
     return false;
   }
 
-  private boolean jj_3R_171() {
-    if (jj_scan_token(INTEGER_POSITIVE)) return true;
+  private boolean jj_3R_124() {
+    if (jj_scan_token(AGG)) return true;
+    if (jj_3R_133()) return true;
     return false;
   }
 
-  private boolean jj_3R_166() {
+  private boolean jj_3_2() {
+    if (jj_scan_token(SEMICOLON)) return true;
+    if (jj_3R_42()) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_171()) {
+    if (jj_scan_token(130)) {
     jj_scanpos = xsp;
-    if (jj_3R_172()) {
+    if (jj_scan_token(131)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(138)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(133)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(134)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(135)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(132)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(143)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(126)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(125)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(144)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(127)) {
     jj_scanpos = xsp;
-    if (jj_3R_173()) return true;
+    if (jj_scan_token(128)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(129)) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
     }
     }
     return false;
   }
 
-  private boolean jj_3R_71() {
-    if (jj_scan_token(DAY)) return true;
+  private boolean jj_3_5() {
+    if (jj_scan_token(SEMICOLON)) return true;
+    if (jj_scan_token(SEPARATOR)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_137() {
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_70() {
-    if (jj_scan_token(MONTH)) return true;
+  private boolean jj_3R_123() {
+    if (jj_scan_token(GROUP_CONCAT)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_69() {
-    if (jj_scan_token(YEAR)) return true;
+  private boolean jj_3R_122() {
+    if (jj_scan_token(SAMPLE)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_121() {
+    if (jj_scan_token(AVG)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_120() {
+    if (jj_scan_token(MAX)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_170() {
-    if (jj_scan_token(DOUBLE)) return true;
+  private boolean jj_3R_119() {
+    if (jj_scan_token(MIN)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_68() {
-    if (jj_scan_token(STRAFTER)) return true;
+  private boolean jj_3R_118() {
+    if (jj_scan_token(SUM)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_169() {
-    if (jj_scan_token(DECIMAL)) return true;
+  private boolean jj_3_1() {
+    if (jj_3R_41()) return true;
     return false;
   }
 
-  private boolean jj_3R_168() {
-    if (jj_scan_token(INTEGER)) return true;
+  private boolean jj_3R_117() {
+    if (jj_scan_token(COUNT)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_165() {
+  private boolean jj_3R_104() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_168()) {
+    if (jj_3R_117()) {
     jj_scanpos = xsp;
-    if (jj_3R_169()) {
+    if (jj_3R_118()) {
+    jj_scanpos = xsp;
+    if (jj_3R_119()) {
+    jj_scanpos = xsp;
+    if (jj_3R_120()) {
+    jj_scanpos = xsp;
+    if (jj_3R_121()) {
+    jj_scanpos = xsp;
+    if (jj_3R_122()) {
+    jj_scanpos = xsp;
+    if (jj_3R_123()) {
     jj_scanpos = xsp;
-    if (jj_3R_170()) return true;
+    if (jj_3R_124()) return true;
+    }
+    }
+    }
+    }
+    }
     }
     }
     return false;
   }
 
-  private boolean jj_3R_67() {
-    if (jj_scan_token(STRBEFORE)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_138() {
+    if (jj_scan_token(LBRACKET)) return true;
     return false;
   }
 
-  private boolean jj_3R_66() {
-    if (jj_scan_token(STRENDS)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_132() {
+    if (jj_3R_138()) return true;
     return false;
   }
 
-  private boolean jj_3R_128() {
-    if (jj_3R_134()) return true;
+  private boolean jj_3R_131() {
+    if (jj_3R_137()) return true;
     return false;
   }
 
-  private boolean jj_3R_156() {
-    if (jj_3R_167()) return true;
+  private boolean jj_3R_116() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_131()) {
+    jj_scanpos = xsp;
+    if (jj_3R_132()) return true;
+    }
     return false;
   }
 
-  private boolean jj_3R_65() {
-    if (jj_scan_token(STRSTARTS)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_112() {
+    if (jj_scan_token(NOT)) return true;
+    if (jj_scan_token(EXISTS)) return true;
     return false;
   }
 
-  private boolean jj_3R_155() {
-    if (jj_3R_166()) return true;
+  private boolean jj_3R_111() {
+    if (jj_scan_token(EXISTS)) return true;
+    if (jj_3R_126()) return true;
     return false;
   }
 
   private boolean jj_3R_114() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_128()) {
-    jj_scanpos = xsp;
-    if (jj_3R_129()) return true;
-    }
+    if (jj_3R_128()) return true;
     return false;
   }
 
-  private boolean jj_3R_154() {
-    if (jj_3R_165()) return true;
+  private boolean jj_3R_128() {
+    if (jj_scan_token(PREFIX)) return true;
+    if (jj_scan_token(PNAME_NS)) return true;
+    if (jj_3R_134()) return true;
     return false;
   }
 
-  private boolean jj_3R_64() {
-    if (jj_scan_token(CONTAINS)) return true;
+  private boolean jj_3R_109() {
+    if (jj_scan_token(REPLACE)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_63() {
-    if (jj_scan_token(ENCODE_FOR_URI)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_127() {
+    if (jj_scan_token(BASE)) return true;
+    if (jj_3R_134()) return true;
     return false;
   }
 
-  private boolean jj_3R_62() {
-    if (jj_scan_token(LCASE)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_113() {
+    if (jj_3R_127()) return true;
     return false;
   }
 
-  private boolean jj_3R_148() {
+  private boolean jj_3R_101() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_154()) {
-    jj_scanpos = xsp;
-    if (jj_3R_155()) {
+    if (jj_3R_113()) {
     jj_scanpos = xsp;
-    if (jj_3R_156()) return true;
-    }
+    if (jj_3R_114()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_61() {
-    if (jj_scan_token(UCASE)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_60() {
-    if (jj_3R_108()) return true;
+  private boolean jj_3R_42() {
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_101()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
-  private boolean jj_3R_59() {
-    if (jj_scan_token(STRLEN)) return true;
+  private boolean jj_3R_108() {
+    if (jj_scan_token(SUBSTR)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_58() {
-    if (jj_3R_107()) return true;
+  private boolean jj_3R_103() {
+    if (jj_3R_116()) return true;
     return false;
   }
 
-  private boolean jj_3R_57() {
-    if (jj_scan_token(CONCAT)) return true;
-    if (jj_3R_106()) return true;
+  private boolean jj_3R_43() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_102()) {
+    jj_scanpos = xsp;
+    if (jj_3R_103()) return true;
+    }
     return false;
   }
 
-  private boolean jj_3R_56() {
-    if (jj_scan_token(ROUND)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_102() {
+    if (jj_3R_115()) return true;
     return false;
   }
 
-  private boolean jj_3R_55() {
-    if (jj_scan_token(FLOOR)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3_4() {
+    if (jj_scan_token(DOT)) return true;
+    if (jj_3R_43()) return true;
     return false;
   }
 
-  private boolean jj_3R_54() {
-    if (jj_scan_token(CEIL)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_134() {
+    if (jj_scan_token(IRIref)) return true;
     return false;
   }
 
-  private boolean jj_3R_53() {
-    if (jj_scan_token(ABS)) return true;
+  private boolean jj_3R_110() {
+    if (jj_scan_token(REGEX)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_52() {
-    if (jj_scan_token(RAND)) return true;
-    if (jj_scan_token(NIL)) return true;
+  private boolean jj_3R_161() {
+    if (jj_scan_token(ANON)) return true;
     return false;
   }
 
-  private boolean jj_3R_105() {
-    if (jj_scan_token(NIL)) return true;
+  private boolean jj_3R_100() {
+    if (jj_3R_112()) return true;
     return false;
   }
 
-  private boolean jj_3R_147() {
-    if (jj_3R_153()) return true;
+  private boolean jj_3R_99() {
+    if (jj_3R_111()) return true;
     return false;
   }
 
-  private boolean jj_3R_104() {
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_160() {
+    if (jj_scan_token(BLANK_NODE_LABEL)) return true;
     return false;
   }
 
-  private boolean jj_3R_51() {
-    if (jj_scan_token(BNODE)) return true;
+  private boolean jj_3R_151() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_104()) {
+    if (jj_3R_160()) {
     jj_scanpos = xsp;
-    if (jj_3R_105()) return true;
+    if (jj_3R_161()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_50() {
-    if (jj_scan_token(URI)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_49() {
-    if (jj_scan_token(IRI)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_98() {
+    if (jj_3R_110()) return true;
     return false;
   }
 
-  private boolean jj_3R_48() {
-    if (jj_scan_token(BOUND)) return true;
+  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_3_2() {
-    if (jj_scan_token(SEMICOLON)) return true;
-    if (jj_3R_41()) return true;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(130)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(131)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(138)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(133)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(134)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(135)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(132)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(143)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(126)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(125)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(144)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(127)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(128)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(129)) return true;
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
+  private boolean jj_3R_153() {
+    if (jj_scan_token(PNAME_NS)) return true;
     return false;
   }
 
-  private boolean jj_3R_47() {
-    if (jj_scan_token(DTYPE)) return true;
+  private boolean jj_3R_96() {
+    if (jj_scan_token(IS_LITERAL)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_125() {
-    if (jj_scan_token(LBRACE)) return true;
-    return false;
-  }
-
-  private boolean jj_3_3() {
-    if (jj_scan_token(DOT)) return true;
-    if (jj_3R_42()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_46() {
-    if (jj_scan_token(LANGMATCHES)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_152() {
+    if (jj_scan_token(PNAME_LN)) return true;
     return false;
   }
 
-  private boolean jj_3R_45() {
-    if (jj_scan_token(LANG)) return true;
+  private boolean jj_3R_95() {
+    if (jj_scan_token(IS_BLANK)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_44() {
-    if (jj_scan_token(STR)) return true;
+  private boolean jj_3R_125() {
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_40() {
+  private boolean jj_3R_147() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_43()) {
-    jj_scanpos = xsp;
-    if (jj_3R_44()) {
-    jj_scanpos = xsp;
-    if (jj_3R_45()) {
-    jj_scanpos = xsp;
-    if (jj_3R_46()) {
-    jj_scanpos = xsp;
-    if (jj_3R_47()) {
-    jj_scanpos = xsp;
-    if (jj_3R_48()) {
-    jj_scanpos = xsp;
-    if (jj_3R_49()) {
-    jj_scanpos = xsp;
-    if (jj_3R_50()) {
-    jj_scanpos = xsp;
-    if (jj_3R_51()) {
-    jj_scanpos = xsp;
-    if (jj_3R_52()) {
-    jj_scanpos = xsp;
-    if (jj_3R_53()) {
-    jj_scanpos = xsp;
-    if (jj_3R_54()) {
-    jj_scanpos = xsp;
-    if (jj_3R_55()) {
-    jj_scanpos = xsp;
-    if (jj_3R_56()) {
-    jj_scanpos = xsp;
-    if (jj_3R_57()) {
-    jj_scanpos = xsp;
-    if (jj_3R_58()) {
-    jj_scanpos = xsp;
-    if (jj_3R_59()) {
-    jj_scanpos = xsp;
-    if (jj_3R_60()) {
-    jj_scanpos = xsp;
-    if (jj_3R_61()) {
-    jj_scanpos = xsp;
-    if (jj_3R_62()) {
-    jj_scanpos = xsp;
-    if (jj_3R_63()) {
-    jj_scanpos = xsp;
-    if (jj_3R_64()) {
-    jj_scanpos = xsp;
-    if (jj_3R_65()) {
-    jj_scanpos = xsp;
-    if (jj_3R_66()) {
-    jj_scanpos = xsp;
-    if (jj_3R_67()) {
-    jj_scanpos = xsp;
-    if (jj_3R_68()) {
-    jj_scanpos = xsp;
-    if (jj_3R_69()) {
-    jj_scanpos = xsp;
-    if (jj_3R_70()) {
-    jj_scanpos = xsp;
-    if (jj_3R_71()) {
-    jj_scanpos = xsp;
-    if (jj_3R_72()) {
-    jj_scanpos = xsp;
-    if (jj_3R_73()) {
+    if (jj_3R_152()) {
     jj_scanpos = xsp;
-    if (jj_3R_74()) {
-    jj_scanpos = xsp;
-    if (jj_3R_75()) {
-    jj_scanpos = xsp;
-    if (jj_3R_76()) {
-    jj_scanpos = xsp;
-    if (jj_3R_77()) {
-    jj_scanpos = xsp;
-    if (jj_3R_78()) {
-    jj_scanpos = xsp;
-    if (jj_3R_79()) {
-    jj_scanpos = xsp;
-    if (jj_3R_80()) {
-    jj_scanpos = xsp;
-    if (jj_3R_81()) {
-    jj_scanpos = xsp;
-    if (jj_3R_82()) {
-    jj_scanpos = xsp;
-    if (jj_3R_83()) {
-    jj_scanpos = xsp;
-    if (jj_3R_84()) {
-    jj_scanpos = xsp;
-    if (jj_3R_85()) {
-    jj_scanpos = xsp;
-    if (jj_3R_86()) {
-    jj_scanpos = xsp;
-    if (jj_3R_87()) {
-    jj_scanpos = xsp;
-    if (jj_3R_88()) {
-    jj_scanpos = xsp;
-    if (jj_3R_89()) {
-    jj_scanpos = xsp;
-    if (jj_3R_90()) {
-    jj_scanpos = xsp;
-    if (jj_3R_91()) {
-    jj_scanpos = xsp;
-    if (jj_3R_92()) {
-    jj_scanpos = xsp;
-    if (jj_3R_93()) {
-    jj_scanpos = xsp;
-    if (jj_3R_94()) {
-    jj_scanpos = xsp;
-    if (jj_3R_95()) {
-    jj_scanpos = xsp;
-    if (jj_3R_96()) {
-    jj_scanpos = xsp;
-    if (jj_3R_97()) {
-    jj_scanpos = xsp;
-    if (jj_3R_98()) {
-    jj_scanpos = xsp;
-    if (jj_3R_99()) return true;
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
+    if (jj_3R_153()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_43() {
-    if (jj_3R_103()) return true;
+  private boolean jj_3R_94() {
+    if (jj_scan_token(IS_URI)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3_1() {
-    if (jj_3R_40()) return true;
+  private boolean jj_3R_93() {
+    if (jj_scan_token(IS_IRI)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_123() {
-    if (jj_scan_token(AGG)) return true;
-    if (jj_3R_132()) return true;
+  private boolean jj_3R_140() {
+    if (jj_3R_147()) return true;
     return false;
   }
 
-  private boolean jj_3_5() {
-    if (jj_scan_token(SEMICOLON)) return true;
-    if (jj_scan_token(SEPARATOR)) return true;
+  private boolean jj_3R_107() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(165)) {
+    jj_scanpos = xsp;
+    if (jj_3R_125()) return true;
+    }
     return false;
   }
 
-  private boolean jj_3R_136() {
+  private boolean jj_3R_92() {
+    if (jj_scan_token(SAME_TERM)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_122() {
-    if (jj_scan_token(GROUP_CONCAT)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_139() {
+    if (jj_3R_134()) return true;
     return false;
   }
 
-  private boolean jj_3R_121() {
-    if (jj_scan_token(SAMPLE)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_133() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_139()) {
+    jj_scanpos = xsp;
+    if (jj_3R_140()) return true;
+    }
     return false;
   }
 
-  private boolean jj_3R_120() {
-    if (jj_scan_token(AVG)) return true;
+  private boolean jj_3R_91() {
+    if (jj_scan_token(STRDT)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_119() {
-    if (jj_scan_token(MAX)) return true;
+  private boolean jj_3R_90() {
+    if (jj_scan_token(STRLANG)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_118() {
-    if (jj_scan_token(MIN)) return true;
+  private boolean jj_3R_89() {
+    if (jj_scan_token(IF)) return true;
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_117() {
-    if (jj_scan_token(SUM)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_165() {
+    if (jj_scan_token(STRING_LITERAL_LONG2)) return true;
     return false;
   }
 
-  private boolean jj_3R_113() {
-    if (jj_3R_127()) return true;
+  private boolean jj_3R_164() {
+    if (jj_scan_token(STRING_LITERAL_LONG1)) return true;
     return false;
   }
 
-  private boolean jj_3R_116() {
-    if (jj_scan_token(COUNT)) return true;
-    if (jj_scan_token(LPAREN)) return true;
+  private boolean jj_3R_163() {
+    if (jj_scan_token(STRING_LITERAL2)) return true;
     return false;
   }
 
-  private boolean jj_3R_127() {
-    if (jj_scan_token(PREFIX)) return true;
-    if (jj_scan_token(PNAME_NS)) return true;
-    if (jj_3R_133()) return true;
+  private boolean jj_3R_162() {
+    if (jj_scan_token(STRING_LITERAL1)) return true;
     return false;
   }
 
-  private boolean jj_3R_103() {
+  private boolean jj_3R_154() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_116()) {
-    jj_scanpos = xsp;
-    if (jj_3R_117()) {
-    jj_scanpos = xsp;
-    if (jj_3R_118()) {
-    jj_scanpos = xsp;
-    if (jj_3R_119()) {
-    jj_scanpos = xsp;
-    if (jj_3R_120()) {
+    if (jj_3R_162()) {
     jj_scanpos = xsp;
-    if (jj_3R_121()) {
+    if (jj_3R_163()) {
     jj_scanpos = xsp;
-    if (jj_3R_122()) {
+    if (jj_3R_164()) {
     jj_scanpos = xsp;
-    if (jj_3R_123()) return true;
-    }
-    }
-    }
-    }
+    if (jj_3R_165()) return true;
     }
     }
     }
     return false;
   }
 
-  private boolean jj_3R_137() {
-    if (jj_scan_token(LBRACKET)) return true;
+  private boolean jj_3R_88() {
+    if (jj_scan_token(CALL)) return true;
+    if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
-  private boolean jj_3R_126() {
-    if (jj_scan_token(BASE)) return true;
-    if (jj_3R_133()) return true;
+  private boolean jj_3R_87() {
+    if (jj_scan_token(COALESCE)) return true;
+    if (jj_3R_107()) return true;
     return false;
   }
 
-  private boolean jj_3R_131() {
-    if (jj_3R_137()) return true;
+  private boolean jj_3R_159() {
+    if (jj_scan_token(FALSE)) return true;
 

<TRUNCATED>

[34/50] [abbrv] jena git commit: Merge pull request #13 from apache/master

Posted by an...@apache.org.
Merge pull request #13 from apache/master

pull master 2015-08-10

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

Branch: refs/heads/JENA-491-construct-quads
Commit: e743d2560061176eeb4abaef618fbef8a5b29b77
Parents: 6b695c5 4a2c5d2
Author: confidencesun <co...@gmail.com>
Authored: Mon Aug 10 06:02:28 2015 -0300
Committer: confidencesun <co...@gmail.com>
Committed: Mon Aug 10 06:02:28 2015 -0300

----------------------------------------------------------------------
 .../arq/querybuilder/handlers/WhereHandler.java |   14 +-
 .../querybuilder/handlers/WhereHandlerTest.java |   33 +
 .../permissions/example/ExampleEvaluator.java   |   43 +-
 .../example/ShiroExampleEvaluator.java          |   15 +-
 .../jena/security/example/fuseki/config.ttl     |   26 +-
 .../apache/jena/permissions/SecuredItem.java    |  142 +-
 .../jena/permissions/SecurityEvaluator.java     |  112 +-
 .../jena/permissions/graph/SecuredGraph.java    |  102 +-
 .../graph/SecuredGraphEventManager.java         |  233 ++--
 .../permissions/graph/SecuredPrefixMapping.java |   81 +-
 .../graph/impl/SecuredGraphImpl.java            |  184 ++-
 .../graph/impl/SecuredPrefixMappingImpl.java    |   89 +-
 .../impl/CachedSecurityEvaluator.java           |   28 +-
 .../jena/permissions/impl/SecuredItemImpl.java  |  779 +++++------
 .../jena/permissions/model/SecuredAlt.java      |  163 ++-
 .../permissions/model/SecuredContainer.java     |  133 +-
 .../jena/permissions/model/SecuredLiteral.java  |   93 +-
 .../jena/permissions/model/SecuredModel.java    | 1243 ++++++++++++------
 .../jena/permissions/model/SecuredProperty.java |   11 +-
 .../jena/permissions/model/SecuredRDFList.java  |  236 +++-
 .../jena/permissions/model/SecuredRDFNode.java  |   26 +-
 .../model/SecuredReifiedStatement.java          |   12 +-
 .../jena/permissions/model/SecuredResource.java |  214 ++-
 .../jena/permissions/model/SecuredSeq.java      |  288 ++--
 .../permissions/model/SecuredStatement.java     |  166 ++-
 .../permissions/model/impl/SecuredAltImpl.java  |  207 ++-
 .../model/impl/SecuredContainerImpl.java        |  438 ++----
 .../model/impl/SecuredLiteralImpl.java          |  162 ++-
 .../model/impl/SecuredModelImpl.java            |  610 +++++----
 .../model/impl/SecuredPropertyImpl.java         |   51 +-
 .../model/impl/SecuredRDFListImpl.java          |  704 ++++------
 .../model/impl/SecuredRDFNodeImpl.java          |  211 ++-
 .../model/impl/SecuredReifiedStatementImpl.java |   29 +-
 .../model/impl/SecuredResourceImpl.java         |  570 ++++----
 .../permissions/model/impl/SecuredSelector.java |   39 +-
 .../permissions/model/impl/SecuredSeqImpl.java  |  326 ++---
 .../model/impl/SecuredStatementImpl.java        |  278 ++--
 .../permissions/query/SecuredQueryEngine.java   |  100 +-
 .../permissions/query/rewriter/OpRewriter.java  |  379 +++---
 .../query/rewriter/SecuredFunction.java         |  104 +-
 .../permissions/utils/PermStatementFilter.java  |   48 +-
 .../permissions/utils/PermTripleFilter.java     |   45 +-
 .../permissions/utils/RDFListSecFilter.java     |   23 +-
 .../jena/permissions/MockSecurityEvaluator.java |    6 +
 .../ModelBasedSecurityEvaluator.java            |    9 +-
 .../permissions/StaticSecurityEvaluator.java    |    5 +
 .../jena/permissions/graph/TDBGraphTest.java    |    3 -
 .../model/SecuredModelDetailTest.java           |    5 +
 .../permissions/model/SecuredModelTest.java     |    6 +-
 .../jena/permissions/query/DataSetTest.java     |   15 +-
 .../jena/permissions/query/QueryEngineTest.java |    9 +-
 51 files changed, 4778 insertions(+), 4070 deletions(-)
----------------------------------------------------------------------



[32/50] [abbrv] jena git commit: add some syntax tests: 1) default graph; 2) short form; 3) bad syntax test

Posted by an...@apache.org.
add some syntax tests: 1) default graph; 2) short form; 3) bad syntax
test

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 50a65c3cc817fd482867450fb41a5cc01e81a7db
Parents: b084878
Author: confidencesun <co...@gmail.com>
Authored: Sun Aug 9 09:49:06 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Sun Aug 9 09:49:06 2015 +0800

----------------------------------------------------------------------
 .../ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-09.arq        | 7 +++++++
 .../ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-10.arq        | 7 +++++++
 .../ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-11.arq        | 7 +++++++
 .../ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-12.arq        | 7 +++++++
 .../ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-bad-01.arq    | 7 +++++++
 5 files changed, 35 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/50a65c3c/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-09.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-09.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-09.arq
new file mode 100644
index 0000000..6fb3c52
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-09.arq
@@ -0,0 +1,7 @@
+PREFIX : <http://example/>
+
+CONSTRUCT {
+    { ?s ?p ?o }
+   }
+WHERE
+   { }

http://git-wip-us.apache.org/repos/asf/jena/blob/50a65c3c/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-10.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-10.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-10.arq
new file mode 100644
index 0000000..ba071bb
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-10.arq
@@ -0,0 +1,7 @@
+PREFIX : <http://example/>
+
+CONSTRUCT 
+WHERE
+   { 
+     ?s ?p ?o
+   }

http://git-wip-us.apache.org/repos/asf/jena/blob/50a65c3c/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-11.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-11.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-11.arq
new file mode 100644
index 0000000..bb9dcbb
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-11.arq
@@ -0,0 +1,7 @@
+PREFIX : <http://example/>
+
+CONSTRUCT 
+WHERE
+   { 
+     GRAPH ?g { ?s ?p ?o }
+   }

http://git-wip-us.apache.org/repos/asf/jena/blob/50a65c3c/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-12.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-12.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-12.arq
new file mode 100644
index 0000000..7fae8d2
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-12.arq
@@ -0,0 +1,7 @@
+PREFIX : <http://example/>
+
+CONSTRUCT 
+WHERE
+   { 
+     { ?s ?p ?o }
+   }

http://git-wip-us.apache.org/repos/asf/jena/blob/50a65c3c/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-bad-01.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-bad-01.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-bad-01.arq
new file mode 100644
index 0000000..d776dd3
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-bad-01.arq
@@ -0,0 +1,7 @@
+PREFIX : <http://example/>
+
+CONSTRUCT 
+WHERE
+   { 
+     GRAPH ?g { ?s ?p ?o. FILTER isIRI(?o) }
+   }


[38/50] [abbrv] jena git commit: Fix default graph projection for exeConstructTriples();

Posted by an...@apache.org.
Fix default graph projection for exeConstructTriples();

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

Branch: refs/heads/JENA-491-construct-quads
Commit: f27623dcf073638a92c55a580a891bc6008e51bf
Parents: e819ac3
Author: confidencesun <co...@gmail.com>
Authored: Wed Aug 12 15:11:00 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Wed Aug 12 15:11:00 2015 +0800

----------------------------------------------------------------------
 .../constructquads/ExampleConstructQuads.java   | 241 ++++++++++---------
 .../org/apache/jena/sparql/syntax/Template.java |   6 +-
 2 files changed, 130 insertions(+), 117 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/f27623dc/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
----------------------------------------------------------------------
diff --git a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
index ff54915..dab9007 100644
--- a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
+++ b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
@@ -46,119 +46,132 @@ import org.apache.jena.util.PrintUtil;
 public class ExampleConstructQuads {
 	public static void main(String[] args) throws FileNotFoundException, IOException {
 
-//		// create testing data :
-//		// 1) default graph data
-//		Model model = ModelFactory.createDefaultModel();
-//		Resource s = model.createResource("http://eg.com/s");
-//		Property p = model.createProperty("http://eg.com/p");
-//		Resource o = model.createResource("http://eg.com/o");
-//		model.add(s, p, o);
-//		Dataset dataset = DatasetFactory.create(model);
-//		// 2) named graph data
-//		Model model1 = ModelFactory.createDefaultModel();
-//		Resource s1 = model.createResource("http://eg.com/s1");
-//		Property p1 = model.createProperty("http://eg.com/p1");
-//		Resource o1 = model.createResource("http://eg.com/o1");
-//		model1.add(s1, p1, o1);
-//		dataset.addNamedModel("http://eg.com/g1", model1);
-//
-//		// construct named graph
-//		System.out.println("construct named graph:");
-//		String queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
-//		Query query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-//		try (QueryExecution qexec = QueryExecutionFactory
-//				.create(query, dataset)) {
-//			Iterator<Quad> quads = qexec.execConstructQuads();
-//			PrintUtil.printOut(quads);
-//		}
-//		arq.qparse.main("--in", "arq", queryString);
-//
-//		// construct default graph 1
-//		System.out.println("construct default graph 1:");
-//		queryString = "CONSTRUCT {  {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
-//		try (QueryExecution qexec = QueryExecutionFactory
-//				.create(query, dataset)) {
-//			Iterator<Quad> quads = qexec.execConstructQuads();
-//			PrintUtil.printOut(quads);
-//		}
-//		arq.qparse.main("--in", "arq", queryString);
-//
-//		// construct default graph 2
-//		System.out.println("construct default graph 2:");
-//		queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o}  WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
-//		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-//		try (QueryExecution qexec = QueryExecutionFactory
-//				.create(query, dataset)) {
-//			Iterator<Quad> quads = qexec.execConstructQuads();
-//			PrintUtil.printOut(quads);
-//		}
-//		arq.qparse.main("--in", "arq", queryString);
-//
-//		// construct triples
-//		System.out.println("construct default graph 2:");
-//		queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o}  WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
-//		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-//		try (QueryExecution qexec = QueryExecutionFactory
-//				.create(query, dataset)) {
-//			Iterator<Triple> triples = qexec.execConstructTriples();
-//			PrintUtil.printOut(triples);
-//		}
-//		arq.qparse.main("--in", "arq", queryString);
-//
-//		// construct dataset
-//		System.out.println("construct dataset:");
-//		queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
-//		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-//		try (QueryExecution qexec = QueryExecutionFactory
-//				.create(query, dataset)) {
-//			Dataset d = qexec.execConstructDataset();
-//			RDFDataMgr.write(System.out, d, Lang.TRIG);
-//		}
-//		arq.qparse.main("--in", "arq", queryString);
-//
-//		// short form 1
-//		System.out.println("short form 1:");
-//		queryString = "CONSTRUCT WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
-//		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-//		try (QueryExecution qexec = QueryExecutionFactory
-//				.create(query, dataset)) {
-//			Iterator<Quad> quads = qexec.execConstructQuads();
-//			PrintUtil.printOut(quads);
-//		}
-//		arq.qparse.main("--in", "arq", queryString);
-//
-//		// short form 2
-//		System.out.println("short form 2:");
-//		queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }";
-//		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-//		try (QueryExecution qexec = QueryExecutionFactory
-//				.create(query, dataset)) {
-//			Iterator<Quad> quads = qexec.execConstructQuads();
-//			PrintUtil.printOut(quads);
-//		}
-//		arq.qparse.main("--in", "arq", queryString);
-//
-//		// short form 3
-//		System.out.println("short form 3:");
-//		queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }";
-//		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-//		try (QueryExecution qexec = QueryExecutionFactory
-//				.create(query, dataset)) {
-//			Iterator<Triple> triples = qexec.execConstructTriples();
-//			PrintUtil.printOut(triples);
-//		}
-//		arq.qparse.main("--in", "arq", queryString);
-//
-//		// short form 4
-//		System.out.println("short form 4:");
-//		queryString = "CONSTRUCT WHERE{ {<http://eg.com/s> <http://eg.com/p> ?o} }";
-//		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-//		try (QueryExecution qexec = QueryExecutionFactory
-//				.create(query, dataset)) {
-//			Iterator<Quad> quads = qexec.execConstructQuads();
-//			PrintUtil.printOut(quads);
-//		}
-//		arq.qparse.main("--in", "arq", queryString);
+		// create testing data :
+		// 1) default graph data
+		Model model = ModelFactory.createDefaultModel();
+		Resource s = model.createResource("http://eg.com/s");
+		Property p = model.createProperty("http://eg.com/p");
+		Resource o = model.createResource("http://eg.com/o");
+		model.add(s, p, o);
+		Dataset dataset = DatasetFactory.create(model);
+		// 2) named graph data
+		Model model1 = ModelFactory.createDefaultModel();
+		Resource s1 = model.createResource("http://eg.com/s1");
+		Property p1 = model.createProperty("http://eg.com/p1");
+		Resource o1 = model.createResource("http://eg.com/o1");
+		model1.add(s1, p1, o1);
+		dataset.addNamedModel("http://eg.com/g1", model1);
+		
+		PrintUtil.printOut(dataset.asDatasetGraph().find());
+
+		// construct named graph
+		System.out.println("construct named graph:");
+		String queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+		Query query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Quad> quads = qexec.execConstructQuads();
+			PrintUtil.printOut(quads);
+		}
+		arq.qparse.main("--in", "arq", queryString);
+
+		// construct default graph 1
+		System.out.println("construct default graph 1:");
+		queryString = "CONSTRUCT {  {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Quad> quads = qexec.execConstructQuads();
+			PrintUtil.printOut(quads);
+		}
+		arq.qparse.main("--in", "arq", queryString);
+
+		// construct default graph 2
+		System.out.println("construct default graph 2:");
+		queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o}  WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Quad> quads = qexec.execConstructQuads();
+			PrintUtil.printOut(quads);
+		}
+		arq.qparse.main("--in", "arq", queryString);
+
+		// construct triples
+		System.out.println("construct default graph 2:");
+		queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o}  WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Triple> triples = qexec.execConstructTriples();
+			PrintUtil.printOut(triples);
+		}
+		arq.qparse.main("--in", "arq", queryString);
+
+		// construct dataset
+		System.out.println("construct dataset:");
+		queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Dataset d = qexec.execConstructDataset();
+			RDFDataMgr.write(System.out, d, Lang.TRIG);
+		}
+		arq.qparse.main("--in", "arq", queryString);
+
+		// short form 1
+		System.out.println("short form 1:");
+		queryString = "CONSTRUCT WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Quad> quads = qexec.execConstructQuads();
+			PrintUtil.printOut(quads);
+		}
+		arq.qparse.main("--in", "arq", queryString);
+
+		// short form 2
+		System.out.println("short form 2:");
+		queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Quad> quads = qexec.execConstructQuads();
+			PrintUtil.printOut(quads);
+		}
+		arq.qparse.main("--in", "arq", queryString);
+
+		// short form 3
+		System.out.println("short form 3:");
+		queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Triple> triples = qexec.execConstructTriples();
+			PrintUtil.printOut(triples);
+		}
+		arq.qparse.main("--in", "arq", queryString);
+
+		// short form 4
+		System.out.println("short form 4:");
+		queryString = "CONSTRUCT WHERE{ {<http://eg.com/s> <http://eg.com/p> ?o} }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Quad> quads = qexec.execConstructQuads();
+			PrintUtil.printOut(quads);
+		}
+		arq.qparse.main("--in", "arq", queryString);
+		
+		// short form 4
+		System.out.println("default graph projection:");
+		queryString = "CONSTRUCT { {<http://eg.com/s> <http://eg.com/p> ?o} GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Triple> triples = qexec.execConstructTriples();
+			PrintUtil.printOut(triples);
+		}
+		arq.qparse.main("--in", "arq", queryString);
 
 		// run-construct-quad-test
 		System.out.println("run-construct-quad-test:");
@@ -171,9 +184,7 @@ public class ExampleConstructQuads {
 						return false;
 					}
 				});
-		int i=0;
 		for (File test : tests) {
-//			if (++i != 4) continue;
 			System.out.println("======== File: "+test.getName());
 			try (BufferedReader br = new BufferedReader(new FileReader(test))) {
 				String line = null;

http://git-wip-us.apache.org/repos/asf/jena/blob/f27623dc/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
index a6e74d8..641ceb7 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
@@ -81,7 +81,8 @@ public class Template
     	}
     	BasicPattern bgp = new BasicPattern();
     	for(Quad q: qp.getQuads()){
-    		bgp.add(q.asTriple());
+    		if (Quad.defaultGraphNodeGenerated.equals(q.getGraph()))
+    			bgp.add(q.asTriple());
     	}
     	return bgp;
     }
@@ -92,7 +93,8 @@ public class Template
     	}
     	List<Triple> triples = new ArrayList<Triple>();
     	for(Quad q: qp.getQuads()){
-    		triples.add(q.asTriple());
+    		if (Quad.defaultGraphNodeGenerated.equals(q.getGraph()))
+    			triples.add(q.asTriple());
     	}
     	return triples;
     }


[09/50] [abbrv] jena git commit: refactor ConstructTemplate() to make ARQ for constructing quards similar to that for triples.

Posted by an...@apache.org.
refactor ConstructTemplate() to make ARQ for constructing quards similar
to that for triples.

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

Branch: refs/heads/JENA-491-construct-quads
Commit: c475249148792da2148cd9ec9976312516ed1d11
Parents: a8b0d53
Author: confidencesun <co...@gmail.com>
Authored: Thu Jun 18 16:44:33 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Thu Jun 18 16:44:33 2015 +0800

----------------------------------------------------------------------
 jena-arq/Grammar/arq.jj                         |  15 +-
 jena-arq/Grammar/master.jj                      |  25 +-
 .../apache/jena/sparql/lang/arq/ARQParser.java  | 368 +++++++++----------
 3 files changed, 186 insertions(+), 222 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/c4752491/jena-arq/Grammar/arq.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/arq.jj b/jena-arq/Grammar/arq.jj
index 70a34f4..a344b94 100644
--- a/jena-arq/Grammar/arq.jj
+++ b/jena-arq/Grammar/arq.jj
@@ -134,10 +134,8 @@ void ConstructQuery() : { Template t ;
  <CONSTRUCT>
    { getQuery().setQueryConstructType() ; }
  (
-    <LBRACE>
-    t = ConstructQuads(acc)
+    t = ConstructTemplate()
       { getQuery().setConstructTemplate(t) ; }
-    <RBRACE>
     ( DatasetClause() )*
     WhereClause()
     SolutionModifier()
@@ -502,17 +500,14 @@ void QuadsNotTriples(QuadAccSink acc) : {Node gn ; Node prev = acc.getGraph() ;
     <RBRACE>
     { setAccGraph(acc, prev) ; }
 }
-Template ConstructQuads(QuadAcc acc) : {Template t = new Template (acc);}
+void ConstructQuads(QuadAcc acc) : {}
 {
-    { setInConstructTemplate(true) ; }
     (TriplesTemplate(acc))?
     (
        ConstructQuadsNotTriples(acc)
        (<DOT>)?
        (TriplesTemplate(acc))?
     )*
-    { setInConstructTemplate(false) ;
-      return t ; }
 }
 void ConstructQuadsNotTriples(QuadAccSink acc) : {Node gn = null ; Node prev = acc.getGraph() ; }
 {
@@ -806,12 +801,12 @@ ExprList ExpressionList() : { Expr expr = null ; ExprList args = new ExprList()
   )
   { return args ; }
 }
-Template ConstructTemplate() : { TripleCollectorBGP acc = new TripleCollectorBGP();
-                                 Template t = new Template(acc.getBGP()) ; }
+Template ConstructTemplate() : { QuadAcc acc = new QuadAcc() ;
+                                 Template t = new Template (acc);}
 {
     { setInConstructTemplate(true) ; }
   <LBRACE>
-    (ConstructTriples(acc))?
+    ConstructQuads(acc)
   <RBRACE>
     { setInConstructTemplate(false) ;
       return t ; }

http://git-wip-us.apache.org/repos/asf/jena/blob/c4752491/jena-arq/Grammar/master.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/master.jj b/jena-arq/Grammar/master.jj
index 1c1c93d..aeddc84 100644
--- a/jena-arq/Grammar/master.jj
+++ b/jena-arq/Grammar/master.jj
@@ -241,10 +241,8 @@ void ConstructQuery() : { Template t ;
    { getQuery().setQueryConstructType() ; }
  (
     // Full form.
-    <LBRACE>
-    t = ConstructQuads(acc) 
+    t = ConstructTemplate() 
       { getQuery().setConstructTemplate(t) ; }
-    <RBRACE>
     ( DatasetClause() )*
     WhereClause()
     SolutionModifier()
@@ -742,18 +740,14 @@ void QuadsNotTriples(QuadAccSink acc) : {Node gn ; Node prev = acc.getGraph() ;
     
 }
 #ifdef ARQ
-Template ConstructQuads(QuadAcc acc) : {Template t = new Template (acc);}
+void ConstructQuads(QuadAcc acc) : {}
 {
-    { setInConstructTemplate(true) ; }
     (TriplesTemplate(acc))?
     (
        ConstructQuadsNotTriples(acc)
        (<DOT>)?
        (TriplesTemplate(acc))?
-    )*
-    
-    { setInConstructTemplate(false) ;
-      return t ; }
+    )*    
 }
 
 void ConstructQuadsNotTriples(QuadAccSink acc) : {Node gn = null ; Node prev = acc.getGraph() ; }
@@ -1126,6 +1120,18 @@ ExprList ExpressionList() : { Expr expr = null ; ExprList args = new ExprList()
 
 
 // -------- Construct patterns
+#ifdef ARQ
+Template ConstructTemplate() : { QuadAcc acc = new QuadAcc() ;
+                                 Template t = new Template (acc);}
+{
+    { setInConstructTemplate(true) ; }
+  <LBRACE> 
+    ConstructQuads(acc)
+  <RBRACE>
+    { setInConstructTemplate(false) ;
+      return t ; }
+}
+#else
 
 Template ConstructTemplate() : { TripleCollectorBGP acc = new TripleCollectorBGP(); 
                                  Template t = new Template(acc.getBGP()) ; }
@@ -1137,6 +1143,7 @@ Template ConstructTemplate() : { TripleCollectorBGP acc = new TripleCollectorBGP
     { setInConstructTemplate(false) ;
       return t ; }
 }
+#endif
 
 void ConstructTriples(TripleCollector acc) : { }
 {    // Same as TriplesTemplate, but retain for 1.0 legacy

http://git-wip-us.apache.org/repos/asf/jena/blob/c4752491/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 4fc136d..2b1e141 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
@@ -512,10 +512,8 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
      getQuery().setQueryConstructType() ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case LBRACE:
-      jj_consume_token(LBRACE);
-      t = ConstructQuads(acc);
+      t = ConstructTemplate();
         getQuery().setConstructTemplate(t) ;
-      jj_consume_token(RBRACE);
       label_4:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1910,9 +1908,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       setAccGraph(acc, prev) ;
   }
 
-  final public Template ConstructQuads(QuadAcc acc) throws ParseException {
-                                        Template t = new Template (acc);
-      setInConstructTemplate(true) ;
+  final public void ConstructQuads(QuadAcc acc) throws ParseException {
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case IRIref:
     case PNAME_NS:
@@ -1998,9 +1994,6 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
       }
     }
-      setInConstructTemplate(false) ;
-      {if (true) return t ;}
-    throw new Error("Missing return statement in function");
   }
 
   final public void ConstructQuadsNotTriples(QuadAccSink acc) throws ParseException {
@@ -2812,42 +2805,11 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   }
 
   final public Template ConstructTemplate() throws ParseException {
-                                 TripleCollectorBGP acc = new TripleCollectorBGP();
-                                 Template t = new Template(acc.getBGP()) ;
+                                 QuadAcc acc = new QuadAcc() ;
+                                 Template t = new Template (acc);
       setInConstructTemplate(true) ;
     jj_consume_token(LBRACE);
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case IRIref:
-    case PNAME_NS:
-    case PNAME_LN:
-    case BLANK_NODE_LABEL:
-    case VAR1:
-    case VAR2:
-    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 NIL:
-    case LBRACKET:
-    case ANON:
-      ConstructTriples(acc);
-      break;
-    default:
-      jj_la1[93] = jj_gen;
-      ;
-    }
+    ConstructQuads(acc);
     jj_consume_token(RBRACE);
       setInConstructTemplate(false) ;
       {if (true) return t ;}
@@ -2871,7 +2833,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       jj_consume_token(DOT);
       break;
     default:
-      jj_la1[94] = jj_gen;
+      jj_la1[93] = jj_gen;
       ;
     }
   }
@@ -2913,7 +2875,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     insert(acc, tempAcc) ;
       break;
     default:
-      jj_la1[95] = jj_gen;
+      jj_la1[94] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -2930,7 +2892,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       PropertyListNotEmpty(s, acc);
       break;
     default:
-      jj_la1[96] = jj_gen;
+      jj_la1[95] = jj_gen;
       ;
     }
   }
@@ -2946,7 +2908,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[97] = jj_gen;
+        jj_la1[96] = jj_gen;
         break label_26;
       }
       jj_consume_token(SEMICOLON);
@@ -2961,7 +2923,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ObjectList(s, p, null, acc);
         break;
       default:
-        jj_la1[98] = jj_gen;
+        jj_la1[97] = jj_gen;
         ;
       }
     }
@@ -2982,7 +2944,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                               p = nRDFtype ;
       break;
     default:
-      jj_la1[99] = jj_gen;
+      jj_la1[98] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3000,7 +2962,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[100] = jj_gen;
+        jj_la1[99] = jj_gen;
         break label_27;
       }
       jj_consume_token(COMMA);
@@ -3052,7 +3014,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     insert(acc, tempAcc) ;
       break;
     default:
-      jj_la1[101] = jj_gen;
+      jj_la1[100] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3075,7 +3037,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       PropertyListPathNotEmpty(s, acc);
       break;
     default:
-      jj_la1[102] = jj_gen;
+      jj_la1[101] = jj_gen;
       ;
     }
   }
@@ -3100,7 +3062,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       p = VerbSimple();
       break;
     default:
-      jj_la1[103] = jj_gen;
+      jj_la1[102] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3112,7 +3074,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[104] = jj_gen;
+        jj_la1[103] = jj_gen;
         break label_28;
       }
       jj_consume_token(SEMICOLON);
@@ -3148,14 +3110,14 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
           p = VerbSimple();
           break;
         default:
-          jj_la1[105] = jj_gen;
+          jj_la1[104] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
         ObjectListPath(s, p, path, acc);
         break;
       default:
-        jj_la1[106] = jj_gen;
+        jj_la1[105] = jj_gen;
         ;
       }
     }
@@ -3185,7 +3147,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[107] = jj_gen;
+        jj_la1[106] = jj_gen;
         break label_29;
       }
       jj_consume_token(COMMA);
@@ -3226,7 +3188,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[108] = jj_gen;
+        jj_la1[107] = jj_gen;
         break label_30;
       }
       jj_consume_token(VBAR);
@@ -3248,7 +3210,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[109] = jj_gen;
+        jj_la1[108] = jj_gen;
         break label_31;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -3263,7 +3225,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         p1 = PathFactory.pathSeq(p1, new P_Inverse(p2)) ;
         break;
       default:
-        jj_la1[110] = jj_gen;
+        jj_la1[109] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -3283,7 +3245,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       p = PathMod(p);
       break;
     default:
-      jj_la1[111] = jj_gen;
+      jj_la1[110] = jj_gen;
       ;
     }
      {if (true) return p ;}
@@ -3310,7 +3272,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
        p = PathFactory.pathInverse(p) ;
       break;
     default:
-      jj_la1[112] = jj_gen;
+      jj_la1[111] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3362,7 +3324,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                 {if (true) return PathFactory.pathMod(p, i1, i2) ;}
             break;
           default:
-            jj_la1[113] = jj_gen;
+            jj_la1[112] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
@@ -3372,7 +3334,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                        {if (true) return PathFactory.pathFixedLength(p, i1) ;}
           break;
         default:
-          jj_la1[114] = jj_gen;
+          jj_la1[113] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
@@ -3384,13 +3346,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
              {if (true) return PathFactory.pathMod(p, PathFactory.UNSET, i2) ;}
         break;
       default:
-        jj_la1[115] = jj_gen;
+        jj_la1[114] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[116] = jj_gen;
+      jj_la1[115] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3441,7 +3403,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       jj_consume_token(RPAREN);
       break;
     default:
-      jj_la1[117] = jj_gen;
+      jj_la1[116] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3478,7 +3440,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
             ;
             break;
           default:
-            jj_la1[118] = jj_gen;
+            jj_la1[117] = jj_gen;
             break label_32;
           }
           jj_consume_token(VBAR);
@@ -3487,13 +3449,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         }
         break;
       default:
-        jj_la1[119] = jj_gen;
+        jj_la1[118] = jj_gen;
         ;
       }
       jj_consume_token(RPAREN);
       break;
     default:
-      jj_la1[120] = jj_gen;
+      jj_la1[119] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3528,13 +3490,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                {if (true) return new P_ReverseLink(nRDFtype) ;}
         break;
       default:
-        jj_la1[121] = jj_gen;
+        jj_la1[120] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[122] = jj_gen;
+      jj_la1[121] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3560,7 +3522,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                    {if (true) return n ;}
       break;
     default:
-      jj_la1[123] = jj_gen;
+      jj_la1[122] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3589,7 +3551,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                        {if (true) return n ;}
       break;
     default:
-      jj_la1[124] = jj_gen;
+      jj_la1[123] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3650,7 +3612,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[125] = jj_gen;
+        jj_la1[124] = jj_gen;
         break label_33;
       }
     }
@@ -3705,7 +3667,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[126] = jj_gen;
+        jj_la1[125] = jj_gen;
         break label_34;
       }
     }
@@ -3751,7 +3713,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                          {if (true) return n ;}
       break;
     default:
-      jj_la1[127] = jj_gen;
+      jj_la1[126] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3793,7 +3755,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                              {if (true) return n ;}
       break;
     default:
-      jj_la1[128] = jj_gen;
+      jj_la1[127] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3831,7 +3793,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       n = GraphTerm();
       break;
     default:
-      jj_la1[129] = jj_gen;
+      jj_la1[128] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3853,7 +3815,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                               n = createNode(iri) ;
       break;
     default:
-      jj_la1[130] = jj_gen;
+      jj_la1[129] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3879,7 +3841,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                                 n = createNode(iri) ;
       break;
     default:
-      jj_la1[131] = jj_gen;
+      jj_la1[130] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3897,7 +3859,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       t = jj_consume_token(VAR2);
       break;
     default:
-      jj_la1[132] = jj_gen;
+      jj_la1[131] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3948,7 +3910,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
           {if (true) return nRDFnil ;}
       break;
     default:
-      jj_la1[133] = jj_gen;
+      jj_la1[132] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -3972,7 +3934,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[134] = jj_gen;
+        jj_la1[133] = jj_gen;
         break label_35;
       }
       jj_consume_token(SC_OR);
@@ -3993,7 +3955,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[135] = jj_gen;
+        jj_la1[134] = jj_gen;
         break label_36;
       }
       jj_consume_token(SC_AND);
@@ -4066,13 +4028,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         expr1 = new E_NotOneOf(expr1, a) ;
         break;
       default:
-        jj_la1[136] = jj_gen;
+        jj_la1[135] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[137] = jj_gen;
+      jj_la1[136] = jj_gen;
       ;
     }
       {if (true) return expr1 ;}
@@ -4103,7 +4065,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[138] = jj_gen;
+        jj_la1[137] = jj_gen;
         break label_37;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -4141,7 +4103,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
          addition = false ;
           break;
         default:
-          jj_la1[139] = jj_gen;
+          jj_la1[138] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
@@ -4153,7 +4115,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
             ;
             break;
           default:
-            jj_la1[140] = jj_gen;
+            jj_la1[139] = jj_gen;
             break label_38;
           }
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -4168,7 +4130,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                             expr2 = new E_Divide(expr2, expr3) ;
             break;
           default:
-            jj_la1[141] = jj_gen;
+            jj_la1[140] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
@@ -4179,7 +4141,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
          expr1 = new E_Subtract(expr1, expr2) ;
         break;
       default:
-        jj_la1[142] = jj_gen;
+        jj_la1[141] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -4199,7 +4161,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         ;
         break;
       default:
-        jj_la1[143] = jj_gen;
+        jj_la1[142] = jj_gen;
         break label_39;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -4214,7 +4176,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       expr1 = new E_Divide(expr1, expr2) ;
         break;
       default:
-        jj_la1[144] = jj_gen;
+        jj_la1[143] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -4330,7 +4292,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                  {if (true) return expr ;}
       break;
     default:
-      jj_la1[145] = jj_gen;
+      jj_la1[144] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4447,7 +4409,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                  {if (true) return asExpr(gn) ;}
       break;
     default:
-      jj_la1[146] = jj_gen;
+      jj_la1[145] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4543,7 +4505,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
               {if (true) return new E_BNode() ;}
         break;
       default:
-        jj_la1[147] = jj_gen;
+        jj_la1[146] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -4796,7 +4758,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
           ;
           break;
         default:
-          jj_la1[148] = jj_gen;
+          jj_la1[147] = jj_gen;
           break label_40;
         }
         jj_consume_token(COMMA);
@@ -4892,7 +4854,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                              {if (true) return expr ;}
       break;
     default:
-      jj_la1[149] = jj_gen;
+      jj_la1[148] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4912,7 +4874,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       flagsExpr = Expression();
       break;
     default:
-      jj_la1[150] = jj_gen;
+      jj_la1[149] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -4933,7 +4895,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       expr3 = Expression();
       break;
     default:
-      jj_la1[151] = jj_gen;
+      jj_la1[150] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -4956,7 +4918,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       expr4 = Expression();
       break;
     default:
-      jj_la1[152] = jj_gen;
+      jj_la1[151] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -4998,7 +4960,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                    distinct = true ;
         break;
       default:
-        jj_la1[153] = jj_gen;
+        jj_la1[152] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -5096,7 +5058,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         expr = Expression();
         break;
       default:
-        jj_la1[154] = jj_gen;
+        jj_la1[153] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -5113,7 +5075,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                       distinct = true ;
         break;
       default:
-        jj_la1[155] = jj_gen;
+        jj_la1[154] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5129,7 +5091,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                       distinct = true ;
         break;
       default:
-        jj_la1[156] = jj_gen;
+        jj_la1[155] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5145,7 +5107,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                       distinct = true ;
         break;
       default:
-        jj_la1[157] = jj_gen;
+        jj_la1[156] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5161,7 +5123,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                       distinct = true ;
         break;
       default:
-        jj_la1[158] = jj_gen;
+        jj_la1[157] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5177,7 +5139,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                          distinct = true ;
         break;
       default:
-        jj_la1[159] = jj_gen;
+        jj_la1[158] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5193,7 +5155,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                       distinct = true ;
         break;
       default:
-        jj_la1[160] = jj_gen;
+        jj_la1[159] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5214,7 +5176,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                                            ordered.add(expr2) ;
             break;
           default:
-            jj_la1[161] = jj_gen;
+            jj_la1[160] = jj_gen;
             ;
           }
         } else {
@@ -5227,14 +5189,14 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                                        ordered.add(expr2) ;
             break;
           default:
-            jj_la1[162] = jj_gen;
+            jj_la1[161] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
         }
         break;
       default:
-        jj_la1[163] = jj_gen;
+        jj_la1[162] = jj_gen;
         ;
       }
       jj_consume_token(RPAREN);
@@ -5248,7 +5210,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         agg = AggregatorFactory.createCustom(iri, a) ;
       break;
     default:
-      jj_la1[164] = jj_gen;
+      jj_la1[163] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5271,7 +5233,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       a = ArgList();
       break;
     default:
-      jj_la1[165] = jj_gen;
+      jj_la1[164] = jj_gen;
       ;
     }
     if ( a == null )
@@ -5304,13 +5266,13 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
         uri = iri();
         break;
       default:
-        jj_la1[166] = jj_gen;
+        jj_la1[165] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[167] = jj_gen;
+      jj_la1[166] = jj_gen;
       ;
     }
       {if (true) return createLiteral(lex, lang, uri) ;}
@@ -5336,7 +5298,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       n = NumericLiteralNegative();
       break;
     default:
-      jj_la1[168] = jj_gen;
+      jj_la1[167] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5360,7 +5322,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                  {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[169] = jj_gen;
+      jj_la1[168] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5383,7 +5345,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                           {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[170] = jj_gen;
+      jj_la1[169] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5406,7 +5368,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                           {if (true) return createLiteralDouble(t.image) ;}
       break;
     default:
-      jj_la1[171] = jj_gen;
+      jj_la1[170] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5424,7 +5386,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
             {if (true) return XSD_FALSE ;}
       break;
     default:
-      jj_la1[172] = jj_gen;
+      jj_la1[171] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5451,7 +5413,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                                  lex = stripQuotes3(t.image) ;
       break;
     default:
-      jj_la1[173] = jj_gen;
+      jj_la1[172] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5473,7 +5435,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                          {if (true) return iri ;}
       break;
     default:
-      jj_la1[174] = jj_gen;
+      jj_la1[173] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5492,7 +5454,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       {if (true) return resolvePName(t.image, t.beginLine, t.beginColumn) ;}
       break;
     default:
-      jj_la1[175] = jj_gen;
+      jj_la1[174] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5511,7 +5473,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
                {if (true) return createBNode(t.beginLine, t.beginColumn) ;}
       break;
     default:
-      jj_la1[176] = jj_gen;
+      jj_la1[175] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5560,6 +5522,52 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     finally { jj_save(4, xla); }
   }
 
+  private boolean jj_3R_70() {
+    if (jj_scan_token(YEAR)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_171() {
+    if (jj_scan_token(DOUBLE)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_69() {
+    if (jj_scan_token(STRAFTER)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_170() {
+    if (jj_scan_token(DECIMAL)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_169() {
+    if (jj_scan_token(INTEGER)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_166() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_169()) {
+    jj_scanpos = xsp;
+    if (jj_3R_170()) {
+    jj_scanpos = xsp;
+    if (jj_3R_171()) 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;
@@ -6033,6 +6041,11 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
+  private boolean jj_3_1() {
+    if (jj_3R_41()) return true;
+    return false;
+  }
+
   private boolean jj_3R_120() {
     if (jj_scan_token(MAX)) return true;
     if (jj_scan_token(LPAREN)) return true;
@@ -6051,11 +6064,6 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3_1() {
-    if (jj_3R_41()) return true;
-    return false;
-  }
-
   private boolean jj_3R_117() {
     if (jj_scan_token(COUNT)) return true;
     if (jj_scan_token(LPAREN)) return true;
@@ -6121,14 +6129,14 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_111() {
-    if (jj_scan_token(EXISTS)) return true;
-    if (jj_3R_126()) return true;
+  private boolean jj_3R_114() {
+    if (jj_3R_128()) return true;
     return false;
   }
 
-  private boolean jj_3R_114() {
-    if (jj_3R_128()) return true;
+  private boolean jj_3R_111() {
+    if (jj_scan_token(EXISTS)) return true;
+    if (jj_3R_126()) return true;
     return false;
   }
 
@@ -6139,18 +6147,18 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_109() {
-    if (jj_scan_token(REPLACE)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
   private boolean jj_3R_127() {
     if (jj_scan_token(BASE)) return true;
     if (jj_3R_134()) return true;
     return false;
   }
 
+  private boolean jj_3R_109() {
+    if (jj_scan_token(REPLACE)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
   private boolean jj_3R_113() {
     if (jj_3R_127()) return true;
     return false;
@@ -6649,52 +6657,6 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     return false;
   }
 
-  private boolean jj_3R_70() {
-    if (jj_scan_token(YEAR)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_171() {
-    if (jj_scan_token(DOUBLE)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_69() {
-    if (jj_scan_token(STRAFTER)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_170() {
-    if (jj_scan_token(DECIMAL)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_169() {
-    if (jj_scan_token(INTEGER)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_166() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_169()) {
-    jj_scanpos = xsp;
-    if (jj_3R_170()) {
-    jj_scanpos = xsp;
-    if (jj_3R_171()) 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;
-  }
-
   /** Generated Token Manager. */
   public ARQParserTokenManager token_source;
   JavaCharStream jj_input_stream;
@@ -6706,7 +6668,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[177];
+  final private int[] jj_la1 = new int[176];
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static private int[] jj_la1_2;
@@ -6724,25 +6686,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,0xfc00,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,0x
 10000,0x10000,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,0x0,0x0,0x10000,0
 x10000,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,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,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,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,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,0xc000000,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,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,0x87fc0000,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,0x80000000,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,0x0,0x0,0x7fc0000,0x1c0000,0xe00000,0x7000000,0x0,0x80000
 000,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,0x52f,0x2000,0x52f,0x0,0x800,0x0,0x0,0x1000,0x52f,0x100008,0x100008,0x800,0x100008,0x100008,0x1000,0x0,0x10000000,0x10000000,0xa000040,0x100008,0x80,0x1080,0xa001000,0xa000040,0x100008,0x0,0x0,0x8,0x0,0x0,0x108,0x108,0x52f,0x52f,0x52f,0x52f,0x427,0x0,0x400,0x0,0x427,0x800000,0x1000000,0xfc000,0xfc000,0x6000000,0x0,0x18000000,0x18000000,0x6000000,0x18000000,0x18000000,0x610000f,0xf,0x28,0x1000,0x0,0x1000,0x1000,0x1000,0x0,0xe10000f,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x800,0x800,0x0,0x28,0x20000000,0x20000000,0x0,0x0,0x0,0x0,0x0,0x7,0
 x0,0x0,0x400,};
+      jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,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,};
    }
    private static void jj_la1_init_6() {
-      jj_la1_6 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,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,};
    }
   final private JJCalls[] jj_2_rtns = new JJCalls[5];
   private boolean jj_rescan = false;
@@ -6759,7 +6721,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 177; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 176; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6774,7 +6736,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 177; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 176; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6785,7 +6747,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 177; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 176; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6796,7 +6758,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 177; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 176; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6806,7 +6768,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 177; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 176; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6816,7 +6778,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 177; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 176; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -6933,7 +6895,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
       la1tokens[jj_kind] = true;
       jj_kind = -1;
     }
-    for (int i = 0; i < 177; i++) {
+    for (int i = 0; i < 176; i++) {
       if (jj_la1[i] == jj_gen) {
         for (int j = 0; j < 32; j++) {
           if ((jj_la1_0[i] & (1<<j)) != 0) {


[04/50] [abbrv] jena git commit: rollback FmtTemplate, in order to build success for TS_Scripted

Posted by an...@apache.org.
rollback FmtTemplate, in order to build success for TS_Scripted

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 07c8b98dbafbf2ea12ee3f6df6816e8edda93650
Parents: 2d09a7d
Author: confidencesun <co...@gmail.com>
Authored: Fri Jun 12 11:03:13 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Fri Jun 12 11:03:13 2015 +0800

----------------------------------------------------------------------
 .../apache/jena/sparql/lang/ParserSPARQL11.java |  2 +-
 .../jena/sparql/serializer/FmtTemplate.java     |  2 +-
 .../jena/sparql/serializer/FormatterBase.java   | 20 ++-----
 .../org/apache/jena/sparql/syntax/Template.java |  9 +++
 .../org/apache/jena/sparql/util/FmtUtils.java   | 63 +++++++-------------
 5 files changed, 39 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/07c8b98d/jena-arq/src/main/java/org/apache/jena/sparql/lang/ParserSPARQL11.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/ParserSPARQL11.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/ParserSPARQL11.java
index 4182b21..a459d32 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/ParserSPARQL11.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/ParserSPARQL11.java
@@ -97,7 +97,7 @@ public class ParserSPARQL11 extends SPARQLParser
             action.exec(parser) ;
         }
         catch (org.apache.jena.sparql.lang.sparql_11.ParseException ex)
-        {   
+        { 
             throw new QueryParseException(ex.getMessage(),
                                           ex.currentToken.beginLine,
                                           ex.currentToken.beginColumn

http://git-wip-us.apache.org/repos/asf/jena/blob/07c8b98d/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
index 1b08876..a1b65fd 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
@@ -55,7 +55,7 @@ public class FmtTemplate extends FormatterBase
         out.incIndent(INDENT) ;
         out.pad() ;
     
-        formatQuads(template.getQuads()) ;
+        formatTriples(template.getBGP()) ;
         
         out.decIndent(INDENT) ;
         out.print("}") ;

http://git-wip-us.apache.org/repos/asf/jena/blob/07c8b98d/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FormatterBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FormatterBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FormatterBase.java
index 3eb26fc..fddb3a2 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FormatterBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FormatterBase.java
@@ -17,14 +17,11 @@
  */
 
 package org.apache.jena.sparql.serializer;
-import java.util.List;
-
-import org.apache.jena.atlas.io.IndentedWriter;
-import org.apache.jena.graph.Node;
-import org.apache.jena.graph.Triple;
-import org.apache.jena.sparql.core.BasicPattern;
-import org.apache.jena.sparql.core.Quad;
-import org.apache.jena.sparql.util.FmtUtils;
+import org.apache.jena.atlas.io.IndentedWriter ;
+import org.apache.jena.graph.Node ;
+import org.apache.jena.graph.Triple ;
+import org.apache.jena.sparql.core.BasicPattern ;
+import org.apache.jena.sparql.util.FmtUtils ;
 
 public abstract class FormatterBase
 {
@@ -46,11 +43,6 @@ public abstract class FormatterBase
         FmtUtils.formatPattern(out, pattern, context) ;
     }
     
-    protected void formatQuads(List<Quad> quads)
-    {
-        FmtUtils.formatQuads(out, quads, context) ;
-    }
-    
     protected void formatTriple(Triple tp)
     {
         out.print(slotToString(tp.getSubject())) ;
@@ -59,7 +51,7 @@ public abstract class FormatterBase
         out.print(" ") ;
         out.print(slotToString(tp.getObject())) ;
     }
-        
+    
     protected String slotToString(Node n)
     {
         return FmtUtils.stringForNode(n, context) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/07c8b98d/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
index bdd3142..24f6c66 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
@@ -25,6 +25,7 @@ import java.util.Map;
 
 import org.apache.jena.graph.Node;
 import org.apache.jena.graph.Triple;
+import org.apache.jena.sparql.core.BasicPattern;
 import org.apache.jena.sparql.core.Quad;
 import org.apache.jena.sparql.engine.binding.Binding;
 import org.apache.jena.sparql.modify.TemplateLib;
@@ -56,6 +57,14 @@ public class Template
 
 
 //    public BasicPattern getBGP()        { return bgp ; }
+    public BasicPattern getBGP()
+    { 
+    	BasicPattern bgp = new BasicPattern();
+    	for(Quad q: qp.getQuads()){
+    		bgp.add(q.asTriple());
+    	}
+    	return bgp;
+    }
     public List<Triple> getTriples()
     { 
     	List<Triple> triples = new ArrayList<Triple>();

http://git-wip-us.apache.org/repos/asf/jena/blob/07c8b98d/jena-arq/src/main/java/org/apache/jena/sparql/util/FmtUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/FmtUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/FmtUtils.java
index 6af1859..aa1500c 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/FmtUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/FmtUtils.java
@@ -18,29 +18,28 @@
 
 package org.apache.jena.sparql.util;
 
-import java.util.List;
-import java.util.Locale;
-import java.util.regex.Pattern;
-
-import org.apache.jena.atlas.io.IndentedWriter;
-import org.apache.jena.atlas.logging.Log;
-import org.apache.jena.graph.Node;
-import org.apache.jena.graph.Node_Literal;
-import org.apache.jena.graph.Triple;
-import org.apache.jena.iri.IRI;
-import org.apache.jena.iri.IRIFactory;
-import org.apache.jena.iri.IRIRelativize;
-import org.apache.jena.rdf.model.Model;
-import org.apache.jena.rdf.model.RDFNode;
-import org.apache.jena.rdf.model.Resource;
-import org.apache.jena.shared.PrefixMapping;
-import org.apache.jena.sparql.ARQConstants;
-import org.apache.jena.sparql.ARQInternalErrorException;
-import org.apache.jena.sparql.core.BasicPattern;
-import org.apache.jena.sparql.core.Prologue;
-import org.apache.jena.sparql.core.Quad;
-import org.apache.jena.sparql.serializer.SerializationContext;
-import org.apache.jena.vocabulary.XSD;
+import java.util.Locale ;
+import java.util.regex.Pattern ;
+
+import org.apache.jena.atlas.io.IndentedWriter ;
+import org.apache.jena.atlas.logging.Log ;
+import org.apache.jena.graph.Node ;
+import org.apache.jena.graph.Node_Literal ;
+import org.apache.jena.graph.Triple ;
+import org.apache.jena.iri.IRI ;
+import org.apache.jena.iri.IRIFactory ;
+import org.apache.jena.iri.IRIRelativize ;
+import org.apache.jena.rdf.model.Model ;
+import org.apache.jena.rdf.model.RDFNode ;
+import org.apache.jena.rdf.model.Resource ;
+import org.apache.jena.shared.PrefixMapping ;
+import org.apache.jena.sparql.ARQConstants ;
+import org.apache.jena.sparql.ARQInternalErrorException ;
+import org.apache.jena.sparql.core.BasicPattern ;
+import org.apache.jena.sparql.core.Prologue ;
+import org.apache.jena.sparql.core.Quad ;
+import org.apache.jena.sparql.serializer.SerializationContext ;
+import org.apache.jena.vocabulary.XSD ;
 
 /** Presentation forms of various kinds of objects.
  *  Beware that bNodes are abbreviated to _:b0 etc.
@@ -160,24 +159,6 @@ public class FmtUtils
         }
     }
     
-    public static void formatQuads(IndentedWriter out, List<Quad> quads, SerializationContext sCxt)
-    {
-        StringBuilder buffer = new StringBuilder() ;  
-        boolean first = true ;
-        for (Quad quad : quads )
-        {
-            if ( ! first )
-                buffer.append("\n") ;
-            stringForQuad(buffer, quad, sCxt) ;
-            buffer.append(" ." ) ;
-            out.print(buffer.toString()) ;
-            buffer.setLength(0) ;
-            first = false ;
-        }
-    }
-    
-    
-    
     public static String stringForObject(Object obj)
     {
         if ( obj == null )


[37/50] [abbrv] jena git commit: Add construct quad support to Fuseki

Posted by an...@apache.org.
Add construct quad support to Fuseki

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 0eb28d805e3270c9951f13cdbd55af3e8d01d0ab
Parents: e819ac3
Author: confidencesun <co...@gmail.com>
Authored: Tue Aug 11 12:05:55 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Tue Aug 11 12:05:55 2015 +0800

----------------------------------------------------------------------
 .../sparql/engine/http/QueryEngineHTTP.java     |  30 +-
 .../main/java/org/apache/jena/fuseki/DEF.java   |   7 +
 .../jena/fuseki/servlets/ResponseDataset.java   | 134 +++
 .../jena/fuseki/servlets/SPARQL_Query.java      | 838 ++++++++++---------
 .../java/org/apache/jena/fuseki/TestQuery.java  | 188 ++---
 5 files changed, 719 insertions(+), 478 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/0eb28d80/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/QueryEngineHTTP.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/QueryEngineHTTP.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/QueryEngineHTTP.java
index a35fffc..cab831f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/QueryEngineHTTP.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/QueryEngineHTTP.java
@@ -394,7 +394,7 @@ public class QueryEngineHTTP implements QueryExecution {
     
     @Override
     public Iterator<Quad> execConstructQuads(){
-    	return null;
+    	return execQuads();
     }
     
     @Override
@@ -469,6 +469,32 @@ public class QueryEngineHTTP implements QueryExecution {
 
         return RiotReader.createIteratorTriples(in, lang, null);
     }
+    
+    private Iterator<Quad> execQuads() {
+        checkNotClosed() ;
+        HttpQuery httpQuery = makeHttpQuery();
+        httpQuery.setAccept(WebContent.defaultDatasetAcceptHeader);
+        InputStream in = httpQuery.exec();
+        
+        // Don't assume the endpoint actually gives back the content type we
+        // asked for
+        String actualContentType = httpQuery.getContentType();
+
+        // If the server fails to return a Content-Type then we will assume
+        // the server returned the type we asked for
+        if (actualContentType == null || actualContentType.equals("")) {
+            actualContentType = WebContent.defaultDatasetAcceptHeader;
+        }
+
+        // Try to select language appropriately here based on the model content
+        // type
+        Lang lang = RDFLanguages.contentTypeToLang(actualContentType);
+        if (!RDFLanguages.isQuads(lang))
+            throw new QueryException("Endpoint returned Content Type: " + actualContentType
+                    + " which is not a valid RDF Dataset syntax");
+
+        return RiotReader.createIteratorQuads(in, lang, null);
+    }
 
     @Override
     public boolean execAsk() {
@@ -817,4 +843,4 @@ public class QueryEngineHTTP implements QueryExecution {
         if ( v < 1 )
             sBuff.append(";q=").append(v) ;
     } 
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/0eb28d80/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/DEF.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/DEF.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/DEF.java
index b419cc6..953b724 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/DEF.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/DEF.java
@@ -31,6 +31,13 @@ public class DEF
     
     public static final AcceptList jsonOffer          = AcceptList.create(contentTypeJSON) ;
 
+    public static final AcceptList pureRdfOffer       = AcceptList.create(contentTypeTurtle, 
+                                                                          contentTypeTurtleAlt1,
+                                                                          contentTypeTurtleAlt2,
+                                                                          contentTypeNTriples,
+                                                                          contentTypeRDFXML
+                                                                          ) ;
+    
     public static final AcceptList rdfOffer           = AcceptList.create(contentTypeTurtle, 
                                                                           contentTypeTurtleAlt1,
                                                                           contentTypeTurtleAlt2,

http://git-wip-us.apache.org/repos/asf/jena/blob/0eb28d80/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseDataset.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseDataset.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseDataset.java
new file mode 100644
index 0000000..91d615d
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseDataset.java
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.fuseki.servlets;
+
+import static org.apache.jena.riot.WebContent.charsetUTF8;
+import static org.apache.jena.riot.WebContent.contentTypeJSONLD;
+import static org.apache.jena.riot.WebContent.contentTypeNTriples;
+import static org.apache.jena.riot.WebContent.contentTypeRDFJSON;
+import static org.apache.jena.riot.WebContent.contentTypeRDFXML;
+import static org.apache.jena.riot.WebContent.contentTypeTurtle;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.jena.atlas.web.MediaType;
+import org.apache.jena.fuseki.DEF;
+import org.apache.jena.fuseki.Fuseki;
+import org.apache.jena.fuseki.conneg.ConNeg;
+import org.apache.jena.fuseki.conneg.WebLib;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.riot.Lang;
+import org.apache.jena.riot.RDFDataMgr;
+import org.apache.jena.riot.RDFLanguages;
+import org.apache.jena.riot.WebContent;
+import org.apache.jena.web.HttpSC;
+
+public class ResponseDataset
+{
+    // Short names for "output="
+    private static final String contentOutputTriG          = "trig" ;
+    private static final String contentOutputNQuads        = "n-quads" ;
+
+
+    public static Map<String,String> shortNamesModel = new HashMap<String, String>() ;
+    static {
+
+        // Some short names.  keys are lowercase.
+        
+        ResponseOps.put(shortNamesModel, contentOutputNQuads,  WebContent.contentTypeNQuads) ;
+        ResponseOps.put(shortNamesModel, contentOutputTriG,     WebContent.contentTypeTriG) ;
+    }
+
+    public static void doResponseDataset(HttpAction action, Dataset dataset) 
+    {
+        HttpServletRequest request = action.request ;
+        HttpServletResponse response = action.response ;
+        
+        String mimeType = null ;        // Header request type 
+
+        // TODO Use MediaType throughout.
+        MediaType i = ConNeg.chooseContentType(request, DEF.quadsOffer, DEF.acceptNQuads) ;
+        if ( i != null )
+            mimeType = i.getContentType() ;
+
+        String outputField = ResponseOps.paramOutput(request, shortNamesModel) ;
+        if ( outputField != null )
+            mimeType = outputField ;
+
+        String writerMimeType = mimeType ;
+
+        if ( mimeType == null )
+        {
+            Fuseki.actionLog.warn("Can't find MIME type for response") ;
+            String x = WebLib.getAccept(request) ;
+            String msg ;
+            if ( x == null )
+                msg = "No Accept: header" ;
+            else
+                msg = "Accept: "+x+" : Not understood" ;
+            ServletOps.error(HttpSC.NOT_ACCEPTABLE_406, msg) ;
+        }
+
+        String contentType = mimeType ;
+        String charset =     charsetUTF8 ;
+
+        String forceAccept = ResponseOps.paramForceAccept(request) ;
+        if ( forceAccept != null )
+        {
+            contentType = forceAccept ;
+            charset = charsetUTF8 ;
+        }
+
+        Lang lang = RDFLanguages.contentTypeToLang(contentType) ;
+        if ( lang == null )
+            ServletOps.errorBadRequest("Can't determine output content type: "+contentType) ;
+        
+//        if ( rdfw instanceof RDFXMLWriterI )
+//            rdfw.setProperty("showXmlDeclaration", "true") ;
+
+    //        // Write locally to check it's possible.
+    //        // Time/space tradeoff.
+    //        try {
+    //            OutputStream out = new NullOutputStream() ;
+    //            RDFDataMgr.write(out, model, lang) ;
+    //            IO.flush(out) ;
+    //        } catch (JenaException ex)
+    //        {
+    //            SPARQL_ServletBase.errorOccurred(ex) ;
+    //        }
+
+        try {
+            ResponseResultSet.setHttpResponse(action, contentType, charset) ; 
+            response.setStatus(HttpSC.OK_200) ;
+            ServletOutputStream out = response.getOutputStream() ;
+            RDFDataMgr.write(out, dataset, lang) ;
+            out.flush() ;
+        }
+        catch (Exception ex) { 
+            action.log.info("Exception while writing the response model: "+ex.getMessage(), ex) ;
+            ServletOps.errorOccurred("Exception while writing the response model: "+ex.getMessage(), ex) ;
+        }
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/jena/blob/0eb28d80/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
index ba4a61a..bed63da 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
@@ -16,385 +16,463 @@
  * limitations under the License.
  */
 
-package org.apache.jena.fuseki.servlets ;
-
-import static java.lang.String.format ;
-import static org.apache.jena.fuseki.server.CounterName.QueryTimeouts ;
-import static org.apache.jena.riot.WebContent.ctHTMLForm ;
-import static org.apache.jena.riot.WebContent.ctSPARQLQuery ;
-import static org.apache.jena.riot.WebContent.isHtmlForm ;
-import static org.apache.jena.riot.WebContent.matchContentType ;
-import static org.apache.jena.riot.web.HttpNames.paramAccept ;
-import static org.apache.jena.riot.web.HttpNames.paramCallback ;
-import static org.apache.jena.riot.web.HttpNames.paramDefaultGraphURI ;
-import static org.apache.jena.riot.web.HttpNames.paramForceAccept ;
-import static org.apache.jena.riot.web.HttpNames.paramNamedGraphURI ;
-import static org.apache.jena.riot.web.HttpNames.paramOutput1 ;
-import static org.apache.jena.riot.web.HttpNames.paramOutput2 ;
-import static org.apache.jena.riot.web.HttpNames.paramQuery ;
-import static org.apache.jena.riot.web.HttpNames.paramQueryRef ;
-import static org.apache.jena.riot.web.HttpNames.paramStyleSheet ;
-import static org.apache.jena.riot.web.HttpNames.paramTimeout ;
-
-import java.io.IOException ;
-import java.io.InputStream ;
-import java.util.* ;
-
-import javax.servlet.http.HttpServletRequest ;
-import javax.servlet.http.HttpServletResponse ;
-
-import org.apache.jena.atlas.io.IO ;
-import org.apache.jena.atlas.io.IndentedLineBuffer ;
-import org.apache.jena.atlas.web.ContentType ;
-import org.apache.jena.fuseki.Fuseki ;
-import org.apache.jena.fuseki.FusekiException ;
-import org.apache.jena.fuseki.FusekiLib ;
-import org.apache.jena.query.* ;
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.riot.web.HttpNames ;
-import org.apache.jena.riot.web.HttpOp ;
-import org.apache.jena.sparql.core.Prologue ;
-import org.apache.jena.sparql.resultset.SPARQLResult ;
-import org.apache.jena.web.HttpSC ;
-
-/** Handle SPARQL Query requests overt eh SPARQL Protocol. 
- * Subclasses provide this algorithm with the actual dataset to query, whether
- * a dataset hosted by this server ({@link SPARQL_QueryDataset}) or 
- * speciifed in the protocol request ({@link SPARQL_QueryGeneral}).   
- */ 
-public abstract class SPARQL_Query extends SPARQL_Protocol
-{
-    private static final String QueryParseBase = Fuseki.BaseParserSPARQL ;
-    
-    public SPARQL_Query() {
-        super() ;
-    }
-
-    // Choose REST verbs to support.
-
-    @Override
-    protected void doPost(HttpServletRequest request, HttpServletResponse response) {
-        doCommon(request, response) ;
-    }
-
-    @Override
-    protected void doGet(HttpServletRequest request, HttpServletResponse response) {
-        doCommon(request, response) ;
-    }
-
-    // HEAD
-
-    @Override
-    protected void doOptions(HttpServletRequest request, HttpServletResponse response) {
-        setCommonHeadersForOptions(response) ;
-        response.setHeader(HttpNames.hAllow, "GET,OPTIONS,POST") ;
-        response.setHeader(HttpNames.hContentLengh, "0") ;
-    }
-
-    @Override
-    protected final void perform(HttpAction action) {
-        // GET
-        if ( action.request.getMethod().equals(HttpNames.METHOD_GET) ) {
-            executeWithParameter(action) ;
-            return ;
-        }
-
-        ContentType ct = FusekiLib.getContentType(action) ;
-
-        // POST application/x-www-form-url
-        // POST ?query= and no Content-Type
-        if ( ct == null || isHtmlForm(ct) ) {
-            // validation checked that if no Content-type, then its a POST with ?query=
-            executeWithParameter(action) ;
-            return ;
-        }
-
-        // POST application/sparql-query
-        if ( matchContentType(ct, ctSPARQLQuery) ) {
-            executeBody(action) ;
-            return ;
-        }
-
-        ServletOps.error(HttpSC.UNSUPPORTED_MEDIA_TYPE_415, "Bad content type: " + ct.getContentType()) ;
-    }
-
-    // All the params we support
-
-    protected static List<String> allParams = Arrays.asList(paramQuery, paramDefaultGraphURI, paramNamedGraphURI,
-                                                            paramQueryRef, paramStyleSheet, paramAccept, paramOutput1,
-                                                            paramOutput2, paramCallback, paramForceAccept, paramTimeout) ;
-
-    /**
-     * Validate the request, checking HTTP method and HTTP Parameters.
-     * @param action HTTP Action
-     */
-    @Override
-    protected void validate(HttpAction action) {
-        String method = action.request.getMethod().toUpperCase(Locale.ROOT) ;
-
-        if ( !HttpNames.METHOD_POST.equals(method) && !HttpNames.METHOD_GET.equals(method) )
-            ServletOps.errorMethodNotAllowed("Not a GET or POST request") ;
-
-        if ( HttpNames.METHOD_GET.equals(method) && action.request.getQueryString() == null ) {
-            ServletOps.warning(action, "Service Description / SPARQL Query / " + action.request.getRequestURI()) ;
-            ServletOps.errorNotFound("Service Description: " + action.request.getRequestURI()) ;
-        }
-
-        // Use of the dataset describing parameters is check later.
-        try {
-            validateParams(action, allParams) ;
-            validateRequest(action) ;
-        } catch (ActionErrorException ex) {
-            throw ex ;
-        }
-        // Query not yet parsed.
-    }
-
-    /**
-     * Validate the request after checking HTTP method and HTTP Parameters.
-     * @param action HTTP Action
-     */
-    protected abstract void validateRequest(HttpAction action) ;
-
-    /**
-     * Helper method for validating request.
-     * @param request HTTP request
-     * @param params parameters in a collection of Strings
-     */
-    protected void validateParams(HttpAction action, Collection<String> params) {
-        HttpServletRequest request = action.request ;
-        ContentType ct = FusekiLib.getContentType(request) ;
-        boolean mustHaveQueryParam = true ;
-        if ( ct != null ) {
-            String incoming = ct.getContentType() ;
-
-            if ( matchContentType(ctSPARQLQuery, ct) ) {
-                mustHaveQueryParam = false ;
-                // Drop through.
-            } else if ( matchContentType(ctHTMLForm, ct)) {
-                // Nothing specific to do
-            } 
-            else
-                ServletOps.error(HttpSC.UNSUPPORTED_MEDIA_TYPE_415, "Unsupported: " + incoming) ;
-        }
-
-        // GET/POST of a form at this point.
-
-        if ( mustHaveQueryParam ) {
-            int N = countParamOccurences(request, paramQuery) ;
-
-            if ( N == 0 )
-                ServletOps.errorBadRequest("SPARQL Query: No 'query=' parameter") ;
-            if ( N > 1 )
-                ServletOps.errorBadRequest("SPARQL Query: Multiple 'query=' parameters") ;
-
-            // application/sparql-query does not use a query param.
-            String queryStr = request.getParameter(HttpNames.paramQuery) ;
-
-            if ( queryStr == null )
-                ServletOps.errorBadRequest("SPARQL Query: No query specified (no 'query=' found)") ;
-            if ( queryStr.isEmpty() )
-                ServletOps.errorBadRequest("SPARQL Query: Empty query string") ;
-        }
-
-        if ( params != null ) {
-            Enumeration<String> en = request.getParameterNames() ;
-            for (; en.hasMoreElements();) {
-                String name = en.nextElement() ;
-                if ( !params.contains(name) )
-                    ServletOps.warning(action, "SPARQL Query: Unrecognize request parameter (ignored): " + name) ;
-            }
-        }
-    }
-
-    private void executeWithParameter(HttpAction action) {
-        String queryString = action.request.getParameter(paramQuery) ;
-        execute(queryString, action) ;
-    }
-
-    private void executeBody(HttpAction action) {
-        String queryString = null ;
-        try {
-            InputStream input = action.request.getInputStream() ;
-            queryString = IO.readWholeFileAsUTF8(input) ;
-        } catch (IOException ex) {
-            ServletOps.errorOccurred(ex) ;
-        }
-        execute(queryString, action) ;
-    }
-
-    private void execute(String queryString, HttpAction action) {
-        String queryStringLog = ServletOps.formatForLog(queryString) ;
-        if ( action.verbose )
-            action.log.info(format("[%d] Query = \n%s", action.id, queryString)) ;
-        else
-            action.log.info(format("[%d] Query = %s", action.id, queryStringLog)) ;
-
-        Query query = null ;
-        try {
-            // NB syntax is ARQ (a superset of SPARQL)
-            query = QueryFactory.create(queryString, QueryParseBase, Syntax.syntaxARQ) ;
-            queryStringLog = formatForLog(query) ;
-            validateQuery(action, query) ;
-        } catch (ActionErrorException ex) {
-            throw ex ;
-        } catch (QueryParseException ex) {
-            ServletOps.errorBadRequest("Parse error: \n" + queryString + "\n\r" + messageForQueryException(ex)) ;
-        }
-        // Should not happen.
-        catch (QueryException ex) {
-            ServletOps.errorBadRequest("Error: \n" + queryString + "\n\r" + ex.getMessage()) ;
-        }
-
-        // Assumes finished whole thing by end of sendResult.
-        try {
-            action.beginRead() ;
-            Dataset dataset = decideDataset(action, query, queryStringLog) ;
-            try ( QueryExecution qExec = createQueryExecution(query, dataset) ; ) {
-                SPARQLResult result = executeQuery(action, qExec, query, queryStringLog) ;
-                // Deals with exceptions itself.
-                sendResults(action, result, query.getPrologue()) ;
-            }
-        } 
-        catch (QueryParseException ex) {
-            // Late stage static error (e.g. bad fixed Lucene query string). 
-            ServletOps.errorBadRequest("Query parse error: \n" + queryString + "\n\r" + messageForQueryException(ex)) ;
-        }
-        catch (QueryCancelledException ex) {
-            // Additional counter information.
-            incCounter(action.getEndpoint().getCounters(), QueryTimeouts) ;
-            throw ex ;
-        } finally { action.endRead() ; }
-    }
-
-    /**
-     * Check the query - if unacceptable, throw ActionErrorException or call
-     * super.error
-     * @param action HTTP Action
-     * @param query  SPARQL Query
-     */
-    protected abstract void validateQuery(HttpAction action, Query query) ;
-
-    /** Create the {@link QueryExecution} for this operation.
-     * @param query
-     * @param dataset
-     * @return QueryExecution
-     */
-    protected QueryExecution createQueryExecution(Query query, Dataset dataset) {
-        return QueryExecutionFactory.create(query, dataset) ;
-    }
-
-    /** Perform the {@link QueryExecution} once.
-     * @param action
-     * @param queryExecution
-     * @param query
-     * @param queryStringLog Informational string created from the initial query. 
-     * @return
-     */
-    protected SPARQLResult executeQuery(HttpAction action, QueryExecution queryExecution, Query query, String queryStringLog) {
-        setAnyTimeouts(queryExecution, action) ;
-
-        if ( query.isSelectType() ) {
-            ResultSet rs = queryExecution.execSelect() ;
-
-            // Force some query execution now.
-            //
-            // If the timeout-first-row goes off, the output stream has not
-            // been started so the HTTP error code is sent.
-
-            rs.hasNext() ;
-
-            // If we wanted perfect query time cancellation, we could consume
-            // the result now
-            // to see if the timeout-end-of-query goes off.
-
-            // rs = ResultSetFactory.copyResults(rs) ;
-
-            action.log.info(format("[%d] exec/select", action.id)) ;
-            return new SPARQLResult(rs) ;
-        }
-
-        if ( query.isConstructType() ) {
-            Model model = queryExecution.execConstruct() ;
-            action.log.info(format("[%d] exec/construct", action.id)) ;
-            return new SPARQLResult(model) ;
-        }
-
-        if ( query.isDescribeType() ) {
-            Model model = queryExecution.execDescribe() ;
-            action.log.info(format("[%d] exec/describe", action.id)) ;
-            return new SPARQLResult(model) ;
-        }
-
-        if ( query.isAskType() ) {
-            boolean b = queryExecution.execAsk() ;
-            action.log.info(format("[%d] exec/ask", action.id)) ;
-            return new SPARQLResult(b) ;
-        }
-
-        ServletOps.errorBadRequest("Unknown query type - " + queryStringLog) ;
-        return null ;
-    }
-
-    private void setAnyTimeouts(QueryExecution qexec, HttpAction action) {
-//        if ( !(action.getDataService().allowTimeoutOverride) )
-//            return ;
-
-        long desiredTimeout = Long.MAX_VALUE ;
-        String timeoutHeader = action.request.getHeader("Timeout") ;
-        String timeoutParameter = action.request.getParameter("timeout") ;
-        if ( timeoutHeader != null ) {
-            try {
-                desiredTimeout = (int)(Float.parseFloat(timeoutHeader) * 1000) ;
-            } catch (NumberFormatException e) {
-                throw new FusekiException("Timeout header must be a number", e) ;
-            }
-        } else if ( timeoutParameter != null ) {
-            try {
-                desiredTimeout = (int)(Float.parseFloat(timeoutParameter) * 1000) ;
-            } catch (NumberFormatException e) {
-                throw new FusekiException("timeout parameter must be a number", e) ;
-            }
-        }
-
-//        desiredTimeout = Math.min(action.getDataService().maximumTimeoutOverride, desiredTimeout) ;
-        if ( desiredTimeout != Long.MAX_VALUE )
-            qexec.setTimeout(desiredTimeout) ;
-    }
-
-    /** Choose the dataset for this SPARQL Query request. 
-     * @param action
-     * @param query  Query - this may be modified to remove a DatasetDescription.
-     * @param queryStringLog 
-     * @return {@link Dataset}
-     */
-    protected abstract Dataset decideDataset(HttpAction action, Query query, String queryStringLog) ;
-
-    /** Ship the results to the remote caller.
-     * @param action
-     * @param result
-     * @param qPrologue
-     */
-    protected void sendResults(HttpAction action, SPARQLResult result, Prologue qPrologue) {
-        if ( result.isResultSet() )
-            ResponseResultSet.doResponseResultSet(action, result.getResultSet(), qPrologue) ;
-        else if ( result.isGraph() )
-            ResponseModel.doResponseModel(action, result.getModel()) ;
-        else if ( result.isBoolean() )
-            ResponseResultSet.doResponseResultSet(action, result.getBooleanResult()) ;
-        else
-            ServletOps.errorOccurred("Unknown or invalid result type") ;
-    }
-
-    private String formatForLog(Query query) {
-        IndentedLineBuffer out = new IndentedLineBuffer() ;
-        out.setFlatMode(true) ;
-        query.serialize(out) ;
-        return out.asString() ;
-    }
-
-    private String getRemoteString(String queryURI) {
-        return HttpOp.execHttpGetString(queryURI) ;
-    }
+package org.apache.jena.fuseki.servlets;
+
+import static java.lang.String.format;
+import static org.apache.jena.fuseki.server.CounterName.QueryTimeouts;
+import static org.apache.jena.riot.WebContent.ctHTMLForm;
+import static org.apache.jena.riot.WebContent.ctSPARQLQuery;
+import static org.apache.jena.riot.WebContent.isHtmlForm;
+import static org.apache.jena.riot.WebContent.matchContentType;
+import static org.apache.jena.riot.web.HttpNames.paramAccept;
+import static org.apache.jena.riot.web.HttpNames.paramCallback;
+import static org.apache.jena.riot.web.HttpNames.paramDefaultGraphURI;
+import static org.apache.jena.riot.web.HttpNames.paramForceAccept;
+import static org.apache.jena.riot.web.HttpNames.paramNamedGraphURI;
+import static org.apache.jena.riot.web.HttpNames.paramOutput1;
+import static org.apache.jena.riot.web.HttpNames.paramOutput2;
+import static org.apache.jena.riot.web.HttpNames.paramQuery;
+import static org.apache.jena.riot.web.HttpNames.paramQueryRef;
+import static org.apache.jena.riot.web.HttpNames.paramStyleSheet;
+import static org.apache.jena.riot.web.HttpNames.paramTimeout;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Locale;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.jena.atlas.io.IO;
+import org.apache.jena.atlas.io.IndentedLineBuffer;
+import org.apache.jena.atlas.web.AcceptList;
+import org.apache.jena.atlas.web.ContentType;
+import org.apache.jena.atlas.web.MediaType;
+import org.apache.jena.fuseki.DEF;
+import org.apache.jena.fuseki.Fuseki;
+import org.apache.jena.fuseki.FusekiException;
+import org.apache.jena.fuseki.FusekiLib;
+import org.apache.jena.fuseki.conneg.WebLib;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.query.Query;
+import org.apache.jena.query.QueryCancelledException;
+import org.apache.jena.query.QueryException;
+import org.apache.jena.query.QueryExecution;
+import org.apache.jena.query.QueryExecutionFactory;
+import org.apache.jena.query.QueryFactory;
+import org.apache.jena.query.QueryParseException;
+import org.apache.jena.query.ResultSet;
+import org.apache.jena.query.Syntax;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.riot.web.HttpNames;
+import org.apache.jena.riot.web.HttpOp;
+import org.apache.jena.sparql.core.Prologue;
+import org.apache.jena.sparql.resultset.SPARQLResult;
+import org.apache.jena.web.HttpSC;
+
+/**
+ * Handle SPARQL Query requests overt eh SPARQL Protocol. Subclasses provide
+ * this algorithm with the actual dataset to query, whether a dataset hosted by
+ * this server ({@link SPARQL_QueryDataset}) or speciifed in the protocol
+ * request ({@link SPARQL_QueryGeneral}).
+ */
+public abstract class SPARQL_Query extends SPARQL_Protocol {
+	private static final String QueryParseBase = Fuseki.BaseParserSPARQL;
+
+	public SPARQL_Query() {
+		super();
+	}
+
+	// Choose REST verbs to support.
+
+	@Override
+	protected void doPost(HttpServletRequest request,
+			HttpServletResponse response) {
+		doCommon(request, response);
+	}
+
+	@Override
+	protected void doGet(HttpServletRequest request,
+			HttpServletResponse response) {
+		doCommon(request, response);
+	}
+
+	// HEAD
+
+	@Override
+	protected void doOptions(HttpServletRequest request,
+			HttpServletResponse response) {
+		setCommonHeadersForOptions(response);
+		response.setHeader(HttpNames.hAllow, "GET,OPTIONS,POST");
+		response.setHeader(HttpNames.hContentLengh, "0");
+	}
+
+	@Override
+	protected final void perform(HttpAction action) {
+		// GET
+		if (action.request.getMethod().equals(HttpNames.METHOD_GET)) {
+			executeWithParameter(action);
+			return;
+		}
+
+		ContentType ct = FusekiLib.getContentType(action);
+
+		// POST application/x-www-form-url
+		// POST ?query= and no Content-Type
+		if (ct == null || isHtmlForm(ct)) {
+			// validation checked that if no Content-type, then its a POST with
+			// ?query=
+			executeWithParameter(action);
+			return;
+		}
+
+		// POST application/sparql-query
+		if (matchContentType(ct, ctSPARQLQuery)) {
+			executeBody(action);
+			return;
+		}
+
+		ServletOps.error(HttpSC.UNSUPPORTED_MEDIA_TYPE_415,
+				"Bad content type: " + ct.getContentType());
+	}
+
+	// All the params we support
+
+	protected static List<String> allParams = Arrays.asList(paramQuery,
+			paramDefaultGraphURI, paramNamedGraphURI, paramQueryRef,
+			paramStyleSheet, paramAccept, paramOutput1, paramOutput2,
+			paramCallback, paramForceAccept, paramTimeout);
+
+	/**
+	 * Validate the request, checking HTTP method and HTTP Parameters.
+	 * 
+	 * @param action
+	 *            HTTP Action
+	 */
+	@Override
+	protected void validate(HttpAction action) {
+		String method = action.request.getMethod().toUpperCase(Locale.ROOT);
+
+		if (!HttpNames.METHOD_POST.equals(method)
+				&& !HttpNames.METHOD_GET.equals(method))
+			ServletOps.errorMethodNotAllowed("Not a GET or POST request");
+
+		if (HttpNames.METHOD_GET.equals(method)
+				&& action.request.getQueryString() == null) {
+			ServletOps.warning(action, "Service Description / SPARQL Query / "
+					+ action.request.getRequestURI());
+			ServletOps.errorNotFound("Service Description: "
+					+ action.request.getRequestURI());
+		}
+
+		// Use of the dataset describing parameters is check later.
+		try {
+			validateParams(action, allParams);
+			validateRequest(action);
+		} catch (ActionErrorException ex) {
+			throw ex;
+		}
+		// Query not yet parsed.
+	}
+
+	/**
+	 * Validate the request after checking HTTP method and HTTP Parameters.
+	 * 
+	 * @param action
+	 *            HTTP Action
+	 */
+	protected abstract void validateRequest(HttpAction action);
+
+	/**
+	 * Helper method for validating request.
+	 * 
+	 * @param request
+	 *            HTTP request
+	 * @param params
+	 *            parameters in a collection of Strings
+	 */
+	protected void validateParams(HttpAction action, Collection<String> params) {
+		HttpServletRequest request = action.request;
+		ContentType ct = FusekiLib.getContentType(request);
+		boolean mustHaveQueryParam = true;
+		if (ct != null) {
+			String incoming = ct.getContentType();
+
+			if (matchContentType(ctSPARQLQuery, ct)) {
+				mustHaveQueryParam = false;
+				// Drop through.
+			} else if (matchContentType(ctHTMLForm, ct)) {
+				// Nothing specific to do
+			} else
+				ServletOps.error(HttpSC.UNSUPPORTED_MEDIA_TYPE_415,
+						"Unsupported: " + incoming);
+		}
+
+		// GET/POST of a form at this point.
+
+		if (mustHaveQueryParam) {
+			int N = countParamOccurences(request, paramQuery);
+
+			if (N == 0)
+				ServletOps
+						.errorBadRequest("SPARQL Query: No 'query=' parameter");
+			if (N > 1)
+				ServletOps
+						.errorBadRequest("SPARQL Query: Multiple 'query=' parameters");
+
+			// application/sparql-query does not use a query param.
+			String queryStr = request.getParameter(HttpNames.paramQuery);
+
+			if (queryStr == null)
+				ServletOps
+						.errorBadRequest("SPARQL Query: No query specified (no 'query=' found)");
+			if (queryStr.isEmpty())
+				ServletOps.errorBadRequest("SPARQL Query: Empty query string");
+		}
+
+		if (params != null) {
+			Enumeration<String> en = request.getParameterNames();
+			for (; en.hasMoreElements();) {
+				String name = en.nextElement();
+				if (!params.contains(name))
+					ServletOps.warning(action,
+							"SPARQL Query: Unrecognize request parameter (ignored): "
+									+ name);
+			}
+		}
+	}
+
+	private void executeWithParameter(HttpAction action) {
+		String queryString = action.request.getParameter(paramQuery);
+		execute(queryString, action);
+	}
+
+	private void executeBody(HttpAction action) {
+		String queryString = null;
+		try {
+			InputStream input = action.request.getInputStream();
+			queryString = IO.readWholeFileAsUTF8(input);
+		} catch (IOException ex) {
+			ServletOps.errorOccurred(ex);
+		}
+		execute(queryString, action);
+	}
+
+	private void execute(String queryString, HttpAction action) {
+		String queryStringLog = ServletOps.formatForLog(queryString);
+		if (action.verbose)
+			action.log
+					.info(format("[%d] Query = \n%s", action.id, queryString));
+		else
+			action.log
+					.info(format("[%d] Query = %s", action.id, queryStringLog));
+
+		Query query = null;
+		try {
+			// NB syntax is ARQ (a superset of SPARQL)
+			query = QueryFactory.create(queryString, QueryParseBase,
+					Syntax.syntaxARQ);
+			queryStringLog = formatForLog(query);
+			validateQuery(action, query);
+		} catch (ActionErrorException ex) {
+			throw ex;
+		} catch (QueryParseException ex) {
+			ServletOps.errorBadRequest("Parse error: \n" + queryString + "\n\r"
+					+ messageForQueryException(ex));
+		}
+		// Should not happen.
+		catch (QueryException ex) {
+			ServletOps.errorBadRequest("Error: \n" + queryString + "\n\r"
+					+ ex.getMessage());
+		}
+
+		// Assumes finished whole thing by end of sendResult.
+		try {
+			action.beginRead();
+			Dataset dataset = decideDataset(action, query, queryStringLog);
+			try (QueryExecution qExec = createQueryExecution(query, dataset);) {
+				SPARQLResult result = executeQuery(action, qExec, query,
+						queryStringLog);
+				// Deals with exceptions itself.
+				sendResults(action, result, query.getPrologue());
+			}
+		} catch (QueryParseException ex) {
+			// Late stage static error (e.g. bad fixed Lucene query string).
+			ServletOps.errorBadRequest("Query parse error: \n" + queryString
+					+ "\n\r" + messageForQueryException(ex));
+		} catch (QueryCancelledException ex) {
+			// Additional counter information.
+			incCounter(action.getEndpoint().getCounters(), QueryTimeouts);
+			throw ex;
+		} finally {
+			action.endRead();
+		}
+	}
+
+	/**
+	 * Check the query - if unacceptable, throw ActionErrorException or call
+	 * super.error
+	 * 
+	 * @param action
+	 *            HTTP Action
+	 * @param query
+	 *            SPARQL Query
+	 */
+	protected abstract void validateQuery(HttpAction action, Query query);
+
+	/**
+	 * Create the {@link QueryExecution} for this operation.
+	 * 
+	 * @param query
+	 * @param dataset
+	 * @return QueryExecution
+	 */
+	protected QueryExecution createQueryExecution(Query query, Dataset dataset) {
+		return QueryExecutionFactory.create(query, dataset);
+	}
+
+	/**
+	 * Perform the {@link QueryExecution} once.
+	 * 
+	 * @param action
+	 * @param queryExecution
+	 * @param query
+	 * @param queryStringLog
+	 *            Informational string created from the initial query.
+	 * @return
+	 */
+	protected SPARQLResult executeQuery(HttpAction action,
+			QueryExecution queryExecution, Query query, String queryStringLog) {
+		setAnyTimeouts(queryExecution, action);
+
+		if (query.isSelectType()) {
+			ResultSet rs = queryExecution.execSelect();
+
+			// Force some query execution now.
+			//
+			// If the timeout-first-row goes off, the output stream has not
+			// been started so the HTTP error code is sent.
+
+			rs.hasNext();
+
+			// If we wanted perfect query time cancellation, we could consume
+			// the result now
+			// to see if the timeout-end-of-query goes off.
+
+			// rs = ResultSetFactory.copyResults(rs) ;
+
+			action.log.info(format("[%d] exec/select", action.id));
+			return new SPARQLResult(rs);
+		}
+
+		if (query.isConstructType()) {
+
+			MediaType rdfMediaType = AcceptList.match( DEF.pureRdfOffer, new AcceptList( WebLib.getAccept(action.getRequest())));
+			
+			if ( ! rdfMediaType.getType().equals("*") ) {
+				Model model = queryExecution.execConstruct();
+				action.log.info(format("[%d] exec/construct/model", action.id));
+				return new SPARQLResult(model);
+			} else  {
+				Dataset dataset = queryExecution.execConstructDataset();
+				action.log
+						.info(format("[%d] exec/construct/dataset", action.id));
+				return new SPARQLResult(dataset);
+			}
+		}
+
+		if (query.isDescribeType()) {
+			Model model = queryExecution.execDescribe();
+			action.log.info(format("[%d] exec/describe", action.id));
+			return new SPARQLResult(model);
+		}
+
+		if (query.isAskType()) {
+			boolean b = queryExecution.execAsk();
+			action.log.info(format("[%d] exec/ask", action.id));
+			return new SPARQLResult(b);
+		}
+
+		ServletOps.errorBadRequest("Unknown query type - " + queryStringLog);
+		return null;
+	}
+
+	private void setAnyTimeouts(QueryExecution qexec, HttpAction action) {
+		// if ( !(action.getDataService().allowTimeoutOverride) )
+		// return ;
+
+		long desiredTimeout = Long.MAX_VALUE;
+		String timeoutHeader = action.request.getHeader("Timeout");
+		String timeoutParameter = action.request.getParameter("timeout");
+		if (timeoutHeader != null) {
+			try {
+				desiredTimeout = (int) (Float.parseFloat(timeoutHeader) * 1000);
+			} catch (NumberFormatException e) {
+				throw new FusekiException("Timeout header must be a number", e);
+			}
+		} else if (timeoutParameter != null) {
+			try {
+				desiredTimeout = (int) (Float.parseFloat(timeoutParameter) * 1000);
+			} catch (NumberFormatException e) {
+				throw new FusekiException("timeout parameter must be a number",
+						e);
+			}
+		}
+
+		// desiredTimeout =
+		// Math.min(action.getDataService().maximumTimeoutOverride,
+		// desiredTimeout) ;
+		if (desiredTimeout != Long.MAX_VALUE)
+			qexec.setTimeout(desiredTimeout);
+	}
+
+	/**
+	 * Choose the dataset for this SPARQL Query request.
+	 * 
+	 * @param action
+	 * @param query
+	 * @param queryStringLog
+	 * @return {@link Dataset}
+	 */
+	protected abstract Dataset decideDataset(HttpAction action, Query query,
+			String queryStringLog);
+
+	/**
+	 * Ship the results to the remote caller.
+	 * 
+	 * @param action
+	 * @param result
+	 * @param qPrologue
+	 */
+	protected void sendResults(HttpAction action, SPARQLResult result,
+			Prologue qPrologue) {
+		if (result.isResultSet())
+			ResponseResultSet.doResponseResultSet(action,
+					result.getResultSet(), qPrologue);
+		else if (result.isGraph()) {
+			ResponseModel.doResponseModel(action, result.getModel());
+		} else if (result.isBoolean())
+			ResponseResultSet.doResponseResultSet(action,
+					result.getBooleanResult());
+		else if (result.isDataset()) {
+			ResponseDataset.doResponseDataset(action, result.getDataset());
+		} else
+			ServletOps.errorOccurred("Unknown or invalid result type");
+	}
+
+	private String formatForLog(Query query) {
+		IndentedLineBuffer out = new IndentedLineBuffer();
+		out.setFlatMode(true);
+		query.serialize(out);
+		return out.asString();
+	}
+
+	private String getRemoteString(String queryURI) {
+		return HttpOp.execHttpGetString(queryURI);
+	}
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/0eb28d80/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestQuery.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestQuery.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestQuery.java
index 2f4d73a..911d105 100644
--- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestQuery.java
+++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestQuery.java
@@ -16,140 +16,136 @@
  * limitations under the License.
  */
 
-package org.apache.jena.fuseki ;
+package org.apache.jena.fuseki;
 
-import static org.apache.jena.fuseki.ServerTest.gn1 ;
-import static org.apache.jena.fuseki.ServerTest.gn2 ;
-import static org.apache.jena.fuseki.ServerTest.model1 ;
-import static org.apache.jena.fuseki.ServerTest.model2 ;
-import static org.apache.jena.fuseki.ServerTest.serviceQuery ;
-import static org.apache.jena.fuseki.ServerTest.serviceREST ;
+import static org.apache.jena.fuseki.ServerTest.gn1;
+import static org.apache.jena.fuseki.ServerTest.model1;
+import static org.apache.jena.fuseki.ServerTest.model2;
+import static org.apache.jena.fuseki.ServerTest.serviceQuery;
+import static org.apache.jena.fuseki.ServerTest.serviceREST;
 
-import java.io.IOException ;
-import java.net.HttpURLConnection ;
-import java.net.URL ;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.Iterator;
 
-import org.apache.jena.atlas.junit.BaseTest ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.query.* ;
-import org.apache.jena.sparql.core.Var ;
-import org.apache.jena.sparql.engine.binding.Binding ;
-import org.apache.jena.sparql.resultset.ResultSetCompare ;
-import org.apache.jena.sparql.sse.Item ;
-import org.apache.jena.sparql.sse.SSE ;
-import org.apache.jena.sparql.sse.builders.BuilderResultSet ;
-import org.apache.jena.sparql.util.Convert ;
-import org.junit.AfterClass ;
-import org.junit.Assert ;
-import org.junit.BeforeClass ;
-import org.junit.Test ;
+import org.apache.jena.atlas.junit.BaseTest;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.query.DatasetAccessor;
+import org.apache.jena.query.DatasetAccessorFactory;
+import org.apache.jena.query.Query;
+import org.apache.jena.query.QueryExecution;
+import org.apache.jena.query.QueryExecutionFactory;
+import org.apache.jena.query.QueryFactory;
+import org.apache.jena.query.ResultSet;
+import org.apache.jena.query.ResultSetFormatter;
+import org.apache.jena.query.Syntax;
+import org.apache.jena.sparql.core.Quad;
+import org.apache.jena.sparql.core.Var;
+import org.apache.jena.sparql.engine.binding.Binding;
+import org.apache.jena.sparql.resultset.ResultSetCompare;
+import org.apache.jena.sparql.sse.Item;
+import org.apache.jena.sparql.sse.SSE;
+import org.apache.jena.sparql.sse.builders.BuilderResultSet;
+import org.apache.jena.sparql.util.Convert;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
 
-public class TestQuery extends BaseTest {
-    protected static ResultSet rs1 = null ;
+public class TestQuery extends BaseTest 
+{
+    protected static ResultSet rs1 = null ; 
     static {
         Item item = SSE.parseItem("(resultset (?s ?p ?o) (row (?s <x>)(?p <p>)(?o 1)))") ;
         rs1 = BuilderResultSet.build(item) ;
     }
-
-    @BeforeClass
-    public static void beforeClass() {
+    
+    @BeforeClass public static void beforeClass()
+    {
         ServerTest.allocServer() ;
         ServerTest.resetServer() ;
         DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST) ;
         du.putModel(model1) ;
         du.putModel(gn1, model2) ;
     }
-
-    @AfterClass
-    public static void afterClass() {
+    
+    @AfterClass public static void afterClass()
+    {
         DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST) ;
         du.deleteDefault() ;
         ServerTest.freeServer() ;
     }
-
-    @Test
-    public void query_01() {
+    
+    @Test public void query_01()
+    {
         execQuery("SELECT * {?s ?p ?o}", 1) ;
     }
-
-    @Test
-    public void query_recursive_01() {
-        String query = "SELECT * WHERE { SERVICE <" + serviceQuery + "> { ?s ?p ?o . BIND(?o AS ?x) } }" ;
-        try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, query)) {
-            ResultSet rs = qExec.execSelect() ;
-            Var x = Var.alloc("x") ;
+    
+    @Test public void query_recursive_01()
+    {
+        String query = "SELECT * WHERE { SERVICE <" + serviceQuery + "> { ?s ?p ?o . BIND(?o AS ?x) } }";
+        try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, query) ) {
+            ResultSet rs = qExec.execSelect();
+            Var x = Var.alloc("x");
             while (rs.hasNext()) {
-                Binding b = rs.nextBinding() ;
-                Assert.assertNotNull(b.get(x)) ;
+                Binding b = rs.nextBinding();
+                Assert.assertNotNull(b.get(x));
             }
         }
     }
-
-    @Test
-    public void query_with_params_01() {
-        String query = "ASK { }" ;
-        try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery + "?output=json", query)) {
-            boolean result = qExec.execAsk() ;
-            Assert.assertTrue(result) ;
+    
+    @Test public void query_with_params_01()
+    {
+        String query = "ASK { }";
+        try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery + "?output=json", query) ) {
+            boolean result = qExec.execAsk();
+            Assert.assertTrue(result);
         }
     }
+    
+    @Test public void query_construct_quad_01()
+    {
+        String queryString = " CONSTRUCT { GRAPH <http://eg/g> {?s ?p ?oq} } WHERE {?s ?p ?oq}" ;
+        Query query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+               
+        try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, query) ) {
+            Iterator<Quad> result = qExec.execConstructQuads();
+            Assert.assertTrue(result.hasNext());
+            Assert.assertEquals( "http://eg/g", result.next().getGraph().getURI());
 
-    @Test
-    public void request_id_header_01() throws IOException {
-        String qs = Convert.encWWWForm("ASK{}") ;
-        URL u = new URL(serviceQuery + "?query=" + qs) ;
-        HttpURLConnection conn = (HttpURLConnection)u.openConnection() ;
-        Assert.assertTrue(conn.getHeaderField("Fuseki-Request-ID") != null) ;
-    }
-
-    @Test
-    public void query_dynamic_dataset_01() {
-        DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST) ;
-        du.putModel(model1);
-        du.putModel(gn1, model2);
-        {
-            String query = "SELECT * { ?s ?p ?o }" ;
-            try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery + "?output=json", query)) {
-                ResultSet rs = qExec.execSelect() ;
-                Node o = rs.next().getLiteral("o").asNode() ;
-                Node n = SSE.parseNode("1") ;
-                assertEquals(n, o) ;
-            }
-        }
-        {
-
-            String query = "SELECT * FROM <" + gn1 + "> { ?s ?p ?o }" ;
-            try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery + "?output=json", query)) {
-                ResultSet rs = qExec.execSelect() ;
-                Node o = rs.next().getLiteral("o").asNode() ;
-                Node n = SSE.parseNode("2") ;
-                assertEquals(n, o) ;
-            }
         }
     }
     
-    @Test
-    public void query_dynamic_dataset_02() {
-        DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST) ;
-        du.putModel(model1);
-        du.putModel(gn1, model1);
-        du.putModel(gn2, model2);
-        String query = "SELECT * FROM <"+gn1+"> FROM <"+gn2+"> { ?s ?p ?o }" ;
-        try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery + "?output=json", query)) {
-            ResultSet rs = qExec.execSelect() ;
-            int n = ResultSetFormatter.consume(rs) ;
-            assertEquals(2, n) ;
+    @Test public void query_construct_01()
+    {
+        String query = " CONSTRUCT {?s ?p ?o} WHERE {?s ?p ?o}" ;
+        try ( QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, query) ) {
+            Iterator<Triple> result = qExec.execConstructTriples();
+            Assert.assertTrue(result.hasNext());
         }
     }
+    
 
-    private void execQuery(String queryString, int exceptedRowCount) {
+    
+    @Test public void request_id_header_01() throws IOException
+    {
+        String qs = Convert.encWWWForm("ASK{}") ;
+        URL u = new URL(serviceQuery+"?query="+qs);
+        HttpURLConnection conn = (HttpURLConnection) u.openConnection();
+        Assert.assertTrue(conn.getHeaderField("Fuseki-Request-ID") != null);
+    }
+
+    private void execQuery(String queryString, int exceptedRowCount)
+    {
         QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, queryString) ;
         ResultSet rs = qExec.execSelect() ;
         int x = ResultSetFormatter.consume(rs) ;
         assertEquals(exceptedRowCount, x) ;
     }
-
-    private void execQuery(String queryString, ResultSet expectedResultSet) {
+    
+    private void execQuery(String queryString, ResultSet expectedResultSet)
+    {
         QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, queryString) ;
         ResultSet rs = qExec.execSelect() ;
         boolean b = ResultSetCompare.equalsByTerm(rs, expectedResultSet) ;


[26/50] [abbrv] jena git commit: fix try-with-resource warnings

Posted by an...@apache.org.
fix try-with-resource warnings

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 69f5ee2c35fcb925be15f092740a1cb98f746c6b
Parents: 4d8fd79
Author: confidencesun <co...@gmail.com>
Authored: Tue Aug 4 23:51:23 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Tue Aug 4 23:51:23 2015 +0800

----------------------------------------------------------------------
 .../constructquads/ExampleConstructQuads.java   | 118 +++++++++++--------
 1 file changed, 67 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/69f5ee2c/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
----------------------------------------------------------------------
diff --git a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
index 4ef097e..dcc587b 100644
--- a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
+++ b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
@@ -56,95 +56,111 @@ public class ExampleConstructQuads {
 		model1.add(s1, p1, o1);
 		dataset.addNamedModel("http://eg.com/g1", model1);
 
-
 		// construct named graph
 		System.out.println("construct named graph:");
 		String queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
 		Query query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		QueryExecution qexec = QueryExecutionFactory.create(query, dataset);
-		Iterator<Quad> quads = qexec.execConstructQuads();
-		PrintUtil.printOut(quads);
-		qexec.close();
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Quad> quads = qexec.execConstructQuads();
+			PrintUtil.printOut(quads);
+			qexec.close();
+		}
 		arq.qparse.main("--in", "arq", queryString);
-		
+
 		// construct default graph 1
 		System.out.println("construct default graph 1:");
 		queryString = "CONSTRUCT {  {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
-		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		qexec = QueryExecutionFactory.create(query, dataset);
-		quads = qexec.execConstructQuads();
-		PrintUtil.printOut(quads);
-		qexec.close();
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Quad> quads = qexec.execConstructQuads();
+			PrintUtil.printOut(quads);
+			qexec.close();
+		}
 		arq.qparse.main("--in", "arq", queryString);
-		
+
 		// construct default graph 2
 		System.out.println("construct default graph 2:");
 		queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o}  WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
 		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		qexec = QueryExecutionFactory.create(query, dataset);
-		quads = qexec.execConstructQuads();
-		PrintUtil.printOut(quads);
-		qexec.close();
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Quad> quads = qexec.execConstructQuads();
+			PrintUtil.printOut(quads);
+			qexec.close();
+		}
 		arq.qparse.main("--in", "arq", queryString);
-		
+
 		// construct triples
 		System.out.println("construct default graph 2:");
 		queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o}  WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
 		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		qexec = QueryExecutionFactory.create(query, dataset);
-		Iterator<Triple> triples = qexec.execConstructTriples();
-		PrintUtil.printOut(triples);
-		qexec.close();
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Triple> triples = qexec.execConstructTriples();
+			PrintUtil.printOut(triples);
+			qexec.close();
+		}
 		arq.qparse.main("--in", "arq", queryString);
-		
-		//construct dataset
+
+		// construct dataset
 		System.out.println("construct dataset:");
 		queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
 		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		qexec = QueryExecutionFactory.create(query, dataset);
-		Dataset d = qexec.execConstructDataset();
-		RDFDataMgr.write(System.out, d, Lang.TRIG) ;
-		qexec.close();
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Dataset d = qexec.execConstructDataset();
+			RDFDataMgr.write(System.out, d, Lang.TRIG);
+			qexec.close();
+		}
 		arq.qparse.main("--in", "arq", queryString);
-		
-		//short form 1
+
+		// short form 1
 		System.out.println("short form 1:");
 		queryString = "CONSTRUCT WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
 		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		qexec = QueryExecutionFactory.create(query, dataset);
-		quads = qexec.execConstructQuads();
-		PrintUtil.printOut(quads);
-		qexec.close();
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Quad> quads = qexec.execConstructQuads();
+			PrintUtil.printOut(quads);
+			qexec.close();
+		}
 		arq.qparse.main("--in", "arq", queryString);
-		
-		//short form 2
+
+		// short form 2
 		System.out.println("short form 2:");
 		queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }";
 		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		qexec = QueryExecutionFactory.create(query, dataset);
-		quads = qexec.execConstructQuads();
-		PrintUtil.printOut(quads);
-		qexec.close();
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Quad> quads = qexec.execConstructQuads();
+			PrintUtil.printOut(quads);
+			qexec.close();
+		}
 		arq.qparse.main("--in", "arq", queryString);
-		
-		//short form 3
+
+		// short form 3
 		System.out.println("short form 3:");
 		queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }";
 		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		qexec = QueryExecutionFactory.create(query, dataset);
-		triples = qexec.execConstructTriples();
-		PrintUtil.printOut(triples);
-		qexec.close();
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Triple> triples = qexec.execConstructTriples();
+			PrintUtil.printOut(triples);
+			qexec.close();
+		}
 		arq.qparse.main("--in", "arq", queryString);
-		
-		//short form 4
+
+		// short form 4
 		System.out.println("short form 4:");
 		queryString = "CONSTRUCT WHERE{ {<http://eg.com/s> <http://eg.com/p> ?o} }";
 		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
-		qexec = QueryExecutionFactory.create(query, dataset);
-		quads = qexec.execConstructQuads();
-		PrintUtil.printOut(quads);
-		qexec.close();
+		try (QueryExecution qexec = QueryExecutionFactory
+				.create(query, dataset)) {
+			Iterator<Quad> quads = qexec.execConstructQuads();
+			PrintUtil.printOut(quads);
+			qexec.close();
+		}
 		arq.qparse.main("--in", "arq", queryString);
 
 	}


[28/50] [abbrv] jena git commit: modify syn-arq.sh to generate syntax tests for construct quad

Posted by an...@apache.org.
modify syn-arq.sh to generate syntax tests for construct quad

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 4bb4a7f21eded96854d262118821980e0e8ea2c6
Parents: 84f6f98
Author: confidencesun <co...@gmail.com>
Authored: Thu Aug 6 01:49:58 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Thu Aug 6 01:49:58 2015 +0800

----------------------------------------------------------------------
 .../constructquads/ExampleConstructQuads.java   |  1 -
 .../testing/ARQ/Syntax/Syntax-ARQ/manifest.ttl  | 69 +++++++++++-----
 .../Syntax-ARQ/syntax-quad-construct-04.arq     |  1 -
 .../Syntax-ARQ/syntax-quad-construct-05.arq     |  1 -
 .../Syntax-ARQ/syntax-quad-construct-06.arq     |  1 -
 .../Syntax-ARQ/syntax-quad-construct-07.arq     |  1 -
 .../Syntax-ARQ/syntax-quad-construct-08.arq     |  1 -
 jena-arq/testing/ARQ/Syntax/syn-arq.sh          | 82 +++++++++++++++++++-
 8 files changed, 132 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/4bb4a7f2/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
----------------------------------------------------------------------
diff --git a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
index 5b4efd6..0f509b0 100644
--- a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
+++ b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
@@ -165,7 +165,6 @@ public class ExampleConstructQuads {
 		File[] tests = new File("testing/ARQ/Syntax/Syntax-ARQ")
 				.listFiles(new FilenameFilter() {
 					public boolean accept(File dir, String fname) {
-						System.out.println(fname);
 						if (fname.startsWith("syntax-quad-construct-")) {
 							return true;
 						}

http://git-wip-us.apache.org/repos/asf/jena/blob/4bb4a7f2/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/manifest.ttl
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/manifest.ttl b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/manifest.ttl
index 8d98238..3478a61 100644
--- a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/manifest.ttl
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/manifest.ttl
@@ -1,18 +1,3 @@
-#  Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You under the Apache License, Version 2.0
-#  (the "License"); you may not use this file except in compliance with
-#  the License.  You may obtain a copy of the License at
-# 
-#       http://www.apache.org/licenses/LICENSE-2.0
-# 
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-#  limitations under the License.
-
 @prefix :       <manifest#> .
 @prefix rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
 @prefix rdfs:	<http://www.w3.org/2000/01/rdf-schema#> .
@@ -51,6 +36,14 @@
 :test_23
 :test_24
 :test_25
+:test_26
+:test_27
+:test_28
+:test_29
+:test_30
+:test_31
+:test_32
+:test_33
 ) .
 
 :test_1 rdf:type   mfx:PositiveSyntaxTestARQ ;
@@ -163,17 +156,57 @@
    mf:name    "syntax-let-02.arq" ;
    mf:action  <syntax-let-02.arq> ;.
 
-:test_23 rdf:type   mfx:NegativeSyntaxTestARQ ;
+:test_23 rdf:type   mfx:PositiveSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-quad-construct-01.arq" ;
+   mf:action  <syntax-quad-construct-01.arq> ;.
+
+:test_24 rdf:type   mfx:PositiveSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-quad-construct-02.arq" ;
+   mf:action  <syntax-quad-construct-02.arq> ;.
+
+:test_25 rdf:type   mfx:PositiveSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-quad-construct-03.arq" ;
+   mf:action  <syntax-quad-construct-03.arq> ;.
+
+:test_26 rdf:type   mfx:PositiveSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-quad-construct-04.arq" ;
+   mf:action  <syntax-quad-construct-04.arq> ;.
+
+:test_27 rdf:type   mfx:PositiveSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-quad-construct-05.arq" ;
+   mf:action  <syntax-quad-construct-05.arq> ;.
+
+:test_28 rdf:type   mfx:PositiveSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-quad-construct-06.arq" ;
+   mf:action  <syntax-quad-construct-06.arq> ;.
+
+:test_29 rdf:type   mfx:PositiveSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-quad-construct-07.arq" ;
+   mf:action  <syntax-quad-construct-07.arq> ;.
+
+:test_30 rdf:type   mfx:PositiveSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-quad-construct-08.arq" ;
+   mf:action  <syntax-quad-construct-08.arq> ;.
+
+:test_31 rdf:type   mfx:NegativeSyntaxTestARQ ;
    dawgt:approval dawgt:NotClassified ;
    mf:name    "syntax-subquery-bad-01.arq" ;
    mf:action  <syntax-subquery-bad-01.arq> ;.
 
-:test_24 rdf:type   mfx:NegativeSyntaxTestARQ ;
+:test_32 rdf:type   mfx:NegativeSyntaxTestARQ ;
    dawgt:approval dawgt:NotClassified ;
    mf:name    "syntax-subquery-bad-02.arq" ;
    mf:action  <syntax-subquery-bad-02.arq> ;.
 
-:test_25 rdf:type   mfx:NegativeSyntaxTestARQ ;
+:test_33 rdf:type   mfx:NegativeSyntaxTestARQ ;
    dawgt:approval dawgt:NotClassified ;
    mf:name    "syntax-let-bad-01.arq" ;
    mf:action  <syntax-let-bad-01.arq> ;.

http://git-wip-us.apache.org/repos/asf/jena/blob/4bb4a7f2/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-04.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-04.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-04.arq
index 7638a43..521d182 100644
--- a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-04.arq
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-04.arq
@@ -6,4 +6,3 @@ CONSTRUCT {
    }
 WHERE
    { GRAPH ?g { ?s ?p ?o } }
-

http://git-wip-us.apache.org/repos/asf/jena/blob/4bb4a7f2/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-05.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-05.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-05.arq
index d9b1bda..de726b4 100644
--- a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-05.arq
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-05.arq
@@ -6,4 +6,3 @@ CONSTRUCT {
    }
 WHERE
    { GRAPH ?g { ?s ?p ?o } }
-

http://git-wip-us.apache.org/repos/asf/jena/blob/4bb4a7f2/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-06.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-06.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-06.arq
index d6b11bb..98ef396 100644
--- a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-06.arq
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-06.arq
@@ -11,4 +11,3 @@ CONSTRUCT {
    }
 WHERE
    { GRAPH ?g { ?s ?p ?o } }
-

http://git-wip-us.apache.org/repos/asf/jena/blob/4bb4a7f2/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-07.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-07.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-07.arq
index 19fe948..54a6630 100644
--- a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-07.arq
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-07.arq
@@ -4,4 +4,3 @@ CONSTRUCT {
    GRAPH <urn:x-arq:DefaultGraphNode> {:s :p :o .}
    }
 WHERE {}
-

http://git-wip-us.apache.org/repos/asf/jena/blob/4bb4a7f2/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-08.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-08.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-08.arq
index 602e81c..0393ecd 100644
--- a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-08.arq
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-08.arq
@@ -6,4 +6,3 @@ CONSTRUCT {
    }
 WHERE
    { }
-

http://git-wip-us.apache.org/repos/asf/jena/blob/4bb4a7f2/jena-arq/testing/ARQ/Syntax/syn-arq.sh
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/syn-arq.sh b/jena-arq/testing/ARQ/Syntax/syn-arq.sh
index 3f8bce5..508d29b 100644
--- a/jena-arq/testing/ARQ/Syntax/syn-arq.sh
+++ b/jena-arq/testing/ARQ/Syntax/syn-arq.sh
@@ -184,4 +184,84 @@ SELECT *
 {
   LET ?x := (4+5)
 }
-EOF
\ No newline at end of file
+EOF
+
+## ---- CONSTRUCT QUAD
+
+N=0
+
+N=$((N+1)) ; testGood $ARQ $(fname "syntax-quad-construct-" $N arq) <<EOF
+PREFIX : <http://example/>
+
+CONSTRUCT { GRAPH :g { :s :p :o } } WHERE {}
+EOF
+
+N=$((N+1)) ; testGood $ARQ $(fname "syntax-quad-construct-" $N arq) <<EOF
+PREFIX : <http://example/>
+
+CONSTRUCT { GRAPH ?g { ?s ?p ?o } } WHERE { ?s ?p ?o }
+EOF
+
+N=$((N+1)) ; testGood $ARQ $(fname "syntax-quad-construct-" $N arq) <<EOF
+PREFIX : <http://example/>
+
+CONSTRUCT { :s :p :o } WHERE {}
+EOF
+
+N=$((N+1)) ; testGood $ARQ $(fname "syntax-quad-construct-" $N arq) <<EOF
+PREFIX : <http://example/>
+
+CONSTRUCT {
+   GRAPH ?g { :s :p :o }
+   ?s ?p ?o
+   }
+WHERE
+   { GRAPH ?g { ?s ?p ?o } }
+EOF
+
+N=$((N+1)) ; testGood $ARQ $(fname "syntax-quad-construct-" $N arq) <<EOF
+PREFIX : <http://example/>
+
+CONSTRUCT {
+   ?s ?p ?o
+   GRAPH ?g { :s :p :o }
+   }
+WHERE
+   { GRAPH ?g { ?s ?p ?o } }
+EOF
+
+N=$((N+1)) ; testGood $ARQ $(fname "syntax-quad-construct-" $N arq) <<EOF
+PREFIX : <http://example/>
+
+CONSTRUCT {
+   GRAPH ?g { :s :p :o }
+   ?s ?p ?o .
+   ?s ?p ?o .
+   GRAPH ?g { ?s ?p ?o }
+   ?s ?p ?o .
+   ?s ?p ?o
+   GRAPH ?g { ?s ?p ?o }
+   }
+WHERE
+   { GRAPH ?g { ?s ?p ?o } }
+EOF
+
+N=$((N+1)) ; testGood $ARQ $(fname "syntax-quad-construct-" $N arq) <<EOF
+PREFIX : <http://example/>
+
+CONSTRUCT {
+   GRAPH <urn:x-arq:DefaultGraphNode> {:s :p :o .}
+   }
+WHERE {}
+EOF
+
+N=$((N+1)) ; testGood $ARQ $(fname "syntax-quad-construct-" $N arq) <<EOF
+PREFIX : <http://example/>
+
+CONSTRUCT {
+   GRAPH ?g { :s :p :o }
+   GRAPH ?g1 { :s :p :o }
+   }
+WHERE
+   { }
+EOF


[48/50] [abbrv] jena git commit: Merge commit 'refs/pull/89/head' of github.com:apache/jena into JENA-491-construct-quads

Posted by an...@apache.org.
Merge commit 'refs/pull/89/head' of github.com:apache/jena into JENA-491-construct-quads


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

Branch: refs/heads/JENA-491-construct-quads
Commit: bdb1101e53883634e9660eb214d3442cc0c74c28
Parents: c8528b7 6f39740
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Aug 17 14:02:51 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Aug 17 14:02:51 2015 +0100

----------------------------------------------------------------------
 jena-arq/Grammar/arq.jj                         |   38 +-
 jena-arq/Grammar/master.jj                      |   76 +
 .../constructquads/ExampleConstructQuads.java   |  199 ++
 .../main/java/org/apache/jena/query/Query.java  |    3 +-
 .../org/apache/jena/query/QueryExecution.java   |   23 +-
 .../jena/sparql/engine/QueryExecutionBase.java  |  110 +-
 .../sparql/engine/http/QueryEngineHTTP.java     |   11 +
 .../apache/jena/sparql/lang/arq/ARQParser.java  | 1797 +++++++++---------
 .../jena/sparql/lang/arq/ARQParserBase.java     |   27 +
 .../sparql/lang/arq/ARQParserConstants.java     | 1266 ++++++------
 .../sparql/lang/arq/ARQParserTokenManager.java  |    1 +
 .../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 ++--
 .../lang/sparql_11/SPARQLParser11Constants.java | 1224 ++++++------
 .../jena/sparql/lang/sparql_11/Token.java       |    2 +-
 .../sparql/lang/sparql_11/TokenMgrError.java    |    2 +-
 .../jena/sparql/resultset/ResultsFormat.java    |   13 +
 .../jena/sparql/resultset/SPARQLResult.java     |   33 +-
 .../jena/sparql/serializer/FmtTemplate.java     |   47 +-
 .../org/apache/jena/sparql/syntax/Template.java |  137 +-
 .../org/apache/jena/sparql/api/TestAPI.java     |  262 ++-
 .../org/apache/jena/sparql/junit/QueryTest.java |  117 +-
 .../org/apache/jena/sparql/junit/TestItem.java  |   45 +-
 jena-arq/testing/ARQ/Construct/dft.ttl          |    2 +
 jena-arq/testing/ARQ/Construct/g1.ttl           |    3 +
 jena-arq/testing/ARQ/Construct/g2.ttl           |    2 +
 jena-arq/testing/ARQ/Construct/manifest.ttl     |  120 ++
 .../ARQ/Construct/q-construct-quad-dataset.arq  |    6 +
 .../q-construct-quad-default-graph-1.arq        |    6 +
 .../q-construct-quad-default-graph-2.arq        |    6 +
 .../Construct/q-construct-quad-named-graph.arq  |    6 +
 .../Construct/q-construct-quad-short-form-1.arq |    5 +
 .../Construct/q-construct-quad-short-form-2.arq |    5 +
 .../Construct/q-construct-quad-short-form-3.arq |    5 +
 .../ARQ/Construct/q-construct-quad-syntax-1.arq |    3 +
 .../ARQ/Construct/q-construct-quad-syntax-2.arq |    3 +
 .../ARQ/Construct/q-construct-quad-syntax-3.arq |    4 +
 .../ARQ/Construct/q-construct-quad-syntax-4.arq |    9 +
 .../ARQ/Construct/q-construct-quad-syntax-5.arq |    9 +
 .../ARQ/Construct/q-construct-quad-syntax-6.arq |   14 +
 .../ARQ/Construct/q-construct-quad-syntax-7.arq |    7 +
 .../ARQ/Construct/q-construct-quad-syntax-8.arq |    9 +
 .../Construct/results-construct-quad-data-2.ttl |    2 +
 .../results-construct-quad-dataset.trig         |    4 +
 .../results-construct-quad-default-graph.ttl    |    3 +
 .../results-construct-quad-named-graph.trig     |    3 +
 .../results-construct-quad-short-form-1.trig    |    3 +
 .../results-construct-quad-short-form-2.ttl     |    2 +
 .../results-construct-quad-short-form-3.trig    |    4 +
 .../results-construct-quad-syntax-1.trig        |    2 +
 .../results-construct-quad-syntax-2.trig        |    0
 .../results-construct-quad-syntax-3.ttl         |    2 +
 .../results-construct-quad-syntax-4.trig        |    6 +
 .../results-construct-quad-syntax-5.trig        |    6 +
 .../results-construct-quad-syntax-6.trig        |    6 +
 .../results-construct-quad-syntax-7.ttl         |    2 +
 .../results-construct-quad-syntax-8.trig        |    0
 .../testing/ARQ/Syntax/Syntax-ARQ/manifest.ttl  |   69 +-
 .../Syntax-ARQ/syntax-quad-construct-01.arq     |    3 +
 .../Syntax-ARQ/syntax-quad-construct-02.arq     |    3 +
 .../Syntax-ARQ/syntax-quad-construct-03.arq     |    3 +
 .../Syntax-ARQ/syntax-quad-construct-04.arq     |    8 +
 .../Syntax-ARQ/syntax-quad-construct-05.arq     |    8 +
 .../Syntax-ARQ/syntax-quad-construct-06.arq     |   13 +
 .../Syntax-ARQ/syntax-quad-construct-07.arq     |    6 +
 .../Syntax-ARQ/syntax-quad-construct-08.arq     |    8 +
 .../Syntax-ARQ/syntax-quad-construct-09.arq     |    7 +
 .../Syntax-ARQ/syntax-quad-construct-10.arq     |    7 +
 .../Syntax-ARQ/syntax-quad-construct-11.arq     |    7 +
 .../Syntax-ARQ/syntax-quad-construct-12.arq     |    7 +
 .../Syntax-ARQ/syntax-quad-construct-bad-01.arq |    7 +
 jena-arq/testing/ARQ/Syntax/syn-arq.sh          |   82 +-
 76 files changed, 5274 insertions(+), 3886 deletions(-)
----------------------------------------------------------------------



[24/50] [abbrv] jena git commit: Just new HashMap<> is okay after Java 7.

Posted by an...@apache.org.
Just new HashMap<> is okay after Java 7.

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 82ef69b6563fd811193eaf74bfd436c47476b262
Parents: 68254a2
Author: confidencesun <co...@gmail.com>
Authored: Thu Jul 30 03:59:55 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Thu Jul 30 03:59:55 2015 +0800

----------------------------------------------------------------------
 .../main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/82ef69b6/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
index eac508e..bb2a01b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
@@ -82,7 +82,7 @@ class ARQParserBase
     protected ElementGroup createQueryPattern(Template t){
         ElementGroup elg = new ElementGroup();
         List<Quad> quads = t.getQuads();
-        HashMap<Node, BasicPattern> graphs = new HashMap<Node, BasicPattern>();
+        HashMap<Node, BasicPattern> graphs = new HashMap<>();
         for (Quad q: quads){
           BasicPattern bgp = graphs.get(q.getGraph());
           if (bgp == null){


[35/50] [abbrv] jena git commit: Add the execution tests for construct quad

Posted by an...@apache.org.
Add the execution tests for construct quad

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 3a67dbcd5207e5dc7c93c3adde91734cf5880d20
Parents: 6b695c5
Author: confidencesun <co...@gmail.com>
Authored: Mon Aug 10 19:21:52 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Mon Aug 10 19:21:52 2015 +0800

----------------------------------------------------------------------
 jena-arq/testing/ARQ/Construct/dft.ttl          |  2 +
 jena-arq/testing/ARQ/Construct/g1.ttl           |  3 ++
 jena-arq/testing/ARQ/Construct/g2.ttl           |  2 +
 jena-arq/testing/ARQ/Construct/manifest.ttl     | 56 ++++++++++++++++++++
 .../ARQ/Construct/q-construct-quad-dataset.arq  |  6 +++
 .../q-construct-quad-default-graph-1.arq        |  6 +++
 .../q-construct-quad-default-graph-2.arq        |  6 +++
 .../Construct/q-construct-quad-named-graph.arq  |  6 +++
 .../Construct/q-construct-quad-short-form-1.arq |  5 ++
 .../Construct/q-construct-quad-short-form-2.arq |  5 ++
 .../Construct/q-construct-quad-short-form-3.arq |  5 ++
 .../results-construct-quad-dataset.trig         |  4 ++
 .../results-construct-quad-default-graph.ttl    |  3 ++
 .../results-construct-quad-named-graph.trig     |  3 ++
 .../results-construct-quad-short-form-1.trig    |  3 ++
 .../results-construct-quad-short-form-2.ttl     |  2 +
 .../results-construct-quad-short-form-3.trig    |  4 ++
 17 files changed, 121 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/dft.ttl
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/dft.ttl b/jena-arq/testing/ARQ/Construct/dft.ttl
new file mode 100644
index 0000000..078013e
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/dft.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://example.org/ns#> .
+:s :p :o .

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/g1.ttl
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/g1.ttl b/jena-arq/testing/ARQ/Construct/g1.ttl
new file mode 100644
index 0000000..97ea06b
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/g1.ttl
@@ -0,0 +1,3 @@
+@prefix : <http://example.org/ns#> .
+:s1 :p :o1 .
+:a1 :b1 :c1 .

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/g2.ttl
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/g2.ttl b/jena-arq/testing/ARQ/Construct/g2.ttl
new file mode 100644
index 0000000..15bab83
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/g2.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://example.org/ns#> .
+:s2 :p :o2 .

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/manifest.ttl
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/manifest.ttl b/jena-arq/testing/ARQ/Construct/manifest.ttl
index 307aa65..09d5038 100644
--- a/jena-arq/testing/ARQ/Construct/manifest.ttl
+++ b/jena-arq/testing/ARQ/Construct/manifest.ttl
@@ -49,4 +49,60 @@
               qt:data   <reif-data-2.ttl> ] ;
         mf:result  <reif-result-2.rdf>
       ]
+      [  mf:name    "Construct Quad: Named Graph" ;
+         mf:action
+            [ qt:query     <q-construct-quad-named-graph.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-named-graph.trig>
+      ]
+      [  mf:name    "Construct Quad: Default Graph 1" ;
+         mf:action
+            [ qt:query     <q-construct-quad-default-graph-1.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-default-graph.ttl>
+      ]
+      [  mf:name    "Construct Quad: Default Graph 2" ;
+         mf:action
+            [ qt:query     <q-construct-quad-default-graph-2.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-default-graph.ttl>
+      ]
+      [  mf:name    "Construct Quad: Dataset" ;
+         mf:action
+            [ qt:query     <q-construct-quad-dataset.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-dataset.trig>
+      ]
+      [  mf:name    "Construct Quad: Short Form 1" ;
+         mf:action
+            [ qt:query     <q-construct-quad-short-form-1.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-short-form-1.trig>
+      ]
+      [  mf:name    "Construct Quad: Short Form 2" ;
+         mf:action
+            [ qt:query     <q-construct-quad-short-form-2.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-short-form-2.ttl>
+      ]
+      [  mf:name    "Construct Quad: Short Form 3" ;
+         mf:action
+            [ qt:query     <q-construct-quad-short-form-3.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-short-form-3.trig>
+      ]
     ).

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/q-construct-quad-dataset.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-dataset.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-dataset.arq
new file mode 100644
index 0000000..9b5d893
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-dataset.arq
@@ -0,0 +1,6 @@
+PREFIX :   <http://example.org/ns#>
+
+CONSTRUCT
+    { ?s :m ?o. GRAPH ?g { ?sg :m ?og  }  }
+WHERE
+    { ?s :p ?o. GRAPH ?g { ?sg :p ?og  }  }

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/q-construct-quad-default-graph-1.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-default-graph-1.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-default-graph-1.arq
new file mode 100644
index 0000000..c348c06
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-default-graph-1.arq
@@ -0,0 +1,6 @@
+PREFIX :   <http://example.org/ns#>
+
+CONSTRUCT
+    {  ?s :m ?o  }
+WHERE
+    { GRAPH ?g { ?s :p ?o  }  }

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/q-construct-quad-default-graph-2.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-default-graph-2.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-default-graph-2.arq
new file mode 100644
index 0000000..da4fe46
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-default-graph-2.arq
@@ -0,0 +1,6 @@
+PREFIX :   <http://example.org/ns#>
+
+CONSTRUCT
+    {  { ?s :m ?o } }
+WHERE
+    { GRAPH ?g { ?s :p ?o  }  }

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/q-construct-quad-named-graph.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-named-graph.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-named-graph.arq
new file mode 100644
index 0000000..7bebe3c
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-named-graph.arq
@@ -0,0 +1,6 @@
+PREFIX :   <http://example.org/ns#>
+
+CONSTRUCT
+    { GRAPH ?g { ?s :m ?o  }  }
+WHERE
+    { GRAPH ?g { ?s :p ?o  }  }

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/q-construct-quad-short-form-1.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-short-form-1.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-short-form-1.arq
new file mode 100644
index 0000000..d1300d8
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-short-form-1.arq
@@ -0,0 +1,5 @@
+PREFIX :   <http://example.org/ns#>
+
+CONSTRUCT
+WHERE
+    { GRAPH ?g { ?s :p ?o  }  }

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/q-construct-quad-short-form-2.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-short-form-2.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-short-form-2.arq
new file mode 100644
index 0000000..68a45fd
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-short-form-2.arq
@@ -0,0 +1,5 @@
+PREFIX :   <http://example.org/ns#>
+
+CONSTRUCT
+WHERE
+    { ?s :p ?o  }

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/q-construct-quad-short-form-3.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-short-form-3.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-short-form-3.arq
new file mode 100644
index 0000000..97ef15c
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-short-form-3.arq
@@ -0,0 +1,5 @@
+PREFIX :   <http://example.org/ns#>
+
+CONSTRUCT
+WHERE
+    { ?s :p ?o. GRAPH ?g { ?sg :p ?og  }  }

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/results-construct-quad-dataset.trig
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-dataset.trig b/jena-arq/testing/ARQ/Construct/results-construct-quad-dataset.trig
new file mode 100644
index 0000000..2ca2b27
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/results-construct-quad-dataset.trig
@@ -0,0 +1,4 @@
+@prefix : <http://example.org/ns#> .
+{:s :m :o}
+<g1.ttl> {:s1 :m :o1 }
+<g2.ttl> {:s2 :m :o2 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/results-construct-quad-default-graph.ttl
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-default-graph.ttl b/jena-arq/testing/ARQ/Construct/results-construct-quad-default-graph.ttl
new file mode 100644
index 0000000..f07c90c
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/results-construct-quad-default-graph.ttl
@@ -0,0 +1,3 @@
+@prefix : <http://example.org/ns#> .
+:s1 :m :o1 .
+:s2 :m :o2 .

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/results-construct-quad-named-graph.trig
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-named-graph.trig b/jena-arq/testing/ARQ/Construct/results-construct-quad-named-graph.trig
new file mode 100644
index 0000000..876197f
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/results-construct-quad-named-graph.trig
@@ -0,0 +1,3 @@
+@prefix : <http://example.org/ns#> .
+<g1.ttl> {:s1 :m :o1 }
+<g2.ttl> {:s2 :m :o2 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/results-construct-quad-short-form-1.trig
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-short-form-1.trig b/jena-arq/testing/ARQ/Construct/results-construct-quad-short-form-1.trig
new file mode 100644
index 0000000..f95c57b
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/results-construct-quad-short-form-1.trig
@@ -0,0 +1,3 @@
+@prefix : <http://example.org/ns#> .
+<g1.ttl> {:s1 :p :o1 }
+<g2.ttl> {:s2 :p :o2 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/results-construct-quad-short-form-2.ttl
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-short-form-2.ttl b/jena-arq/testing/ARQ/Construct/results-construct-quad-short-form-2.ttl
new file mode 100644
index 0000000..9a434a5
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/results-construct-quad-short-form-2.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://example.org/ns#> .
+:s :p :o .
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/3a67dbcd/jena-arq/testing/ARQ/Construct/results-construct-quad-short-form-3.trig
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-short-form-3.trig b/jena-arq/testing/ARQ/Construct/results-construct-quad-short-form-3.trig
new file mode 100644
index 0000000..ab87333
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/results-construct-quad-short-form-3.trig
@@ -0,0 +1,4 @@
+@prefix : <http://example.org/ns#> .
+{:s :p :o}
+<g1.ttl> {:s1 :p :o1 }
+<g2.ttl> {:s2 :p :o2 }
\ No newline at end of file


[02/50] [abbrv] jena git commit: create new Template for SPARQL_11

Posted by an...@apache.org.
http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/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 11bdbb0..1a90eae 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=8f945f6081b6c05a3722e27c60c90cda (do not edit this line) */
+/* JavaCC - OriginalChecksum=40dd5a50628172020d125efba41c4b63 (do not edit this line) */

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java
index d3049f7..c26f58d 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java
@@ -19,12 +19,50 @@
 
 package org.apache.jena.sparql.lang.sparql_10 ;
 
-import org.apache.jena.graph.* ;
-import org.apache.jena.query.* ;
-import org.apache.jena.sparql.core.Var ;
-import org.apache.jena.sparql.expr.* ;
-import org.apache.jena.sparql.path.* ;
-import org.apache.jena.sparql.syntax.* ;
+import org.apache.jena.graph.Node;
+import org.apache.jena.query.Query;
+import org.apache.jena.sparql.core.Var;
+import org.apache.jena.sparql.expr.E_Add;
+import org.apache.jena.sparql.expr.E_Bound;
+import org.apache.jena.sparql.expr.E_Datatype;
+import org.apache.jena.sparql.expr.E_Divide;
+import org.apache.jena.sparql.expr.E_Equals;
+import org.apache.jena.sparql.expr.E_Function;
+import org.apache.jena.sparql.expr.E_GreaterThan;
+import org.apache.jena.sparql.expr.E_GreaterThanOrEqual;
+import org.apache.jena.sparql.expr.E_IsBlank;
+import org.apache.jena.sparql.expr.E_IsIRI;
+import org.apache.jena.sparql.expr.E_IsLiteral;
+import org.apache.jena.sparql.expr.E_IsURI;
+import org.apache.jena.sparql.expr.E_Lang;
+import org.apache.jena.sparql.expr.E_LangMatches;
+import org.apache.jena.sparql.expr.E_LessThan;
+import org.apache.jena.sparql.expr.E_LessThanOrEqual;
+import org.apache.jena.sparql.expr.E_LogicalAnd;
+import org.apache.jena.sparql.expr.E_LogicalNot;
+import org.apache.jena.sparql.expr.E_LogicalOr;
+import org.apache.jena.sparql.expr.E_Multiply;
+import org.apache.jena.sparql.expr.E_NotEquals;
+import org.apache.jena.sparql.expr.E_Regex;
+import org.apache.jena.sparql.expr.E_SameTerm;
+import org.apache.jena.sparql.expr.E_Str;
+import org.apache.jena.sparql.expr.E_Subtract;
+import org.apache.jena.sparql.expr.E_UnaryMinus;
+import org.apache.jena.sparql.expr.E_UnaryPlus;
+import org.apache.jena.sparql.expr.Expr;
+import org.apache.jena.sparql.expr.ExprList;
+import org.apache.jena.sparql.expr.ExprVar;
+import org.apache.jena.sparql.modify.request.QuadAcc;
+import org.apache.jena.sparql.path.Path;
+import org.apache.jena.sparql.syntax.Element;
+import org.apache.jena.sparql.syntax.ElementFilter;
+import org.apache.jena.sparql.syntax.ElementGroup;
+import org.apache.jena.sparql.syntax.ElementNamedGraph;
+import org.apache.jena.sparql.syntax.ElementOptional;
+import org.apache.jena.sparql.syntax.ElementTriplesBlock;
+import org.apache.jena.sparql.syntax.ElementUnion;
+import org.apache.jena.sparql.syntax.Template;
+import org.apache.jena.sparql.syntax.TripleCollector;
 
 
 
@@ -879,8 +917,8 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
 
 // -------- Construct patterns
   final public Template ConstructTemplate() throws ParseException {
-                                 TripleCollectorBGP acc = new TripleCollectorBGP();
-                                 Template t = new Template(acc.getBGP()) ;
+                                 QuadAcc acc = new QuadAcc();
+                                 Template t = new Template(acc) ;
       setInConstructTemplate(true) ;
     jj_consume_token(LBRACE);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -921,7 +959,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
     throw new Error("Missing return statement in function");
   }
 
-  final public void ConstructTriples(TripleCollectorMark acc) throws ParseException {
+  final public void ConstructTriples(TripleCollector acc) throws ParseException {
     TriplesSameSubject(acc);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case DOT:
@@ -967,7 +1005,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
 
 // -------- Triple lists with property and object lists
 // -------- Without paths: entry: TriplesSameSubject
-  final public void TriplesSameSubject(TripleCollectorMark acc) throws ParseException {
+  final public void TriplesSameSubject(TripleCollector acc) throws ParseException {
                                                  Node s ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case IRIref:
@@ -1009,7 +1047,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
     }
   }
 
-  final public void PropertyListNotEmpty(Node s, TripleCollectorMark acc) throws ParseException {
+  final public void PropertyListNotEmpty(Node s, TripleCollector acc) throws ParseException {
       Node p = null ;
     p = Verb();
     ObjectList(s, p, null, acc);
@@ -1041,7 +1079,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
     }
   }
 
-  final public void PropertyList(Node s, TripleCollectorMark acc) throws ParseException {
+  final public void PropertyList(Node s, TripleCollector acc) throws ParseException {
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case IRIref:
     case PNAME_NS:
@@ -1057,7 +1095,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
     }
   }
 
-  final public void ObjectList(Node s, Node p, Path path, TripleCollectorMark acc) throws ParseException {
+  final public void ObjectList(Node s, Node p, Path path, TripleCollector acc) throws ParseException {
                                                                    Node o ;
     Object(s, p, path, acc);
     label_14:
@@ -1075,11 +1113,10 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
     }
   }
 
-  final public void Object(Node s, Node p, Path path, TripleCollectorMark acc) throws ParseException {
+  final public void Object(Node s, Node p, Path path, TripleCollector acc) throws ParseException {
                                                                Node o ;
-      int mark = acc.mark() ;
     o = GraphNode(acc);
-    insert(acc, mark, s, p, path, o) ;
+    insert(acc, s, p, path, o) ;
   }
 
   final public Node Verb() throws ParseException {
@@ -1112,7 +1149,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
 
 // Anything that can stand in a node slot and which is
 // a number of triples
-  final public Node TriplesNode(TripleCollectorMark acc) throws ParseException {
+  final public Node TriplesNode(TripleCollector acc) throws ParseException {
                                           Node n ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case LPAREN:
@@ -1131,7 +1168,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
     throw new Error("Missing return statement in function");
   }
 
-  final public Node BlankNodePropertyList(TripleCollectorMark acc) throws ParseException {
+  final public Node BlankNodePropertyList(TripleCollector acc) throws ParseException {
                                                     Token t ;
     t = jj_consume_token(LBRACKET);
       Node n = createBNode(t.beginLine, t.beginColumn) ;
@@ -1142,7 +1179,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
   }
 
 // ------- RDF collections
-  final public Node Collection(TripleCollectorMark acc) throws ParseException {
+  final public Node Collection(TripleCollector acc) throws ParseException {
       Node listHead = nRDFnil ; Node lastCell = null ; int mark ; Node n ; Token t ;
     t = jj_consume_token(LPAREN);
     label_15:
@@ -1152,9 +1189,8 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
          listHead = cell ;
       if ( lastCell != null )
         insert(acc, lastCell, nRDFrest, cell) ;
-      mark = acc.mark() ;
       n = GraphNode(acc);
-      insert(acc, mark, cell, nRDFfirst, n) ;
+      insert(acc, cell, nRDFfirst, n) ;
       lastCell = cell ;
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case IRIref:
@@ -1197,7 +1233,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
   }
 
 // -------- Nodes in a graph pattern or template
-  final public Node GraphNode(TripleCollectorMark acc) throws ParseException {
+  final public Node GraphNode(TripleCollector acc) throws ParseException {
                                         Node n ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case IRIref:

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/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 dd87d27..c888a7d 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=d63a793bd614cb11b1bb35c273b7864c (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=a46b9601f1eb7fc99070860ae4df29a9 (do not edit this line) */

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/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 2c32e0a..60ac059 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=25807f74c6efb1bcbd3321a6af1d8604 (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=7419551656da229f9adc90489da6fc86 (do not edit this line) */

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/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..296cfc1 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
@@ -212,7 +212,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
 
   final public void ConstructQuery() throws ParseException {
                           Template t ;
-                          TripleCollectorBGP acc = new TripleCollectorBGP() ;
+                          QuadAcc acc = new QuadAcc() ;
     jj_consume_token(CONSTRUCT);
      getQuery().setQueryConstructType() ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -284,7 +284,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
       }
       jj_consume_token(RBRACE);
       SolutionModifier();
-      t = new Template(acc.getBGP()) ;
+      t = new Template(acc) ;
       getQuery().setConstructTemplate(t) ;
       ElementPathBlock epb = new ElementPathBlock(acc.getBGP()) ;
       ElementGroup elg = new ElementGroup() ;
@@ -2353,8 +2353,8 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
   }
 
   final public Template ConstructTemplate() throws ParseException {
-                                 TripleCollectorBGP acc = new TripleCollectorBGP();
-                                 Template t = new Template(acc.getBGP()) ;
+                                 QuadAcc acc = new QuadAcc() ;
+                                 Template t = new Template(acc) ;
       setInConstructTemplate(true) ;
     jj_consume_token(LBRACE);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/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 56bcfbd..b427b22 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/2d09a7df/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 994d8dc..c4514db 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=14a2dd2c56b347f7b769eacf6b50c9b9 (do not edit this line) */
+/* JavaCC - OriginalChecksum=2e111759cc5d23b5f328692361ef7edf (do not edit this line) */

http://git-wip-us.apache.org/repos/asf/jena/blob/2d09a7df/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 023874f..c3f4585 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=0c993d195e89c16550efa6afecdeb1ab (do not edit this line) */
+/* JavaCC - OriginalChecksum=2748ab83006aee357b29341477722d1b (do not edit this line) */


[40/50] [abbrv] jena git commit: Add tests of duplicated quads in construct quad

Posted by an...@apache.org.
Add tests of duplicated quads in construct quad

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 54e48f3e8e3734d495bc399a2133eb9e25f24491
Parents: 03a321f
Author: confidencesun <co...@gmail.com>
Authored: Fri Aug 14 18:53:01 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Fri Aug 14 18:53:01 2015 +0800

----------------------------------------------------------------------
 .../org/apache/jena/sparql/api/TestAPI.java     | 36 +++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/54e48f3e/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java b/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
index 5393cda..ecc576a 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
@@ -369,7 +369,7 @@ public class TestAPI extends BaseTest
         DatasetGraph expected = DatasetGraphFactory.createMem();
         expected.add(g1.asNode(), s.asNode(), p.asNode(), o.asNode());
         
-        assertEquals(1, count); // 3 duplicated quads
+        assertEquals(1, count); 
         assertTrue(IsoMatcher.isomorphic( expected, result) );
         
     }
@@ -414,6 +414,40 @@ public class TestAPI extends BaseTest
         assertTrue(dft.isIsomorphicWith(result));
     }
     
+    
+    // Allow duplicated quads in execConstructQuads()
+    @Test public void testARQConstructQuad_Duplicate_1() {
+        String queryString = "CONSTRUCT { GRAPH ?g1 {?s ?p ?o} } WHERE { ?s ?p ?o. GRAPH ?g1 {?s1 ?p1 ?o1} }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        
+        Iterator<Quad> ts = qExec.execConstructQuads();
+        long count = 0;
+        Quad expected = Quad.create( g1.asNode(), s.asNode(), p.asNode(), o.asNode());
+        while (ts.hasNext()) {
+            count++;
+            Quad qd = ts.next();
+            assertEquals(expected, qd);
+        }
+        assertEquals(3, count); // 3 duplicated quads
+    }
+    
+    // No duplicated quads in execConstructDataset()
+    @Test public void testARQConstructQuad_Duplicate_2() {
+        String queryString = "CONSTRUCT { GRAPH ?g1 {?s ?p ?o} } WHERE { ?s ?p ?o. GRAPH ?g1 {?s1 ?p1 ?o1} }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        
+        Dataset result = qExec.execConstructDataset();
+
+        DatasetGraph expected = DatasetGraphFactory.createMem();
+        expected.add(g1.asNode(), s.asNode(), p.asNode(), o.asNode());
+        assertEquals(1, result.asDatasetGraph().size());
+        assertTrue(IsoMatcher.isomorphic( expected, result.asDatasetGraph()) );
+    }
+    
     private QueryExecution makeQExec(String queryString)
     {
         Query q = QueryFactory.create(queryString) ;


[17/50] [abbrv] jena git commit: 1) remove all @author; 2) remove unnecesary blank lines

Posted by an...@apache.org.
1) remove all @author; 2) remove unnecesary blank lines

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 5b73280fc9ecbfe8526230031080a4bb6c8cbec3
Parents: 6e4379e
Author: confidencesun <co...@gmail.com>
Authored: Fri Jul 24 18:39:48 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Fri Jul 24 18:39:48 2015 +0800

----------------------------------------------------------------------
 .../java/org/apache/jena/query/QueryExecution.java     | 13 -------------
 1 file changed, 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/5b73280f/jena-arq/src/main/java/org/apache/jena/query/QueryExecution.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/query/QueryExecution.java b/jena-arq/src/main/java/org/apache/jena/query/QueryExecution.java
index affd46c..2707675 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/QueryExecution.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/QueryExecution.java
@@ -27,16 +27,6 @@ import org.apache.jena.sparql.core.Quad;
 import org.apache.jena.sparql.util.Context;
 
 /** A interface for a single execution of a query. */
-
-
-/**
- * @author Administrator
- *
- */
-/**
- * @author Administrator
- *
- */
 public interface QueryExecution extends AutoCloseable 
 {
     /** Set the initial association of variables and values.
@@ -111,19 +101,16 @@ public interface QueryExecution extends AutoCloseable
      */
     public Iterator<Triple> execConstructTriples();
     
-    
     /**
      * Similar to execConstructTriples(), except that constructing {@link Quad}.
      */
     public Iterator<Quad> execConstructQuads();
     
-    
     /**
      * Similar to execConstructTriples(), except that constructing {@link Dataset}.
      */
     public Dataset execConstructDataset();
 
-
     /** Execute a DESCRIBE query */
     public Model execDescribe();
 


[33/50] [abbrv] jena git commit: Add test support in QueryTest for Construct Quad: 1) define new type of SPARQLResult for Dataset; 2) define new ResultsFormat of Trig for Dataset results;

Posted by an...@apache.org.
Add test support in QueryTest for Construct Quad: 1) define new type of
SPARQLResult for Dataset; 2) define new ResultsFormat of Trig for
Dataset results; 

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 6b695c59166a25a999840873bfb0af1c4198b202
Parents: 50a65c3
Author: confidencesun <co...@gmail.com>
Authored: Mon Aug 10 16:59:20 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Mon Aug 10 16:59:20 2015 +0800

----------------------------------------------------------------------
 .../main/java/org/apache/jena/query/Query.java  |   3 +-
 .../jena/sparql/resultset/ResultsFormat.java    |  13 +++
 .../jena/sparql/resultset/SPARQLResult.java     |  33 +++++-
 .../org/apache/jena/sparql/syntax/Template.java |  11 +-
 .../org/apache/jena/sparql/junit/QueryTest.java | 117 ++++++++++++++-----
 .../org/apache/jena/sparql/junit/TestItem.java  |  45 ++++---
 6 files changed, 165 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/6b695c59/jena-arq/src/main/java/org/apache/jena/query/Query.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/query/Query.java b/jena-arq/src/main/java/org/apache/jena/query/Query.java
index 914e626..f0d6233 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/Query.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/Query.java
@@ -146,7 +146,8 @@ public class Query extends Prologue implements Cloneable, Printable
     public boolean isAskType()                  { return queryType == QueryTypeAsk ; }
 
     public boolean isUnknownType()              { return queryType == QueryTypeUnknown ; }
-
+    
+    public boolean isConstructQuad()            { return isConstructType() && constructTemplate.containsRealQuad() ; }
     // It was a mistake to extend Prologue ... but what is done is done.
     public Prologue getPrologue()               { return this ; }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/6b695c59/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultsFormat.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultsFormat.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultsFormat.java
index 2a103cf..c23cfad 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultsFormat.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultsFormat.java
@@ -63,7 +63,9 @@ public class ResultsFormat extends Symbol
     static public ResultsFormat FMT_RDF_TTL      = new ResultsFormat(contentTypeTurtle) ;
     static public ResultsFormat FMT_RDF_TURTLE   = new ResultsFormat(contentTypeTurtle) ;
     static public ResultsFormat FMT_RDF_NT       = new ResultsFormat(contentTypeNTriples) ;
+    static public ResultsFormat FMT_TRIG         = new ResultsFormat(contentTypeTriG) ;
     static public ResultsFormat FMT_UNKNOWN      = new ResultsFormat("unknown") ;
+    
     // ---- Compatibility
     
     // Common names to symbol (used by arq.rset)
@@ -95,6 +97,8 @@ public class ResultsFormat extends Symbol
         names.put("graph",       FMT_RDF_TTL) ;
         names.put("nt",          FMT_RDF_NT) ;
         names.put("n-triples",   FMT_RDF_NT) ;
+        
+        names.put("trig",        FMT_TRIG) ;
 
     }
 
@@ -112,6 +116,11 @@ public class ResultsFormat extends Symbol
         return false ;
     }
     
+    public static boolean isDatasetSyntax(ResultsFormat fmt){
+    	if ( FMT_TRIG.equals(fmt) ) return true ;
+    	return false;
+    }
+    
     public static ResultsFormat guessSyntax(String url, ResultsFormat defaultFormat)
     {
         // -- XML
@@ -153,6 +162,10 @@ public class ResultsFormat extends Symbol
         if ( url.endsWith(".tsv") )
             return FMT_RS_TSV ;
         
+        // Trig for Dataset
+        if ( url.endsWith(".trig") )
+            return FMT_TRIG ;
+        
         return defaultFormat ;
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/6b695c59/jena-arq/src/main/java/org/apache/jena/sparql/resultset/SPARQLResult.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/SPARQLResult.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/SPARQLResult.java
index 1506e44..bbc5c55 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/SPARQLResult.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/SPARQLResult.java
@@ -18,12 +18,13 @@
 
 package org.apache.jena.sparql.resultset;
 
-import org.apache.jena.atlas.logging.Log ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.query.ResultSet ;
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.sparql.core.Var ;
-import org.apache.jena.sparql.engine.binding.BindingMap ;
+import org.apache.jena.atlas.logging.Log;
+import org.apache.jena.graph.Node;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.query.ResultSet;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.sparql.core.Var;
+import org.apache.jena.sparql.engine.binding.BindingMap;
 
 /**
  * The class "ResultSet" is reserved for the SELECT result format.
@@ -37,6 +38,7 @@ public class SPARQLResult
     private ResultSet resultSet = null ;
     private Boolean booleanResult = null ;
     private Model model = null ;
+    private Dataset dataset = null ;
     
     // Delayed choice of result type.
     protected SPARQLResult() {}
@@ -44,6 +46,7 @@ public class SPARQLResult
     public SPARQLResult(Model model)            { set(model) ; }
     public SPARQLResult(ResultSet resultSet)    { set(resultSet) ;}
     public SPARQLResult(boolean booleanResult)  { set(booleanResult) ; }
+    public SPARQLResult(Dataset dataset)        { set(dataset) ; }
     
     public boolean isResultSet()
     {
@@ -61,6 +64,13 @@ public class SPARQLResult
             throw new ResultSetException("Not set") ;
         return model != null ;
     }
+    
+    public boolean isDataset()
+    {
+        if ( ! hasBeenSet )
+            throw new ResultSetException("Not set") ;
+        return dataset != null ;
+    }
 
     public boolean isBoolean()
     {
@@ -96,6 +106,14 @@ public class SPARQLResult
         return model ;
     }
     
+    public Dataset getDataset() { 
+        if ( ! hasBeenSet )
+            throw new ResultSetException("Not set") ;
+        if ( ! isDataset() )
+            throw new ResultSetException("Not a dataset result") ;
+        return dataset ;
+    }
+    
     public boolean isHasBeenSet() { return hasBeenSet; }
     
     protected void set(ResultSet rs)
@@ -107,6 +125,9 @@ public class SPARQLResult
     protected void set(Model m)
     { model = m ; hasBeenSet = true ; }
     
+    protected void set(Dataset d)
+    { dataset = d ; hasBeenSet = true ; }
+    
     protected void set(boolean r)
     { set (new Boolean(r)) ; } 
     

http://git-wip-us.apache.org/repos/asf/jena/blob/6b695c59/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
index 3955866..a6e74d8 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
@@ -24,7 +24,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.jena.ext.com.google.common.collect.Multimap;
 import org.apache.jena.graph.Node;
 import org.apache.jena.graph.Triple;
 import org.apache.jena.sparql.core.BasicPattern;
@@ -65,6 +64,16 @@ public class Template
 //    public void addTriplePath(int index, TriplePath path)
 //    { throw new ARQException("Triples-only collector") ; }
 
+    
+    public boolean containsRealQuad(){
+    	for(Quad quad : this.getQuads()){
+    		if ( ! Quad.defaultGraphNodeGenerated.equals( quad.getGraph())){
+    			return true;
+    		}
+    	}
+    	return false;
+    }
+    
     public BasicPattern getBGP()
     { 
     	if (this.bgp != null){

http://git-wip-us.apache.org/repos/asf/jena/blob/6b695c59/jena-arq/src/test/java/org/apache/jena/sparql/junit/QueryTest.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/junit/QueryTest.java b/jena-arq/src/test/java/org/apache/jena/sparql/junit/QueryTest.java
index 89844e1..519316f 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/junit/QueryTest.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/junit/QueryTest.java
@@ -18,35 +18,55 @@
 
 package org.apache.jena.sparql.junit;
 
-import java.io.IOException ;
-import java.io.PrintStream ;
-import java.io.PrintWriter ;
-import java.util.* ;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
-import org.apache.jena.atlas.logging.Log ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.graph.NodeFactory ;
-import org.apache.jena.query.* ;
-import org.apache.jena.rdf.model.* ;
-import org.apache.jena.riot.checker.CheckerLiterals ;
-import org.apache.jena.shared.JenaException ;
-import org.apache.jena.sparql.SystemARQ ;
-import org.apache.jena.sparql.core.Var ;
-import org.apache.jena.sparql.engine.QueryIterator ;
-import org.apache.jena.sparql.engine.ResultSetStream ;
-import org.apache.jena.sparql.engine.binding.Binding ;
-import org.apache.jena.sparql.engine.binding.BindingFactory ;
-import org.apache.jena.sparql.engine.binding.BindingMap ;
-import org.apache.jena.sparql.engine.iterator.QueryIterPlainWrapper ;
-import org.apache.jena.sparql.expr.nodevalue.NodeFunctions ;
-import org.apache.jena.sparql.resultset.RDFOutput ;
-import org.apache.jena.sparql.resultset.ResultSetCompare ;
-import org.apache.jena.sparql.resultset.SPARQLResult ;
-import org.apache.jena.sparql.util.DatasetUtils ;
-import org.apache.jena.sparql.vocabulary.ResultSetGraphVocab ;
-import org.apache.jena.util.FileUtils ;
-import org.apache.jena.util.junit.TestUtils ;
-import org.apache.jena.vocabulary.RDF ;
+import org.apache.jena.atlas.logging.Log;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.query.Query;
+import org.apache.jena.query.QueryException;
+import org.apache.jena.query.QueryExecution;
+import org.apache.jena.query.QueryExecutionFactory;
+import org.apache.jena.query.ResultSet;
+import org.apache.jena.query.ResultSetFactory;
+import org.apache.jena.query.ResultSetFormatter;
+import org.apache.jena.query.ResultSetRewindable;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.ModelFactory;
+import org.apache.jena.rdf.model.Property;
+import org.apache.jena.rdf.model.RDFNode;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.rdf.model.Statement;
+import org.apache.jena.rdf.model.StmtIterator;
+import org.apache.jena.riot.Lang;
+import org.apache.jena.riot.RDFDataMgr;
+import org.apache.jena.riot.checker.CheckerLiterals;
+import org.apache.jena.shared.JenaException;
+import org.apache.jena.sparql.SystemARQ;
+import org.apache.jena.sparql.core.Var;
+import org.apache.jena.sparql.engine.QueryIterator;
+import org.apache.jena.sparql.engine.ResultSetStream;
+import org.apache.jena.sparql.engine.binding.Binding;
+import org.apache.jena.sparql.engine.binding.BindingFactory;
+import org.apache.jena.sparql.engine.binding.BindingMap;
+import org.apache.jena.sparql.engine.iterator.QueryIterPlainWrapper;
+import org.apache.jena.sparql.expr.nodevalue.NodeFunctions;
+import org.apache.jena.sparql.resultset.RDFOutput;
+import org.apache.jena.sparql.resultset.ResultSetCompare;
+import org.apache.jena.sparql.resultset.SPARQLResult;
+import org.apache.jena.sparql.util.DatasetUtils;
+import org.apache.jena.sparql.util.IsoMatcher;
+import org.apache.jena.sparql.vocabulary.ResultSetGraphVocab;
+import org.apache.jena.util.FileUtils;
+import org.apache.jena.util.junit.TestUtils;
+import org.apache.jena.vocabulary.RDF;
 
 public class QueryTest extends EarlTestCase
 {
@@ -348,8 +368,13 @@ public class QueryTest extends EarlTestCase
    void runTestConstruct(Query query, QueryExecution qe)
     {
         // Do the query!
-        Model resultsActual = qe.execConstruct() ;
-        compareGraphResults(resultsActual, query) ;
+	    if ( query.isConstructQuad() ){
+	    	Dataset resultActual = qe.execConstructDataset();
+	    	compareDatasetResults(resultActual, query) ;
+	    } else {
+	    	Model resultsActual = qe.execConstruct() ;
+	    	compareGraphResults(resultsActual, query) ;
+	    }
     }
    
    private void compareGraphResults(Model resultsActual, Query query)
@@ -373,6 +398,28 @@ public class QueryTest extends EarlTestCase
             }
         }
     }
+   
+   private void compareDatasetResults(Dataset resultsActual, Query query)
+   {
+        if ( results != null )
+        {
+            try {
+                if ( ! results.isDataset() )
+                    fail("Expected results are not a graph: "+testItem.getName()) ;
+                    
+                Dataset resultsExpected = results.getDataset() ;
+                if ( ! IsoMatcher.isomorphic( resultsExpected.asDatasetGraph(),resultsActual.asDatasetGraph() ) )
+                {
+                    printFailedDatasetTest(query, resultsExpected, resultsActual) ;
+                    fail("Results do not match: "+testItem.getName()) ;
+                }
+            } catch (Exception ex)
+            {
+                String typeName = (query.isConstructType()?"construct":"describe") ;
+                fail("Exception in result testing ("+typeName+"): "+ex) ;
+            }
+        }
+    }
     
     void runTestDescribe(Query query, QueryExecution qe)
     {
@@ -448,6 +495,16 @@ public class QueryTest extends EarlTestCase
         out.println() ;
     }
     
+    void printFailedDatasetTest(Query query, Dataset expected, Dataset results)
+    {
+    	System.out.println("=======================================") ;
+    	System.out.println("Failure: "+description()) ;
+    	RDFDataMgr.write(System.out, results, Lang.TRIG);
+    	System.out.println("---------------------------------------") ;
+    	RDFDataMgr.write(System.out, expected, Lang.TRIG);
+        System.out.println() ;
+    }
+    
     @Override
     public String toString()
     { 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b695c59/jena-arq/src/test/java/org/apache/jena/sparql/junit/TestItem.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/junit/TestItem.java b/jena-arq/src/test/java/org/apache/jena/sparql/junit/TestItem.java
index b6bcf05..c6a4c40 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/junit/TestItem.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/junit/TestItem.java
@@ -18,25 +18,27 @@
 
 package org.apache.jena.sparql.junit ;
 
-import java.util.ArrayList ;
-import java.util.List ;
-
-import org.apache.jena.query.ResultSetFactory ;
-import org.apache.jena.query.Syntax ;
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.rdf.model.Resource ;
-import org.apache.jena.rdf.model.Statement ;
-import org.apache.jena.sparql.resultset.ResultsFormat ;
-import org.apache.jena.sparql.resultset.SPARQLResult ;
-import org.apache.jena.sparql.vocabulary.TestManifest ;
-import org.apache.jena.sparql.vocabulary.TestManifestX ;
-import org.apache.jena.sparql.vocabulary.VocabTestQuery ;
-import org.apache.jena.util.FileManager ;
-import org.apache.jena.util.iterator.ClosableIterator ;
-import org.apache.jena.util.junit.TestException ;
-import org.apache.jena.util.junit.TestUtils ;
-import org.apache.jena.vocabulary.RDF ;
-import org.apache.jena.vocabulary.RDFS ;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.jena.query.Dataset;
+import org.apache.jena.query.ResultSetFactory;
+import org.apache.jena.query.Syntax;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.rdf.model.Statement;
+import org.apache.jena.riot.RDFDataMgr;
+import org.apache.jena.sparql.resultset.ResultsFormat;
+import org.apache.jena.sparql.resultset.SPARQLResult;
+import org.apache.jena.sparql.vocabulary.TestManifest;
+import org.apache.jena.sparql.vocabulary.TestManifestX;
+import org.apache.jena.sparql.vocabulary.VocabTestQuery;
+import org.apache.jena.util.FileManager;
+import org.apache.jena.util.iterator.ClosableIterator;
+import org.apache.jena.util.junit.TestException;
+import org.apache.jena.util.junit.TestUtils;
+import org.apache.jena.vocabulary.RDF;
+import org.apache.jena.vocabulary.RDFS;
 
 /**
  * Wrapper class for individual test items. Assumes it is a query test item,
@@ -151,6 +153,11 @@ public class TestItem
             Model m = FileManager.get().loadModel(resultFile) ;
             return new SPARQLResult(m) ;
         }
+        
+        if ( ResultsFormat.isDatasetSyntax(format) ) {
+            Dataset d = RDFDataMgr.loadDataset(resultFile) ;
+            return new SPARQLResult(d) ;
+        }
 
         // Attempt to handle as a resulset or boolean result.s
         SPARQLResult x = ResultSetFactory.result(resultFile) ;


[22/50] [abbrv] jena git commit: Merge pull request #11 from confidencesun/JENA-491

Posted by an...@apache.org.
Merge pull request #11 from confidencesun/JENA-491

pull Jena 491

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 9920b52b5614e48dca4bf5f96bc493b466a991bd
Parents: 1ce0497 e398c4e
Author: confidencesun <co...@gmail.com>
Authored: Tue Jul 28 16:41:24 2015 -0300
Committer: confidencesun <co...@gmail.com>
Committed: Tue Jul 28 16:41:24 2015 -0300

----------------------------------------------------------------------
 jena-arq/Grammar/arq.jj                         |  3 +-
 jena-arq/Grammar/master.jj                      |  5 +-
 .../constructquads/ExampleConstructQuads.java   |  6 ++-
 .../org/apache/jena/query/QueryExecution.java   | 13 -----
 .../apache/jena/sparql/lang/arq/ARQParser.java  | 51 ++++++++++----------
 .../sparql/lang/arq/ARQParserTokenManager.java  |  1 +
 6 files changed, 37 insertions(+), 42 deletions(-)
----------------------------------------------------------------------



[25/50] [abbrv] jena git commit: Given Java 8 iterator loop can use forEachRemaining

Posted by an...@apache.org.
Given Java 8 iterator loop can use forEachRemaining

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 4d8fd79008953b5f4b02021c61550f375cc0082a
Parents: 82ef69b
Author: confidencesun <co...@gmail.com>
Authored: Thu Jul 30 10:12:31 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Thu Jul 30 10:12:31 2015 +0800

----------------------------------------------------------------------
 .../org/apache/jena/sparql/engine/QueryExecutionBase.java    | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/4d8fd790/jena-arq/src/main/java/org/apache/jena/sparql/engine/QueryExecutionBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/QueryExecutionBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/QueryExecutionBase.java
index af66134..9a98b71 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/QueryExecutionBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/QueryExecutionBase.java
@@ -285,13 +285,7 @@ public class QueryExecutionBase implements QueryExecution
         checkNotClosed() ;
         try
         {
-            Iterator<Quad> it = execConstructQuads();
-                        
-            while (it.hasNext())
-            {
-                Quad q = it.next();
-                graph.add(q);
-            }
+        	execConstructQuads().forEachRemaining(graph::add);
         }
         finally
         {


[43/50] [abbrv] jena git commit: Add the execution test files from syntax tests

Posted by an...@apache.org.
Add the execution test files from syntax tests

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 6f397404e69d9da10ea456c977d44ef52b899968
Parents: fcbbf9b
Author: confidencesun <co...@gmail.com>
Authored: Sat Aug 15 16:31:54 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Sat Aug 15 16:31:54 2015 +0800

----------------------------------------------------------------------
 .../org/apache/jena/sparql/api/TestAPI.java     | 11 ++++
 jena-arq/testing/ARQ/Construct/manifest.ttl     | 64 ++++++++++++++++++++
 .../ARQ/Construct/q-construct-quad-syntax-1.arq |  3 +
 .../ARQ/Construct/q-construct-quad-syntax-2.arq |  3 +
 .../ARQ/Construct/q-construct-quad-syntax-3.arq |  4 ++
 .../ARQ/Construct/q-construct-quad-syntax-4.arq |  9 +++
 .../ARQ/Construct/q-construct-quad-syntax-5.arq |  9 +++
 .../ARQ/Construct/q-construct-quad-syntax-6.arq | 14 +++++
 .../ARQ/Construct/q-construct-quad-syntax-7.arq |  7 +++
 .../ARQ/Construct/q-construct-quad-syntax-8.arq |  9 +++
 .../Construct/results-construct-quad-data-2.ttl |  2 +
 .../results-construct-quad-syntax-1.trig        |  2 +
 .../results-construct-quad-syntax-2.trig        |  0
 .../results-construct-quad-syntax-3.ttl         |  2 +
 .../results-construct-quad-syntax-4.trig        |  6 ++
 .../results-construct-quad-syntax-5.trig        |  6 ++
 .../results-construct-quad-syntax-6.trig        |  6 ++
 .../results-construct-quad-syntax-7.ttl         |  2 +
 .../results-construct-quad-syntax-8.trig        |  0
 19 files changed, 159 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java b/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
index 5630804..6b6d203 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
@@ -519,6 +519,17 @@ public class TestAPI extends BaseTest
         assertTrue(IsoMatcher.isomorphic( expected.asDatasetGraph(), result.asDatasetGraph()) );
     }
     
+    // Test construct triple and quad short form:
+    @Test public void testARQConstructQuad_ShortForm_3() {
+        String queryString = "CONSTRUCT WHERE { ?s ?p ?o. GRAPH ?g1 {?s1 ?p1 ?o1} }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        Dataset result = qExec.execConstructDataset();
+        
+        assertTrue(IsoMatcher.isomorphic( d.asDatasetGraph(), result.asDatasetGraph()) );
+    }
+    
     // Test bad construct quad short form:
     @Test public void testARQConstructQuad_ShortForm_bad() {
         String queryString = "CONSTRUCT WHERE { GRAPH ?g {?s ?p ?o. FILTER isIRI(?o)}  }";

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/manifest.ttl
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/manifest.ttl b/jena-arq/testing/ARQ/Construct/manifest.ttl
index 09d5038..7e9e660 100644
--- a/jena-arq/testing/ARQ/Construct/manifest.ttl
+++ b/jena-arq/testing/ARQ/Construct/manifest.ttl
@@ -105,4 +105,68 @@
               qt:graphData <g2.ttl> ] ;
         mf:result  <results-construct-quad-short-form-3.trig>
       ]
+      [  mf:name    "Construct Quad: Syntax 1" ;
+         mf:action
+            [ qt:query     <q-construct-quad-syntax-1.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-syntax-1.trig>
+      ]
+      [  mf:name    "Construct Quad: Syntax 2" ;
+         mf:action
+            [ qt:query     <q-construct-quad-syntax-2.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-syntax-2.trig>
+      ]
+      [  mf:name    "Construct Quad: Syntax 3" ;
+         mf:action
+            [ qt:query     <q-construct-quad-syntax-3.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-syntax-3.ttl>
+      ]
+      [  mf:name    "Construct Quad: Syntax 4" ;
+         mf:action
+            [ qt:query     <q-construct-quad-syntax-4.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-syntax-4.trig>
+      ]
+      [  mf:name    "Construct Quad: Syntax 5" ;
+         mf:action
+            [ qt:query     <q-construct-quad-syntax-5.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-syntax-5.trig>
+      ]
+      [  mf:name    "Construct Quad: Syntax 6" ;
+         mf:action
+            [ qt:query     <q-construct-quad-syntax-6.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-syntax-6.trig>
+      ]
+      [  mf:name    "Construct Quad: Syntax 7" ;
+         mf:action
+            [ qt:query     <q-construct-quad-syntax-7.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-syntax-7.ttl>
+      ]
+      [  mf:name    "Construct Quad: Syntax 7" ;
+         mf:action
+            [ qt:query     <q-construct-quad-syntax-7.arq> ;
+              qt:data      <dft.ttl> ;
+              qt:graphData <g1.ttl> ;
+              qt:graphData <g2.ttl> ] ;
+        mf:result  <results-construct-quad-syntax-7.ttl>
+      ]
     ).

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-1.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-1.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-1.arq
new file mode 100644
index 0000000..32eb189
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-1.arq
@@ -0,0 +1,3 @@
+PREFIX :   <http://example.org/ns#>
+
+CONSTRUCT { GRAPH :g { :s :p :o } } WHERE {}

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-2.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-2.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-2.arq
new file mode 100644
index 0000000..340c047
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-2.arq
@@ -0,0 +1,3 @@
+PREFIX : <http://example.org/ns#>
+
+CONSTRUCT { GRAPH ?g { ?s ?p ?o } } WHERE { ?s ?p ?o }

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-3.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-3.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-3.arq
new file mode 100644
index 0000000..bef7c4f
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-3.arq
@@ -0,0 +1,4 @@
+PREFIX :   <http://example.org/ns#>
+
+CONSTRUCT { :s :p :o  } WHERE {}
+

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-4.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-4.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-4.arq
new file mode 100644
index 0000000..929b602
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-4.arq
@@ -0,0 +1,9 @@
+PREFIX :   <http://example.org/ns#>
+
+CONSTRUCT {
+   GRAPH ?g { :s :p :o }
+   ?s ?p ?o
+   }
+WHERE
+   { GRAPH ?g { ?s ?p ?o } }
+

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-5.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-5.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-5.arq
new file mode 100644
index 0000000..a9a8b61
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-5.arq
@@ -0,0 +1,9 @@
+PREFIX :   <http://example.org/ns#>
+
+CONSTRUCT {
+   ?s ?p ?o
+   GRAPH ?g { :s :p :o }
+   }
+WHERE
+   { GRAPH ?g { ?s ?p ?o } }
+

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-6.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-6.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-6.arq
new file mode 100644
index 0000000..921a44b
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-6.arq
@@ -0,0 +1,14 @@
+PREFIX :   <http://example.org/ns#>
+
+CONSTRUCT {
+   GRAPH ?g { :s :p :o }
+   ?s ?p ?o .
+   ?s ?p ?o .
+   GRAPH ?g { ?s ?p ?o }
+   ?s ?p ?o .
+   ?s ?p ?o
+   GRAPH ?g { ?s ?p ?o }
+   }
+WHERE
+   { GRAPH ?g { ?s ?p ?o } }
+

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-7.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-7.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-7.arq
new file mode 100644
index 0000000..fedde3c
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-7.arq
@@ -0,0 +1,7 @@
+PREFIX :   <http://example.org/ns#>
+
+CONSTRUCT {
+   GRAPH <urn:x-arq:DefaultGraphNode> {:s :p :o .}
+   }
+WHERE {}
+

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-8.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-8.arq b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-8.arq
new file mode 100644
index 0000000..b5c0b40
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/q-construct-quad-syntax-8.arq
@@ -0,0 +1,9 @@
+PREFIX :   <http://example.org/ns#>
+
+CONSTRUCT {
+   GRAPH ?g { :s :p :o }
+   GRAPH ?g1 { :s :p :o }
+   }
+WHERE
+   { }
+

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/results-construct-quad-data-2.ttl
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-data-2.ttl b/jena-arq/testing/ARQ/Construct/results-construct-quad-data-2.ttl
new file mode 100644
index 0000000..9a434a5
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/results-construct-quad-data-2.ttl
@@ -0,0 +1,2 @@
+@prefix : <http://example.org/ns#> .
+:s :p :o .
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-1.trig
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-1.trig b/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-1.trig
new file mode 100644
index 0000000..ee42de7
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-1.trig
@@ -0,0 +1,2 @@
+@prefix :      <http://example.org/ns#> .
+:g {:s :p :o }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-2.trig
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-2.trig b/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-2.trig
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-3.ttl
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-3.ttl b/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-3.ttl
new file mode 100644
index 0000000..8914bbe
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-3.ttl
@@ -0,0 +1,2 @@
+@prefix :      <http://example.org/ns#> .
+:s :p :o
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-4.trig
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-4.trig b/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-4.trig
new file mode 100644
index 0000000..eb40f00
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-4.trig
@@ -0,0 +1,6 @@
+@prefix :      <http://example.org/ns#> .
+:s1 :p :o1 .
+:s2 :p :o2 .
+:a1 :b1 :c1 .
+<g1.ttl> {:s :p :o}
+<g2.ttl> {:s :p :o}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-5.trig
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-5.trig b/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-5.trig
new file mode 100644
index 0000000..eb40f00
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-5.trig
@@ -0,0 +1,6 @@
+@prefix :      <http://example.org/ns#> .
+:s1 :p :o1 .
+:s2 :p :o2 .
+:a1 :b1 :c1 .
+<g1.ttl> {:s :p :o}
+<g2.ttl> {:s :p :o}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-6.trig
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-6.trig b/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-6.trig
new file mode 100644
index 0000000..9ddbf74
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-6.trig
@@ -0,0 +1,6 @@
+@prefix :      <http://example.org/ns#> .
+:s1 :p :o1 .
+:s2 :p :o2 .
+:a1 :b1 :c1 .
+<g1.ttl> {:s :p :o. :s1 :p :o1 . :a1 :b1 :c1 .}
+<g2.ttl> {:s :p :o. :s2 :p :o2 .}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-7.ttl
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-7.ttl b/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-7.ttl
new file mode 100644
index 0000000..8914bbe
--- /dev/null
+++ b/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-7.ttl
@@ -0,0 +1,2 @@
+@prefix :      <http://example.org/ns#> .
+:s :p :o
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/6f397404/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-8.trig
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-8.trig b/jena-arq/testing/ARQ/Construct/results-construct-quad-syntax-8.trig
new file mode 100644
index 0000000..e69de29


[47/50] [abbrv] jena git commit: JENA-959 : Add --compress.

Posted by an...@apache.org.
JENA-959 : Add --compress.

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 43efe529cb99aeaca6e94e91ac819e5ce4c20c2c
Parents: b2045b2
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Aug 16 17:01:41 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Aug 16 17:01:41 2015 +0100

----------------------------------------------------------------------
 .../main/java/arq/cmdline/ModLangOutput.java    | 33 +++-----
 .../src/main/java/riotcmd/CmdLangParse.java     | 79 ++++++++++----------
 2 files changed, 51 insertions(+), 61 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/43efe529/jena-arq/src/main/java/arq/cmdline/ModLangOutput.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/arq/cmdline/ModLangOutput.java b/jena-arq/src/main/java/arq/cmdline/ModLangOutput.java
index 7b12231..a4ed89d 100644
--- a/jena-arq/src/main/java/arq/cmdline/ModLangOutput.java
+++ b/jena-arq/src/main/java/arq/cmdline/ModLangOutput.java
@@ -39,6 +39,8 @@ public class ModLangOutput extends ModBase
     protected ArgDecl argOutput       = new ArgDecl(ArgDecl.HasValue, "out", "output") ;
     protected ArgDecl argPretty       = new ArgDecl(ArgDecl.HasValue, "formatted", "pretty", "fmt") ;
     protected ArgDecl argStream       = new ArgDecl(ArgDecl.HasValue, "stream") ;
+    protected ArgDecl argCompress     = new ArgDecl(ArgDecl.NoValue, "compress") ;
+    private boolean compressedOutput = false ;
     private RDFFormat streamOutput    = null ;
     private RDFFormat formattedOutput = null ;
 
@@ -48,6 +50,7 @@ public class ModLangOutput extends ModBase
         cmdLine.add(argOutput,    "--output=FMT",     "Output in the given format, streaming if possible.") ;
         cmdLine.add(argPretty,    "--formatted=FMT",  "Output, using pretty printing (consumes memory)") ;
         cmdLine.add(argStream,    "--stream=FMT",     "Output, using a streaming format") ;
+        cmdLine.add(argCompress,  "--compress=FMT",   "Compress the output with gzip") ;
     }
 
     @Override
@@ -96,6 +99,9 @@ public class ModLangOutput extends ModBase
             }
         }
         
+        if ( cmdLine.contains(argCompress))
+            compressedOutput = true ;
+        
         if ( streamOutput == null && formattedOutput == null )
             streamOutput = RDFFormat.NQUADS ;
     }
@@ -129,28 +135,7 @@ public class ModLangOutput extends ModBase
             out.println("   "+lang.getLabel()) ;
         }
     }
-            // Stream-only code.
-//            if ( ! StreamRDFWriter.registered(output) ) {
-//                // ** Java8
-////                StreamRDFWriter.registered().stream()
-////                    .map(fmt -> fmt.getLang()) 
-////                    .distinct()
-////                    .forEach(x -> System.err.println("   "+x.getLabel())) ;
-//                
-//                System.err.println("Language '"+output.getLabel()+"' can not be used for streamed out (try rdfcat)") ;
-//                System.err.println("Streaming languages are:") ;
-//                Set<Lang> seen = new HashSet<>() ;
-//                for ( RDFFormat fmt : StreamRDFWriter.registered()) {
-//                    if ( seen.contains(fmt.getLang()) )
-//                        continue ;
-//                    seen.add(fmt.getLang()) ;
-//                    System.err.println("   "+fmt.getLang().getLabel()) ;
-//                }
-//                
-//                throw new CmdException("Not a streaming RDF language : '"+langName+"'") ;
-//            }
-//            format = StreamRDFWriter.defaultSerialization(output) ;
-
+    
     public RDFFormat getOutputStreamFormat() {
         return streamOutput ;
     }
@@ -158,4 +143,8 @@ public class ModLangOutput extends ModBase
     public RDFFormat getOutputFormatted() {
         return formattedOutput ;
     }
+    
+    public boolean compressedOutput() {
+        return compressedOutput ;
+    }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/43efe529/jena-arq/src/main/java/riotcmd/CmdLangParse.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/riotcmd/CmdLangParse.java b/jena-arq/src/main/java/riotcmd/CmdLangParse.java
index 754f749..aa04052 100644
--- a/jena-arq/src/main/java/riotcmd/CmdLangParse.java
+++ b/jena-arq/src/main/java/riotcmd/CmdLangParse.java
@@ -18,9 +18,15 @@
 
 package riotcmd;
 
+import java.io.IOException ;
 import java.io.InputStream ;
 import java.io.OutputStream ;
+import java.util.zip.GZIPOutputStream ;
 
+import arq.cmdline.ModLangOutput ;
+import arq.cmdline.ModLangParse ;
+import arq.cmdline.ModSymbol ;
+import arq.cmdline.ModTime ;
 import jena.cmd.ArgDecl ;
 import jena.cmd.CmdException;
 import jena.cmd.CmdGeneral ;
@@ -42,7 +48,6 @@ import org.apache.jena.riot.tokens.Tokenizer ;
 import org.apache.jena.riot.tokens.TokenizerFactory ;
 import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.core.DatasetGraphFactory ;
-import arq.cmdline.* ;
 
 /** Common framework for running RIOT parsers */
 public abstract class CmdLangParse extends CmdGeneral
@@ -62,22 +67,19 @@ public abstract class CmdLangParse extends CmdGeneral
         String getRateName() ;
     }
 
-    static LangHandler langHandlerQuads = new LangHandler()
-    {
+    static LangHandler langHandlerQuads = new LangHandler() {
         @Override
         public String getItemsName()        { return "quads" ; }
         @Override
         public String getRateName()         { return "QPS" ; }
     } ;
-    static LangHandler langHandlerTriples = new LangHandler()
-    {
+    static LangHandler langHandlerTriples = new LangHandler() {
         @Override
         public String getItemsName()        { return "triples" ; }
         @Override
         public String getRateName()         { return "TPS" ; }
     } ;
-    static LangHandler langHandlerAny = new LangHandler()
-    {
+    static LangHandler langHandlerAny = new LangHandler() {
         @Override
         public String getItemsName()        { return "tuples" ; }
         @Override
@@ -104,10 +106,8 @@ public abstract class CmdLangParse extends CmdGeneral
     }
 
     @Override
-    protected String getSummary()
-    {
-        //return getCommandName()+" [--time] [--check|--noCheck] [--sink] [--base=IRI] [--skip | --stopOnError] file ..." ;
-        return getCommandName()+" [--time] [--check|--noCheck] [--sink] [--base=IRI] [--out=FORMAT] file ..." ;
+    protected String getSummary() {
+        return getCommandName()+" [--time] [--check|--noCheck] [--sink] [--base=IRI] [--out=FORMAT] [--compress] file ..." ;
     }
 
     protected long totalMillis = 0 ; 
@@ -115,7 +115,6 @@ public abstract class CmdLangParse extends CmdGeneral
     
     OutputStream output = System.out ;
     StreamRDF outputStream = null ;
-    
 
     @Override
     protected void processModulesAndArgs() {
@@ -125,14 +124,18 @@ public abstract class CmdLangParse extends CmdGeneral
     protected interface PostParseHandler { void postParse(); }
     
     @Override
-    protected void exec()
-    {
+    protected void exec() {
         if ( modLangParse.strictMode() )
             RIOT.setStrictMode(true) ; 
         
         if ( modLangParse.getRDFSVocab() != null )
             setup = new InferenceSetupRDFS(modLangParse.getRDFSVocab()) ;
      
+        if ( modLangOutput.compressedOutput() ) {
+            try { output = new GZIPOutputStream(output, true) ; }
+            catch (IOException e) { IO.exception(e);}
+        }
+            
         outputStream = null ;
         PostParseHandler postParse = null ;
 
@@ -145,20 +148,23 @@ public abstract class CmdLangParse extends CmdGeneral
         
         try {
             if ( super.getPositional().isEmpty() )
-                parseFile("-") ;
-            else
-            {
-                boolean b = super.getPositional().size() > 1 ;
-                for ( String fn : super.getPositional() )
-                {
-                    if ( b && ! super.isQuiet() )
-                        SysRIOT.getLogger().info("File: "+fn) ;
-                    parseFile(fn) ;
+                parseFile("-");
+            else {
+                boolean b = super.getPositional().size() > 1;
+                for ( String fn : super.getPositional() ) {
+                    if ( b && !super.isQuiet() )
+                        SysRIOT.getLogger().info("File: " + fn);
+                    parseFile(fn);
                 }
             }
+            if ( postParse != null )
+                postParse.postParse();
         } finally {
+            if ( output != System.out )
+                IO.close(output) ;
+            else
+                IO.flush(output);    
             System.err.flush() ;
-            System.out.flush() ;
             if ( super.getPositional().size() > 1 && modTime.timingEnabled() )
                 output("Total", totalTuples, totalMillis, langHandlerOverall) ;
         }
@@ -167,8 +173,7 @@ public abstract class CmdLangParse extends CmdGeneral
             postParse.postParse() ;
     }
     
-    public void parseFile(String filename)
-    {
+    public void parseFile(String filename) {
         TypedInputStream in = null ;
         if ( filename.equals("-") ) {
             in = new TypedInputStream(System.in) ;
@@ -182,11 +187,11 @@ public abstract class CmdLangParse extends CmdGeneral
             }
             parseFile(null, filename, in) ;
             IO.close(in) ;
+            
         }
     }
 
-    public void parseFile(String defaultBaseURI, String filename, TypedInputStream in)
-    {   
+    public void parseFile(String defaultBaseURI, String filename, TypedInputStream in) {   
         String baseURI = modLangParse.getBaseIRI() ;
         if ( baseURI == null )
             baseURI = defaultBaseURI ;
@@ -195,8 +200,7 @@ public abstract class CmdLangParse extends CmdGeneral
     
     protected abstract Lang selectLang(String filename, ContentType contentType, Lang dftLang  ) ;
 
-    protected void parseRIOT(String baseURI, String filename, TypedInputStream in)
-    {
+    protected void parseRIOT(String baseURI, String filename, TypedInputStream in) {
         ContentType ct = in.getMediaType() ;
         
         baseURI = SysRIOT.chooseBaseIRI(baseURI, filename) ;
@@ -293,7 +297,6 @@ public abstract class CmdLangParse extends CmdGeneral
         totalTuples += n ;
     }
     
-    
     /** Create a streaming output sink if possible */
     protected StreamRDF createStreamSink() {
         if ( modLangParse.toBitBucket() )
@@ -302,7 +305,8 @@ public abstract class CmdLangParse extends CmdGeneral
         RDFFormat fmt = modLangOutput.getOutputStreamFormat() ;
         if ( fmt == null )
             return null ;
-        return StreamRDFWriter.getWriterStream(System.out, fmt) ;
+        /** Create an accumulating output stream for later pretty printing */        
+        return StreamRDFWriter.getWriterStream(output, fmt) ;
     }
     
     /** Create an accumulating output stream for later pretty printing */
@@ -316,7 +320,7 @@ public abstract class CmdLangParse extends CmdGeneral
                 // Try as dataset, then as graph.
                 WriterDatasetRIOTFactory w = RDFWriterRegistry.getWriterDatasetFactory(fmt) ;
                 if ( w != null ) {
-                    RDFDataMgr.write(System.out, dsg, fmt) ;
+                    RDFDataMgr.write(output, dsg.getDefaultGraph(), fmt) ;
                     return ;
                 }
                 WriterGraphRIOTFactory wg = RDFWriterRegistry.getWriterGraphFactory(fmt) ;
@@ -330,14 +334,12 @@ public abstract class CmdLangParse extends CmdGeneral
         return Pair.create(sink, handler) ;
     }
     
-    protected Tokenizer makeTokenizer(InputStream in)
-    {
+    protected Tokenizer makeTokenizer(InputStream in) {
         Tokenizer tokenizer = TokenizerFactory.makeTokenizerUTF8(in) ;
         return tokenizer ;
     }
     
-    protected void output(String label, long numberTriples, long timeMillis, LangHandler handler)
-    {
+    protected void output(String label, long numberTriples, long timeMillis, LangHandler handler) {
         double timeSec = timeMillis/1000.0 ;
         
         System.out.flush() ;
@@ -349,8 +351,7 @@ public abstract class CmdLangParse extends CmdGeneral
                           handler.getRateName()) ;
     }
     
-    protected void output(String label)
-    {
+    protected void output(String label) {
         System.err.printf("%s : \n", label) ;
     }
 }


[42/50] [abbrv] jena git commit: JENA-1009: Add -- to filename consuming shell commands

Posted by an...@apache.org.
JENA-1009: Add -- to filename consuming shell commands


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

Branch: refs/heads/JENA-491-construct-quads
Commit: f6beee6f9c54dc64861a671f96ab5d2e8c657dc5
Parents: 957959c
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Aug 14 16:44:42 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Aug 14 16:44:42 2015 +0100

----------------------------------------------------------------------
 apache-jena/bin/tdbloader2       | 4 ++--
 apache-jena/bin/tdbloader2common | 6 +++---
 apache-jena/bin/tdbloader2data   | 6 +++---
 apache-jena/bin/tdbloader2index  | 4 ++--
 4 files changed, 10 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/f6beee6f/apache-jena/bin/tdbloader2
----------------------------------------------------------------------
diff --git a/apache-jena/bin/tdbloader2 b/apache-jena/bin/tdbloader2
index 530aca8..4086fd6 100755
--- a/apache-jena/bin/tdbloader2
+++ b/apache-jena/bin/tdbloader2
@@ -108,13 +108,13 @@ function resolveLink() {
         # BSD style readlink behaves differently to GNU readlink
         # Have to manually follow links
         while [ -L "$NAME" ]; do
-          NAME=$(readlink "$NAME")
+          NAME=$(readlink -- "$NAME")
         done
         ;;
       *)
         # Assuming standard GNU readlink with -f for
         # canonicalize
-        NAME=$(readlink -f "$NAME")
+        NAME=$(readlink -f -- "$NAME")
         ;;
     esac
   fi

http://git-wip-us.apache.org/repos/asf/jena/blob/f6beee6f/apache-jena/bin/tdbloader2common
----------------------------------------------------------------------
diff --git a/apache-jena/bin/tdbloader2common b/apache-jena/bin/tdbloader2common
index b5f0dbf..807ac1d 100644
--- a/apache-jena/bin/tdbloader2common
+++ b/apache-jena/bin/tdbloader2common
@@ -135,13 +135,13 @@ function resolveLink() {
         # BSD style readlink behaves differently to GNU readlink
         # Have to manually follow links
         while [ -L "$NAME" ]; do
-          NAME=$(readlink "$NAME")
+          NAME=$(readlink -- "$NAME")
         done
         ;;
       *)
         # Assuming standard GNU readlink with -f for
         # canonicalize
-        NAME=$(readlink -f "$NAME")
+        NAME=$(readlink -f -- "$NAME")
         ;;
     esac
   fi
@@ -193,7 +193,7 @@ function makeAbsolute() {
         ;;
       *)
         # Otherwise assume standard GNU readlink
-        NAME=$(readlink -f "$NAME")
+        NAME=$(readlink -f -- "$NAME")
         ;;
     esac
 

http://git-wip-us.apache.org/repos/asf/jena/blob/f6beee6f/apache-jena/bin/tdbloader2data
----------------------------------------------------------------------
diff --git a/apache-jena/bin/tdbloader2data b/apache-jena/bin/tdbloader2data
index 16a761f..ba41f00 100755
--- a/apache-jena/bin/tdbloader2data
+++ b/apache-jena/bin/tdbloader2data
@@ -27,13 +27,13 @@ function resolveLink() {
         # BSD style readlink behaves differently to GNU readlink
         # Have to manually follow links
         while [ -L "$NAME" ]; do
-          NAME=$(readlink "$NAME")
+          NAME=$(readlink -- "$NAME")
         done
         ;;
       *)
         # Assuming standard GNU readlink with -f for
         # canonicalize
-        NAME=$(readlink -f "$NAME")
+        NAME=$(readlink -f -- "$NAME")
         ;;
     esac
   fi
@@ -284,6 +284,6 @@ debug "Triples text files is $DATA_TRIPLES"
 debug "Quads text file is $DATA_QUADS"
 
 java $JVM_ARGS -cp "$JENA_CP" "$PKG".CmdNodeTableBuilder \
-    "--loc=$LOC" "--triples=$DATA_TRIPLES" "--quads=$DATA_QUADS" "${FILES[@]}"
+    "--loc=$LOC" "--triples=$DATA_TRIPLES" "--quads=$DATA_QUADS" -- "${FILES[@]}"
 
 info "Data Load Phase Completed"

http://git-wip-us.apache.org/repos/asf/jena/blob/f6beee6f/apache-jena/bin/tdbloader2index
----------------------------------------------------------------------
diff --git a/apache-jena/bin/tdbloader2index b/apache-jena/bin/tdbloader2index
index d26072f..89296aa 100755
--- a/apache-jena/bin/tdbloader2index
+++ b/apache-jena/bin/tdbloader2index
@@ -27,13 +27,13 @@ function resolveLink() {
         # BSD style readlink behaves differently to GNU readlink
         # Have to manually follow links
         while [ -L "$NAME" ]; do
-          NAME=$(readlink "$NAME")
+          NAME=$(readlink -- "$NAME")
         done
         ;;
       *)
         # Assuming standard GNU readlink with -f for
         # canonicalize
-        NAME=$(readlink -f "$NAME")
+        NAME=$(readlink -f -- "$NAME")
         ;;
     esac
   fi


[08/50] [abbrv] jena git commit: The SPARQL 1.1 parser (like the SPARQL 1.0 parser) are now unchanged.

Posted by an...@apache.org.
The SPARQL 1.1 parser (like the SPARQL 1.0 parser) are now unchanged.

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

Branch: refs/heads/JENA-491-construct-quads
Commit: a8b0d53e83a39357f6d35763494ecfa447826b51
Parents: 2cb175d
Author: confidencesun <co...@gmail.com>
Authored: Thu Jun 18 11:21:34 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Thu Jun 18 11:21:34 2015 +0800

----------------------------------------------------------------------
 jena-arq/Grammar/arq.jj                         |   34 +-
 jena-arq/Grammar/master.jj                      |   56 +-
 jena-arq/Grammar/sparql_11.jj                   |    8 +-
 .../apache/jena/sparql/lang/arq/ARQParser.java  | 1909 ++++++++++--------
 .../sparql/lang/sparql_11/SPARQLParser11.java   |    8 +-
 .../org/apache/jena/sparql/syntax/Template.java |    7 +-
 6 files changed, 1103 insertions(+), 919 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/a8b0d53e/jena-arq/Grammar/arq.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/arq.jj b/jena-arq/Grammar/arq.jj
index 2f80284..70a34f4 100644
--- a/jena-arq/Grammar/arq.jj
+++ b/jena-arq/Grammar/arq.jj
@@ -134,8 +134,10 @@ void ConstructQuery() : { Template t ;
  <CONSTRUCT>
    { getQuery().setQueryConstructType() ; }
  (
-    t = ConstructTemplate()
+    <LBRACE>
+    t = ConstructQuads(acc)
       { getQuery().setConstructTemplate(t) ; }
+    <RBRACE>
     ( DatasetClause() )*
     WhereClause()
     SolutionModifier()
@@ -143,7 +145,7 @@ void ConstructQuery() : { Template t ;
     ( DatasetClause() )*
     <WHERE>
     <LBRACE>
-    (TriplesTemplate(acc))?
+    ConstructQuads(acc)
     <RBRACE>
     SolutionModifier()
     {
@@ -500,6 +502,30 @@ void QuadsNotTriples(QuadAccSink acc) : {Node gn ; Node prev = acc.getGraph() ;
     <RBRACE>
     { setAccGraph(acc, prev) ; }
 }
+Template ConstructQuads(QuadAcc acc) : {Template t = new Template (acc);}
+{
+    { setInConstructTemplate(true) ; }
+    (TriplesTemplate(acc))?
+    (
+       ConstructQuadsNotTriples(acc)
+       (<DOT>)?
+       (TriplesTemplate(acc))?
+    )*
+    { setInConstructTemplate(false) ;
+      return t ; }
+}
+void ConstructQuadsNotTriples(QuadAccSink acc) : {Node gn = null ; Node prev = acc.getGraph() ; }
+{
+    (
+    <GRAPH>
+     gn = VarOrIri()
+    )?
+    { setAccGraph(acc, gn) ; }
+    <LBRACE>
+    (TriplesTemplate(acc))?
+    <RBRACE>
+    { setAccGraph(acc, prev) ; }
+}
 void TriplesTemplate(TripleCollector acc) : { }
 {
     TriplesSameSubject(acc)
@@ -780,8 +806,8 @@ ExprList ExpressionList() : { Expr expr = null ; ExprList args = new ExprList()
   )
   { return args ; }
 }
-Template ConstructTemplate() : { QuadAcc acc = new QuadAcc() ;
-                                 Template t = new Template(acc) ; }
+Template ConstructTemplate() : { TripleCollectorBGP acc = new TripleCollectorBGP();
+                                 Template t = new Template(acc.getBGP()) ; }
 {
     { setInConstructTemplate(true) ; }
   <LBRACE>

http://git-wip-us.apache.org/repos/asf/jena/blob/a8b0d53e/jena-arq/Grammar/master.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/master.jj b/jena-arq/Grammar/master.jj
index 2de8bba..1c1c93d 100644
--- a/jena-arq/Grammar/master.jj
+++ b/jena-arq/Grammar/master.jj
@@ -241,8 +241,10 @@ void ConstructQuery() : { Template t ;
    { getQuery().setQueryConstructType() ; }
  (
     // Full form.
-    t = ConstructTemplate() 
+    <LBRACE>
+    t = ConstructQuads(acc) 
       { getQuery().setConstructTemplate(t) ; }
+    <RBRACE>
     ( DatasetClause() )*
     WhereClause()
     SolutionModifier()
@@ -252,7 +254,7 @@ void ConstructQuery() : { Template t ;
     <WHERE>
     // Should have been "ConstructTemplate()"
     <LBRACE>  
-    (TriplesTemplate(acc))?
+    ConstructQuads(acc)
     <RBRACE>
     SolutionModifier()
     { 
@@ -268,9 +270,20 @@ void ConstructQuery() : { Template t ;
 //#endif
 }
 #else
+
 void ConstructQuery() : { Template t ; 
-                          QuadAcc acc = new QuadAcc() ; }
-{
+                          TripleCollectorBGP acc = new TripleCollectorBGP() ; }
+{
+// #ifndef ARQ
+//   <CONSTRUCT>
+//      { getQuery().setQueryConstructType() ; }
+//   t = ConstructTemplate() 
+//     { getQuery().setConstructTemplate(t) ; }
+//   ( DatasetClause() )*
+//   WhereClause()
+//   SolutionModifier()
+// #else
+
  <CONSTRUCT>
    { getQuery().setQueryConstructType() ; }
  (
@@ -290,7 +303,7 @@ void ConstructQuery() : { Template t ;
     <RBRACE>
     SolutionModifier()
     { 
-      t = new Template(acc) ;
+      t = new Template(acc.getBGP()) ;
       getQuery().setConstructTemplate(t) ;
       // Create a query in the same shape as the query created by writing out in full.
       ElementPathBlock epb = new ElementPathBlock(acc.getBGP()) ;
@@ -728,7 +741,36 @@ void QuadsNotTriples(QuadAccSink acc) : {Node gn ; Node prev = acc.getGraph() ;
     { setAccGraph(acc, prev) ; }
     
 }
+#ifdef ARQ
+Template ConstructQuads(QuadAcc acc) : {Template t = new Template (acc);}
+{
+    { setInConstructTemplate(true) ; }
+    (TriplesTemplate(acc))?
+    (
+       ConstructQuadsNotTriples(acc)
+       (<DOT>)?
+       (TriplesTemplate(acc))?
+    )*
+    
+    { setInConstructTemplate(false) ;
+      return t ; }
+}
+
+void ConstructQuadsNotTriples(QuadAccSink acc) : {Node gn = null ; Node prev = acc.getGraph() ; }
+{
+    (
+  	 <GRAPH>
+     gn = VarOrIri()
+    )?
 
+    { setAccGraph(acc, gn) ; }
+    <LBRACE> 
+    (TriplesTemplate(acc))?
+    <RBRACE>
+    { setAccGraph(acc, prev) ; }
+    
+}
+#endif
 void TriplesTemplate(TripleCollector acc) : { }
 {    // same as ConstructTriples
 #if SPARQL_11
@@ -1085,8 +1127,8 @@ ExprList ExpressionList() : { Expr expr = null ; ExprList args = new ExprList()
 
 // -------- Construct patterns
 
-Template ConstructTemplate() : { QuadAcc acc = new QuadAcc() ; 
-                                 Template t = new Template(acc) ; }
+Template ConstructTemplate() : { TripleCollectorBGP acc = new TripleCollectorBGP(); 
+                                 Template t = new Template(acc.getBGP()) ; }
 {
     { setInConstructTemplate(true) ; }
   <LBRACE> 

http://git-wip-us.apache.org/repos/asf/jena/blob/a8b0d53e/jena-arq/Grammar/sparql_11.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/sparql_11.jj b/jena-arq/Grammar/sparql_11.jj
index e82bc3e..df2b3b8 100644
--- a/jena-arq/Grammar/sparql_11.jj
+++ b/jena-arq/Grammar/sparql_11.jj
@@ -121,7 +121,7 @@ void SelectClause() : { Var v ; Expr expr ; Node n ; }
   { allowAggregatesInExpressions = false ; }
 }
 void ConstructQuery() : { Template t ;
-                          QuadAcc acc = new QuadAcc() ; }
+                          TripleCollectorBGP acc = new TripleCollectorBGP() ; }
 {
  <CONSTRUCT>
    { getQuery().setQueryConstructType() ; }
@@ -139,7 +139,7 @@ void ConstructQuery() : { Template t ;
     <RBRACE>
     SolutionModifier()
     {
-      t = new Template(acc) ;
+      t = new Template(acc.getBGP()) ;
       getQuery().setConstructTemplate(t) ;
       ElementPathBlock epb = new ElementPathBlock(acc.getBGP()) ;
       ElementGroup elg = new ElementGroup() ;
@@ -729,8 +729,8 @@ ExprList ExpressionList() : { Expr expr = null ; ExprList args = new ExprList()
   )
   { return args ; }
 }
-Template ConstructTemplate() : { QuadAcc acc = new QuadAcc() ;
-                                 Template t = new Template(acc) ; }
+Template ConstructTemplate() : { TripleCollectorBGP acc = new TripleCollectorBGP();
+                                 Template t = new Template(acc.getBGP()) ; }
 {
     { setInConstructTemplate(true) ; }
   <LBRACE>


[06/50] [abbrv] jena git commit: The SPARQL 1.1 parser (like the SPARQL 1.0 parser) are now unchanged.

Posted by an...@apache.org.
http://git-wip-us.apache.org/repos/asf/jena/blob/a8b0d53e/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 296cfc1..a6d961f 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
@@ -212,7 +212,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
 
   final public void ConstructQuery() throws ParseException {
                           Template t ;
-                          QuadAcc acc = new QuadAcc() ;
+                          TripleCollectorBGP acc = new TripleCollectorBGP() ;
     jj_consume_token(CONSTRUCT);
      getQuery().setQueryConstructType() ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -284,7 +284,7 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
       }
       jj_consume_token(RBRACE);
       SolutionModifier();
-      t = new Template(acc) ;
+      t = new Template(acc.getBGP()) ;
       getQuery().setConstructTemplate(t) ;
       ElementPathBlock epb = new ElementPathBlock(acc.getBGP()) ;
       ElementGroup elg = new ElementGroup() ;
@@ -2353,8 +2353,8 @@ public class SPARQLParser11 extends SPARQLParser11Base implements SPARQLParser11
   }
 
   final public Template ConstructTemplate() throws ParseException {
-                                 QuadAcc acc = new QuadAcc() ;
-                                 Template t = new Template(acc) ;
+                                 TripleCollectorBGP acc = new TripleCollectorBGP();
+                                 Template t = new Template(acc.getBGP()) ;
       setInConstructTemplate(true) ;
     jj_consume_token(LBRACE);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

http://git-wip-us.apache.org/repos/asf/jena/blob/a8b0d53e/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
index c6a5b26..944c252 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
@@ -89,7 +89,7 @@ public class Template
     	if( this.bgp != null){
     		List<Quad> quads = new ArrayList<Quad>();
     		for(Triple triple: this.bgp.getList()){
-    			quads.add( new Quad( Quad.tripleInQuad, triple ) ); 
+    			quads.add( new Quad( Quad.defaultGraphIRI, triple ) ); 
     		}
     		return quads;
     	}   	
@@ -146,7 +146,10 @@ public class Template
         {
             Quad q1 = list1.get(i) ;
             Quad q2 = list2.get(i) ;
-            Iso.quadIso(q1, q2, labelMap) ;
+            boolean iso = Iso.quadIso(q1, q2, labelMap) ;
+            if(!iso){
+            	return false;
+            }
         }
         return true ;
     }


[44/50] [abbrv] jena git commit: Merge remote-tracking branch 'origin/master' into JENA-491

Posted by an...@apache.org.
Merge remote-tracking branch 'origin/master' into JENA-491

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 69f1ee27cbc8a3f62199e0a3760330f775befe61
Parents: 0eb28d8 6f39740
Author: confidencesun <co...@gmail.com>
Authored: Sat Aug 15 16:33:44 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Sat Aug 15 16:33:44 2015 +0800

----------------------------------------------------------------------
 .../constructquads/ExampleConstructQuads.java   | 241 +++++++++--------
 .../org/apache/jena/sparql/syntax/Template.java |   6 +-
 .../org/apache/jena/sparql/api/TestAPI.java     | 262 ++++++++++++++++++-
 jena-arq/testing/ARQ/Construct/manifest.ttl     |  64 +++++
 .../ARQ/Construct/q-construct-quad-syntax-1.arq |   3 +
 .../ARQ/Construct/q-construct-quad-syntax-2.arq |   3 +
 .../ARQ/Construct/q-construct-quad-syntax-3.arq |   4 +
 .../ARQ/Construct/q-construct-quad-syntax-4.arq |   9 +
 .../ARQ/Construct/q-construct-quad-syntax-5.arq |   9 +
 .../ARQ/Construct/q-construct-quad-syntax-6.arq |  14 +
 .../ARQ/Construct/q-construct-quad-syntax-7.arq |   7 +
 .../ARQ/Construct/q-construct-quad-syntax-8.arq |   9 +
 .../Construct/results-construct-quad-data-2.ttl |   2 +
 .../results-construct-quad-syntax-1.trig        |   2 +
 .../results-construct-quad-syntax-2.trig        |   0
 .../results-construct-quad-syntax-3.ttl         |   2 +
 .../results-construct-quad-syntax-4.trig        |   6 +
 .../results-construct-quad-syntax-5.trig        |   6 +
 .../results-construct-quad-syntax-6.trig        |   6 +
 .../results-construct-quad-syntax-7.ttl         |   2 +
 .../results-construct-quad-syntax-8.trig        |   0
 21 files changed, 531 insertions(+), 126 deletions(-)
----------------------------------------------------------------------



[12/50] [abbrv] jena git commit: fix bugs for default graphs; add some examples in ExampleConstructQuads.java

Posted by an...@apache.org.
fix bugs for default graphs; add some examples in
ExampleConstructQuads.java

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

Branch: refs/heads/JENA-491-construct-quads
Commit: d58625693e9439ee0c9164b56993b44f34c2a383
Parents: d0ce13b
Author: confidencesun <co...@gmail.com>
Authored: Sun Jun 21 21:16:18 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Sun Jun 21 21:16:18 2015 +0800

----------------------------------------------------------------------
 jena-arq/Grammar/arq.jj                                            | 2 +-
 jena-arq/Grammar/master.jj                                         | 2 +-
 .../src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java   | 2 +-
 jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/d5862569/jena-arq/Grammar/arq.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/arq.jj b/jena-arq/Grammar/arq.jj
index 0f1ef8e..25d5bc4 100644
--- a/jena-arq/Grammar/arq.jj
+++ b/jena-arq/Grammar/arq.jj
@@ -507,7 +507,7 @@ void ConstructQuads(QuadAcc acc) : {}
        (TriplesTemplate(acc))?
     )*
 }
-void ConstructQuadsNotTriples(QuadAccSink acc) : {Node gn = null ; Node prev = acc.getGraph() ; }
+void ConstructQuadsNotTriples(QuadAccSink acc) : {Node gn = org.apache.jena.sparql.core.Quad.defaultGraphNodeGenerated ; Node prev = acc.getGraph() ; }
 {
     (
     <GRAPH>

http://git-wip-us.apache.org/repos/asf/jena/blob/d5862569/jena-arq/Grammar/master.jj
----------------------------------------------------------------------
diff --git a/jena-arq/Grammar/master.jj b/jena-arq/Grammar/master.jj
index 4005ce0..04217ec 100644
--- a/jena-arq/Grammar/master.jj
+++ b/jena-arq/Grammar/master.jj
@@ -748,7 +748,7 @@ void ConstructQuads(QuadAcc acc) : {}
     )*    
 }
 
-void ConstructQuadsNotTriples(QuadAccSink acc) : {Node gn = null ; Node prev = acc.getGraph() ; }
+void ConstructQuadsNotTriples(QuadAccSink acc) : {Node gn = org.apache.jena.sparql.core.Quad.defaultGraphNodeGenerated ; Node prev = acc.getGraph() ; }
 {
     (
   	 <GRAPH>

http://git-wip-us.apache.org/repos/asf/jena/blob/d5862569/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 9bb2611..bfa0e85 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
@@ -1995,7 +1995,7 @@ public class ARQParser extends ARQParserBase implements ARQParserConstants {
   }
 
   final public void ConstructQuadsNotTriples(QuadAccSink acc) throws ParseException {
-                                                  Node gn = null ; Node prev = acc.getGraph() ;
+                                                  Node gn = org.apache.jena.sparql.core.Quad.defaultGraphNodeGenerated ; Node prev = acc.getGraph() ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case GRAPH:
       jj_consume_token(GRAPH);

http://git-wip-us.apache.org/repos/asf/jena/blob/d5862569/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
index 944c252..248ce7e 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
@@ -89,7 +89,7 @@ public class Template
     	if( this.bgp != null){
     		List<Quad> quads = new ArrayList<Quad>();
     		for(Triple triple: this.bgp.getList()){
-    			quads.add( new Quad( Quad.defaultGraphIRI, triple ) ); 
+    			quads.add( new Quad( Quad.defaultGraphNodeGenerated, triple ) ); 
     		}
     		return quads;
     	}   	


[31/50] [abbrv] jena git commit: Merge pull request #12 from apache/master

Posted by an...@apache.org.
Merge pull request #12 from apache/master

pull master 2015-08-06

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

Branch: refs/heads/JENA-491-construct-quads
Commit: b084878a1d49e240c702f7961b316819d8a33b9f
Parents: 2bb0e58 7442161
Author: confidencesun <co...@gmail.com>
Authored: Thu Aug 6 00:02:12 2015 -0300
Committer: confidencesun <co...@gmail.com>
Committed: Thu Aug 6 00:02:12 2015 -0300

----------------------------------------------------------------------
 .../sparql/pfunction/PropertyFunctionBase.java  |  25 +-
 jena-core/src/main/java/jena/schemagen.java     |   3 +-
 .../apache/jena/fuseki/mgt/ActionDatasets.java  | 120 +--
 .../fuseki/server/DataAccessPointRegistry.java  |  14 +
 .../apache/jena/fuseki/server/FusekiEnv.java    |  53 +-
 .../jena/fuseki/servlets/SPARQL_Protocol.java   |  68 +-
 .../jena/fuseki/servlets/SPARQL_Query.java      |   2 +-
 .../fuseki/servlets/SPARQL_QueryDataset.java    |  20 +-
 .../fuseki/servlets/SPARQL_QueryGeneral.java    | 100 +-
 .../java/org/apache/jena/fuseki/TestAdmin.java  |  24 +-
 .../java/org/apache/jena/fuseki/TestQuery.java  | 134 ++-
 jena-parent/pom.xml                             |   5 +-
 .../java/org/apache/jena/tdb/TDBFactory.java    |  17 +-
 .../jena/tdb/setup/DatasetBuilderBasic.java     | 197 ----
 .../jena/tdb/setup/DatasetBuilderStd.java       |  27 +-
 .../org/apache/jena/tdb/sys/TDBInternal.java    | 128 ++-
 .../java/org/apache/jena/tdb/sys/TDBMaker.java  |  92 +-
 .../org/apache/jena/query/text/TextQueryPF.java | 914 +++++++++++--------
 18 files changed, 944 insertions(+), 999 deletions(-)
----------------------------------------------------------------------



[20/50] [abbrv] jena git commit: fix graph uri in the example of construct quads

Posted by an...@apache.org.
fix graph uri in the example of construct quads

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

Branch: refs/heads/JENA-491-construct-quads
Commit: e398c4e73e6ebb907c1b9acd584f965050cbc4ca
Parents: 44d8010
Author: confidencesun <co...@gmail.com>
Authored: Mon Jul 27 08:54:40 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Mon Jul 27 08:54:40 2015 +0800

----------------------------------------------------------------------
 .../arq/examples/constructquads/ExampleConstructQuads.java         | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/e398c4e7/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
----------------------------------------------------------------------
diff --git a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
index 887f7b5..ae724ec 100644
--- a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
+++ b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
@@ -54,7 +54,7 @@ public class ExampleConstructQuads {
 		Property p1 = model.createProperty("http://eg.com/p1");
 		Resource o1 = model.createResource("http://eg.com/o1");
 		model1.add(s1, p1, o1);
-		dataset.addNamedModel("<http://eg.com/g1>", model1);
+		dataset.addNamedModel("http://eg.com/g1", model1);
 
 
 		// construct named graph


[05/50] [abbrv] jena git commit: reimplement Template, that does not affect the SPARQL 1.0 parser

Posted by an...@apache.org.
reimplement Template, that does not affect the SPARQL 1.0 parser

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 2cb175d2305c02582eb24629d18d06bdc53ae4ba
Parents: 07c8b98
Author: confidencesun <co...@gmail.com>
Authored: Mon Jun 15 18:12:10 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Mon Jun 15 18:12:10 2015 +0800

----------------------------------------------------------------------
 .../sparql/lang/sparql_10/SPARQLParser10.java   | 80 ++++++--------------
 .../org/apache/jena/sparql/syntax/Template.java | 32 ++++++--
 2 files changed, 49 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/2cb175d2/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java
index c26f58d..d3049f7 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/SPARQLParser10.java
@@ -19,50 +19,12 @@
 
 package org.apache.jena.sparql.lang.sparql_10 ;
 
-import org.apache.jena.graph.Node;
-import org.apache.jena.query.Query;
-import org.apache.jena.sparql.core.Var;
-import org.apache.jena.sparql.expr.E_Add;
-import org.apache.jena.sparql.expr.E_Bound;
-import org.apache.jena.sparql.expr.E_Datatype;
-import org.apache.jena.sparql.expr.E_Divide;
-import org.apache.jena.sparql.expr.E_Equals;
-import org.apache.jena.sparql.expr.E_Function;
-import org.apache.jena.sparql.expr.E_GreaterThan;
-import org.apache.jena.sparql.expr.E_GreaterThanOrEqual;
-import org.apache.jena.sparql.expr.E_IsBlank;
-import org.apache.jena.sparql.expr.E_IsIRI;
-import org.apache.jena.sparql.expr.E_IsLiteral;
-import org.apache.jena.sparql.expr.E_IsURI;
-import org.apache.jena.sparql.expr.E_Lang;
-import org.apache.jena.sparql.expr.E_LangMatches;
-import org.apache.jena.sparql.expr.E_LessThan;
-import org.apache.jena.sparql.expr.E_LessThanOrEqual;
-import org.apache.jena.sparql.expr.E_LogicalAnd;
-import org.apache.jena.sparql.expr.E_LogicalNot;
-import org.apache.jena.sparql.expr.E_LogicalOr;
-import org.apache.jena.sparql.expr.E_Multiply;
-import org.apache.jena.sparql.expr.E_NotEquals;
-import org.apache.jena.sparql.expr.E_Regex;
-import org.apache.jena.sparql.expr.E_SameTerm;
-import org.apache.jena.sparql.expr.E_Str;
-import org.apache.jena.sparql.expr.E_Subtract;
-import org.apache.jena.sparql.expr.E_UnaryMinus;
-import org.apache.jena.sparql.expr.E_UnaryPlus;
-import org.apache.jena.sparql.expr.Expr;
-import org.apache.jena.sparql.expr.ExprList;
-import org.apache.jena.sparql.expr.ExprVar;
-import org.apache.jena.sparql.modify.request.QuadAcc;
-import org.apache.jena.sparql.path.Path;
-import org.apache.jena.sparql.syntax.Element;
-import org.apache.jena.sparql.syntax.ElementFilter;
-import org.apache.jena.sparql.syntax.ElementGroup;
-import org.apache.jena.sparql.syntax.ElementNamedGraph;
-import org.apache.jena.sparql.syntax.ElementOptional;
-import org.apache.jena.sparql.syntax.ElementTriplesBlock;
-import org.apache.jena.sparql.syntax.ElementUnion;
-import org.apache.jena.sparql.syntax.Template;
-import org.apache.jena.sparql.syntax.TripleCollector;
+import org.apache.jena.graph.* ;
+import org.apache.jena.query.* ;
+import org.apache.jena.sparql.core.Var ;
+import org.apache.jena.sparql.expr.* ;
+import org.apache.jena.sparql.path.* ;
+import org.apache.jena.sparql.syntax.* ;
 
 
 
@@ -917,8 +879,8 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
 
 // -------- Construct patterns
   final public Template ConstructTemplate() throws ParseException {
-                                 QuadAcc acc = new QuadAcc();
-                                 Template t = new Template(acc) ;
+                                 TripleCollectorBGP acc = new TripleCollectorBGP();
+                                 Template t = new Template(acc.getBGP()) ;
       setInConstructTemplate(true) ;
     jj_consume_token(LBRACE);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -959,7 +921,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
     throw new Error("Missing return statement in function");
   }
 
-  final public void ConstructTriples(TripleCollector acc) throws ParseException {
+  final public void ConstructTriples(TripleCollectorMark acc) throws ParseException {
     TriplesSameSubject(acc);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case DOT:
@@ -1005,7 +967,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
 
 // -------- Triple lists with property and object lists
 // -------- Without paths: entry: TriplesSameSubject
-  final public void TriplesSameSubject(TripleCollector acc) throws ParseException {
+  final public void TriplesSameSubject(TripleCollectorMark acc) throws ParseException {
                                                  Node s ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case IRIref:
@@ -1047,7 +1009,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
     }
   }
 
-  final public void PropertyListNotEmpty(Node s, TripleCollector acc) throws ParseException {
+  final public void PropertyListNotEmpty(Node s, TripleCollectorMark acc) throws ParseException {
       Node p = null ;
     p = Verb();
     ObjectList(s, p, null, acc);
@@ -1079,7 +1041,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
     }
   }
 
-  final public void PropertyList(Node s, TripleCollector acc) throws ParseException {
+  final public void PropertyList(Node s, TripleCollectorMark acc) throws ParseException {
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case IRIref:
     case PNAME_NS:
@@ -1095,7 +1057,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
     }
   }
 
-  final public void ObjectList(Node s, Node p, Path path, TripleCollector acc) throws ParseException {
+  final public void ObjectList(Node s, Node p, Path path, TripleCollectorMark acc) throws ParseException {
                                                                    Node o ;
     Object(s, p, path, acc);
     label_14:
@@ -1113,10 +1075,11 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
     }
   }
 
-  final public void Object(Node s, Node p, Path path, TripleCollector acc) throws ParseException {
+  final public void Object(Node s, Node p, Path path, TripleCollectorMark acc) throws ParseException {
                                                                Node o ;
+      int mark = acc.mark() ;
     o = GraphNode(acc);
-    insert(acc, s, p, path, o) ;
+    insert(acc, mark, s, p, path, o) ;
   }
 
   final public Node Verb() throws ParseException {
@@ -1149,7 +1112,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
 
 // Anything that can stand in a node slot and which is
 // a number of triples
-  final public Node TriplesNode(TripleCollector acc) throws ParseException {
+  final public Node TriplesNode(TripleCollectorMark acc) throws ParseException {
                                           Node n ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case LPAREN:
@@ -1168,7 +1131,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
     throw new Error("Missing return statement in function");
   }
 
-  final public Node BlankNodePropertyList(TripleCollector acc) throws ParseException {
+  final public Node BlankNodePropertyList(TripleCollectorMark acc) throws ParseException {
                                                     Token t ;
     t = jj_consume_token(LBRACKET);
       Node n = createBNode(t.beginLine, t.beginColumn) ;
@@ -1179,7 +1142,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
   }
 
 // ------- RDF collections
-  final public Node Collection(TripleCollector acc) throws ParseException {
+  final public Node Collection(TripleCollectorMark acc) throws ParseException {
       Node listHead = nRDFnil ; Node lastCell = null ; int mark ; Node n ; Token t ;
     t = jj_consume_token(LPAREN);
     label_15:
@@ -1189,8 +1152,9 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
          listHead = cell ;
       if ( lastCell != null )
         insert(acc, lastCell, nRDFrest, cell) ;
+      mark = acc.mark() ;
       n = GraphNode(acc);
-      insert(acc, cell, nRDFfirst, n) ;
+      insert(acc, mark, cell, nRDFfirst, n) ;
       lastCell = cell ;
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case IRIref:
@@ -1233,7 +1197,7 @@ public class SPARQLParser10 extends SPARQLParser10Base implements SPARQLParser10
   }
 
 // -------- Nodes in a graph pattern or template
-  final public Node GraphNode(TripleCollector acc) throws ParseException {
+  final public Node GraphNode(TripleCollectorMark acc) throws ParseException {
                                         Node n ;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case IRIref:

http://git-wip-us.apache.org/repos/asf/jena/blob/2cb175d2/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
index 24f6c66..c6a5b26 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
@@ -34,16 +34,24 @@ import org.apache.jena.sparql.serializer.FormatterTemplate;
 import org.apache.jena.sparql.util.Iso;
 import org.apache.jena.sparql.util.NodeIsomorphismMap;
 
-/** Triples template. */
+/** Quads/Triples template. */
 
 public class Template 
 {
     static final int HashTemplateGroup     = 0xB1 ;
     private final QuadAcc qp ;
+    private final BasicPattern bgp;
     
     public Template(QuadAcc qp)
     { 
         this.qp = qp ;
+        this.bgp = null;
+    }
+    
+    public Template(BasicPattern bgp)
+    { 
+    	this.bgp = bgp;
+    	this.qp = null;
     }
 
 //    public void addTriple(Triple t) { quads.addTriple(t) ; }
@@ -55,10 +63,11 @@ public class Template
 //    public void addTriplePath(int index, TriplePath path)
 //    { throw new ARQException("Triples-only collector") ; }
 
-
-//    public BasicPattern getBGP()        { return bgp ; }
     public BasicPattern getBGP()
     { 
+    	if (this.bgp != null){
+    		return this.bgp;
+    	}
     	BasicPattern bgp = new BasicPattern();
     	for(Quad q: qp.getQuads()){
     		bgp.add(q.asTriple());
@@ -67,13 +76,25 @@ public class Template
     }
     public List<Triple> getTriples()
     { 
+    	if(this.bgp != null){
+    		return this.bgp.getList();
+    	}
     	List<Triple> triples = new ArrayList<Triple>();
     	for(Quad q: qp.getQuads()){
     		triples.add(q.asTriple());
     	}
     	return triples;
     }
-    public List<Quad> getQuads()		{ return qp.getQuads() ; }
+    public List<Quad> getQuads() {
+    	if( this.bgp != null){
+    		List<Quad> quads = new ArrayList<Quad>();
+    		for(Triple triple: this.bgp.getList()){
+    			quads.add( new Quad( Quad.tripleInQuad, triple ) ); 
+    		}
+    		return quads;
+    	}   	
+    	return qp.getQuads() ; 
+    }
     // -------------------------
 
     public void subst(Collection<Triple> acc, Map<Node, Node> bNodeMap, Binding b)
@@ -91,7 +112,7 @@ public class Template
     { 
         // BNode invariant hashCode. 
         int calcHashCode = Template.HashTemplateGroup ;
-        for ( Quad q : qp.getQuads() )
+        for ( Quad q : getQuads() )
             calcHashCode ^=  hash(q) ^ calcHashCode<<1 ; 
         return calcHashCode ;
     }
@@ -108,6 +129,7 @@ public class Template
 
     private static int hashNode(Node node)
     {
+    	if ( node == null ) return 37 ; 
         if ( node.isBlank() ) return 59 ;
         return node.hashCode() ;
     }


[39/50] [abbrv] jena git commit: Add 4 tests of the combinations of 2 types of construct query strings and 2 kinds of query methods (exeContructTriples(), exeConstructQuads) for ARQ.

Posted by an...@apache.org.
Add 4 tests of the combinations of 2 types of construct query strings
and 2 kinds of query methods (exeContructTriples(), exeConstructQuads)
for ARQ.

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 03a321ffde733ac2d493200e82b1f31d7529fe3f
Parents: f27623d
Author: confidencesun <co...@gmail.com>
Authored: Fri Aug 14 16:31:08 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Fri Aug 14 16:31:08 2015 +0800

----------------------------------------------------------------------
 .../org/apache/jena/sparql/api/TestAPI.java     | 134 +++++++++++++++++--
 1 file changed, 125 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/03a321ff/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java b/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
index 370507c..5393cda 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
@@ -18,16 +18,36 @@
 
 package org.apache.jena.sparql.api;
 
-import java.util.Iterator ;
+import java.util.Iterator;
 
-import org.apache.jena.atlas.junit.BaseTest ;
-import org.apache.jena.graph.Triple ;
-import org.apache.jena.query.* ;
-import org.apache.jena.rdf.model.* ;
-import org.apache.jena.sparql.graph.GraphFactory ;
-import org.apache.jena.vocabulary.OWL ;
-import org.apache.jena.vocabulary.RDF ;
-import org.junit.Test ;
+import org.apache.jena.atlas.junit.BaseTest;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.query.DatasetFactory;
+import org.apache.jena.query.Query;
+import org.apache.jena.query.QueryExecution;
+import org.apache.jena.query.QueryExecutionFactory;
+import org.apache.jena.query.QueryFactory;
+import org.apache.jena.query.QuerySolution;
+import org.apache.jena.query.QuerySolutionMap;
+import org.apache.jena.query.ResultSet;
+import org.apache.jena.query.ResultSetFormatter;
+import org.apache.jena.query.Syntax;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.ModelFactory;
+import org.apache.jena.rdf.model.Property;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.rdf.model.ResourceFactory;
+import org.apache.jena.rdf.model.Statement;
+import org.apache.jena.sparql.core.DatasetGraph;
+import org.apache.jena.sparql.core.DatasetGraphFactory;
+import org.apache.jena.sparql.core.Quad;
+import org.apache.jena.sparql.graph.GraphFactory;
+import org.apache.jena.sparql.util.IsoMatcher;
+import org.apache.jena.sparql.util.ModelUtils;
+import org.apache.jena.vocabulary.OWL;
+import org.apache.jena.vocabulary.RDF;
+import org.junit.Test;
 
 public class TestAPI extends BaseTest
 {
@@ -38,10 +58,19 @@ public class TestAPI extends BaseTest
     static Property p1 = m.createProperty(ns+"p1") ;
     static Property p2 = m.createProperty(ns+"p2") ;
     static Property p3 = m.createProperty(ns+"p3") ;
+    static Model dft = GraphFactory.makeJenaDefaultModel() ;
+    static Resource s = dft.createResource(ns+"s") ;
+    static Property p = dft.createProperty(ns+"p") ;
+    static Resource o = dft.createResource(ns+"o") ;
+    static Resource g1 = dft.createResource(ns+"g1") ;
+    static Dataset d = null;
     static  {
         m.add(r1, p1, "x1") ;
         m.add(r1, p2, "X2") ; // NB Capital
         m.add(r1, p3, "y1") ;
+        dft.add(s, p, o) ;
+        d = DatasetFactory.create(dft);
+        d.addNamedModel(g1.getURI(), m);
     }
     
     @Test public void testInitialBindingsConstruct1()
@@ -298,6 +327,93 @@ public class TestAPI extends BaseTest
 //        }
 //    }
     
+    // ARQ Construct Quad Tests:
+    // Two types of query strings: a) construct triple string; b) construct quad string;
+    // Two kinds of query methods: 1) execTriples(); 2) execQuads();
+    
+    // Test a)+1)
+    @Test public void testARQConstructQuad_a_1() {
+        String queryString = "CONSTRUCT { ?s ?p ?o } WHERE { GRAPH ?g { ?s ?p ?o } }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        
+        Iterator<Triple> ts = qExec.execConstructTriples();
+        Model result = ModelFactory.createDefaultModel();
+        while (ts.hasNext()) {
+            Triple t = ts.next();
+            Statement stmt = ModelUtils.tripleToStatement(result, t);
+            if ( stmt != null )
+                result.add(stmt);
+        }
+        assertEquals(3, result.size());
+        assertTrue(m.isIsomorphicWith(result));
+    }
+    
+    // Test b)+2)
+    @Test public void testARQConstructQuad_b_2() {
+        String queryString = "CONSTRUCT { GRAPH ?g1 {?s ?p ?o} } WHERE { ?s ?p ?o. GRAPH ?g1 {?s1 ?p1 'x1'} }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        
+        Iterator<Quad> ts = qExec.execConstructQuads();
+        DatasetGraph result = DatasetGraphFactory.createMem();
+        long count = 0;
+        while (ts.hasNext()) {
+            count++;
+            Quad qd = ts.next();
+            result.add(qd);
+        }
+        
+        DatasetGraph expected = DatasetGraphFactory.createMem();
+        expected.add(g1.asNode(), s.asNode(), p.asNode(), o.asNode());
+        
+        assertEquals(1, count); // 3 duplicated quads
+        assertTrue(IsoMatcher.isomorphic( expected, result) );
+        
+    }
+    
+    // Test a)+2): Quads constructed in the default graph
+    @Test public void testARQConstructQuad_a_2() {
+        String queryString = "CONSTRUCT { ?s ?p ?o } WHERE { ?s ?p ?o }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        
+        Iterator<Quad> ts = qExec.execConstructQuads();
+        DatasetGraph result = DatasetGraphFactory.createMem();
+        long count = 0;
+        while (ts.hasNext()) {
+            count++;
+            result.add( ts.next() );
+        }
+        DatasetGraph expected = DatasetGraphFactory.createMem();
+        expected.add(Quad.defaultGraphNodeGenerated, s.asNode(), p.asNode(), o.asNode());
+        assertEquals(1, count);
+        assertTrue(IsoMatcher.isomorphic( expected, result) );
+        
+    }
+    
+    // Test b)+1): Projection on default graph, ignoring constructing named graphs
+    @Test public void testARQConstructQuad_b_1() {
+        String queryString = "CONSTRUCT { ?s ?p ?o GRAPH ?g1 { ?s1 ?p1 ?o1 } } WHERE { ?s ?p ?o. GRAPH ?g1 { ?s1 ?p1 ?o1 } }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        
+        Iterator<Triple> ts = qExec.execConstructTriples();
+        Model result = ModelFactory.createDefaultModel();
+        while (ts.hasNext()) {
+            Triple t = ts.next();
+            Statement stmt = ModelUtils.tripleToStatement(result, t);
+            if ( stmt != null )
+                result.add(stmt);
+        }
+        assertEquals(1, result.size());
+        assertTrue(dft.isIsomorphicWith(result));
+    }
+    
     private QueryExecution makeQExec(String queryString)
     {
         Query q = QueryFactory.create(queryString) ;


[49/50] [abbrv] jena git commit: Merge branch 'master' into JENA-491-construct-quads

Posted by an...@apache.org.
Merge branch 'master' into JENA-491-construct-quads


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

Branch: refs/heads/JENA-491-construct-quads
Commit: 5aa889c7113493c5b8ef6449d8b3d1ce57f5f1f4
Parents: bdb1101 43efe52
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Aug 17 14:03:22 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Aug 17 14:03:22 2015 +0100

----------------------------------------------------------------------
 apache-jena/bin/tdbloader2                      |   4 +-
 apache-jena/bin/tdbloader2common                |   6 +-
 apache-jena/bin/tdbloader2data                  |   6 +-
 apache-jena/bin/tdbloader2index                 |   4 +-
 .../main/java/arq/cmdline/ModLangOutput.java    |  33 +-
 .../java/org/apache/jena/riot/RDFDataMgr.java   | 422 +++++++------------
 .../jena/riot/adapters/JenaReadersWriters.java  |   3 -
 .../src/main/java/riotcmd/CmdLangParse.java     |  79 ++--
 8 files changed, 203 insertions(+), 354 deletions(-)
----------------------------------------------------------------------



[13/50] [abbrv] jena git commit: commit ExampleConstructQuads.java

Posted by an...@apache.org.
commit ExampleConstructQuads.java

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 5e56c1f2b0e2b0b2f6a1e7fda9fe17b6254176da
Parents: d586256
Author: confidencesun <co...@gmail.com>
Authored: Sun Jun 21 21:28:15 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Sun Jun 21 21:28:15 2015 +0800

----------------------------------------------------------------------
 .../constructquads/ExampleConstructQuads.java   | 141 +++++++++++++++++++
 1 file changed, 141 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/5e56c1f2/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
----------------------------------------------------------------------
diff --git a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
new file mode 100644
index 0000000..580dc6c
--- /dev/null
+++ b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
@@ -0,0 +1,141 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package arq.examples.constructquads;
+
+import java.util.Iterator;
+
+import org.apache.jena.graph.Triple;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.query.DatasetFactory;
+import org.apache.jena.query.Query;
+import org.apache.jena.query.QueryExecution;
+import org.apache.jena.query.QueryExecutionFactory;
+import org.apache.jena.query.QueryFactory;
+import org.apache.jena.query.Syntax;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.ModelFactory;
+import org.apache.jena.rdf.model.Property;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.sparql.core.Quad;
+import org.apache.jena.util.PrintUtil;
+
+public class ExampleConstructQuads {
+	public static void main(String[] args) {
+
+		// create testing data :
+		// 1) default graph data
+		Model model = ModelFactory.createDefaultModel();
+		Resource s = model.createResource("http://eg.com/s");
+		Property p = model.createProperty("http://eg.com/p");
+		Resource o = model.createResource("http://eg.com/o");
+		model.add(s, p, o);
+		Dataset dataset = DatasetFactory.create(model);
+		// 2) named graph data
+		Model model1 = ModelFactory.createDefaultModel();
+		Resource s1 = model.createResource("http://eg.com/s1");
+		Property p1 = model.createProperty("http://eg.com/p1");
+		Resource o1 = model.createResource("http://eg.com/o1");
+		model1.add(s1, p1, o1);
+		dataset.addNamedModel("<http://eg.com/g1>", model1);
+
+
+		// construct named graph
+		System.out.println("construct named graph:");
+		String queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+		Query query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		QueryExecution qexec = QueryExecutionFactory.create(query, dataset);
+		Iterator<Quad> quads = qexec.execConstructQuads();
+		PrintUtil.printOut(quads);
+		qexec.close();
+		
+		// construct default graph 1
+		System.out.println("construct default graph 1:");
+		queryString = "CONSTRUCT {  {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		qexec = QueryExecutionFactory.create(query, dataset);
+		quads = qexec.execConstructQuads();
+		PrintUtil.printOut(quads);
+		qexec.close();
+		
+		// construct default graph 2
+		System.out.println("construct default graph 2:");
+		queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o}  WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		qexec = QueryExecutionFactory.create(query, dataset);
+		quads = qexec.execConstructQuads();
+		PrintUtil.printOut(quads);
+		qexec.close();
+		
+		// construct triples
+		System.out.println("construct default graph 2:");
+		queryString = "CONSTRUCT {<http://eg.com/s1> <http://eg.com/p1> ?o}  WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		qexec = QueryExecutionFactory.create(query, dataset);
+		Iterator<Triple> triples = qexec.execConstructTriples();
+		PrintUtil.printOut(triples);
+		qexec.close();
+		
+		//construct dataset
+		System.out.println("construct dataset:");
+		queryString = "CONSTRUCT { GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		qexec = QueryExecutionFactory.create(query, dataset);
+		Dataset d = qexec.execConstructDataset();
+		PrintUtil.printOut(d.getNamedModel("<http://eg.com/g1>").listStatements());
+		qexec.close();
+		
+		//short form 1
+		System.out.println("short form 1:");
+		queryString = "CONSTRUCT WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		qexec = QueryExecutionFactory.create(query, dataset);
+		quads = qexec.execConstructQuads();
+		PrintUtil.printOut(quads);
+		qexec.close();
+		
+		//short form 2
+		System.out.println("short form 2:");
+		queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		qexec = QueryExecutionFactory.create(query, dataset);
+		quads = qexec.execConstructQuads();
+		PrintUtil.printOut(quads);
+		qexec.close();
+		
+		//short form 3
+		System.out.println("short form 3:");
+		queryString = "CONSTRUCT WHERE{ <http://eg.com/s> <http://eg.com/p> ?o }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		qexec = QueryExecutionFactory.create(query, dataset);
+		triples = qexec.execConstructTriples();
+		PrintUtil.printOut(triples);
+		qexec.close();
+		
+		//short form 4
+		System.out.println("short form 4:");
+		queryString = "CONSTRUCT WHERE{ {<http://eg.com/s> <http://eg.com/p> ?o} }";
+		query = QueryFactory.create(queryString, Syntax.syntaxARQ);
+		qexec = QueryExecutionFactory.create(query, dataset);
+		quads = qexec.execConstructQuads();
+		PrintUtil.printOut(quads);
+		qexec.close();
+		
+
+	}
+}


[11/50] [abbrv] jena git commit: add licence info for ExampleConstructQuads; retain QuadAcc unchanged

Posted by an...@apache.org.
add licence info for ExampleConstructQuads; retain QuadAcc unchanged

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

Branch: refs/heads/JENA-491-construct-quads
Commit: d0ce13b2587905859c9ed854f5114b8c86c2125c
Parents: 5076b1e
Author: confidencesun <co...@gmail.com>
Authored: Fri Jun 19 16:53:07 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Fri Jun 19 16:53:07 2015 +0800

----------------------------------------------------------------------
 .../jena/sparql/modify/request/QuadAcc.java      | 19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/d0ce13b2/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/QuadAcc.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/QuadAcc.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/QuadAcc.java
index 5728f24..bf97295 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/QuadAcc.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/QuadAcc.java
@@ -18,13 +18,12 @@
 
 package org.apache.jena.sparql.modify.request;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import java.util.ArrayList ;
+import java.util.Collections ;
+import java.util.List ;
 
-import org.apache.jena.atlas.lib.SinkToCollection;
-import org.apache.jena.sparql.core.BasicPattern;
-import org.apache.jena.sparql.core.Quad;
+import org.apache.jena.atlas.lib.SinkToCollection ;
+import org.apache.jena.sparql.core.Quad ;
 
 /** Accumulate quads (including allowing variables) during parsing. */
 public class QuadAcc extends QuadAccSink
@@ -61,13 +60,5 @@ public class QuadAcc extends QuadAccSink
         QuadAcc acc = (QuadAcc)other ;
         return quads.equals(acc.quads) ; 
     }
-    
-    public BasicPattern getBGP(){
-    	BasicPattern bgp = new BasicPattern();
-    	for(Quad qd: this.quadsView){
-    		bgp.add(qd.asTriple());
-    	}
-    	return bgp;
-    }
 
 }


[16/50] [abbrv] jena git commit: Merge pull request #9 from apache/master

Posted by an...@apache.org.
Merge pull request #9 from apache/master

pull master 2015-07-24

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 6e4379e5d4ab94d5689813edeef1edfa496f9d33
Parents: e58b62c 968f7e0
Author: confidencesun <co...@gmail.com>
Authored: Fri Jul 24 06:41:55 2015 -0300
Committer: confidencesun <co...@gmail.com>
Committed: Fri Jul 24 06:41:55 2015 -0300

----------------------------------------------------------------------
 apache-jena/bin/arq                             |  6 +--
 apache-jena/bin/infer                           |  6 +--
 apache-jena/bin/iri                             |  6 +--
 apache-jena/bin/juuid                           |  6 +--
 apache-jena/bin/nquads                          |  6 +--
 apache-jena/bin/ntriples                        |  6 +--
 apache-jena/bin/qparse                          |  6 +--
 apache-jena/bin/rdfcat                          |  6 +--
 apache-jena/bin/rdfcompare                      |  6 +--
 apache-jena/bin/rdfcopy                         |  6 +--
 apache-jena/bin/rdfparse                        |  6 +--
 apache-jena/bin/rdfxml                          |  6 +--
 apache-jena/bin/riot                            |  6 +--
 apache-jena/bin/rset                            |  6 +--
 apache-jena/bin/rsparql                         |  6 +--
 apache-jena/bin/rupdate                         |  6 +--
 apache-jena/bin/schemagen                       |  6 +--
 apache-jena/bin/sparql                          |  6 +--
 apache-jena/bin/tdbbackup                       |  6 +--
 apache-jena/bin/tdbdump                         |  6 +--
 apache-jena/bin/tdbloader                       |  6 +--
 apache-jena/bin/tdbloader2                      |  8 +--
 apache-jena/bin/tdbloader2common                |  3 ++
 apache-jena/bin/tdbloader2data                  | 15 +++---
 apache-jena/bin/tdbloader2index                 | 36 +++++++------
 apache-jena/bin/tdbquery                        |  6 +--
 apache-jena/bin/tdbstats                        |  6 +--
 apache-jena/bin/tdbupdate                       |  6 +--
 apache-jena/bin/trig                            |  6 +--
 apache-jena/bin/turtle                          |  6 +--
 apache-jena/bin/uparse                          |  6 +--
 apache-jena/bin/update                          |  6 +--
 apache-jena/bin/utf8                            |  6 +--
 apache-jena/bin/wwwdec                          |  6 +--
 apache-jena/bin/wwwenc                          |  6 +--
 apache-jena/jena-log4j.properties               | 29 ++--------
 apache-jena/template.bin                        |  6 +--
 .../java/org/apache/jena/riot/RDFLanguages.java |  2 +-
 .../apache/jena/riot/TestJenaReaderRIOT.java    |  6 ++-
 .../java/org/apache/jena/riot/TestLangRIOT.java |  3 +-
 .../jena/riot/stream/TestStreamManager.java     |  6 ++-
 jena-arq/testing/RIOT/Reader/D.json             |  5 --
 jena-arq/testing/RIOT/Reader/D.jsonld           | 10 ++++
 jena-arq/testing/RIOT/Reader/D.rj               |  5 ++
 jena-arq/testing/RIOT/StreamManager/D.json      |  5 --
 jena-arq/testing/RIOT/StreamManager/D.jsonld    | 10 ++++
 jena-arq/testing/RIOT/StreamManager/D.rj        |  5 ++
 .../org/apache/jena/atlas/logging/LogCtl.java   | 57 +++++++++-----------
 .../org/apache/jena/query/text/TextQueryPF.java |  4 +-
 .../text/AbstractTestDatasetWithTextIndex.java  | 16 ++++++
 .../AbstractTestDatasetWithTextIndexBase.java   |  5 +-
 .../org/apache/jena/query/text/TestTextTDB.java | 26 +++++++++
 52 files changed, 221 insertions(+), 227 deletions(-)
----------------------------------------------------------------------



[50/50] [abbrv] jena git commit: Merge commit 'refs/pull/91/head' of github.com:apache/jena into JENA-491-construct-quads

Posted by an...@apache.org.
Merge commit 'refs/pull/91/head' of github.com:apache/jena into JENA-491-construct-quads


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

Branch: refs/heads/JENA-491-construct-quads
Commit: d828c378a8d75595b05607bb1688b106c56930e3
Parents: 5aa889c 69f1ee2
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Aug 17 14:03:30 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Aug 17 14:03:30 2015 +0100

----------------------------------------------------------------------
 .../sparql/engine/http/QueryEngineHTTP.java     |  30 +-
 .../main/java/org/apache/jena/fuseki/DEF.java   |   7 +
 .../jena/fuseki/servlets/ResponseDataset.java   | 134 +++
 .../jena/fuseki/servlets/SPARQL_Query.java      | 838 ++++++++++---------
 .../java/org/apache/jena/fuseki/TestQuery.java  | 188 ++---
 5 files changed, 719 insertions(+), 478 deletions(-)
----------------------------------------------------------------------



[30/50] [abbrv] jena git commit: formatting of should be :g in FmtTemplate

Posted by an...@apache.org.
formatting of <http://example/g> should be :g in FmtTemplate

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 2bb0e5876a2049e4fd24d70cd240a247007f80c8
Parents: 36d32da
Author: confidencesun <co...@gmail.com>
Authored: Thu Aug 6 11:00:15 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Thu Aug 6 11:00:15 2015 +0800

----------------------------------------------------------------------
 .../main/java/org/apache/jena/sparql/serializer/FmtTemplate.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/2bb0e587/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
index facb963..0621a8a 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
@@ -69,7 +69,7 @@ public class FmtTemplate extends FormatterBase
 
         	out.print("GRAPH");
       		out.print(" ");
-      		out.print(FmtUtils.stringForNode(quad.getGraph()));
+      		out.print(slotToString(quad.getGraph()));
       		out.print(" ");
       		
       		out.newline() ;


[23/50] [abbrv] jena git commit: fix bugs for qparse of JENA-491

Posted by an...@apache.org.
fix bugs for qparse of JENA-491

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 68254a2be094342aec75ff6e7028af5ab36e3b61
Parents: 9920b52
Author: confidencesun <co...@gmail.com>
Authored: Wed Jul 29 11:29:51 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Wed Jul 29 11:29:51 2015 +0800

----------------------------------------------------------------------
 .../constructquads/ExampleConstructQuads.java   | 10 +++++++-
 .../jena/sparql/lang/arq/ARQParserBase.java     |  6 +++--
 .../jena/sparql/serializer/FmtTemplate.java     | 26 +++++++++++++++++---
 .../org/apache/jena/sparql/syntax/Template.java | 19 +++++++++++++-
 4 files changed, 54 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/68254a2b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
----------------------------------------------------------------------
diff --git a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
index ae724ec..4ef097e 100644
--- a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
+++ b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
@@ -65,6 +65,7 @@ public class ExampleConstructQuads {
 		Iterator<Quad> quads = qexec.execConstructQuads();
 		PrintUtil.printOut(quads);
 		qexec.close();
+		arq.qparse.main("--in", "arq", queryString);
 		
 		// construct default graph 1
 		System.out.println("construct default graph 1:");
@@ -74,6 +75,7 @@ public class ExampleConstructQuads {
 		quads = qexec.execConstructQuads();
 		PrintUtil.printOut(quads);
 		qexec.close();
+		arq.qparse.main("--in", "arq", queryString);
 		
 		// construct default graph 2
 		System.out.println("construct default graph 2:");
@@ -83,6 +85,7 @@ public class ExampleConstructQuads {
 		quads = qexec.execConstructQuads();
 		PrintUtil.printOut(quads);
 		qexec.close();
+		arq.qparse.main("--in", "arq", queryString);
 		
 		// construct triples
 		System.out.println("construct default graph 2:");
@@ -92,6 +95,7 @@ public class ExampleConstructQuads {
 		Iterator<Triple> triples = qexec.execConstructTriples();
 		PrintUtil.printOut(triples);
 		qexec.close();
+		arq.qparse.main("--in", "arq", queryString);
 		
 		//construct dataset
 		System.out.println("construct dataset:");
@@ -101,6 +105,7 @@ public class ExampleConstructQuads {
 		Dataset d = qexec.execConstructDataset();
 		RDFDataMgr.write(System.out, d, Lang.TRIG) ;
 		qexec.close();
+		arq.qparse.main("--in", "arq", queryString);
 		
 		//short form 1
 		System.out.println("short form 1:");
@@ -110,6 +115,7 @@ public class ExampleConstructQuads {
 		quads = qexec.execConstructQuads();
 		PrintUtil.printOut(quads);
 		qexec.close();
+		arq.qparse.main("--in", "arq", queryString);
 		
 		//short form 2
 		System.out.println("short form 2:");
@@ -119,6 +125,7 @@ public class ExampleConstructQuads {
 		quads = qexec.execConstructQuads();
 		PrintUtil.printOut(quads);
 		qexec.close();
+		arq.qparse.main("--in", "arq", queryString);
 		
 		//short form 3
 		System.out.println("short form 3:");
@@ -128,6 +135,7 @@ public class ExampleConstructQuads {
 		triples = qexec.execConstructTriples();
 		PrintUtil.printOut(triples);
 		qexec.close();
+		arq.qparse.main("--in", "arq", queryString);
 		
 		//short form 4
 		System.out.println("short form 4:");
@@ -137,7 +145,7 @@ public class ExampleConstructQuads {
 		quads = qexec.execConstructQuads();
 		PrintUtil.printOut(quads);
 		qexec.close();
-		
+		arq.qparse.main("--in", "arq", queryString);
 
 	}
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/68254a2b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
index 3a11805..eac508e 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParserBase.java
@@ -93,8 +93,10 @@ class ARQParserBase
         }
         for(Node n: graphs.keySet()){
           Element el = new ElementPathBlock(graphs.get(n));
-          if(! Quad.defaultGraphIRI.equals(n) ){
-            el = new ElementNamedGraph(n, el);
+          if(! Quad.defaultGraphNodeGenerated.equals(n) ){
+        	ElementGroup e = new ElementGroup();
+        	e.addElement(el);
+            el = new ElementNamedGraph(n, e);
           }
           elg.addElement(el);
         }

http://git-wip-us.apache.org/repos/asf/jena/blob/68254a2b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
index a1b65fd..d422d1c 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/serializer/FmtTemplate.java
@@ -18,9 +18,10 @@
 
 package org.apache.jena.sparql.serializer;
 
-import org.apache.jena.atlas.io.IndentedLineBuffer ;
-import org.apache.jena.atlas.io.IndentedWriter ;
-import org.apache.jena.sparql.syntax.Template ;
+import org.apache.jena.atlas.io.IndentedLineBuffer;
+import org.apache.jena.atlas.io.IndentedWriter;
+import org.apache.jena.sparql.syntax.Template;
+import org.apache.jena.sparql.util.FmtUtils;
 
 public class FmtTemplate extends FormatterBase
     implements FormatterTemplate 
@@ -51,6 +52,19 @@ public class FmtTemplate extends FormatterBase
     @Override
     public void format(Template template)
     {
+    	
+    	if (template.isConstructQuadTemplate()){
+            out.print("{") ;
+            out.incIndent(INDENT) ;
+            out.pad() ;
+            
+    		out.print("GRAPH");
+    		out.print(" ");
+    		out.print(FmtUtils.stringForNode(template.getGraphNode()));
+    		out.print(" ");
+    	}
+    	
+    
         out.print("{") ;
         out.incIndent(INDENT) ;
         out.pad() ;
@@ -60,6 +74,12 @@ public class FmtTemplate extends FormatterBase
         out.decIndent(INDENT) ;
         out.print("}") ;
         out.newline() ;
+        
+    	if (template.isConstructQuadTemplate()){
+            out.decIndent(INDENT) ;
+            out.print("}") ;
+            out.newline() ;
+    	}
 
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/68254a2b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
index 248ce7e..eb970c1 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/Template.java
@@ -53,6 +53,17 @@ public class Template
     	this.bgp = bgp;
     	this.qp = null;
     }
+    
+    public boolean isConstructQuadTemplate(){
+    	return this.qp != null && ! this.getQuads().isEmpty();
+    }
+    
+    public Node getGraphNode() {
+    	if (!this.isConstructQuadTemplate()){
+    		return null;
+    	}
+    	return this.getQuads().get(0).getGraph();
+    }
 
 //    public void addTriple(Triple t) { quads.addTriple(t) ; }
 //    public int mark() { return quads.mark() ; }
@@ -123,9 +134,15 @@ public class Template
         hash = hashNode(quad.getSubject())   ^ hash<<1 ;
         hash = hashNode(quad.getPredicate()) ^ hash<<1 ;
         hash = hashNode(quad.getObject())    ^ hash<<1 ;
-        hash = hashNode(quad.getGraph())     ^ hash<<1 ;
+        hash = hashGraph(quad.getGraph())    ^ hash<<1 ;
         return hash ;
     }
+    
+    private static int hashGraph(Node node){
+    	if ( node == null ) return Quad.defaultGraphNodeGenerated.hashCode() ; 
+        if ( node.isBlank() ) return 59 ;
+        return node.hashCode() ;
+    }
 
     private static int hashNode(Node node)
     {


[27/50] [abbrv] jena git commit: create run-construct-quad-tests with test files

Posted by an...@apache.org.
create run-construct-quad-tests with test files

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

Branch: refs/heads/JENA-491-construct-quads
Commit: 84f6f989f0e40695ba675e81e9785e3a558d03df
Parents: 69f5ee2
Author: confidencesun <co...@gmail.com>
Authored: Wed Aug 5 11:07:49 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Wed Aug 5 11:07:49 2015 +0800

----------------------------------------------------------------------
 .../constructquads/ExampleConstructQuads.java   | 40 +++++++++++++++-----
 .../Syntax-ARQ/syntax-quad-construct-01.arq     |  3 ++
 .../Syntax-ARQ/syntax-quad-construct-02.arq     |  3 ++
 .../Syntax-ARQ/syntax-quad-construct-03.arq     |  3 ++
 .../Syntax-ARQ/syntax-quad-construct-04.arq     |  9 +++++
 .../Syntax-ARQ/syntax-quad-construct-05.arq     |  9 +++++
 .../Syntax-ARQ/syntax-quad-construct-06.arq     | 14 +++++++
 .../Syntax-ARQ/syntax-quad-construct-07.arq     |  7 ++++
 .../Syntax-ARQ/syntax-quad-construct-08.arq     |  9 +++++
 9 files changed, 87 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/84f6f989/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
----------------------------------------------------------------------
diff --git a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
index dcc587b..5b4efd6 100644
--- a/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
+++ b/jena-arq/src-examples/arq/examples/constructquads/ExampleConstructQuads.java
@@ -18,6 +18,12 @@
 
 package arq.examples.constructquads;
 
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FilenameFilter;
+import java.io.IOException;
 import java.util.Iterator;
 
 import org.apache.jena.graph.Triple;
@@ -38,7 +44,7 @@ import org.apache.jena.sparql.core.Quad;
 import org.apache.jena.util.PrintUtil;
 
 public class ExampleConstructQuads {
-	public static void main(String[] args) {
+	public static void main(String[] args) throws FileNotFoundException, IOException {
 
 		// create testing data :
 		// 1) default graph data
@@ -64,7 +70,6 @@ public class ExampleConstructQuads {
 				.create(query, dataset)) {
 			Iterator<Quad> quads = qexec.execConstructQuads();
 			PrintUtil.printOut(quads);
-			qexec.close();
 		}
 		arq.qparse.main("--in", "arq", queryString);
 
@@ -75,7 +80,6 @@ public class ExampleConstructQuads {
 				.create(query, dataset)) {
 			Iterator<Quad> quads = qexec.execConstructQuads();
 			PrintUtil.printOut(quads);
-			qexec.close();
 		}
 		arq.qparse.main("--in", "arq", queryString);
 
@@ -87,7 +91,6 @@ public class ExampleConstructQuads {
 				.create(query, dataset)) {
 			Iterator<Quad> quads = qexec.execConstructQuads();
 			PrintUtil.printOut(quads);
-			qexec.close();
 		}
 		arq.qparse.main("--in", "arq", queryString);
 
@@ -99,7 +102,6 @@ public class ExampleConstructQuads {
 				.create(query, dataset)) {
 			Iterator<Triple> triples = qexec.execConstructTriples();
 			PrintUtil.printOut(triples);
-			qexec.close();
 		}
 		arq.qparse.main("--in", "arq", queryString);
 
@@ -111,7 +113,6 @@ public class ExampleConstructQuads {
 				.create(query, dataset)) {
 			Dataset d = qexec.execConstructDataset();
 			RDFDataMgr.write(System.out, d, Lang.TRIG);
-			qexec.close();
 		}
 		arq.qparse.main("--in", "arq", queryString);
 
@@ -123,7 +124,6 @@ public class ExampleConstructQuads {
 				.create(query, dataset)) {
 			Iterator<Quad> quads = qexec.execConstructQuads();
 			PrintUtil.printOut(quads);
-			qexec.close();
 		}
 		arq.qparse.main("--in", "arq", queryString);
 
@@ -135,7 +135,6 @@ public class ExampleConstructQuads {
 				.create(query, dataset)) {
 			Iterator<Quad> quads = qexec.execConstructQuads();
 			PrintUtil.printOut(quads);
-			qexec.close();
 		}
 		arq.qparse.main("--in", "arq", queryString);
 
@@ -147,7 +146,6 @@ public class ExampleConstructQuads {
 				.create(query, dataset)) {
 			Iterator<Triple> triples = qexec.execConstructTriples();
 			PrintUtil.printOut(triples);
-			qexec.close();
 		}
 		arq.qparse.main("--in", "arq", queryString);
 
@@ -159,9 +157,31 @@ public class ExampleConstructQuads {
 				.create(query, dataset)) {
 			Iterator<Quad> quads = qexec.execConstructQuads();
 			PrintUtil.printOut(quads);
-			qexec.close();
 		}
 		arq.qparse.main("--in", "arq", queryString);
 
+		// run-construct-quad-test
+		System.out.println("run-construct-quad-test:");
+		File[] tests = new File("testing/ARQ/Syntax/Syntax-ARQ")
+				.listFiles(new FilenameFilter() {
+					public boolean accept(File dir, String fname) {
+						System.out.println(fname);
+						if (fname.startsWith("syntax-quad-construct-")) {
+							return true;
+						}
+						return false;
+					}
+				});
+		for (File test : tests) {
+			System.out.println("======== File: "+test.getName());
+			try (BufferedReader br = new BufferedReader(new FileReader(test))) {
+				String line = null;
+				while( (line = br.readLine()) != null){
+					System.out.println(line);
+				}
+			}
+			System.out.println("==== Output of qparse --file "+ test.getName());
+			arq.qparse.main("--in", "arq", "--file", test.getAbsolutePath());
+		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/84f6f989/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-01.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-01.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-01.arq
new file mode 100644
index 0000000..3e43045
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-01.arq
@@ -0,0 +1,3 @@
+PREFIX : <http://example/>
+
+CONSTRUCT { GRAPH :g { :s :p :o } } WHERE {}

http://git-wip-us.apache.org/repos/asf/jena/blob/84f6f989/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-02.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-02.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-02.arq
new file mode 100644
index 0000000..f1bd671
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-02.arq
@@ -0,0 +1,3 @@
+PREFIX : <http://example/>
+
+CONSTRUCT { GRAPH ?g { ?s ?p ?o } } WHERE { ?s ?p ?o }

http://git-wip-us.apache.org/repos/asf/jena/blob/84f6f989/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-03.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-03.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-03.arq
new file mode 100644
index 0000000..2e7c0a8
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-03.arq
@@ -0,0 +1,3 @@
+PREFIX : <http://example/>
+
+CONSTRUCT { :s :p :o } WHERE {}

http://git-wip-us.apache.org/repos/asf/jena/blob/84f6f989/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-04.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-04.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-04.arq
new file mode 100644
index 0000000..7638a43
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-04.arq
@@ -0,0 +1,9 @@
+PREFIX : <http://example/>
+
+CONSTRUCT {
+   GRAPH ?g { :s :p :o }
+   ?s ?p ?o
+   }
+WHERE
+   { GRAPH ?g { ?s ?p ?o } }
+

http://git-wip-us.apache.org/repos/asf/jena/blob/84f6f989/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-05.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-05.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-05.arq
new file mode 100644
index 0000000..d9b1bda
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-05.arq
@@ -0,0 +1,9 @@
+PREFIX : <http://example/>
+
+CONSTRUCT {
+   ?s ?p ?o
+   GRAPH ?g { :s :p :o }
+   }
+WHERE
+   { GRAPH ?g { ?s ?p ?o } }
+

http://git-wip-us.apache.org/repos/asf/jena/blob/84f6f989/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-06.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-06.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-06.arq
new file mode 100644
index 0000000..d6b11bb
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-06.arq
@@ -0,0 +1,14 @@
+PREFIX : <http://example/>
+
+CONSTRUCT {
+   GRAPH ?g { :s :p :o }
+   ?s ?p ?o .
+   ?s ?p ?o .
+   GRAPH ?g { ?s ?p ?o }
+   ?s ?p ?o .
+   ?s ?p ?o
+   GRAPH ?g { ?s ?p ?o }
+   }
+WHERE
+   { GRAPH ?g { ?s ?p ?o } }
+

http://git-wip-us.apache.org/repos/asf/jena/blob/84f6f989/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-07.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-07.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-07.arq
new file mode 100644
index 0000000..19fe948
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-07.arq
@@ -0,0 +1,7 @@
+PREFIX : <http://example/>
+
+CONSTRUCT {
+   GRAPH <urn:x-arq:DefaultGraphNode> {:s :p :o .}
+   }
+WHERE {}
+

http://git-wip-us.apache.org/repos/asf/jena/blob/84f6f989/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-08.arq
----------------------------------------------------------------------
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-08.arq b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-08.arq
new file mode 100644
index 0000000..602e81c
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-quad-construct-08.arq
@@ -0,0 +1,9 @@
+PREFIX : <http://example/>
+
+CONSTRUCT {
+   GRAPH ?g { :s :p :o }
+   GRAPH ?g1 { :s :p :o }
+   }
+WHERE
+   { }
+