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

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


The following commit(s) were added to refs/heads/main by this push:
     new 044d50b4f7 Code clean up of XXX and TODO
044d50b4f7 is described below

commit 044d50b4f7f28a1f385c45c44cd5843b839f5d61
Author: Andy Seaborne <[email protected]>
AuthorDate: Fri Apr 11 10:11:01 2025 +0100

    Code clean up of XXX and TODO
---
 .../apache/jena/atlas/data/DistinctDataNet.java    |   1 -
 .../java/org/apache/jena/riot/lang/LangTriG.java   |   2 -
 .../org/apache/jena/riot/lang/LangTurtleBase.java  |  13 +-
 .../org/apache/jena/riot/system/FactoryRDFStd.java |   2 -
 .../java/org/apache/jena/sparql/algebra/OpLib.java |   3 -
 .../optimize/TransformEliminateAssignments.java    |  45 +---
 .../optimize/TransformPathFlattenAlgebra.java      |   1 -
 .../sparql/engine/iterator/QueryIterAssign.java    |   2 -
 .../sparql/engine/iterator/QueryIterLateral.java   |  13 +-
 .../engine/join/QueryIterNestedLoopLeftJoin.java   |  12 +-
 .../jena/sparql/engine/main/JoinClassifier.java    |   3 +-
 .../org/apache/jena/sparql/engine/ref/RefEval.java |   1 -
 .../org/apache/jena/sparql/expr/NodeValueCmp.java  |   6 -
 .../jena/sparql/expr/aggregate/AggFoldMap.java     |   2 -
 .../apache/jena/sparql/util/iso/IsoAlgTuple.java   |   4 +-
 .../jena/system/buffering/BufferingPrefixMap.java  |   1 -
 .../system/progress/ProgressMonitorOutput.java     |   2 -
 .../lang/rdfxml/converted_legacy/LibTestARP1.java  |   2 -
 .../jena/riot/protobuf/TestProtobufStreamRDF.java  |   3 -
 .../core/AbstractDatasetGraphFindPatterns.java     |  45 ++--
 .../sparql/engine/join/AbstractTestLeftJoin.java   |  28 +--
 .../org/apache/jena/sparql/path/TestPathQuery.java |   1 -
 .../org/apache/jena/sparql/sse/TestSSE_Basic.java  |   2 +-
 .../jena/assembler/assemblers/AssemblerBase.java   |   3 +-
 .../org/apache/jena/datatypes/xsd/XSDDuration.java |  59 +++--
 .../ext/xerces/impl/dv/xs/AbstractDateTimeDV.java  |   2 +-
 .../main/java/org/apache/jena/rdf/model/Bag.java   |   1 -
 .../jena/rdfxml/xmlinput0/states/Collection.java   |  13 +-
 .../jena/rdfxml/xmlinput1/states/Collection.java   |  13 +-
 .../jena/reasoner/rulesys/impl/BindingVector.java  |  72 +++---
 .../main/java/org/apache/jena/util/FileUtils.java  |   1 -
 .../org/apache/jena/irix/TestIRIxJenaSystem.java   |   2 +-
 .../apache/jena/rdfxml/xmlinput0/states/Event.java |   1 -
 .../apache/jena/rdfxml/xmlinput1/states/Event.java |   1 -
 .../org/apache/jena/dboe/base/block/Block.java     |   4 +-
 .../jena/dboe/base/block/BlockMgrFactory.java      |   1 -
 .../jena/dboe/base/file/BlockAccessBase.java       |   1 -
 .../dboe/base/recordbuffer/RecordBufferPage.java   |   4 -
 .../java/org/apache/jena/dboe/sys/FileLib.java     |   2 -
 .../jena/dboe/trans/bplustree/BPTreeNode.java      |   3 -
 .../dboe/trans/data/TestTxnBinaryDataFile.java     |   1 -
 .../trans/data/TestTxnBinaryDataFileGeneral.java   |   1 -
 .../jena/dboe/transaction/txn/ComponentIds.java    |  28 ---
 .../jena/dboe/transaction/txn/Transaction.java     |   1 -
 .../querybuilder/rewriters/ElementRewriter.java    |   2 -
 .../apache/jena/fuseki/access/DataAccessCtl.java   |   1 -
 .../org/apache/jena/iri/impl/ViolationImpl.java    |   7 +-
 .../java/org/apache/jena/rfc3986/ParseDNS.java     |   3 -
 .../org/apache/jena/rfc3986/ParseIPv6Address.java  |   1 -
 .../apache/jena/rfc3986/ParseURNComponents.java    |   1 -
 .../jena/rdfpatch/filelog/rotate/RollerIndex.java  |   1 -
 .../system/AbstractDatasetGraphAddDelete.java      |   9 +-
 .../java/org/apache/jena/rdfpatch/system/Id.java   |   1 -
 .../rdfpatch/system/RDFChangesSuppressEmpty.java   |   1 -
 .../org/apache/jena/shacl/engine/ShaclPaths.java   |   1 -
 .../jena/shacl/engine/SparqlConstraints.java       |   1 -
 .../shacl/engine/constraint/PatternConstraint.java |   1 -
 .../engine/constraint/UniqueLangConstraint.java    |   1 -
 .../main/java/org/apache/jena/shacl/lib/ShLib.java |   2 +-
 .../jena/shex/expressions/ShapeExprWalker.java     |   1 -
 .../org/apache/jena/shex/parser/ParserShExC.java   |   4 -
 .../java/org/apache/jena/shex/parser/ShExC.java    |   1 -
 .../java/org/apache/jena/shex/sys/ShexLib.java     |  14 --
 .../org/apache/jena/shex/writer/WriterShExC.java   |   2 -
 .../jena/tdb1/base/file/BlockAccessBase.java       |  46 ++--
 .../org/apache/jena/tdb1/index/ext/ExtHash.java    | 272 ++++++++++-----------
 .../apache/jena/tdb1/setup/DatasetBuilderStd.java  |   4 -
 .../org/apache/jena/tdb1/store/DateTimeNode.java   |  73 +++---
 .../org/apache/jena/tdb2/store/NodeIdFactory.java  |   3 -
 69 files changed, 326 insertions(+), 535 deletions(-)

diff --git 
a/jena-arq/src/main/java/org/apache/jena/atlas/data/DistinctDataNet.java 
b/jena-arq/src/main/java/org/apache/jena/atlas/data/DistinctDataNet.java
index cdf7309ca5..5b57518c01 100644
--- a/jena-arq/src/main/java/org/apache/jena/atlas/data/DistinctDataNet.java
+++ b/jena-arq/src/main/java/org/apache/jena/atlas/data/DistinctDataNet.java
@@ -80,7 +80,6 @@ public class DistinctDataNet<E> extends DistinctDataBag<E> {
         return toReturn;
     }
 
-    // TODO: Will be used by the .netIterator() method
     protected List<File> getNetSpillFiles() {
         return super.getSpillFiles();
     }
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTriG.java 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTriG.java
index 15982c4d1c..ed80866418 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTriG.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTriG.java
@@ -80,8 +80,6 @@ public class LangTriG extends LangTurtleBase {
         // () :p :o .
         // (1 2) :p :o .
 
-        // XXX Find the Turtle code to do this for the Turtle case and 
refactor.
-
         if ( lookingAt(LBRACKET) ) {
             nextToken() ;
             token = peekToken() ;
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTurtleBase.java 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTurtleBase.java
index ef8cb2264a..1b1d017f41 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTurtleBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangTurtleBase.java
@@ -234,7 +234,7 @@ public abstract class LangTurtleBase extends LangBase {
         }
 
         // RDF 1.2
-        // reified triple,possible a declaration (empty predicateObjectList).
+        // reified triple, possibly a declaration (empty predicateObjectList).
         //     reifiedTriple predicateObjectList?
         // <<>> subject position. Rule [10]
         if ( lookingAt(LT2) ) {
@@ -254,15 +254,7 @@ public abstract class LangTurtleBase extends LangBase {
         // This generates an error as the triple is created.
         // The parser is more general.
         if ( lookingAt(L_TRIPLE) ) {
-            // [RDF-1.2]
-            // ttSubject
-            // predicate
-            // ttObject
             Node subject = parseTripleTerm();
-            // XXX Cleaner error handling to be general.
-            exception(peekToken(), "Subject is a triple term");
-//            predicateObjectList(subject);
-//            expectEndOfTriples();
             return;
         }
         exception(peekToken(), "Out of place: %s", peekToken());
@@ -289,10 +281,7 @@ public abstract class LangTurtleBase extends LangBase {
         nextToken();
 
         Node tripleTerm = profile.createTripleTerm(s, p, o, startLine, 
startColumn);
-        // XXX profile.createTripleReifier
-        // emitTripleReifier(s, p, o, startReifiedTripleToken.getLine(), 
startReifiedTripleToken.getColumn());
         emitTriple(reif, NodeConst.nodeReifies, tripleTerm);
-
         return reif;
     }
 
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/system/FactoryRDFStd.java 
b/jena-arq/src/main/java/org/apache/jena/riot/system/FactoryRDFStd.java
index 6e0b0b5b5f..86194ee473 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/FactoryRDFStd.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/FactoryRDFStd.java
@@ -84,8 +84,6 @@ public class FactoryRDFStd implements FactoryRDF {
                 Log.warn(this, "Bad variant "+variant+" for blank node") ;
         }
 
-        // XXX Style: Do this fast.  Guava? Apache commons? Special case for 
char[32]
-        // (Eventually, blank node Nodes will have two longs normally.)
         return createBlankNode(String.format("%08X%08X", mostSigBits, 
leastSigBits)) ;
     }
 
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 d9d8f38d25..287826da03 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
@@ -35,9 +35,6 @@ public class OpLib
         return op;
     }
 
-    // XXX These may change to be a specific Op implementation.
-    // Needs a visitor change.
-
     /**
      * Return an {@code Op} that is the join unit - {@code (join unit(), X) = 
X)}.
      * It is one row of zero columns.
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformEliminateAssignments.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformEliminateAssignments.java
index c55870235f..1967687e10 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformEliminateAssignments.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformEliminateAssignments.java
@@ -372,49 +372,6 @@ public class TransformEliminateAssignments extends 
TransformCopy {
     @Override
     public Op transform(OpGroup opGroup, Op subOp) {
         return super.transform(opGroup, subOp);
-
-        // TODO Unclear if this will work properly or not because group can
-        // introduce new assignments as well as evaluate expressions
-
-        //@formatter:off
-//        if (!this.isApplicable())
-//            return super.transform(opGroup, subOp);
-//
-//        // See what vars are used in the filter
-//        Collection<Var> vars = new ArrayList<>();
-//        VarExprList exprs = new VarExprList(opGroup.getGroupVars());
-//        List<ExprAggregator> aggs = new 
ArrayList<ExprAggregator>(opGroup.getAggregators());
-//        for (Expr expr : exprs.getExprs().values()) {
-//            ExprVars.varsMentioned(vars, expr);
-//        }
-//
-//        // Are any of these vars single usage?
-//        boolean modified = false;
-//        for (Var var : vars) {
-//            // Usage count will be 2 if we can eliminate the assignment
-//            // First usage is when it is introduced by the assignment and the
-//            // second is when it is used now in this group by
-//            Expr e = getAssignExpr(var);
-//            if (this.tracker.getUsageCount(var) == 2 && hasAssignment(var) 
&& canInline(e)) {
-//                // Can go back and eliminate that assignment
-//                subOp = eliminateAssignment(subOp, var);
-//                // Replace the variable usage with the expression in both the
-//                // expressions and the aggregators
-//                ExprTransform transform = new ExprTransformSubstitute(var, 
e);
-//                exprs = processVarExprList(exprs, transform);
-//                aggs = processAggregators(aggs, transform);
-//                this.tracker.getAssignments().remove(var);
-//                modified = true;
-//            }
-//        }
-//
-//        // Create a new group by if we've substituted any expressions
-//        if (modified) {
-//            return new OpGroup(subOp, exprs, aggs);
-//        }
-//
-//        return super.transform(opGroup, subOp);
-        //@formatter:on
     }
 
     private Op eliminateAssignment(Op subOp, Var var) {
@@ -537,7 +494,7 @@ public class TransformEliminateAssignments extends 
TransformCopy {
         public void visit(OpUnion opUnion) {
             unsafe();
         }
-        
+
         @Override
         public void visit(OpJoin opJoin) {
             unsafe();
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformPathFlattenAlgebra.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformPathFlattenAlgebra.java
index c5dfcff76d..ee4ee8bf5e 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformPathFlattenAlgebra.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformPathFlattenAlgebra.java
@@ -144,7 +144,6 @@ public class TransformPathFlattenAlgebra extends 
TransformCopy {
             }
 
             if ( !backwards.isEmpty() ) {
-                // TODO Could reverse here.
                 P_NegPropSet pBwd = new P_NegPropSet();
                 for ( P_Path0 p : backwards )
                     pBwd.add(p);
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterAssign.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterAssign.java
index ef14096342..1c2b6b5e19 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterAssign.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterAssign.java
@@ -55,8 +55,6 @@ public class QueryIterAssign extends QueryIterProcessBinding
 
     @Override
     public Binding accept(Binding binding) {
-        // XXX Assumes ExprList.get(, Binding, )
-        //BindingMap b = BindingFactory.create(binding);
         BindingBuilder b = Binding.builder(binding);
         for ( Var v : exprs.getVars() ) {
             // if "binding", not "b" used, we get (Lisp) "let"
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterLateral.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterLateral.java
index c030759e13..b4916008b7 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterLateral.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterLateral.java
@@ -344,18 +344,7 @@ public class QueryIterLateral extends QueryIterRepeatApply 
{
                 return ( x2 == null ) ? n : x2;
             }
             return n;
-    }
-
-//        // Allow for nulls.
-//        private Triple transform(Triple triple) {
-//
-//            if ( assigns.isEmpty() )
-//                return triple;
-//
-//            // XXX assignments()
-//
-//            Triple triple2 = Triple.create(s, p, o);
-//            return triple2;
+        }
 
         private void generateAssignmentNode(Node n, VarExprList assigns, 
BindingBuilder builder) {
             if ( n == null )
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/join/QueryIterNestedLoopLeftJoin.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/engine/join/QueryIterNestedLoopLeftJoin.java
index 7976093775..77fdbaccdc 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/join/QueryIterNestedLoopLeftJoin.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/engine/join/QueryIterNestedLoopLeftJoin.java
@@ -33,12 +33,10 @@ import org.apache.jena.sparql.expr.ExprList ;
  * Nested Loop left Join (materializing on the right, streaming on the left)
  * A simple, dependable join.
  * <p>
- * See {@link Join#nestedLoopLeftJoinBasic} for a very simple implementation 
for 
- * testing purposes only. 
+ * See {@link Join#nestedLoopLeftJoinBasic} for a very simple implementation 
for
+ * testing purposes only.
  */
 public class QueryIterNestedLoopLeftJoin extends QueryIter2 {
-    // XXX Can we materialise left instead?
-    
     private long s_countLHS     = 0;
     private long s_countRHS     = 0;
     private long s_countResults = 0;
@@ -109,19 +107,19 @@ public class QueryIterNestedLoopLeftJoin extends 
QueryIter2 {
             if ( ! foundMatch ) {
                 s_countResults++;
                 Binding r = rowLeft ;
-                rowLeft = null; 
+                rowLeft = null;
                 return r ;
             }
             rowLeft = null;
         }
     }
-    
+
     private boolean applyConditions(Binding binding) {
         if ( conditions == null )
             return true ;
         return conditions.isSatisfied(binding, getExecContext()) ;
     }
-    
+
     @Override
     protected void requestSubCancel() {}
 
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/JoinClassifier.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/JoinClassifier.java
index 61523d4eb6..ed0a61ca21 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/JoinClassifier.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/JoinClassifier.java
@@ -305,11 +305,10 @@ public class JoinClassifier
         return result;
     }
 
