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/master
Commit: 68254a2be094342aec75ff6e7028af5ab36e3b61
Parents: 9920b52
Author: confidencesun <[email protected]>
Authored: Wed Jul 29 11:29:51 2015 +0800
Committer: confidencesun <[email protected]>
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)
     {

Reply via email to