You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by sa...@apache.org on 2013/08/21 19:01:08 UTC
svn commit: r1516220 - in /jena/trunk:
jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/
jena-arq/src/main/java/com/hp/hpl/jena/update/
jena-arq/src/test/java/com/hp/hpl/jena/sparql/modify/
jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/ jena-td...
Author: sallen
Date: Wed Aug 21 17:01:07 2013
New Revision: 1516220
URL: http://svn.apache.org/r1516220
Log:
JENA-519 Add initial binding support to update queries
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineNonStreaming.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineWorker.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorBase.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/modify/AbstractTestUpdateGraph.java
jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java?rev=1516220&r1=1516219&r2=1516220&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java Wed Aug 21 17:01:07 2013
@@ -21,6 +21,7 @@ package com.hp.hpl.jena.sparql.modify;
import com.hp.hpl.jena.query.ARQ ;
import com.hp.hpl.jena.sparql.ARQConstants ;
import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.util.Context ;
import com.hp.hpl.jena.sparql.util.NodeFactoryExtra ;
import com.hp.hpl.jena.update.GraphStore ;
@@ -28,12 +29,15 @@ import com.hp.hpl.jena.update.GraphStore
public abstract class UpdateEngineBase implements UpdateEngine
{
protected final GraphStore graphStore ;
+ protected final Binding inputBinding;
protected final Context context ;
public UpdateEngineBase(GraphStore graphStore,
+ Binding inputBinding,
Context context)
{
this.graphStore = graphStore ;
+ this.inputBinding = inputBinding ;
this.context = setupContext(context, graphStore) ;
}
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java?rev=1516220&r1=1516219&r2=1516220&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java Wed Aug 21 17:01:07 2013
@@ -18,6 +18,7 @@
package com.hp.hpl.jena.sparql.modify;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.util.Context ;
import com.hp.hpl.jena.update.GraphStore ;
@@ -30,5 +31,5 @@ public interface UpdateEngineFactory
public boolean accept(GraphStore graphStore, Context context) ;
/** Create the update engine - having returned true to accept, should not fail */
- public UpdateEngine create(GraphStore graphStore, Context context);
+ public UpdateEngine create(GraphStore graphStore, Binding inputBinding, Context context);
}
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java?rev=1516220&r1=1516219&r2=1516220&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java Wed Aug 21 17:01:07 2013
@@ -18,6 +18,7 @@
package com.hp.hpl.jena.sparql.modify;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.modify.request.UpdateVisitor ;
import com.hp.hpl.jena.sparql.util.Context ;
import com.hp.hpl.jena.update.GraphStore ;
@@ -33,11 +34,12 @@ public class UpdateEngineMain extends Up
/**
* Creates a new Update Engine
* @param graphStore Graph Store the updates operate over
+ * @param inputBinding Initial binding to be applied to Update operations that can apply an initial binding (i.e. UpdateDeleteWhere, UpdateModify)
* @param context Execution Context
*/
- public UpdateEngineMain(GraphStore graphStore, Context context)
+ public UpdateEngineMain(GraphStore graphStore, Binding inputBinding, Context context)
{
- super(graphStore, context) ;
+ super(graphStore, inputBinding, context) ;
}
@Override
@@ -72,7 +74,7 @@ public class UpdateEngineMain extends Up
* @return The update visitor to be used to apply the updates
*/
protected UpdateVisitor prepareWorker() {
- return new UpdateEngineWorker(graphStore, context) ;
+ return new UpdateEngineWorker(graphStore, inputBinding, context) ;
}
private static UpdateEngineFactory factory = new UpdateEngineFactory()
@@ -84,9 +86,9 @@ public class UpdateEngineMain extends Up
}
@Override
- public UpdateEngine create(GraphStore graphStore, Context context)
+ public UpdateEngine create(GraphStore graphStore, Binding inputBinding, Context context)
{
- return new UpdateEngineMain(graphStore, context);
+ return new UpdateEngineMain(graphStore, inputBinding, context);
}
} ;
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineNonStreaming.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineNonStreaming.java?rev=1516220&r1=1516219&r2=1516220&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineNonStreaming.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineNonStreaming.java Wed Aug 21 17:01:07 2013
@@ -18,6 +18,7 @@
package com.hp.hpl.jena.sparql.modify;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.modify.request.UpdateVisitor ;
import com.hp.hpl.jena.sparql.util.Context ;
import com.hp.hpl.jena.update.GraphStore ;
@@ -39,11 +40,12 @@ public class UpdateEngineNonStreaming ex
/**
* Creates a new Update Engine
* @param graphStore Graph Store the updates operate over
+ * @param inputBinding Initial binding to be applied to Update operations that can apply an initial binding (i.e. UpdateDeleteWhere, UpdateModify)
* @param context Execution Context
*/
- public UpdateEngineNonStreaming(GraphStore graphStore, Context context)
+ public UpdateEngineNonStreaming(GraphStore graphStore, Binding inputBinding, Context context)
{
- super(graphStore, context) ;
+ super(graphStore, inputBinding, context) ;
accRequests = new UpdateRequest();
updateSink = new UpdateRequestSink(accRequests)
{
@@ -97,9 +99,9 @@ public class UpdateEngineNonStreaming ex
}
@Override
- public UpdateEngine create(GraphStore graphStore, Context context)
+ public UpdateEngine create(GraphStore graphStore, Binding inputBinding, Context context)
{
- return new UpdateEngineNonStreaming(graphStore, context);
+ return new UpdateEngineNonStreaming(graphStore, inputBinding, context);
}
} ;
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineWorker.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineWorker.java?rev=1516220&r1=1516219&r2=1516220&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineWorker.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineWorker.java Wed Aug 21 17:01:07 2013
@@ -67,11 +67,13 @@ public class UpdateEngineWorker implemen
{
protected final GraphStore graphStore ;
protected final boolean alwaysSilent = true ;
+ protected final Binding inputBinding; // Used for UpdateModify and UpdateDeleteWhere only
protected final Context context ;
- public UpdateEngineWorker(GraphStore graphStore, Context context)
+ public UpdateEngineWorker(GraphStore graphStore, Binding inputBinding, Context context)
{
this.graphStore = graphStore ;
+ this.inputBinding = inputBinding ;
this.context = context ;
}
@@ -394,7 +396,7 @@ public class UpdateEngineWorker implemen
DataBag<Binding> db = BagFactory.newDefaultBag(policy, SerializationFactoryFinder.bindingSerializationFactory()) ;
try
{
- Iterator<Binding> bindings = evalBindings(query, dsg, context) ;
+ Iterator<Binding> bindings = evalBindings(query, dsg, inputBinding, context) ;
if ( false )
{
@@ -585,11 +587,11 @@ public class UpdateEngineWorker implemen
}
}
- return evalBindings(query, dsg, context) ;
+ return evalBindings(query, dsg, inputBinding, context) ;
}
- protected static Iterator<Binding> evalBindings(Query query, DatasetGraph dsg, Context context)
+ protected static Iterator<Binding> evalBindings(Query query, DatasetGraph dsg, Binding inputBinding, Context context)
{
// SET UP CONTEXT
// The UpdateProcessorBase already copied the context and made it safe ... but that's going to happen again :-(
@@ -598,12 +600,12 @@ public class UpdateEngineWorker implemen
if ( query != null )
{
- Plan plan = QueryExecutionFactory.createPlan(query, dsg, null, context) ;
+ Plan plan = QueryExecutionFactory.createPlan(query, dsg, inputBinding, context) ;
toReturn = plan.iterator();
}
else
{
- toReturn = Iter.singleton(BindingRoot.create()) ;
+ toReturn = Iter.singleton((null != inputBinding) ? inputBinding : BindingRoot.create()) ;
}
return toReturn ;
}
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorBase.java?rev=1516220&r1=1516219&r2=1516220&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorBase.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorBase.java Wed Aug 21 17:01:07 2013
@@ -20,6 +20,7 @@ package com.hp.hpl.jena.sparql.modify;
import org.apache.jena.atlas.iterator.Iter ;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.util.Context ;
import com.hp.hpl.jena.update.GraphStore ;
import com.hp.hpl.jena.update.UpdateProcessor ;
@@ -32,16 +33,19 @@ public class UpdateProcessorBase impleme
{
protected final UpdateRequest request ;
protected final GraphStore graphStore ;
+ protected final Binding inputBinding;
protected final UpdateEngineFactory factory ;
protected final Context context ;
public UpdateProcessorBase(UpdateRequest request,
GraphStore graphStore,
+ Binding inputBinding,
Context context,
UpdateEngineFactory factory)
{
this.request = request ;
this.graphStore = graphStore ;
+ this.inputBinding = inputBinding;
this.context = Context.setupContext(context, graphStore) ;
this.factory = factory ;
}
@@ -49,7 +53,7 @@ public class UpdateProcessorBase impleme
@Override
public void execute()
{
- UpdateEngine uProc = factory.create(graphStore, context);
+ UpdateEngine uProc = factory.create(graphStore, inputBinding, context);
uProc.startRequest();
try {
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java?rev=1516220&r1=1516219&r2=1516220&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java Wed Aug 21 17:01:07 2013
@@ -18,6 +18,7 @@
package com.hp.hpl.jena.sparql.modify;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.util.Context ;
import com.hp.hpl.jena.update.GraphStore ;
import com.hp.hpl.jena.update.UpdateProcessorStreaming ;
@@ -32,12 +33,12 @@ public class UpdateProcessorStreamingBas
protected final UpdateEngine proc;
- public UpdateProcessorStreamingBase(GraphStore graphStore, Context context, UpdateEngineFactory factory)
+ public UpdateProcessorStreamingBase(GraphStore graphStore, Binding inputBinding, Context context, UpdateEngineFactory factory)
{
this.graphStore = graphStore ;
this.context = Context.setupContext(context, graphStore) ;
- proc = factory.create(graphStore, context) ;
+ proc = factory.create(graphStore, inputBinding, context) ;
}
@Override
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java?rev=1516220&r1=1516219&r2=1516220&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java Wed Aug 21 17:01:07 2013
@@ -28,6 +28,7 @@ import com.hp.hpl.jena.query.Syntax ;
import com.hp.hpl.jena.rdf.model.Model ;
import com.hp.hpl.jena.sparql.ARQException ;
import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.lang.UpdateParser ;
import com.hp.hpl.jena.sparql.modify.UpdateSink ;
import com.hp.hpl.jena.sparql.modify.UsingList ;
@@ -35,7 +36,7 @@ import com.hp.hpl.jena.sparql.modify.Usi
import com.hp.hpl.jena.sparql.modify.request.UpdateWithUsing ;
/** A class of forms for executing SPARQL Update operations.
- * parse* means the update request is in a string;
+ * parse* means the update request is in a String or an InputStream;
* read* means read the contents of a file.
*/
@@ -76,15 +77,25 @@ public class UpdateAction
{
readExecute(filename, GraphStoreFactory.create(graph)) ;
}
-
+
/** Read a file containing SPARQL Update operations, and execute the operations.
* @param filename
* @param graphStore
*/
public static void readExecute(String filename, GraphStore graphStore)
{
+ readExecute(filename, graphStore, null);
+ }
+
+ /** Read a file containing SPARQL Update operations, and execute the operations.
+ * @param filename
+ * @param graphStore
+ * @param inputBinding
+ */
+ public static void readExecute(String filename, GraphStore graphStore, Binding inputBinding)
+ {
UpdateRequest req = UpdateFactory.read(filename) ;
- execute(req, graphStore) ;
+ execute(req, graphStore, inputBinding) ;
}
@@ -171,20 +182,30 @@ public class UpdateAction
{
execute(request, GraphStoreFactory.create(graph)) ;
}
-
+
/** Execute SPARQL Update operations.
* @param request
* @param graphStore
*/
public static void execute(UpdateRequest request, GraphStore graphStore)
{
- execute$(request, graphStore) ;
+ execute(request, graphStore, null);
+ }
+
+ /** Execute SPARQL Update operations.
+ * @param request
+ * @param graphStore
+ * @param inputBinding
+ */
+ public static void execute(UpdateRequest request, GraphStore graphStore, Binding inputBinding)
+ {
+ execute$(request, graphStore, inputBinding) ;
}
// All non-streaming updates come through here.
- private static void execute$(UpdateRequest request, GraphStore graphStore)
+ private static void execute$(UpdateRequest request, GraphStore graphStore, Binding inputBinding)
{
- UpdateProcessor uProc = UpdateExecutionFactory.create(request, graphStore);
+ UpdateProcessor uProc = UpdateExecutionFactory.create(request, graphStore, inputBinding);
if (uProc == null)
throw new ARQException("No suitable update procesors are registered/able to execute your updates");
uProc.execute();
@@ -226,21 +247,31 @@ public class UpdateAction
{
execute(update, GraphStoreFactory.create(graph)) ;
}
-
+
/** Execute a single SPARQL Update operation.
* @param update
* @param graphStore
*/
public static void execute(Update update, GraphStore graphStore)
{
- execute$(update, graphStore) ;
+ execute(update, graphStore, null);
+ }
+
+ /** Execute a single SPARQL Update operation.
+ * @param update
+ * @param graphStore
+ * @param inputBinding
+ */
+ public static void execute(Update update, GraphStore graphStore, Binding inputBinding)
+ {
+ execute$(update, graphStore, inputBinding) ;
}
- private static void execute$(Update update, GraphStore graphStore)
+ private static void execute$(Update update, GraphStore graphStore, Binding inputBinding)
{
UpdateRequest request = new UpdateRequest() ;
request.add(update) ;
- execute$(request, graphStore) ;
+ execute$(request, graphStore, inputBinding) ;
}
@@ -258,9 +289,15 @@ public class UpdateAction
{
parseExecute(usingList, dataset, fileName, null, syntax) ;
}
-
+
/** Parse update operations into a GraphStore by reading it from a file */
public static void parseExecute(UsingList usingList, DatasetGraph dataset, String fileName, String baseURI, Syntax syntax)
+ {
+ parseExecute(usingList, dataset, fileName, null, baseURI, syntax);
+ }
+
+ /** Parse update operations into a GraphStore by reading it from a file */
+ public static void parseExecute(UsingList usingList, DatasetGraph dataset, String fileName, Binding inputBinding, String baseURI, Syntax syntax)
{
InputStream in = null ;
if ( fileName.equals("-") )
@@ -271,7 +308,7 @@ public class UpdateAction
if ( in == null )
throw new UpdateException("File could not be opened: "+fileName) ;
}
- parseExecute(usingList, dataset, in, baseURI, syntax) ;
+ parseExecute(usingList, dataset, in, inputBinding, baseURI, syntax) ;
}
/**
@@ -311,14 +348,29 @@ public class UpdateAction
* @param usingList A list of USING or USING NAMED statements that be added to all {@link UpdateWithUsing} queries
* @param dataset The dataset to apply the changes to
* @param input The source of the update request (must be UTF-8).
- * @param baseURI The base URI for resolving relative URIs.
+ * @param baseURI The base URI for resolving relative URIs (may be <code>null</code>)
* @param syntax The update language syntax
*/
public static void parseExecute(UsingList usingList, DatasetGraph dataset, InputStream input, String baseURI, Syntax syntax)
{
+ parseExecute(usingList, dataset, input, null, baseURI, syntax);
+ }
+
+ /**
+ * Parse update operations into a GraphStore by parsing from an InputStream.
+ * @param usingList A list of USING or USING NAMED statements that be added to all {@link UpdateWithUsing} queries
+ * @param dataset The dataset to apply the changes to
+ * @param input The source of the update request (must be UTF-8).
+ * @param inputBinding Initial binding to be applied to Update operations that can apply an initial binding
+ * (i.e. UpdateDeleteWhere, UpdateModify). May be <code>null</code>
+ * @param baseURI The base URI for resolving relative URIs (may be <code>null</code>)
+ * @param syntax The update language syntax
+ */
+ public static void parseExecute(UsingList usingList, DatasetGraph dataset, InputStream input, Binding inputBinding, String baseURI, Syntax syntax)
+ {
GraphStore graphStore = GraphStoreFactory.create(dataset);
- UpdateProcessorStreaming uProc = UpdateExecutionFactory.createStreaming(graphStore) ;
+ UpdateProcessorStreaming uProc = UpdateExecutionFactory.createStreaming(graphStore, inputBinding) ;
if (uProc == null)
throw new ARQException("No suitable update procesors are registered/able to execute your updates");
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java?rev=1516220&r1=1516219&r2=1516220&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java Wed Aug 21 17:01:07 2013
@@ -21,6 +21,7 @@ package com.hp.hpl.jena.update;
import org.apache.jena.atlas.web.auth.HttpAuthenticator;
import com.hp.hpl.jena.query.ARQ ;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.modify.UpdateEngineFactory ;
import com.hp.hpl.jena.sparql.modify.UpdateEngineRegistry ;
import com.hp.hpl.jena.sparql.modify.UpdateProcessRemote ;
@@ -40,7 +41,18 @@ public class UpdateExecutionFactory
*/
public static UpdateProcessor create(Update update, GraphStore graphStore)
{
- return create(new UpdateRequest(update), graphStore) ;
+ return create(new UpdateRequest(update), graphStore, null, null) ;
+ }
+
+ /** Create an UpdateProcessor appropriate to the GraphStore, or null if no available factory to make an UpdateProcessor
+ * @param update
+ * @param graphStore
+ * @param inputBinding Initial binding to be applied to Update operations that can apply an initial binding (i.e. UpdateDeleteWhere, UpdateModify)
+ * @return UpdateProcessor or null
+ */
+ public static UpdateProcessor create(Update update, GraphStore graphStore, Binding inputBinding)
+ {
+ return create(new UpdateRequest(update), graphStore, inputBinding) ;
}
/** Create an UpdateProcessor appropriate to the GraphStore, or null if no available factory to make an UpdateProcessor
@@ -50,7 +62,18 @@ public class UpdateExecutionFactory
*/
public static UpdateProcessor create(UpdateRequest updateRequest, GraphStore graphStore)
{
- return make(updateRequest, graphStore, null) ;
+ return make(updateRequest, graphStore, null, null) ;
+ }
+
+ /** Create an UpdateProcessor appropriate to the GraphStore, or null if no available factory to make an UpdateProcessor
+ * @param updateRequest
+ * @param graphStore
+ * @param inputBinding Initial binding to be applied to Update operations that can apply an initial binding (i.e. UpdateDeleteWhere, UpdateModify)
+ * @return UpdateProcessor or null
+ */
+ public static UpdateProcessor create(UpdateRequest updateRequest, GraphStore graphStore, Binding inputBinding)
+ {
+ return make(updateRequest, graphStore, inputBinding, null) ;
}
/** Create an UpdateProcessor appropriate to the GraphStore, or null if no available factory to make an UpdateProcessor
@@ -59,7 +82,17 @@ public class UpdateExecutionFactory
*/
public static UpdateProcessorStreaming createStreaming(GraphStore graphStore)
{
- return makeStreaming(graphStore, null) ;
+ return makeStreaming(graphStore, null, null) ;
+ }
+
+ /** Create an UpdateProcessor appropriate to the GraphStore, or null if no available factory to make an UpdateProcessor
+ * @param graphStore
+ * @param inputBinding Initial binding to be applied to Update operations that can apply an initial binding (i.e. UpdateDeleteWhere, UpdateModify)
+ * @return UpdateProcessor or null
+ */
+ public static UpdateProcessorStreaming createStreaming(GraphStore graphStore, Binding inputBinding)
+ {
+ return makeStreaming(graphStore, inputBinding, null) ;
}
/** Create an UpdateProcessor appropriate to the GraphStore, or null if no available factory to make an UpdateProcessor
@@ -69,7 +102,18 @@ public class UpdateExecutionFactory
*/
public static UpdateProcessorStreaming createStreaming(GraphStore graphStore, Context context)
{
- return makeStreaming(graphStore, context) ;
+ return makeStreaming(graphStore, null, context) ;
+ }
+
+ /** Create an UpdateProcessor appropriate to the GraphStore, or null if no available factory to make an UpdateProcessor
+ * @param graphStore
+ * @param inputBinding Initial binding to be applied to Update operations that can apply an initial binding (i.e. UpdateDeleteWhere, UpdateModify)
+ * @param context (null means use merge of global and graph store context))
+ * @return UpdateProcessor or null
+ */
+ public static UpdateProcessorStreaming createStreaming(GraphStore graphStore, Binding inputBinding, Context context)
+ {
+ return makeStreaming(graphStore, inputBinding, context) ;
}
/** Create an UpdateProcessor appropriate to the GraphStore, or null if no available factory to make an UpdateProcessor
@@ -80,11 +124,23 @@ public class UpdateExecutionFactory
*/
public static UpdateProcessor create(UpdateRequest updateRequest, GraphStore graphStore, Context context)
{
- return make(updateRequest, graphStore, context) ;
+ return make(updateRequest, graphStore, null, context) ;
+ }
+
+ /** Create an UpdateProcessor appropriate to the GraphStore, or null if no available factory to make an UpdateProcessor
+ * @param updateRequest
+ * @param graphStore
+ * @param inputBinding Initial binding to be applied to Update operations that can apply an initial binding (i.e. UpdateDeleteWhere, UpdateModify)
+ * @param context (null means use merge of global and graph store context))
+ * @return UpdateProcessor or null
+ */
+ public static UpdateProcessor create(UpdateRequest updateRequest, GraphStore graphStore, Binding inputBinding, Context context)
+ {
+ return make(updateRequest, graphStore, inputBinding, context) ;
}
// Everything comes through one of these two make methods
- private static UpdateProcessor make(UpdateRequest updateRequest, GraphStore graphStore, Context context)
+ private static UpdateProcessor make(UpdateRequest updateRequest, GraphStore graphStore, Binding inputBinding, Context context)
{
if ( context == null )
{
@@ -96,12 +152,12 @@ public class UpdateExecutionFactory
if ( f == null )
return null ;
- UpdateProcessorBase uProc = new UpdateProcessorBase(updateRequest, graphStore, context, f) ;
+ UpdateProcessorBase uProc = new UpdateProcessorBase(updateRequest, graphStore, inputBinding, context, f) ;
return uProc ;
}
// Everything comes through one of these two make methods
- private static UpdateProcessorStreaming makeStreaming(GraphStore graphStore, Context context)
+ private static UpdateProcessorStreaming makeStreaming(GraphStore graphStore, Binding inputBinding, Context context)
{
if ( context == null )
{
@@ -113,7 +169,7 @@ public class UpdateExecutionFactory
if ( f == null )
return null ;
- UpdateProcessorStreamingBase uProc = new UpdateProcessorStreamingBase(graphStore, context, f) ;
+ UpdateProcessorStreamingBase uProc = new UpdateProcessorStreamingBase(graphStore, inputBinding, context, f) ;
return uProc;
}
Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/modify/AbstractTestUpdateGraph.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/modify/AbstractTestUpdateGraph.java?rev=1516220&r1=1516219&r2=1516220&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/modify/AbstractTestUpdateGraph.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/modify/AbstractTestUpdateGraph.java Wed Aug 21 17:01:07 2013
@@ -31,8 +31,18 @@ import com.hp.hpl.jena.query.QueryFactor
import com.hp.hpl.jena.query.QueryParseException ;
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.binding.Binding ;
+import com.hp.hpl.jena.sparql.engine.binding.BindingFactory ;
import com.hp.hpl.jena.sparql.graph.GraphFactory ;
-import com.hp.hpl.jena.sparql.modify.request.* ;
+import com.hp.hpl.jena.sparql.modify.request.QuadAcc ;
+import com.hp.hpl.jena.sparql.modify.request.QuadDataAcc ;
+import com.hp.hpl.jena.sparql.modify.request.Target ;
+import com.hp.hpl.jena.sparql.modify.request.UpdateCopy ;
+import com.hp.hpl.jena.sparql.modify.request.UpdateDataDelete ;
+import com.hp.hpl.jena.sparql.modify.request.UpdateDataInsert ;
+import com.hp.hpl.jena.sparql.modify.request.UpdateDeleteWhere ;
+import com.hp.hpl.jena.sparql.modify.request.UpdateModify ;
import com.hp.hpl.jena.sparql.sse.SSE ;
import com.hp.hpl.jena.sparql.syntax.Element ;
import com.hp.hpl.jena.sparql.util.NodeFactoryExtra ;
@@ -245,6 +255,29 @@ public abstract class AbstractTestUpdate
assertFalse(graphContains(gStore.getGraph(graphIRI), t));
}
+ @Test public void testModifyInitialBindings()
+ {
+ GraphStore gStore = getEmptyGraphStore() ;
+ defaultGraphData(gStore, data12()) ;
+ namedGraphData(gStore, graphIRI, Factory.createDefaultGraph()) ;
+
+ Binding initialBinding = BindingFactory.binding(Var.alloc("o"), o1) ;
+
+ UpdateModify modify = new UpdateModify() ;
+ Element element = QueryFactory.createElement("{ ?s <http://example/p> ?o }" ) ;
+ modify.setElement(element) ;
+ modify.getInsertAcc().addQuad(new Quad(graphIRI, triple1)) ;
+ modify.getDeleteAcc().addTriple(SSE.parseTriple("(?s <http://example/p> ?o)")) ;
+ modify.getDeleteAcc().addQuad(SSE.parseQuad("(<http://example/graph> ?s <http://example/p> ?o)")) ;
+ UpdateAction.execute(modify, gStore, initialBinding) ;
+
+ assertFalse(graphEmpty(gStore.getGraph(graphIRI))) ;
+ assertFalse(graphEmpty(gStore.getDefaultGraph())) ;
+ assertTrue(graphContains(gStore.getGraph(graphIRI), triple1)) ;
+ assertTrue(graphContains(gStore.getDefaultGraph(), triple2)) ;
+ assertFalse(graphContains(gStore.getDefaultGraph(), triple1)) ;
+ }
+
@Test public void testCopy()
{
// Use blank nodes (will expose any problems in serialization when spill occurs)
@@ -351,16 +384,17 @@ public abstract class AbstractTestUpdate
private static Graph data1()
{
- Graph graph = Factory.createDefaultGraph() ;
- graph.add(triple1) ;
- return graph ;
+ return data(triple1) ;
}
private static Graph data2()
{
- Graph graph = Factory.createDefaultGraph() ;
- graph.add(triple2) ;
- return graph ;
+ return data(triple2) ;
+ }
+
+ private static Graph data12()
+ {
+ return data(triple1, triple2) ;
}
private static Graph data(Triple... triples)
Modified: jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java?rev=1516220&r1=1516219&r2=1516220&view=diff
==============================================================================
--- jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java (original)
+++ jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java Wed Aug 21 17:01:07 2013
@@ -19,6 +19,7 @@
package com.hp.hpl.jena.sdb.modify;
import com.hp.hpl.jena.sdb.store.DatasetStoreGraph ;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.modify.UpdateEngine ;
import com.hp.hpl.jena.sparql.modify.UpdateEngineFactory ;
import com.hp.hpl.jena.sparql.modify.UpdateEngineMain ;
@@ -30,8 +31,8 @@ public class UpdateEngineSDB extends Upd
{
// More of a placeholder currently.
- public UpdateEngineSDB(DatasetStoreGraph graphStore, Context context)
- { super(graphStore, context) ; }
+ public UpdateEngineSDB(DatasetStoreGraph graphStore, Binding inputBinding, Context context)
+ { super(graphStore, inputBinding, context) ; }
// ---- Factory
@@ -45,9 +46,9 @@ public class UpdateEngineSDB extends Upd
}
@Override
- public UpdateEngine create(GraphStore graphStore, Context context)
+ public UpdateEngine create(GraphStore graphStore, Binding inputBinding, Context context)
{
- return new UpdateEngineSDB((DatasetStoreGraph)graphStore, context);
+ return new UpdateEngineSDB((DatasetStoreGraph)graphStore, inputBinding, context);
}
} ;
}
Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java?rev=1516220&r1=1516219&r2=1516220&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java Wed Aug 21 17:01:07 2013
@@ -18,6 +18,7 @@
package com.hp.hpl.jena.tdb.modify;
+import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.modify.UpdateEngine ;
import com.hp.hpl.jena.sparql.modify.UpdateEngineFactory ;
import com.hp.hpl.jena.sparql.modify.UpdateEngineMain ;
@@ -28,8 +29,8 @@ import com.hp.hpl.jena.update.GraphStore
public class UpdateEngineTDB extends UpdateEngineMain
{
- public UpdateEngineTDB(DatasetGraphTDB graphStore, Context context)
- { super(graphStore, context) ; }
+ public UpdateEngineTDB(DatasetGraphTDB graphStore, Binding inputBinding, Context context)
+ { super(graphStore, inputBinding, context) ; }
// ---- Factory
@@ -43,9 +44,9 @@ public class UpdateEngineTDB extends Upd
}
@Override
- public UpdateEngine create(GraphStore graphStore, Context context)
+ public UpdateEngine create(GraphStore graphStore, Binding inputBinding, Context context)
{
- return new UpdateEngineTDB((DatasetGraphTDB)graphStore, context);
+ return new UpdateEngineTDB((DatasetGraphTDB)graphStore, inputBinding, context);
}
} ;
}