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:05:07 UTC

[17/27] jena git commit: Provide DatasetGraph operation

Provide DatasetGraph operation


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

Branch: refs/heads/master
Commit: ec54d3ddc3eeab1e33cf0a8f0d4e44be40c4d16b
Parents: cdb9619
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Aug 26 18:04:53 2018 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Aug 26 18:04:53 2018 +0100

----------------------------------------------------------------------
 .../jena/query/QueryExecutionFactory.java       | 35 +++++++++++++------
 .../jena/sparql/engine/QueryExecutionBase.java  | 36 +++++++++++++++++---
 2 files changed, 57 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/ec54d3dd/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 f784d1a..1894ca5 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
@@ -18,6 +18,7 @@
 
 package org.apache.jena.query;
 import java.util.List ;
+import java.util.Objects;
 
 import org.apache.http.client.HttpClient;
 import org.apache.http.protocol.HttpContext;
@@ -93,7 +94,19 @@ public class QueryExecutionFactory
         // checkArg(dataset) ; // Allow null
         return make(query, dataset) ;
     }
-
+    
+    /**
+     * Create a QueryExecution to execute over the {@link DatasetGraph}.
+     * 
+     * @param query Query
+     * @param datasetGraph Target of the query
+     * @return QueryExecution
+     */
+    static public QueryExecution create(Query query, DatasetGraph datasetGraph) {
+        Objects.requireNonNull(query, "Query is null") ;
+        Objects.requireNonNull(datasetGraph, "DatasetGraph is null") ;
+        return make(query, datasetGraph) ;
+    }
     /** Create a QueryExecution to execute over the Dataset.
      * 
      * @param queryStr     Query string
@@ -580,7 +593,7 @@ public class QueryExecutionFactory
         Dataset dataset = DatasetFactory.wrap(model);
         Graph g = unwrap(model.getGraph());
         if ( g instanceof GraphView ) {
-            GraphView gv = (GraphView)model.getGraph();
+            GraphView gv = (GraphView)g;
             // Copy context of the storage dataset to the wrapper dataset. 
             dataset.getContext().putAll(gv.getDataset().getContext());
         }
@@ -597,23 +610,25 @@ public class QueryExecutionFactory
         }
     }
 
-    protected  static QueryExecution make(Query query, Dataset dataset)
-    { return make(query, dataset, null) ; }
+    protected static QueryExecution make(Query query, Dataset dataset)
+    { return make(query, dataset, null, null) ; }
 
-    
-    protected static QueryExecution make(Query query, Dataset dataset, Context context) {
+    protected static QueryExecution make(Query query, DatasetGraph datasetGraph)
+    { return make(query, null, datasetGraph, null) ; }
+
+    // Both Dataset and DatasetGraph for full backwards compatibility 
+    protected static QueryExecution make(Query query, Dataset dataset, DatasetGraph dsg, Context context) {
+        if ( dsg == null && dataset != null )
+            dsg = dataset.asDatasetGraph();
         query.setResultVars() ;
         if ( context == null )
             context = ARQ.getContext() ;  // .copy done in QueryExecutionBase -> Context.setupContext.
-        DatasetGraph dsg = null ;
-        if ( dataset != null )
-            dsg = dataset.asDatasetGraph() ;
         QueryEngineFactory f = findFactory(query, dsg, context) ;
         if ( f == null ) {
             Log.warn(QueryExecutionFactory.class, "Failed to find a QueryEngineFactory") ;
             return null ;
         }
-        return new QueryExecutionBase(query, dataset, context, f) ;
+        return new QueryExecutionBase(query, dataset, dsg, context, f) ;
     }
 
     static private QueryEngineFactory findFactory(Query query, DatasetGraph dataset, Context context) {

http://git-wip-us.apache.org/repos/asf/jena/blob/ec54d3dd/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 e86c857..16aea26 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
@@ -33,7 +33,11 @@ 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.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.shared.PrefixMapping;
 import org.apache.jena.sparql.ARQConstants;
 import org.apache.jena.sparql.core.DatasetGraph;
@@ -82,16 +86,40 @@ public class QueryExecutionBase implements QueryExecution
     private long                     timeout2         = TIMEOUT_UNSET;
     private final AlarmClock         alarmClock       = AlarmClock.get();
 
-    public QueryExecutionBase(Query query, Dataset dataset, 
+    public QueryExecutionBase(Query query, Dataset dataset, Context context, QueryEngineFactory qeFactory) {
+        this(query, dataset, null, context, qeFactory);
+    }
+
+    public QueryExecutionBase(Query query, DatasetGraph datasetGraph, Context context, QueryEngineFactory qeFactory) {
+        this(query, null, datasetGraph, context, qeFactory);
+    }
+
+    public QueryExecutionBase(Query query, Dataset dataset, DatasetGraph datasetGraph, 
                               Context context, QueryEngineFactory qeFactory) {
         this.query = query;
-        this.dataset = dataset ;
+        this.dataset = formDataset(dataset, datasetGraph);
         this.qeFactory = qeFactory ;
-        this.dsg = (dataset == null) ? null : dataset.asDatasetGraph() ;
+        this.dsg = formDatasetGraph(datasetGraph, dataset);
         this.context = Context.setupContextExec(context, dsg) ;
         init() ;
     }
     
+    private static Dataset formDataset(Dataset dataset, DatasetGraph datasetGraph) {
+        if ( dataset != null ) 
+            return dataset;
+        if ( datasetGraph != null )
+            return DatasetFactory.wrap(datasetGraph);
+        return null;
+    }
+
+    private static DatasetGraph formDatasetGraph(DatasetGraph datasetGraph, Dataset dataset) {
+        if ( datasetGraph != null ) 
+            return datasetGraph;
+        if ( dataset != null )
+            return dataset.asDatasetGraph();
+        return null;
+    }
+    
     private void init() {
         if ( query != null )
             context.put(ARQConstants.sysCurrentQuery, query) ;