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 2019/05/30 11:27:06 UTC

[jena] branch master updated: JENA-1714: Migrate 'migrate' packages

This is an automated email from the ASF dual-hosted git repository.

andy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jena.git


The following commit(s) were added to refs/heads/master by this push:
     new d3a1dab  JENA-1714: Migrate 'migrate' packages
     new 34cc2b3  Merge pull request #571 from afs/migrate
d3a1dab is described below

commit d3a1dab3cbce2f3e353f3226ae8f36a9574d88c3
Author: Andy Seaborne <an...@apache.org>
AuthorDate: Sun May 26 18:38:36 2019 +0100

    JENA-1714: Migrate 'migrate' packages
---
 .../system/{StreamOps.java => StreamRDFOps.java}   |  11 +-
 .../apache/jena/riot/system/StreamRDFWriter.java   |  12 +-
 .../jena/riot/thrift/WriterDatasetThrift.java      |   4 +-
 .../apache/jena/riot/thrift/WriterGraphThrift.java |   4 +-
 .../org/apache/jena/riot/writer/NQuadsWriter.java  |   4 +-
 .../apache/jena/riot/writer/NTriplesWriter.java    |   4 +-
 .../apache/jena/riot/writer/TriGWriterBlocks.java  |   4 +-
 .../apache/jena/riot/writer/TriGWriterFlat.java    |   4 +-
 .../jena/riot/writer/TurtleWriterBlocks.java       |   4 +-
 .../apache/jena/riot/writer/TurtleWriterFlat.java  |   4 +-
 .../org/apache/jena/riot/writer/WriterTriX.java    |   6 +-
 .../java/org/apache/jena/sparql/algebra/OpLib.java |  35 ++--
 .../jena/sparql/algebra}/TransformGraphRename.java |   4 +-
 .../java/org/apache/jena/sparql/core/Match.java    |  28 +--
 .../jena/riot/thrift/TestStreamRDFThrift.java      |   6 +-
 .../src/main/java/org/apache/jena/atlas/io/IO.java | 199 +++++++++++++--------
 .../java/org/apache/jena/atlas/lib}/StreamOps.java |  16 +-
 .../java/org/apache/jena/atlas/lib/ThreadLib.java  |  99 +---------
 .../java/org/apache/jena/shared/uuid/LibUUID.java  |   1 +
 .../java/org/apache/jena/dboe/sys/LibUUID.java     |  58 ++++++
 .../jena/dboe/storage/simple/StorageTuplesN.java   |   6 +-
 .../jena/dboe/trans/recovery/TestRecovery.java     |  19 +-
 .../apache/jena/dboe/transaction/TransInteger.java |   3 +-
 .../jena/dboe/transaction/txn/TxnIdUuid.java       |   6 +-
 .../TestTransactionCoordinatorControl.java         |  16 +-
 .../transaction/TestTransactionLifecycle2.java     |  12 +-
 .../main/java/org/apache/jena/tdb2/migrate/A2.java |  38 ----
 .../jena/tdb2/migrate/TransformGraphRename.java    |  54 ------
 .../apache/jena/tdb2/solver/QueryEngineTDB.java    |   4 +-
 .../main/java/org/apache/jena/tdb/migrate/A2.java  |  38 ----
 .../org/apache/jena/tdb/migrate/CachingPF.java     |  51 ------
 .../java/org/apache/jena/tdb/migrate/LockTx.java   |  71 --------
 .../org/apache/jena/tdb/solver/QueryEngineTDB.java |   4 +-
 33 files changed, 284 insertions(+), 545 deletions(-)

diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/StreamOps.java b/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFOps.java
similarity index 95%
rename from jena-arq/src/main/java/org/apache/jena/riot/system/StreamOps.java
rename to jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFOps.java
index 89bf376..66b99fd 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/StreamOps.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFOps.java
@@ -39,7 +39,7 @@ import org.apache.jena.sparql.core.Quad ;
  *  whereas other operations do.
  */
 
