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

commit fcbe01502f5a5c760a3f0f4e6524ac9ca4d8f94f
Author: Andy Seaborne <[email protected]>
AuthorDate: Tue Nov 11 13:53:09 2025 +0000

    GH-3581: Remove deprecated classes, methods and constants (jena-arq)
---
 .../src/main/java/org/apache/jena/query/ARQ.java   |  36 +--
 .../src/main/java/org/apache/jena/query/Query.java |  11 -
 .../org/apache/jena/query/ResultSetCloseable.java  |   4 +-
 .../main/java/org/apache/jena/riot/RDFDataMgr.java |  19 +-
 .../main/java/org/apache/jena/riot/RDFParser.java  |  28 +-
 .../org/apache/jena/riot/RDFParserBuilder.java     |  64 -----
 .../src/main/java/org/apache/jena/riot/RIOT.java   |   7 -
 .../apache/jena/riot/lang/CollectorStreamBase.java |  85 ------
 .../jena/riot/lang/CollectorStreamQuads.java       |  51 ----
 .../jena/riot/lang/CollectorStreamTriples.java     |  52 ----
 .../org/apache/jena/riot/lang/IteratorParsers.java |  31 +++
 .../java/org/apache/jena/riot/lang/LangEngine.java |   6 -
 .../jena/riot/lang/extra/LangParserBase.java       |   6 -
 .../process/normalize/StreamCanonicalLiterals.java |   2 +-
 .../jena/riot/rowset/rw/RowSetReaderJSON_V1.java   | 310 ---------------------
 .../java/org/apache/jena/riot/system/Checker.java  |   7 -
 .../org/apache/jena/riot/system/JenaTitanium.java  | 187 -------------
 .../org/apache/jena/riot/system/ParserProfile.java |  12 -
 .../java/org/apache/jena/riot/web/LangTag.java     | 235 ----------------
 .../java/org/apache/jena/sparql/ARQConstants.java  |   4 +
 .../java/org/apache/jena/sparql/SystemARQ.java     |   7 -
 .../jena/sparql/core/assembler/AssemblerUtils.java |   6 -
 .../jena/sparql/engine/ExecutionContext.java       |  31 +--
 .../sparql/engine/ResultSetCheckCondition.java     | 120 --------
 .../apache/jena/sparql/engine/join/JoinKey.java    |  10 -
 .../engine/main/iterator/QueryIterService.java     |  98 -------
 .../jena/sparql/exec/http/QueryExecHTTP.java       |   9 +-
 .../org/apache/jena/sparql/expr/RegexEngine.java   |  28 +-
 .../jena/sparql/expr/nodevalue/XSDFuncOp.java      |  43 +--
 .../apache/jena/sparql/lang/SyntaxVarScope.java    |   6 -
 .../jena/sparql/resultset/ResultSetCompare.java    | 193 -------------
 .../apache/jena/sparql/service/ServiceExec.java    |   9 -
 .../jena/sparql/service/ServiceExecution.java      |  35 ---
 .../sparql/service/ServiceExecutorFactory.java     |  42 ---
 .../sparql/service/ServiceExecutorRegistry.java    |  12 -
 .../apache/jena/sparql/syntax/ElementGroup.java    |   7 -
 .../syntax/syntaxtransform/QueryTransformOps.java  |  12 -
 .../apache/jena/sparql/util/NodeFactoryExtra.java  |  34 ---
 .../java/org/apache/jena/sparql/util/Utils.java    |  53 ----
 .../org/apache/jena/sparql/util/XSDNumUtils.java   |  21 +-
 .../org/apache/jena/update/UpdateStreaming.java    |  26 --
 .../main/java/org/apache/jena/web/FileSender.java  |  85 ------
 .../java/org/apache/jena/riot/TS_RiotGeneral.java  |   2 +-
 ...iotReader.java => TestRiotParserIterators.java} |  39 +--
 .../org/apache/jena/system/TestJenaTitanium.java   |  75 -----
 .../test/service/TestCustomServiceExecutor.java    |   3 +-
 46 files changed, 132 insertions(+), 2031 deletions(-)

diff --git a/jena-arq/src/main/java/org/apache/jena/query/ARQ.java 
b/jena-arq/src/main/java/org/apache/jena/query/ARQ.java
index f8134ffa6e..4571c86690 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/ARQ.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/ARQ.java
@@ -233,12 +233,6 @@ public class ARQ
      */
     public static final Symbol useSAX = SystemARQ.allocSymbol("useSAX");
 
-    /**
-     * @deprecated Ignored
-     */
-    @Deprecated(forRemoval = true)
-    public static final boolean allowDuplicateSelectColumns = false;
-
     /**
      * Determine which regular expression system to use.
      * The value of this context entry should be a string:
@@ -250,18 +244,18 @@ public class ARQ
      */
     public static final Symbol regexImpl =  SystemARQ.allocSymbol("regexImpl");
 
-    /**
-     * Symbol to name java.util.regex regular expression engine
-     * @deprecated Use string "javaRegex"
-     */
-    @Deprecated(forRemoval = true)
-    public static final Symbol javaRegex =  SystemARQ.allocSymbol("javaRegex");
-    /**
-     * Symbol to name the Xerces-J regular expression engine
-     * @deprecated Use string "xercesRegex"
-     */
-    @Deprecated(forRemoval = true)
-    public static final Symbol xercesRegex =  
SystemARQ.allocSymbol("xercesRegex");
+//    /**
+//     * Symbol to name java.util.regex regular expression engine
+//     * @deprecated Use string "javaRegex"
+//     */
+//    @Deprecated(forRemoval = true)
+//    public static final Symbol javaRegex =  
SystemARQ.allocSymbol("javaRegex");
+//    /**
+//     * Symbol to name the Xerces-J regular expression engine
+//     * @deprecated Use string "xercesRegex"
+//     */
+//    @Deprecated(forRemoval = true)
+//    public static final Symbol xercesRegex =  
SystemARQ.allocSymbol("xercesRegex");
 
     /**
      * Use this Symbol to allow passing additional query parameters to a
@@ -616,7 +610,7 @@ public class ARQ
         context.set(extensionValueTypes,            false);
         context.set(constantBNodeLabels,            false);
         context.set(generateToList,                 true);
-        context.set(regexImpl,                      xercesRegex);
+        context.set(regexImpl,                      
ARQConstants.strXercesRegex);
 
         //context.set(filterPlacement,            false);
     }
@@ -643,7 +637,7 @@ public class ARQ
         context.set(extensionValueTypes,            true);
         context.set(constantBNodeLabels,            true);
         context.set(generateToList,                 false);
-        context.set(regexImpl,                      javaRegex);
+        context.set(regexImpl,                      ARQConstants.strJavaRegex);
     }
 
     // ----------------------------------
@@ -709,7 +703,7 @@ public class ARQ
         context.set(strictSPARQL,                  false);
         context.set(constantBNodeLabels,           true);
         context.set(enablePropertyFunctions,       true);
-        context.set(regexImpl,                     javaRegex);
+        context.set(regexImpl,                     ARQConstants.strJavaRegex);
     }
 
     public static Context getContext() {
diff --git a/jena-arq/src/main/java/org/apache/jena/query/Query.java 
b/jena-arq/src/main/java/org/apache/jena/query/Query.java
index 659f7a00ba..af40f01e54 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/Query.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/Query.java
@@ -388,17 +388,6 @@ public class Query extends Prologue implements Cloneable, 
Printable
      */
     private boolean resultVarsSet = false;
 
-    /**
-     * Set the results variables if necessary, when the query has "*" ({@code 
SELECT *}
-     * or {@code DESCRIBE *}) and for a construct query. This operation is 
idempotent and can
-     * be called to ensure the results variables have been set.
-     * @deprecated Use {@link #ensureResultVars()}
-     */
-    @Deprecated(forRemoval = true)
-    public void setResultVars() {
-        ensureResultVars();
-    }
-
     public void ensureResultVars() {
         if ( resultVarsSet )
             return;
diff --git 
a/jena-arq/src/main/java/org/apache/jena/query/ResultSetCloseable.java 
b/jena-arq/src/main/java/org/apache/jena/query/ResultSetCloseable.java
index a63260a8c8..7bde3bdb47 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/ResultSetCloseable.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/ResultSetCloseable.java
@@ -37,9 +37,7 @@ public class ResultSetCloseable extends ResultSetOnClose 
implements AutoCloseabl
         return new ResultSetCloseable(queryExecution.execSelect(), 
queryExecution) ;
     }
 
-    /** @deprecated The constructor will become private. Use {@link 
#closeableResultSet}. */
-    @Deprecated
-    public ResultSetCloseable(ResultSet rs, QueryExecution qexec) {
+    private ResultSetCloseable(ResultSet rs, QueryExecution qexec) {
         super(rs, ()->qexec.close()) ;
     }
 }
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java 
b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
index 8c5db43d5b..163263ed90 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
@@ -22,7 +22,6 @@ import java.io.*;
 import java.util.Iterator;
 import java.util.Objects;
 
-import org.apache.jena.atlas.iterator.Iter;
 import org.apache.jena.atlas.web.ContentType;
 import org.apache.jena.atlas.web.TypedInputStream;
 import org.apache.jena.graph.Graph;
@@ -32,8 +31,6 @@ import org.apache.jena.query.DatasetFactory;
 import org.apache.jena.rdf.model.Model;
 import org.apache.jena.rdf.model.ModelFactory;
 import org.apache.jena.riot.lang.IteratorParsers;
-import org.apache.jena.riot.system.AsyncParser;
-import org.apache.jena.riot.system.RiotLib;
 import org.apache.jena.riot.system.StreamRDF;
 import org.apache.jena.riot.system.StreamRDFLib;
 import org.apache.jena.riot.system.stream.StreamManager;
@@ -822,15 +819,9 @@ public class RDFDataMgr
      * @param lang Language
      * @param baseIRI Base IRI
      * @return Iterator over the triples
