You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by cl...@apache.org on 2015/05/10 15:03:54 UTC

[25/50] [abbrv] jena git commit: Using Java 8 types in o.a.j.atlas

Using Java 8 types in o.a.j.atlas


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

Branch: refs/heads/add-contract-tests
Commit: 6b4753453a3be174aecc07ce9caf659e916c04f7
Parents: 2257377
Author: ajs6f <aj...@virginia.edu>
Authored: Mon May 4 12:30:38 2015 -0400
Committer: ajs6f <aj...@virginia.edu>
Committed: Mon May 4 15:16:16 2015 -0400

----------------------------------------------------------------------
 .../org/apache/jena/atlas/csv/CSVParser.java    |   9 +-
 .../java/org/apache/jena/riot/other/GLib.java   |  58 ++----
 .../org/apache/jena/riot/out/JsonLDWriter.java  |   8 +-
 .../process/normalize/CanonicalizeLiteral.java  |   6 +-
 .../apache/jena/riot/system/PrefixMapBase.java  |  25 +--
 .../org/apache/jena/riot/thrift/BinRDF.java     |  12 +-
 .../jena/sparql/core/DatasetGraphBase.java      |  12 +-
 .../jena/sparql/core/DatasetGraphQuad.java      |  13 +-
 .../org/apache/jena/sparql/engine/Rename.java   |  24 +--
 .../ReorderTransformationSubstitution.java      |  12 +-
 .../org/apache/jena/sparql/expr/E_Exists.java   |   6 +-
 .../apache/jena/sparql/expr/E_NotExists.java    |   6 +-
 .../java/org/apache/jena/sparql/expr/Expr.java  |   5 +-
 .../apache/jena/sparql/expr/ExprAggregator.java |   8 +-
 .../apache/jena/sparql/expr/ExprFunction0.java  |   6 +-
 .../apache/jena/sparql/expr/ExprFunction1.java  |   6 +-
 .../apache/jena/sparql/expr/ExprFunction2.java  |   6 +-
 .../apache/jena/sparql/expr/ExprFunction3.java  |   6 +-
 .../apache/jena/sparql/expr/ExprFunctionN.java  |   5 +-
 .../org/apache/jena/sparql/expr/ExprList.java   |   5 +-
 .../org/apache/jena/sparql/expr/ExprNode.java   |   5 +-
 .../org/apache/jena/sparql/expr/ExprVar.java    |   7 +-
 .../org/apache/jena/sparql/expr/NodeValue.java  |   6 +-
 .../jena/sparql/expr/aggregate/Aggregator.java  |   5 +-
 .../sparql/expr/aggregate/AggregatorBase.java   |   4 +-
 .../apache/jena/sparql/graph/NodeTransform.java |  12 +-
 .../jena/sparql/graph/NodeTransformLib.java     |  48 ++---
 .../jena/sparql/graph/NodeTransformOp.java      |  15 +-
 .../modify/NodeTransformBNodesToVariables.java  |   6 +-
 .../apache/jena/sparql/modify/TemplateLib.java  |  31 ++-
 .../jena/sparql/modify/UpdateEngineWorker.java  |   4 +-
 .../org/apache/jena/sparql/path/PathLib.java    |   4 +-
 .../jena/sparql/path/eval/PathEngine.java       |  25 +--
 .../jena/sparql/path/eval/PathEvaluator.java    |   6 +-
 .../jena/sparql/pfunction/library/strSplit.java |  12 +-
 .../apache/jena/sparql/resultset/CSVInput.java  |   6 +-
 .../jena/sparql/resultset/ResultSetCompare.java |  12 +-
 .../org/apache/jena/sparql/util/ModelUtils.java |  19 +-
 .../jena/sparql/util/graph/GraphList.java       |  12 +-
 .../jena/riot/process/TestNormalization.java    |   4 +-
 .../jena/riot/thrift/TestStreamRDFThrift.java   |  13 +-
 .../org/apache/jena/atlas/iterator/Action.java  |   9 +-
 .../apache/jena/atlas/iterator/ActionCount.java |   6 +-
 .../jena/atlas/iterator/ActionNothing.java      |  26 ---
 .../org/apache/jena/atlas/iterator/Filter.java  |   8 +-
 .../atlas/iterator/FilterDistinctAdjacent.java  |   8 +-
 .../jena/atlas/iterator/FilterOutNulls.java     |  32 ---
 .../apache/jena/atlas/iterator/FilterStack.java |  16 +-
 .../jena/atlas/iterator/FilterUnique.java       |  12 +-
 .../org/apache/jena/atlas/iterator/Iter.java    | 193 +++++--------------
 .../jena/atlas/iterator/IteratorArray.java      |   6 +
 .../apache/jena/atlas/iterator/MapUtils.java    |  36 ----
 .../apache/jena/atlas/iterator/Transform.java   |   8 +-
 .../apache/jena/atlas/lib/ActionKeyValue.java   |   9 +-
 .../java/org/apache/jena/atlas/lib/Cache.java   |   3 +-
 .../org/apache/jena/atlas/lib/CacheSet.java     |   4 +-
 .../org/apache/jena/atlas/lib/Closeable.java    |   2 +-
 .../apache/jena/atlas/lib/CollectionUtils.java  |  26 +--
 .../java/org/apache/jena/atlas/lib/Lib.java     |  13 +-
 .../org/apache/jena/atlas/lib/ListUtils.java    |   7 +-
 .../org/apache/jena/atlas/lib/MapUtils.java     |  45 -----
 .../java/org/apache/jena/atlas/lib/Problem.java |  25 ---
 .../org/apache/jena/atlas/lib/SetUtils.java     |  26 +--
 .../java/org/apache/jena/atlas/lib/Tuple.java   |  22 +--
 .../org/apache/jena/atlas/lib/cache/Cache0.java |   4 +-
 .../org/apache/jena/atlas/lib/cache/Cache1.java |   8 +-
 .../apache/jena/atlas/lib/cache/CacheGuava.java |   9 +-
 .../jena/atlas/lib/cache/CacheSetImpl.java      |  16 +-
 .../jena/atlas/lib/cache/CacheSetSync.java      |   5 +-
 .../jena/atlas/lib/cache/CacheSetWrapper.java   |   5 +-
 .../jena/atlas/lib/cache/CacheSimple.java       |  13 +-
 .../jena/atlas/lib/cache/CacheWrapper.java      |   4 +-
 .../java/org/apache/jena/base/Closeable.java    |  27 ---
 .../apache/jena/atlas/iterator/TestIter.java    | 134 +------------
 .../jena/fuseki/servlets/SPARQL_Protocol.java   |  12 +-
 .../jena/fuseki/servlets/SPARQL_Protocol.java   |  10 +-
 .../query/rewriter/SecuredFunction.java         |   4 +-
 .../org/apache/jena/sdb/compiler/QuadBlock.java |   6 +-
 .../org/apache/jena/sdb/compiler/SDB_QC.java    |  14 +-
 .../apache/jena/sdb/compiler/TransformSDB.java  |   4 +-
 .../org/apache/jena/sdb/core/ScopeEntry.java    |  28 +--
 .../org/apache/jena/sdb/core/ScopeRename.java   |  21 --
 .../sdb/core/sqlnode/GenerateSQLVisitor.java    |   9 +-
 .../org/apache/jena/sdb/print/ActionPrint.java  |   7 +-
 .../jena/sdb/test/junit/ParamAllStoreDesc.java  |  11 +-
 .../jena/sdb/test/junit/ParamAllStores.java     |  11 +-
 .../apache/jena/sdb/test/junit/StoreList.java   |  21 +-
 .../spatial/SpatialDocProducerTriples.java      |  19 --
 .../jena/tdb/base/block/BlockMgrCache.java      |   6 +-
 .../tdb/index/bplustree/BPlusTreeRewriter.java  |  10 +-
 .../java/org/apache/jena/tdb/lib/NodeLib.java   |   9 +-
 .../java/org/apache/jena/tdb/lib/TupleLib.java  |  34 +---
 .../apache/jena/tdb/solver/OpExecutorTDB1.java  |  11 +-
 .../java/org/apache/jena/tdb/solver/QC2.java    |   9 +-
 .../org/apache/jena/tdb/solver/SolverLib.java   |  52 ++---
 .../tdb/solver/StageGeneratorDirectTDB.java     |   9 +-
 .../apache/jena/tdb/solver/StageMatchTuple.java |  34 +---
 .../tdb/solver/stats/StatsCollectorBase.java    |   5 +-
 .../apache/jena/tdb/store/DatasetGraphTDB.java  |  13 +-
 .../org/apache/jena/tdb/store/GraphTDB.java     |  19 +-
 .../org/apache/jena/tdb/store/QuadTable.java    |   9 -
 .../org/apache/jena/tdb/store/TripleTable.java  |   9 -
 .../tdb/store/nodetable/NodeTableNative.java    |  35 +---
 .../tdb/store/tupletable/TupleIndexRecord.java  |  18 +-
 .../apache/jena/tdb/base/record/RecordLib.java  |   9 +-
 .../apache/jena/tdb/store/TestQuadFilter.java   |  20 +-
 106 files changed, 455 insertions(+), 1294 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/atlas/csv/CSVParser.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/csv/CSVParser.java b/jena-arq/src/main/java/org/apache/jena/atlas/csv/CSVParser.java