-public class StreamOps {
+public class StreamRDFOps {
     
     /** Send a dataset to a StreamRDF as prefixes, triples and quads, enclosed in stream.start()/stream.finish() */
     public static void datasetToStream(DatasetGraph datasetGraph, StreamRDF stream) {
@@ -90,10 +90,10 @@ public class StreamOps {
 
         // Default graph
         Iterator<Triple> iter1 = datasetGraph.getDefaultGraph().find(null, null, null) ;
-        StreamOps.sendTriplesToStream(iter1, stream) ;
+        StreamRDFOps.sendTriplesToStream(iter1, stream) ;
         
         Iterator<Quad> iter2 = datasetGraph.findNG(null, null, null, null) ;
-        StreamOps.sendQuadsToStream(iter2, stream) ;
+        StreamRDFOps.sendQuadsToStream(iter2, stream) ;
     }
 
     
@@ -108,7 +108,7 @@ public class StreamOps {
         if ( prefixMap != null )
             sendPrefixesToStream(prefixMap, stream) ;
         Iterator<Triple> iter = graph.find(null, null, null) ;
-        StreamOps.sendTriplesToStream(iter, stream) ;
+        StreamRDFOps.sendTriplesToStream(iter, stream) ;
     }
 
     /** Send the triples of graph to a StreamRDF (no prefix mapping) */
@@ -129,7 +129,7 @@ public class StreamOps {
     /** Send quads of a dataset (including default graph as quads) to a StreamRDF, without prefixes */
     public static void sendQuadsToStream(DatasetGraph datasetGraph, StreamRDF stream) {
         Iterator<Quad> iter2 = datasetGraph.find(null, null, null, null) ;
-        StreamOps.sendQuadsToStream(iter2, stream) ;
+        StreamRDFOps.sendQuadsToStream(iter2, stream) ;
     }
 
     /** Set quads to a StreamRDF - does not call .start/.finish */ 
@@ -141,5 +141,4 @@ public class StreamOps {
             dest.quad(q) ;
         }
     }
-
 }
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFWriter.java b/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFWriter.java
index 7fcd875..ba1303c 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFWriter.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/StreamRDFWriter.java
@@ -159,8 +159,8 @@ public class StreamRDFWriter {
      * @param output OutputStream
      * @param lang   The syntax 
      * @return       StreamRDF, or null if Lang does not have a streaming format.
-     * @see StreamOps#graphToStream
-     * @see StreamOps#datasetToStream
+     * @see StreamRDFOps#graphToStream
+     * @see StreamRDFOps#datasetToStream
      */
     public static StreamRDF getWriterStream(OutputStream output, Lang lang) {
         RDFFormat fmt = registry.choose(lang) ;
@@ -172,8 +172,8 @@ public class StreamRDFWriter {
      * @param output OutputStream
      * @param format  The syntax (as an {@link RDFFormat}) 
      * @return       StreamRDF, or null if format is not registered for streaming.
-     * @see StreamOps#graphToStream
-     * @see StreamOps#datasetToStream
+     * @see StreamRDFOps#graphToStream
+     * @see StreamRDFOps#datasetToStream
      */
     public static StreamRDF getWriterStream(OutputStream output, RDFFormat format) {
         StreamRDFWriterFactory x = registry.get(format) ;
@@ -218,7 +218,7 @@ public class StreamRDFWriter {
      */
     public static void write(OutputStream output, Graph graph, RDFFormat lang) {
         StreamRDF stream = getWriterStream(output, lang) ;
-        StreamOps.graphToStream(graph, stream) ;
+        StreamRDFOps.graphToStream(graph, stream) ;
     }
 
     /** Write a DatasetGraph in streaming fashion
@@ -240,7 +240,7 @@ public class StreamRDFWriter {
      */
     public static void write(OutputStream output, DatasetGraph datasetGraph, RDFFormat format) {
         StreamRDF stream = getWriterStream(output, format) ;
-        StreamOps.datasetToStream(datasetGraph, stream) ;
+        StreamRDFOps.datasetToStream(datasetGraph, stream) ;
     }
     
     private static class StreamTriplesOnly extends StreamRDFWrapper {
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/thrift/WriterDatasetThrift.java b/jena-arq/src/main/java/org/apache/jena/riot/thrift/WriterDatasetThrift.java
index 0f8b85c..e0eb5ce 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/thrift/WriterDatasetThrift.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/thrift/WriterDatasetThrift.java
@@ -27,7 +27,7 @@ import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFFormat ;
 import org.apache.jena.riot.WriterDatasetRIOT ;
 import org.apache.jena.riot.system.PrefixMap ;
-import org.apache.jena.riot.system.StreamOps ;
+import org.apache.jena.riot.system.StreamRDFOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.util.Context ;
@@ -51,7 +51,7 @@ public class WriterDatasetThrift implements WriterDatasetRIOT
     public void write(OutputStream out, DatasetGraph dsg, PrefixMap prefixMap, String baseURI, Context context) {
         StreamRDF stream = BinRDF.streamToOutputStream(out, withValues) ;
         stream.start();
-        StreamOps.sendDatasetToStream(dsg, stream, prefixMap) ;
+        StreamRDFOps.sendDatasetToStream(dsg, stream, prefixMap) ;
         stream.finish();
     }
 }
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/thrift/WriterGraphThrift.java b/jena-arq/src/main/java/org/apache/jena/riot/thrift/WriterGraphThrift.java
index 66d6d92..2ec3a47 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/thrift/WriterGraphThrift.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/thrift/WriterGraphThrift.java
@@ -29,7 +29,7 @@ import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFFormat ;
 import org.apache.jena.riot.WriterGraphRIOT ;
 import org.apache.jena.riot.system.PrefixMap ;
-import org.apache.jena.riot.system.StreamOps ;
+import org.apache.jena.riot.system.StreamRDFOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.sparql.util.Context ;
 
@@ -52,7 +52,7 @@ public class WriterGraphThrift implements WriterGraphRIOT
     public void write(OutputStream out, Graph graph, PrefixMap prefixMap, String baseURI, Context context) {
         StreamRDF stream = BinRDF.streamToOutputStream(out, withValues) ;
         stream.start() ;
-        StreamOps.graphToStream(graph, stream) ;
+        StreamRDFOps.graphToStream(graph, stream) ;
         stream.finish() ;
     }
 }
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/NQuadsWriter.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/NQuadsWriter.java
index 56e30a0..52c0ea0 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/NQuadsWriter.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/NQuadsWriter.java
@@ -25,7 +25,7 @@ import java.util.Iterator ;
 import org.apache.jena.atlas.lib.CharSpace ;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.system.PrefixMap ;
-import org.apache.jena.riot.system.StreamOps ;
+import org.apache.jena.riot.system.StreamRDFOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.riot.system.StreamRDFLib ;
 import org.apache.jena.sparql.core.DatasetGraph ;
@@ -59,7 +59,7 @@ public class NQuadsWriter extends WriterDatasetRIOTBase
     private static void write$(StreamRDF s, Iterator<Quad> iter)
     {
         s.start() ;
-        StreamOps.sendQuadsToStream(iter, s) ;
+        StreamRDFOps.sendQuadsToStream(iter, s) ;
         s.finish();
     }
     
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/NTriplesWriter.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/NTriplesWriter.java
index 491611a..ec6d31f 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/NTriplesWriter.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/NTriplesWriter.java
@@ -29,7 +29,7 @@ import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.system.PrefixMap ;
-import org.apache.jena.riot.system.StreamOps ;
+import org.apache.jena.riot.system.StreamRDFOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.riot.system.StreamRDFLib ;
 import org.apache.jena.sparql.util.Context ;
@@ -61,7 +61,7 @@ public class NTriplesWriter extends WriterGraphRIOTBase
     private static void write$(StreamRDF s, Iterator<Triple> iter)
     {
         s.start() ;
-        StreamOps.sendTriplesToStream(iter, s) ;
+        StreamRDFOps.sendTriplesToStream(iter, s) ;
         s.finish();
     }
 
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterBlocks.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterBlocks.java
index 2161d32..e052327 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterBlocks.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterBlocks.java
@@ -20,7 +20,7 @@ package org.apache.jena.riot.writer;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.riot.system.PrefixMap ;
-import org.apache.jena.riot.system.StreamOps ;
+import org.apache.jena.riot.system.StreamRDFOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.util.Context ;
@@ -35,7 +35,7 @@ public class TriGWriterBlocks extends TriGWriterBase
         StreamRDF dest = new WriterStreamRDFBlocks(iOut) ;
         dest.start() ;
         dest.base(baseURI) ;
-        StreamOps.sendDatasetToStream(dsg, dest, prefixMap) ;
+        StreamRDFOps.sendDatasetToStream(dsg, dest, prefixMap) ;
         dest.finish() ;
     }
 }
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterFlat.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterFlat.java
index 46025b7..a18ddc2 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterFlat.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/TriGWriterFlat.java
@@ -20,7 +20,7 @@ package org.apache.jena.riot.writer;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.riot.system.PrefixMap ;
-import org.apache.jena.riot.system.StreamOps ;
+import org.apache.jena.riot.system.StreamRDFOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.util.Context ;
@@ -36,7 +36,7 @@ public class TriGWriterFlat extends TriGWriterBase
         StreamRDF dest = new WriterStreamRDFFlat(iOut) ;
         dest.start() ;
         dest.base(baseURI) ;
-        StreamOps.sendDatasetToStream(datasetGraph, dest, prefixMap) ;
+        StreamRDFOps.sendDatasetToStream(datasetGraph, dest, prefixMap) ;
         dest.finish() ;
     }
 }
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterBlocks.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterBlocks.java
index 66bbf32..47bfb42 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterBlocks.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterBlocks.java
@@ -21,7 +21,7 @@ package org.apache.jena.riot.writer;
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.riot.system.PrefixMap ;
-import org.apache.jena.riot.system.StreamOps ;
+import org.apache.jena.riot.system.StreamRDFOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.sparql.util.Context ;
 
@@ -35,7 +35,7 @@ public class TurtleWriterBlocks extends TurtleWriterBase
         StreamRDF dest = new WriterStreamRDFBlocks(out) ;
         dest.start() ;
         dest.base(baseURI) ;
-        StreamOps.sendGraphToStream(graph, dest, prefixMap) ;
+        StreamRDFOps.sendGraphToStream(graph, dest, prefixMap) ;
         dest.finish() ;
     }
 }
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterFlat.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterFlat.java
index 688748a..08fa481 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterFlat.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleWriterFlat.java
@@ -21,7 +21,7 @@ package org.apache.jena.riot.writer;
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.riot.system.PrefixMap ;
-import org.apache.jena.riot.system.StreamOps ;
+import org.apache.jena.riot.system.StreamRDFOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.sparql.util.Context ;
 
@@ -33,7 +33,7 @@ public class TurtleWriterFlat extends TurtleWriterBase
         StreamRDF dest = new WriterStreamRDFFlat(out) ;
         dest.start() ;
         dest.base(baseURI) ;
-        StreamOps.sendGraphToStream(graph, dest, prefixMap) ;
+        StreamRDFOps.sendGraphToStream(graph, dest, prefixMap) ;
         dest.finish() ;
     }
 }
\ No newline at end of file
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterTriX.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterTriX.java
index 94a4b43..623cfbe 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterTriX.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterTriX.java
@@ -31,7 +31,7 @@ import org.apache.jena.riot.lang.ReaderTriX ;
 import org.apache.jena.riot.lang.TriX ;
 import org.apache.jena.riot.system.PrefixMap ;
 import org.apache.jena.riot.system.RiotLib ;
-import org.apache.jena.riot.system.StreamOps ;
+import org.apache.jena.riot.system.StreamRDFOps ;
 import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.util.Context ;
 
