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 )

Reply via email to