index 83613ae..e1afc2f 100644
--- a/jena-arq/src/main/java/org/apache/jena/atlas/csv/CSVParser.java
+++ b/jena-arq/src/main/java/org/apache/jena/atlas/csv/CSVParser.java
@@ -23,12 +23,12 @@ import java.io.InputStream ;
 import java.io.Reader ;
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.function.Function;
 
 import org.apache.commons.csv.CSVFormat ;
 import org.apache.commons.csv.CSVRecord ;
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 
 /** 
  *  Wrapper for Commons CSV parser.
@@ -63,12 +63,7 @@ public class CSVParser implements Iterable<List<String>>
         }
     }
     
-    private static Transform<CSVRecord, List<String>> transform = new Transform<CSVRecord, List<String>>() {
-        @Override
-        public List<String> convert(CSVRecord record) {
-            return recordToList(record) ;
-        }
-    } ;
+    private static Function<CSVRecord, List<String>> transform = rec -> recordToList(rec) ;
     
     @Override
     public Iterator<List<String>> iterator() {

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/riot/other/GLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/other/GLib.java b/jena-arq/src/main/java/org/apache/jena/riot/other/GLib.java
index 6a6958a..db14724 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/other/GLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/other/GLib.java
@@ -19,9 +19,7 @@
 package org.apache.jena.riot.other;
 
 import java.util.Iterator ;
-
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -42,89 +40,55 @@ public class GLib
     public static Iterator<Node> listSubjects(Graph graph)
     {
         ExtendedIterator<Triple> iter = graph.find(Node.ANY, Node.ANY, Node.ANY) ;
-        return Iter.iter(iter).map(projectTripleSubject).distinct() ;
+        return Iter.iter(iter).map(Triple::getSubject).distinct() ;
     }
 
     /** List the predicates in a graph (no duplicates) */
     public static Iterator<Node> listPredicates(Graph graph)
     {
         ExtendedIterator<Triple> iter = graph.find(Node.ANY, Node.ANY, Node.ANY) ;
-        return Iter.iter(iter).map(projectTriplePredicate).distinct() ;
+        return Iter.iter(iter).map(Triple::getPredicate).distinct() ;
     }
     
     /** List the objects in a graph (no duplicates) */
     public static Iterator<Node> listObjects(Graph graph)
     {
         ExtendedIterator<Triple> iter = graph.find(Node.ANY, Node.ANY, Node.ANY) ;
-        return Iter.iter(iter).map(projectTripleObject).distinct() ;
+        return Iter.iter(iter).map(Triple::getObject).distinct() ;
     }
-    
-    private static Transform<Quad, Triple> transformQuad2Triple = new Transform<Quad, Triple> () {
-        @Override
-        public Triple convert(Quad quad)    { return quad.asTriple() ; }
-    } ;
 
     /** Project quads to triples */
     public static Iter<Triple> quads2triples(Iterator<Quad> iter)
     {
-        return Iter.iter(iter).map(transformQuad2Triple) ;
+        return Iter.iter(iter).map(Quad::asTriple) ;
     }
 
     /** Project quad to graphname */
     public static Iterator<Node> quad2graphName(Iterator<Quad> iter)
-    { return Iter.map(iter, projectQuadGraphName) ; }
+    { return Iter.map(iter, Quad::getGraph) ; }
     
     /** Project quad to graphname */
     public static Iterator<Node> quad2subject(Iterator<Quad> iter)
-    { return Iter.map(iter, projectQuadSubject) ; }
+    { return Iter.map(iter, Quad::getSubject) ; }
     
     /** Project quad to predicate */
     public static Iterator<Node> quad2predicate(Iterator<Quad> iter)
-    { return Iter.map(iter, projectQuadPredicate) ; }
+    { return Iter.map(iter, Quad::getPredicate) ; }
     
     /** Project quad to object */
     public static Iterator<Node> quad2object(Iterator<Quad> iter)
-    { return Iter.map(iter, projectQuadObject) ; }
+    { return Iter.map(iter, Quad::getObject) ; }
     
     /** Project triple to subject */ 
     public static Iterator<Node> triple2subject(Iterator<Triple> iter)
-    { return Iter.map(iter, projectTripleSubject) ; }
+    { return Iter.map(iter, Triple::getSubject) ; }
     
     /** Project triple to predicate */ 
     public static Iterator<Node> triple2predicate(Iterator<Triple> iter)
-    { return Iter.map(iter, projectTriplePredicate) ; }
+    { return Iter.map(iter, Triple::getPredicate) ; }
     
     /** Project triple to object */ 
     public static Iterator<Node> triple2object(Iterator<Triple> iter)
-    { return Iter.map(iter, projectTripleObject) ; }
-
-    /** Transform quad to graphname */
-    public static Transform<Quad, Node> projectQuadGraphName = new Transform<Quad, Node>() {
-        @Override  public Node convert(Quad quad) { return quad.getGraph() ; }
-    } ;
-    /** Transform quad to subject */
-    public static Transform<Quad, Node> projectQuadSubject = new Transform<Quad, Node>() {
-        @Override  public Node convert(Quad quad) { return quad.getSubject() ; }
-    } ;
-    /** Transform quad to predicate */
-    public static Transform<Quad, Node> projectQuadPredicate = new Transform<Quad, Node>() {
-        @Override public Node convert(Quad quad) { return quad.getPredicate() ; }
-    } ;
-    /** Transform quad to object */
-    public static Transform<Quad, Node> projectQuadObject = new Transform<Quad, Node>() {
-        @Override public Node convert(Quad quad) { return quad.getObject() ; }
-    } ;
-    /** Transform triple to subject */ 
-    public static Transform<Triple, Node> projectTripleSubject   = new Transform<Triple, Node>() {
-        @Override public Node convert(Triple triple) { return triple.getSubject() ; }
-    } ;
-    /** Transform triple to predicate */ 
-    public static Transform<Triple, Node> projectTriplePredicate = new Transform<Triple, Node>() {
-        @Override public Node convert(Triple triple) { return triple.getPredicate() ; }
-    } ;
-    /** Transform triple to object */ 
-    public static Transform<Triple, Node> projectTripleObject    = new Transform<Triple, Node>() {
-        @Override public Node convert(Triple triple) { return triple.getObject() ; }
-    } ;
+    { return Iter.map(iter, Triple::getObject) ; }
 }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java b/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java
index dbd8fff..c7530a0 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java
@@ -23,10 +23,10 @@ import java.io.OutputStream ;
 import java.io.OutputStreamWriter ;
 import java.io.Writer ;
 import java.util.* ;
-import java.util.Map.Entry ;
+import java.util.Map.Entry;
+import java.util.function.Consumer;
 
 import org.apache.jena.atlas.io.IO ;
-import org.apache.jena.atlas.iterator.Action ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.lib.Chars ;
 import org.apache.jena.graph.Graph ;
