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 2018/08/31 12:04:54 UTC

[04/27] jena git commit: Copy dataset context to execution for query over model

Copy dataset context to execution for query over model


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

Branch: refs/heads/master
Commit: d8e51a82fea80ea21e7cdef8445dc00adec42ee2
Parents: 0a0b831
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Aug 20 20:34:04 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Aug 23 17:15:05 2018 +0100

----------------------------------------------------------------------
 .../jena/query/QueryExecutionFactory.java       | 29 ++++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/d8e51a82/jena-arq/src/main/java/org/apache/jena/query/QueryExecutionFactory.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/query/QueryExecutionFactory.java b/jena-arq/src/main/java/org/apache/jena/query/QueryExecutionFactory.java
index 2414d3a..f784d1a 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/QueryExecutionFactory.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/QueryExecutionFactory.java
@@ -22,8 +22,11 @@ import java.util.List ;
 import org.apache.http.client.HttpClient;
 import org.apache.http.protocol.HttpContext;
 import org.apache.jena.atlas.logging.Log ;
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.impl.WrappedGraph;
 import org.apache.jena.rdf.model.Model ;
 import org.apache.jena.sparql.core.DatasetGraph ;
+import org.apache.jena.sparql.core.GraphView;
 import org.apache.jena.sparql.engine.Plan ;
 import org.apache.jena.sparql.engine.QueryEngineFactory ;
 import org.apache.jena.sparql.engine.QueryEngineRegistry ;
@@ -31,6 +34,7 @@ import org.apache.jena.sparql.engine.QueryExecutionBase ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.engine.binding.BindingRoot ;
 import org.apache.jena.sparql.engine.http.QueryEngineHTTP ;
+import org.apache.jena.sparql.graph.GraphWrapper;
 import org.apache.jena.sparql.syntax.Element ;
 import org.apache.jena.sparql.util.Context ;
 
@@ -126,7 +130,7 @@ public class QueryExecutionFactory
     static public QueryExecution create(Query query, Model model) {
         checkArg(query) ;
         checkArg(model) ;
-        return make(query, DatasetFactory.wrap(model)) ;
+        return make(query, model) ;
     }
 
     /** Create a QueryExecution to execute over the Model.
@@ -569,7 +573,28 @@ public class QueryExecutionFactory
     }
     
     static protected QueryExecution make(Query query) {
-        return make(query, null) ;
+        return make(query, (Dataset)null) ;
+    }
+
+    protected  static QueryExecution make(Query query, Model model) { 
+        Dataset dataset = DatasetFactory.wrap(model);
+        Graph g = unwrap(model.getGraph());
+        if ( g instanceof GraphView ) {
+            GraphView gv = (GraphView)model.getGraph();
+            // Copy context of the storage dataset to the wrapper dataset. 
+            dataset.getContext().putAll(gv.getDataset().getContext());
+        }
+        return make(query, dataset);
+    }
+    
+    private static Graph unwrap(Graph graph) {
+        for(;;) {
+            if ( graph instanceof GraphWrapper )
+                graph = ((GraphWrapper)graph).get();
+            else if ( graph instanceof WrappedGraph )
+                graph = ((WrappedGraph)graph).getWrapped();
+            else return graph;
+        }
     }
 
     protected  static QueryExecution make(Query query, Dataset dataset)