@@ -66,7 +66,7 @@ public class WriterTriX implements WriterDatasetRIOT, WriterGraphRIOT {
 
     private void write(IndentedWriter out, DatasetGraph datasetGraph, PrefixMap prefixMap, String baseURI, Context context) {
         StreamWriterTriX w = new StreamWriterTriX(out) ;
-        StreamOps.datasetToStream(datasetGraph, w) ;
+        StreamRDFOps.datasetToStream(datasetGraph, w) ;
     }
 
     // Graph
@@ -84,7 +84,7 @@ public class WriterTriX implements WriterDatasetRIOT, WriterGraphRIOT {
     
     private static void write(IndentedWriter out, Graph graph, PrefixMap prefixMap, String baseURI, Object context) {
         StreamWriterTriX w = new StreamWriterTriX(out) ;
-        StreamOps.graphToStream(graph, w) ;
+        StreamRDFOps.graphToStream(graph, w) ;
     }
 }
 
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/OpLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/OpLib.java
index f8982ef..03db7fc 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/OpLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/OpLib.java
@@ -18,31 +18,18 @@
 
 package org.apache.jena.sparql.algebra;
 
-import org.apache.jena.sparql.algebra.op.* ;
-
-// NB Operations take and return nulls for convenience.
+import org.apache.jena.sparql.core.Quad;
 
 public class OpLib
 {
-    public static Op sub(Op1 op) { return op==null ? null : op.getSubOp() ; }
-    
-    public static boolean isProject(Op op) { return op instanceof OpProject ; } 
-    public static OpProject asProject(Op op)
-    {  return isProject(op) ? (OpProject)op : null ; }
-    
-    public static boolean isDistinct(Op op) { return op instanceof OpDistinct ; } 
-    public static OpDistinct asDistinct(Op op)
-    {  return isDistinct(op) ? (OpDistinct)op : null ; }
-
-    public static boolean isReduced(Op op) { return op instanceof OpReduced ; } 
-    public static OpReduced asReduced(Op op)
-    {  return isReduced(op) ? (OpReduced)op : null ; }
-
-    public static boolean isOrder(Op op) { return op instanceof OpOrder ; } 
-    public static OpOrder asOrder(Op op)
-    {  return isOrder(op) ? (OpOrder)op : null ; }
-
-    public static boolean isSlice(Op op) { return op instanceof OpSlice ; } 
-    public static OpSlice asSlice(Op op)
-    {  return isSlice(op) ? (OpSlice)op : null ; }
+    /** Convert a pattern, assumed to be quad form, 
+     * so that the default graph is the union of named graphs.  
+     */
+    public static Op unionDefaultGraphQuads(Op op)
+    {
+        // Rewrite so that any explicitly named "default graph" is union graph.
+        Transform t = new TransformGraphRename(Quad.defaultGraphNodeGenerated, Quad.unionGraph)  ;
+        op = Transformer.transform(t, op) ;
+        return op ;
+    }
 }
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/migrate/TransformGraphRename.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/TransformGraphRename.java
similarity index 96%
rename from jena-tdb/src/main/java/org/apache/jena/tdb/migrate/TransformGraphRename.java
rename to jena-arq/src/main/java/org/apache/jena/sparql/algebra/TransformGraphRename.java
index 8fbb66b..47f8f28 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/migrate/TransformGraphRename.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/TransformGraphRename.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.jena.tdb.migrate;
+package org.apache.jena.sparql.algebra;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.algebra.Op ;
@@ -24,6 +24,7 @@ import org.apache.jena.sparql.algebra.TransformCopy ;
 import org.apache.jena.sparql.algebra.op.OpGraph ;
 import org.apache.jena.sparql.algebra.op.OpQuadPattern ;
 
+/** Rename quad form alegra */
 public class TransformGraphRename extends TransformCopy
 { 
     private Node oldGraphName ;
@@ -35,7 +36,6 @@ public class TransformGraphRename extends TransformCopy
         this.newGraphName = newGraphName ;
     }
 
-    // Does not affect variables.
     @Override
     public Op transform(OpGraph opGraph, Op x)
     { 
diff --git a/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/migrate/M.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/Match.java
similarity index 63%
rename from jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/migrate/M.java
rename to jena-arq/src/main/java/org/apache/jena/sparql/core/Match.java
index 0382fac..925d129 100644
--- a/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/migrate/M.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/Match.java
@@ -15,25 +15,13 @@
  *  information regarding copyright ownership.
  */
 
-package org.apache.jena.dboe.storage.migrate;
+package org.apache.jena.sparql.core;
 
 import org.apache.jena.graph.Node;
 import org.apache.jena.graph.Triple;
-import org.apache.jena.sparql.core.Quad;
-
-/** Ways to match triples. quads */
-public class M {
-
-//    public static Stream<Triple> match(Collection<Triple> triples, Node s, Node p, Node o) {
-//        return triples.stream()
-//            .filter(t-> match(t, s,p,o));
-//    }
-//
-//    public static Stream<Quad> match(Collection<Quad> quads, Node g, Node s, Node p, Node o) {
-//        return quads.stream()
-//            .filter(q-> match(q, g,s,p,o));
-//    }
 
+/** Match triples, quads, with wioldcar rules (null or {@link Node#ANY} are wildcards).  */
+public class Match {
     public static boolean match(Quad quad, Node g, Node s, Node p, Node o) {
         return
             match(quad.getGraph(), g) &&
@@ -52,14 +40,4 @@ public class M {
     public static boolean match(Node node, Node pattern) {
         return pattern == null || pattern == Node.ANY || pattern.equals(node);
     }
-
-//    public static void checkConcrete(Node...nodes) {
-//        for ( Node n : nodes )
-//            checkConcrete(n);
-//    }
-//
-//    public static void checkConcrete(Node n) {
-//        if ( ! n.isConcrete() )
-//            throw new IllegalArgumentException("Not concrete: "+n);
-//    }
 }
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java b/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java
index ee69691..2644a1e 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java
@@ -30,7 +30,7 @@ import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFDataMgr ;
-import org.apache.jena.riot.system.StreamOps ;
+import org.apache.jena.riot.system.StreamRDFOps ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.riot.system.StreamRDFLib ;
 import org.apache.jena.riot.system.StreamRDFWriter ;
@@ -72,7 +72,7 @@ public class TestStreamRDFThrift extends BaseTest {
     @Test public void graph_01() {
         ByteArrayOutputStream out = new ByteArrayOutputStream() ;
         StreamRDF stream = BinRDF.streamToOutputStream(out, true) ; // With values.
-        StreamOps.graphToStream(graph, stream) ;
+        StreamRDFOps.graphToStream(graph, stream) ;
         
         byte[] bytes = out.toByteArray() ;
         ByteArrayInputStream in = new ByteArrayInputStream(bytes) ;
@@ -114,7 +114,7 @@ public class TestStreamRDFThrift extends BaseTest {
         DatasetGraph dsg1 = datasetGraph ;
         ByteArrayOutputStream out = new ByteArrayOutputStream() ;
         StreamRDF stream = BinRDF.streamToOutputStream(out) ;
-        StreamOps.datasetToStream(dsg1, stream) ;
+        StreamRDFOps.datasetToStream(dsg1, stream) ;
         
         byte[] bytes = out.toByteArray() ;
         ByteArrayInputStream in = new ByteArrayInputStream(bytes) ;
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/io/IO.java b/jena-base/src/main/java/org/apache/jena/atlas/io/IO.java
index 2c64cb5..d22f5c3 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/io/IO.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/io/IO.java
@@ -18,42 +18,44 @@
 
 package org.apache.jena.atlas.io;
 
-import java.io.* ;
-import java.nio.charset.Charset ;
-import java.nio.charset.StandardCharsets ;
+import java.io.*;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.FileVisitResult;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.SimpleFileVisitor;
 import java.nio.file.attribute.BasicFileAttributes;
-import java.util.zip.GZIPInputStream ;
-import java.util.zip.GZIPOutputStream ;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
 
 import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
 import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream;
 import org.apache.commons.compress.compressors.snappy.SnappyCompressorInputStream;
 import org.apache.commons.io.FilenameUtils;
-import org.apache.jena.atlas.RuntimeIOException ;
-import org.apache.jena.atlas.lib.IRILib ;
+import org.apache.jena.atlas.RuntimeIOException;
+import org.apache.jena.atlas.lib.IRILib;
+import org.apache.jena.atlas.lib.StrUtils;
 
 public class IO
 {
-    public static final int EOF = -1 ;
-    public static final int UNSET = -2 ;
+    public static final int EOF = -1;
+    public static final int UNSET = -2;
     
     // Buffer size.  Larger than Java's default.
-    private static final int BUFFER_SIZE = 128*1024 ;
+    private static final int BUFFER_SIZE = 128*1024;
        
-    private static Charset utf8  = StandardCharsets.UTF_8 ;
-    private static Charset ascii = StandardCharsets.US_ASCII ;
+    private static Charset utf8  = StandardCharsets.UTF_8;
+    private static Charset ascii = StandardCharsets.US_ASCII;
     
     /** Open an input stream to a file. 
      * If the filename is null or "-", return System.in
      * If the filename ends in .gz, wrap in  GZIPInputStream  
      */
     static public InputStream openFile(String filename) {
-        try { return openFileEx(filename) ; }
-        catch (IOException ex) { IO.exception(ex); return null ; }
+        try { return openFileEx(filename); }
+        catch (IOException ex) { IO.exception(ex); return null; }
     }
     
     /**
@@ -65,9 +67,9 @@ public class IO
      */
     static public InputStream openFileBuffered(String filename) {
         try {
-            InputStream in = openFileEx(filename) ;
-            return new BufferedInputStream(in, BUFFER_SIZE) ;
-        } catch (IOException ex) { IO.exception(ex); return null ; }
+            InputStream in = openFileEx(filename);
+            return new BufferedInputStream(in, BUFFER_SIZE);
+        } catch (IOException ex) { IO.exception(ex); return null; }
     }
     
     /** Open an input stream to a file; do not mask IOExceptions. 
@@ -79,21 +81,21 @@ public class IO
      */
     static public InputStream openFileEx(String filename) throws IOException, FileNotFoundException {
         if ( filename == null || filename.equals("-") )
-            return System.in ;
+            return System.in;
         if ( filename.startsWith("file:") )
         {
-            filename = filename.substring("file:".length()) ;
-            filename = IRILib.decode(filename) ;
+            filename = filename.substring("file:".length());
+            filename = IRILib.decode(filename);
         }
-        InputStream in = new FileInputStream(filename) ;
+        InputStream in = new FileInputStream(filename);
         String ext = FilenameUtils.getExtension(filename);
         switch ( ext ) {
             case "":        return in;
-            case "gz":      return new GZIPInputStream(in) ;
+            case "gz":      return new GZIPInputStream(in);
             case "bz2":     return new BZip2CompressorInputStream(in);
             case "sz":      return new SnappyCompressorInputStream(in);
         }
-        return in ;
+        return in;
     }
 
     private static String[] extensions = { "gz", "bz2", "sz" }; 
@@ -112,18 +114,18 @@ public class IO
      * If the filename is null or "-", use System.in
      * If the filename ends in .gz, use GZIPInputStream  
      */
-    static public Reader openFileUTF8(String filename)  { return openFileReader(filename, utf8) ; }
+    static public Reader openFileUTF8(String filename)  { return openFileReader(filename, utf8); }
 
     /** Open an ASCII Reader for a file. 
      * If the filename is null or "-", use System.in
      * If the filename ends in .gz, use GZIPInputStream  
      */
-    static public Reader openFileASCII(String filename)  { return openFileReader(filename, ascii) ; }
+    static public Reader openFileASCII(String filename)  { return openFileReader(filename, ascii); }
 
     private static Reader openFileReader(String filename, Charset charset)
     {
-        InputStream in = openFile(filename) ;
-        return new InputStreamReader(in, charset) ;
+        InputStream in = openFile(filename);
+        return new InputStreamReader(in, charset);
     }
 
     /** Create an unbuffered reader that uses UTF-8 encoding */ 
@@ -140,7 +142,7 @@ public class IO
     
     /** Create an buffered reader that uses UTF-8 encoding */ 
     static public BufferedReader asBufferedUTF8(InputStream in) {
-        return new BufferedReader(asUTF8(in)) ;
+        return new BufferedReader(asUTF8(in));
     }
 
     /** Create a writer that uses UTF-8 encoding */ 
@@ -156,13 +158,13 @@ public class IO
     /** Create a writer that uses UTF-8 encoding and is buffered. */ 
     static public Writer asBufferedUTF8(OutputStream out) {
         Writer w =  new OutputStreamWriter(out, utf8.newEncoder());
-        return new BufferingWriter(w) ;
+        return new BufferingWriter(w);
     }
 
     /** Open a file for output - may include adding gzip processing. */
     static public OutputStream openOutputFile(String filename) {
-        try { return openOutputFileEx(filename) ; }
-        catch (IOException ex) { IO.exception(ex) ; return null ; }
+        try { return openOutputFileEx(filename); }
+        catch (IOException ex) { IO.exception(ex); return null; }
     }
     
     /** Open an input stream to a file; do not mask IOExceptions. 
@@ -174,31 +176,31 @@ public class IO
     static public OutputStream openOutputFileEx(String filename) throws FileNotFoundException,IOException
     {
         if ( filename == null || filename.equals("-") )
-            return System.out ;
+            return System.out;
         if ( filename.startsWith("file:") )
         {
-            filename = filename.substring("file:".length()) ;
-            filename = IRILib.decode(filename) ;
+            filename = filename.substring("file:".length());
+            filename = IRILib.decode(filename);
         }
-        OutputStream out = new FileOutputStream(filename) ;
+        OutputStream out = new FileOutputStream(filename);
         String ext = FilenameUtils.getExtension(filename);
         switch ( ext ) {
             case "":        return out;
-            case "gz":      return new GZIPOutputStream(out) ;
+            case "gz":      return new GZIPOutputStream(out);
             case "bz2":     return new BZip2CompressorOutputStream(out);
             case "sz":      throw new UnsupportedOperationException("Snappy output");
         }
-        return out ;
+        return out;
     }
     
     /** Wrap in a general writer interface */ 
-    static public AWriter wrap(Writer w)                    { return Writer2.wrap(w) ; }
+    static public AWriter wrap(Writer w)                    { return Writer2.wrap(w); }
     
     /** Wrap in a general writer interface */ 
-    static public AWriter wrapUTF8(OutputStream out)        { return wrap(asUTF8(out)) ; } 
+    static public AWriter wrapUTF8(OutputStream out)        { return wrap(asUTF8(out)); } 
     
     /** Wrap in a general writer interface */ 
-    static public AWriter wrapASCII(OutputStream out)       { return wrap(asASCII(out)) ; } 
+    static public AWriter wrapASCII(OutputStream out)       { return wrap(asASCII(out)); } 
 
     /** Create a print writer that uses UTF-8 encoding */ 
     static public PrintWriter asPrintWriterUTF8(OutputStream out) {
@@ -206,7 +208,7 @@ public class IO
     }
 
     public static void close(org.apache.jena.atlas.lib.Closeable resource) {
-        resource.close() ;
+        resource.close();
     }
 
     public static void closeSilent(org.apache.jena.atlas.lib.Closeable resource) {
@@ -215,88 +217,88 @@ public class IO
     
     public static void close(java.io.Closeable resource) {
         if ( resource == null )
-            return ;
-        try { resource.close(); } catch (IOException ex) { exception(ex) ; }
+            return;
+        try { resource.close(); } catch (IOException ex) { exception(ex); }
     }
     
     public static void closeSilent(java.io.Closeable resource) {
         if ( resource == null )
-            return ;
+            return;
         try { resource.close(); } catch (IOException ex) { }
     }
     
     public static void close(AWriter resource) {
         if ( resource == null )
-            return ;
+            return;
         resource.close();
     }
     
     public static void closeSilent(AWriter resource) {
         if ( resource == null )
-            return ;
+            return;
         try { resource.close();  } catch (Exception ex) { }
     }
 
     public static void close(IndentedWriter resource) {
         if ( resource == null )
-            return ;
+            return;
         resource.close();
     }
     
     public static void closeSilent(IndentedWriter resource) {
         if ( resource == null )
-            return ;
+            return;
         try { resource.close();  } catch (Exception ex) { }
     }
 
     /** Throw a RuntimeIOException - this function is guaranteed not to return normally */
     public static void exception(String message) {
-        throw new RuntimeIOException(message) ;
+        throw new RuntimeIOException(message);
     }
 
     /** Throw a RuntimeIOException - this function is guaranteed not to return normally */
     public static void exception(IOException ex) {
-        throw new RuntimeIOException(ex) ;
+        throw new RuntimeIOException(ex);
     }
 
     /** Throw a RuntimeIOException - this function is guaranteed not to return normally */
     public static void exception(String msg, IOException ex) {
-        throw new RuntimeIOException(msg, ex) ;
+        throw new RuntimeIOException(msg, ex);
     }
     
     public static void flush(OutputStream out) { 
         if ( out == null )
-            return ;
-        try { out.flush(); } catch (IOException ex) { exception(ex) ; }
+            return;
+        try { out.flush(); } catch (IOException ex) { exception(ex); }
     }
     
     public static void flush(Writer out) {
         if ( out == null )
-            return ;
-        try { out.flush(); } catch (IOException ex) { exception(ex) ; } 
+            return;
+        try { out.flush(); } catch (IOException ex) { exception(ex); } 
     }
 
     public static void flush(AWriter out) {
         if ( out == null )
-            return ;
+            return;
         out.flush(); 
     }
 
     public static byte[] readWholeFile(InputStream in) {
-        final int WHOLE_FILE_BUFFER_SIZE = 32*1024 ; 
+        final int WHOLE_FILE_BUFFER_SIZE = 32*1024; 
         try(ByteArrayOutputStream out = new ByteArrayOutputStream(WHOLE_FILE_BUFFER_SIZE)) {
-            byte buff[] = new byte[WHOLE_FILE_BUFFER_SIZE] ;
+            byte buff[] = new byte[WHOLE_FILE_BUFFER_SIZE];
             while (true) {
-                int l = in.read(buff) ;
+                int l = in.read(buff);
                 if ( l <= 0 )
-                    break ;
-                out.write(buff, 0, l) ;
+                    break;
+                out.write(buff, 0, l);
             }
-            return out.toByteArray() ;
+            return out.toByteArray();
         }
         catch (IOException ex) {
-            exception(ex) ;
-            return null ;
+            exception(ex);
+            return null;
         }
     }
     
@@ -308,7 +310,7 @@ public class IO
     
     public static String readWholeFileAsUTF8(String filename) throws IOException {
         try ( InputStream in = new FileInputStream(filename) ) {
-            return readWholeFileAsUTF8(in) ;
+            return readWholeFileAsUTF8(in);
         }
     }
 
@@ -321,7 +323,7 @@ public class IO
     public static String readWholeFileAsUTF8(InputStream in) throws IOException {
         // Don't buffer - we're going to read in large chunks anyway
         try ( Reader r = asUTF8(in) ) {
-            return readWholeFileAsUTF8(r) ;
+            return readWholeFileAsUTF8(r);
         }
     }
     
@@ -334,7 +336,7 @@ public class IO
     
     // Private worker as we are trying to force UTF-8. 
     private static String readWholeFileAsUTF8(Reader r) throws IOException {
-        final int WHOLE_FILE_BUFFER_SIZE = 32*1024 ; 
+        final int WHOLE_FILE_BUFFER_SIZE = 32*1024; 
         try(StringWriter sw = new StringWriter(WHOLE_FILE_BUFFER_SIZE)) {
             char buff[] = new char[WHOLE_FILE_BUFFER_SIZE];
             for (;;)
@@ -348,25 +350,64 @@ public class IO
         }
     }
 
+    /** Write a string to a file as UTF-8. The file is closed after the operation.
+     * @param filename
+     * @param content String to be written
+     * @throws IOException
+     */
+
+    public static void writeStringAsUTF8(String filename, String content) throws IOException {
+        try ( OutputStream out = IO.openOutputFileEx(filename) ) {
+            writeStringAsUTF8(out, content);
+            out.flush();
+        }
+    }
+
+    /** Write a string into an {@link OutputStream} as UTF-8.
+     *
+     * @param out       OutputStream destination.
+     * @param content   String to be written
+     * @throws  IOException
+     */
+    public static void writeStringAsUTF8(OutputStream out, String content) throws IOException {
+        Writer w = new OutputStreamWriter(out, StandardCharsets.UTF_8);
+        w.write(content);
+        w.flush();
+        // Not close.
+    }
+
+    /** String to ByteBuffer as UTF-8 bytes */
+    public static ByteBuffer stringToByteBuffer(String str) {
+        byte[] b = StrUtils.asUTF8bytes(str);
+        return ByteBuffer.wrap(b);
+    }
+
+    /** ByteBuffer to String */
+    public static String byteBufferToString(ByteBuffer bb) {
+        byte[] b = new byte[bb.remaining()];
+        bb.get(b);
+        return StrUtils.fromUTF8bytes(b);
+    }
+    
     public static String uniqueFilename(String directory, String base, String ext) {
-        File d = new File(directory) ;
+        File d = new File(directory);
         if ( !d.exists() )
-            throw new IllegalArgumentException("Not found: " + directory) ;
+            throw new IllegalArgumentException("Not found: " + directory);
         try {
-            String fn0 = d.getCanonicalPath() + File.separator + base ;
-            String fn = fn0 ;
-            int x = 1 ;
+            String fn0 = d.getCanonicalPath() + File.separator + base;
+            String fn = fn0;
+            int x = 1;
             while (true) {
                 if ( ext != null )
-                    fn = fn + "."+ext ;
-                File f = new File(fn) ;
+                    fn = fn + "."+ext;
+                File f = new File(fn);
                 if ( ! f.exists() )
-                    return fn ;
-                fn = fn0 + "-" + (x++) ;
+                    return fn;
+                fn = fn0 + "-" + (x++);
             }
         } catch (IOException e) {
-            IO.exception(e) ;
-            return null ;
+            IO.exception(e);
+            return null;
         }
     }
     
@@ -394,6 +435,6 @@ public class IO
                 }
             });
         }
-        catch (IOException ex) { IO.exception(ex) ; return; }
+        catch (IOException ex) { IO.exception(ex); return; }
     }
 }
diff --git a/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/migrate/StreamOps.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/StreamOps.java
similarity index 77%
rename from jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/migrate/StreamOps.java
rename to jena-base/src/main/java/org/apache/jena/atlas/lib/StreamOps.java
index f42636e..01a39c5 100644
--- a/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/migrate/StreamOps.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/StreamOps.java
@@ -15,7 +15,7 @@
  *  information regarding copyright ownership.
  */
 
-package org.apache.jena.dboe.storage.migrate;
+package org.apache.jena.atlas.lib;
 
 import java.util.Collection;
 import java.util.Iterator;
@@ -26,6 +26,11 @@ import java.util.stream.Stream;
 
 import org.apache.jena.atlas.iterator.Iter;
 
+/**
+ * Collect some stream operations into one place.
+ * Sometimes, the function form reads better. 
+ * @see Iter Iter - a stream-like class for iterators. 
+ */
 public class StreamOps {
     /** Iterator to Stream.
      * Call to {@linkplain Iter#asStream}.
@@ -34,25 +39,32 @@ public class StreamOps {
         return Iter.asStream(iter);
     }
 
+    /** Stream to {@link List} */
     public static <X> List<X> toList(Stream<X> stream) {
         return stream.collect(Collectors.toList());
     }
 
+    /** Stream to {@link Set} */
     public static <X> Set<X> toSet(Stream<X> stream) {
         return stream.collect(Collectors.toSet());
     }
 
+    /** First element or null */
     public static <X> X first(Stream<X> stream) {
         return stream.findFirst().orElse(null);
     }
 
+    /** An element from a {@link Collection} */ 
     public static <X> X element(Collection<X> collection) {
         return first(collection.stream());
     }
 
+    /** Debug : print stream.
+     * This operation prints the whole stream at the point it is used, 
+     * and then returns a new stream of the same elements.
+     */ 
     public static <X> Stream<X> print(Stream<X> stream) {
         stream = stream.map(item -> { System.out.println(item); return item; });
         return toList(stream).stream();
     }
 }
-
diff --git a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/migrate/L.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/ThreadLib.java
similarity index 54%
rename from jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/migrate/L.java
rename to jena-base/src/main/java/org/apache/jena/atlas/lib/ThreadLib.java
index 5c5bdd5..4cd7935 100644
--- a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/migrate/L.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/ThreadLib.java
@@ -16,59 +16,17 @@
  * limitations under the License.
  */
 
-package org.apache.jena.dboe.migrate;
+package org.apache.jena.atlas.lib;
 
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-import java.util.UUID;
-import java.util.concurrent.*;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Semaphore;
 import java.util.concurrent.locks.Lock;
 import java.util.function.Supplier;
 
-import org.apache.jena.atlas.io.IO;
-import org.apache.jena.atlas.lib.Bytes;
-import org.apache.jena.atlas.lib.StrUtils;
-import org.apache.jena.shared.uuid.JenaUUID;
-
 /** Misc class */
-public class L {
-
-    // Not to be confused with UUID.nameUUIDFromBytes (a helper for version 3 UUIDs)
-    /**
-     * Java UUID to bytes (most significant first)
-     */
-    public static byte[] uuidAsBytes(UUID uuid) {
-        return uuidAsBytes(uuid.getMostSignificantBits(), uuid.getLeastSignificantBits());
-    }
-
-    /**
-     * Jena UUID to bytes (most significant first)
-     */
-    public static byte[] uuidAsBytes(JenaUUID uuid) {
-        return uuidAsBytes(uuid.getMostSignificantBits(), uuid.getLeastSignificantBits());
-    }
-
-    /** UUID, as two longs, as bytes */
-    public static byte[] uuidAsBytes(long mostSignificantBits, long leastSignificantBits) {
-        byte[] bytes = new byte[16];
-        Bytes.setLong(mostSignificantBits, bytes, 0);
-        Bytes.setLong(leastSignificantBits, bytes, 8);
-        return bytes;
-    }
-
-    /** A UUID string to bytes */
-    public static byte[] uuidAsBytes(String str) {
-        return uuidAsBytes(UUID.fromString(str));
-    }
-
-    public static String uuidToString(long mostSignificantBits, long leastSignificantBits) {
-        return new UUID(mostSignificantBits, leastSignificantBits).toString();
-        //JenaUUID.toString(mostSignificantBits, leastSignificantBits)
-    }
+public class ThreadLib {
 
     private static ExecutorService executor = Executors.newCachedThreadPool();
 
@@ -157,49 +115,4 @@ public class L {
     public static void withLock(Lock lock, Runnable r) {
         withBeforeAfter(r, ()->lock.lock(), ()->lock.unlock());
     }
-
-    // ==> IO.writeWholeFileAsUTF8
-
-    /** Write a string to a file as UTF-8. The file is closed after the operation.
-     * @param filename
-     * @param content String to be written
-     * @throws IOException
-     */
-
-    public static void writeStringAsUTF8(String filename, String content) throws IOException {
-        try ( OutputStream out = IO.openOutputFileEx(filename) ) {
-            writeStringAsUTF8(out, content);
-            out.flush();
-        }
-    }
-
-    /** Write a string into an {@link OutputStream} as UTF-8.
-     *
-     * @param out       OutputStream destination.
-     * @param content   String to be written
-     * @throws  IOException
-     */
-    public static void writeStringAsUTF8(OutputStream out, String content) throws IOException {
-        Writer w = new OutputStreamWriter(out, StandardCharsets.UTF_8);
-        w.write(content);
-        w.flush();
-        // Not close.
-    }
-
-    // ==> IO.writeWholeFileAsUTF8
-
-    /** String to ByteBuffer as UTF-8 bytes */
-    public static ByteBuffer stringToByteBuffer(String str) {
-        byte[] b = StrUtils.asUTF8bytes(str);
-        return ByteBuffer.wrap(b);
-    }
-
-    /** ByteBuffer to String */
-    public static String byteBufferToString(ByteBuffer bb) {
-        byte[] b = new byte[bb.remaining()];
-        bb.get(b);
-        return StrUtils.fromUTF8bytes(b);
-    }
-
 }
-
diff --git a/jena-core/src/main/java/org/apache/jena/shared/uuid/LibUUID.java b/jena-core/src/main/java/org/apache/jena/shared/uuid/LibUUID.java
index 7533360..79001b9 100644
--- a/jena-core/src/main/java/org/apache/jena/shared/uuid/LibUUID.java
+++ b/jena-core/src/main/java/org/apache/jena/shared/uuid/LibUUID.java
@@ -25,6 +25,7 @@ import java.util.Random;
 
 import org.apache.jena.JenaRuntime ;
 
+/** Internal */
 class LibUUID
 {
     //static boolean warningSent = false ;
diff --git a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/sys/LibUUID.java b/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/sys/LibUUID.java
new file mode 100644
index 0000000..6a98c0b
--- /dev/null
+++ b/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/sys/LibUUID.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.dboe.sys;
+
+import java.util.UUID;
+
+import org.apache.jena.atlas.lib.Bytes;
+import org.apache.jena.shared.uuid.JenaUUID;
+
+public class LibUUID {
+
+    /** Generate bytes for a Java UUID (most significant first) */
+    public static byte[] uuidAsBytes(UUID uuid) {
+        // Not to be confused with UUID.nameUUIDFromBytes (a helper for version 3 UUIDs)
+        return uuidAsBytes(uuid.getMostSignificantBits(), uuid.getLeastSignificantBits());
+    }
+
+    /** Generate bytes for a Jena UUID (most significant first) */
+    public static byte[] uuidAsBytes(JenaUUID uuid) {
+        return uuidAsBytes(uuid.getMostSignificantBits(), uuid.getLeastSignificantBits());
+    }
+
+    /** UUID, as two longs, as bytes */
+    public static byte[] uuidAsBytes(long mostSignificantBits, long leastSignificantBits) {
+        byte[] bytes = new byte[16];
+        Bytes.setLong(mostSignificantBits, bytes, 0);
+        Bytes.setLong(leastSignificantBits, bytes, 8);
+        return bytes;
+    }
+
+    /** A UUID string to bytes */
+    public static byte[] uuidAsBytes(String str) {
+        return uuidAsBytes(UUID.fromString(str));
+    }
+
+    /** UUID, as two longs, in RFC string format */ 
+    public static String uuidToString(long mostSignificantBits, long leastSignificantBits) {
+        return new UUID(mostSignificantBits, leastSignificantBits).toString();
+        //JenaUUID.toString(mostSignificantBits, leastSignificantBits)
+    }
+
+}
diff --git a/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/simple/StorageTuplesN.java b/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/simple/StorageTuplesN.java
index 9084d04..042d780 100644
--- a/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/simple/StorageTuplesN.java
+++ b/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/simple/StorageTuplesN.java
@@ -24,8 +24,8 @@ import java.util.stream.Stream;
 
 import org.apache.jena.atlas.lib.ListUtils;
 import org.apache.jena.atlas.lib.tuple.Tuple;
-import org.apache.jena.dboe.storage.migrate.M;
 import org.apache.jena.graph.Node;
+import org.apache.jena.sparql.core.Match;
 
 /** Tuple of Nodes */
 public class StorageTuplesN {
@@ -65,7 +65,7 @@ public class StorageTuplesN {
 
     private boolean match(Tuple<Node> terms, Tuple<Node> pattern) {
         for (int i = 0; i < terms.len(); i++ ) {
-            if ( ! M.match(terms.get(i), pattern.get(i) ) ) {
+            if ( ! Match.match(terms.get(i), pattern.get(i) ) ) {
                 return false;
             }
         }
@@ -74,7 +74,7 @@ public class StorageTuplesN {
 
     private static boolean match(Node node, Node pattern) {
         // This is the only use of M
-        return M.match(node, pattern);
+        return Match.match(node, pattern);
         //return pattern == null || pattern == Node.ANY || pattern.equals(node);
     }
 
diff --git a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/recovery/TestRecovery.java b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/recovery/TestRecovery.java
index 800bf3a..9ba969f 100644
--- a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/recovery/TestRecovery.java
+++ b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/recovery/TestRecovery.java
@@ -25,18 +25,21 @@ import static org.junit.Assert.assertNotNull;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 
+import org.apache.jena.atlas.io.IO;
 import org.apache.jena.atlas.lib.FileOps;
 import org.apache.jena.dboe.base.file.BufferChannel;
 import org.apache.jena.dboe.base.file.BufferChannelFile;
 import org.apache.jena.dboe.base.file.Location;
-import org.apache.jena.dboe.migrate.L;
 import org.apache.jena.dboe.trans.data.TransBlob;
 import org.apache.jena.dboe.transaction.txn.ComponentId;
 import org.apache.jena.dboe.transaction.txn.TransactionCoordinator;
 import org.apache.jena.dboe.transaction.txn.journal.Journal;
 import org.apache.jena.dboe.transaction.txn.journal.JournalEntry;
 import org.apache.jena.dboe.transaction.txn.journal.JournalEntryType;
-import org.junit.*;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 
 // We need something to recover io order to test recovery.
@@ -78,7 +81,7 @@ public class TestRecovery {
         // Write out a journal.
         {
             Journal journal = Journal.create(Location.create(dir.getRoot().getAbsolutePath()));
-            journal.write(JournalEntryType.REDO, cid, L.stringToByteBuffer(str));
+            journal.write(JournalEntryType.REDO, cid, IO.stringToByteBuffer(str));
             journal.writeJournal(JournalEntry.COMMIT);
             journal.close();
         }
@@ -91,7 +94,7 @@ public class TestRecovery {
 
         ByteBuffer blob = tBlob.getBlob();
         assertNotNull(blob);
-        String s = L.byteBufferToString(blob);
+        String s = IO.byteBufferToString(blob);
         assertEquals(str,s);
         coord.shutdown();
     }
@@ -105,8 +108,8 @@ public class TestRecovery {
         // Write out a journal for two components.
         {
             Journal journal = Journal.create(Location.create(dir.getRoot().getAbsolutePath()));
-            journal.write(JournalEntryType.REDO, cid1, L.stringToByteBuffer(str1));
-            journal.write(JournalEntryType.REDO, cid2, L.stringToByteBuffer(str2));
+            journal.write(JournalEntryType.REDO, cid1, IO.stringToByteBuffer(str1));
+            journal.write(JournalEntryType.REDO, cid2, IO.stringToByteBuffer(str2));
             journal.writeJournal(JournalEntry.COMMIT);
             journal.close();
         }
@@ -121,12 +124,12 @@ public class TestRecovery {
 
         ByteBuffer blob1 = tBlob1.getBlob();
         assertNotNull(blob1);
-        String s1 = L.byteBufferToString(blob1);
+        String s1 = IO.byteBufferToString(blob1);
         assertEquals(str1,s1);
 
         ByteBuffer blob2 = tBlob2.getBlob();
         assertNotNull(blob2);
-        String s2 = L.byteBufferToString(blob2);
+        String s2 = IO.byteBufferToString(blob2);
         assertEquals(str2,s2);
 
         assertNotEquals(str1,str2);
diff --git a/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/TransInteger.java b/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/TransInteger.java
index f3a7e80..196e079 100644
--- a/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/TransInteger.java
+++ b/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/TransInteger.java
@@ -26,7 +26,6 @@ import org.apache.jena.atlas.io.IO;
 import org.apache.jena.atlas.lib.FileOps;
 import org.apache.jena.atlas.lib.InternalErrorException;
 import org.apache.jena.atlas.logging.Log;
-import org.apache.jena.dboe.migrate.L;
 import org.apache.jena.dboe.transaction.txn.ComponentId;
 import org.apache.jena.dboe.transaction.txn.TransactionalComponentLifecycle;
 import org.apache.jena.dboe.transaction.txn.TxnId;
@@ -121,7 +120,7 @@ public class TransInteger extends TransactionalComponentLifecycle<TransInteger.I
     }
 
     private static void write(String filename, long value) {
-        try { L.writeStringAsUTF8(filename, Long.toString(value)); }
+        try { IO.writeStringAsUTF8(filename, Long.toString(value)); }
         catch (IOException ex) {}
         catch (NumberFormatException ex) {}
     }
diff --git a/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/txn/TxnIdUuid.java b/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/txn/TxnIdUuid.java
index c691d61..0f9b106 100644
--- a/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/txn/TxnIdUuid.java
+++ b/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/txn/TxnIdUuid.java
@@ -21,7 +21,7 @@ package org.apache.jena.dboe.transaction.txn;
 import java.util.UUID;
 
 import org.apache.jena.atlas.lib.Bytes;
-import org.apache.jena.dboe.migrate.L;
+import org.apache.jena.dboe.sys.LibUUID;
 import org.apache.jena.shared.uuid.JenaUUID;
 
 /** {@link TxnId} based on a {@link UUID}.
@@ -57,14 +57,14 @@ public class TxnIdUuid implements TxnId {
     @Override
     public String name() {
         if ( name == null )
-            name = L.uuidToString(mostSignificantBits, leastSignificantBits);
+            name = LibUUID.uuidToString(mostSignificantBits, leastSignificantBits);
         return name;
     }
 
     @Override
     public byte[] bytes() {
         if ( bytes == null )
-            bytes = L.uuidAsBytes(mostSignificantBits, leastSignificantBits);
+            bytes = LibUUID.uuidAsBytes(mostSignificantBits, leastSignificantBits);
         return bytes;
     }
 
diff --git a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionCoordinatorControl.java b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionCoordinatorControl.java
index 5d48fba..4259fe8 100644
--- a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionCoordinatorControl.java
+++ b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionCoordinatorControl.java
@@ -23,9 +23,9 @@ import static org.junit.Assert.*;
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.jena.atlas.lib.ThreadLib;
 import org.apache.jena.dboe.base.file.Location;
 import org.apache.jena.system.Txn;
-import org.apache.jena.dboe.migrate.L;
 import org.apache.jena.dboe.transaction.txn.Transaction;
 import org.apache.jena.dboe.transaction.txn.TransactionCoordinator;
 import org.apache.jena.dboe.transaction.txn.TransactionException;
@@ -67,10 +67,10 @@ public class TestTransactionCoordinatorControl {
 
     @Test public void txn_coord_disable_writers_2() {
         txnMgr.blockWriters();
-        Transaction txn = L.syncCallThread(()->txnMgr.begin(TxnType.WRITE, false));
+        Transaction txn = ThreadLib.syncCallThread(()->txnMgr.begin(TxnType.WRITE, false));
         assertNull(txn);
         txnMgr.enableWriters();
-        Transaction txn2 = L.syncCallThread(()-> {
+        Transaction txn2 = ThreadLib.syncCallThread(()-> {
             Transaction txn1 = txnMgr.begin(TxnType.WRITE, false);
             assertNotNull(txn1);
             txn1.abort(); txn1.end();
@@ -81,21 +81,21 @@ public class TestTransactionCoordinatorControl {
 
     @Test public void txn_coord_disable_writers_3() {
         txnMgr.blockWriters();
-        Transaction txn = L.syncCallThread(() -> {
+        Transaction txn = ThreadLib.syncCallThread(() -> {
             Transaction tx = txnMgr.begin(TxnType.READ, false);
             tx.end();
             return tx;
         });
         assertNotNull(txn);
         txnMgr.enableWriters();
-        Transaction txn1 = L.syncCallThread(() -> {
+        Transaction txn1 = ThreadLib.syncCallThread(() -> {
             Transaction tx = txnMgr.begin(TxnType.WRITE, false);
             tx.commit();
             tx.end();
             return tx;
         });
         assertNotNull(txn1);
-        Transaction txn2 = L.syncCallThread(() -> {
+        Transaction txn2 = ThreadLib.syncCallThread(() -> {
             Transaction tx = txnMgr.begin(TxnType.READ, false);
             tx.end();
             return tx;
@@ -120,7 +120,7 @@ public class TestTransactionCoordinatorControl {
 
     @Test public void txn_coord_exclusive_1() {
         txnMgr.startExclusiveMode();
-        L.syncOtherThread(()->{
+        ThreadLib.syncOtherThread(()->{
             Transaction txn1 = txnMgr.begin(TxnType.WRITE, false);
             assertNull(txn1);
             Transaction txn2 = txnMgr.begin(TxnType.READ, false);
@@ -128,7 +128,7 @@ public class TestTransactionCoordinatorControl {
         });
 
         txnMgr.finishExclusiveMode();
-        L.syncOtherThread(()->{
+        ThreadLib.syncOtherThread(()->{
             Transaction txn1 = txnMgr.begin(TxnType.WRITE, false);
             assertNotNull(txn1);
             Transaction txn2 = txnMgr.begin(TxnType.READ, false);
diff --git a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionLifecycle2.java b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionLifecycle2.java
index cad6dcd..736a2da 100644
--- a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionLifecycle2.java
+++ b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionLifecycle2.java
@@ -22,8 +22,8 @@ import static org.junit.Assert.*;
 
 import java.util.concurrent.atomic.AtomicReference;
 
+import org.apache.jena.atlas.lib.ThreadLib;
 import org.apache.jena.dboe.base.file.Location;
-import org.apache.jena.dboe.migrate.L;
 import org.apache.jena.dboe.transaction.txn.Transaction;
 import org.apache.jena.dboe.transaction.txn.TransactionCoordinator;
 import org.apache.jena.dboe.transaction.txn.TransactionException;
@@ -228,7 +228,7 @@ public class TestTransactionLifecycle2 {
     @Test
     public void txn_promote_thread_writer_1() {
         Transaction txn1 = txnMgr.begin(TxnType.READ_PROMOTE);
-        L.syncOtherThread(()->{
+        ThreadLib.syncOtherThread(()->{
             Transaction txn2 = txnMgr.begin(TxnType.WRITE);
             txn2.commit();
             txn2.end();
@@ -243,7 +243,7 @@ public class TestTransactionLifecycle2 {
     @Test
     public void txn_promote_thread_writer_2() {
         Transaction txn1 = txnMgr.begin(TxnType.READ_PROMOTE);
-        L.syncOtherThread(()->{
+        ThreadLib.syncOtherThread(()->{
             Transaction txn2 = txnMgr.begin(TxnType.WRITE);
             txn2.abort();
             txn2.end();
@@ -263,7 +263,7 @@ public class TestTransactionLifecycle2 {
         boolean b = txn1.promote();
         assertTrue(b);
         AtomicReference<Transaction> ref = new AtomicReference<>(txn1);
-        L.syncOtherThread(()->{
+        ThreadLib.syncOtherThread(()->{
             // Should fail.
             Transaction txn2 = txnMgr.begin(TxnType.WRITE, false);
             ref.set(txn2);
@@ -279,7 +279,7 @@ public class TestTransactionLifecycle2 {
         boolean b = txn1.promote();
         assertTrue(b);
         AtomicReference<Transaction> ref = new AtomicReference<>(txn1);
-        L.syncOtherThread(()->{
+        ThreadLib.syncOtherThread(()->{
             // Should fail.
             Transaction txn2 = txnMgr.begin(TxnType.WRITE, false);
             ref.set(txn2);
@@ -288,7 +288,7 @@ public class TestTransactionLifecycle2 {
         txn1.abort();
         txn1.end();
 
-        L.syncOtherThread(()->{
+        ThreadLib.syncOtherThread(()->{
             // Should suceed
             Transaction txn2 = txnMgr.begin(TxnType.WRITE, false);
             ref.set(txn2);
diff --git a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/migrate/A2.java b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/migrate/A2.java
deleted file mode 100644
index a24209a..0000000
--- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/migrate/A2.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.tdb2.migrate;
-
-import org.apache.jena.sparql.algebra.Op ;
-import org.apache.jena.sparql.algebra.Transform ;
-import org.apache.jena.sparql.algebra.Transformer ;
-import org.apache.jena.sparql.core.Quad ;
-
-public class A2
-{
-    /** Convert a pattern, assumed to be quad form, 
-     * so that the default graph is the union of named graphs.  
-     */
-    public static Op unionDefaultGraphQuads(Op op)
-    {
-        // Rewrite so that any explicitly named "default graph" is union graph.
-        Transform t = new TransformGraphRename(Quad.defaultGraphNodeGenerated, Quad.unionGraph)  ;
-        op = Transformer.transform(t, op) ;
-        return op ;
-    }
-}
diff --git a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/migrate/TransformGraphRename.java b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/migrate/TransformGraphRename.java
deleted file mode 100644
index b439e84..0000000
--- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/migrate/TransformGraphRename.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.tdb2.migrate;
-
-import org.apache.jena.graph.Node ;
-import org.apache.jena.sparql.algebra.Op ;
-import org.apache.jena.sparql.algebra.TransformCopy ;
-import org.apache.jena.sparql.algebra.op.OpGraph ;
-import org.apache.jena.sparql.algebra.op.OpQuadPattern ;
-
-public class TransformGraphRename extends TransformCopy
-{ 
-    private Node oldGraphName ;
-    private Node newGraphName ;
-
-    public TransformGraphRename(Node oldGraphName, Node newGraphName)
-    {
-        this.oldGraphName = oldGraphName ;
-        this.newGraphName = newGraphName ;
-    }
-
-    // Does not affect variables.
-    @Override
-    public Op transform(OpGraph opGraph, Op x)
-    { 
-        if ( opGraph.getNode().equals(oldGraphName) )
-            opGraph = new OpGraph(newGraphName, x) ;
-        return super.transform(opGraph, x) ;
-    }
-
-    @Override
-    public Op transform(OpQuadPattern opQuadPattern)
-    {
-        if ( opQuadPattern.getGraphNode().equals(oldGraphName) )
-            opQuadPattern = new OpQuadPattern(newGraphName, opQuadPattern.getBasicPattern()) ;
-        return super.transform(opQuadPattern) ;
-    }
-}
diff --git a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/QueryEngineTDB.java b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/QueryEngineTDB.java
index b73f36e..136bf42 100644
--- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/QueryEngineTDB.java
+++ b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/QueryEngineTDB.java
@@ -22,6 +22,7 @@ import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.query.Query ;
 import org.apache.jena.sparql.algebra.Algebra ;
 import org.apache.jena.sparql.algebra.Op ;
+import org.apache.jena.sparql.algebra.OpLib;
 import org.apache.jena.sparql.core.DatasetDescription ;
 import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.core.DynamicDatasets ;
@@ -36,7 +37,6 @@ import org.apache.jena.sparql.mgt.Explain ;
 import org.apache.jena.sparql.util.Context ;
 import org.apache.jena.tdb2.TDB2;
 import org.apache.jena.tdb2.TDBException;
-import org.apache.jena.tdb2.migrate.A2;
 import org.apache.jena.tdb2.store.DatasetGraphTDB;
 import org.apache.jena.tdb2.sys.TDBInternal;
 
@@ -102,7 +102,7 @@ public class QueryEngineTDB extends QueryEngineMain
         // Fix DatasetGraph for global union.
         if ( isUnionDefaultGraph(context) && ! isDynamicDataset() ) 
         {
-            op = A2.unionDefaultGraphQuads(op) ;
+            op = OpLib.unionDefaultGraphQuads(op) ;
             Explain.explain("REWRITE(Union default graph)", op, context) ;
         }
         QueryIterator results = super.eval(op, dsg, input, context) ;
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/migrate/A2.java b/jena-tdb/src/main/java/org/apache/jena/tdb/migrate/A2.java
deleted file mode 100644
index eab78a3..0000000
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/migrate/A2.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.tdb.migrate;
-
-import org.apache.jena.sparql.algebra.Op ;
-import org.apache.jena.sparql.algebra.Transform ;
-import org.apache.jena.sparql.algebra.Transformer ;
-import org.apache.jena.sparql.core.Quad ;
-
-public class A2
-{
-    /** Convert a pattern, assumed to be quad form, 
-     * so that the default graph is the union of named graphs.  
-     */
-    public static Op unionDefaultGraphQuads(Op op)
-    {
-        // Rewrite so that any explicitly named "default graph" is union graph.
-        Transform t = new TransformGraphRename(Quad.defaultGraphNodeGenerated, Quad.unionGraph)  ;
-        op = Transformer.transform(t, op) ;
-        return op ;
-    }
-}
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/migrate/CachingPF.java b/jena-tdb/src/main/java/org/apache/jena/tdb/migrate/CachingPF.java
deleted file mode 100644
index 02b8837..0000000
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/migrate/CachingPF.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.tdb.migrate;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.jena.graph.Node ;
-import org.apache.jena.sparql.engine.ExecutionContext ;
-import org.apache.jena.sparql.engine.QueryIterator ;
-import org.apache.jena.sparql.engine.binding.Binding ;
-import org.apache.jena.sparql.engine.iterator.QueryIterPlainWrapper ;
-import org.apache.jena.sparql.pfunction.PropFuncArg ;
-import org.apache.jena.sparql.pfunction.PropertyFunction ;
-
-/** A Property function that ignores it's arguments but reads and caches it's inputs */
-public class CachingPF implements PropertyFunction
-{
-
-    @Override
-    public void build(PropFuncArg argSubject, Node predicate, PropFuncArg argObject, ExecutionContext execCxt)
-    {}
-
-    //Override
-    @Override
-    public QueryIterator exec(QueryIterator input, PropFuncArg argSubject, Node predicate, PropFuncArg argObject,
-                              ExecutionContext execCxt)
-    {
-        List<Binding> bindings = new ArrayList<>() ;
-        for ( ; input.hasNext() ; )
-            bindings.add(input.nextBinding()) ;
-        return new QueryIterPlainWrapper(bindings.iterator(), execCxt) ;
-    }
-
-}
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/migrate/LockTx.java b/jena-tdb/src/main/java/org/apache/jena/tdb/migrate/LockTx.java
deleted file mode 100644
index 07d47dc..0000000
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/migrate/LockTx.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.tdb.migrate;
-
-import org.apache.jena.query.ReadWrite ;
-import org.apache.jena.shared.Lock ;
-import org.apache.jena.tdb.transaction.DatasetGraphTransaction ;
-import org.apache.jena.tdb.transaction.TDBTransactionException ;
-import static org.apache.jena.tdb.migrate.LockTx.LockTxState.* ;
-
-/** Lock that provides transactions
- *  Not reentrant.
- */
-
-public class LockTx implements Lock
-{
-    private DatasetGraphTransaction dsg ;
-    
-    public LockTx(DatasetGraphTransaction dsg) { this.dsg = dsg ; }
-    
-    static enum LockTxState { TxNONE, TxREAD, TxWRITE }
-    
-    private LockTxState state = TxNONE ;
-    
-    @Override
-    public void enterCriticalSection(boolean readLockRequested)
-    {
-        if ( state != TxNONE )
-            throw new TDBTransactionException("Illegal state: "+state) ;
-        
-        if ( readLockRequested )
-        {
-            state = TxREAD ;
-            dsg.begin(ReadWrite.READ) ;
-        }
-        else
-        {
-            state = TxWRITE ;
-            dsg.begin(ReadWrite.WRITE) ;
-        }
-    }
-
-    @Override
-    public void leaveCriticalSection()
-    {
-        switch (state)
-        {
-            case TxNONE :   throw new TDBTransactionException("Illegal state: "+state) ;
-            case TxREAD :   dsg.close() ;  break ;
-            case TxWRITE :  dsg.commit() ; break ;
-        }
-        state = TxNONE ;
-    }
-
-}
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/QueryEngineTDB.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/QueryEngineTDB.java
index cf2aa7b..d7250b8 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/QueryEngineTDB.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/QueryEngineTDB.java
@@ -22,6 +22,7 @@ import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.query.Query ;
 import org.apache.jena.sparql.algebra.Algebra ;
 import org.apache.jena.sparql.algebra.Op ;
+import org.apache.jena.sparql.algebra.OpLib;
 import org.apache.jena.sparql.core.DatasetDescription ;
 import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.core.DynamicDatasets ;
@@ -36,7 +37,6 @@ import org.apache.jena.sparql.mgt.Explain ;
 import org.apache.jena.sparql.util.Context ;
 import org.apache.jena.tdb.TDB ;
 import org.apache.jena.tdb.TDBException ;
-import org.apache.jena.tdb.migrate.A2 ;
 import org.apache.jena.tdb.store.DatasetGraphTDB ;
 import org.apache.jena.tdb.transaction.DatasetGraphTransaction ;
 
@@ -96,7 +96,7 @@ public class QueryEngineTDB extends QueryEngineMain
         // Fix DatasetGraph for global union.
         if ( context.isTrue(TDB.symUnionDefaultGraph) && ! isDynamicDataset() ) 
         {
-            op = A2.unionDefaultGraphQuads(op) ;
+            op = OpLib.unionDefaultGraphQuads(op) ;
             Explain.explain("REWRITE(Union default graph)", op, context) ;
         }
         QueryIterator results = super.eval(op, dsg, input, context) ;