-    /***
+    /**
      * Return an iterator over the given op's immediate sub ops.
      * An empty iterator is returned for Op0 and OpExt.
      */
-    // XXX This method could go to OpLib or the Op interface directly
     private static Iterator<Op> getSubOps(Op op) {
         if (op instanceof Op1)
             return Iter.singletonIterator(((Op1)op).getSubOp());
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/ref/RefEval.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/engine/ref/RefEval.java
index 909d9e70fc..f14a6a3230 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/ref/RefEval.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/ref/RefEval.java
@@ -116,7 +116,6 @@ public class RefEval {
 
             Table tableVarURI = TableFactory.create(gVar, gn);
             // Evaluate the pattern, join with this graph node possibility.
-            // XXX If Var.ANON then no-opt.
             Table patternTable = eval(e2, opGraph.getSubOp());
             Table stepResult = evaluator.join(patternTable, tableVarURI);
 
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValueCmp.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValueCmp.java
index 4d2ad55f65..eb66c7acae 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValueCmp.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValueCmp.java
@@ -478,7 +478,6 @@ public class NodeValueCmp {
             return CompositeDatatypeMap.compare(l1, l2, true);
         }
 
-        // XXX G and Date cases.
         int vsOrder = ValueSpace.comparisonOrder(vs1, vs2);
 
         if ( vsOrder < 0 )
@@ -487,11 +486,6 @@ public class NodeValueCmp {
             return CMP_GREATER;
 
         // Compare by value. if equal (and we know nv1 and nv2 are not 
.equals), or indeterminate, compare by terms.
-        // XXX Review NodeValue.compare(nv1, nv2);
-        //  Pass ValueSpaces
-            // NodeValue.compare(nv1, nv2);
-
-        // XXX Lang tags
         try {
             int x1 = compareByValue(nv1, nv2);
             if ( x1 == CMP_LESS || x1 == CMP_GREATER )
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggFoldMap.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggFoldMap.java
index 923e42934b..758ee24b1b 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggFoldMap.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggFoldMap.java
@@ -230,8 +230,6 @@ public class AggFoldMap extends AggregatorBase
 
                        final CDTKey key = CDTFactory.createKey( nvKey.asNode() 
);
 
-                       // TODO: what do we do if the map already contains an 
entry with the same key?
-
                        final CDTValue value;
                        final NodeValue nvValue = ExprLib.evalOrNull(expr2, 
binding, functionEnv);
                        if ( nvValue == null ) {
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/util/iso/IsoAlgTuple.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/util/iso/IsoAlgTuple.java
index 9040c3218c..42a5f709ab 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/iso/IsoAlgTuple.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/iso/IsoAlgTuple.java
@@ -170,9 +170,7 @@ public class IsoAlgTuple {
         tuples2 = new HashSet<>(tuples2);
 
         // Fast path.
-        if ( true )
-        {
-            // XXX We can move this out to the caller of matcher.
+        if ( true ) {
             List<Tuple<Node>> tuples1$ = new ArrayList<>();
             // Step one - copy non-mappable tuples or exit now.
             for ( Tuple<Node> t1 : tuples1 ) {
diff --git 
a/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingPrefixMap.java
 
b/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingPrefixMap.java
index d55d46fee6..56af5a862b 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingPrefixMap.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingPrefixMap.java
@@ -118,7 +118,6 @@ public class BufferingPrefixMap extends PrefixMapBase {
 
     @Override
     public int size() {
-        // XXX Wrong for added same prefix, different iri.
         return (int)stream().count();
     }
 
diff --git 
a/jena-arq/src/main/java/org/apache/jena/system/progress/ProgressMonitorOutput.java
 
b/jena-arq/src/main/java/org/apache/jena/system/progress/ProgressMonitorOutput.java
index 815381d799..d495be0838 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/system/progress/ProgressMonitorOutput.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/system/progress/ProgressMonitorOutput.java
@@ -141,8 +141,6 @@ public class ProgressMonitorOutput implements 
ProgressMonitor {
             // *1000L is milli to second conversion
             if ( thisTime != 0 && timePoint != 0 ) {
                 long batchAvgRate = (counterBatch * 1000L) / thisTime;
-                // XXX Too large : first after file switch. ???timePoint is 
wrong.
-                //System.err.printf("** %d %d\n",getRunningTotal(), timePoint 
);
                 long runAvgRate = (getRunningTotal() * 1000L) / timePoint;
                 print("Add: %,d %s (Batch: %,d / Avg: %,d)", 
getRunningTotal(), label, batchAvgRate, runAvgRate);
             } else {
diff --git 
a/jena-arq/src/test/java/org/apache/jena/riot/lang/rdfxml/converted_legacy/LibTestARP1.java
 
b/jena-arq/src/test/java/org/apache/jena/riot/lang/rdfxml/converted_legacy/LibTestARP1.java
index ddf9a6635a..0233ff93cb 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/riot/lang/rdfxml/converted_legacy/LibTestARP1.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/riot/lang/rdfxml/converted_legacy/LibTestARP1.java
@@ -141,8 +141,6 @@ class LibTestARP1 {
         ErrorHandler errorHandler = ErrorHandlerFactory.errorHandlerStrict;
 
         try {
-            // XXX ARP generate warnings rather than errors in some cases.
-            // XXX Fix!
             withLogLevel(SysRIOT.getLogger(),
                          "FATAL", ()->{
                              InputStream input = IO.openFile(fnInput);
diff --git 
a/jena-arq/src/test/java/org/apache/jena/riot/protobuf/TestProtobufStreamRDF.java
 
b/jena-arq/src/test/java/org/apache/jena/riot/protobuf/TestProtobufStreamRDF.java
index dd62d39093..e7e2a9fa09 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/riot/protobuf/TestProtobufStreamRDF.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/riot/protobuf/TestProtobufStreamRDF.java
@@ -65,9 +65,6 @@ public class TestProtobufStreamRDF {
 
     static DatasetGraph datasetGraph = SSE.parseDatasetGraph(dgs) ;
 
-    // TODO Empty.
-    // Graph as triples delimiter/blk.
-
     // Using delimited streams.
     @Test public void graph_01() throws IOException {
         testGraph(true);
diff --git 
a/jena-arq/src/test/java/org/apache/jena/sparql/core/AbstractDatasetGraphFindPatterns.java
 
b/jena-arq/src/test/java/org/apache/jena/sparql/core/AbstractDatasetGraphFindPatterns.java
index 29e0d1d23f..892bc230f4 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/sparql/core/AbstractDatasetGraphFindPatterns.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/sparql/core/AbstractDatasetGraphFindPatterns.java
@@ -39,14 +39,9 @@ import org.junit.Test ;
  * @see AbstractTestGraphOverDatasetGraph
  */
 public abstract class AbstractDatasetGraphFindPatterns {
-    
-    // XXX Same for "graph", then Default graph, named graph.
-    
-    // Add/merge with AbstractDatasetGraphTests
-    // Not for union graph here.
-    
+
     static Quad q    = SSE.parseQuad("(:g :s :p :o)") ;
-    
+
     static Quad q_g  = SSE.parseQuad("(:gx :s :p :o)") ;
     static Quad q_s  = SSE.parseQuad("(:g :sx :p :o)") ;
     static Quad q_p  = SSE.parseQuad("(:g :s :px :o)") ;
@@ -58,38 +53,38 @@ public abstract class AbstractDatasetGraphFindPatterns {
     static Quad q_sp  = SSE.parseQuad("(:g :sx :px :o)") ;
     static Quad q_so  = SSE.parseQuad("(:g :sx :p :ox)") ;
     static Quad q_po  = SSE.parseQuad("(:g :s :px :ox)") ;
-    
+
     static Quad q_gsp = SSE.parseQuad("(:gx :sx :px :o)") ;
     static Quad q_gpo = SSE.parseQuad("(:gx :s :px :ox)") ;
     static Quad q_gso = SSE.parseQuad("(:gx :sx :p :ox)") ;
     static Quad q_spo = SSE.parseQuad("(:g :sx :px :ox)") ;
-    
+
     static Quad q_gspo = SSE.parseQuad("(:gx :sx :px :ox)") ;
-    
+
     static List<Quad> dataPattern = Arrays.asList(q, q_g, q_s, q_p, q_o, q_gs, 
q_gp, q_go, q_sp, q_so, q_po, q_gsp, q_gpo, q_gso, q_spo, q_gspo) ;
-    
+
     // Helper.
     static void add(DatasetGraph data, Collection<Quad> quads) {
-        for ( Quad q : quads ) data.add(q); 
+        for ( Quad q : quads ) data.add(q);
     }
 
     /**
      * Create the dataset to test loaded with the supplied data - this dataset 
need not be mutable.
-     * Either supply {@link #create()} or override this method.  
+     * Either supply {@link #create()} or override this method.
      */
     protected DatasetGraph create(Collection<Quad> data) {
         DatasetGraph dsg = create() ;
         add(dsg, data) ;
         return dsg ;
     }
-    
+
     /** Easy route - create empty, mutable dataset.
      * If providing {@link #create(Collection)}, return null for this.
      */
     protected abstract DatasetGraph create() ;
-    
-    private Node node(String str) { return SSE.parseNode(str) ; } 
-    
+
+    private Node node(String str) { return SSE.parseNode(str) ; }
+
     @Test public void find_quad_00() {
         DatasetGraph dsg = create(dataPattern) ;
         List<Quad> quads1 = Iter.toList(dsg.find()) ;
@@ -98,7 +93,7 @@ public abstract class AbstractDatasetGraphFindPatterns {
         assertNotNull("find(null,null,null,null)", quads2);
         AssertExtra.assertEqualsUnordered("find()", quads1, quads2);
     }
-    
+
     @Test public void find_pattern_gspo() {
         DatasetGraph dsg = create(dataPattern) ;
         List<Quad> quads1 = toList(dsg.find(node(":g"), node(":s"), 
node(":p"), node(":o"))) ;
@@ -106,14 +101,14 @@ public abstract class AbstractDatasetGraphFindPatterns {
         List<Quad> quads2 = Arrays.asList(q) ;
         AssertExtra.assertEqualsUnordered("find(gspo)", quads1, quads2);
     }
-    
+
     @Test public void find_pattern_g() {
         DatasetGraph dsg = create(dataPattern) ;
         List<Quad> quads1 = Iter.toList(dsg.find(node(":gx"), null, null, 
null)) ;
         List<Quad> quads2 = Arrays.asList(q_g, q_gs, q_gp, q_go, q_gsp, q_gso, 
q_gpo, q_gspo) ;
         AssertExtra.assertEqualsUnordered("find(g)", quads1, quads2);
     }
-    
+
     @Test public void find_pattern_s() {
         DatasetGraph dsg = create(dataPattern) ;
         List<Quad> quads1 =  Iter.toList(dsg.find(null, node(":sx"), null, 
null)) ;
@@ -134,14 +129,14 @@ public abstract class AbstractDatasetGraphFindPatterns {
         List<Quad> quads2 = Arrays.asList(q_o, q_go, q_so, q_po, q_gpo, q_gso, 
q_spo, q_gspo) ;
         AssertExtra.assertEqualsUnordered("find(o)", quads1, quads2);
     }
-    
+
     @Test public void find_pattern_gs() {
         DatasetGraph dsg = create(dataPattern) ;
         List<Quad> quads1 =  Iter.toList(dsg.find(node(":gx"), node(":sx"), 
null, null)) ;
         List<Quad> quads2 = Arrays.asList(q_gs, q_gsp, q_gso, q_gspo) ;
         AssertExtra.assertEqualsUnordered("find(gs)", quads1, quads2);
     }
-    
+
     @Test public void find_pattern_gp() {
         DatasetGraph dsg = create(dataPattern) ;
         List<Quad> quads1 =  Iter.toList(dsg.find(node(":gx"), null, 
node(":px"), null)) ;
@@ -156,21 +151,21 @@ public abstract class AbstractDatasetGraphFindPatterns {
         List<Quad> quads2 = Arrays.asList(q_go, q_gpo, q_gso, q_gspo) ;
         AssertExtra.assertEqualsUnordered("find(go)", quads1, quads2);
     }
-    
+
     @Test public void find_pattern_sp() {
         DatasetGraph dsg = create(dataPattern) ;
         List<Quad> quads1 =  Iter.toList(dsg.find(null, node(":sx"), 
node(":px"), null)) ;
         List<Quad> quads2 = Arrays.asList(q_sp, q_gsp, q_spo, q_gspo) ;
         AssertExtra.assertEqualsUnordered("find(sp)", quads1, quads2);
     }
-    
+
     @Test public void find_pattern_so() {
         DatasetGraph dsg = create(dataPattern) ;
         List<Quad> quads1 =  Iter.toList(dsg.find(null, node(":sx"), null, 
node(":ox"))) ;
         List<Quad> quads2 = Arrays.asList(q_so, q_gso, q_spo, q_gspo) ;
         AssertExtra.assertEqualsUnordered("find(so)", quads1, quads2);
     }
-    
+
     @Test public void find_pattern_po() {
         DatasetGraph dsg = create(dataPattern) ;
         List<Quad> quads1 =  Iter.toList(dsg.find(null, null, node(":px"), 
node(":ox"))) ;
diff --git 
a/jena-arq/src/test/java/org/apache/jena/sparql/engine/join/AbstractTestLeftJoin.java
 
b/jena-arq/src/test/java/org/apache/jena/sparql/engine/join/AbstractTestLeftJoin.java
index 6c49f889fc..4175da8909 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/sparql/engine/join/AbstractTestLeftJoin.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/sparql/engine/join/AbstractTestLeftJoin.java
@@ -24,25 +24,23 @@ import org.apache.jena.sparql.sse.SSE ;
 import org.junit.Test ;
 
 public abstract class AbstractTestLeftJoin extends AbstractTestJoin {
-    
+
     @Override
     protected void executeTest(JoinKey joinKey, Table left, Table right, 
ExprList conditions, Table expectedResults) {
         executeTestJoin("LJ", joinKey, left, right, conditions, 
expectedResults) ;
     }
 
-    // XXX And conditions.
-    
     @Test public void leftjoin_basic_1()    { testJoin("a", table0(), 
table0(), table0()) ; }
     @Test public void leftjoin_basic_2()    { testJoin("a", table1(), 
table0(), table1()) ; }
     @Test public void leftjoin_basic_3()    { testJoin("a", tableD1(), 
table1(), tableD1()) ; }
     @Test public void leftjoin_basic_4()    { testJoin("z", tableD1(), 
table1(), tableD1()) ; }
-    
+
     @Test public void leftjoin_01()         { testJoin("a", tableL1(), 
tableL2(), table1LJ2()) ; }
     @Test public void leftjoin_02()         { testJoin("a", tableL4(), 
tableL5(), table4LJ5()) ; }
-    
+
     @Test public void leftjoin_03()         { testJoin("z", tableL1(), 
tableL2(), table1LJ2()) ; }
     @Test public void leftjoin_04()         { testJoin("z", tableL4(), 
tableL5(), table4LJ5()) ; }
-    
+
     @Test public void leftjoin_J01()        { testJoin("a", tableD1(), 
table1(), tableD1()) ; }
     @Test public void leftjoin_J01a()       { testJoin("z", tableD1(), 
table1(), tableD1()) ; }
 
@@ -72,15 +70,15 @@ public abstract class AbstractTestLeftJoin extends 
AbstractTestJoin {
     // Disjoint tables.
     @Test public void leftjoin_disjoint_01() { testJoin("a", tableD2(), 
tableD8(), tableD8x2()) ; }
     @Test public void leftjoin_disjoint_02() { testJoin("z", tableD2(), 
tableD8(), tableD8x2()) ; }
-    
+
     // Conditions.
     @Test public void leftjoin_condition_01() {
-        Table tableD1c = parseTableInt("(table", 
+        Table tableD1c = parseTableInt("(table",
                                        "   (row (?a 1) (?b 3))",
                                        ")") ;
-        testJoin("a", table1(), tableD1(), "((= ?b 3))", tableD1c) ; 
+        testJoin("a", table1(), tableD1(), "((= ?b 3))", tableD1c) ;
     }
-    
+
 
     @Test public void leftjoin_condition_02() {
         Table tableD3_LJc = parseTableInt("(table",
@@ -88,13 +86,13 @@ public abstract class AbstractTestLeftJoin extends 
AbstractTestJoin {
                                        "   (row (?a 1) (?c 9) (?b 2))",
                                        "   (row (?a 1) (?c 9) (?b 2))",
                                        ")") ;
-        testJoin("a", tableD2(), tableD1(), "((= ?a 1) (= ?b 2))", 
tableD3_LJc) ; 
+        testJoin("a", tableD2(), tableD1(), "((= ?a 1) (= ?b 2))", 
tableD3_LJc) ;
     }
-    
+
     @Test public void leftjoin_condition_03() {
-        // Never match 
-        ExprList exprs = SSE.parseExprList("((= ?b 99))") ; 
-        testJoin("a", table1(), tableD1(), "((= ?b 99))", table1()) ; 
+        // Never match
+        ExprList exprs = SSE.parseExprList("((= ?b 99))") ;
+        testJoin("a", table1(), tableD1(), "((= ?b 99))", table1()) ;
     }
 }
 
diff --git 
a/jena-arq/src/test/java/org/apache/jena/sparql/path/TestPathQuery.java 
b/jena-arq/src/test/java/org/apache/jena/sparql/path/TestPathQuery.java
index 26ce2c93ce..b9d2b5cd07 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/path/TestPathQuery.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/path/TestPathQuery.java
@@ -104,7 +104,6 @@ public class TestPathQuery {
     }
 
     private boolean rowSetEquals(RowSetRewindable rowset1, RowSetRewindable 
rowset2) {
-        // XXX [ISO] Use exact.
         return ResultsCompare.equalsExact(rowset1, rowset2);
     }
 
diff --git 
a/jena-arq/src/test/java/org/apache/jena/sparql/sse/TestSSE_Basic.java 
b/jena-arq/src/test/java/org/apache/jena/sparql/sse/TestSSE_Basic.java
index 9b77457cac..6a7b193137 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/sse/TestSSE_Basic.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/sse/TestSSE_Basic.java
@@ -149,7 +149,7 @@ public class TestSSE_Basic
 
     @Test public void testSymbol_1()    { testSymbol("word"); }
     @Test public void testSymbol_2()    { testSymbol("+"); }
-    // XXX Parser broken
+    // Conflict with RDF term syntax.
 //    @Test public void testSymbol_3()    { testSymbol("^^"); }
 //    @Test public void testSymbol_4()    { testSymbol("^^<foo>"); }
 //    @Test public void testSymbol_5()    { testSymbol("@"); }
diff --git 
a/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
 
b/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
index 02365d2c35..253b2d6e8f 100644
--- 
a/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
+++ 
b/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
@@ -134,8 +134,7 @@ public abstract class AssemblerBase implements Assembler
         Throw an exception if <code>uri</code> doesn't start with "java:",
         otherwise answer the string beyond the ":".
     */
-    private static String mustBeJava( String uri )
-        { // TODO replace JenaException
+    private static String mustBeJava( String uri ) {
         if (uri.startsWith( "java:" )) return uri.substring( 5 );
         throw new JenaException( "class name URI must start with 'java:': " + 
uri );
         }
diff --git 
a/jena-core/src/main/java/org/apache/jena/datatypes/xsd/XSDDuration.java 
b/jena-core/src/main/java/org/apache/jena/datatypes/xsd/XSDDuration.java
index d464525db3..e500e02699 100644
--- a/jena-core/src/main/java/org/apache/jena/datatypes/xsd/XSDDuration.java
+++ b/jena-core/src/main/java/org/apache/jena/datatypes/xsd/XSDDuration.java
@@ -26,7 +26,7 @@ import 
org.apache.jena.datatypes.xsd.impl.XSDAbstractDateTimeType ;
 /**
  * Represent an XSD duration value. We use a seven dimensional space
  * with years, months, days, hours, minutes, seconds and fractional seconds.
- * This deviates from the spec which allows arbitrary position 
+ * This deviates from the spec which allows arbitrary position
  * decimals for seconds.
  */
 
@@ -35,62 +35,62 @@ public class XSDDuration extends AbstractDateTime {
     /**
      * Constructor - should only be used by the internals but public scope 
because
      * the internals spread across multiple packages.
-     * 
+     *
      * @param value the date/time value returned by the parsing
      */
     public XSDDuration(Object value) {
         super(value);
     }
-    
+
     /**
      * Return the number of years in the duration
      */
     public int getYears() {
         return data[CY];
     }
-    
+
     /**
      * Return the number of months in the duration
      */
     public int getMonths() {
         return data[M];
     }
-    
+
     /**
      * Return the number of years in the duration
      */
     public int getDays() {
         return data[D];
     }
-    
+
     /**
      * Return the number of hours in the duration
      */
     public int getHours() {
         return data[h];
     }
-    
+
     /**
      * Return the number of minutes in the duration
      */
     public int getMinutes() {
         return data[m];
     }
-    
+
     /**
      * Return the number of full seconds in the duration
      */
     public int getFullSeconds() {
         return data[s];
     }
-    
+
     /**
      * Return the number of seconds in the duration, including fractional part
      */
     public double getSeconds() {
         return data[s] + fractionalSeconds;
     }
-    
+
     /**
      * Return the number of seconds in the duration, including the fractional 
part,
      * in a lossless but expensive notation - i.e. a BigDecimal.
@@ -99,7 +99,7 @@ public class XSDDuration extends AbstractDateTime {
         return BigDecimal.valueOf( data[ms], data[msscale])
                      .add( BigDecimal.valueOf(data[s]));
     }
-    
+
     /**
      * Return the time component of the duration - i.e. just the 
hours/mins/seconds,
      * and returns the values in seconds.
@@ -107,7 +107,7 @@ public class XSDDuration extends AbstractDateTime {
     public double getTimePart() {
         return ((data[h]) * 60l + data[m]) * 60l + getSeconds();
     }
-    
+
     /**
      * Serializer
      */
@@ -164,7 +164,7 @@ public class XSDDuration extends AbstractDateTime {
     }
 
     // The following duration comparison code is based on Xerces DurationDV, 
Apache Software Foundation
-    
+
     // order-relation on duration is a partial order. The dates below are used 
to
     // for comparison of 2 durations, based on the fact that
     // duration x and y is x<=y iff s+x<=s+y
@@ -186,19 +186,19 @@ public class XSDDuration extends AbstractDateTime {
      * @param date2  Unnormalized duration
      * @param strict (min/max)Exclusive strict == true ( LESS_THAN ) or ( 
GREATER_THAN )
      *               (min/max)Inclusive strict == false (LESS_EQUAL) or 
(GREATER_EQUAL)
-     * @return INDETERMINATE if the order relationship between date1 and date2 
is indeterminate. 
-     * EQUAL if the order relation between date1 and date2 is EQUAL.  
+     * @return INDETERMINATE if the order relationship between date1 and date2 
is indeterminate.
+     * EQUAL if the order relation between date1 and date2 is EQUAL.
      * If the strict parameter is true, return LESS_THAN if date1 is less than 
date2 and
-     * return GREATER_THAN if date1 is greater than date2. 
+     * return GREATER_THAN if date1 is greater than date2.
      * If the strict parameter is false, return LESS_THAN if date1 is less 
than OR equal to date2 and
-     * return GREATER_THAN if date1 is greater than OR equal to date2 
+     * return GREATER_THAN if date1 is greater than OR equal to date2
      */
     @Override
     protected short compareValues(int[] date1, int[] date2, boolean strict) {
 
         date1 = canonical(date1) ;
         date2 = canonical(date2) ;
-        
+
         //REVISIT: this is unoptimazed vs of comparing 2 durations
         //         Algorithm is described in 3.2.6.2 W3C Schema Datatype specs
         //
@@ -270,7 +270,7 @@ public class XSDDuration extends AbstractDateTime {
         }
         return resultA;
     }
-    
+
     /**
      * Equality function (value based).
      */
@@ -292,11 +292,11 @@ public class XSDDuration extends AbstractDateTime {
         }
         return super.equals(obj) ;
     }
-    
+
     @Override
     public int hashCode() {
         int[] data1 = canonical(this.data) ;
-        int hash = 1816 ; 
+        int hash = 1816 ;
         for ( int aData : data1 )
             hash = ( hash << 1 ) ^ aData;
         return hash;
@@ -357,22 +357,21 @@ public class XSDDuration extends AbstractDateTime {
         duration[utc]='Z';
         return duration;
     }
-    
-    
+
     // XXX Signedness?
-    // Day-time, year-month canonicalization. 
+    // Day-time, year-month canonicalization.
     private static int[] canonical(int[] val) {
         val = Arrays.copyOf(val, val.length) ;
-        
+
         while ( val[ms] >= 1000 ) {
-            val[s] += 1 ; 
+            val[s] += 1 ;
             val[ms] -= 1000 ;
         }
         while ( val[ms] <= -1000 ) {
-            val[s] -= 1 ; 
+            val[s] -= 1 ;
             val[ms] += 1000 ;
         }
-        
+
         while ( val[s] >= 60 ) {
             val[m] += 1 ;
             val[s] -= 60 ;
@@ -382,7 +381,7 @@ public class XSDDuration extends AbstractDateTime {
             val[s] += 60 ;
         }
 
-        
+
         while ( val[m] >= 60 ) {
             val[h] += 1 ;
             val[m] -= 60 ;
@@ -400,7 +399,7 @@ public class XSDDuration extends AbstractDateTime {
             val[D] -= 1 ;
             val[h] += 24 ;
         }
-        
+
         while ( val[M] >= 12 ) {
             val[CY] += 1 ;
             val[M] -= 12 ;
diff --git 
a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/AbstractDateTimeDV.java
 
b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/AbstractDateTimeDV.java
index 67f6d9f263..594b107e69 100644
--- 
a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/AbstractDateTimeDV.java
+++ 
b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/AbstractDateTimeDV.java
@@ -907,7 +907,7 @@ public abstract class AbstractDateTimeDV extends 
TypeValidator {
                int position;
                // a pointer to the type that was used go generate this data
                // note that this is not the actual simple type, but one of the
-               // statically created XXXDV objects, so this won't cause any GC 
problem.
+               // statically created DV objects, so this won't cause any GC 
problem.
                final AbstractDateTimeDV type;
                private String canonical;
                public DateTimeData(String originalValue, AbstractDateTimeDV 
type) {
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/Bag.java 
b/jena-core/src/main/java/org/apache/jena/rdf/model/Bag.java
index a51b5ce820..ed4aaf9a67 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/Bag.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/Bag.java
@@ -58,5 +58,4 @@ public interface Bag extends Container {
      * @param v The value to be removed from the bag.
      * @return this container to enable cascading calls.
      */
-//TODO    public Container remove(String v) ;
 }
diff --git 
a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/Collection.java
 
b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/Collection.java
index ede0a26eb6..63c7439009 100644
--- 
a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/Collection.java
+++ 
b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/Collection.java
@@ -25,8 +25,7 @@ import org.xml.sax.Attributes;
 import org.xml.sax.SAXParseException;
 
 abstract class Collection extends WantDescription {
-    // TODO: not for 2.3. document this carefully.    
-   
+
     WantsObjectI nextSlot;
     public Collection(WantsObjectFrameI s, AbsXMLContext x) {
         super(s, x);
@@ -55,19 +54,19 @@ public FrameI startElement(String uri, String localName, 
String rawName,
           }
       };
       return fi;
-      
+
     }
    /** Must use second bnode in the first triple.
        Can use either bnode in further triples.
    */
    abstract void restTriple(ANode subj,ANode obj);
-   
+
    /** Must use both bnodes in the first triple.
        Can use either bnode in further triples.
    */
    abstract void firstTriple(ANode subj, ANode obj);
    abstract ANode nil() ;
-    
+
 
     @Override
     final public void endElement() throws SAXParseException {
@@ -86,7 +85,7 @@ public FrameI startElement(String uri, String localName, 
String rawName,
         }
         super.abort();
     }
-    
-   
+
+
 
 }
diff --git 
a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/Collection.java
 
b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/Collection.java
index 068b0d7803..5fda834e90 100644
--- 
a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/Collection.java
+++ 
b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/Collection.java
@@ -25,8 +25,7 @@ import org.xml.sax.Attributes;
 import org.xml.sax.SAXParseException;
 
 abstract class Collection extends WantDescription {
-    // TODO: not for 2.3. document this carefully.    
-   
+
     WantsObjectI nextSlot;
     public Collection(WantsObjectFrameI s, AbsXMLContext x) {
         super(s, x);
@@ -55,19 +54,19 @@ public FrameI startElement(String uri, String localName, 
String rawName,
           }
       };
       return fi;
-      
+
     }
    /** Must use second bnode in the first triple.
        Can use either bnode in further triples.
    */
    abstract void restTriple(ANode subj,ANode obj);
-   
+
    /** Must use both bnodes in the first triple.
        Can use either bnode in further triples.
    */
    abstract void firstTriple(ANode subj, ANode obj);
    abstract ANode nil() ;
-    
+
 
     @Override
     final public void endElement() throws SAXParseException {
@@ -86,7 +85,7 @@ public FrameI startElement(String uri, String localName, 
String rawName,
         }
         super.abort();
     }
-    
-   
+
+
 
 }
diff --git 
a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/BindingVector.java
 
b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/BindingVector.java
index 1ae49f5d78..098d94e59d 100644
--- 
a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/BindingVector.java
+++ 
b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/BindingVector.java
@@ -33,24 +33,24 @@ import org.apache.jena.util.PrintUtil ;
  * use of reference chains.
  */
 public class BindingVector implements BindingEnvironment {
-    
+
     /** The current binding set */
     protected Node[] environment;
-    
+
     /**
-     * Constructor - create an empty binding environment 
+     * Constructor - create an empty binding environment
      */
     public BindingVector(int size) {
-        environment = new Node[size]; 
+        environment = new Node[size];
     }
-    
+
     /**
-     * Constructor - create a binding environment from a vector of bindings 
+     * Constructor - create a binding environment from a vector of bindings
      */
     public BindingVector(Node [] env) {
-        environment = env; 
+        environment = env;
     }
-    
+
     /**
      * Constructor - create a binding environment which is a copy
      * of the given environment
@@ -58,9 +58,9 @@ public class BindingVector implements BindingEnvironment {
     public BindingVector(BindingVector clone) {
         Node[] orig = clone.environment;
         environment = new Node[orig.length];
-        System.arraycopy(orig, 0, environment, 0, orig.length); 
+        System.arraycopy(orig, 0, environment, 0, orig.length);
     }
-    
+
     /**
      * Return the current array of bindings. Useful for fast access to
      * several bindings, not useful for doing updates.
@@ -68,7 +68,7 @@ public class BindingVector implements BindingEnvironment {
     public Node[] getEnvironment() {
         return environment;
     }
-        
+
     /**
      * If the node is a variable then return the current binding (null if not 
bound)
      * otherwise return the node itself.
@@ -104,7 +104,7 @@ public class BindingVector implements BindingEnvironment {
             return node;
         }
     }
-    
+
     /**
      * Return the most ground version of the node. If the node is not a 
variable
      * just return it, if it is a variable bound in this environment return 
the binding,
@@ -119,7 +119,7 @@ public class BindingVector implements BindingEnvironment {
             return bind;
         }
     }
-    
+
     /**
      * Bind the ith variable in the current environment to the given value.
      * Checks that the new binding is compatible with any current binding.
@@ -138,7 +138,7 @@ public class BindingVector implements BindingEnvironment {
             return node.sameValueAs(value);
         }
     }
-    
+
     /**
      * Bind a variable in the current environment to the given value.
      * Checks that the new binding is compatible with any current binding.
@@ -154,7 +154,7 @@ public class BindingVector implements BindingEnvironment {
             return var.sameValueAs(value);
         }
     }
-   
+
     /**
      * Bind the variables in a goal pattern using the binding environment, to
      * generate a more specialized goal
@@ -168,8 +168,8 @@ public class BindingVector implements BindingEnvironment {
                 getGroundVersion(goal.getObject())
         );
     }
-    
-// Replaced by version below for consistency with stack variant    
+
+// Replaced by version below for consistency with stack variant
 //    /**
 //     * Instatiate a goal pattern using the binding environment
 //     * @param goal the TriplePattern to be instantiated
@@ -182,7 +182,7 @@ public class BindingVector implements BindingEnvironment {
 //                getGroundVersion(goal.getObject())
 //        );
 //    }
-    
+
     /**
      * Instantiate a triple pattern against the current environment.
      * This version handles unbound variables by turning them into bNodes.
@@ -199,7 +199,7 @@ public class BindingVector implements BindingEnvironment {
         if (o.isVariable()) o = NodeFactory.createBlankNode();
         return Triple.create(s, p, o);
     }
-    
+
     /**
      * Printable form
      */
@@ -220,7 +220,7 @@ public class BindingVector implements BindingEnvironment {
         }
         return buffer.toString();
     }
-        
+
     /**
      * Unify a goal with the head of a rule. This is a poor-man's unification,
      * we should try switching to a more conventional 
global-variables-with-trail
@@ -232,18 +232,18 @@ public class BindingVector implements BindingEnvironment {
      * or null if the unification fails. If a variable in the environment 
becomes
      * aliased to another variable through the unification this is represented
      * by having its value in the environment be the variable to which it is 
aliased.
-     */ 
+     */
     public static BindingVector unify(TriplePattern goal, TriplePattern head, 
int numRuleVars) {
-        Node[] gEnv = new Node[numRuleVars];       // TODO: check
+        Node[] gEnv = new Node[numRuleVars];
         Node[] hEnv = new Node[numRuleVars];
-        
+
         if (!unify(goal.getSubject(), head.getSubject(), gEnv, hEnv)) {
             return null;
-        } 
+        }
         if (!unify(goal.getPredicate(), head.getPredicate(), gEnv, hEnv)) {
-            return null; 
-        } 
-        
+            return null;
+        }
+
         Node gObj = goal.getObject();
         Node hObj = head.getObject();
         if (Functor.isFunctor(gObj)) {
@@ -274,11 +274,11 @@ public class BindingVector implements BindingEnvironment {
             }
         } else {
             if (!unify(gObj, hObj, gEnv, hEnv)) return null;
-        } 
+        }
         // Successful bind if we get here
         return new BindingVector(hEnv);
     }
-    
+
     /**
      * Unify a single pair of goal/head nodes. Unification of a head var to
      * a goal var is recorded using an Integer in the head env to point to a
@@ -293,7 +293,7 @@ public class BindingVector implements BindingEnvironment {
                 int gIndex = ((Node_RuleVariable)gNode).getIndex();
                 if (gIndex < 0) return true;
                 if (gEnv[gIndex] == null) {
-                    // First time bind so record link 
+                    // First time bind so record link
                     gEnv[gIndex] = hNode;
                 } else {
                     // aliased var so follow trail to alias
@@ -315,7 +315,7 @@ public class BindingVector implements BindingEnvironment {
                         hEnv[hIndex] = gNode;
                     } else {
                         // Already bound to a ground node
-                        return hVal.sameValueAs(gNode); 
+                        return hVal.sameValueAs(gNode);
                     }
                 }
             }
@@ -324,7 +324,7 @@ public class BindingVector implements BindingEnvironment {
             if (gNode instanceof Node_RuleVariable) {
                 int gIndex = ((Node_RuleVariable)gNode).getIndex();
                 if (gIndex < 0) return true;
-                Node gVal = gEnv[gIndex]; 
+                Node gVal = gEnv[gIndex];
                 if (gVal == null) {
                     //. No variable alias so just record binding
                     gEnv[gIndex] = hNode;
@@ -337,11 +337,11 @@ public class BindingVector implements BindingEnvironment {
                 }
                 return true;
             } else {
-                return hNode.sameValueAs(gNode); 
+                return hNode.sameValueAs(gNode);
             }
         }
     }
-  
+
     /** Equality override */
     @Override
     public boolean equals(Object o) {
@@ -360,7 +360,7 @@ public class BindingVector implements BindingEnvironment {
         }
         return true;
     }
-        
+
     /** hash function override */
     @Override
     public int hashCode() {
@@ -371,6 +371,6 @@ public class BindingVector implements BindingEnvironment {
         }
         return hash;
     }
-    
+
 
 }
diff --git a/jena-core/src/main/java/org/apache/jena/util/FileUtils.java 
b/jena-core/src/main/java/org/apache/jena/util/FileUtils.java
index baf799a2e9..0d02c0b3c3 100644
--- a/jena-core/src/main/java/org/apache/jena/util/FileUtils.java
+++ b/jena-core/src/main/java/org/apache/jena/util/FileUtils.java
@@ -290,7 +290,6 @@ public class FileUtils
         return ++counter;
     }
 
-    // TODO Replace with a FileManager
     /**
      Answer a BufferedReader than reads from the named resource file as
      UTF-8, possibly throwing WrappedIOExceptions.
diff --git 
a/jena-core/src/test/java/org/apache/jena/irix/TestIRIxJenaSystem.java 
b/jena-core/src/test/java/org/apache/jena/irix/TestIRIxJenaSystem.java
index 86076feb26..c24561f4fc 100644
--- a/jena-core/src/test/java/org/apache/jena/irix/TestIRIxJenaSystem.java
+++ b/jena-core/src/test/java/org/apache/jena/irix/TestIRIxJenaSystem.java
@@ -354,7 +354,7 @@ public class TestIRIxJenaSystem extends 
AbstractTestIRIx_3986 {
 
     @Test public void parse_urn_uuid_bad_07() { badSpecific("urn:uuid:" + 
testUUID + "?abc"); }
 
-    // XXX Not ASCII in the NSS part
+    // Not ASCII in the NSS part
     @Test public void parse_urn_uuid_bad_12() { badSpecific("urn:uuid:" + 
testUUID + "#αβγ"); }
     @Test public void parse_urn_uuid_bad_13() { badSpecific("urn:uuid:" + 
testUUID + "?=αβγ"); }
     @Test public void parse_urn_uuid_bad_14() { badSpecific("urn:uuid:" + 
testUUID + "?+αβγ"); }
diff --git 
a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/states/Event.java 
b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/states/Event.java
index a0116f401b..f167ac0fea 100644
--- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/states/Event.java
+++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/states/Event.java
@@ -21,7 +21,6 @@ import org.xml.sax.Attributes;
 import org.xml.sax.SAXParseException;
 
 abstract class Event {
-    // TODO: not for 2.3. get rid of short names all together, not good idea.
     final String oneChar;
     final String name;
     public Event(String oneChar, String name) {
diff --git 
a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/states/Event.java 
b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/states/Event.java
index 5ea7eb98a7..f29a8357a4 100644
--- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/states/Event.java
+++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/states/Event.java
@@ -21,7 +21,6 @@ import org.xml.sax.Attributes;
 import org.xml.sax.SAXParseException;
 
 abstract class Event {
-    // TODO: not for 2.3. get rid of short names all together, not good idea.
     final String oneChar;
     final String name;
     public Event(String oneChar, String name) {
diff --git 
a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/block/Block.java
 
b/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/block/Block.java
index 7c880d3589..ab40aea991 100644
--- 
a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/block/Block.java
+++ 
b/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/block/Block.java
@@ -25,8 +25,6 @@ import org.apache.jena.atlas.lib.ByteBufferLib;
 
 public final class Block
 {
-    // XXX Note development code added to enforce read-only use. Marked [RO]
-
     // While the general mechanisms support long block id,
     // some uses make restrictions.
     // BlockMgrs:
@@ -41,7 +39,7 @@ public final class Block
     private boolean readOnly = false;
     private boolean modified = false;
 
-    private /*[[Dev-RO]] final*/ ByteBuffer byteBuffer;
+    private final ByteBuffer byteBuffer;
     // If the byteBuffer is, say, a slice of another one,
     // this can be used to carry a ref to the real ByteBuffer.
     private ByteBuffer underlyingByteBuffer;
diff --git 
a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/block/BlockMgrFactory.java
 
b/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/block/BlockMgrFactory.java
index 41363b40f1..8701ecfbc7 100644
--- 
a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/block/BlockMgrFactory.java
+++ 
b/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/block/BlockMgrFactory.java
@@ -54,7 +54,6 @@ public class BlockMgrFactory {
         return create(fileSet, ext, null, blockSize, readBlockCacheSize, 
writeBlockCacheSize);
     }
 
-    // XXX Deprecate?
     public static BlockMgr create(FileSet fileSet, String ext, FileMode 
fileMode, int blockSize, int readBlockCacheSize, int writeBlockCacheSize) {
         if ( fileSet.isMem() )
             return createMem(fileSet.filename(ext), blockSize);
diff --git 
a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/file/BlockAccessBase.java
 
b/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/file/BlockAccessBase.java
index 062eefee30..445688b95a 100644
--- 
a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/file/BlockAccessBase.java
+++ 
b/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/file/BlockAccessBase.java
@@ -100,7 +100,6 @@ public abstract class BlockAccessBase implements 
BlockAccess {
             String msg = format("%s : Block id has gone negative: %d (long = 
%d)", label, id, z);
             throw new InternalErrorException(msg);
         }
-        // TODO Fix this when proper free block management is introduced.
         numFileBlocks++;
         return id;
     }
diff --git 
a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/recordbuffer/RecordBufferPage.java
 
b/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/recordbuffer/RecordBufferPage.java
index 45a8aa29ee..c6241930f0 100644
--- 
a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/recordbuffer/RecordBufferPage.java
+++ 
b/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/recordbuffer/RecordBufferPage.java
@@ -52,12 +52,8 @@ public final class RecordBufferPage extends 
RecordBufferPageBase
 
     @Override
     protected void _reset(Block block) {
-        // TODO -- should this be format?
         // Print this
         super.rebuild(block, this.getCount());
-        //?? use .format
-//        // TODO WRONG : block is overlying.
-//        this.link = block.getByteBuffer().getInt(LINK);
     }
 
     public static int calcRecordSize(RecordFactory factory, int blkSize)
diff --git 
a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/sys/FileLib.java 
b/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/sys/FileLib.java
index e2f25d6096..f9584346c0 100644
--- a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/sys/FileLib.java
+++ b/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/sys/FileLib.java
@@ -48,12 +48,10 @@ public class FileLib
         }
     }
 
-    // TODO remove and call ChannelManager directly
     public static FileChannel openManaged(String filename) {
         return openManaged(filename, "rw");
     }
 
-    // TODO remove and call ChannelManager directly
     public static FileChannel openManaged(String filename, String mode) {
         return ChannelManager.acquire(filename, mode);
     }
diff --git 
a/jena-db/jena-dboe-trans-data/src/main/java/org/apache/jena/dboe/trans/bplustree/BPTreeNode.java
 
b/jena-db/jena-dboe-trans-data/src/main/java/org/apache/jena/dboe/trans/bplustree/BPTreeNode.java
index 6fa736da0e..0bd8f53b22 100644
--- 
a/jena-db/jena-dboe-trans-data/src/main/java/org/apache/jena/dboe/trans/bplustree/BPTreeNode.java
+++ 
b/jena-db/jena-dboe-trans-data/src/main/java/org/apache/jena/dboe/trans/bplustree/BPTreeNode.java
@@ -287,9 +287,6 @@ public final class BPTreeNode extends BPTreePage
         // Pages from pointer slots x1 to x2 (inc because while we exclude 
maxRec,
         // keys are only a max of the subtree they mark out.
 
-        // XXX Just grab them now - later, keep indexes and fetch on next().
-        // XXX Epoch tracking
-
         List<BPTreePage> x = new ArrayList<>(x2-x1+1);
         for ( int i = x1; i <= x2 ; i++ )
             x.add(get(i));
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBinaryDataFile.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBinaryDataFile.java
index 44022d7daf..e19a96bd20 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBinaryDataFile.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBinaryDataFile.java
@@ -42,7 +42,6 @@ public class TestTxnBinaryDataFile {
     private Transactional transactional;
 
     @Before public void before() {
-        // XXX Builder.
         journal = Journal.create(Location.mem());
         baseBinData = new BinaryDataFileMem();
         BufferChannel chan = FileFactory.createBufferChannelMem();
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBinaryDataFileGeneral.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBinaryDataFileGeneral.java
index e0ed071075..e569fdde3e 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBinaryDataFileGeneral.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBinaryDataFileGeneral.java
@@ -33,7 +33,6 @@ public class TestTxnBinaryDataFileGeneral extends 
AbstractTestBinaryDataFile {
 
     @Override
     protected BinaryDataFile createBinaryDataFile() {
-        // XXX Builder.
         journal = Journal.create(Location.mem());
         baseBinData = new BinaryDataFileMem();
         BufferChannel chan = FileFactory.createBufferChannelMem();
diff --git 
a/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/txn/ComponentIds.java
 
b/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/txn/ComponentIds.java
index 490e7a1a3b..0729a357e7 100644
--- 
a/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/txn/ComponentIds.java
+++ 
b/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/txn/ComponentIds.java
@@ -27,33 +27,5 @@ public class ComponentIds {
     private static ComponentId make(String string, int v) {
         return ComponentId.alloc(string, null, v);
     }
-
-//
-//    // Linux : "uuid -v 4"
-//
-//    /* For single instance components and base ids for incremental 
registration */
-//    public static final ComponentId idTxnMRSW       = make("MRSW",     
"93a58341-ed53-4f0c-bac1-d9969ea38cf3");
-//    // TODO tie to registration (this predates)
-//    public static final ComponentId idTxnCounter    = make("Counter",  
"6b901671-e6db-45c5-9217-7506d21a0000");
-//    public static final ComponentId idMonitor       = make("Monitor",  
"c4d8a1e6-052b-413a-8d80-c5a6b442e608");
-//    public static final ComponentId idNull          = make("Monitor",  
"e6e31271-b6dc-452c-b624-d4e099464365");
-//    public static final ComponentId idSystem        = make("System",   
"95e0f729-ad29-48b2-bd70-e3738663c578");
-//    public static final ComponentId idBlobBase      = make("Blob",     
"43436b91-87ce-4d6b-827c-c3b9ea6536ba");
-//    public static final ComponentId idDev           = make("Blob",     
"82a6833a-1475-495a-83ca-10370c7c40cd");
-//
-//    public static ComponentId make(String label, String uuidStr) {
-//        byte[] bytes = L.uuidAsBytes(uuidStr);
-//        return ComponentId.create(label, bytes);
-//    }
-
-    /* For later
-    82a6833a-1475-495a-83ca-10370c7c40cd
-    1d32231b-aa11-47ed-8893-6b36673fe04c
-    27c4845e-c05a-410d-8c74-278a23b03bbd
-    f841ba46-a297-487d-b622-dd452c888dab
-    09efba54-7428-4689-929d-b1719a56c345
-    a9fbdc3c-442d-4086-8f40-b6ef773871b9
-    */
-
 }
 
diff --git 
a/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/txn/Transaction.java
 
b/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/txn/Transaction.java
index 515f390b26..c996dd474c 100644
--- 
a/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/txn/Transaction.java
+++ 
b/jena-db/jena-dboe-transaction/src/main/java/org/apache/jena/dboe/transaction/txn/Transaction.java
@@ -299,7 +299,6 @@ public class Transaction implements TransactionInfo {
             throw new TransactionException("Not in a write transaction");
     }
 
-    // XXX Duplicate -- TransactionalComponentLifecycle
     private void checkState(TxnState expected) {
         TxnState s = getState();
         if ( s != expected )
diff --git 
a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/rewriters/ElementRewriter.java
 
b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/rewriters/ElementRewriter.java
index a0d8d93b99..68b2267396 100644
--- 
a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/rewriters/ElementRewriter.java
+++ 
b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/rewriters/ElementRewriter.java
@@ -103,8 +103,6 @@ public class ElementRewriter extends 
AbstractRewriter<Element> implements Elemen
 
     @Override
     public void visit(ElementUnfold el) {
-// TODO: double check this method; I copied and adapted the method of
-//   ElementBind (see above) but I am not entirely sure it is correct
         Node n1 = changeNode(el.getVar1());
         Node n2 = changeNode(el.getVar2());
         if ( Objects.equals(n1, el.getVar1()) && Objects.equals(n2, 
el.getVar2()) ) {
diff --git 
a/jena-fuseki2/jena-fuseki-access/src/main/java/org/apache/jena/fuseki/access/DataAccessCtl.java
 
b/jena-fuseki2/jena-fuseki-access/src/main/java/org/apache/jena/fuseki/access/DataAccessCtl.java
index 803f972c83..1a3f58a2af 100644
--- 
a/jena-fuseki2/jena-fuseki-access/src/main/java/org/apache/jena/fuseki/access/DataAccessCtl.java
+++ 
b/jena-fuseki2/jena-fuseki-access/src/main/java/org/apache/jena/fuseki/access/DataAccessCtl.java
@@ -127,7 +127,6 @@ public class DataAccessCtl {
 
         Collection<Node> names = sCxt.visibleGraphs();
         if ( names == null )
-            // TODO does not scale.
             names = Iter.toList(dsg.listGraphNodes());
 
         return new DatasetGraphFilteredView(dsg, sCxt.predicateQuad(), 
sCxt.visibleGraphs());
diff --git a/jena-iri/src/main/java/org/apache/jena/iri/impl/ViolationImpl.java 
b/jena-iri/src/main/java/org/apache/jena/iri/impl/ViolationImpl.java
index ff347d1344..d0869a2525 100644
--- a/jena-iri/src/main/java/org/apache/jena/iri/impl/ViolationImpl.java
+++ b/jena-iri/src/main/java/org/apache/jena/iri/impl/ViolationImpl.java
@@ -35,14 +35,14 @@ public class ViolationImpl extends Violation {
     final private int slot;
 //    int index;
     final private AbsIRIImpl iri;
-    
+
 //    public IRIImplUncheckedException(String iri,int code, int slot, int 
charIndex) {
 //        this.iri = iri;
 //        this.code = code;
 //        this.slot = slot;
 //        this.index = charIndex;
 //    }
-    
+
     public ViolationImpl(IRI iri, int slot, int code) {
       this.iri = (AbsIRIImpl)iri;
       this.code = code;
@@ -63,7 +63,7 @@ public class ViolationImpl extends Violation {
     public int getComponent() {
         return slot;
     }
-    
+
     @Override
     public String component() {
        return componentName(slot);
@@ -111,7 +111,6 @@ public class ViolationImpl extends Violation {
 
     @Override
        public String getSpecificationURL() {
-        // TODO getSpecificationURL
         throw new UnsupportedOperationException("Not yet implemented.");
     }
 
diff --git a/jena-iri3986/src/main/java/org/apache/jena/rfc3986/ParseDNS.java 
b/jena-iri3986/src/main/java/org/apache/jena/rfc3986/ParseDNS.java
index 8d7c3da981..a66886a490 100644
--- a/jena-iri3986/src/main/java/org/apache/jena/rfc3986/ParseDNS.java
+++ b/jena-iri3986/src/main/java/org/apache/jena/rfc3986/ParseDNS.java
@@ -138,9 +138,6 @@ public class ParseDNS {
 
         List<Integer> dots = new ArrayList<>(4);
 
-        // XXX if string starts "."
-        // XXX if string ends "."
-
         while (p < end) {
             p = label(p);
             if ( p < 0 )
diff --git 
a/jena-iri3986/src/main/java/org/apache/jena/rfc3986/ParseIPv6Address.java 
b/jena-iri3986/src/main/java/org/apache/jena/rfc3986/ParseIPv6Address.java
index 8cbf1d5fff..90c6781272 100644
--- a/jena-iri3986/src/main/java/org/apache/jena/rfc3986/ParseIPv6Address.java
+++ b/jena-iri3986/src/main/java/org/apache/jena/rfc3986/ParseIPv6Address.java
@@ -107,7 +107,6 @@ public class ParseIPv6Address {
     }
 
     /** Parse option zoneId after IPv6 address. RFC 6874 */
-    // TODO Is this legal after IPv4 address?
     private static int parseIPv6OptionalZone(CharSequence string, int idx, int 
end) {
         if ( idx >= end )
             return idx;
diff --git 
a/jena-iri3986/src/main/java/org/apache/jena/rfc3986/ParseURNComponents.java 
b/jena-iri3986/src/main/java/org/apache/jena/rfc3986/ParseURNComponents.java
index 1983cbe474..1ec311e89c 100644
--- a/jena-iri3986/src/main/java/org/apache/jena/rfc3986/ParseURNComponents.java
+++ b/jena-iri3986/src/main/java/org/apache/jena/rfc3986/ParseURNComponents.java
@@ -70,7 +70,6 @@ import java.util.regex.Pattern;
 
         if ( rqString == null && fString == null )
             return null;
-        // XXX isEmpty?
         if ( rqString == null || rqString.isEmpty() ) {
             if ( fString == null )
                 return null;
diff --git 
a/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/filelog/rotate/RollerIndex.java
 
b/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/filelog/rotate/RollerIndex.java
index 055d86d3bf..9c0c9b058b 100644
--- 
a/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/filelog/rotate/RollerIndex.java
+++ 
b/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/filelog/rotate/RollerIndex.java
@@ -117,7 +117,6 @@ class RollerIndex implements Roller {
     public Path nextFilename() {
         long idx = nextIndex();
         currentId = idx;
-        // XXX FileMgr.freshFilename(directory, baseFilename, (int)idx, 
INC_SEP, fmtModifer);
         lastFilename = filename(currentId);
         return lastFilename;
     }
diff --git 
a/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/system/AbstractDatasetGraphAddDelete.java
 
b/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/system/AbstractDatasetGraphAddDelete.java
index d6bda8343a..6d58c72c19 100644
--- 
a/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/system/AbstractDatasetGraphAddDelete.java
+++ 
b/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/system/AbstractDatasetGraphAddDelete.java
@@ -82,14 +82,11 @@ public abstract class AbstractDatasetGraphAddDelete extends 
DatasetGraphWrapper
 
     // Unbundle deleteAny
     private static final int DeleteBufferSize = 10000;
-    @Override
     /** Simple implementation but done without assuming iterator.remove() */
+    @Override
     public void deleteAny(Node g, Node s, Node p, Node o) {
-        // TODO DRY This code.
         // This is duplicated: see DatasetGraphBase.
-        // We need to do the conversion here.
-        // DRY => DSGUtils
-        // Convert deleteAny to deletes.
+        // Must go through this.delete
         Quad[] buffer = new Quad[DeleteBufferSize];
         while (true) {
             Iterator<Quad> iter = find(g, s, p, o);
@@ -102,7 +99,7 @@ public abstract class AbstractDatasetGraphAddDelete extends 
DatasetGraphWrapper
             }
             // Delete them.
             for ( int i = 0 ; i < len ; i++ ) {
-                delete(buffer[i]);
+                this.delete(buffer[i]);
                 buffer[i] = null;
             }
             // Finished?
diff --git 
a/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/system/Id.java 
b/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/system/Id.java
index b89de74ca7..09e12f254b 100644
--- a/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/system/Id.java
+++ b/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/system/Id.java
@@ -30,7 +30,6 @@ import org.apache.jena.graph.Node;
 import org.apache.jena.graph.NodeFactory;
 import org.apache.jena.rdf.model.impl.Util;
 
-// XXX Should use this! At the moemnt a patch id is a Node.
 /**
  * An identifier. When encoded, the {@code Id} can be a URI or string literal.
  * The preferred form is a {@code <uuid:...>}.
diff --git 
a/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/system/RDFChangesSuppressEmpty.java
 
b/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/system/RDFChangesSuppressEmpty.java
index faf75eeb52..6a5d640c87 100644
--- 
a/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/system/RDFChangesSuppressEmpty.java
+++ 
b/jena-rdfpatch/src/main/java/org/apache/jena/rdfpatch/system/RDFChangesSuppressEmpty.java
@@ -35,7 +35,6 @@ import org.apache.jena.rdfpatch.changes.RDFChangesWrapper;
  *  To do this, call {@link #doAbort()} in {@link #txnNoChangeCommit()}
  */
 public class RDFChangesSuppressEmpty extends RDFChangesWrapper {
-    // TODO Add RDFChanges.cancel.
 
     public RDFChangesSuppressEmpty(RDFChanges other) {
         super(other);
diff --git 
a/jena-shacl/src/main/java/org/apache/jena/shacl/engine/ShaclPaths.java 
b/jena-shacl/src/main/java/org/apache/jena/shacl/engine/ShaclPaths.java
index a9430de39d..775cdcef10 100644
--- a/jena-shacl/src/main/java/org/apache/jena/shacl/engine/ShaclPaths.java
+++ b/jena-shacl/src/main/java/org/apache/jena/shacl/engine/ShaclPaths.java
@@ -94,7 +94,6 @@ public class ShaclPaths {
         return path(graph, node);
     }
 
-    // XXX Better error checking.
     private static Path path(Graph graph, Node node) {
         if ( node.isURI() && ! C.NIL.equals(node) )
             return PathFactory.pathLink(node);
diff --git 
a/jena-shacl/src/main/java/org/apache/jena/shacl/engine/SparqlConstraints.java 
b/jena-shacl/src/main/java/org/apache/jena/shacl/engine/SparqlConstraints.java
index cff0b46046..e3cba9fac1 100644
--- 
a/jena-shacl/src/main/java/org/apache/jena/shacl/engine/SparqlConstraints.java
+++ 
b/jena-shacl/src/main/java/org/apache/jena/shacl/engine/SparqlConstraints.java
@@ -60,7 +60,6 @@ public class SparqlConstraints {
         Node message = G.getZeroOrOneSP(shapesGraph, sparqlConstraintNode, 
SHACL.message);
         boolean deactivated = absentOrOne(shapesGraph, sparqlConstraintNode, 
SHACL.deactivated, NodeConst.nodeTrue);
 
-        // XXX Optimize prefixes acquisition in case of use from more than one 
place.
         Query query = ShLib.extractSPARQLQuery(shapesGraph, 
sparqlConstraintNode);
         String msg = (message != null && message.isLiteral() ? 
message.getLiteralLexicalForm() : null );
         return new SparqlConstraint(query, msg);
diff --git 
a/jena-shacl/src/main/java/org/apache/jena/shacl/engine/constraint/PatternConstraint.java
 
b/jena-shacl/src/main/java/org/apache/jena/shacl/engine/constraint/PatternConstraint.java
index c7ab97b273..f09e7fe094 100644
--- 
a/jena-shacl/src/main/java/org/apache/jena/shacl/engine/constraint/PatternConstraint.java
+++ 
b/jena-shacl/src/main/java/org/apache/jena/shacl/engine/constraint/PatternConstraint.java
@@ -88,7 +88,6 @@ public class PatternConstraint extends ConstraintTerm {
 
     @Override
     public void printCompact(IndentedWriter out, NodeFormatter nodeFmt) {
-        // XXX flagStr?
         compactQuotedString(out, "pattern", patternString);
         if ( flagsStr != null ) {
             out.print(" ");
diff --git 
a/jena-shacl/src/main/java/org/apache/jena/shacl/engine/constraint/UniqueLangConstraint.java
 
b/jena-shacl/src/main/java/org/apache/jena/shacl/engine/constraint/UniqueLangConstraint.java
index 21e7267f76..9146ddb21e 100644
--- 
a/jena-shacl/src/main/java/org/apache/jena/shacl/engine/constraint/UniqueLangConstraint.java
+++ 
b/jena-shacl/src/main/java/org/apache/jena/shacl/engine/constraint/UniqueLangConstraint.java
@@ -58,7 +58,6 @@ public class UniqueLangConstraint implements Constraint {
     @Override
     public void validateNodeShape(ValidationContext vCxt, Graph data, Shape 
shape, Node focusNode) {
         // Node shape -> not allowed
-        // XXX Make parse error.
         throw new ShaclException("sh:uniqueLang with no path");
     }
 
diff --git a/jena-shacl/src/main/java/org/apache/jena/shacl/lib/ShLib.java 
b/jena-shacl/src/main/java/org/apache/jena/shacl/lib/ShLib.java
index 15fd6aaab1..243d222194 100644
--- a/jena-shacl/src/main/java/org/apache/jena/shacl/lib/ShLib.java
+++ b/jena-shacl/src/main/java/org/apache/jena/shacl/lib/ShLib.java
@@ -291,7 +291,7 @@ public class ShLib {
     }
 
     public static String extractSPARQLQueryString(Graph shapesGraph, Node 
sparqlNode) {
-        // XXX Optimize prefixes acquisition in case of use from more than one 
place.
+        // Optimize prefixes acquisition in case of use from more than one 
place.
         String prefixes = prefixes(shapesGraph, sparqlNode);
         Node selectNode;
         try {
diff --git 
a/jena-shex/src/main/java/org/apache/jena/shex/expressions/ShapeExprWalker.java 
b/jena-shex/src/main/java/org/apache/jena/shex/expressions/ShapeExprWalker.java
index 670cbd2cfc..d5609574d5 100644
--- 
a/jena-shex/src/main/java/org/apache/jena/shex/expressions/ShapeExprWalker.java
+++ 
b/jena-shex/src/main/java/org/apache/jena/shex/expressions/ShapeExprWalker.java
@@ -39,7 +39,6 @@ public class ShapeExprWalker implements ShapeExprVisitor {
         this.afterVisitor = afterVisitor;
         // Walker because TripleExpr can contain a ShapeExpression
         this.tripleExprWalker = new TripleExprWalker(beforeTripleExprVisitor, 
afterTripleExprVisitor, this);
-        // XXX [NodeConstraint] - no recursion.
         this.nodeConstraintVisitor = nodeConstraintVisitor;
     }
 
diff --git 
a/jena-shex/src/main/java/org/apache/jena/shex/parser/ParserShExC.java 
b/jena-shex/src/main/java/org/apache/jena/shex/parser/ParserShExC.java
index 30536733b1..706122f240 100644
--- a/jena-shex/src/main/java/org/apache/jena/shex/parser/ParserShExC.java
+++ b/jena-shex/src/main/java/org/apache/jena/shex/parser/ParserShExC.java
@@ -368,8 +368,6 @@ public class ParserShExC extends LangParserBase {
     protected void finishShapeDefinition(TripleExpression tripleExpr, 
List<Node> extras, boolean closed, List<SemAct> semActs) {
         if ( tripleExpr == null )
             return;
-            // XXX [Print] Below causes "{ ; }"
-            //tripleExpr = TripleExprNone.get();
         ShapeExprTripleExpr shape = ShapeExprTripleExpr.newBuilder()
                 //.label(???)
                 .closed(closed)
@@ -435,7 +433,6 @@ public class ParserShExC extends LangParserBase {
     }
 
     protected void finishTripleConstraint(Node label, int idx, Node predicate, 
boolean reverse, Cardinality cardinality, List<SemAct> semActs) {
-        if ( label != null ) { /*ref*/ } // XXX
         List<ShapeExpression> args = finishShapeOp(idx);
         if ( args == null )
             throw new InternalErrorException("TripleConstraint with null 
argument ShapeExpression.");
@@ -452,7 +449,6 @@ public class ParserShExC extends LangParserBase {
     }
 
     // ---- Node Constraints.
-    // XXX [ NodeConstraint] Do we need the different constraints here?
 
     protected int startLiteralNodeConstraint(int line, int column) {
         startNodeConstraint();
diff --git a/jena-shex/src/main/java/org/apache/jena/shex/parser/ShExC.java 
b/jena-shex/src/main/java/org/apache/jena/shex/parser/ShExC.java
index 16c0f985ab..f8fde14b93 100644
--- a/jena-shex/src/main/java/org/apache/jena/shex/parser/ShExC.java
+++ b/jena-shex/src/main/java/org/apache/jena/shex/parser/ShExC.java
@@ -214,7 +214,6 @@ public class ShExC {
             NodeConstraint nc = shape.getNodeConstraint();
             if ( nc == null )
                 return;
-            // XXX [NodeConstraint]
             DatatypeConstraint dtConstraint = null;
             Set<StrLengthKind> x = new HashSet<>(3);
             for ( NodeConstraintComponent expr: nc.components() ) {
diff --git a/jena-shex/src/main/java/org/apache/jena/shex/sys/ShexLib.java 
b/jena-shex/src/main/java/org/apache/jena/shex/sys/ShexLib.java
index 6d8a096037..29a4633e09 100644
--- a/jena-shex/src/main/java/org/apache/jena/shex/sys/ShexLib.java
+++ b/jena-shex/src/main/java/org/apache/jena/shex/sys/ShexLib.java
@@ -87,20 +87,6 @@ public class ShexLib {
         shExpr.visit(walker);
     }
 
-
-    // XXX Does this make sense?
-//    private static void walk(ShapeExpression shExpr,
-//                             ShapeExprVisitor beforeVisitor, 
ShapeExprVisitor afterVisitor,
-//                             //TripleExprVisitor 
beforeTripleExpressionVisitor, TripleExprVisitor afterTripleExpressionVisitor,
-//                             //NodeConstraint beforeNodeConstraintVisitor, 
NodeConstraint afterNodeConstraintVisitor
-//                             NodeConstraintVisitor 
beforeNodeConstraintVisitor, NodeConstraint afterNodeConstraintVisitor
-//                            ) {
-//        ShapeExprWalker walker = new ShapeExprWalker(beforeVisitor, 
afterVisitor,
-//                                                     
beforeTripleExpressionVisitor, afterTripleExpressionVisitor,
-//                                                     
beforeNodeConstraintVisitor, afterNodeConstraintVisitor);
-//        shExpr.visit(walker);
-//    }
-
     private static PrefixMap displayPrefixMap = 
PrefixMapFactory.createForOutput();
     private static NodeFormatter nodeFmtAbbrev = new NodeFormatterTTL(null, 
displayPrefixMap);
 
diff --git 
a/jena-shex/src/main/java/org/apache/jena/shex/writer/WriterShExC.java 
b/jena-shex/src/main/java/org/apache/jena/shex/writer/WriterShExC.java
index 9f3ecf942d..18f9d5b3d1 100644
--- a/jena-shex/src/main/java/org/apache/jena/shex/writer/WriterShExC.java
+++ b/jena-shex/src/main/java/org/apache/jena/shex/writer/WriterShExC.java
@@ -67,8 +67,6 @@ public class WriterShExC {
         boolean printNL = hasHeader;
         NodeFormatter formatter = new NodeFormatterTTL(schema.getBase(), 
schema.getPrefixMap());
 
-        // XXX [Print] printNL needs to flow across calls.
-        //PrintCxt cxt = new PrintCxt(out, schema.getBase(), 
schema.getPrefixMap());
         schema.getShapes().forEach( shape->print(out, formatter, shape, 
printNL) );
     }
 
diff --git 
a/jena-tdb1/src/main/java/org/apache/jena/tdb1/base/file/BlockAccessBase.java 
b/jena-tdb1/src/main/java/org/apache/jena/tdb1/base/file/BlockAccessBase.java
index 4e52c565d7..098e1b0a27 100644
--- 
a/jena-tdb1/src/main/java/org/apache/jena/tdb1/base/file/BlockAccessBase.java
+++ 
b/jena-tdb1/src/main/java/org/apache/jena/tdb1/base/file/BlockAccessBase.java
@@ -30,11 +30,11 @@ import org.apache.jena.tdb1.sys.SystemTDB;
 import org.slf4j.Logger ;
 
 /** Support for a disk file backed FileAccess */
-public abstract class BlockAccessBase implements BlockAccess 
+public abstract class BlockAccessBase implements BlockAccess
 {
     protected final int blockSize ;
-    protected final FileBase file ; 
-    
+    protected final FileBase file ;
+
     protected final String label ;
     protected long numFileBlocks = -1 ;             // Don't overload use of 
this!
     protected final AtomicLong seq ;                // Id (future)
@@ -47,7 +47,7 @@ public abstract class BlockAccessBase implements BlockAccess
         this.label = FileOps.basename(filename) ;
         long filesize = file.size() ;               // This is not related to 
used file length in mapped mode.
         long longBlockSize = blockSize ;
-            
+
         numFileBlocks = filesize/longBlockSize ;    // This is not related to 
used file length in mapped mode.
         seq = new AtomicLong(numFileBlocks) ;
 
@@ -64,9 +64,9 @@ public abstract class BlockAccessBase implements BlockAccess
     protected abstract Logger getLog()  ;
     @Override
     final public boolean isEmpty() { return isEmpty ; }
-    
+
     final protected void writeNotification(Block block) { isEmpty = false ; }
-    
+
     final protected void overwriteNotification(Block block)
     {
         // Write at end => extend
@@ -77,18 +77,18 @@ public abstract class BlockAccessBase implements BlockAccess
         }
     }
 
-    
-    //@Override 
+
+    //@Override
     final
-    //public 
+    //public
     protected int allocateId()
     {
         checkIfClosed() ;
         int id = (int)seq.getAndIncrement() ;
-        numFileBlocks ++ ;  // TODO Fix this when proper freeblock management 
is introduced.
+        numFileBlocks ++ ;
         return id ;
     }
-    
+
     @Override
     final synchronized
     public boolean valid(long id)
@@ -98,7 +98,7 @@ public abstract class BlockAccessBase implements BlockAccess
             return false ;
         if ( id < 0 )
             return false ;
-        return true ; 
+        return true ;
     }
 
     final
@@ -106,7 +106,7 @@ public abstract class BlockAccessBase implements BlockAccess
     {
         if ( id > Integer.MAX_VALUE )
             throw new BlockException(format("BlockAccessBase: Id (%d) too 
large", id )) ;
-        
+
         // Access to numFileBlocks not synchronized - it's only a check
         if ( id < 0 || id >= numFileBlocks )
         {
@@ -118,7 +118,7 @@ public abstract class BlockAccessBase implements BlockAccess
             }
         }
     }
-    
+
     final protected void check(Block block)
     {
         check(block.getId()) ;
@@ -133,17 +133,17 @@ public abstract class BlockAccessBase implements 
BlockAccess
     {
         file.sync() ;
     }
-    
+
     //@Override
-    final public boolean isClosed() { return file.channel() == null ; }  
-    
-    protected final void checkIfClosed() 
-    { 
-        if ( isClosed() ) 
+    final public boolean isClosed() { return file.channel() == null ; }
+
+    protected final void checkIfClosed()
+    {
+        if ( isClosed() )
             getLog().error("File has been closed") ;
     }
-    
-    protected abstract void _close() ; 
+
+    protected abstract void _close() ;
 
     @Override
     final public void close()
@@ -151,7 +151,7 @@ public abstract class BlockAccessBase implements BlockAccess
         _close() ;
         file.close() ;
     }
-    
+
     @Override
     public String getLabel()
     {
diff --git 
a/jena-tdb1/src/main/java/org/apache/jena/tdb1/index/ext/ExtHash.java 
b/jena-tdb1/src/main/java/org/apache/jena/tdb1/index/ext/ExtHash.java
index 40fa5978ac..ec1ac0bfec 100644
--- a/jena-tdb1/src/main/java/org/apache/jena/tdb1/index/ext/ExtHash.java
+++ b/jena-tdb1/src/main/java/org/apache/jena/tdb1/index/ext/ExtHash.java
@@ -55,53 +55,53 @@ public final class ExtHash implements Index
      * Extendible hashing is based on taking more of the bits of the hash
      * value to address an expanding dictionary.  This is a bit-trie, stored
      * as an array.  One bucket can be used for several hash slots.
-     * 
+     *
      * We need that the bits are used in decreasing signifance because we
      * keep items in buckets in full-hash sorted order.
-     * 
+     *
      * Side effect: the whole structure is sorted by full hash, using
-     * dictionary and buckets.   
-     * 
+     * dictionary and buckets.
+     *
      * But.
      * Java .hashCode() does not make suitable hash directly because either
      * they are Object.hashCode (not too bad but it tends not to use high 
bits) or
      * something like Integer.hashCode is the integer value itself.  The
      * latter is very bad as the hash is not using the high bits (most
-     * integers are small - especially sequentially allocated numbers).  
-     * 
-     * Solution: use the hashCode, 31 bits (arrays indexes are signed) 
+     * integers are small - especially sequentially allocated numbers).
+     *
+     * Solution: use the hashCode, 31 bits (arrays indexes are signed)
      * but bit reversed so low bits of the original value are the most
      * significant (when shorter than the currect hash, it's the low bits
      * that are used).
-     * 
-     *  
-     * 
+     *
+     *
+     *
      * Example: using hex chars, not bits.
-     * 
+     *
      * Record: key: 0xABCD
      *   Length = 1 ==> trie is D
-     * if the length changes from 1 to 2, 
+     * if the length changes from 1 to 2,
      *   Length = 2 ==> trie is DC, that is, the D is most significant.
      * and all buckets Dx point to what was in slot for D.
-     * 
+     *
      * All hash handling is encapulated in the internal routines.
      */
 
     static private Logger log = LoggerFactory.getLogger(ExtHash.class) ;
 
     // Production: make these final and false.
-    public static boolean Debugging = false ;       
+    public static boolean Debugging = false ;
     public static boolean Checking = false ;        // Perform internal 
checking
     public static boolean Logging = false ;         // Allow any logging code 
on critical paths
-    
-    IntBuffer dictionary ;      // mask(hash) -> Bucket id 
-    // Current length of trie bit used.  Invariant: dictionary.length = 
1<<bitLen 
+
+    IntBuffer dictionary ;      // mask(hash) -> Bucket id
+    // Current length of trie bit used.  Invariant: dictionary.length = 
1<<bitLen
     private int bitLen = 0 ;
-    
+
     private final HashBucketMgr hashBucketMgr ;
     private final RecordFactory recordFactory ;
     private final PlainFile dictionaryFile ;
-    
+
     /** Testing version - in-memory but inefficient as it uses a 
copy-in/copy-out block manager as a RAM disk*/
     static public ExtHash createMem(RecordFactory factory, int bucketSizeBytes 
)
     {
@@ -109,23 +109,23 @@ public final class ExtHash implements Index
         ExtHash eHash = new ExtHash(new PlainFileMem(), factory, mgr) ;
         return eHash ;
     }
-    
-    public ExtHash(PlainFile dictionaryBackingFile,  
+
+    public ExtHash(PlainFile dictionaryBackingFile,
                    RecordFactory recordFactory, BlockMgr blockMgrHashBuckets)
     {
         this.dictionaryFile = dictionaryBackingFile ;
         // Start bigger?
         int dictionarySize = 1 ;
         dictionary = dictionaryFile.ensure(SystemTDB.SizeOfInt).asIntBuffer() ;
-        this.recordFactory = recordFactory ; 
-        
+        this.recordFactory = recordFactory ;
+
         hashBucketMgr = new HashBucketMgr(recordFactory, blockMgrHashBuckets) ;
         hashBucketMgr.valid(0) ;
-        
+
         // Did it exist?
         if ( hashBucketMgr.valid(0) )
         {
-            
+
         }
         else
         {
@@ -133,12 +133,12 @@ public final class ExtHash implements Index
 //            if ( id != 0 )
 //                throw new StorageException("ExtHash: First bucket is not id 
zero") ;
             HashBucket hb = hashBucketMgr.create(0, 0) ;
-            dictionary.put(0, hb.getId()) ;    
+            dictionary.put(0, hb.getId()) ;
             bitLen = 0 ;
             hashBucketMgr.put(hb) ;
         }
     }
-    
+
     // =====================
     // Hashing routines for converting to a bit-trie (i.e. lowest bit
     // is most significant in the trie).
@@ -147,29 +147,29 @@ public final class ExtHash implements Index
 
     // Use 31 bits (not the top hashCode bit) because array indexes are signed 
32bit.
 
-    // See java.util.HashMap#hash for discussion of supplemental hashing. 
+    // See java.util.HashMap#hash for discussion of supplemental hashing.
 
     interface HashRecordKey { public int hashCode(byte[] key) ; }
     private HashRecordKey hashFunction = hashFNV ; //hash4bytes ;
-    
-    // Hash function that is the first 4 bytes of the key (key must be at 
least 4 bytes long). 
+
+    // Hash function that is the first 4 bytes of the key (key must be at 
least 4 bytes long).
     static HashRecordKey hash4bytes = new HashRecordKey(){
         @Override
         public final int hashCode(byte[] key)
         { return Bytes.getInt(key) ; }
     } ;
-    
-    /** From Project Voldemort / Apache License / Thanks! 
-     *  who in turn got it from 
-     *  
+
+    /** From Project Voldemort / Apache License / Thanks!
+     *  who in turn got it from
+     *
      *  Taken from http://www.isthe.com/chongo/tech/comp/fnv
-     * 
-     * hash = basis for each octet_of_data to be hashed hash 
+     *
+     * hash = basis for each octet_of_data to be hashed hash
      *      = hash * FNV_prime hash
      *      = hash xor octet_of_data return hash
-     * 
+     *
      */
-    
+
     static HashRecordKey hashFNV = new HashRecordKey(){
         private static final long FNV_BASIS = 0x811c9dc5;
         private static final long FNV_PRIME = (1 << 24) + 0x193;
@@ -185,36 +185,36 @@ public final class ExtHash implements Index
             return (int) hash;
         }
     } ;
-    
 
-    /** Turn a key into a bit trie hash value */ 
-    private int trieKey(Record k)             
-    { 
+
+    /** Turn a key into a bit trie hash value */
+    private int trieKey(Record k)
+    {
         // ***** Record key to hash: high bits most significant
         // Does not have to be a perfect hash.
         int x = hashFunction.hashCode(k.getKey()) ;
         return Integer.reverse(x)>>>1 ;
     }
-        
-    /** Calculate the array index for a key given the dictionary bit length */ 
+
+    /** Calculate the array index for a key given the dictionary bit length */
     private int trieKey(Record key, int bitLen)     { return 
trieKey(trieKey(key), bitLen) ; }
-    
-    /** Convert from full hash to array index for a dictionary bit length */ 
+
+    /** Convert from full hash to array index for a dictionary bit length */
     private int trieKey(int fullTrie, int bitLen)   { return fullTrie >>> 
(31-bitLen) ; }
 
-    /** Calculate the bucket id for a key given the dictionary bit length */ 
+    /** Calculate the bucket id for a key given the dictionary bit length */
     private int bucketId(Record key, int bitLen)
-    { 
+    {
         int x = trieKey(trieKey(key), bitLen) ;
         int id = dictionary.get(x) ;
         return id ;
     }
-    
+
     /** Size of the file, in bytes */
-    private static long filesize(int dictionarySize) { return 
4L*dictionarySize ; }  
+    private static long filesize(int dictionarySize) { return 
4L*dictionarySize ; }
 
     // =====================
-    
+
     private void resizeDictionary()
     {
         int oldSize = 1<<bitLen ;
@@ -225,7 +225,7 @@ public final class ExtHash implements Index
             log(">>>>Resize") ;
             log("resize: %d ==> %d", oldSize, newSize) ;
         }
-        
+
         IntBuffer newDictionary = 
dictionaryFile.ensure(newSize*SystemTDB.SizeOfInt).asIntBuffer() ;
         if ( dictionary != null )
         {
@@ -233,25 +233,25 @@ public final class ExtHash implements Index
             // NB Fills from high to low so that it works "in place"
             for ( int i = oldSize-1 ; i>=0 ; i-- )
             {
-                int b = newDictionary.get(i) ; 
+                int b = newDictionary.get(i) ;
                 //if ( logging() ) log("Resize: put: (%d, %d)", 2*i, b) ;
-                newDictionary.put(2*i, b) ; 
-                newDictionary.put(2*i+1, b) ; 
+                newDictionary.put(2*i, b) ;
+                newDictionary.put(2*i+1, b) ;
             }
         }
-        
+
         dictionary = newDictionary ;
         bitLen = newBitLen ;
 
         if ( logging() )
         {
             if ( false ) dump() ;
-            if ( false ) log(this) ; 
+            if ( false ) log(this) ;
             log("<<<<Resize") ;
         }
         internalCheck() ;
     }
-    
+
     // =====================
 
     // Used by the iterator
@@ -259,26 +259,26 @@ public final class ExtHash implements Index
     {
         return  dictionary.get(dictionaryIdx) ;
     }
-    
-    
+
+
     final HashBucket getBucket(int blockId)
     {
         return hashBucketMgr.get(blockId) ;
     }
-    
+
     public final int dictionarySize()
     {
         return dictionary.capacity() ;
     }
-    
+
     // =====================
-    
+
     @Override
     public boolean contains(Record key)
     {
         return find(key) != null ;
     }
-    
+
     @Override
     public Record find(Record key)
     {
@@ -290,7 +290,7 @@ public final class ExtHash implements Index
         return value ;
     }
 
-    
+
     @Override
     public boolean add(Record record)
     {
@@ -305,7 +305,7 @@ public final class ExtHash implements Index
         internalCheck() ;
         return b ;
     }
-        
+
     @Override
     public boolean delete(Record record)
     {
@@ -327,12 +327,12 @@ public final class ExtHash implements Index
     @Override
     public Iterator<Record> iterator()
     {
-        return new ExtHashIterator(this) ; 
+        return new ExtHashIterator(this) ;
     }
 
     @Override
     public boolean isEmpty()
-    { 
+    {
        if ( dictionary.limit() == 1 )
        {
            HashBucket b = hashBucketMgr.get(1) ;
@@ -341,7 +341,7 @@ public final class ExtHash implements Index
        // No idea.
        return false ;
     }
-    
+
     @Override
     public void clear()
     { throw new 
UnsupportedOperationException("RangeIndex("+Lib.classShortName(this.getClass())+").clear")
 ; }
@@ -369,7 +369,7 @@ public final class ExtHash implements Index
 
     @Override
     public void sync()
-    { 
+    {
         hashBucketMgr.getBlockMgr().sync() ;
         dictionaryFile.sync() ;
     }
@@ -383,26 +383,26 @@ public final class ExtHash implements Index
 
     // =====================
     // Insert
-    
+
     // Reentrant part of "put"
-    private boolean put(Record record, int hash)  
+    private boolean put(Record record, int hash)
     {
         if ( logging() ) log("put(%s,0x%08X)", record, hash) ;
         int dictIdx = trieKey(hash, bitLen) ;       // Dictionary index
         int blockId = dictionary.get(dictIdx) ;
-        
+
         HashBucket bucket = hashBucketMgr.get(blockId) ;
-        
+
         if ( ! bucket.isFull() )
         {
-            if ( Debugging ) log("Insert [(0x%04X) %s]: %d", hash, record, 
bucket.getId()) ; 
+            if ( Debugging ) log("Insert [(0x%04X) %s]: %d", hash, record, 
bucket.getId()) ;
             boolean b = bucket.put(record) ;
             hashBucketMgr.put(bucket) ;
             return b ;
         }
 
-        //Is this and +1 the same?  Is the block splitable? 
-        
+        //Is this and +1 the same?  Is the block splitable?
+
         // Bucket full.
         if (  bitLen == bucket.getTrieBitLen() )
         {
@@ -413,39 +413,37 @@ public final class ExtHash implements Index
             boolean oldDebugging = Debugging ;
             try {
 //                Logging = true ;
-//                Debugging = true ; 
-                
-                if ( Debugging ) 
-                { 
-                    log("Bucket full: %d", bucket.getId()) ; 
+//                Debugging = true ;
+
+                if ( Debugging )
+                {
+                    log("Bucket full: %d", bucket.getId()) ;
                     log("Bucket can't be split - dictionary resize needed") ;
                     //log(bucket) ;
                     this.dump() ;
                 }
-            
+
                 // Bucket not splitable..
-                // TODO Overflow buckets.
-                
                 // Expand the dictionary.
                 int x = dictionarySize() ;
                 resizeDictionary() ;
-                if ( Debugging ) log("Resize: %d -> %d", x, dictionarySize()) 
; 
+                if ( Debugging ) log("Resize: %d -> %d", x, dictionarySize()) ;
                 // Try again
                 return put(record, hash) ;
-            } finally { Logging = oldLogging ; Debugging = oldDebugging ;} 
+            } finally { Logging = oldLogging ; Debugging = oldDebugging ;}
         }
 
         if ( Debugging ) log("Split bucket: %d", bucket.getId()) ;
-        
+
         // bitLen >  bucket.getHashBitLen() : bucket can be split
         splitAndReorganise(bucket, dictIdx, blockId, hash) ;
-        
+
         // Reorg done - try again.
         return put(record, hash) ;
     }
 
 
-    // Bucket bitlength is less than that of the dictionary. 
+    // Bucket bitlength is less than that of the dictionary.
     private void splitAndReorganise(HashBucket bucket, int dictionaryIdx, int 
bucketId, int hash)
     {
         if ( logging() )
@@ -465,7 +463,7 @@ public final class ExtHash implements Index
                       dictionaryIdx, hash, trieKey(hash, 
bucket.getTrieBitLen()), bucket.getTrieValue(), bucket) ;
         }
 
-        // Bucket did not have a full length hash so split it. 
+        // Bucket did not have a full length hash so split it.
         // Find the companion slots.
         // Remember before messing with split.
         int bucketHash = bucket.getTrieValue() ;
@@ -474,45 +472,45 @@ public final class ExtHash implements Index
         // Split the bucket in two.  bucket2 is the upper bucket.
         HashBucket bucket2 = split(bucketId, bucket) ;
 
-        // Determine the slots affected: 
+        // Determine the slots affected:
         // All the dictionary entries that in the extension of the bit trie, 
have a 1
         // in the newly exposed bit.  These will point to bucket2.
         // All the slots for bit 0 will continue to point to the existing 
(reorganised) bucket.
-        
+
         // The hash is reversed (the low bits the hash value are most 
significant).
         // So extending a hash is shift up, and OR in a 0 or 1.
-        // Zeros in the difference the bucket bit length and the dictionary 
bitlength. 
-        
-        // Upper section of bucket hash, extended, then the gap in lengths 
zero filled. 
+        // Zeros in the difference the bucket bit length and the dictionary 
bitlength.
+
+        // Upper section of bucket hash, extended, then the gap in lengths 
zero filled.
         int trieUpperRoot = ((bucketHash<<1)|0x1) << 
(bitLen-bucketHashLength-1) ;
-        
+
         // Upper bound (exclusive) of values affected between dictionary and 
current bucket.
         // NB relationship to the second shift on trieUpperRoot
         int trieUpperRange = (1<<(bitLen-bucketHashLength-1)) ;
-        
+
         for ( int j = 0 ; j < trieUpperRange ; j++ )
         {
             // j runs over the values of the unused bits of the trie start for 
the upper bucket positions.
             int k = trieUpperRoot | j ;
             if ( logging() )
                 log("Point to split bucket: 0x%04X", k) ;
-            
+
             if ( Checking )
             {
                 if ( (trieUpperRoot&j) != 0 )
                     error("put: idx=%d : trieRoot=0x%X, sub=%d: Broken trie 
pattern ", dictionaryIdx, trieUpperRoot, j) ;
-                
+
                 if ( ! BitsLong.isSet(k, (bitLen-(bucketHashLength+1)) ) )
                     error("put: Broken trie pattern (0x%X,%d)", trieUpperRoot, 
j) ;
-                
+
                 // We should looking at the original bucket
                 int id = dictionary.get(k) ;
                 HashBucket hb = hashBucketMgr.get(id) ;
-                
+
                 if ( hb.getId() != bucket.getId() )
                     error("put: Wrong bucket at trie 0x%X %d: (%d,%d)", 
trieUpperRoot, j, hb.getId(), bucket.getId()) ;
             }
-            
+
             dictionary.put(k, bucket2.getId()) ;
         }
         if ( logging() )
@@ -521,7 +519,7 @@ public final class ExtHash implements Index
             if ( false ) dump() ;
         }
     }
-    
+
     private HashBucket split(int bucketId, HashBucket bucket)
     {
         // idx is the array offset to the lower of the bucket point pair.
@@ -530,37 +528,37 @@ public final class ExtHash implements Index
             log("split: Bucket %d : size: %d; Bucket bitlength %d", bucketId, 
bucket.getCount(), bucket.getTrieBitLen()) ;
             log("split: %s", bucket) ;
         }
-        
+
         // Create new bucket, which will be the upper bucket.
-        // Low bucket will have the old hash value, 
+        // Low bucket will have the old hash value,
         // Lengthen the hash; the new will be one more.
-        
+
         bucket.incTrieBitLen() ;
-        
-        // Bucket hash value is kept in index-order (i.e. high bits are most 
significant). 
+
+        // Bucket hash value is kept in index-order (i.e. high bits are most 
significant).
         int hash1 = bucket.getTrieValue() << 1 ;
         int hash2 = (bucket.getTrieValue() << 1) | 0x1 ;
-        
+
         // Reset, now it's longer
         bucket.setTrieValue(hash1) ;
-        
-        if ( logging() ) 
+
+        if ( logging() )
             log("split: bucket hashes 0x%04X 0x%04X", hash1, hash2) ;
 
 //        // New bucket
         HashBucket bucket2 = hashBucketMgr.create(hash2, 
bucket.getTrieBitLen()) ;
-        
+
         if ( logging() ) log("New bucket: %s", bucket2) ;
         //bucket2.setTrieValue(hash2) ;
-        
+
         RecordBuffer rBuff1 = bucket.getRecordBuffer() ;
         RecordBuffer rBuff2 = bucket2.getRecordBuffer() ;
         int idx1 = 0 ;  // Destination indexes into the above
         int idx2 = 0 ;
-        
+
         for ( int i = 0 ; i < rBuff1.size() ; i++ )
         {
-            Record r = rBuff1.get(i) ; 
+            Record r = rBuff1.get(i) ;
             int x = trieKey(r, bucket.getTrieBitLen()) ;  // Incremented bit 
length
             if ( x == hash1 )
             {
@@ -568,10 +566,10 @@ public final class ExtHash implements Index
                     log("Allocate index %d to bucket1", i) ;
                 // idx1 <= i (we are writing less records back).
                 // So this foes not interfer with the loop
-                // We're shifting down records that saty in this bucket.  
+                // We're shifting down records that saty in this bucket.
                 if ( idx1 != i )
                     rBuff1.set(idx1, r) ;
-                idx1++ ; 
+                idx1++ ;
             }
             else if ( x == hash2 )
             {
@@ -583,25 +581,25 @@ public final class ExtHash implements Index
             else
                 error("Bad trie for allocation to split buckets") ;
         }
-        
+
         if ( true )
             rBuff1.clear(idx1, bucket.getCount()-idx1)  ;
         rBuff1.setSize(idx1) ;
         // rBuff2 was fresh so still clean.
-        
+
         if ( logging() )
         {
             log("split: Lower bucket: %s", bucket) ;
             log("split: Upper bucket: %s", bucket2) ;
         }
-        
+
         // Check with splitAndReorganise()
         hashBucketMgr.put(bucket) ;
         hashBucketMgr.put(bucket2) ;
-        
+
         return bucket2 ;
     }
-    
+
     // =====================
 
     @Override
@@ -610,15 +608,15 @@ public final class ExtHash implements Index
         IndentedLineBuffer buff = new IndentedLineBuffer() ;
         dump(buff) ;
         return buff.asString() ;
-    }        
-        
+    }
+
     public void dump()
     {
         dump(IndentedWriter.stdout) ;
         IndentedWriter.stdout.ensureStartOfLine() ;
         IndentedWriter.stdout.flush() ;
     }
-    
+
     private void dump(IndentedWriter out)
     {
         out.printf("Bitlen      = %d\n" , bitLen) ;
@@ -633,25 +631,25 @@ public final class ExtHash implements Index
         }
         out.decIndent(4) ;
     }
-    
+
     @Override
     public void check()
     {
         performCheck() ;
     }
-        
+
     private final void internalCheck()
     {
         if ( Checking )
             performCheck() ;
     }
-    
+
     private final void performCheck()
     {
         int len = 1<<bitLen ;
         int d = dictionary.limit() ;
         //int d = (dictionary.limit()/4) ;
-        
+
         if ( len != d )
             error("Dictionary size = %d : expected = %d", d, len) ;
 
@@ -661,14 +659,14 @@ public final class ExtHash implements Index
             int id = dictionary.get(i) ;
             if ( seen.contains(id) )
                 continue ;
-            
+
             seen.add(id) ;
             HashBucket bucket = hashBucketMgr.get(id) ;
             performCheck(i, bucket) ;
-            
+
         }
     }
-    
+
     private void performCheck(int idx, HashBucket bucket)
     {
         if ( bucket.getTrieBitLen() > bitLen )
@@ -679,7 +677,7 @@ public final class ExtHash implements Index
         int tmp = (idx >>> (bitLen-bucket.getTrieBitLen())) ;
         if ( tmp != bucket.getTrieValue())
             error("[%d] Bucket %d : hash prefix 0x%X, expected 0x%X : %s", 
idx, bucket.getId(), bucket.getTrieValue(), tmp, bucket) ;
-        
+
         // Check the contents.
         Record prevKey = Record.NO_REC ;
         for ( int i = 0 ; i < bucket.getCount() ; i++ )
@@ -694,7 +692,7 @@ public final class ExtHash implements Index
                 error("[%d] Bucket %d: Key (0x%04X) does not match the hash 
(0x%04X) : %s",
                              idx, bucket.getId(), x, bucket.getTrieValue(), 
bucket) ;
         }
-        
+
         if ( SystemTDB.NullOut )
         {
             for ( int i = bucket.getCount() ; i < bucket.getMaxSize() ; i++ )
@@ -711,14 +709,14 @@ public final class ExtHash implements Index
         log.error(msg) ;
         throw new StorageException(msg) ;
     }
-    
+
     private final boolean logging() { return Logging /* && 
log.isDebugEnabled()*/ ; }
     private final void log(String format, Object... args)
     {
         //if ( ! logging() ) return ;
         log.debug(format(format, args)) ;
     }
-    
+
     private final void log(Object obj)
     {
         //if ( ! logging() ) return ;
diff --git 
a/jena-tdb1/src/main/java/org/apache/jena/tdb1/setup/DatasetBuilderStd.java 
b/jena-tdb1/src/main/java/org/apache/jena/tdb1/setup/DatasetBuilderStd.java
index aa743ec121..405febdf22 100644
--- a/jena-tdb1/src/main/java/org/apache/jena/tdb1/setup/DatasetBuilderStd.java
+++ b/jena-tdb1/src/main/java/org/apache/jena/tdb1/setup/DatasetBuilderStd.java
@@ -164,7 +164,6 @@ public class DatasetBuilderStd {
         this.blockMgrBuilder = blockMgrBuilder;
         this.objectFileBuilder = objectFileBuilder;
         this.recorder = new Recorder();
-        // XXX YUK
         setupRecord();
     }
 
@@ -204,9 +203,6 @@ public class DatasetBuilderStd {
     private static String DB_CONFIG_FILE = "tdb.cfg";
 
     // Main engine for building.
-    // Called by DatasetBuilderTxn
-    // XXX Rework - provide a cloning constructor (copies maps).
-    // Or "reset"
     public DatasetGraphTDB _build(Location location, StoreParams params, 
boolean writeable, ReorderTransformation _transform) {
         return buildWorker(location, writeable, _transform, params);
     }
diff --git 
a/jena-tdb1/src/main/java/org/apache/jena/tdb1/store/DateTimeNode.java 
b/jena-tdb1/src/main/java/org/apache/jena/tdb1/store/DateTimeNode.java
index ea07c3cd12..e2a00b8fd8 100644
--- a/jena-tdb1/src/main/java/org/apache/jena/tdb1/store/DateTimeNode.java
+++ b/jena-tdb1/src/main/java/org/apache/jena/tdb1/store/DateTimeNode.java
@@ -37,10 +37,10 @@ public class DateTimeNode
 
     // Layout:
     // Bits 56-63 : type
-    
+
     // Bits 49-55 (7 bits)  : timezone -- 15 min precision + special for Z and 
no timezone.
     // Bits 27-48 (22 bits) : date, year is 13 bits = 8000 years  (0 to 7999)
-    // Bits 0-26  (27 bits) : time, to milliseconds 
+    // Bits 0-26  (27 bits) : time, to milliseconds
 
     // Layout:
     // Hi: TZ YYYY MM DD HH MM SS.sss Lo:
@@ -48,7 +48,7 @@ public class DateTimeNode
     // Const-ize
     static final int DATE_LEN = 22 ;    // 13 bits year, 4 bits month, 5 bits 
day => 22 bits
     static final int TIME_LEN = 27 ;    // 5 bits hour + 6 bits minute + 16 
bits seconds (to millisecond)
-    
+
     static final int MILLI = 0 ;
     static final int MILLI_LEN = 16 ;
 
@@ -58,17 +58,17 @@ public class DateTimeNode
     static final int HOUR = MILLI_LEN + MINUTES_LEN ;
     static final int HOUR_LEN = 5 ;
 
-    
+
     static final int DAY = TIME_LEN  ;
     static final int DAY_LEN = 5 ;
 
     static final int MONTH = TIME_LEN + DAY_LEN ;
     static final int MONTH_LEN = 4 ;
-    
+
     static final int YEAR = TIME_LEN + MONTH_LEN + DAY_LEN ;
     static final int YEAR_LEN = 13 ;
-    
-    
+
+
     static final int TZ = TIME_LEN + DATE_LEN ;
     static final int TZ_LEN = 7 ;
     static final int TZ_Z = 0x7F ;      // Value for Z
@@ -76,7 +76,7 @@ public class DateTimeNode
 
     // JENA-1537: The Xerces 2.11.0 DatatypeFactory gets T24:00:00 right.
     static DatatypeFactory datatypeFactory = 
DatatypeFactoryInst.newDatatypeFactory();
-    
+
     // Packed in correct place.
     static long time(long v, int hour, int mins, int millisec)
     {
@@ -87,7 +87,7 @@ public class DateTimeNode
         v = BitsLong.pack(v, millisec, MILLI, MILLI+MILLI_LEN) ;
         return v ;
     }
-    
+
     // Packed in correct place.
     static long date(long v, int year, int month, int day)
     {
@@ -97,7 +97,7 @@ public class DateTimeNode
         v = BitsLong.pack(v, day,  DAY, DAY+DAY_LEN) ;
         return v ;
     }
-    
+
     static long tz(long v, int tz_in_quarters)
     {
         v = BitsLong.pack(v, tz_in_quarters, TZ, TZ+TZ_LEN);
@@ -105,7 +105,7 @@ public class DateTimeNode
     }
 
     // From string.  Assumed legal.  Retains all info this way.
-    // returns -1 for unpackable. 
+    // returns -1 for unpackable.
     public static long packDate(String lex)
     {
         return packDateTime(lex) ;
@@ -113,24 +113,24 @@ public class DateTimeNode
 
     // From string.  Assumed legal.
     // Returns -1 for unpackable.
-    
+
     public static long packDateTime(String lex)
-    { 
+    {
         try { return packDateTime$(lex) ; }
         catch (Exception ex) { return -1 ; }
     }
-    
+
     private static long packDateTime$(String lex)
     {
         long v = 0 ;
         // Whitespace facet processing.
         lex = lex.trim() ;
-        
+
         boolean containsZ = (lex.indexOf('Z') > 0 ) ;
         XMLGregorianCalendar xcal = 
datatypeFactory.newXMLGregorianCalendar(lex) ;
-        
+
         if ( xcal.getFractionalSecond() != null )
-        { 
+        {
             BigDecimal fs = xcal.getFractionalSecond() ;
             // Were there sub-millisecond resolution fractional seconds?
             // This isn't perfect but it needs a very long fractional part to 
break it,
@@ -138,26 +138,26 @@ public class DateTimeNode
             if ( fs.doubleValue() != xcal.getMillisecond()/1000.0 )
                 return -1 ;
         }
-        
+
         int y = xcal.getYear() ;
-        
+
         if ( y < 0 || y >= 8000 )
             return -1 ;
-        
+
         v = date(v, xcal.getYear(), xcal.getMonth(), xcal.getDay() ) ;
         v = time(v, xcal.getHour(), xcal.getMinute(), 
xcal.getSecond()*1000+xcal.getMillisecond()) ;
-        
+
         if ( containsZ )
             return tz(v, TZ_Z) ;
-        
+
         int tz = xcal.getTimezone() ;
         if ( tz == DatatypeConstants.FIELD_UNDEFINED )
             return tz(v, TZ_NONE) ;
 
-        // Timezone is weird. 
+        // Timezone is weird.
         if ( tz%15 != 0 )
             return -1 ;
-        
+
         tz = tz/15 ;
         return tz(v, tz) ;
     }
@@ -179,17 +179,17 @@ public class DateTimeNode
         int years = (int)BitsLong.unpack(v, YEAR, YEAR+YEAR_LEN) ;
         int months = (int)BitsLong.unpack(v, MONTH, MONTH+MONTH_LEN) ;
         int days = (int)BitsLong.unpack(v, DAY, DAY+DAY_LEN) ;
-        
-        // Hours: 5, mins 6, milli 16, TZ 7 => 34 bits 
+
+        // Hours: 5, mins 6, milli 16, TZ 7 => 34 bits
         int hours = (int)BitsLong.unpack(v, HOUR, HOUR+HOUR_LEN) ;
-        int minutes = (int)BitsLong.unpack(v, MINUTES, MINUTES+MINUTES_LEN) ; 
+        int minutes = (int)BitsLong.unpack(v, MINUTES, MINUTES+MINUTES_LEN) ;
         int milliSeconds = (int)BitsLong.unpack(v, MILLI, MILLI+MILLI_LEN) ;
-        
+
         int tz = (int)BitsLong.unpack(v, TZ, TZ+TZ_LEN);
-        
+
         int sec = milliSeconds / 1000 ;
         int fractionSec = milliSeconds % 1000 ;
-        
+
         StringBuilder sb = new StringBuilder(50) ;
         NumberUtils.formatInt(sb, years, 4) ;
         sb.append('-') ;
@@ -209,14 +209,13 @@ public class DateTimeNode
             if ( fractionSec != 0 )
             {
                 sb.append(".") ;
-                // TODO Do better
                 if ( fractionSec%100 == 0 )
                     NumberUtils.formatInt(sb, fractionSec/100, 1) ;
                 else if ( fractionSec%10 == 0 )
                     NumberUtils.formatInt(sb, fractionSec/10, 2) ;
                 else
                     NumberUtils.formatInt(sb, fractionSec, 3) ;
-                
+
             }
         }
         // tz in 15min units
@@ -226,14 +225,14 @@ public class DateTimeNode
             sb.append("Z") ;
             return sb.toString();
         }
-        
+
         if ( tz == TZ_NONE )
-            return sb.toString() ; 
-            
+            return sb.toString() ;
+
         // Sign extend.
         if ( BitsLong.isSet(v, TZ+TZ_LEN-1) )
             tz = BitsInt.set(tz, TZ_LEN, 32) ;
-        
+
         if ( tz < 0 )
         {
             tz = -tz ;
@@ -241,7 +240,7 @@ public class DateTimeNode
         }
         else
             sb.append('+') ;
-            
+
         int tzH = tz/4 ;
         int tzM = (tz%4)*15 ;
         NumberUtils.formatUnsignedInt(sb, tzH, 2) ;
diff --git 
a/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/NodeIdFactory.java 
b/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/NodeIdFactory.java
index da42c4307e..cfd8acaedb 100644
--- a/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/NodeIdFactory.java
+++ b/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/NodeIdFactory.java
@@ -37,9 +37,6 @@ public class NodeIdFactory
     // On-disk: may be shorter (controlled by get/set ByteBuffer and byte[]).
     // In-memory - always int-long
 
-    // XXX Chance for a cache?
-    // See also TupleIndexRecord.
-
     private static NodeId create(NodeIdType type, int v1, long v2) {
         if ( isSpecial(type) ) {
             if ( NodeId.equals(NodeId.NodeDoesNotExist, v1, v2) )

Reply via email to