-     * @deprecated Use {@link AsyncParser#asyncParseTriples} or for N-Triples, 
{@link IteratorParsers#createIteratorNTriples}
      */
-    @Deprecated(forRemoval = true)
     public static Iterator<Triple> createIteratorTriples(InputStream input, 
Lang lang, String baseIRI) {
-        // Special case N-Triples, because the RIOT reader has a pull interface
-        if ( RDFLanguages.sameLang(RDFLanguages.NTRIPLES, lang) )
-            return 
Iter.onCloseIO(IteratorParsers.createIteratorNTriples(input), input);
-        // Otherwise, we have to spin up a thread to deal with it
-        return AsyncParser.asyncParseTriples(input, lang, baseIRI);
+        return IteratorParsers.createIteratorTriples(input, lang, baseIRI);
     }
 
     /**
@@ -841,14 +832,8 @@ public class RDFDataMgr
      * @param lang Language
      * @param baseIRI Base IRI
      * @return Iterator over the quads
-     * @deprecated Use {@link AsyncParser#asyncParseQuads} or for N-Triples, 
{@link IteratorParsers#createIteratorNQuads}
      */
-    @Deprecated(forRemoval = true)
     public static Iterator<Quad> createIteratorQuads(InputStream input, Lang 
lang, String baseIRI) {
-        // Special case N-Quads, because the RIOT reader has a pull interface
-        if ( RDFLanguages.sameLang(RDFLanguages.NQUADS, lang) )
-            return Iter.onCloseIO(IteratorParsers.createIteratorNQuads(input, 
RiotLib.dftProfile()), input);
-        // Otherwise, we have to spin up a thread to deal with it
-        return AsyncParser.asyncParseQuads(input, lang, baseIRI);
+        return IteratorParsers.createIteratorQuads(input, lang, baseIRI);
     }
 }
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFParser.java 
b/jena-arq/src/main/java/org/apache/jena/riot/RDFParser.java
index 278e9cb7fe..7c244e0f3c 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFParser.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFParser.java
@@ -155,20 +155,20 @@ public class RDFParser {
         return RDFParserBuilder.create().source(uriOrFile);
     }
 
-    /**
-     * Create an {@link RDFParserBuilder} and set content to be parsed to the
-     * string. The syntax must be set with {@code .lang(...)}.
-     * <p>
-     * Shortcut for {@code RDFParser.create.fromString(string)}.
-     *
-     * @param string
-     * @return RDFParserBuilder
-     * @deprecated Use {@link #fromString(String, Lang)}
-     */
-    @Deprecated
-    public static RDFParserBuilder fromString(String string) {
-        return RDFParserBuilder.create().fromString(string);
-    }
+//    /**
+//     * Create an {@link RDFParserBuilder} and set content to be parsed to the
+//     * string. The syntax must be set with {@code .lang(...)}.
+//     * <p>
+//     * Shortcut for {@code RDFParser.create.fromString(string)}.
+//     *
+//     * @param string
+//     * @return RDFParserBuilder
+//     * @deprecated Use {@link #fromString(String, Lang)}
+//     */
+//    @Deprecated
+//    public static RDFParserBuilder fromString(String string) {
+//        return RDFParserBuilder.create().fromString(string);
+//    }
 
     /**
      * Create an {@link RDFParserBuilder} and set content to be parsed
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFParserBuilder.java 
b/jena-arq/src/main/java/org/apache/jena/riot/RDFParserBuilder.java
index 634f8d760c..aebb15e1e7 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFParserBuilder.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFParserBuilder.java
@@ -352,76 +352,12 @@ public class RDFParserBuilder {
      * <p>
      * For consistent loading of data, it is recommended that data is cleaned 
and
      * canonicalized before loading so the conversion is done once.
-     *
-     * @see #langTagLowerCase
-     * @see #langTagCanonical
      */
     public RDFParserBuilder canonicalValues(boolean flag) {
         this.canonicalValues = flag;
         return this;
     }
 
-    /**
-     * Convert language tags to lower case.
-     * <p>
-     * This is the suggested form in RDF 1.1 for comparsions.
-     * However, this is not the recommended canonical form in
-     * <a href="https://tools.ietf.org/html/rfc5646";>RFC 5646</a>.
-     * <p>
-     * Providing all data is converted consistently, language tag equality
-     * is maintained for either lower case or RFC canonicalization styles.
-     * <p>
-     * This option can slow parsing down.
-     *
-     * @see #langTagCanonical
-     * @deprecated In Jena5, language tags are always converted to RFC 5646 
case format.
-     */
-    @Deprecated(forRemoval=true)
-    public RDFParserBuilder langTagLowerCase() {
-        return langTagForm(LangTagForm.LOWER_CASE);
-    }
-
-    /**
-     * Language tags are case-normalized as defined by
-     * <a href="https://tools.ietf.org/html/rfc5646";>RFC 5646</a>.
-     * Example: {@code en-GB}, not {@code en-gb}.
-     * <p>
-     * This does not affect the RDF 1.1 requirement that the
-     * value-space of language tags is lower-case.
-     * <p>
-     * Providing all data is converted consistently, lang tag equality is 
maintained for either
-     * lower case or RFC canonicalization.
-     * <p>
-     * This option can slow parsing down.
-     * </p>
-     * @see #langTagLowerCase
-     * @deprecated In Jena5, language tags are always converted to RFC 5646 
case format.
-     */
-    @Deprecated(forRemoval=true)
-    public RDFParserBuilder langTagCanonical() {
-        return langTagForm(LangTagForm.CANONICAL);
-    }
-
-    /**
-     * The form of the language tags as given in the data is preserved.
-     * This is the default behaviour of parsing.
-     * @see #langTagLowerCase
-     * @see #langTagCanonical
-     * @deprecated In Jena5, language tags are always converted to RFC 5646 
case format.
-     */
-    @Deprecated(forRemoval=true)
-    public RDFParserBuilder langTagAsGiven() {
-        return langTagForm(LangTagForm.NONE);
-    }
-
-    @Deprecated(forRemoval=true)
-    private RDFParserBuilder langTagForm(LangTagForm form) {
-        // Ignore!
-        // language tags are always converted to RFC 5646 case format.
-        //this.langTagForm = form;
-        return this;
-    }
-
     /** Set whether to perform checking,
      * NTriples and NQuads default to no checking, other languages to checking.
      * <p>
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java 
b/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java
index df82426b2e..9c2aa85a25 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java
@@ -149,11 +149,4 @@ public class RIOT {
      * Print literals with newlines in multiple line form, using triple quotes.
      */
     public static final Symbol symTurtleMultilineLiterals = 
SystemARQ.allocSymbol(TURTLE_SYMBOL_BASE, "multiline_literals") ;
-
-    /**
-     * Control of multiline literals.
-     * @deprecated Use {@link #symTurtleMultilineLiterals}.
-     */
-    @Deprecated(forRemoval = true)
-    public static final Symbol multilineLiterals = symTurtleMultilineLiterals;
 }
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/lang/CollectorStreamBase.java 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/CollectorStreamBase.java
deleted file mode 100644
index 03b618c318..0000000000
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/CollectorStreamBase.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.riot.lang;
-
-import java.util.Collection;
-
-import org.apache.jena.graph.Triple ;
-import org.apache.jena.riot.system.PrefixMap;
-import org.apache.jena.riot.system.PrefixMapFactory;
-import org.apache.jena.riot.system.StreamRDF;
-import org.apache.jena.sparql.core.Quad ;
-
-/**
- * Base class for StreamRDF implementations which store received {@code <T>}
- * objects in a {@link java.util.Collection}.
- *
- * The resulting collection can be retrieved via the {@link #getCollected()}
- * method.
- *
- * Implementations are suitable for single-threaded parsing, for use with small
- * data or distributed computing frameworks (e.g. Hadoop) where the overhead
- * of creating many threads is significant.
- *
- * @param <T> Type of the value stored in the collection
- * @deprecated Use {@link CollectorStreamRDF}
- */
-@Deprecated  //(forRemoval = true) -- this confuses the compiler in the maven 
build.
-public abstract class CollectorStreamBase<T> implements StreamRDF {
-       private final PrefixMap prefixes = PrefixMapFactory.create();
-       private String baseIri;
-
-       @Override
-       public void finish() {}
-
-       @Override
-       public void triple(Triple triple) {}
-
-       @Override
-       public void quad(Quad quad) {}
-
-       @Override
-       public void start() {}
-
-       @Override
-       public void base(String base) {
-               this.baseIri = base;
-       }
-
-       @Override
-       public void prefix(String prefix, String iri) {
-               prefixes.add(prefix, iri);
-       }
-
-       @Override
-       public void version(String version) {}
-
-       public PrefixMap getPrefixes() {
-               return prefixes;
-       }
-
-       public String getBaseIri() {
-               return baseIri;
-       }
-
-       /**
-        * @return The collection received by this instance.
-        */
-       public abstract Collection<T> getCollected();
-}
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/lang/CollectorStreamQuads.java 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/CollectorStreamQuads.java
deleted file mode 100644
index d6068739f3..0000000000
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/CollectorStreamQuads.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.riot.lang;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.jena.riot.system.StreamRDF;
-import org.apache.jena.sparql.core.Quad ;
-
-/**
- * Collector stream for quads.
- *
- * @deprecated Use {@link CollectorStreamRDF}
- */
-@Deprecated(forRemoval = true)
-@SuppressWarnings("all")
-public class CollectorStreamQuads extends CollectorStreamBase<Quad>    
implements StreamRDF {
-       private List<Quad> quads = new ArrayList<>();
-
-       @Override
-       public void start() {
-               quads.clear();
-       }
-
-       @Override
-       public void quad(Quad quad) {
-               quads.add(quad);
-       }
-
-       @Override
-       public List<Quad> getCollected() {
-               return quads;
-       }
-}
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/lang/CollectorStreamTriples.java 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/CollectorStreamTriples.java
deleted file mode 100644
index 6d8bd46ccd..0000000000
--- 
a/jena-arq/src/main/java/org/apache/jena/riot/lang/CollectorStreamTriples.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.riot.lang;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.jena.graph.Triple ;
-import org.apache.jena.riot.system.StreamRDF;
-
-/**
- * Collector stream for triples.
- *
- * @deprecated Use {@link CollectorStreamRDF}
- */
-@Deprecated(forRemoval = true)
-@SuppressWarnings("all")
-
-public class CollectorStreamTriples extends CollectorStreamBase<Triple> 
implements StreamRDF {
-       private List<Triple> triples = new ArrayList<>();
-
-       @Override
-       public void start() {
-               triples.clear();
-       }
-
-       @Override
-       public void triple(Triple triple) {
-               triples.add(triple);
-       }
-
-       @Override
-       public List<Triple> getCollected() {
-               return triples;
-       }
-}
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/lang/IteratorParsers.java 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/IteratorParsers.java
index 21b461e5bf..12155e1b29 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/IteratorParsers.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/IteratorParsers.java
@@ -20,8 +20,13 @@ package org.apache.jena.riot.lang;
 
 import java.io.InputStream;
 import java.util.Iterator;
+import java.util.Objects;
 
 import org.apache.jena.graph.Triple;
+import org.apache.jena.riot.Lang;
+import org.apache.jena.riot.RDFLanguages;
+import org.apache.jena.riot.RiotException;
+import org.apache.jena.riot.system.AsyncParser;
 import org.apache.jena.riot.system.ParserProfile;
 import org.apache.jena.riot.system.RiotLib;
 import org.apache.jena.riot.system.StreamRDF;