@@ -123,9 +123,9 @@ public class JsonLDWriter extends WriterDatasetRIOTBase
     private static void addProperties(final Map<String, Object> ctx, Graph graph) {
         // Add some properties directly so it becomes "localname": ....
         final Set<String> dups = new HashSet<>() ;
-        Action<Triple> x = new Action<Triple>() {
+        Consumer<Triple> x = new Consumer<Triple>() {
             @Override
-            public void apply(Triple item) {
+            public void accept(Triple item) {
                 Node p = item.getPredicate() ;
                 Node o = item.getObject() ;
                 if ( p.equals(RDF.type.asNode()) )

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/CanonicalizeLiteral.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/CanonicalizeLiteral.java b/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/CanonicalizeLiteral.java
index c7a11ad..3f8490e 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/CanonicalizeLiteral.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/CanonicalizeLiteral.java
@@ -20,17 +20,17 @@ package org.apache.jena.riot.process.normalize;
 
 import java.util.HashMap ;
 import java.util.Map ;
+import java.util.function.Function;
 
 import org.apache.jena.datatypes.RDFDatatype ;
 import org.apache.jena.datatypes.xsd.XSDDatatype ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
 import org.apache.jena.riot.web.LangTag ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.util.NodeUtils ;
 import org.apache.jena.vocabulary.RDF ;
 
-public class CanonicalizeLiteral implements NodeTransform    
+public class CanonicalizeLiteral implements Function<Node, Node>    
 {
     private static final CanonicalizeLiteral singleton = new CanonicalizeLiteral(); 
 
@@ -39,7 +39,7 @@ public class CanonicalizeLiteral implements NodeTransform
     private CanonicalizeLiteral() {}
     
     @Override
-    public Node convert(Node node) {
+    public Node apply(Node node) {
         if ( ! node.isLiteral() )
             return node ;
             

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java b/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java
index 4190e7c..10dc6de 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java
@@ -18,12 +18,11 @@
 
 package org.apache.jena.riot.system;
 
+import static java.util.stream.Collectors.toMap;
+
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
-
-import org.apache.jena.atlas.iterator.Iter;
-import org.apache.jena.atlas.lib.ActionKeyValue;
 import org.apache.jena.atlas.lib.Pair;
 import org.apache.jena.iri.IRI;
 import org.apache.jena.iri.IRIFactory;
@@ -53,16 +52,8 @@ public abstract class PrefixMapBase implements PrefixMap {
     
     @Override
     public Map<String, String> getMappingCopyStr() {
-        final Map<String, String> smap = new HashMap<>();
-        ActionKeyValue<String, IRI> action = new ActionKeyValue<String, IRI>() {
-            @Override
-            public void apply(String key, IRI value) {
-                String str = value.toString();
-                smap.put(key, str);
-            }
-        };
-        Iter.apply(getMapping(), action);
-        return smap;
+		return getMapping().entrySet().stream()
+				.collect(toMap(Map.Entry::getKey, v -> v.getValue().toString()));
     }
     
     @Override
@@ -72,9 +63,7 @@ public abstract class PrefixMapBase implements PrefixMap {
     
     @Override
     public void putAll(PrefixMap pmap) {
-        for (Map.Entry<String, IRI> e : pmap.getMapping().entrySet()) {
-            this.add(e.getKey(), e.getValue());
-        }
+    		pmap.getMapping().forEach(this::add);
     }
 
     @Override
@@ -84,9 +73,7 @@ public abstract class PrefixMapBase implements PrefixMap {
 
     @Override
     public void putAll(Map<String, String> mapping) {
-        for (Map.Entry<String, String> e : mapping.entrySet()) {
-            this.add(e.getKey(), e.getValue());
-        }
+    		mapping.forEach(this::add);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java b/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java
index 29ad8d9..96e4ea6 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java
@@ -22,10 +22,10 @@ import java.io.BufferedOutputStream ;
 import java.io.InputStream ;
 import java.io.OutputStream ;
 import java.util.List ;
+import java.util.function.Consumer;
 
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.io.IndentedWriter ;
-import org.apache.jena.atlas.iterator.Action ;
 import org.apache.jena.query.ResultSet ;
 import org.apache.jena.riot.system.PrefixMap ;
 import org.apache.jena.riot.system.PrefixMapFactory ;
@@ -168,11 +168,7 @@ public class BinRDF {
 
     // ** Java7 support
     public static void applyVisitor(TProtocol protocol, final VisitorStreamRowTRDF visitor) {
-        Action<RDF_StreamRow> action = new Action<RDF_StreamRow>() {
-            @Override
-            public void apply(RDF_StreamRow z) { TRDF.visit(z, visitor) ; }
-        } ;
-        apply(protocol, action) ;
+        apply(protocol, z -> TRDF.visit(z, visitor)) ;
     }
     
     /**
@@ -180,7 +176,7 @@ public class BinRDF {
      * @param protocol TProtocol
      * @param action   Code to act on the row.
      */
-    public static void apply(TProtocol protocol, Action<RDF_StreamRow> action) {
+    public static void apply(TProtocol protocol, Consumer<RDF_StreamRow> action) {
         RDF_StreamRow row = new RDF_StreamRow() ;
         while(protocol.getTransport().isOpen()) {
             try { row.read(protocol) ; }
@@ -189,7 +185,7 @@ public class BinRDF {
                     break ;
             }
             catch (TException ex) { TRDF.exception(ex) ; }
-            action.apply(row) ;
+            action.accept(row) ;
             row.clear() ;
         }
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java
index 196ecf8..bd87c82 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java
@@ -19,10 +19,8 @@
 package org.apache.jena.sparql.core;
 
 import java.util.Iterator ;
-
 import org.apache.jena.atlas.io.IndentedLineBuffer ;
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -189,15 +187,7 @@ abstract public class DatasetGraphBase implements DatasetGraph
 
     protected static Iter<Quad> triples2quads(final Node graphNode, Iterator<Triple> iter)
     {
-        Transform<Triple, Quad> transformNamedGraph = new Transform<Triple, Quad> () {
-            @Override
-            public Quad convert(Triple triple)
-            {
-                return new Quad(graphNode, triple) ;
-            }
-        } ;
-
-        return Iter.iter(iter).map(transformNamedGraph) ;
+        return Iter.iter(iter).map(t -> new Quad(graphNode, t)) ;
     }
 
     

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphQuad.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphQuad.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphQuad.java
index 5b28c90..d685a71 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphQuad.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphQuad.java
@@ -19,28 +19,19 @@
 package org.apache.jena.sparql.core;
 
 import java.util.Iterator ;
-
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.graph.Node ;
 
 
 /** A DatasetGraph base class for pure quad-centric storage.     
  */
 public abstract class DatasetGraphQuad extends DatasetGraphBase
-{
-    static Transform<Quad, Node> projectGraphName = new Transform<Quad, Node>() {
-        @Override
-        public Node convert(Quad quad)
-        {
-            return quad.getGraph() ; 
-        }} ;
-    
+{   
     @Override
     public Iterator<Node> listGraphNodes()
     {
         Iter<Quad> iter = Iter.iter(find(Node.ANY, Node.ANY, Node.ANY, Node.ANY)) ;
-        return iter.map(projectGraphName).distinct() ;
+        return iter.map(Quad::getGraph).distinct() ;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java
index 96a8751..bc1d4ea 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java
@@ -22,6 +22,7 @@ import java.util.Collection ;
 import java.util.HashMap ;
 import java.util.Map ;
 import java.util.Set ;
+import java.util.function.Function;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.ARQConstants ;
@@ -29,7 +30,6 @@ import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.sparql.expr.ExprList ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.graph.NodeTransformLib ;
 
 /** Support for renaming all the variables in an algebra expession
@@ -49,14 +49,14 @@ public class Rename
     /** Rename one node to another */
     public static Op renameNode(Op op, Node oldName, Node newName)
     {
-        NodeTransform renamer = new RenameNode(oldName, newName) ;
+    		Function<Node, Node> renamer = new RenameNode(oldName, newName) ;
         return NodeTransformLib.transform(renamer, op) ;
     }
 
     /** Rename one variable to another */
     public static Op renameVar(Op op, Var oldName, Var newName)
     {
-        NodeTransform renamer = new RenameNode(oldName, newName) ;
+    		Function<Node, Node> renamer = new RenameNode(oldName, newName) ;
         return NodeTransformLib.transform(renamer, op) ;
     }
     
@@ -76,13 +76,13 @@ public class Rename
     /** Rename all variables in an expression, EXCEPT for those named as constant */ 
     public static ExprList renameVars(ExprList exprList, Set<Var> constants)
     {
-        NodeTransform renamer = new RenameAnyVars(constants, prefix) ;
+    		Function<Node, Node> renamer = new RenameAnyVars(constants, prefix) ;
         return NodeTransformLib.transform(renamer, exprList) ;
     }
         
     public static Expr renameVars(Expr expr, Set<Var> constants)
     {
-        NodeTransform renamer = new RenameAnyVars(constants, prefix) ;
+    		Function<Node, Node> renamer = new RenameAnyVars(constants, prefix) ;
         return NodeTransformLib.transform(renamer, expr) ;
     }
     
@@ -90,13 +90,13 @@ public class Rename
      * This assumes the op was renamed by VarRename.rename */
     public static Op reverseVarRename(Op op, boolean repeatedly)
     {
-        NodeTransform renamer = new UnrenameAnyVars(prefix, repeatedly) ;
+    		Function<Node, Node> renamer = new UnrenameAnyVars(prefix, repeatedly) ;
         return NodeTransformLib.transform(renamer, op) ;
     }
     
     // ---- Transforms that do the renaming and unrenaming.
     
-    static class RenameNode implements NodeTransform
+    static class RenameNode implements Function<Node, Node>
     {
         private final Node oldName ;
         private final Node newName ;
@@ -107,7 +107,7 @@ public class Rename
         }
         
         @Override
-        public Node convert(Node node)
+        public Node apply(Node node)
         {
             if ( node.equals(oldName) )
                 return newName ;
@@ -116,7 +116,7 @@ public class Rename
         
     }
     
-    static class RenameAnyVars implements NodeTransform
+    static class RenameAnyVars implements Function<Node, Node>
     {
         private final Map<Var, Var> aliases = new HashMap<>() ;
         private final Collection<Var> constants ;
@@ -129,7 +129,7 @@ public class Rename
         }
         
         @Override
-        public final Node convert(Node node)
+        public final Node apply(Node node)
         {
             if ( ! Var.isVar(node) ) return node ;
             if ( constants.contains(node) ) return node ;
@@ -151,7 +151,7 @@ public class Rename
     }
 
     /** Reverse a renaming (assuming renaming was done by prefixing variable names) */
-    static class UnrenameAnyVars implements NodeTransform
+    static class UnrenameAnyVars implements Function<Node, Node>
     {
         private final String varPrefix ;
         private final boolean repeatedly ;
@@ -163,7 +163,7 @@ public class Rename
         }
 
         @Override
-        public Node convert(Node node)
+        public Node apply(Node node)
         {
             if ( ! Var.isVar(node) ) 
                 return node ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/engine/optimizer/reorder/ReorderTransformationSubstitution.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/optimizer/reorder/ReorderTransformationSubstitution.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/optimizer/reorder/ReorderTransformationSubstitution.java
index e316b31..d4caa80 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/optimizer/reorder/ReorderTransformationSubstitution.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/optimizer/reorder/ReorderTransformationSubstitution.java
@@ -22,10 +22,8 @@ import static org.apache.jena.sparql.util.StringUtils.printAbbrev ;
 
 import java.util.ArrayList ;
 import java.util.List ;
-
 import org.apache.jena.atlas.iterator.AccString ;
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -64,7 +62,7 @@ public abstract class ReorderTransformationSubstitution implements ReorderTransf
         // Or done here as a second pass mutate of PatternTriples
 
         // Convert to a mutable form (that allows things like "TERM")
-        List<PatternTriple> components = Iter.toList(Iter.map(triples.iterator(), convert)) ;
+        List<PatternTriple> components = Iter.toList(Iter.map(triples.iterator(), PatternTriple::new)) ;
 
         // Allow subclasses to get in (e.g. static reordering).
         components = modifyComponents(components) ;
@@ -299,12 +297,4 @@ public abstract class ReorderTransformationSubstitution implements ReorderTransf
                 return "(" + printAbbrev(pt.toString()) + ")" ;
         }
     } ;
-
-    // Triples to TriplePatterns.
-    private static Transform<Triple, PatternTriple> convert = new Transform<Triple, PatternTriple>(){
-        @Override
-        public PatternTriple convert(Triple triple)
-        {
-            return new PatternTriple(triple) ;
-        }} ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java
index 3d7f6a3..0445350 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java
@@ -18,13 +18,15 @@
 
 package org.apache.jena.sparql.expr;
 
+import java.util.function.Function;
+
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.algebra.Algebra ;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.core.Substitute ;
 import org.apache.jena.sparql.engine.QueryIterator ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.graph.NodeTransformLib ;
 import org.apache.jena.sparql.sse.Tags ;
 import org.apache.jena.sparql.syntax.Element ;
@@ -56,7 +58,7 @@ public class E_Exists extends ExprFunctionOp
     }
 
     @Override
-    public Expr applyNodeTransform(NodeTransform nodeTransform)
+    public Expr applyNodeTransform(Function<Node, Node> nodeTransform)
     {
         Op op2 = NodeTransformLib.transform(nodeTransform, getGraphPattern()) ;
         return new E_Exists(getElement(), op2) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java
index 2f41b9e..250d105 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java
@@ -18,13 +18,15 @@
 
 package org.apache.jena.sparql.expr;
 
+import java.util.function.Function;
+
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.algebra.Algebra ;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.core.Substitute ;
 import org.apache.jena.sparql.engine.QueryIterator ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.graph.NodeTransformLib ;
 import org.apache.jena.sparql.sse.Tags ;
 import org.apache.jena.sparql.syntax.Element ;
@@ -57,7 +59,7 @@ public class E_NotExists extends ExprFunctionOp
     }
 
     @Override
-    public Expr applyNodeTransform(NodeTransform nodeTransform)
+    public Expr applyNodeTransform(Function<Node, Node> nodeTransform)
     {
         Op op2 = NodeTransformLib.transform(nodeTransform, getGraphPattern()) ;
         return new E_NotExists(getElement(), op2) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
index 026b897..124a842 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
@@ -20,13 +20,14 @@ package org.apache.jena.sparql.expr;
 
 import java.util.Collection ;
 import java.util.Set ;
+import java.util.function.Function;
 
 import javax.xml.datatype.DatatypeConstants ;
 
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 public interface Expr
 {
@@ -63,7 +64,7 @@ public interface Expr
     /**
      * Rewrite, applying a node->node transformation
      */
-    public Expr applyNodeTransform(NodeTransform transform) ;
+    public Expr applyNodeTransform(Function<Node, Node> transform) ;
 
     /** Deep copy */
     public Expr deepCopy() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
index 8db9b01..5f1794e 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java
@@ -19,6 +19,9 @@
 package org.apache.jena.sparql.expr;
 
 import static org.apache.jena.atlas.lib.Lib.equal ;
+
+import java.util.function.Function;
+
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.graph.Node ;
@@ -27,7 +30,6 @@ import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.aggregate.Aggregator ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.serializer.SerializationContext ;
 
 /** Group aggregation functions calculated a value during grouping and
@@ -107,10 +109,10 @@ public class ExprAggregator extends ExprNode
     }
     
     @Override
-    public ExprAggregator applyNodeTransform(NodeTransform transform)
+    public ExprAggregator applyNodeTransform(Function<Node, Node> transform)
     {
         // Can't rewrite this to a non-variable.
-        Node node = transform.convert(var) ;
+        Node node = transform.apply(var) ;
         if ( ! Var.isVar(node) )
         {
             Log.warn(this, "Attempt to convert an aggregation variable to a non-variable: ignored") ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java
index 8593147..696393c 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java
@@ -18,9 +18,11 @@
 
 package org.apache.jena.sparql.expr;
 
+import java.util.function.Function;
+
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 /** An expression that is constant (does not depend on evaluating a sub expression). */
 
@@ -53,7 +55,7 @@ public abstract class ExprFunction0 extends ExprFunction
     public abstract NodeValue eval(FunctionEnv env)  ;
     
     @Override
-    final public Expr applyNodeTransform(NodeTransform transform)
+    final public Expr applyNodeTransform(Function<Node, Node> transform)
     {
         // Nothing to transform. 
         return copy() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java
index 97901ef..e55548d 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java
@@ -18,10 +18,12 @@
 
 package org.apache.jena.sparql.expr;
 
+import java.util.function.Function;
+
 import org.apache.jena.atlas.lib.Lib ;
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 /** A function that has a single argument */
  
@@ -84,7 +86,7 @@ public abstract class ExprFunction1 extends ExprFunction
     }
 
     @Override
-    final public Expr applyNodeTransform(NodeTransform transform)
+    final public Expr applyNodeTransform(Function<Node, Node> transform)
     {
         Expr e = (expr == null ? null : expr.applyNodeTransform(transform)) ;
         return copy(e) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java
index 4883ad9..79a824f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java
@@ -18,10 +18,12 @@
 
 package org.apache.jena.sparql.expr;
 
+import java.util.function.Function;
+
 import org.apache.jena.atlas.lib.Lib ;
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 
 /** A function of two arguments */
@@ -95,7 +97,7 @@ public abstract class ExprFunction2 extends ExprFunction
     
 
     @Override
-    final public Expr applyNodeTransform(NodeTransform transform)
+    final public Expr applyNodeTransform(Function<Node, Node> transform)
     {
         Expr e1 = (expr1 == null ? null : expr1.applyNodeTransform(transform)) ;
         Expr e2 = (expr2 == null ? null : expr2.applyNodeTransform(transform)) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java
index 82d842f..f6d9a41 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java
@@ -18,10 +18,12 @@
 
 package org.apache.jena.sparql.expr;
 
+import java.util.function.Function;
+
 import org.apache.jena.atlas.lib.Lib ;
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 
 /** A function of three arguments */
@@ -105,7 +107,7 @@ public abstract class ExprFunction3 extends ExprFunction
     
 
     @Override
-    final public Expr applyNodeTransform(NodeTransform transform)
+    final public Expr applyNodeTransform(Function<Node, Node> transform)
     {
         Expr e1 = (expr1 == null ? null : expr1.applyNodeTransform(transform)) ;
         Expr e2 = (expr2 == null ? null : expr2.applyNodeTransform(transform)) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java
index 720f79d..d2cf110 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java
@@ -20,10 +20,11 @@ package org.apache.jena.sparql.expr;
 
 import java.util.ArrayList ;
 import java.util.List ;
+import java.util.function.Function;
 
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 /** A function which takes N arguments (N may be variable e.g. regex) */
  
@@ -81,7 +82,7 @@ public abstract class ExprFunctionN extends ExprFunction
     }
 
     @Override
-    public Expr applyNodeTransform(NodeTransform transform)
+    public Expr applyNodeTransform(Function<Node, Node> transform)
     {
         ExprList newArgs = new ExprList() ;
         for ( int i = 1 ; i <= numArgs() ; i++ )

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java
index 03ab237..d526bba 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java
@@ -19,11 +19,12 @@
 package org.apache.jena.sparql.expr;
 
 import java.util.* ;
+import java.util.function.Function;
 
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.ExecutionContext ;
 import org.apache.jena.sparql.engine.binding.Binding ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.util.Context ;
 
 public class ExprList implements Iterable<Expr>
@@ -76,7 +77,7 @@ public class ExprList implements Iterable<Expr>
     /**
      * Rewrite, applying a node->node transformation
      */
-    public ExprList applyNodeTransform(NodeTransform transform) {
+    public ExprList applyNodeTransform(Function<Node, Node> transform) {
         ExprList x = new ExprList() ;
         for ( Expr e : expressions)
             x.add(e.applyNodeTransform(transform));

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java
index 680bdf8..87eec7f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java
@@ -20,13 +20,14 @@ package org.apache.jena.sparql.expr;
 
 import java.util.Collection ;
 import java.util.Set ;
+import java.util.function.Function;
 
+import org.apache.jena.graph.Node;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.nodevalue.XSDFuncOp ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.util.ExprUtils ;
 
 
@@ -85,7 +86,7 @@ public abstract class ExprNode implements Expr
     public abstract Expr copySubstitute(Binding binding) ;
     
     @Override
-    public abstract Expr applyNodeTransform(NodeTransform transform) ;
+    public abstract Expr applyNodeTransform(Function<Node, Node> transform) ;
 
         
     // ---- Default implementations

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java
index fc45447..a1a589f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java
@@ -18,6 +18,8 @@
 
 package org.apache.jena.sparql.expr;
 
+import java.util.function.Function;
+
 import org.apache.jena.atlas.io.IndentedWriter ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.query.Query ;
@@ -25,7 +27,6 @@ import org.apache.jena.sparql.ARQInternalErrorException ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.function.FunctionEnv ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
 /** An expression that is a variable in an expression. */
  
@@ -75,9 +76,9 @@ public class ExprVar extends ExprNode
     }
     
     @Override
-    public Expr applyNodeTransform(NodeTransform transform)
+    public Expr applyNodeTransform(Function<Node, Node> transform)
     {
-        Node node = transform.convert(varNode) ;
+        Node node = transform.apply(varNode) ;
         if ( Var.isVar(node))
             return new ExprVar(Var.alloc(node)) ;
         return NodeValue.makeNode(node) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
index 10cfde5..d960de1 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
@@ -51,6 +51,7 @@ import java.util.Calendar ;
 import java.util.Iterator ;
 import java.util.Properties ;
 import java.util.ServiceLoader ;
+import java.util.function.Function;
 
 import javax.xml.datatype.DatatypeConfigurationException ;
 import javax.xml.datatype.DatatypeFactory ;
@@ -75,7 +76,6 @@ import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.nodevalue.* ;
 import org.apache.jena.sparql.function.FunctionEnv ;
 import org.apache.jena.sparql.graph.NodeConst ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.serializer.SerializationContext ;
 import org.apache.jena.sparql.util.* ;
 import org.apache.jena.vocabulary.RDF ;
@@ -468,10 +468,10 @@ public abstract class NodeValue extends ExprNode
     }
     
     @Override
-    public Expr applyNodeTransform(NodeTransform transform)
+    public Expr applyNodeTransform(Function<Node, Node> transform)
     { 
         Node n = asNode() ;
-        n = transform.convert(n) ;
+        n = transform.apply(n) ;
         return makeNode(n) ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java
index 67b016c..553202c 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java
@@ -18,9 +18,10 @@
 
 package org.apache.jena.sparql.expr.aggregate;
 
+import java.util.function.Function;
+
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.expr.ExprList ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.serializer.SerializationContext ;
 
 /** An Aggregator is the processor for the whole result stream.
@@ -46,7 +47,7 @@ public interface Aggregator
     
     public ExprList getExprList() ;
     public Aggregator copy(ExprList exprs) ;
-    public Aggregator copyTransform(NodeTransform transform) ;
+    public Aggregator copyTransform(Function<Node, Node> transform) ;
     
     @Override
     public int hashCode() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java
index cd6d76b..7fb321b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java
@@ -21,6 +21,7 @@ package org.apache.jena.sparql.expr.aggregate;
 import java.util.HashMap ;
 import java.util.Locale ;
 import java.util.Map ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.io.IndentedLineBuffer ;
 import org.apache.jena.graph.Node ;
@@ -29,7 +30,6 @@ import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.sparql.expr.ExprList ;
 import org.apache.jena.sparql.expr.NodeValue ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.serializer.SerializationContext ;
 import org.apache.jena.sparql.sse.writers.WriterExpr ;
 import org.apache.jena.sparql.util.ExprUtils ;
@@ -86,7 +86,7 @@ public abstract class AggregatorBase implements Aggregator
     public String key() {  return toPrefixString() ; }
     
     @Override
-    public final Aggregator copyTransform(NodeTransform transform)
+    public final Aggregator copyTransform(Function<Node, Node> transform)
     {
         ExprList e = getExprList() ;
         if ( e != null )

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java
index 724da1e..a22da5f 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java
@@ -18,12 +18,16 @@
 
 package org.apache.jena.sparql.graph;
 
-import org.apache.jena.atlas.iterator.Transform ;
+import java.util.function.Function;
+
 import org.apache.jena.graph.Node ;
 
 /** Convert nodes to nodes - Vars may need to be translated into Vars. */
-public interface NodeTransform extends Transform<Node, Node>
+/**
+ * Prefer {@link Function<Node, Node>}.
+ *
+ */
+@Deprecated
+public interface NodeTransform extends Function<Node, Node>
 {
-    @Override
-    public Node convert(Node node) ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
index f585eac..94314c2 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java
@@ -21,6 +21,7 @@ package org.apache.jena.sparql.graph;
 import java.util.ArrayList ;
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.graph.Node ;
@@ -37,19 +38,20 @@ import org.apache.jena.sparql.engine.binding.BindingFactory ;
 import org.apache.jena.sparql.engine.binding.BindingMap ;
 import org.apache.jena.sparql.expr.Expr ;
 import org.apache.jena.sparql.expr.ExprList ;
+
 import static org.apache.jena.atlas.lib.Lib.equal ;
 
 public class NodeTransformLib
 {
     /** Do a node->node conversion of an Op - return original BGP for "no change" */
-    public static Op transform(NodeTransform nodeTransform, Op op)
+    public static Op transform(Function<Node, Node> nodeTransform, Op op)
     {
         Transform opTransform = new NodeTransformOp(nodeTransform) ; 
         return Transformer.transform(opTransform, null, op) ;   // No expr transform - we do it ourselves.
     }
     
     /** Do a node->node conversion of a BGP - return original BGP for "no change" */
-    public static BasicPattern transform(NodeTransform nodeTransform, BasicPattern pattern)  
+    public static BasicPattern transform(Function<Node, Node> nodeTransform, BasicPattern pattern)  
     {
         BasicPattern bgp2 = new BasicPattern() ;
         boolean changed = false ;
@@ -66,7 +68,7 @@ public class NodeTransformLib
     }
 
     /** Do a node->node conversion of a QuadPattern - return original QuadPattern for "no change" */
-    public static QuadPattern transform(NodeTransform nodeTransform, QuadPattern pattern)  
+    public static QuadPattern transform(Function<Node, Node> nodeTransform, QuadPattern pattern)  
     {
         QuadPattern qp2 = new QuadPattern() ;
         boolean changed = false ;
@@ -83,18 +85,18 @@ public class NodeTransformLib
     }
 
     /** Do a node->node conversion of a Triple - return original Triple for "no change" */
-    public static Triple transform(NodeTransform nodeTransform, Triple triple)  
+    public static Triple transform(Function<Node, Node> nodeTransform, Triple triple)  
     {
         boolean change = false ;
         Node s = triple.getSubject() ;
         Node p = triple.getPredicate() ;
         Node o = triple.getObject() ;
         
-        Node s1 = nodeTransform.convert(s) ;
+        Node s1 = nodeTransform.apply(s) ;
         if ( s1 != s ) { change = true ; s = s1 ; }
-        Node p1 = nodeTransform.convert(p) ;
+        Node p1 = nodeTransform.apply(p) ;
         if ( p1 != p ) { change = true ; p = p1 ; }
-        Node o1 = nodeTransform.convert(o) ;
+        Node o1 = nodeTransform.apply(o) ;
         if ( o1 != o ) { change = true ; o = o1 ; }
     
         if ( ! change )
@@ -103,7 +105,7 @@ public class NodeTransformLib
     }
 
     /** Do a node->node conversion of a Quad - return original Quad for "no change" */
-    public static Quad transform(NodeTransform nodeTransform, Quad quad)  
+    public static Quad transform(Function<Node, Node> nodeTransform, Quad quad)  
     {
         boolean change = false ;
         Node s = quad.getSubject() ;
@@ -111,13 +113,13 @@ public class NodeTransformLib
         Node o = quad.getObject() ;
         Node g = quad.getGraph() ;
         
-        Node g1 = nodeTransform.convert(g) ;
+        Node g1 = nodeTransform.apply(g) ;
         if ( g1 != g ) { change = true ; g = g1 ; }
-        Node s1 = nodeTransform.convert(s) ;
+        Node s1 = nodeTransform.apply(s) ;
         if ( s1 != s ) { change = true ; s = s1 ; }
-        Node p1 = nodeTransform.convert(p) ;
+        Node p1 = nodeTransform.apply(p) ;
         if ( p1 != p ) { change = true ; p = p1 ; }
-        Node o1 = nodeTransform.convert(o) ;
+        Node o1 = nodeTransform.apply(o) ;
         if ( o1 != o ) { change = true ; o = o1 ; }
     
         if ( ! change )
@@ -125,7 +127,7 @@ public class NodeTransformLib
         return new Quad(g,s,p,o) ;
     }
     
-    public static Table transform(Table table, NodeTransform transform) {
+    public static Table transform(Table table, Function<Node, Node> transform) {
         // Non-streaming rewrite 
         List<Var> vars = transformVars(transform, table.getVars()) ;
         Iterator<Binding> iter = table.rows() ; 
@@ -138,11 +140,11 @@ public class NodeTransformLib
         return new TableData(vars, newRows) ;
     }
     
-    public static Binding transform(Binding b, NodeTransform transform) {
+    public static Binding transform(Binding b, Function<Node, Node> transform) {
         BindingMap b2 = BindingFactory.create() ;
         List<Var> vars = Iter.toList(b.vars()) ;
         for ( Var v : vars ) {
-            Var v2 = (Var)transform.convert(v) ;
+            Var v2 = (Var)transform.apply(v) ;
             b2.add(v2, b.get(v));
         }
         return b2 ;
@@ -151,7 +153,7 @@ public class NodeTransformLib
 
 
     /** Do a node->node conversion of a List&lt;Quad&gt; - return original List&lt;Quad&gt; for "no change" */
-    public static List<Quad> transformQuads(NodeTransform nodeTransform, List<Quad> quads)
+    public static List<Quad> transformQuads(Function<Node, Node> nodeTransform, List<Quad> quads)
     {
         List<Quad> x = new ArrayList<>() ;
         boolean changed = false ; 
@@ -168,14 +170,14 @@ public class NodeTransformLib
     }
 
     /** Do a node->node conversion of a VarExprList - return original VarExprList for "no change" */
-    public static VarExprList transform(NodeTransform nodeTransform, VarExprList varExprList)
+    public static VarExprList transform(Function<Node, Node> nodeTransform, VarExprList varExprList)
     {
         VarExprList varExprList2 = new VarExprList() ;
         boolean changed = false ;
         for ( Var v : varExprList.getVars() )
         {
             Expr expr = varExprList.getExpr(v) ;
-            Var v2 = (Var)nodeTransform.convert(v) ;
+            Var v2 = (Var)nodeTransform.apply(v) ;
             Expr expr2 = ( expr != null ) ? transform(nodeTransform, expr) : null ;
             
             if ( ! equal(v, v2) || ! equal(expr, expr2) )
@@ -187,13 +189,13 @@ public class NodeTransformLib
         return varExprList2 ;
     }
 
-    public static List<Var> transformVars(NodeTransform nodeTransform, List<Var> varList)
+    public static List<Var> transformVars(Function<Node, Node> nodeTransform, List<Var> varList)
     {
         List<Var> varList2 = new ArrayList<>(varList.size()) ;
         boolean changed = false ;
         for ( Var v : varList )
         {
-            Var v2 = (Var)nodeTransform.convert(v) ;
+            Var v2 = (Var)nodeTransform.apply(v) ;
             varList2.add(v2) ;
             if ( !equal(v, v2) )
                 changed = true ;
@@ -203,7 +205,7 @@ public class NodeTransformLib
         return varList2 ;
     }
 
-    public static ExprList transform(NodeTransform nodeTransform, ExprList exprList)
+    public static ExprList transform(Function<Node, Node> nodeTransform, ExprList exprList)
     {
           ExprList exprList2 = new ExprList() ;
           boolean changed = false ;
@@ -218,12 +220,12 @@ public class NodeTransformLib
           return exprList2 ;
     }
 
-    public static Expr transform(NodeTransform nodeTransform, Expr expr)
+    public static Expr transform(Function<Node, Node> nodeTransform, Expr expr)
     {
         return expr.applyNodeTransform(nodeTransform) ;
     }
 
-    public static List<SortCondition> transform(NodeTransform nodeTransform, List<SortCondition> conditions)
+    public static List<SortCondition> transform(Function<Node, Node> nodeTransform, List<SortCondition> conditions)
     {
         List<SortCondition> conditions2 = new ArrayList<>() ;
         boolean same = true ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java
index a9f1945..d62d176 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java
@@ -20,6 +20,7 @@ package org.apache.jena.sparql.graph;
 
 import java.util.ArrayList ;
 import java.util.List ;
+import java.util.function.Function;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -50,8 +51,8 @@ class NodeTransformOp extends TransformCopy
     // Not:
     //   Conditional (no expression)
     
-    private final NodeTransform transform ;
-    NodeTransformOp(NodeTransform transform)
+    private final Function<Node, Node> transform ;
+    NodeTransformOp(Function<Node, Node> transform)
     {
         this.transform = transform ;
     }
@@ -85,9 +86,9 @@ class NodeTransformOp extends TransformCopy
     { 
         TriplePath tp = opPath.getTriplePath() ;
         Node s = tp.getSubject() ;
-        Node s1 = transform.convert(s) ;
+        Node s1 = transform.apply(s) ;
         Node o = tp.getObject() ;
-        Node o1 = transform.convert(o) ;
+        Node o1 = transform.apply(o) ;
         
         if ( s1 == s && o1 == o )
             // No change.
@@ -111,7 +112,7 @@ class NodeTransformOp extends TransformCopy
         // The internal representation is (graph, BGP)
         BasicPattern bgp2 = NodeTransformLib.transform(transform, opQuadPattern.getBasicPattern()) ;
         Node g2 = opQuadPattern.getGraphNode() ;
-        g2 = transform.convert(g2) ;
+        g2 = transform.apply(g2) ;
         
         if ( g2 == opQuadPattern.getGraphNode() && bgp2 == opQuadPattern.getBasicPattern() )
             return super.transform(opQuadPattern) ;
@@ -120,7 +121,7 @@ class NodeTransformOp extends TransformCopy
     
     @Override public Op transform(OpGraph opGraph, Op subOp)
     {
-        Node g2 = transform.convert(opGraph.getNode()) ;
+        Node g2 = transform.apply(opGraph.getNode()) ;
         if ( g2 == opGraph.getNode() )
             return super.transform(opGraph, subOp) ;
         return new OpGraph(g2, subOp) ;
@@ -128,7 +129,7 @@ class NodeTransformOp extends TransformCopy
     
     @Override public Op transform(OpDatasetNames opDatasetNames)
     {
-        Node g2 = transform.convert(opDatasetNames.getGraphNode()) ;
+        Node g2 = transform.apply(opDatasetNames.getGraphNode()) ;
         if ( g2 == opDatasetNames.getGraphNode() )
             return super.transform(opDatasetNames) ;
         return new OpDatasetNames(g2) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java
index 72abe48..85ab116 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java
@@ -20,14 +20,14 @@ package org.apache.jena.sparql.modify;
 
 import java.util.HashMap ;
 import java.util.Map ;
+import java.util.function.Function;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.sparql.ARQConstants ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.core.VarAlloc ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 
-public class NodeTransformBNodesToVariables implements NodeTransform
+public class NodeTransformBNodesToVariables implements Function<Node, Node>
 {
     private VarAlloc varAlloc = new VarAlloc(ARQConstants.allocVarBNodeToVar) ;
     private Map<Node, Var> mapping ;
@@ -38,7 +38,7 @@ public class NodeTransformBNodesToVariables implements NodeTransform
     }
 
     @Override
-    public Node convert(Node node)
+    public Node apply(Node node)
     {
         if ( ! node.isBlank() )
             return node ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/modify/TemplateLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/TemplateLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/TemplateLib.java
index 99f9b31..63b5cb4 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/TemplateLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/TemplateLib.java
@@ -19,9 +19,10 @@
 package org.apache.jena.sparql.modify;
 
 import java.util.* ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
+import org.apache.jena.ext.com.google.common.collect.Iterators;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
 import org.apache.jena.graph.Triple ;
@@ -55,28 +56,22 @@ public class TemplateLib
         // The default graph has been set to something else.
         if ( dftGraph != null )
         {
-            Transform<Quad, Quad> nt = new Transform<Quad, Quad>() {
-                @Override
-                public Quad convert(Quad quad)
-                {
-                    if ( ! quad.isDefaultGraph() ) return quad ;
-                    
-                    return new Quad(dftGraph, quad.getSubject(), quad.getPredicate(), quad.getObject()) ;
-                }
-            };
-            quads = Iter.map(quads, nt) ;
-        }
+			quads = Iter
+					.map(quads,
+							q -> (!q.isDefaultGraph()) ? q :
+							new Quad(dftGraph, q.getSubject(), q.getPredicate(), q.getObject()));
+		}
         return quads;
     }
     
     /** Substitute into triple patterns */
     public static Iterator<Triple> calcTriples(final List<Triple> triples, Iterator<Binding> bindings)
     {
-        return Iter.mapMany(bindings, new Transform<Binding, Iterator<Triple>>()
+        return Iterators.concat(Iter.map(bindings, new Function<Binding, Iterator<Triple>>()
         {
             Map<Node, Node> bNodeMap = new HashMap<>() ;
             @Override
-            public Iterator<Triple> convert(final Binding b)
+            public Iterator<Triple> apply(final Binding b)
             {
                 // Iteration is a new mapping of bnodes. 
                 bNodeMap.clear() ;
@@ -94,17 +89,17 @@ public class TemplateLib
                 }
                 return tripleList.iterator();
             }
-        });
+        }));
     }
     
     /** Substitute into quad patterns */
     public static Iterator<Quad> calcQuads(final List<Quad> quads, Iterator<Binding> bindings)
     {
-        return Iter.mapMany(bindings, new Transform<Binding, Iterator<Quad>>()
+        return Iterators.concat(Iter.map(bindings, new Function<Binding, Iterator<Quad>>()
         {
             Map<Node, Node> bNodeMap = new HashMap<>() ;
             @Override
-            public Iterator<Quad> convert(final Binding b)
+            public Iterator<Quad> apply(final Binding b)
             {
                 // Iteration is a new mapping of bnodes. 
                 bNodeMap.clear() ;
@@ -122,7 +117,7 @@ public class TemplateLib
                 }
                 return quadList.iterator();
             }
-        });
+        }));
     }
 
     /** Substitute into a quad, with rewriting of bNodes */ 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java
index f0af38f..e97a796 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java
@@ -22,6 +22,7 @@ import static org.apache.jena.sparql.modify.TemplateLib.template ;
 
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.data.BagFactory ;
 import org.apache.jena.atlas.data.DataBag ;
@@ -50,7 +51,6 @@ import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.engine.binding.BindingRoot ;
 import org.apache.jena.sparql.graph.GraphFactory ;
 import org.apache.jena.sparql.graph.GraphOps ;
-import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.graph.NodeTransformLib ;
 import org.apache.jena.sparql.modify.request.* ;
 import org.apache.jena.sparql.syntax.Element ;
@@ -474,7 +474,7 @@ public class UpdateEngineWorker implements UpdateVisitor
     
     protected static List<Quad> unused_convertBNodesToVariables(List<Quad> quads)
     {
-        NodeTransform bnodesToVariables = new NodeTransformBNodesToVariables() ;
+    		Function<Node, Node> bnodesToVariables = new NodeTransformBNodesToVariables() ;
         return NodeTransformLib.transformQuads(bnodesToVariables, quads) ;
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
index b36ed43..c2db208 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java
@@ -21,8 +21,8 @@ package org.apache.jena.sparql.path;
 import java.util.ArrayList ;
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.function.Predicate;
 
-import org.apache.jena.atlas.iterator.Filter ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.graph.Graph ;
@@ -247,7 +247,7 @@ public class PathLib
         if ( ! subject.isConcrete() || !object.isConcrete() )
             throw new ARQInternalErrorException("Non concrete node for existsPath evaluation") ;
         Iterator<Node> iter = PathEval.eval(graph, subject, path, execCxt.getContext()) ;
-        Filter<Node> filter = new Filter<Node>() { @Override public boolean accept(Node node) { return Lib.equal(node,  object) ; } } ; 
+        Predicate<Node> filter = node -> Lib.equal(node,  object); 
         // See if we got to the node we're interested in finishing at.
         iter = Iter.filter(iter, filter) ;
         long x = Iter.count(iter) ; 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine.java
index 6497bb4..9df5c10 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine.java
@@ -22,9 +22,7 @@ import java.util.ArrayList ;
 import java.util.Collection ;
 import java.util.Iterator ;
 import java.util.List ;
-
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -100,10 +98,10 @@ abstract public class PathEngine
         Iterator<Node> iter2 = null ;
         if ( direction() ) {
             Iter<Triple> iter1 = Iter.iter(graphFind(node, property, Node.ANY)) ;
-            iter2 = iter1.map(PathEngine.selectObject) ;
+            iter2 = iter1.map(Triple::getObject) ;
         } else {
             Iter<Triple> iter1 = Iter.iter(graphFind(Node.ANY, property, node)) ;
-            iter2 = iter1.map(PathEngine.selectSubject) ;
+            iter2 = iter1.map(Triple::getSubject) ;
         }
 
         return iter2 ;
@@ -151,30 +149,15 @@ abstract public class PathEngine
         return (x <= 0) ? x : x - 1 ;
     }
 
-    protected static Transform<Triple, Node> selectSubject = new Transform<Triple, Node>() {
-        @Override
-        public Node convert(Triple triple) { return triple.getSubject() ; }
-    } ;
-    
-    protected static Transform<Triple, Node> selectPredicate = new Transform<Triple, Node>() {
-        @Override
-        public Node convert(Triple triple) { return triple.getPredicate() ; }
-    } ;
-    
-    protected static Transform<Triple, Node> selectObject = new Transform<Triple, Node>() {
-        @Override
-        public Node convert(Triple triple) { return triple.getObject() ; }
-    } ;
-
     protected Iterator<Node> stepExcludeForwards(Node node, List<Node> excludedNodes) {
         Iter<Triple> iter1 = forwardLinks(node, excludedNodes) ;
-        Iter<Node> r1 = iter1.map(selectObject) ;
+        Iter<Node> r1 = iter1.map(Triple::getObject) ;
         return r1 ;
     }
 
     protected Iterator<Node> stepExcludeBackwards(Node node, List<Node> excludedNodes) {
         Iter<Triple> iter1 = backwardLinks(node, excludedNodes) ;
-        Iter<Node> r1 = iter1.map(selectSubject) ;
+        Iter<Node> r1 = iter1.map(Triple::getSubject) ;
         return r1 ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEvaluator.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEvaluator.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEvaluator.java
index 3399dec..242cf9a 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEvaluator.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEvaluator.java
@@ -20,8 +20,8 @@ package org.apache.jena.sparql.path.eval ;
 
 import java.util.Collection ;
 import java.util.Iterator ;
+import java.util.function.Predicate;
 
-import org.apache.jena.atlas.iterator.Filter ;
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
@@ -164,7 +164,7 @@ final class PathEvaluator implements PathVisitor
     // Other operations can produce duplicates and so may be executed in
     // different ways depending on cardibnality requirements.
 
-    protected static class FilterExclude implements Filter<Triple>
+    protected static class FilterExclude implements Predicate<Triple>
     {
         private Collection<Node> excludes ;
 
@@ -173,7 +173,7 @@ final class PathEvaluator implements PathVisitor
         }
 
         @Override
-        public boolean accept(Triple triple) {
+        public boolean test(Triple triple) {
             return !excludes.contains(triple.getPredicate()) ;
         }
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/pfunction/library/strSplit.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/pfunction/library/strSplit.java b/jena-arq/src/main/java/org/apache/jena/sparql/pfunction/library/strSplit.java
index 126728c..86f9331 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/pfunction/library/strSplit.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/pfunction/library/strSplit.java
@@ -22,7 +22,6 @@ import java.util.Arrays ;
 import java.util.Iterator ;
 
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
@@ -61,13 +60,10 @@ public class strSplit extends PFuncSimpleAndList
         
         // StrUtils will also trim whitespace
         String[] tokens = StrUtils.split(s, regex);
-        Iterator<Binding> it = Iter.map(Arrays.asList(tokens).iterator(), new Transform<String,Binding>() {
-            @Override
-            public Binding convert(String item)
-            {
-                return BindingFactory.binding(binding, subjectVar, NodeFactory.createLiteral(item)) ;
-            }
-        });
+		Iterator<Binding> it = Iter.map(
+				Arrays.asList(tokens).iterator(),
+				item -> BindingFactory.binding(binding, subjectVar,
+						NodeFactory.createLiteral(item)));
         return new QueryIterPlainWrapper(it, execCxt);
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/resultset/CSVInput.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/CSVInput.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/CSVInput.java
index 7d6487b..43f6c65 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/CSVInput.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/CSVInput.java
@@ -22,10 +22,10 @@ import java.io.InputStream ;
 import java.util.ArrayList ;
 import java.util.Iterator ;
 import java.util.List ;
+import java.util.function.Function;
 
 import org.apache.jena.atlas.csv.CSVParser ;
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.logging.FmtLog ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
@@ -69,10 +69,10 @@ public class CSVInput
         CSVParser parser = CSVParser.create(in) ;
         final List<Var> vars = vars(parser) ;
         List<String> varNames = Var.varNames(vars) ;
-        Transform<List<String>, Binding> transform = new Transform<List<String>, Binding>(){
+        Function<List<String>, Binding> transform = new Function<List<String>, Binding>(){
             private int count = 1 ;
             @Override
-            public Binding convert(List<String> row) {
+            public Binding apply(List<String> row) {
                 if ( row.size() != vars.size() )
                     FmtLog.warn(log, "Row %d: Length=%d: expected=%d", count, row.size(), vars.size()) ;
                 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
index c11a38c..99413a5 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
@@ -19,9 +19,7 @@
 package org.apache.jena.sparql.resultset;
 
 import java.util.* ;
-
 import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.query.* ;
@@ -230,7 +228,7 @@ public class ResultSetCompare
     }
 
     static private List<Binding> convert(ResultSet rs) {
-        return Iter.iter(rs).map(qs2b).toList() ;
+        return Iter.iter(rs).map(item -> BindingUtils.asBinding(item)).toList() ;
     }
     
     
@@ -299,14 +297,6 @@ public class ResultSetCompare
         }
         return true ;
     }
-
-    private static Transform<QuerySolution, Binding> qs2b = new Transform<QuerySolution, Binding> () {
-        @Override
-        public Binding convert(QuerySolution item)
-        {
-            return BindingUtils.asBinding(item) ;
-        }
-    } ;
     
     public static class BNodeIso implements EqualityTest
     {

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/util/ModelUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/ModelUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/ModelUtils.java
index 9738b47..48ee0c9 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/ModelUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/ModelUtils.java
@@ -22,7 +22,6 @@ import java.util.Iterator ;
 
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.iterator.IteratorResourceClosing ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.lib.Closeable ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
@@ -101,14 +100,7 @@ public class ModelUtils
     
     public static StmtIterator triplesToStatements(final Iterator<Triple> it, final Model refModel)
     {
-        return new StmtIteratorImpl(Iter.map(it, new Transform<Triple,Statement>()
-        {
-            @Override
-            public Statement convert(Triple item)
-            {
-                return refModel.asStatement(item);
-            }
-        }))
+        return new StmtIteratorImpl(Iter.map(it, refModel::asStatement))
         {
             // Make sure to close the incoming iterator
             @Override
@@ -128,14 +120,7 @@ public class ModelUtils
     
     public static Iterator<Triple> statementsToTriples(final Iterator<Statement> it)
     {
-        return new IteratorResourceClosing<>(Iter.map(it, new Transform<Statement,Triple>()
-        {
-            @Override
-            public Triple convert(Statement item)
-            {
-                return item.asTriple();
-            }
-        }),
+        return new IteratorResourceClosing<>(Iter.map(it, Statement::asTriple),
         new Closeable()
         {
             @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java
index d1dee93..fbc01b4 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java
@@ -24,10 +24,8 @@ import java.util.HashSet ;
 import java.util.Iterator ;
 import java.util.List ;
 import java.util.Set ;
-
 import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.atlas.iterator.IteratorConcat ;
-import org.apache.jena.atlas.iterator.Transform ;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
@@ -139,13 +137,7 @@ public class GraphList
                 return Iter.nullIterator() ;
         }
         List<Node> x = members(gn) ;
-        Transform<Node, Triple> transform = new Transform<Node, Triple>() {
-            @Override
-            public Triple convert(Node obj) {
-                return Triple.create(s, ListPFunction.nListMember, obj) ;
-            }
-        } ;
-        return Iter.map(x.iterator(), transform) ;
+        return Iter.map(x.iterator(), t -> Triple.create(s, ListPFunction.nListMember, t)) ;
     }
 
     private static boolean isAny(Node x) {
@@ -354,8 +346,6 @@ public class GraphList
 
     private static GNode next(GNode gnode) { return new GNode(gnode, cdr(gnode)) ; }
 
-    private static Node value(GNode gnode) { return car(gnode) ; }
-
     public static boolean isListNode (GNode gnode)
     { return gnode.node.equals(NIL) || isCons(gnode) ; }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/6b475345/jena-arq/src/test/java/org/apache/jena/riot/process/TestNormalization.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/process/TestNormalization.java b/jena-arq/src/test/java/org/apache/jena/riot/process/TestNormalization.java
index 1d62f2a..20cf455 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/process/TestNormalization.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/process/TestNormalization.java
@@ -103,7 +103,7 @@ public class TestNormalization extends BaseTest
         Node n1 = NodeFactoryExtra.parseNode(input) ;
         assertTrue("Invalid lexical form", n1.getLiteralDatatype().isValid(n1.getLiteralLexicalForm()));
         
-        Node n2 = CanonicalizeLiteral.get().convert(n1) ;
+        Node n2 = CanonicalizeLiteral.get().apply(n1) ;
         Node n3 = NodeFactoryExtra.parseNode(expected) ;
         assertEquals("Invalid canonicalization (lex)", n3.getLiteralLexicalForm(), n2.getLiteralLexicalForm()) ;
         assertEquals("Invalid canonicalization (node)", n3, n2) ;
@@ -115,7 +115,7 @@ public class TestNormalization extends BaseTest
     private static void normalizeLang(String input, String expected, boolean correct)
     {
         Node n1 = NodeFactoryExtra.parseNode(input) ;
-        Node n2 = CanonicalizeLiteral.get().convert(n1) ;
+        Node n2 = CanonicalizeLiteral.get().apply(n1) ;
         Node n3 = NodeFactoryExtra.parseNode(expected) ;
         if ( correct )
         {