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 2011/11/15 15:27:25 UTC

svn commit: r1202207 - in /incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql: core/Quad.java engine/main/OpExecutor.java engine/main/iterator/QueryIterGraph.java

Author: andy
Date: Tue Nov 15 14:27:25 2011
New Revision: 1202207

URL: http://svn.apache.org/viewvc?rev=1202207&view=rev
Log:
Allow for synthetic graph (union, explicitly named default) in GRAPH.

Modified:
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/Quad.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/iterator/QueryIterGraph.java

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/Quad.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/Quad.java?rev=1202207&r1=1202206&r2=1202207&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/Quad.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/core/Quad.java Tue Nov 15 14:27:25 2011
@@ -37,15 +37,15 @@ public class Quad
     /** Name of the default for explict use in GRAPH */
     public static final Node defaultGraphIRI        =  Node.createURI("urn:x-arq:DefaultGraph") ;
 
+    /** Name of the merge of all named graphs (use this for the graph of all named graphs) */
+    public static final Node unionGraph           =  Node.createURI("urn:x-arq:UnionGraph") ;
+
     /** Name of the non-graph when a quad is really a triple - also parsing of triples formats 
      *  (and the default graph when parsing N-Quads or TriG) 
      *  Not for access to the default graph by name - use Quad.defaultGraphIRI.
      */
     public static final Node tripleInQuad           =  null ;
     
-    /** Name of the merge of all named graphs (use this for the graph of all named graphs) */
-    public static final Node unionGraph           =  Node.createURI("urn:x-arq:UnionGraph") ;
-
     private final Node graph, subject, predicate, object ;
     
     public Quad(Node graph, Triple triple)

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java?rev=1202207&r1=1202206&r2=1202207&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/OpExecutor.java Tue Nov 15 14:27:25 2011
@@ -305,6 +305,9 @@ public class OpExecutor
     
     private QueryIterator specialcase(Node gn, Op subOp, QueryIterator input)
     {
+        // This is a placeholder fro code to specially handle explicitly named 
+        // default graph and union graph.
+        
         if ( true ) return null ;
         
         if ( gn == Quad.defaultGraphIRI || gn == Quad.defaultGraphNodeGenerated )

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/iterator/QueryIterGraph.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/iterator/QueryIterGraph.java?rev=1202207&r1=1202206&r2=1202207&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/iterator/QueryIterGraph.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/engine/main/iterator/QueryIterGraph.java Tue Nov 15 14:27:25 2011
@@ -30,6 +30,7 @@ import com.hp.hpl.jena.sparql.ARQInterna
 import com.hp.hpl.jena.sparql.algebra.Op ;
 import com.hp.hpl.jena.sparql.algebra.op.OpGraph ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+import com.hp.hpl.jena.sparql.core.Quad ;
 import com.hp.hpl.jena.sparql.core.Var ;
 import com.hp.hpl.jena.sparql.engine.ExecutionContext ;
 import com.hp.hpl.jena.sparql.engine.QueryIterator ;
@@ -174,7 +175,12 @@ public class QueryIterGraph extends Quer
             // Think about avoiding substitution.
             // If the subpattern does not involve the vars from the binding, avoid the substitute.  
             Op op = QC.substitute(opGraph.getSubOp(), binding) ;
-            if ( ! outerCxt.getDataset().containsGraph(graphNode) )
+            
+            // We can't just use DatasetGraph.getGraph because it may "auto-create" graphs.
+            // Use the containsGraph function.
+            
+            boolean syntheticGraph = ( Quad.isDefaultGraphExplicit(graphNode) || Quad.isUnionGraph(graphNode) ) ;
+            if ( ! syntheticGraph && ! outerCxt.getDataset().containsGraph(graphNode) )
                 return null ;
 
             Graph g = outerCxt.getDataset().getGraph(graphNode) ;