@@ -34,6 +39,32 @@ import org.apache.jena.sparql.core.Quad;
  */
 public class IteratorParsers {
 
+    /**
+     * Creates an iterator over parsing of quads.
+     * This function creates a thread unless the Lang is N-Triples.
+     */
+    public static Iterator<Triple> createIteratorTriples(InputStream input, 
Lang lang, String baseURI) {
+        Objects.requireNonNull(lang);
+        if ( Lang.NTRIPLES.equals(lang) )
+            return createIteratorNTriples(input);
+        if ( ! RDFLanguages.isTriples(lang) )
+            throw new RiotException("Not a triples syntax: "+lang.getName());
+        // For all other languages, we need to do the parsing asynchronously
+        return AsyncParser.asyncParseTriples(input, lang, baseURI);
+    }
+
+    /**
+     * Create an iterator over parsing of triples.
+     * This function creates a thread unless the Lang is N-Quads.
+     */
+    public static Iterator<Quad> createIteratorQuads(InputStream input, Lang 
lang, String baseURI) {
+        Objects.requireNonNull(lang);
+        if ( Lang.NQUADS.equals(lang) )
+            return createIteratorNQuads(input);
+        // For all other languages, we need to do the parsing asynchronously
+        return AsyncParser.asyncParseQuads(input, lang, baseURI);
+    }
+
     /** Create an iterator for parsing N-Triples. */
     public static Iterator<Triple> createIteratorNTriples(InputStream input) {
         return createIteratorNTriples(input, RiotLib.dftProfile());
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangEngine.java 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangEngine.java
index f1c0a3e0cf..dd6a58a92c 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangEngine.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangEngine.java
@@ -153,12 +153,6 @@ public class LangEngine {
         raiseException(new RiotParseException(msg, line, col));
     }
 
-    /** @deprecated use {@link #exception(String, long, long)}*/
-    @Deprecated(forRemoval = true)
-    protected final void exceptionDirect(String msg, long line, long col) {
-        raiseException(new RiotParseException(msg, line, col));
-    }
-
     protected final void raiseException(RiotParseException ex) {
         if ( errorHandler != null )
             errorHandler.fatal(ex.getOriginalMessage(), ex.getLine(), 
ex.getCol());
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/LangParserBase.java 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/LangParserBase.java
index d9aa0f914c..d1ad3b1127 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/LangParserBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/LangParserBase.java
@@ -101,12 +101,6 @@ public class LangParserBase {
         return createBNode(line, column);
     }
 
-    /** @deprecated Use {@link #checkRDFString}. */
-    @Deprecated(forRemoval=true)
-    protected void checkString(String string, int line, int column) {
-        checkRDFString(string, line, column);
-    }
-
     /**
      * Apply any checks for "RDF String" to a string that has already had 
escape processing applied.
      * An RDF String is a sequence of codepoints in the range U+0000 to 
U+10FFFF, excluding surrogates.
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/StreamCanonicalLiterals.java
 
b/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/StreamCanonicalLiterals.java
index 5cac861b73..5841ba8517 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/StreamCanonicalLiterals.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/StreamCanonicalLiterals.java
@@ -28,7 +28,7 @@ import org.apache.jena.riot.system.StreamRDF;
  * So {@code "+01"^^xsd:integer} is converted to {@code "1"^^xsd:integer}.
  * Language tags are canonicalized for case as well.
  *
- * See {@link RDFParserBuilder#canonicalValues(boolean)} and {@link 
RDFParserBuilder#langTagCanonical()}.
+ * See {@link RDFParserBuilder#canonicalValues(boolean)}.
  */
 public class StreamCanonicalLiterals extends StreamRDFApplyObject {
     public StreamCanonicalLiterals(StreamRDF other) {
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/rowset/rw/RowSetReaderJSON_V1.java
 
b/jena-arq/src/main/java/org/apache/jena/riot/rowset/rw/RowSetReaderJSON_V1.java
deleted file mode 100644
index 3f4f4a2413..0000000000
--- 
a/jena-arq/src/main/java/org/apache/jena/riot/rowset/rw/RowSetReaderJSON_V1.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.riot.rowset.rw;
-
-import static org.apache.jena.riot.rowset.rw.JSONResultsKW.*;
-
-import java.io.InputStream;
-import java.util.*;
-
-import org.apache.jena.atlas.json.JSON;
-import org.apache.jena.atlas.json.JsonArray;
-import org.apache.jena.atlas.json.JsonObject;
-import org.apache.jena.atlas.json.JsonValue;
-import org.apache.jena.atlas.logging.Log;
-import org.apache.jena.datatypes.RDFDatatype;
-import org.apache.jena.datatypes.TypeMapper;
-import org.apache.jena.graph.Node;
-import org.apache.jena.graph.NodeFactory;
-import org.apache.jena.query.ARQ;
-import org.apache.jena.riot.lang.LabelToNode;
-import org.apache.jena.riot.resultset.ResultSetLang;
-import org.apache.jena.riot.rowset.RowSetReader;
-import org.apache.jena.riot.rowset.RowSetReaderFactory;
-import org.apache.jena.riot.rowset.RowSetReaderRegistry;
-import org.apache.jena.riot.system.SyntaxLabels;
-import org.apache.jena.sparql.core.Var;
-import org.apache.jena.sparql.engine.binding.Binding;
-import org.apache.jena.sparql.engine.binding.BindingBuilder;
-import org.apache.jena.sparql.exec.QueryExecResult;
-import org.apache.jena.sparql.exec.RowSet;
-import org.apache.jena.sparql.exec.RowSetStream;
-import org.apache.jena.sparql.resultset.ResultSetException;
-import org.apache.jena.sparql.util.Context;
-import org.apache.jena.vocabulary.RDF;
-
-/** Read JSON format SPARQL Results.
- * <p>
- * <a href="https://www.w3.org/TR/sparql11-results-json/";>SPARQL 1.1 Query 
Results JSON Format</a>
- * <p>
- * This was the ResultSet/RowSet reader for JSON up to and including Jena 
4.4.0.
- * Jena 4.5.0 introduced {@link RowSetReaderJSONStreaming}.
- * <p>
- * @deprecated To be removed.
- */
-@Deprecated(since="5.0.0", forRemoval=true)
-public class RowSetReaderJSON_V1 implements RowSetReader {
-
-    public static void install() {
-        RowSetReaderRegistry.register(ResultSetLang.RS_JSON, factory);
-    }
-
-    public static final RowSetReaderFactory factory = lang -> {
-        if (!Objects.equals(lang, ResultSetLang.RS_JSON ) )
-            throw new ResultSetException("RowSet for JSON asked for a "+lang);
-        return new RowSetReaderJSON_V1();
-    };
-
-    private RowSetReaderJSON_V1() {}
-
-    @Override
-    public QueryExecResult readAny(InputStream in, Context context) {
-        return process(in, context);
-    }
-
-    static private QueryExecResult process(InputStream in, Context context) {
-        if ( context == null )
-            context = ARQ.getContext();
-        RowSetJSON exec = new RowSetJSON(context);
-        exec.parse(in);
-        if ( exec.rows != null ) {
-            //RowSet rs = RowSetStream.create(exec.vars, exec.rows.iterator());
-            RowSet rs = RowSetStream.create(exec.vars, exec.rows.iterator());
-            return new QueryExecResult(rs);
-        } else
-            return new QueryExecResult(exec.booleanResult);
-    }
-
-    /**
-     * Parse a result set - whether rows (SELECT) or a boolean results (ASK).
-     * This object is one-time use and exists to carry the results as they are 
built-up.
-     */
-    private static class RowSetJSON {
-        final Context   context;
-        Boolean         booleanResult = null; // Valid if rows is null.
-        List<Binding>   rows          = null;
-        List<Var>       vars          = null;
-        final LabelToNode labelMap;
-
-        RowSetJSON(Context context) {
-            this.context = context;
-            boolean inputGraphBNodeLabels = (context != null) && 
context.isTrue(ARQ.inputGraphBNodeLabels);
-            this.labelMap = inputGraphBNodeLabels
-                ? SyntaxLabels.createLabelToNodeAsGiven()
-                : SyntaxLabels.createLabelToNode();
-            this.rows = null ;
-        }
-
-        private void parse(InputStream in) {
-            JsonObject obj = JSON.parse(in);
-
-            // Boolean?
-            if ( obj.hasKey(kBoolean) ) {
-                checkContains(obj, true, true, kHead, kBoolean);
-                booleanResult = obj.get(kBoolean).getAsBoolean().value();
-                rows = null;
-                return;
-            }
-
-            // ResultSet.
-            rows = new ArrayList<>(1000);
-
-            checkContains(obj, true, true, kHead, kResults);
-
-            // process head
-            if ( !obj.get(kHead).isObject() )
-                throw new ResultSetException("Key 'head' must have a JSON 
object as value: found: " + obj.get(kHead));
-            JsonObject head = obj.get(kHead).getAsObject();
-
-            // ---- Head
-            // -- Link - array.
-            if ( head.hasKey(kLink) ) {
-                List<String> links = new ArrayList<>();
-
-                if ( head.get(kLink).isString() ) {
-                    Log.warn(this, "Link field is a string, should be an array 
of strings");
-                    links.add(head.get(kLink).getAsString().value());
-                } else {
-                    if ( !head.get(kLink).isArray() )
-                        throw new ResultSetException("Key 'link' must have be 
an array: found: " + obj.get(kLink));
-
-                    for ( JsonValue v : head.get(kLink).getAsArray() ) {
-                        if ( !v.isString() )
-                            throw new ResultSetException("Key 'link' must have 
be an array of strings: found: " + v);
-                        links.add(v.getAsString().value());
-                    }
-                }
-            }
-            // -- Vars
-            vars = parseVars(head);
-
-            // ---- Results
-            JsonObject results = obj.get(kResults).getAsObject();
-            if ( !results.get(kBindings).isArray() )
-                throw new ResultSetException("'bindings' must be an array");
-            JsonArray array = results.get(kBindings).getAsArray();
-            Iterator<JsonValue> iter = array.iterator();
-
-            BindingBuilder builder = Binding.builder();
-            for ( ; iter.hasNext() ; ) {
-                builder.reset();
-                JsonValue v = iter.next();
-                if ( !v.isObject() )
-                    throw new ResultSetException("Entry in 'bindings' array 
must be an object {}");
-                JsonObject x = v.getAsObject();
-                Set<String> varNames = x.keys();
-                for ( String vn : varNames ) {
-                    // if ( ! vars.contains(vn) ) {}
-                    JsonValue vt = x.get(vn);
-                    if ( !vt.isObject() )
-                        throw new ResultSetException("Binding for variable '" 
+ vn + "' is not a JSON object: " + vt);
-                    Node n = parseOneTerm(vt.getAsObject(), labelMap);
-                    builder.add(Var.alloc(vn), n);
-                }
-                rows.add(builder.build());
-            }
-        }
-
-        private static List<Var> parseVars(JsonObject obj) {
-            if ( !obj.get(kVars).isArray() )
-                throw new ResultSetException("Key 'vars' must be a JSON 
array");
-            JsonArray a = obj.get(kVars).getAsArray();
-            Iterator<JsonValue> iter = a.iterator();
-            List<Var> vars = new ArrayList<>();
-            for ( ; iter.hasNext() ; ) {
-                JsonValue v = iter.next();
-                if ( !v.isString() )
-                    throw new ResultSetException("Entries in vars array must 
be strings");
-                Var var = Var.alloc(v.getAsString().value());
-                vars.add(var);
-            }
-            return vars;
-        }
-
-        private static Node parseOneTerm(JsonObject term, LabelToNode 
labelMap) {
-            checkContains(term, false, false, kType, kValue, kXmlLang, 
kDatatype);
-
-            String type = stringOrNull(term, kType);
-
-            if ( kTriple.equals(type) || kStatement.equals(type) ) {
-                JsonObject x = term.get(kValue).getAsObject();
-                return parseTripleTerm(x, labelMap);
-            }
-
-            String v = stringOrNull(term, kValue);
-
-            if ( kUri.equals(type) ) {
-                checkContains(term, false, true, kType, kValue);
-                String uri = v;
-                Node n = NodeFactory.createURI(v);
-                return n;
-            }
-
-            if ( kLiteral.equals(type) || kTypedLiteral.equals(type) ) {
-                String lang = stringOrNull(term, kXmlLang);
-                String dtStr = stringOrNull(term, kDatatype);
-                if ( lang != null ) {
-                    // Strictly, xml:lang=... and datatype=rdf:langString is 
wrong
-                    // (the datatype should be absent)
-                    // The RDF specs recommend omitting the datatype. They did
-                    // however come after the SPARQL 1.1 docs
-                    // it's more of a "SHOULD" than a "MUST".
-                    // datatype=xsd:string is also unnecessary.
-                    if ( dtStr != null && 
!dtStr.equals(RDF.dtLangString.getURI()) ) {
-                        // Must agree.
-                        throw new ResultSetException("Both language and 
datatype defined, datatype is not rdf:langString:\n" + term);
-                    }
-                }
-                RDFDatatype dt = 
TypeMapper.getInstance().getSafeTypeByName(dtStr);
-                return NodeFactory.createLiteral(v, lang, dt);
-            }
-
-            if ( kBnode.equals(type) )
-                return labelMap.get(null, v);
-
-            throw new ResultSetException("Object key not recognized as valid 
for an RDF term: " + term);
-        }
-
-        private static Node parseTripleTerm(JsonObject term, LabelToNode 
labelMap) {
-            if ( term.entrySet().size() != 3 )
-                throw new ResultSetException("Wrong number of object keys for 
triple term: should be 3, got " + term.entrySet().size());
-            checkContainsOneOf(term, kSubject, kSubjectAlt);
-            checkContainsOneOf(term, kObject, kObjectAlt);
-            checkContainsOneOf(term, kPredicate, kProperty, kPredicateAlt);
-
-            JsonObject sTerm = get(term, kSubject, kSubjectAlt);
-            JsonObject pTerm = get(term, kPredicate, kProperty, kPredicateAlt);
-            JsonObject oTerm = get(term, kObject, kObjectAlt);
-            if ( sTerm == null || pTerm == null || oTerm == null )
-                throw new ResultSetException("Bad triple term: " + term);
-            Node s = parseOneTerm(sTerm, labelMap);
-            Node p = parseOneTerm(pTerm, labelMap);
-            Node o = parseOneTerm(oTerm, labelMap);
-            return NodeFactory.createTripleTerm(s, p, o);
-        }
-
-        // Get a object from an object - use the first name in the fields list
-        private static JsonObject get(JsonObject term, String...fields) {
-            for ( String f : fields ) {
-                JsonValue v = term.get(f);
-                if ( v != null )
-                    return v.getAsObject();
-            }
-            return null;
-        }
-
-        private static String stringOrNull(JsonObject obj, String key) {
-            JsonValue v = obj.get(key);
-            if ( v == null )
-                return null;
-            if ( !v.isString() )
-                throw new ResultSetException("Not a string: key: " + key);
-            return v.getAsString().value();
-        }
-
-        private static void checkContains(JsonObject term, boolean 
allowUndefinedKeys, boolean requireAllExpectedKeys, String...keys) {
-            List<String> expectedKeys = Arrays.asList(keys);
-            Set<String> declared = new HashSet<>();
-            for ( String k : term.keys() ) {
-                if ( !expectedKeys.contains(k) && !allowUndefinedKeys )
-                    throw new ResultSetException("Expected only object keys " 
+ Arrays.asList(keys) + " but encountered '" + k + "'");
-                if ( expectedKeys.contains(k) )
-                    declared.add(k);
-            }
-
-            if ( requireAllExpectedKeys && declared.size() < 
expectedKeys.size() )
-                throw new ResultSetException("One or more of the required keys 
" + expectedKeys + " was not found");
-        }
-
-        private static void checkContainsOneOf(JsonObject term, String...keys) 
{
-            List<String> expectedKeys = Arrays.asList(keys);
-            String found = null;
-            for ( String k : term.keys() ) {
-                if ( found == null ) {
-                    if ( expectedKeys.contains(k) )
-                        found = k;
-                } else {
-                    if ( expectedKeys.contains(k) )
-                        throw new ResultSetException("More than one key out of 
" + expectedKeys);
-                }
-            }
-        }
-
-    }
-}
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/Checker.java 
b/jena-arq/src/main/java/org/apache/jena/riot/system/Checker.java
index 848135dbb8..4c588b88c8 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/Checker.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/Checker.java
@@ -143,13 +143,6 @@ public class Checker {
         return checkLiteral(lexicalForm, lang, (TextDirection)null, null, 
errorHandler, line, col);
     }
 
-    /** @deprecated Use {@link #checkLiteral(String, String, String, 
RDFDatatype, ErrorHandler, long, long)} */
-    @Deprecated(forRemoval =  true)
-    public static boolean checkLiteral(String lexicalForm, String lang, 
RDFDatatype datatype, ErrorHandler errorHandler, long line, long col) {
-        return checkLiteral(lexicalForm, lang, (TextDirection)null, datatype, 
errorHandler, line, col);
-    }
-
-
     public static boolean checkLiteral(String lexicalForm, String lang, String 
direction, RDFDatatype datatype, ErrorHandler errorHandler, long line, long 
col) {
         TextDirection textDir = null;
         if ( direction != null ) {
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/system/JenaTitanium.java 
b/jena-arq/src/main/java/org/apache/jena/riot/system/JenaTitanium.java
deleted file mode 100644
index ee0fa0b595..0000000000
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/JenaTitanium.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.riot.system;
-
-import java.util.Optional;
-
-import com.apicatalog.rdf.*;
-import com.apicatalog.rdf.spi.RdfProvider;
-
-import org.apache.jena.datatypes.RDFDatatype;
-import org.apache.jena.graph.Node;
-import org.apache.jena.graph.NodeFactory;
-import org.apache.jena.graph.Triple;
-import org.apache.jena.riot.out.NodeToLabel;
-import org.apache.jena.shared.JenaException;
-import org.apache.jena.sparql.core.DatasetGraph;
-import org.apache.jena.sparql.core.DatasetGraphFactory;
-import org.apache.jena.sparql.core.Quad;
-import org.apache.jena.sparql.util.NodeUtils;
-
-
-/**
-/** Conversion to Titanium JSON-LD.
- * @deprecated To be removed (not needed for Titanium 1.7.0, which introduces 
titanium-rdf-primitives)
- */
-@Deprecated(forRemoval = true)
-public class JenaTitanium {
-
-    public static class JenaTitaniumException extends JenaException {
-        public JenaTitaniumException(String msg) { super(msg); }
-    }
-
-    /**
-     * Translate a Jena {@link DatasetGraph} to a Titanium JSON-LD dataset
-     * @deprecated due to changes introduced in Titanium 1.7.0.
-     */
-    @Deprecated(forRemoval = true)
-    public static RdfDataset convert(DatasetGraph dataset) {
-        RdfProvider provider = RdfProvider.provider();
-        RdfDataset rdfDataset = provider.createDataset();
-        NodeToLabel labelMapping = NodeToLabel.createScopeByDocument();
-        dataset.find().forEachRemaining(quad->{
-            RdfResource subject = resource(provider, labelMapping, 
quad.getSubject());
-            RdfResource predicate = resource(provider, labelMapping, 
quad.getPredicate());
-            RdfValue object = nodeToValue(provider, labelMapping, 
quad.getObject());
-
-            if ( quad.isTriple() || quad.isDefaultGraph() ) {
-                RdfTriple t = provider.createTriple(subject, predicate, 
object);
-                rdfDataset.add(t);
-            }
-            else {
-                RdfNQuad q = provider.createNQuad(subject, predicate, object,
-                                                  resource(provider, 
labelMapping, quad.getGraph()));
-                rdfDataset.add(q);
-            }
-        });
-        return rdfDataset;
-    }
-
-    private static RdfResource resource(RdfProvider provider, NodeToLabel 
labelMapping, Node node) {
-        if ( node.isBlank() ) {
-            String s = labelMapping.get(null, node);
-            return provider.createBlankNode(s);
-        }
-
-        if ( node.isURI() )
-            return provider.createIRI(node.getURI());
-        throw new JenaTitaniumException("Can not convert to an RdfResource : 
"+node);
-    }
-
-    private static RdfValue nodeToValue(RdfProvider provider, NodeToLabel 
labelMapping, Node node) {
-        if ( node.isBlank() || node.isURI() )
-                return resource(provider, labelMapping, node);
-
-        if ( node.isLiteral()) {
-            String lex = node.getLiteralLexicalForm();
-            if ( NodeUtils.hasLang(node) )
-                return provider.createLangString(lex, 
node.getLiteralLanguage());
-            return provider.createTypedString(lex, 
node.getLiteralDatatypeURI());
-        }
-        throw new JenaTitaniumException("Can not be converted: "+node);
-    }
-
-    /**
-     * Translate a Titanium JSON-LD dataset to a {@link DatasetGraph}
-     * @deprecated No longer used by the LangJSONLD_11
-     */
-    @Deprecated(forRemoval = true)
-    public static DatasetGraph convert(RdfDataset dataset, ParserProfile 
parserProfile) {
-        DatasetGraph dsg = DatasetGraphFactory.createTxnMem();
-        StreamRDF dest = StreamRDFLib.dataset(dsg);
-        convert(dataset, parserProfile, dest);
-        return dsg;
-    }
-
-    /**
-     * Translate a Titanium JSON-LD dataset to a {@link DatasetGraph}
-     * @deprecated No longer used by the LangJSONLD_11
-     */
-    @Deprecated(forRemoval = true)
-    public static DatasetGraph convert(RdfDataset dataset) {
-        DatasetGraph dsg = DatasetGraphFactory.createTxnMem();
-        StreamRDF dest = StreamRDFLib.dataset(dsg);
-        convert(dataset, dest);
-        return dsg;
-    }
-
-    /**
-     * Translate a Titanium JSON-LD dataset and output to a {@link StreamRDF}
-     * @deprecated No longer used by the LangJSONLD_11
-     */
-    @Deprecated(forRemoval = true)
-    public static void convert(RdfDataset dataset, StreamRDF output) {
-        convert(dataset, RiotLib.dftProfile(), output);
-    }
-
-    /**
-     * Translate a Titanium JSON-LD dataset and output to a {@link StreamRDF}
-     * @deprecated No longer used by the LangJSONLD_11
-     */
-    @Deprecated(forRemoval = true)
-    public static void convert(RdfDataset dataset, ParserProfile 
parserProfile, StreamRDF output) {
-        for ( RdfNQuad rdfQuad : dataset.toList() ) {
-            Optional<RdfResource> gn = rdfQuad.getGraphName();
-            RdfResource subj = rdfQuad.getSubject();
-            RdfResource pred = rdfQuad.getPredicate();
-            RdfValue obj= rdfQuad.getObject();
-
-            Node g = valueToNode(parserProfile, gn);
-            Node s = valueToNode(parserProfile, subj);
-            Node p = valueToNode(parserProfile, pred);
-            Node o = valueToNode(parserProfile, obj);
-
-            if ( g == null )
-                output.triple(Triple.create(s, p, o));
-            else
-                output.quad(Quad.create(g, s, p, o));
-        }
-    }
-
-    // Line number information not available because it is not exposed
-    // outside of the JSON parser.
-    private static long line = -1L;
-    private static long col = -1L;
-
-    private static Node valueToNode(ParserProfile parserProfile, 
Optional<RdfResource> value) {
-        if ( value.isEmpty() )
-            return null;
-        return valueToNode(parserProfile, value.orElseThrow());
-    }
-
-    private static Node valueToNode(ParserProfile parserProfile, RdfValue 
value) {
-        if ( value.isBlankNode() )
-            return parserProfile.createBlankNode(null, value.getValue(), line, 
col);
-
-        if ( value.isIRI() )
-            return parserProfile.createURI(value.getValue(), line, col);
-
-        if ( value.isLiteral() ) {
-            RdfLiteral literal = (RdfLiteral)value;
-            String lex = literal.getValue();
-            String dt = literal.getDatatype();
-            RDFDatatype datatype = NodeFactory.getType(dt);
-            Optional<String> lang = literal.getLanguage();
-            if ( lang.isPresent() )
-                return parserProfile.createLangLiteral(lex, 
lang.orElseThrow(), line, col);
-            return parserProfile.createTypedLiteral(lex, datatype, line, col);
-        }
-        throw new JenaTitaniumException("Not recognized: "+value);
-    }
-}
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfile.java 
b/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfile.java
index 34e9b14609..b52fa54555 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfile.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/ParserProfile.java
@@ -77,21 +77,9 @@ public interface ParserProfile {
     /** Create a triple term (RDF-star) */
     public Node createTripleTerm(Node subject, Node predicate, Node object, 
long line, long col);
 
-    /** @deprecated Use {@link #createTripleTerm} */
-    @Deprecated
-    public default Node createTripleNode(Node subject, Node predicate, Node 
object, long line, long col) {
-        return createTripleTerm(subject, predicate, object, line, col);
-    }
-
     /** Create a triple node (RDF-star) */
     public Node createTripleTerm(Triple triple, long line, long col);
 
-    /** @deprecated Use {@link #createTripleTerm} */
-    @Deprecated
-    public default Node createTripleNode(Triple triple, long line, long col) {
-        return createTripleTerm(triple, line, col);
-    }
-
     /** Create a graph node. This is an N3-formula and not named graphs */
     public Node createGraphNode(Graph graph, long line, long col);
 
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/web/LangTag.java 
b/jena-arq/src/main/java/org/apache/jena/riot/web/LangTag.java
deleted file mode 100644
index f068faceea..0000000000
--- a/jena-arq/src/main/java/org/apache/jena/riot/web/LangTag.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.riot.web ;
-
-import java.util.Locale ;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.jena.langtagx.LangTagX;
-
-/**
- * Language tags: support for parsing and canonicalization of case.
- * Grandfathered forms ("i-") are left untouched. Unsupported or syntactically
- * illegal forms are handled in canonicalization by doing nothing.
- * <ul>
- * <li>Language tags syntax: <a href="http://www.ietf.org/rfc/rfc4646.txt";>RFC 
4646</a></li>
- * <li>Matching Language tags: <a 
href="http://www.ietf.org/rfc/rfc4647.txt";>RFC 4647</a></li>
- * <li>Language tags syntax (BCP 47): <a 
href="http://www.ietf.org/rfc/rfc5646.txt";>RFC 5646</a></li>
- * </ul>
- * @deprecated Use {@link LangTagX}
- */
-@Deprecated(forRemoval = true)
-public class LangTag {
-    // Valid language tag, not irregular, not grand-fathered.
-    /** Index of the language part */
-    public static final int  idxLanguage  = 0 ;
-    /** Index of the script part */
-    public static final int  idxScript    = 1 ;
-    /** Index of the region part */
-    public static final int  idxRegion    = 2 ;
-    /** Index of the variant part */
-    public static final int  idxVariant   = 3 ;
-    /** Index of all extensions */
-    public static final int  idxExtension = 4 ;
-
-    private static final int partsLength  = 5 ;
-
-    private LangTag() {}
-
-    // Defined by BCP 47 which is currently RFC5646 which obsoletes RFC4646.
-
-    // Canonical forms:
-    /*
-     * RFC 4646 In this format, all non-initial two-letter subtags are
-     * uppercase, all non-initial four-letter subtags are titlecase, and all
-     * other subtags are lowercase.
-     */
-    /*
-     * RFC 5646 An implementation can reproduce this format without accessing
-     * the registry as follows. All subtags, including extension and private 
use
-     * subtags, use lowercase letters with two exceptions: two-letter and
-     * four-letter subtags that neither appear at the start of the tag nor 
occur
-     * after singletons. Such two-letter subtags are all uppercase (as in the
-     * tags "en-CA-x-ca" or "sgn-BE-FR") and four- letter subtags are titlecase
-     * (as in the tag "az-Latn-x-latn").
-     */
-
-    /*
-     * ABNF definition: <a href="http://www.ietf.org/rfc/rfc4234.txt";>RFC 
4234</a>
-     *
-     * Language-Tag = langtag / privateuse ; private use tag / grandfathered ;
-     * grandfathered registrations
-     *
-     * langtag = (language ["-" script] ["-" region]("-" variant)("-" 
extension) ["-" privateuse])
-     *
-     * language = (2*3ALPHA [ extlang ])      ; shortest ISO 639 code / 4ALPHA 
;
-     * reserved for future use / 5*8ALPHA     ; registered language subtag
-     *
-     * extlang = *3("-" 3ALPHA)               ; reserved for future use
-     *
-     * script = 4ALPHA ; ISO 15924 code
-     *
-     * region = 2ALPHA ; ISO 3166 code / 3DIGIT ; UN M.49 code
-     *
-     * variant = 5*8alphanum                  ; registered variants / (DIGIT 
3alphanum)
-     *
-     * extension = singleton 1*("-" (2*8alphanum))
-     *
-     * singleton = %x41-57 / %x59-5A / %x61-77 / %x79-7A / DIGIT ; "a"-"w" /
-     * "y"-"z" / "A"-"W" / "Y"-"Z" / "0"-"9"   ; Single letters: x/X is 
reserved for private use
-     *
-     * privateuse = ("x"/"X") 1*("-" (1*8alphanum))
-     *
-     * grandfathered = 1*3ALPHA 1*2("-" (2*8alphanum))   ; grandfathered 
registration
-     *                                                   ; Note: i is the only 
singleton
-     *                                                   ; that starts a 
grandfathered tag
-     *
-     * alphanum = (ALPHA / DIGIT)                        ; letters and numbers
-     */
-
-    private static final String languageRE_1         = 
"(?:[a-zA-Z]{2,3}(?:-[a-zA-Z]{3}){0,3})" ;
-    private static final String languageRE_2         = "[a-zA-Z]{4}" ;
-    private static final String languageRE_3         = "[a-zA-Z]{5,8}" ;
-    private static final String language             = languageRE_1 + "|" + 
languageRE_2 + "|" + languageRE_3 ;
-
-    private static final String script               = "[a-zA-Z]{4}" ;
-    private static final String region               = "[a-zA-Z]{2}|[0-9]{3}" ;
-    private static final String variant              = "[a-zA-Z0-9]{5,8}" ;
-    private static final String extension1           = 
"(?:[a-zA-Z0-9]-[a-zA-Z0-9]{2,8})" ;
-    private static final String extension            = extension1 + "(?:-" + 
extension1 + ")*" ;
-
-    // private static final String singleton = null ;
-    // private static final String privateuse = null ;
-    // private static final String grandfathered = null ;
-
-    private static final String langtag              = 
String.format("^(%s)(?:-(%s))?(?:-(%s))?(?:-(%s))?(?:-(%s))?$",
-                                                                     language, 
script, region, variant, extension) ;
-
-    // Private use forms "x-"
-    private static final String privateuseRE         = 
"^[xX](-[a-zA-Z0-9]{1,8})*$" ;
-    // In general, this can look like a langtag but there are no registered
-    // forms that do so.
-    // This is for the "i-" forms only.
-    private static final String grandfatheredRE      = 
"i(?:-[a-zA-Z0-9]{2,8}){1,2}" ;
-
-    private static Pattern      pattern              = 
Pattern.compile(langtag) ;
-    private static Pattern      patternPrivateuse    = 
Pattern.compile(privateuseRE) ;
-    private static Pattern      patternGrandfathered = 
Pattern.compile(grandfatheredRE) ;
-
-    /**
-     * Validate - basic syntax check for a language tags: [a-zA-Z]+ 
('-'[a-zA-Z0-9]+)*
-     *
-     * @deprecated Use {@link LangTagX#checkLanguageTag(String)}
-     */
-    @Deprecated(forRemoval = true)
-    public static boolean check(String languageTag) {
-        return LangTagX.checkLanguageTag(languageTag);
-    }
-
-    /**
-     * Parse a langtag string and return it's parts in canonical case. See
-     * constants for the array contents. Parts not present cause a null in
-     * the return array.
-     *
-     * @return The language tag parts, or null if the input string does not 
parse as a lang tag.
-     * @deprecated Use {@link org.apache.jena.langtag.LangTag#of(String)} to 
create a language tag object.
-     */
-    @Deprecated(forRemoval = true)
-    public static String[] parse(String languageTag) {
-        String[] parts = new String[partsLength] ;
-
-        String x = pattern.toString() ;
-
-        Pattern.compile(languageRE_1) ;
-
-        Matcher m = pattern.matcher(languageTag) ;
-        if ( !m.find() ) {
-            m = patternPrivateuse.matcher(languageTag) ;
-            if ( m.find() ) {
-                // Place in the "extension" part
-                parts[idxExtension] = m.group(0) ;
-                return parts ;
-            }
-
-            m = patternGrandfathered.matcher(languageTag) ;
-
-            if ( m.find() ) {
-                // Place in the "extension" part
-                parts[idxExtension] = m.group(0) ;
-                return parts ;
-            }
-
-            // Give up.
-            return null ;
-        }
-
-        int gc = m.groupCount() ;
-        for (int i = 0; i < gc; i++)
-            parts[i] = m.group(i + 1) ;
-
-        parts[idxLanguage] = lowercase(parts[idxLanguage]) ;
-        parts[idxScript] = strcase(parts[idxScript]) ;
-        parts[idxRegion] = strcase(parts[idxRegion]) ;
-        parts[idxVariant] = strcase(parts[idxVariant]) ;
-        // parts[idxExtension] = strcase(parts[idxExtension]) ; // Leave
-        // extensions alone.
-        return parts ;
-    }
-
-    private static String strcase(String string) {
-        if ( string == null )
-            return null ;
-        if ( string.length() == 2 )
-            return uppercase(string) ;
-        if ( string.length() == 4 )
-            return titlecase(string) ;
-        return lowercase(string) ;
-    }
-
-
-    private static String lowercase(String string) {
-        if ( string == null )
-            return null ;
-        return string.toLowerCase(Locale.ROOT) ;
-    }
-
-    private static String uppercase(String string) {
-        if ( string == null )
-            return null ;
-        return string.toUpperCase(Locale.ROOT) ;
-    }
-
-    private static String titlecase(String string) {
-        if ( string == null )
-            return null ;
-        char ch1 = string.charAt(0) ;
-        ch1 = Character.toUpperCase(ch1) ;
-        string = lowercase(string.substring(1)) ;
-        return ch1 + string ;
-    }
-    /**
-     * Canonicalize with the rules ofRFC 5646 without replacement of preferred 
form.
-     * @deprecated Use {@link LangTagX#formatLanguageTag(String)}
-     */
-    @Deprecated(forRemoval = true)
-    public static String canonical(String langTagStr) {
-        return LangTagX.formatLanguageTag(langTagStr);
-    }
-}
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/ARQConstants.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/ARQConstants.java
index 8c19d110b0..f67b2ca63c 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/ARQConstants.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/ARQConstants.java
@@ -212,6 +212,10 @@ public class ARQConstants
     public static final String allocSSEAnonVars         = allocVarAnonMarker ; 
         // ParseHandlerPlain - SSE token "??"
     public static final String allocSSENamedVars        = allocVarMarker ;     
         // ParseHandlerPlain - SSE token "?."
 
+    // Regular expression engines.
+    public static final String strJavaRegex             =  "javaRegex";
+    public static final String strXercesRegex           =  "xercesRegex";
+
     /** Marker for system symbols */
     public static final String systemVarNS = 
"http://jena.apache.org/ARQ/system#"; ;
 
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/SystemARQ.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/SystemARQ.java
index a9b4332a18..52da5270c8 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/SystemARQ.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/SystemARQ.java
@@ -57,13 +57,6 @@ public class SystemARQ
      */
     public static boolean EnableRomanNumerals   = true ;
 
-    /**
-     * Use a plain graph (sameAs is term equality)
-     * @deprecated From jena5, all graph are term equality except where 
support the Model API.
-     */
-    @Deprecated(forRemoval = true)
-    public static boolean UsePlainGraph         = false ;
-
     /**
      * Sync a Model if it provides the underlying graph provides sync . Do 
nothing
      * otherwise.
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
index 69988f21ae..f53e5a35e5 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
@@ -138,12 +138,6 @@ public class AssemblerUtils
         return model;
     }
 
-    /** @deprecated Use {@link #prepareForAssembler(Model)} */
-    @Deprecated(forRemoval = true)
-    public static Model addRegistered(Model model) {
-        return prepareForAssembler(model);
-    }
-
     public static Object build(String assemblerFile, String typeURI) {
         Resource type = ResourceFactory.createResource(typeURI);
         return build(assemblerFile, type);
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/ExecutionContext.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/engine/ExecutionContext.java
index c004a240c5..a1b87415f8 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/ExecutionContext.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/ExecutionContext.java
@@ -163,34 +163,7 @@ public class ExecutionContext implements FunctionEnv
         return create(dsg, graph, cxt);
     }
 
-    // ---- Previous generation - constructors
-
-    /**
-     * Setup with defaults of global settings
-     * @deprecated Use {@link #create(DatasetGraph)}
-     * */
-    @Deprecated(forRemoval = true)
-    public ExecutionContext(DatasetGraph dataset) {
-        this(dataset, QC.getFactory(ARQ.getContext()));
-    }
-
-    /** Setup with defaults of global settings but explicit {@link 
OpExecutorFactory}.
-     * @deprecated Use {@link #create(DatasetGraph)}
-     */
-    @Deprecated(forRemoval = true)
-    public ExecutionContext(DatasetGraph dataset, OpExecutorFactory factory) {
-        this(ARQ.getContext().copy(), dataset.getDefaultGraph(), dataset, 
factory);
-    }
-
-    /** @deprecated Use a "create" function where possible. */
-    @Deprecated
-    public ExecutionContext(Context params, Graph activeGraph, DatasetGraph 
dataset, OpExecutorFactory factory) {
-        this(params, activeGraph, dataset, factory, 
Context.getCancelSignal(params));
-    }
-
-    /** @deprecated This will be changed to be private. */
-    @Deprecated
-    public ExecutionContext(Context params, Graph activeGraph, DatasetGraph 
dataset, OpExecutorFactory factory, AtomicBoolean cancelSignal) {
+    private ExecutionContext(Context params, Graph activeGraph, DatasetGraph 
dataset, OpExecutorFactory factory, AtomicBoolean cancelSignal) {
         this.context = params;
         this.dataset = dataset;
         this.openIterators = new ArrayList<>();
@@ -201,8 +174,6 @@ public class ExecutionContext implements FunctionEnv
         this.cancelSignal = cancelSignal;
     }
 
-    // ---- Previous generation - constructors
-
     @Override
     public Context getContext() {
         return context;
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/ResultSetCheckCondition.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/engine/ResultSetCheckCondition.java
deleted file mode 100644
index ba7957fdc1..0000000000
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/ResultSetCheckCondition.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.sparql.engine;
-
-import java.util.List ;
-import java.util.function.Consumer;
-
-import org.apache.jena.query.QueryExecution ;
-import org.apache.jena.query.QuerySolution ;
-import org.apache.jena.query.ResultSet ;
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.sparql.ARQException ;
-import org.apache.jena.sparql.engine.binding.Binding ;
-
-/** ResultSet wrapper that check whether some condition is true
- * (e.g. the QueryExecution has not been closed).
- * @deprecated To be removed.
- */
-@Deprecated(forRemoval = true)
-public class ResultSetCheckCondition implements ResultSet
-{
-    interface Condition { boolean check() ; }
-    private final ResultSet other ;
-    private final Condition condition ;
-
-    public ResultSetCheckCondition(ResultSet other, QueryExecution qExec) {
-        this(other, checkQExec(qExec) ) ;
-    }
-
-    public ResultSetCheckCondition(ResultSet other, Condition condition) {
-        this.other = other ;
-        this.condition = condition ;
-    }
-
-    private static Condition checkQExec(final QueryExecution qExec) {
-        return ()-> ! qExec.isClosed() ;
-    }
-
-    @Override
-    public boolean hasNext() {
-        check() ;
-        return other.hasNext() ;
-    }
-
-    @Override
-    public QuerySolution next() {
-        check() ;
-        return other.next() ;
-    }
-
-    @Override
-    public QuerySolution nextSolution() {
-        check() ;
-        return other.nextSolution() ;
-    }
-
-    @Override
-    public Binding nextBinding() {
-        check() ;
-        return other.nextBinding() ;
-    }
-
-    @Override
-    public void close() {
-        check() ;
-        other.close();
-    }
-
-    /**
-     * Attention: The check is only done once before the first consumer accept 
call.
-     * @param action The action to be performed for each element
-     */
-    @Override
-    public void forEachRemaining(Consumer<? super QuerySolution> action) {
-        check() ;
-        other.forEachRemaining(action);
-    }
-
-    @Override
-    public int getRowNumber() {
-        check() ;
-        return other.getRowNumber() ;
-    }
-
-    @Override
-    public List<String> getResultVars() {
-        check() ;
-        return other.getResultVars() ;
-    }
-
-    @Override
-    public Model getResourceModel() {
-        check() ;
-        return other.getResourceModel() ;
-    }
-
-    private final void check() {
-        if ( ! condition.check()  ) {
-            throw new ARQException("ResultSet no longer valid (QueryExecution 
has been closed)") ;
-        }
-    }
-
-
-}
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/join/JoinKey.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/engine/join/JoinKey.java
index b8b2bea8cf..e28827fefe 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/join/JoinKey.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/join/JoinKey.java
@@ -47,16 +47,6 @@ public final class JoinKey extends ImmutableUniqueList<Var>
         return create(intersection) ;
     }
 
-    /** Make a JoinKey of single variable from the intersection of two sets. 
**/
-    @Deprecated
-    public static JoinKey createVarKey(Collection<Var> vars1, Collection<Var> 
vars2) {
-        for ( Var v : vars1 ) {
-            if ( vars2.contains(v) )
-                return create(v) ;
-        }
-        return empty() ;
-    }
-
     public static JoinKey create(Var var) {
         return createUnsafe(new Var[] { var });
     }
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/iterator/QueryIterService.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/iterator/QueryIterService.java
deleted file mode 100644
index 53160340c2..0000000000
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/iterator/QueryIterService.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.sparql.engine.main.iterator;
-
-import org.apache.jena.atlas.logging.Log ;
-import org.apache.jena.query.QueryExecException ;
-import org.apache.jena.riot.out.NodeFmtLib;
-import org.apache.jena.sparql.algebra.op.OpService ;
-import org.apache.jena.sparql.engine.ExecutionContext ;
-import org.apache.jena.sparql.engine.QueryIterator ;
-import org.apache.jena.sparql.engine.binding.Binding ;
-import org.apache.jena.sparql.engine.iterator.QueryIter;
-import org.apache.jena.sparql.engine.iterator.QueryIterCommonParent;
-import org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply;
-import org.apache.jena.sparql.engine.iterator.QueryIterSingleton;
-import org.apache.jena.sparql.engine.main.QC ;
-import org.apache.jena.sparql.exec.http.Service;
-import org.apache.jena.sparql.service.ServiceExecutorRegistry;
-import org.apache.jena.sparql.service.single.ChainingServiceExecutor;
-import org.apache.jena.sparql.util.Context;
-
-/**
- * This class continues to exist for compatibility with legacy service 
extensions.
- * New code should register extensions at a {@link ServiceExecutorRegistry}.
- * @deprecated To be removed. Migrate to {@link ServiceExecutorRegistry}.
- */
-@Deprecated(forRemoval = true, since = "4.6.0")
-public class QueryIterService extends QueryIterRepeatApply
-{
-    protected OpService opService ;
-
-    public QueryIterService(QueryIterator input, OpService opService, 
ExecutionContext execCxt)
-    {
-        super(input, execCxt) ;
-        Service.checkServiceAllowed(execCxt.getContext());
-        this.opService = opService ;
-    }
-
-    @Override
-    protected QueryIterator nextStage(Binding outerBinding) {
-        boolean silent = opService.getSilent();
-        ExecutionContext execCxt = getExecContext();
-        Context cxt = execCxt.getContext();
-        ServiceExecutorRegistry registry = ServiceExecutorRegistry.get(cxt);
-        QueryIterator svcExec = null;
-        OpService substitutedOp = (OpService)QC.substitute(opService, 
outerBinding);
-
-        try {
-            // ---- Find handler
-            if ( registry != null ) {
-                // FIXME This needs to be updated for chainable executors
-                for ( ChainingServiceExecutor factory : 
registry.getSingleChain() ) {
-                    // Internal consistency check
-                    if ( factory == null ) {
-                        Log.warn(this, "SERVICE <" + 
opService.getService().toString() + ">: Null item in custom 
ServiceExecutionRegistry");
-                        continue;
-                    }
-
-                    svcExec = factory.createExecution(substitutedOp, 
opService, outerBinding, execCxt, null);
-                    if ( svcExec != null )
-                        break;
-                }
-            }
-
-            // ---- Execute
-            if ( svcExec == null )
-                throw new QueryExecException("No SERVICE handler");
-            QueryIterator qIter = QueryIter.makeTracked(svcExec, 
getExecContext());
-            // Need to put the outerBinding as parent to every binding of the 
service call.
-            // There should be no variables in common because of the 
OpSubstitute.substitute
-            return new QueryIterCommonParent(qIter, outerBinding, 
getExecContext());
-        } catch (RuntimeException ex) {
-            if ( silent ) {
-                Log.warn(this, "SERVICE " + 
NodeFmtLib.strTTL(substitutedOp.getService()) + " : " + ex.getMessage());
-                // Return the input
-                return QueryIterSingleton.create(outerBinding, 
getExecContext());
-
-            }
-            throw ex;
-        }
-    }
-}
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/exec/http/QueryExecHTTP.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/exec/http/QueryExecHTTP.java
index 9e4582ad46..e03ddcfa22 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/exec/http/QueryExecHTTP.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/exec/http/QueryExecHTTP.java
@@ -54,6 +54,7 @@ import org.apache.jena.http.HttpEnv;
 import org.apache.jena.http.HttpLib;
 import org.apache.jena.query.*;
 import org.apache.jena.riot.*;
+import org.apache.jena.riot.lang.IteratorParsers;
 import org.apache.jena.riot.resultset.ResultSetLang;
 import org.apache.jena.riot.resultset.ResultSetReaderRegistry;
 import org.apache.jena.riot.web.HttpNames;
@@ -394,25 +395,21 @@ public class QueryExecHTTP implements QueryExec {
         return dataset;
     }
 
-    @SuppressWarnings("removal")
     private Iterator<Triple> execTriples(String acceptHeader) {
         Pair<InputStream, Lang> p = execRdfWorker(acceptHeader, 
WebContent.contentTypeRDFXML);
         InputStream input = p.getLeft();
         Lang lang = p.getRight();
         // Base URI?
-        // Unless N-Triples, this creates a thread.
-        Iterator<Triple> iter = RDFDataMgr.createIteratorTriples(input, lang, 
null);
+        Iterator<Triple> iter = IteratorParsers.createIteratorTriples(input, 
lang, null);
         return Iter.onCloseIO(iter, input);
     }
 
-    @SuppressWarnings("removal")
     private Iterator<Quad> execQuads() {
         checkNotClosed();
         Pair<InputStream, Lang> p = execRdfWorker(datasetAcceptHeader, 
WebContent.contentTypeNQuads);
         InputStream input = p.getLeft();
         Lang lang = p.getRight();
-        // Unless N-Quads, this creates a thread.
-        Iterator<Quad> iter = RDFDataMgr.createIteratorQuads(input, lang, 
null);
+        Iterator<Quad> iter = IteratorParsers.createIteratorQuads(input, lang, 
null);
         return Iter.onCloseIO(iter, input);
     }
 
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/expr/RegexEngine.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/expr/RegexEngine.java
index 214a4425cf..d365ce92b4 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/RegexEngine.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/RegexEngine.java
@@ -28,6 +28,7 @@ import org.apache.jena.ext.xerces_regex.REUtil;
 import org.apache.jena.ext.xerces_regex.RegexParseException;
 import org.apache.jena.ext.xerces_regex.RegularExpression;
 import org.apache.jena.query.ARQ;
+import org.apache.jena.sparql.ARQConstants;
 import org.apache.jena.sparql.util.Context;
 import org.apache.jena.sparql.util.Symbol;
 
@@ -52,21 +53,22 @@ public abstract class RegexEngine {
 
     private static RegexImpl regexImpl = chooseRegexImpl(ARQ.getContext());
 
-    // Set from the context.
-    @SuppressWarnings("removal")
     private static RegexImpl chooseRegexImpl(Context context) {
-        Object v = ARQ.getContext().get(ARQ.regexImpl, ARQ.javaRegex);
-        Symbol symbol = null;
-        if ( v instanceof Symbol sym )
-            symbol = sym;
-        if ( v instanceof String str )
-            symbol = Symbol.create(str);
-
-        if ( ARQ.javaRegex.equals(symbol) )
+        Object v = ARQ.getContext().get(ARQ.regexImpl);
+        if ( v == null )
             return RegexImpl.Java;
-        if ( ARQ.xercesRegex.equals(symbol) )
-            return RegexImpl.Xerces;
-        Log.warn(E_Regex.class, "Regex implementation not recognized : default 
to Java");
+
+        if ( v instanceof String str ) {
+            return switch(str) {
+                case ARQConstants.strJavaRegex -> RegexImpl.Java;
+                case ARQConstants.strXercesRegex -> RegexImpl.Xerces;
+                default -> throw new IllegalArgumentException("Unexpected 
value: " + str);
+            };
+        }
+        if ( v instanceof Symbol sym )
+            Log.error(E_Regex.class, "Regex implementation context setting is 
a symbol : default to Java");
+        else
+            Log.warn(E_Regex.class, "Regex implementation not recognized : 
default to Java");
         return RegexImpl.Java;
     }
 
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
index 9d17d9e6b7..6bfc904fe1 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
@@ -56,6 +56,8 @@ import org.apache.jena.sparql.util.XSDNumUtils;
 /**
  * Implementation of XQuery/XPath functions and operators.
  * http://www.w3.org/TR/xpath-functions/
+ * <p>
+ * See also {@link XSDNumUtils}.
  */
 public class XSDFuncOp
 {
@@ -252,33 +254,6 @@ public class XSDFuncOp
         }
     }
 
-    /**
-     * Decimal format, cast-to-string.
-     * <p>
-     * Decimal canonical form where integer values has no ".0" (as in XSD 1.1).
-     * <p>
-     * In XSD 1.0, canonical integer-valued decimal has a trailing ".0".
-     * In XSD 1.1 and F&amp;O v 3.1, xs:string cast of a decimal which is 
integer valued, does
-     * not have the trailing ".0".
-     * @deprecated Use {@link XSDNumUtils#stringFormatXSD11} instead
-     */
-    @Deprecated(forRemoval = true)
-    public static String canonicalDecimalStrNoIntegerDot(BigDecimal bd) {
-        return XSDNumUtils.stringFormatXSD11(bd);
-    }
-
-    /**
-     * Canonical decimal according to XML Schema Datatype 2 v1.0.
-     * Integer-valued decimals have a trailing ".0".
-     * (In XML Schema Datatype 1.1 they did not have a ".0".)
-     * <p>
-     * @deprecated Use {@link XSDNumUtils#stringFormatXSD10(BigDecimal)} 
instead
-     */
-    @Deprecated(forRemoval = true)
-    public static String canonicalDecimalStr(BigDecimal decimal) {
-        return XSDNumUtils.stringFormatXSD10(decimal);
-    }
-
     public static NodeValue max(NodeValue nv1, NodeValue nv2) {
         int x = compareNumeric(nv1, nv2);
         if ( x == Expr.CMP_LESS )
@@ -299,12 +274,6 @@ public class XSDFuncOp
         return NodeValue.booleanReturn(!b);
     }
 
-    /** @deprecated Renamed as {@link #effectiveBooleanValueAsNodeValue}. */
-    @Deprecated(forRemoval = true)
-    public static NodeValue booleanEffectiveValueAsNodeValue(NodeValue nv) {
-        return effectiveBooleanValueAsNodeValue(nv);
-    }
-
     /** {@literal F&O} fn:boolean */
     public static NodeValue effectiveBooleanValueAsNodeValue(NodeValue nv) {
         if ( nv.isBoolean() ) // "Optimization" (saves on object churn)
@@ -312,12 +281,6 @@ public class XSDFuncOp
         return NodeValue.booleanReturn(effectiveBooleanValue(nv));
     }
 
-    /** @deprecated Renamed as {@link #effectiveBooleanValue}. */
-    @Deprecated(forRemoval = true)
-    public static boolean booleanEffectiveValue(NodeValue nv) {
-        return effectiveBooleanValue(nv);
-    }
-
     /** Effective Boolean Value */
     public static boolean effectiveBooleanValue(NodeValue nv) {
         Objects.requireNonNull(nv, "NodeValue is null in call to 
effectiveBooleanValue");
@@ -1032,7 +995,7 @@ public class XSDFuncOp
              XSDDatatype.XSDgMonthDay,
              XSDDatatype.XSDgDay
             );
-    
+
     public static boolean isTemporalDatatype(XSDDatatype datatype) {
         return temporalDatatypes.contains(datatype);
     }
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/lang/SyntaxVarScope.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/lang/SyntaxVarScope.java
index 03f444657a..4996550fe4 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/SyntaxVarScope.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/SyntaxVarScope.java
@@ -88,12 +88,6 @@ public class SyntaxVarScope {
         checkExprVarGroupBy(query);
     }
 
-    /**
-     * @deprecated use {@link #checkElement}
-     */
-    @Deprecated(forRemoval = true)
-    public static void check(Element queryPattern) { 
checkElement(queryPattern); }
-
     /**
      * Apply the SPARQL scope rules to a query element (part or all of a 
WEHERE clause).
      * Throw {@link QueryParseException} if there is a violation.
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
deleted file mode 100644
index ebaa375bcc..0000000000
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.sparql.resultset;
-
-import org.apache.jena.atlas.lib.ListUtils;
-import org.apache.jena.query.ResultSet;
-import org.apache.jena.query.ResultSetFactory;
-import org.apache.jena.query.ResultSetRewindable;
-import org.apache.jena.rdf.model.Model;
-import org.apache.jena.sparql.exec.RowSet;
-
-/**
- * Comparison of ResultSets.
- * Note that reading ResultSets is destructive so consider using {@link 
ResultSetRewindable}
- * from {@link ResultSetFactory#makeRewindable}.
- *
- *  @deprecated Use {@link ResultsCompare}.
- */
-@Deprecated(forRemoval = true)
-public class ResultSetCompare
-{
-    /** Compare two result sets for equivalence.  Equivalence means:
-     * A row rs1 has one matching row in rs2, and vice versa.
-     * A row is only matched once.
-     * Rows match if they have the same variables with the same values.
-     * bNodes must map to a consistent other bNodes.  Value comparisons of 
nodes.
-     *
-     * Destructive - rs1 and rs2 are both read, possibly to exhaustion.
-     * @param rs1
-     * @param rs2
-     * @return true if they are equivalent
-     */
-
-    public static boolean equalsByValue(ResultSet rs1, ResultSet rs2) {
-        return equalsByValue(RowSet.adapt(rs1), RowSet.adapt(rs2));
-    }
-
-    /** See {@link #equalsByValue(ResultSet, ResultSet)} */
-    public static boolean equalsByValue(RowSet rs1, RowSet rs2) {
-        return ResultsCompare.equalsByValue(rs1, rs2);
-    }
-
-    /**
-     * Compare two result sets for equivalence.  Equivalence means:
-     * A row rs1 has one matching row in rs2, and vice versa.
-     * A row is only matched once.
-     * Rows match if they have the same variables with the same values,
-     * bNodes must map to a consistent other bNodes.
-     * Term comparisons of nodes.
-     *
-     * Destructive - rs1 and rs2 are both read, possibly to exhaustion.
-     * @param rs1
-     * @param rs2
-     * @return true if they are equivalent
-     */
-
-    public static boolean equalsByTerm(ResultSet rs1, ResultSet rs2) {
-        return ResultsCompare.equalsByTerm(rs1, rs2);
-    }
-
-    /**
-     * Compare two result sets for equivalence.  Equivalence means:
-     * A row rs1 has one matching row in rs2, and vice versa.
-     * A row is only matched once.
-     * Rows match if they have the same variables with the same values,
-     * bNodes must map to a consistent other bNodes.
-     * Term comparisons of nodes.
-     *
-     * Destructive - rs1 and rs2 are both read, possibly to exhaustion.
-     * @param rs1
-     * @param rs2
-     * @return true if they are equivalent
-     */
-    public static boolean equalsByTerm(RowSet rs1, RowSet rs2) {
-        return ResultsCompare.equalsByTerm(rs1, rs2);
-    }
-
-    /** Compare two result sets for equivalence.  Equivalence means:
-     * Each row in rs1 matches the same index row in rs2.
-     * Rows match if they have the same variables with the same values,
-     * bNodes must map to a consistent other bNodes.
-     * Value comparisons of nodes.
-     *
-     * @param rs1
-     * @param rs2
-     * @return true if they are equivalent
-     */
-    public static boolean equalsByValueAndOrder(ResultSet rs1, ResultSet rs2) {
-        return ResultsCompare.equalsByValueAndOrder(rs1, rs2);
-    }
-
-    /** See {@link #equalsByValueAndOrder(ResultSet, ResultSet)} */
-    public static boolean equalsByValueAndOrder(RowSet rs1, RowSet rs2) {
-        return ResultsCompare.equalsByValueAndOrder(rs1, rs2);
-    }
-
-    /** compare two result sets for equivalence.  Equivalence means:
-     * Each row in rs1 matches the same index row in rs2.
-     * Rows match if they have the same variables with the same values,
-     * bNodes must map to a consistent other bNodes.
-     * RDF term comparisons of nodes.
-     *
-     * @param rs1
-     * @param rs2
-     * @return true if they are equivalent
-     */
-    public static boolean equalsByTermAndOrder(ResultSet rs1, ResultSet rs2) {
-        return ResultsCompare.equalsByTermAndOrder(rs1, rs2);
-    }
-
-    /** See {@link #equalsByTermAndOrder(ResultSet, ResultSet)} */
-    public static boolean equalsByTermAndOrder(RowSet rs1, RowSet rs2) {
-        return ResultsCompare.equalsByTermAndOrder(rs1, rs2);
-    }
-
-    /**
-     * Compare two result sets for exact equality equivalence and order.
-     * Blank nodes must have same labels.
-     *
-     * @param rs1
-     * @param rs2
-     * @return true if they are equivalent
-     */
-    public static boolean equalsExact(ResultSet rs1, ResultSet rs2) {
-        return ResultsCompare.equalsExact(rs1, rs2);
-    }
-
-    /**
-     * Compare two result sets for exact equality equivalence and order.
-     * Blank nodes must have same labels.
-     *
-     * @param rs1
-     * @param rs2
-     * @return true if they are equivalent
-     */
-    public static boolean equalsExact(RowSet rs1, RowSet rs2) {
-        return ResultsCompare.equalsByTermAndOrder(rs1, rs2);
-    }
-
-    private static boolean compareHeader(RowSet rs1, RowSet rs2) {
-        if ( rs1 == null && rs2 == null )
-            return true;
-        if ( rs1 == null )
-            return false;
-        if ( rs2 == null )
-            return false;
-        return ListUtils.equalsUnordered(rs1.getResultVars(), 
rs2.getResultVars());
-    }
-
-    /*
-     * Compare two result sets for blank node isomorphism equivalence. Only 
does RDF
-     * term comparison.
-     *
-     * This method does not handle triple terms in results.
-     *
-     * @deprecated Use {@link #equalsByTerm(ResultSet, ResultSet)} */
-    @Deprecated(forRemoval = true)
-    public static boolean isomorphic(ResultSet rs1, ResultSet rs2) {
-        Model m1 = RDFOutput.encodeAsModel(rs1);
-        Model m2 = RDFOutput.encodeAsModel(rs2);
-        return m1.isIsomorphicWith(m2);
-    }
-
-    /**
-     * Compare two row sets for blank node isomorphism equivalence. Only does 
RDF
-     * term comparison.
-     *
-     * This method does not handle triple terms in results.
-     *
-     * @deprecated Use {@link #equalsByTerm(RowSet, RowSet)}
-     */
-    @Deprecated(forRemoval = true)
-    public static boolean isomorphic(RowSet rs1, RowSet rs2) {
-        return isomorphic(ResultSet.adapt(rs1), ResultSet.adapt(rs2));
-    }
-
-}
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/service/ServiceExec.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/service/ServiceExec.java
index 16476db523..aeacf5cb98 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/service/ServiceExec.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/service/ServiceExec.java
@@ -33,15 +33,6 @@ import org.apache.jena.sparql.util.Context;
  */
 public class ServiceExec {
 
-    /**
-     * Use {@link #exec(OpService, QueryIterator, ExecutionContext)} whose 
parameter order matches that of
-     * {@link ServiceExecutorBulk#createExecution(OpService, QueryIterator, 
ExecutionContext)}.
-     */
-    @Deprecated(forRemoval = true, since = "5.4.0")
-    public static QueryIterator exec(QueryIterator input, OpService opService, 
ExecutionContext execCxt) {
-        return exec(opService, input, execCxt);
-    }
-
     /**
      * Execute an OpService w.r.t. the execCxt's service executor registry.
      * This is the route from OpExecutor.
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/service/ServiceExecution.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/service/ServiceExecution.java
deleted file mode 100644
index 2076149e9a..0000000000
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/service/ServiceExecution.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.sparql.service;
-
-import org.apache.jena.sparql.engine.QueryIterator;
-import org.apache.jena.sparql.engine.main.iterator.QueryIterService;
-import org.apache.jena.sparql.service.single.ServiceExecutor;
-
-/**
- * Execution of a SERVICE clause in the context of {@link QueryIterService} 
applying an input binding.s
- * @see ServiceExecutor
- * @see ServiceExecutorRegistry
- *
- * @deprecated Deprecated in favor of QueryIterators that initialize lazily
- */
-@Deprecated(since = "4.6.0")
-public interface ServiceExecution {
-    public QueryIterator exec();
-}
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/service/ServiceExecutorFactory.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/service/ServiceExecutorFactory.java
deleted file mode 100644
index 0bdb01846b..0000000000
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/service/ServiceExecutorFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.sparql.service;
-
-import org.apache.jena.sparql.algebra.op.OpService;
-import org.apache.jena.sparql.engine.ExecutionContext;
-import org.apache.jena.sparql.engine.QueryIterator;
-import org.apache.jena.sparql.engine.binding.Binding;
-import org.apache.jena.sparql.service.single.ChainingServiceExecutor;
-import org.apache.jena.sparql.service.single.ServiceExecutor;
-
-/** Compatibility interface. Consider migrating legacy code to {@link 
ChainingServiceExecutor} or {@link ServiceExecutor} */
-@Deprecated(since = "4.6.0")
-@FunctionalInterface
-public interface ServiceExecutorFactory
-    extends ServiceExecutor
-{
-    @Override
-    default QueryIterator createExecution(OpService opExecute, OpService 
original, Binding binding, ExecutionContext execCxt) {
-        ServiceExecution svcExec = createExecutor(opExecute, original, 
binding, execCxt);
-        QueryIterator result = svcExec == null ? null : svcExec.exec();
-        return result;
-    }
-
-    ServiceExecution createExecutor(OpService opExecute, OpService original, 
Binding binding, ExecutionContext execCxt);
-}
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/service/ServiceExecutorRegistry.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/service/ServiceExecutorRegistry.java
index 29509743d0..ae67acef54 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/service/ServiceExecutorRegistry.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/service/ServiceExecutorRegistry.java
@@ -25,9 +25,6 @@ import java.util.Objects;
 
 import org.apache.jena.query.ARQ;
 import org.apache.jena.sparql.ARQConstants;
-import org.apache.jena.sparql.algebra.op.OpService;
-import org.apache.jena.sparql.engine.ExecutionContext;
-import org.apache.jena.sparql.engine.QueryIterator;
 import org.apache.jena.sparql.service.bulk.ChainingServiceExecutorBulk;
 import org.apache.jena.sparql.service.single.ChainingServiceExecutor;
 import org.apache.jena.sparql.service.single.ChainingServiceExecutorWrapper;
@@ -214,13 +211,4 @@ public class ServiceExecutorRegistry
         ServiceExecutorRegistry result = tmp == null ? new 
ServiceExecutorRegistry() : tmp.copy();
         return result;
     }
-
-    /**
-     * Execution
-     * @deprecated To be removed. Moved to {@link ServiceExec#exec}.
-     */
-    @Deprecated(forRemoval = true, since = "4.9.0")
-    public static QueryIterator exec(QueryIterator input, OpService opService, 
ExecutionContext execCxt) {
-        return ServiceExec.exec(input, opService, execCxt);
-    }
 }
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/ElementGroup.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/ElementGroup.java
index af68c551e3..c81c6a4863 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/ElementGroup.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/ElementGroup.java
@@ -43,14 +43,7 @@ public class ElementGroup extends Element {
         ensureBGP().addTriple(t);
     }
 
-    /** @deprecated Use {@link #addElement} */
-    @Deprecated(forRemoval = true)
-    public void addElementFilter(ElementFilter el) {
-        addElement(el);
-    }
-
     // Ensure the current top element is a basic graph pattern.
-
     private ElementTriplesBlock ensureBGP() {
         if ( elements.size() == 0 )
             return pushBGP();
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java
index 44a7a12730..7de683b917 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java
@@ -67,12 +67,6 @@ public class QueryTransformOps {
         return query2;
     }
 
-    /** @deprecated Use {@link #replaceVars} */
-    @Deprecated
-    public static Query transform(Query query, Map<Var, ? extends Node> 
substitutions) {
-        return replaceVars(query, substitutions);
-    }
-
     /**
      * Transform a query based on a mapping from {@link Var} variable to 
replacement {@link Node}.
      * The replacement can be a constant or another variable.
@@ -86,12 +80,6 @@ public class QueryTransformOps {
         return transformSubstitute(query, substitutions);
     }
 
-    /** @deprecated Use {@link #queryReplaceVars} */
-    @Deprecated
-    public static Query transformQuery(Query query, Map<String, ? extends 
RDFNode> substitutions)    {
-        return queryReplaceVars(query, substitutions);
-    }
-
     /**
      * Transform a query based on a mapping from variable name to replacement
      * {@link RDFNode} (a {@link Resource} (or blank node) or a {@link 
Literal}).
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeFactoryExtra.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeFactoryExtra.java
index 1ec4d255d3..02551f862b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeFactoryExtra.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeFactoryExtra.java
@@ -21,12 +21,9 @@ package org.apache.jena.sparql.util ;
 import java.util.Calendar ;
 
 import org.apache.jena.atlas.lib.DateTimeUtils ;
-import org.apache.jena.datatypes.RDFDatatype ;
-import org.apache.jena.datatypes.TypeMapper ;
 import org.apache.jena.datatypes.xsd.XSDDatatype ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
-import org.apache.jena.graph.TextDirection;
 import org.apache.jena.graph.impl.LiteralLabel ;
 import org.apache.jena.riot.RiotException ;
 import org.apache.jena.riot.system.PrefixMap ;
@@ -86,37 +83,6 @@ public class NodeFactoryExtra {
         return node ;
     }
 
-    /**
-     * Create a literal Node, when the datatype, if given, is a string.
-     * @deprecated Use {@link NodeFactory#createLiteral(String, String, 
RDFDatatype)}
-     */
-    @Deprecated(forRemoval = true)
-    public static Node createLiteralNode(String lex, String lang, String 
datatypeURI) {
-        return createLiteralNode(lex, lang, null, datatypeURI);
-    }
-
-    /**
-     * Create a literal Node, when the datatype, if given, is a string.
-     * @deprecated Use {@link NodeFactory#createLiteral(String, String, 
String, RDFDatatype)}
-     */
-    @Deprecated(forRemoval = true)
-    public static Node createLiteralNode(String lex, String lang, String 
baseDir, String datatypeURI) {
-        if ( datatypeURI != null && datatypeURI.equals("") )
-            datatypeURI = null ;
-
-        if ( lang != null && lang.equals("") )
-            lang = null ;
-
-        RDFDatatype dType = null ;
-        if ( datatypeURI != null )
-            dType = TypeMapper.getInstance().getSafeTypeByName(datatypeURI) ;
-
-        TextDirection baseDirection = TextDirection.createOrNull(baseDir);
-
-        Node n = NodeFactory.createLiteral(lex, lang, baseDirection, dType) ;
-        return n ;
-    }
-
     /**
      * Node to int
      *
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/Utils.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/util/Utils.java
deleted file mode 100644
index 6eea93f01e..0000000000
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/Utils.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.sparql.util ;
-
-import java.math.BigDecimal ;
-
-/**
- * Miscellaneous operations - not query specific
- * @deprecated Use XSDNumUtils
- */
-@Deprecated(forRemoval = true)
-public class Utils {
-
-    /**
-     * @deprecated Use {@link XSDNumUtils#stringForm(BigDecimal)}
-     */
-    @Deprecated(forRemoval = true)
-    public static String stringForm(BigDecimal decimal) {
-        return XSDNumUtils.stringForm(decimal);
-    }
-
-    /**
-     * @deprecated Use {@link XSDNumUtils#stringForm(double)}
-     */
-    @Deprecated(forRemoval = true)
-    public static String stringForm(double d) {
-        return XSDNumUtils.stringForm(d);
-    }
-
-    /**
-     * @deprecated Use {@link XSDNumUtils#stringForm(float)}
-     */
-    @Deprecated(forRemoval = true)
-    public static String stringForm(float f) {
-        return XSDNumUtils.stringForm(f);
-    }
-}
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/util/XSDNumUtils.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/util/XSDNumUtils.java
index 453602e6e3..c6bfe286b1 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/XSDNumUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/XSDNumUtils.java
@@ -119,12 +119,29 @@ public class XSDNumUtils {
         return canonicalDecimalStrWithDot(bd);
     }
 
-    /** Strict XSD 1.0 format for {@code xsd:decimal}. */
+
+    /**
+     * Strict XSD 1.0 format for {@code xsd:decimal}.
+     * <p>
+     * Decimal canonical form where integer values has a ".0" (as in XSD 1.0).
+     * <p>
+     * In XSD 1.0, canonical integer-valued decimal has a trailing ".0".
+     * In XSD 1.1 and F&amp;O v 3.1, xs:string cast of a decimal which is 
integer valued, does
+     * not have the trailing ".0".
+     */
     public static String stringFormatXSD10(BigDecimal bd) {
         return canonicalDecimalStrWithDot(bd);
     }
 
-    /** Strict XSD 1.1 format for {@code xsd:decimal}. */
+    /**
+     * Strict XSD 1.1 format for {@code xsd:decimal}.
+     * <p>
+     * Decimal canonical form where integer values has no ".0" (as in XSD 1.1).
+     * <p>
+     * In XSD 1.0, canonical integer-valued decimal has a trailing ".0".
+     * In XSD 1.1 and F&amp;O v 3.1, xs:string cast of a decimal which is 
integer valued, does
+     * not have the trailing ".0".
+     */
     public static String stringFormatXSD11(BigDecimal bd) {
         return canonicalDecimalStrNoIntegerDot(bd);
     }
diff --git a/jena-arq/src/main/java/org/apache/jena/update/UpdateStreaming.java 
b/jena-arq/src/main/java/org/apache/jena/update/UpdateStreaming.java
index bee2c28c7f..feebfeac74 100644
--- a/jena-arq/src/main/java/org/apache/jena/update/UpdateStreaming.java
+++ b/jena-arq/src/main/java/org/apache/jena/update/UpdateStreaming.java
@@ -31,18 +31,6 @@ import org.apache.jena.sparql.util.Context;
 
 public class UpdateStreaming {
 
-    /**
-     * Create an UpdateExecution appropriate to the datasetGraph, or null if no
-     * available factory to make an UpdateExecution
-     *
-     * @param datasetGraph
-     * @return UpdateExecution
-     */
-    @Deprecated(forRemoval = true)
-    public static UpdateProcessorStreaming createStreaming(DatasetGraph 
datasetGraph) {
-        return makeStreaming(datasetGraph, null, null);
-    }
-
     /**
      * Create an UpdateExecution appropriate to the datasetGraph, or null if no
      * available factory to make an UpdateExecution
@@ -84,19 +72,6 @@ public class UpdateStreaming {
         return makeStreaming(dataset.asDatasetGraph(), null, context);
     }
 
-    /**
-     * Create an UpdateExecution appropriate to the datasetGraph, or null if no
-     * available factory to make an UpdateExecution
-     *
-     * @param datasetGraph
-     * @param context (null means use merge of global and graph store context))
-     * @return UpdateExecution
-     */
-    @Deprecated(forRemoval = true)
-    public static UpdateProcessorStreaming createStreaming(DatasetGraph 
datasetGraph, Context context) {
-        return makeStreaming(datasetGraph, null, context);
-    }
-
     // Everything for local updates comes through one of these two make methods
     /*package*/ static UpdateProcessorStreaming makeStreaming(DatasetGraph 
datasetGraph, Binding inputBinding, Context context) {
         Prologue prologue = new Prologue();
@@ -105,5 +80,4 @@ public class UpdateStreaming {
         UpdateProcessorStreamingBase uProc = new 
UpdateProcessorStreamingBase(datasetGraph, inputBinding, prologue, cxt, f);
         return uProc;
     }
-
 }
diff --git a/jena-arq/src/main/java/org/apache/jena/web/FileSender.java 
b/jena-arq/src/main/java/org/apache/jena/web/FileSender.java
deleted file mode 100644
index 2a7f26bef1..0000000000
--- a/jena-arq/src/main/java/org/apache/jena/web/FileSender.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.web;
-
-import java.io.InputStream;
-import java.net.URI;
-import java.net.http.HttpClient;
-import java.net.http.HttpRequest;
-import java.net.http.HttpRequest.BodyPublishers;
-import java.net.http.HttpResponse;
-import java.net.http.HttpResponse.BodyHandlers;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-import org.apache.jena.http.HttpLib;
-import org.apache.jena.riot.WebContent;
-import org.apache.jena.riot.web.HttpNames;
-
-/**
- * @deprecated To be removed - do not use.
- */
-@Deprecated(forRemoval = true)
-public class FileSender {
-
-    static record Entry(String fileName, String content, String contentType) {}
-
-    private List<Entry> items = new ArrayList<>();
-
-    private final String url;
-
-    public FileSender(String url ) { this.url = url; }
-
-    public void add(String filename, String content, String type) {
-        Entry e = new Entry(filename, content, type);
-        items.add(e);
-    }
-
-    /** Return response code */
-    public int send(String method) {
-        String WNL = "\r\n";   // Web newline
-        String boundary = UUID.randomUUID().toString();
-
-        // This is for testing so build a body.
-        StringBuilder strBuidler = new StringBuilder();
-        for ( Entry e : items ) {
-            strBuidler.append("--" + boundary+WNL);
-            strBuidler.append("Content-Disposition: form-data; name=\"FILE\"; 
filename=\""+e.fileName+"\""+WNL);
-            strBuidler.append("Content-Type: 
"+e.contentType+";charset=UTF-8"+WNL);
-            strBuidler.append(WNL);
-            strBuidler.append(e.content);
-            strBuidler.append(WNL);
-        }
-        strBuidler.append("--" + boundary + "--"+WNL);
-
-        URI uri = HttpLib.toRequestURI(url);
-        String body = strBuidler.toString();
-        String ctHeaderValue = WebContent.contentTypeMultipartFormData+"; 
boundary="+boundary;
-
-        HttpRequest request = HttpRequest
-                .newBuilder(uri)
-                .setHeader(HttpNames.hContentType, ctHeaderValue)
-                .method(method, BodyPublishers.ofString(body))
-                .build();
-        HttpResponse<InputStream> response = 
HttpLib.executeJDK(HttpClient.newHttpClient(), request, 
BodyHandlers.ofInputStream());
-        HttpLib.handleResponseNoBody(response);
-        return response.statusCode();
-    }
-}
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/TS_RiotGeneral.java 
b/jena-arq/src/test/java/org/apache/jena/riot/TS_RiotGeneral.java
index 3b529ab722..23579459b6 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/TS_RiotGeneral.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/TS_RiotGeneral.java
@@ -28,7 +28,7 @@ import org.junit.platform.suite.api.Suite;
     , TestSyntaxDetermination.class
     , TestJenaReaderRIOT.class
     , TestReadData.class
-    , TestRiotReader.class
+    , TestRiotParserIterators.class
     , TestParserRegistry.class
     , TestRDFParser.class
     , TestRDFWriter.class
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/TestRiotReader.java 
b/jena-arq/src/test/java/org/apache/jena/riot/TestRiotParserIterators.java
similarity index 63%
rename from jena-arq/src/test/java/org/apache/jena/riot/TestRiotReader.java
rename to 
jena-arq/src/test/java/org/apache/jena/riot/TestRiotParserIterators.java
index 6c273b2cb5..80090de9bc 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/TestRiotReader.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/TestRiotParserIterators.java
@@ -24,35 +24,35 @@ import static 
org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayInputStream;
+import java.io.InputStream;
 import java.util.Iterator;
 
 import org.junit.jupiter.api.Test;
 
+import org.apache.jena.atlas.iterator.IteratorCloseable;
 import org.apache.jena.atlas.lib.Bytes;
 import org.apache.jena.atlas.lib.StrUtils;
 import org.apache.jena.graph.Triple;
+import org.apache.jena.riot.lang.IteratorParsers;
+import org.apache.jena.riot.system.AsyncParser;
 
-@SuppressWarnings("removal")
-public class TestRiotReader {
+public class TestRiotParserIterators {
     @Test
     public void testCreateIteratorTriples_01() {
-        Iterator<Triple> it = RDFDataMgr.createIteratorTriples(new 
ByteArrayInputStream(new byte[0]),
-                                                               
RDFLanguages.NTRIPLES, "http://example/";);
+        Iterator<Triple> it = IteratorParsers.createIteratorNTriples(new 
ByteArrayInputStream(new byte[0]));
         assertFalse(it.hasNext());
     }
 
     @Test
     public void testEncodedUTF8() {
-        Iterator<Triple> it = RDFDataMgr.createIteratorTriples(new 
ByteArrayInputStream(Bytes.asUTF8bytes("<a> <b> \"\\u263A\" .")),
-                                                               
RDFLanguages.NTRIPLES, null);
+        Iterator<Triple> it = IteratorParsers.createIteratorNTriples(new 
ByteArrayInputStream(Bytes.asUTF8bytes("<a> <b> \"\\u263A\" .")));
         assertTrue(it.hasNext());
         assertEquals("☺", it.next().getObject().getLiteralLexicalForm());
     }
 
     @Test
     public void testRawUTF8() {
-        Iterator<Triple> it = RDFDataMgr.createIteratorTriples(new 
ByteArrayInputStream(Bytes.asUTF8bytes("<a> <b> \"☺\" .")),
-                                                               
RDFLanguages.NTRIPLES, null);
+        Iterator<Triple> it = IteratorParsers.createIteratorNTriples(new 
ByteArrayInputStream(Bytes.asUTF8bytes("<a> <b> \"☺\" .")));
         assertTrue(it.hasNext());
         assertEquals("☺", it.next().getObject().getLiteralLexicalForm());
     }
@@ -71,16 +71,19 @@ public class TestRiotReader {
                 "</rdf:RDF>");
         //@formatter:on
 
-        Iterator<Triple> it = RDFDataMgr.createIteratorTriples(new 
ByteArrayInputStream(Bytes.asUTF8bytes(x)),
-                                                               
RDFLanguages.RDFXML,
-                                                               
"http://example/";);
-        assertTrue(it.hasNext());
-        Triple t = it.next();
-        assertNotNull(t);
-        assertEquals("http://example/s";, t.getSubject().getURI());
-        assertEquals("http://example/p";, t.getPredicate().getURI());
-        assertEquals("http://example/o";, t.getObject().getURI());
+        InputStream input = new ByteArrayInputStream(Bytes.asUTF8bytes(x));
+        IteratorCloseable<Triple> it = AsyncParser.asyncParseTriples(input, 
Lang.RDFXML, "http://example/";);
+        try {
+            assertTrue(it.hasNext());
+            Triple t = it.next();
+            assertNotNull(t);
+            assertEquals("http://example/s";, t.getSubject().getURI());
+            assertEquals("http://example/p";, t.getPredicate().getURI());
+            assertEquals("http://example/o";, t.getObject().getURI());
 
-        assertFalse(it.hasNext());
+            assertFalse(it.hasNext());
+        } finally {
+            it.close();
+        }
     }
 }
diff --git 
a/jena-arq/src/test/java/org/apache/jena/system/TestJenaTitanium.java 
b/jena-arq/src/test/java/org/apache/jena/system/TestJenaTitanium.java
index 1ed5738bd8..7577d62d1c 100644
--- a/jena-arq/src/test/java/org/apache/jena/system/TestJenaTitanium.java
+++ b/jena-arq/src/test/java/org/apache/jena/system/TestJenaTitanium.java
@@ -20,29 +20,14 @@ package org.apache.jena.system;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import java.io.IOException;
-import java.io.StringWriter;
-
-import com.apicatalog.rdf.RdfDataset;
-import com.apicatalog.rdf.io.RdfWriter;
-import com.apicatalog.rdf.io.error.RdfWriterException;
-
 import org.junit.jupiter.api.Test;
 
-import org.apache.jena.atlas.lib.StrUtils;
-import org.apache.jena.graph.NodeFactory;
 import org.apache.jena.riot.RDFParser;
-import org.apache.jena.riot.system.JenaTitanium;
 import org.apache.jena.sparql.core.DatasetGraph;
 import org.apache.jena.sparql.core.DatasetGraphFactory;
-import org.apache.jena.sparql.core.Quad;
-import org.apache.jena.sparql.sse.SSE;
-import org.apache.jena.sparql.util.IsoMatcher;
 
-@SuppressWarnings({"removal", "deprecation"})
 public class TestJenaTitanium {
 
     @Test
@@ -73,64 +58,4 @@ public class TestJenaTitanium {
         assertTrue(dsg.prefixes().containsPrefix(""));
         assertFalse(dsg.prefixes().containsPrefix("bar"));
     }
-
-    @Test public void convertDataset() throws IOException, RdfWriterException {
-        String dsStr = StrUtils.strjoinNL
-                ("(dataset"
-                , "  (_ :s :p :o)"
-                , "  (_ :s :p 123)"
-                , "  (_ :s :p 123.5)"
-                , "  (_ :s :p 1e10)"
-                , "  (_ :s :p '2021-08-10'^^xsd:date)"
-                , "  (_ :s :p 'foo')"
-                , "  (:g1 :s :p :o)"
-                , "  (:g1 _:x :p :o)"
-                , "  (:g2 _:x :p 123)"
-                , "  (:g2 _:x :p 'abc'@en)"
-                , "  (_:x _:x :p _:x)"
-                //, "  (_ <<:s :q :z>> :p <<:s :q :z>>)"
-                ,")"
-                );
-        DatasetGraph dsg1 = SSE.parseDatasetGraph(dsStr);
-        //RDFDataMgr.write(System.out, dsg1, Lang.NQUADS);
-
-        RdfDataset rdfDataset = JenaTitanium.convert(dsg1);
-
-        // Check the RdfDataset
-        try ( StringWriter writer = new StringWriter() ) {
-            RdfWriter w = new com.apicatalog.rdf.io.nquad.NQuadsWriter(writer);
-            w.write(rdfDataset);
-            String s = writer.toString();
-            assertTrue(s.contains("_:b0"));
-            assertTrue(s.contains("http://example/p";));
-            assertTrue(s.contains("@en"));
-        }
-
-        DatasetGraph dsg2 = JenaTitanium.convert(rdfDataset);
-        assertTrue(IsoMatcher.isomorphic(dsg1, dsg2));
-    }
-
-    @Test public void convertDatasetWithNullGraph() throws IOException, 
RdfWriterException {
-        // .createTxnMem() returns an implementation that does not allow 
tripleInQuad
-        DatasetGraph dsg1 = DatasetGraphFactory.create();
-
-        // Add a triple in quad -- the graph term is set to null.
-        // The S, P, O terms can be whatever else.
-        // See: https://github.com/apache/jena/issues/2578
-        dsg1.add(Quad.create(
-                Quad.tripleInQuad,
-                NodeFactory.createBlankNode(),
-                NodeFactory.createBlankNode(),
-                NodeFactory.createBlankNode()
-        ));
-
-        RdfDataset rdfDataset = JenaTitanium.convert(dsg1);
-
-        // Try converting it back – it should not output any nulls.
-        DatasetGraph dsg2 = JenaTitanium.convert(rdfDataset);
-        dsg2.find().forEachRemaining(q->{
-            assertNotNull(q.getGraph());
-            assertTrue(q.isDefaultGraph());
-        });
-    }
 }
diff --git 
a/jena-integration-tests/src/test/java/org/apache/jena/test/service/TestCustomServiceExecutor.java
 
b/jena-integration-tests/src/test/java/org/apache/jena/test/service/TestCustomServiceExecutor.java
index 91f3bf9633..4d5941e3ea 100644
--- 
a/jena-integration-tests/src/test/java/org/apache/jena/test/service/TestCustomServiceExecutor.java
+++ 
b/jena-integration-tests/src/test/java/org/apache/jena/test/service/TestCustomServiceExecutor.java
@@ -41,7 +41,6 @@ import org.apache.jena.sparql.algebra.op.OpService;
 import org.apache.jena.sparql.core.DatasetGraphFactory;
 import org.apache.jena.sparql.core.Var;
 import org.apache.jena.sparql.engine.ExecutionContext;
-import org.apache.jena.sparql.engine.QueryIterator;
 import org.apache.jena.sparql.engine.binding.Binding;
 import org.apache.jena.sparql.engine.iterator.QueryIter;
 import org.apache.jena.sparql.exec.QueryExec;
@@ -134,7 +133,7 @@ public class TestCustomServiceExecutor {
 
     /**
      * A test case where custom executors both forward requests down the chain 
as well
-     * as start the chain over using {@link ServiceExec#exec(QueryIterator, 
OpService, ExecutionContext)}.
+     * as start the chain over using {@link ServiceExec#exec}.
      *
      * This test case tests the chain for bulk execution.
      */

Reply via email to