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

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

commit 44572a007732e6efef4bc75d6ab411f282999d62
Author: Andy Seaborne <[email protected]>
AuthorDate: Fri Jun 19 23:26:41 2026 +0100

    GH-4012: Adjust to rdf-tests changes
---
 .../riot/system/streammgr/JenaIOEnvironment.java   |   5 +-
 .../sparql/vocabulary/ResultSetGraphVocab.java     |  93 +++--
 .../apache/jena/sparql/vocabulary/TestDAWG.java    | 158 ++++----
 .../sparql/vocabulary/TestManifestUpdate_11.java   |  90 ++---
 .../jena/sparql/vocabulary/TestManifestX.java      |  68 ++--
 .../jena/sparql/vocabulary/TestManifest_11.java    |  60 +--
 .../jena/sparql/vocabulary/TestManifest_12.java    |  10 +-
 .../src/main/java/org/apache/jena/system/G.java    |   8 +
 .../org/apache/jena/arq/junit/OmittedTest.java     |   3 +-
 .../apache/jena/arq/junit/manifest/Manifest.java   |  32 +-
 .../jena/arq/junit/manifest/ManifestEntry.java     |  94 ++++-
 .../org/apache/jena/arq/junit/riot/RiotTests.java  |   7 +-
 .../apache/jena/arq/junit/riot/VocabLangRDF.java   |   5 +-
 .../SparqlSpecVersion.java}                        |  39 +-
 .../apache/jena/arq/junit/sparql/SparqlTests.java  | 159 +++++---
 .../jena/arq/junit/sparql/tests/QueryEvalTest.java |  28 +-
 .../arq/junit/sparql/tests/SerializationTest.java  |   2 +-
 .../jena/arq/junit/sparql/tests/SparqlTestLib.java |   4 -
 .../arq/junit/sparql/tests/UpdateEvalTest.java     |  10 +-
 .../org/apache/jena/sparql/Scripts_SPARQL.java     |   2 +-
 .../testing/ARQ/PropertyFunctions/manifest.ttl     | 346 +++++++++-------
 jena-arq/testing/ARQ/Scripting/manifest.ttl        |  44 ++-
 jena-arq/testing/ARQ/ValueTesting/manifest.ttl     | 101 +++--
 .../java/org/apache/jena/util/LocationMapper.java  | 440 +++++++++------------
 .../org/apache/jena/vocabulary/TestManifest.java   | 118 +++---
 25 files changed, 1026 insertions(+), 900 deletions(-)

diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/system/streammgr/JenaIOEnvironment.java
 
b/jena-arq/src/main/java/org/apache/jena/riot/system/streammgr/JenaIOEnvironment.java
index 5b43234823..e0d51dc929 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/riot/system/streammgr/JenaIOEnvironment.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/riot/system/streammgr/JenaIOEnvironment.java
@@ -35,8 +35,9 @@ import org.apache.jena.vocabulary.LocationMappingVocab;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/** Code for using the general facilities of the location mapper/ filemanager 
subsystem
- *  and set up for Jena usage. e.g. find a location mapper with RDf 
description.
+/**
+ * Code for using the general facilities of the location mapper/ filemanager 
subsystem
+ * and set up for Jena usage. e.g. find a location mapper with RDf description.
  */
 public class JenaIOEnvironment
 {
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/ResultSetGraphVocab.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/ResultSetGraphVocab.java
index 2a4d1c8a5c..f986ad34c9 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/ResultSetGraphVocab.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/ResultSetGraphVocab.java
@@ -21,63 +21,58 @@
 
 package org.apache.jena.sparql.vocabulary ;
 
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.rdf.model.ModelFactory ;
 import org.apache.jena.rdf.model.Property ;
 import org.apache.jena.rdf.model.Resource ;
- 
+import org.apache.jena.rdf.model.ResourceFactory;
+
 /**
- * Vocabulary definitions from result-set.n3 
- * @author Auto-generated by schemagen on 10 Jun 2006 18:47 
+ * Vocabulary definitions from result-set.n3
  */
 public class ResultSetGraphVocab {
-    /** <p>The RDF model that holds the vocabulary terms</p> */
-    private static Model m_model = ModelFactory.createDefaultModel();
-    
-    /** <p>The namespace of the vocabulary as a string</p> */
+    /** The namespace of the vocabulary as a string */
     public static final String NS = 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#";;
-    
-    /** <p>The namespace of the vocabulary as a string</p>
+
+    /** The namespace of the vocabulary as a string
      *  @see #NS */
     public static String getURI() {return NS;}
-    
-    /** <p>The namespace of the vocabulary as a resource</p> */
-    public static final Resource NAMESPACE = m_model.createResource( NS );
-    
-    /** <p>Boolean result</p> */
-    public static final Property p_boolean = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#boolean"; );
-    
-    /** <p>Variable name</p> */
-    public static final Property value = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#value"; );
-    
-    /** <p>Variable name</p> */
-    public static final Property variable = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#variable"; );
-    
-    /** <p>Index for ordered result sets</p> */
-    public static final Property index = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#index"; );
-    
-    /** <p>Multi-occurrence property associating a result solution (row) 
resource to 
-     *  a single (variable, value) binding</p>
+
+    /** The namespace of the vocabulary as a resource */
+    public static final Resource NAMESPACE = ResourceFactory.createResource( 
NS );
+
+    /** Boolean result */
+    public static final Property p_boolean = ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#boolean"; );
+
+    /** Variable name */
+    public static final Property value = ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#value"; );
+
+    /** Variable name */
+    public static final Property variable = ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#variable"; );
+
+    /** Index for ordered result sets */
+    public static final Property index = ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#index"; );
+
+    /** Multi-occurrence property associating a result solution (row) resource 
to
+     *  a single (variable, value) binding
      */
-    public static final Property binding = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#binding"; );
-    
-    /** <p>MultivaluedName of a variable used in the result set</p> */
-    public static final Property resultVariable = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#resultVariable"; );
-    
-    /** <p>Number of rows in the result table</p> */
-    public static final Property size = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#size"; );
-    
-    public static final Property solution = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#solution"; );
-    
-    /** <p>Class of things that represent a single (variable, value) 
pairing</p> */
-    public static final Resource ResultBinding = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#ResultBinding"; );
-    
-    /** <p>Class of things that represent a row in the result table - one 
solution to 
-     *  the query</p>
+    public static final Property binding = ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#binding"; );
+
+    /** MultivaluedName of a variable used in the result set */
+    public static final Property resultVariable = 
ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#resultVariable"; );
+
+    /** Number of rows in the result table */
+    public static final Property size = ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#size"; );
+
+    public static final Property solution = ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#solution"; );
+
+    /** Class of things that represent a single (variable, value) pairing */
+    public static final Resource ResultBinding = 
ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#ResultBinding"; );
+
+    /** Class of things that represent a row in the result table - one 
solution to
+     *  the query
      */
-    public static final Resource ResultSolution = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#ResultSolution"; );
-    
-    /** <p>Class of things that represent the result set</p> */
-    public static final Resource ResultSet = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#ResultSet"; );
-    
+    public static final Resource ResultSolution = 
ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#ResultSolution"; );
+
+    /** Class of things that represent the result set */
+    public static final Resource ResultSet = ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/result-set#ResultSet"; );
+
 }
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestDAWG.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestDAWG.java
index 6ede12a362..8ef6ff1fcb 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestDAWG.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestDAWG.java
@@ -21,96 +21,90 @@
 
 package org.apache.jena.sparql.vocabulary;
 
-/* CVS $Id: TestDAWG.java,v 1.1 2005/02/09 14:59:46 andy_seaborne Exp $ */
- 
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.rdf.model.ModelFactory ;
 import org.apache.jena.rdf.model.Property ;
 import org.apache.jena.rdf.model.Resource ;
- 
+import org.apache.jena.rdf.model.ResourceFactory;
+
 /**
- * Vocabulary definitions from test-dawg.n3 
- * @author Auto-generated by schemagen on 26 Jul 2004 15:01 
+ * Vocabulary definitions from test-dawg.n3
+ * @author Auto-generated by schemagen on 26 Jul 2004 15:01
  */
 public class TestDAWG {
-    /** <p>The RDF model that holds the vocabulary terms</p> */
-    private static Model m_model = ModelFactory.createDefaultModel();
-    
-    /** <p>The namespace of the vocabulary as a string ({@value})</p> */
+    /** The namespace of the vocabulary as a string ({@value}) */
     public static final String NS = 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#";;
-    
-    /** <p>The namespace of the vocabulary as a string</p>
+
+    /** The namespace of the vocabulary as a string
      *  @see #NS */
     public static String getURI() {return NS;}
-    
-    /** <p>The namespace of the vocabulary as a resource</p> */
-    public static final Resource NAMESPACE = m_model.createResource( NS );
-    
-    public static final Property queryForm = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#queryForm"; );
-    
-    /** <p>Indicates that while the test should pass, it may generate a 
warning.</p> */
-    public static final Property warning = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#warning"; );
-    
-    /** <p>Contains a pointer to the associated issue on the RDF Data Access 
Working 
-     *  Group Tracking document.</p>
+
+    /** The namespace of the vocabulary as a resource */
+    public static final Resource NAMESPACE = ResourceFactory.createResource( 
NS );
+
+    public static final Property queryForm = ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#queryForm"; );
+
+    /** Indicates that while the test should pass, it may generate a warning. 
*/
+    public static final Property warning = ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#warning"; );
+
+    /** Contains a pointer to the associated issue on the RDF Data Access 
Working
+     *  Group Tracking document.
      */
-    public static final Property issue = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#issue"; );
-    
-    /** <p>Contains a reference to the minutes of the RDF Data Access Working 
Group where 
-     *  the test case status was last changed.</p>
+    public static final Property issue = ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#issue"; );
+
+    /** Contains a reference to the minutes of the RDF Data Access Working 
Group where
+     *  the test case status was last changed.
      */
-    public static final Property approval = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#approval"; );
-    
-    public static final Property resultForm = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#resultForm"; );
-    
-    /** <p>A human-readable summary of the test case.</p> */
-    public static final Property description = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#description"; );
-    
-    public static final Property status = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#status"; );
-    
-    /** <p>Super class of all test status classes</p> */
-    public static final Resource Status = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#Status"; );
-    
-    /** <p>Super class of all result forms</p> */
-    public static final Resource ResultForm = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#ResultForm"; );
-    
-    /** <p>Super class of all query forms</p> */
-    public static final Resource QueryForm = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#QueryForm"; );
-    
-    /** <p>Class of result expected to be from a SELECT query</p> */
-    public static final Resource resultResultSet = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#resultResultSet"; );
-    
-    /** <p>Class of queries that are seeking a constructed graph</p> */
-    public static final Resource queryConstruct = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#queryConstruct"; );
-    
-    /** <p>Class of queries that are seeking a yes/no question</p> */
-    public static final Resource queryAsk = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#queryAsk"; );
-    
-    /** <p>Class of result expected to be a graph</p> */
-    public static final Resource resultGraph = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#resultGraph"; );
-    
-    /** <p>Class of tests that have not been classified</p> */
-    public static final Resource NotClassified = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#NotClassified"; );
-    
-    /** <p>Class of result expected to be a boolean</p> */
-    public static final Resource booleanResult = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#booleanResult"; );
-    
-    /** <p>Class of tests that are Approved</p> */
-    public static final Resource Approved = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#Approved"; );
-    
-    /** <p>Class of tests that have been Withdrawn</p> */
-    public static final Resource Withdrawn = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#Withdrawn"; );
-    
-    /** <p>Class of tests that are Obsolete</p> */
-    public static final Resource Obsoleted = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#Obsoleted"; );
-    
-    /** <p>Class of queries that are seeking a descriptive graph</p> */
-    public static final Resource queryDescribe = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#queryDescribe"; );
-    
-    /** <p>Class of queries that are seeking variable bindings</p> */
-    public static final Resource querySelect = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#querySelect"; );
-    
-    /** <p>Class of tests that are Rejected</p> */
-    public static final Resource Rejected = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#Rejected"; );
-    
+    public static final Property approval = ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#approval"; );
+
+    public static final Property resultForm = ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#resultForm"; );
+
+    /** A human-readable summary of the test case. */
+    public static final Property description = ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#description"; );
+
+    public static final Property status = ResourceFactory.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#status"; );
+
+    /** Super class of all test status classes */
+    public static final Resource Status = ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#Status"; );
+
+    /** Super class of all result forms */
+    public static final Resource ResultForm = ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#ResultForm"; );
+
+    /** Super class of all query forms */
+    public static final Resource QueryForm = ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#QueryForm"; );
+
+    /** Class of result expected to be from a SELECT query */
+    public static final Resource resultResultSet = 
ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#resultResultSet"; );
+
+    /** Class of queries that are seeking a constructed graph */
+    public static final Resource queryConstruct = 
ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#queryConstruct"; );
+
+    /** Class of queries that are seeking a yes/no question */
+    public static final Resource queryAsk = ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#queryAsk"; );
+
+    /** Class of result expected to be a graph */
+    public static final Resource resultGraph = ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#resultGraph"; );
+
+    /** Class of tests that have not been classified */
+    public static final Resource NotClassified = 
ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#NotClassified"; );
+
+    /** Class of result expected to be a boolean */
+    public static final Resource booleanResult = 
ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#booleanResult"; );
+
+    /** Class of tests that are Approved */
+    public static final Resource Approved = ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#Approved"; );
+
+    /** Class of tests that have been Withdrawn */
+    public static final Resource Withdrawn = ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#Withdrawn"; );
+
+    /** Class of tests that are Obsolete */
+    public static final Resource Obsoleted = ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#Obsoleted"; );
+
+    /** Class of queries that are seeking a descriptive graph */
+    public static final Resource queryDescribe = 
ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#queryDescribe"; );
+
+    /** Class of queries that are seeking variable bindings */
+    public static final Resource querySelect = ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#querySelect"; );
+
+    /** Class of tests that are Rejected */
+    public static final Resource Rejected = ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#Rejected"; );
+
 }
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifestUpdate_11.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifestUpdate_11.java
index 8bafb96c2d..60bd8cccf5 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifestUpdate_11.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifestUpdate_11.java
@@ -22,63 +22,47 @@
 package org.apache.jena.sparql.vocabulary ;
 
 /* CVS $Id: $ */
- 
+
 import org.apache.jena.rdf.model.* ;
- 
+
 /**
- * Vocabulary definitions from test-update.n3 
- * @author Auto-generated by schemagen on 29 Oct 2010 17:36 
+ * Vocabulary definitions from test-update.n3
  */
 public class TestManifestUpdate_11 {
-    /** <p>The RDF model that holds the vocabulary terms</p> */
-    private static Model m_model = ModelFactory.createDefaultModel();
-    
-    /** <p>The namespace of the vocabulary as a string</p> */
-    public static final String NS = 
"http://www.w3.org/2009/sparql/tests/test-update#";;
-    
-    /** <p>The namespace of the vocabulary as a string</p>
-     *  @see #NS */
-    public static String getURI() {return NS;}
-    
-    /** <p>The namespace of the vocabulary as a resource</p> */
-    public static final Resource NAMESPACE = m_model.createResource( NS );
-    
-    /** <p>Optional: data for the update test (i.e. default graph in the graph 
store 
-     *  prior or after the update, depending on whether used within mf:action 
or within 
-     *  mf:result)</p>
+
+    /** Optional: data for the update test (i.e. default graph in the graph 
store
+     *  prior or after the update, depending on whether used within mf:action 
or within
+     *  mf:result)
      */
-    public static final Property data = m_model.createProperty( 
"http://www.w3.org/2009/sparql/tests/test-update#data"; );
-    
-    public static final Property graph = m_model.createProperty( 
"http://www.w3.org/2009/sparql/tests/test-update#graph"; );
-    
-    /** <p>Optional: named-graph only data for the update test (i.e. named 
graph in the 
-     *  graph store prior or after the update, depending on whether used 
within mf:action 
-     *  or within mf:result)</p>
+    public static final Property data = ResourceFactory.createProperty( 
"http://www.w3.org/2009/sparql/tests/test-update#data"; );
+
+    public static final Property graph = ResourceFactory.createProperty( 
"http://www.w3.org/2009/sparql/tests/test-update#graph"; );
+
+    /** Optional: named-graph only data for the update test (i.e. named graph 
in the
+     *  graph store prior or after the update, depending on whether used 
within mf:action
+     *  or within mf:result)
      */
-    public static final Property graphData = m_model.createProperty( 
"http://www.w3.org/2009/sparql/tests/test-update#graphData"; );
-    
-    /** <p>The update query to ask</p> */
-    public static final Property request = m_model.createProperty( 
"http://www.w3.org/2009/sparql/tests/test-update#request"; );
-    
-    /** <p>The class of all SPARQL 1.1 Update results</p> */
-    public static final Resource Result = m_model.createResource( 
"http://www.w3.org/2009/sparql/tests/test-update#Result"; );
-    
-    /** <p>The class of all SPARQL 1.1 Update evaluation tests</p> */
-    public static final Resource UpdateEvaluationTest = 
m_model.createResource( 
"http://www.w3.org/2009/sparql/tests/test-update#UpdateEvaluationTest"; );
-    
-    /** <p>test failure, cf. 
http://www.w3.org/TR/sparql11-protocol/#update-fault-messages</p> */
-    public static final Resource graph_already_exists = 
m_model.createResource( 
"http://www.w3.org/2009/sparql/tests/test-update#graph-already-exists"; );
-    
-    /** <p>test failure, cf. 
http://www.w3.org/TR/sparql11-protocol/#update-fault-messages</p> */
-    public static final Resource graph_does_not_exist = 
m_model.createResource( 
"http://www.w3.org/2009/sparql/tests/test-update#graph-does-not-exist"; );
-    
-    /** <p>test failure, cf. 
http://www.w3.org/TR/sparql11-protocol/#update-fault-messages</p> */
-    public static final Resource malformed_update = m_model.createResource( 
"http://www.w3.org/2009/sparql/tests/test-update#malformed-update"; );
-    
-    /** <p>test shall pass without failure</p> */
-    public static final Resource success = m_model.createResource( 
"http://www.w3.org/2009/sparql/tests/test-update#success"; );
-    
-    /** <p>test failure, cf. 
http://www.w3.org/TR/sparql11-protocol/#update-fault-messages</p> */
-    public static final Resource update_request_refused = 
m_model.createResource( 
"http://www.w3.org/2009/sparql/tests/test-update#update-request-refused"; );
-    
+    public static final Property graphData = ResourceFactory.createProperty( 
"http://www.w3.org/2009/sparql/tests/test-update#graphData"; );
+
+    /** The update query to ask */
+    public static final Property request = ResourceFactory.createProperty( 
"http://www.w3.org/2009/sparql/tests/test-update#request"; );
+
+    /** The class of all SPARQL 1.1 Update results */
+    public static final Resource Result = ResourceFactory.createProperty( 
"http://www.w3.org/2009/sparql/tests/test-update#Result"; );
+
+    /** test failure, cf. 
http://www.w3.org/TR/sparql11-protocol/#update-fault-messages */
+    public static final Resource graph_already_exists = 
ResourceFactory.createResource( 
"http://www.w3.org/2009/sparql/tests/test-update#graph-already-exists"; );
+
+    /** test failure, cf. 
http://www.w3.org/TR/sparql11-protocol/#update-fault-messages */
+    public static final Resource graph_does_not_exist = 
ResourceFactory.createResource( 
"http://www.w3.org/2009/sparql/tests/test-update#graph-does-not-exist"; );
+
+    /** test failure, cf. 
http://www.w3.org/TR/sparql11-protocol/#update-fault-messages */
+    public static final Resource malformed_update = 
ResourceFactory.createResource( 
"http://www.w3.org/2009/sparql/tests/test-update#malformed-update"; );
+
+    /** test shall pass without failure */
+    public static final Resource success = ResourceFactory.createResource( 
"http://www.w3.org/2009/sparql/tests/test-update#success"; );
+
+    /** test failure, cf. 
http://www.w3.org/TR/sparql11-protocol/#update-fault-messages */
+    public static final Resource update_request_refused = 
ResourceFactory.createResource( 
"http://www.w3.org/2009/sparql/tests/test-update#update-request-refused"; );
+
 }
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifestX.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifestX.java
index 6fcec73634..f8b3f3232b 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifestX.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifestX.java
@@ -21,63 +21,61 @@
 
 package org.apache.jena.sparql.vocabulary ;
 
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.rdf.model.ModelFactory ;
+import org.apache.jena.rdf.model.ResourceFactory;
 import org.apache.jena.rdf.model.Property ;
 import org.apache.jena.rdf.model.Resource ;
 
 /** More TestManifest */
 public class TestManifestX {
-    /** <p>The RDF model that holds the vocabulary terms</p> */
-    private static Model m_model = ModelFactory.createDefaultModel();
-
-    /** <p>The namespace of the vocabulary as a string</p> */
+    /** The namespace of the vocabulary as a string */
     public static final String NS = 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#";;
 
-    /** <p>The namespace of the vocabulary as a string</p>
+    /** The namespace of the vocabulary as a strings
      *  @see #NS */
     public static String getURI() {return NS;}
 
-    /** <p>The namespace of the vocabulary as a resource</p> */
-    public static final Resource NAMESPACE = m_model.createResource( NS );
+    /** The namespace of the vocabulary as a resource */
+    public static final Resource NAMESPACE = ResourceFactory.createResource( 
NS );
 
-    /** <p>Syntax of the query</p> */
-    public static final Property dataSyntax = m_model.createProperty( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#dataSyntax"; );
+    /** Syntax of the query */
+    public static final Property dataSyntax = ResourceFactory.createProperty( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#dataSyntax"; );
 
-    /** <p>Default type of a test</p> */
-    public static final Property defaultTestType = m_model.createProperty( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#defaultTestType"; );
+    /** Default type of a test */
+    public static final Property defaultTestType = 
ResourceFactory.createProperty( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#defaultTestType"; );
 
-    /** <p>Include another manifest file.</p> */
-    public static final Property include = m_model.createProperty( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#include"; );
+    /** Include another manifest file. */
+    public static final Property include = ResourceFactory.createProperty( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#include"; );
 
-    /** <p>Option for an action</p> */
-    public static final Property option = m_model.createProperty( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#option"; );
+    /** Option for an action */
+    public static final Property option = ResourceFactory.createProperty( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#option"; );
 
-    /** <p>Syntax of the query</p> */
-    public static final Property querySyntax = m_model.createProperty( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#querySyntax"; );
+    /** Syntax of the query */
+    public static final Property querySyntax = ResourceFactory.createProperty( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#querySyntax"; );
 
-    /** <p>Whether to create a text index</p> */
-    public static final Property textIndex = m_model.createProperty( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#textIndex"; );
+    /** Whether to create a text index */
+    public static final Property textIndex = ResourceFactory.createProperty( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#textIndex"; );
 
-    /** <p>Syntax tests which expect a parse failure</p> */
-    public static final Resource NegativeSyntaxTestARQ = 
m_model.createResource( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#NegativeSyntaxTestARQ"; );
+    /** Syntax tests which expect a parse failure */
+    public static final Resource NegativeSyntaxTestARQ = 
ResourceFactory.createResource( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#NegativeSyntaxTestARQ"; );
 
-    /** <p>Syntax tests (query)</p> */
-    public static final Resource PositiveSyntaxTestARQ = 
m_model.createResource( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#PositiveSyntaxTestARQ"; );
+    /** Syntax tests (query) */
+    public static final Resource PositiveSyntaxTestARQ = 
ResourceFactory.createResource( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#PositiveSyntaxTestARQ"; );
 
-    /** <p>Syntax tests which expect a parse failure</p> */
-    public static final Resource NegativeUpdateSyntaxTestARQ = 
m_model.createResource( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#NegativeUpdateSyntaxTestARQ";
 );
+    /** Syntax tests which expect a parse failure */
+    public static final Resource NegativeUpdateSyntaxTestARQ = 
ResourceFactory.createResource( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#NegativeUpdateSyntaxTestARQ";
 );
 
-    /** <p>Syntax tests (query)</p> */
-    public static final Resource PositiveUpdateSyntaxTestARQ = 
m_model.createResource( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#PositiveUpdateSyntaxTestARQ";
 );
+    /** Syntax tests (query) */
+    public static final Resource PositiveUpdateSyntaxTestARQ = 
ResourceFactory.createResource( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#PositiveUpdateSyntaxTestARQ";
 );
 
-    /** <p>The class of test that are Query tests (query, data, results)</p> */
-    public static final Resource TestQuery = m_model.createResource( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#TestQuery"; );
+    /** The class of test that are Query tests (query, data, results) */
+    public static final Resource TestQuery = ResourceFactory.createResource( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#TestQuery"; );
 
-    /** <p>Query serialization tests</p> */
-    public static final Resource TestSerialization = m_model.createResource( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#TestSerialization"; );
+    /** Query serialization tests */
+    public static final Resource TestSerialization = 
ResourceFactory.createResource( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#TestSerialization"; );
 
-    /** <p>Query test not to be run</p> */
-    public static final Resource TestSurpressed = m_model.createResource( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#TestSurpressed"; );
+    /** Query test not to be run */
+    public static final Resource TestSurpressed = 
ResourceFactory.createResource( 
"http://jena.hpl.hp.com/2005/05/test-manifest-extra#TestSurpressed"; );
 
+    /** CSV Test (i.e query, with results in CSV) - an extension */
+    public static final Resource CSVResultFormatTest = 
ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#CSVResultFormatTest"; 
);
 }
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifest_11.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifest_11.java
index 7942933e05..d2b68f73b9 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifest_11.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifest_11.java
@@ -24,48 +24,30 @@ package org.apache.jena.sparql.vocabulary ;
 import org.apache.jena.rdf.model.* ;
 
 /**
- * Vocabulary definitions from test-manifest-1_1.ttl 
- * @author Auto-generated by schemagen on 24 May 2012 18:37 
+ * Vocabulary definitions from test-manifest-1_1.ttl
  */
+@Deprecated(forRemoval = true)
 public class TestManifest_11 {
 
-    /** <p>The RDF model that holds the vocabulary terms</p> */
-    private static Model m_model = ModelFactory.createDefaultModel();
-    
-    /** <p>The namespace of the vocabulary as a string</p> */
-    public static final String NS = 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#";;
-    
-    /** <p>The namespace of the vocabulary as a string</p>
-     *  @see #NS */
-    public static String getURI() {return NS;}
-    
-    /** <p>The namespace of the vocabulary as a resource</p> */
-    public static final Resource NAMESPACE = m_model.createResource( NS );
-    
-    /** <p>CSV Test</p> */
-    public static final Resource CSVResultFormatTest = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#CSVResultFormatTest"; 
);
-    
-    /** <p>A type of test specifically for syntax testing for SPARQL 1.1.</p> 
*/
-    public static final Resource NegativeSyntaxTest11 = 
m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#NegativeSyntaxTest11"; 
);
-    
-    /** <p>A type of test specifically for syntax testing of SPARQL Update. 
Syntax tests 
-     *  are not required to have an associated result, only an action. 
Negative syntax 
-     *  tests are tests of which the result should be a parser error.</p>
-     */
-    public static final Resource NegativeUpdateSyntaxTest11 = 
m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#NegativeUpdateSyntaxTest11";
 );
-    
-    /** <p>A type of test specifically for syntax testing for SPARQL 1.1.</p> 
*/
-    public static final Resource PositiveSyntaxTest11 = 
m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#PositiveSyntaxTest11"; 
);
-    
-    /** <p>A type of test specifically for syntax testing of SPARQL Update. 
Syntax tests 
-     *  are not required to have an associated result, only an action.</p>
+    /** A type of test specifically for syntax testing for SPARQL 1.1. */
+    @Deprecated(forRemoval = true)
+    public static final Resource NegativeSyntaxTest11 = 
ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#NegativeSyntaxTest11"; 
);
+
+    /** A type of test specifically for syntax testing of SPARQL Update. 
Syntax tests
+     *  are not required to have an associated result, only an action. 
Negative syntax
+     *  tests are tests of which the result should be a parser error.
      */
-    public static final Resource PositiveUpdateSyntaxTest11 = 
m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#PositiveUpdateSyntaxTest11";
 );
-    
-    /** <p>A type of test specifically for query evaluation testing. Query 
evaluation 
-     *  tests are required to have an associated input dataset, a query, and 
an expected 
-     *  output dataset.</p>
+    @Deprecated(forRemoval = true)
+    public static final Resource NegativeUpdateSyntaxTest11 = 
ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#NegativeUpdateSyntaxTest11";
 );
+
+    /** A type of test specifically for syntax testing for SPARQL 1.1. */
+    @Deprecated(forRemoval = true)
+    public static final Resource PositiveSyntaxTest11 = 
ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#PositiveSyntaxTest11"; 
);
+
+    /** A type of test specifically for syntax testing of SPARQL Update. 
Syntax tests
+     *  are not required to have an associated result, only an action.
      */
-    public static final Resource UpdateEvaluationTest = 
m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#UpdateEvaluationTest"; 
);
-    }
+    @Deprecated(forRemoval = true)
+    public static final Resource PositiveUpdateSyntaxTest11 = 
ResourceFactory.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#PositiveUpdateSyntaxTest11";
 );
+}
 
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifest_12.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifest_12.java
index 92ec0facff..9fe90122f4 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifest_12.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/vocabulary/TestManifest_12.java
@@ -27,17 +27,15 @@ import org.apache.jena.rdf.model.ResourceFactory;
 /**
  * Additional or changed vocabulary for rdf-tests SPARQL area.
  */
+@Deprecated(forRemoval = true)
 public class TestManifest_12 {
 
-    /** <p>The namespace of the vocabulary as a string</p> */
+    /** The namespace of the vocabulary as a string */
     public static final String NS = 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#";;
 
+    @Deprecated(forRemoval = true)
     public static final Resource PositiveSyntaxTest12 = 
ResourceFactory.createResource(NS+"PositiveSyntaxTest12");
 
+    @Deprecated(forRemoval = true)
     public static final Resource NegativeSyntaxTest12 = 
ResourceFactory.createResource(NS+"NegativeSyntaxTest12");
-
-    public static final Resource PositiveUpdateSyntaxTest = 
ResourceFactory.createResource(NS+"PositiveUpdateSyntaxTest");
-
-    public static final Resource NegativeUpdateSyntaxTest = 
ResourceFactory.createResource(NS+"NegativeUpdateSyntaxTest");
-
 }
diff --git a/jena-arq/src/main/java/org/apache/jena/system/G.java 
b/jena-arq/src/main/java/org/apache/jena/system/G.java
index da96d5d472..a9671b7f97 100644
--- a/jena-arq/src/main/java/org/apache/jena/system/G.java
+++ b/jena-arq/src/main/java/org/apache/jena/system/G.java
@@ -167,6 +167,14 @@ public class G {
         return x.getLiteralLexicalForm();
     }
 
+    /** Get a string, or null, assuming the node is an xsd:string literal. */
+    public static String asOptionalString(Node x) {
+        if ( x == null )
+            return null;
+        return asString(x);
+    }
+
+
     /** Does the graph match the s/p/o pattern? */
     public static boolean contains(Graph graph, Node subject, Node predicate, 
Node object) {
         Objects.requireNonNull(graph, "graph");
diff --git a/jena-arq/src/test/java/org/apache/jena/arq/junit/OmittedTest.java 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/OmittedTest.java
index c8259fd127..a30baf1ba9 100644
--- a/jena-arq/src/test/java/org/apache/jena/arq/junit/OmittedTest.java
+++ b/jena-arq/src/test/java/org/apache/jena/arq/junit/OmittedTest.java
@@ -30,8 +30,7 @@ public class OmittedTest extends SkipTest {
     public final boolean verbose;
 
     public OmittedTest(ManifestEntry entry) {
-        super(entry);
-        this.verbose = false;
+        this(entry, false);
     }
 
     public OmittedTest(ManifestEntry entry, boolean verbose) {
diff --git 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/manifest/Manifest.java 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/manifest/Manifest.java
index 1d9d4958f4..cd27a444e9 100644
--- a/jena-arq/src/test/java/org/apache/jena/arq/junit/manifest/Manifest.java
+++ b/jena-arq/src/test/java/org/apache/jena/arq/junit/manifest/Manifest.java
@@ -67,12 +67,13 @@ public class Manifest
             log.error("Error reading manifest: "+filenameOrURI);
             throw new TestSetupException("Error reading manifest: 
"+filenameOrURI);
         }
-        Manifest manifest = new Manifest(manifestRDF);
+        Manifest manifest = new Manifest(manifestRDF, filenameOrURI);
         return manifest;
     }
 
-    private Manifest(Graph manifestRDF) {
-        manifestGraph = manifestRDF;
+    private Manifest(Graph manifestRDF, String filenameOrURI) {
+        this.manifestGraph = manifestRDF;
+        this.filenameOrURI = filenameOrURI;
         manifest = getManifestNode(manifestGraph, filenameOrURI);
         parseManifest();
         parseIncludes();
@@ -128,9 +129,10 @@ public class Manifest
         items.forEach(entry->{
             String testName = getLiteral(entry, TestManifest.name.asNode());
             Node testType = G.getZeroOrOneSP(manifestGraph, entry, 
RDF.Nodes.type);
-            Node action = G.getZeroOrOneSP(manifestGraph, entry,  
TestManifest.action.asNode());
-            Node result = G.getZeroOrOneSP(manifestGraph, entry,  
TestManifest.result.asNode());
-            ManifestEntry manifestEntry = new ManifestEntry(this, entry, 
testName, testType, action, result);
+            String specVersion = 
G.asOptionalString(G.getZeroOrOneSP(manifestGraph, entry, 
TestManifest.specVersion.asNode()));
+            Node action = G.getZeroOrOneSP(manifestGraph, entry, 
TestManifest.action.asNode());
+            Node result = G.getZeroOrOneSP(manifestGraph, entry, 
TestManifest.result.asNode());
+            ManifestEntry manifestEntry = new ManifestEntry(this, entry, 
testName, testType, specVersion, action, result);
             entries.add(manifestEntry);
         });
     }
@@ -150,8 +152,7 @@ public class Manifest
         });
     }
 
-    private void parseOneIncludesList(Node r)
-    {
+    private void parseOneIncludesList(Node r) {
         if ( r == null )
             return;
         if ( r.equals(RDF.Nodes.nil) )
@@ -164,7 +165,7 @@ public class Manifest
             includedFiles.add(r.getURI());
             return;
         }
-        if ( ! r.isBlank() )
+        if ( !r.isBlank() )
             return;
         // Blank node - assumed to be a list.
         List<Node> includes = G.listMembers(manifestGraph, r);
@@ -173,25 +174,28 @@ public class Manifest
                 parseOneIncludesList(inc);
                 continue;
             }
-            log.warn("Include: not a URI or blank node: "+inc);
+            log.warn("Include: not a URI or blank node: " + inc);
         }
     }
 
+    /**
+     * Get a string.
+     * Return null if not found or if the resource (first argument) is null or 
if the
+     * resource does not have that property.
+     * Return the lexical form of the literal.
+     */
     private String getLiteral(Node r, Node p) {
         if ( r == null )
             return null;
         Node n = G.getZeroOrOneSP(manifestGraph, r, p);
         if ( n == null )
             return null;
-
         if ( n.isLiteral() )
             return n.getLiteralLexicalForm();
-
         throw new TestSetupException("Manifest problem (not a Literal): " + r 
+ " => " + p);
     }
 
-    private String getLiteralOrURI(Node r, Node p)
-    {
+    private String getLiteralOrURI(Node r, Node p) {
         if ( r == null )
             return null;
         Node n = G.getZeroOrOneSP(manifestGraph, r, p);
diff --git 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/manifest/ManifestEntry.java 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/manifest/ManifestEntry.java
index 531210bf23..000f219312 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/manifest/ManifestEntry.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/manifest/ManifestEntry.java
@@ -21,38 +21,116 @@
 
 package org.apache.jena.arq.junit.manifest;
 
+import static org.apache.jena.system.G.isBlank;
+import static org.apache.jena.system.G.isLiteral;
+import static org.apache.jena.system.G.isURI;
+
+import java.util.HashSet;
+import java.util.Set;
+
 import org.apache.jena.graph.Graph;
 import org.apache.jena.graph.Node;
+import org.apache.jena.riot.out.NodeFmtLib;
+import org.apache.jena.system.G;
+import org.apache.jena.system.RDFDataException;
 
 public class ManifestEntry {
     private final Manifest manifest;
     private final Node entry;
     private final String name;
     private final Node testType;
+    private final String specVersion;
     private final Node action;
     private final Node result;
 
-    public ManifestEntry(Manifest manifest, Node entry, String name, Node 
testType, Node action, Node result) {
+    static Set<Object> onceNoType = new HashSet<>();
+    static Set<Object> onceWithVersion = new HashSet<>();
+
+    public ManifestEntry(Manifest manifest, Node entry, String name, Node 
testType, String specVersion, Node action, Node result) {
         super();
+
         this.manifest = manifest;
-        this.entry = entry;
+        this.entry = requireResource(entry, "entry");
         this.name = name;
+
+        // Legacy - some local tests are written short-hand with no  - assumes 
a SPARQL eval test.
+        // See SPARQLTests.
+        //this.testType = requireResource(testType, "testType");
         this.testType = testType;
-        this.action = action;
-        this.result = result;
+        this.specVersion = specVersion;
+        this.action = requireResource(action, "action");
+        this.result = optionalResource(result, "result");
+    }
+
+    private static void runOnce(Set<Object> once, Object key, Runnable msg) {
+        if ( ! once.contains(key) ) {
+            once.add(key);
+            msg.run();
+        }
+    }
+
+    // --> G
+    // Check for URI or blank node.
+    private static Node requireResource(Node n, String role) {
+        if ( n == null )
+            throw new RDFDataException(role+ ": null");
+        if ( isURI(n) )
+            return n;
+        if ( isBlank(n) )
+            return n;
+        throw new RDFDataException(role+": Not a resource: 
"+NodeFmtLib.displayStr(n));
+    }
+
+    private static Node optionalResource(Node n, String role) {
+        if ( n == null )
+            return n;
+        return requireResource(n, role);
+    }
+
+    // Check for URI or blank node.
+    private static String requireString(Node n, String role) {
+        if ( n == null )
+            throw new RDFDataException(role+ ": null");
+        if ( ! isLiteral(n) )
+            throw new RDFDataException(role+": Not a string: 
"+NodeFmtLib.displayStr(n));
+        return G.asString(n);   // xsd:string.
+        //return n.getLiteralLexicalForm();
+    }
+
+    private static String optionalString(Node n, String role) {
+        if ( n == null )
+            return null;
+        return requireString(n, role);
     }
 
     /**
      * Return a ManifestEntry with different type/action/result.
      * This is used to replace rdf-tests-cg where test behaviour is expected 
to be different.
      */
-    public static ManifestEntry alter(ManifestEntry entry, Node testType,  
Node action, Node result) {
+    public static ManifestEntry alter(ManifestEntry entry, Node testType, 
String specVersion,  Node action, Node result) {
         return new ManifestEntry(entry.getManifest(),
                                  entry.getEntry(),
                                  entry.getName(),
-                                 testType, action, result);
+                                 testType,
+                                 specVersion,
+                                 action,
+                                 result);
+    }
+
+    /**
+     * Return a ManifestEntry with different name.
+     */
+    public static ManifestEntry alter(ManifestEntry entry, String altName) {
+        return new ManifestEntry(entry.getManifest(),
+                                 entry.getEntry(),
+                                 altName,
+                                 entry.getTestType(),
+                                 entry.getSpecVersion(),
+                                 entry.getAction(),
+                                 entry.getResult());
     }
 
+
     public Manifest getManifest() {
         return manifest;
     }
@@ -81,6 +159,10 @@ public class ManifestEntry {
         return testType;
     }
 
+    public String getSpecVersion() {
+        return specVersion;
+    }
+
     public Node getAction() {
         return action;
     }
diff --git 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/RiotTests.java 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/RiotTests.java
index 8e64d5587c..e565564a52 100644
--- a/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/RiotTests.java
+++ b/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/RiotTests.java
@@ -39,7 +39,7 @@ import org.apache.jena.vocabulary.TestManifest;
 public class RiotTests
 {
     /** Create a RIOT language test - or return null for "unrecognized" */
-    @SuppressWarnings("deprecation")
+    @SuppressWarnings("removal")
     public static Runnable makeRIOTTest(ManifestEntry entry) {
         //Resource manifest = entry.getManifest();
         Node item = entry.getEntry();
@@ -51,6 +51,7 @@ public class RiotTests
         Node testType = entry.getTestType();
         if ( testType == null )
             return null;
+        String specVersion  = entry.getSpecVersion();
 
         try {
             String labelPrefix = "[RIOT]";
@@ -77,7 +78,6 @@ public class RiotTests
             if ( equalsType(testType, VocabLangRDF.TestNegativeSyntaxTTL) )
                 return new RiotSyntaxTest(entry, RDFLanguages.TURTLE, false);
 
-            // XXX Remove of rdf-test update
             // These are parse errors
             if ( equalsType(testType, VocabLangRDF.TestNegativeEvalTTL) )
                 return new RiotSyntaxTest(entry, RDFLanguages.TURTLE, false);
@@ -127,6 +127,7 @@ public class RiotTests
                 String base = rebase(input, assumedBase);
                 return new RiotEvalTest(entry, base, RDFLanguages.TURTLE, 
true);
             }
+
             if ( equalsType(testType, VocabLangRDF.TestEvalTriG) ) {
                 String base = rebase(input, assumedBase);
                 return new RiotEvalTest(entry, base, RDFLanguages.TRIG, true);
@@ -172,7 +173,7 @@ public class RiotTests
                     String resultURI = 
result.getURI().replaceAll("/rdf-tests-cg/rdf/rdf11/rdf-xml/xml-canon/", 
"/RIOT/Lang/rdf-xml/xml-canon/");
                     Node action2 = NodeFactory.createURI(actionURI);
                     Node result2 = NodeFactory.createURI(resultURI);
-                    entry = ManifestEntry.alter(entry, testType, action2, 
result2);
+                    entry = ManifestEntry.alter(entry, testType, specVersion, 
action2, result2);
                 }
                 String fn = entry.getAction().getURI();
                 // Adjust to changes in rdf-tests-cg layout.
diff --git 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/VocabLangRDF.java 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/VocabLangRDF.java
index f65f8a5439..ba5e2b5015 100644
--- a/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/VocabLangRDF.java
+++ b/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/VocabLangRDF.java
@@ -47,7 +47,8 @@ public class VocabLangRDF
     public static final Resource TestPositiveSyntaxTTL      = 
m_model.createResource( NS+"TestTurtlePositiveSyntax" );
     public static final Resource TestNegativeSyntaxTTL      = 
m_model.createResource( NS+"TestTurtleNegativeSyntax" );
     public static final Resource TestEvalTTL                = 
m_model.createResource( NS+"TestTurtleEval" );
-    @Deprecated
+    // Legacy
+    @Deprecated(forRemoval = true)
     public static final Resource TestNegativeEvalTTL        = 
m_model.createResource( NS+"TestTurtleNegativeEval" );
 
     public static final Resource TestPositiveSyntaxNT       = 
m_model.createResource( NS+"TestNTriplesPositiveSyntax" );
@@ -68,7 +69,7 @@ public class VocabLangRDF
     public static final Resource TestPositiveSyntaxTriG     = 
m_model.createResource( NS+"TestTrigPositiveSyntax" );
     public static final Resource TestNegativeSyntaxTriG     = 
m_model.createResource( NS+"TestTrigNegativeSyntax" );
     public static final Resource TestEvalTriG               = 
m_model.createResource( NS+"TestTrigEval" );
-    @Deprecated
+    @Deprecated(forRemoval = true)
     public static final Resource TestNegativeEvalTriG       = 
m_model.createResource( NS+"TestTrigNegativeEval" );
 
     public static final Resource TestPositiveSyntaxRDFXML   = 
m_model.createResource( NS+"TestXMLPositiveSyntax" );
diff --git a/jena-arq/src/test/java/org/apache/jena/arq/junit/OmittedTest.java 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/SparqlSpecVersion.java
similarity index 53%
copy from jena-arq/src/test/java/org/apache/jena/arq/junit/OmittedTest.java
copy to 
jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/SparqlSpecVersion.java
index c8259fd127..a44c85edea 100644
--- a/jena-arq/src/test/java/org/apache/jena/arq/junit/OmittedTest.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/SparqlSpecVersion.java
@@ -19,29 +19,32 @@
  *   SPDX-License-Identifier: Apache-2.0
  */
 
-package org.apache.jena.arq.junit;
+package org.apache.jena.arq.junit.sparql;
 
-import org.apache.jena.arq.junit.manifest.ManifestEntry;
+import org.apache.jena.shared.JenaException;
 
-/**
- * Omitted test = not marked as "suppressed" but not run.
- */
-public class OmittedTest extends SkipTest {
-    public final boolean verbose;
+public enum SparqlSpecVersion {
+    SPARQL_10("sparql-1.0"),
+    SPARQL_11("sparql-1.1"),
+    SPARQL_12("sparql-1.2"),
+    ARQ("ARQ")
+    ;
 
-    public OmittedTest(ManifestEntry entry) {
-        super(entry);
-        this.verbose = false;
-    }
+    private final String specVersion;
 
-    public OmittedTest(ManifestEntry entry, boolean verbose) {
-        super(entry);
-        this.verbose = verbose;
+    SparqlSpecVersion(String string) {
+        this.specVersion = string;
     }
 
-    @Override
-    public void runTest() {
-        if ( verbose )
-            System.err.println("Omitted test: " + manifestEntry.getName());
+    static SparqlSpecVersion get(String label) {
+        if ( label == null )
+            return null;
+        return switch(label) {
+            case "sparql-1.0" -> SPARQL_10;
+            case "sparql-1.1" -> SPARQL_11;
+            case "sparql-1.2" -> SPARQL_12;
+            case "ARQ", "arq" -> ARQ;
+            default -> { throw new JenaException("Unrecognized version label: 
"+label); }
+        };
     }
 }
diff --git 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/SparqlTests.java 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/SparqlTests.java
index beab6fb7da..e5da56401e 100644
--- a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/SparqlTests.java
+++ b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/SparqlTests.java
@@ -35,7 +35,6 @@ import org.apache.jena.graph.Node;
 import org.apache.jena.query.Dataset;
 import org.apache.jena.query.Syntax;
 import org.apache.jena.rdf.model.Resource;
-import org.apache.jena.sparql.vocabulary.TestManifestUpdate_11;
 import org.apache.jena.sparql.vocabulary.TestManifestX;
 import org.apache.jena.sparql.vocabulary.TestManifest_11;
 import org.apache.jena.sparql.vocabulary.TestManifest_12;
@@ -56,49 +55,97 @@ public class SparqlTests {
             return null;
         }
 
-        Syntax querySyntax = defaultForSyntaxTests;
+        Syntax sparqlSyntax = defaultForSyntaxTests;
 
-        // Syntax to use for tests where the file extension .rq/.ru applies.
-        Syntax querySyntax11 = querySyntax;
-        Syntax updateSyntax11 = querySyntax;
-        Syntax querySyntax12 = querySyntax;
-
-        if ( querySyntax != null ) {
-            if ( ! querySyntax.equals(Syntax.syntaxARQ) &&
-                 ! querySyntax.equals(Syntax.syntaxSPARQL_10) &&
-                 ! querySyntax.equals(Syntax.syntaxSPARQL_11) &&
-                 ! querySyntax.equals(Syntax.syntaxSPARQL_12) )
-                throw new TestSetupException("Unknown syntax: "+querySyntax);
+        if ( sparqlSyntax != null ) {
+            if ( ! sparqlSyntax.equals(Syntax.syntaxARQ) &&
+                 ! sparqlSyntax.equals(Syntax.syntaxSPARQL_10) &&
+                 ! sparqlSyntax.equals(Syntax.syntaxSPARQL_11) &&
+                 ! sparqlSyntax.equals(Syntax.syntaxSPARQL_12) )
+                throw new TestSetupException("Unknown syntax: "+sparqlSyntax);
         }
 
         Node testType = entry.getTestType();
-        if ( testType == null )
+        SparqlSpecVersion specVersion = 
SparqlSpecVersion.get(entry.getSpecVersion());
+
+        if ( testType == null ) {
+            System.err.println("No type: "+entry.getManifest().getFileName()+ 
(entry.getName()==null?"": " : "+entry.getName()) );
+
             testType = TestManifest.QueryEvaluationTest.asNode();
+            if ( specVersion == null ) {
+                specVersion = SparqlSpecVersion.ARQ;
+            }
+        }
 
-        // ---- Query syntax tests
-        if ( equalsType(testType, TestManifest.PositiveSyntaxTest) ) {
-            return new QuerySyntaxTest(entry, querySyntax, true);
+        return adaptDispatch(entry, testType, specVersion, sparqlSyntax);
+    }
+
+    // Allows us to isolate the places where deprecation warnings occur.
+    @SuppressWarnings("removal")
+    private static Runnable adaptDispatch(ManifestEntry entry, Node testType , 
SparqlSpecVersion specVersion, Syntax sparqlSyntax) {
+
+        // Legacy test type conversion.
+        if ( equalsType(testType, TestManifest_11.PositiveSyntaxTest11) ) {
+            testType = TestManifest.PositiveSyntaxTest.asNode();
+            specVersion = SparqlSpecVersion.SPARQL_11;
+        }
+        else if ( equalsType(testType, TestManifest_11.NegativeSyntaxTest11) ) 
{
+            testType = TestManifest.NegativeSyntaxTest.asNode();
+            specVersion = SparqlSpecVersion.SPARQL_11;
+
+        }
+        else if ( equalsType(testType, TestManifest_12.PositiveSyntaxTest12) ) 
{
+            testType = TestManifest.PositiveSyntaxTest.asNode();
+            specVersion = SparqlSpecVersion.SPARQL_12;
+        }
+        else if ( equalsType(testType, TestManifest_12.NegativeSyntaxTest12) ) 
{
+            testType = TestManifest.NegativeSyntaxTest.asNode();
+            specVersion = SparqlSpecVersion.SPARQL_12;
+        }
+
+        if ( specVersion == null ) {
+            if ( Scripts.entryContainsSubstring(entry, "testing/ARQ") )
+                specVersion = SparqlSpecVersion.ARQ;
+            else if ( Scripts.entryContainsSubstring(entry, 
"testing/SPARQL-CDTs") )
+                specVersion = SparqlSpecVersion.ARQ;
         }
-        if ( equalsType(testType, TestManifest_11.PositiveSyntaxTest11) )
-            return new QuerySyntaxTest(entry, querySyntax11, true);
-        if ( equalsType(testType, TestManifest_12.PositiveSyntaxTest12) )
-            return new QuerySyntaxTest(entry, querySyntax12, true);
-        if ( equalsType(testType, TestManifestX.PositiveSyntaxTestARQ) ) {
-            return new QuerySyntaxTest(entry, Syntax.syntaxARQ, true);
+
+        if ( specVersion != null ) {
+            switch (specVersion) {
+                case SPARQL_10 -> sparqlSyntax =  Syntax.syntaxSPARQL_10;
+                case SPARQL_11 -> sparqlSyntax =  Syntax.syntaxSPARQL_11;
+                case SPARQL_12 -> sparqlSyntax =  Syntax.syntaxSPARQL_12;
+                case ARQ -> sparqlSyntax = Syntax.syntaxARQ;
+            }
         }
 
+        // --
+
+        // Now dispatch on testType, with setting by syntax.
+        // Split so the adaptions can be isolated and warnings ignored.
+
+        return dispatch(entry, testType, sparqlSyntax);
+    }
+
+    private static Runnable dispatch(ManifestEntry entry, Node testType , 
Syntax sparqlSyntax) {
+        // ---- Query syntax tests
+        if ( equalsType(testType, TestManifest.PositiveSyntaxTest) )
+            return new QuerySyntaxTest(entry, sparqlSyntax, true);
+
         // == Bad
         if ( equalsType(testType, TestManifest.NegativeSyntaxTest) ) {
-            return new QuerySyntaxTest(entry, querySyntax, false);
-        }
-        if ( equalsType(testType, TestManifest_11.NegativeSyntaxTest11) ) {
-            // Special override
-            Syntax syn = querySyntax11;
-            // Some of these are things that ARQ deals with but aren't SPARQL 
1.1 so force SPARQL 1.1
-            if ( Scripts.entryContainsSubstring(entry, 
"/Syntax-SPARQL_11/syn-bad-") )
-                syn = Syntax.syntaxSPARQL_11;
-            return new QuerySyntaxTest(entry, syn, false);
+            return new QuerySyntaxTest(entry, sparqlSyntax, false);
         }
+        // XXX [rdf-tests]
+//        if ( equalsType(testType, TestManifest_11.NegativeSyntaxTest11) ) {
+//            // XXX [specVersion] Checking as expected - then migrate
+//            // Special override
+//            Syntax syn = querySyntax11;
+//            // Some of these are things that ARQ deals with but aren't 
SPARQL 1.1 so force SPARQL 1.1
+//            if ( Scripts.entryContainsSubstring(entry, 
"/Syntax-SPARQL_11/syn-bad-") )
+//                syn = Syntax.syntaxSPARQL_11;
+//            return new QuerySyntaxTest(entry, syn, false);
+//        }
 
         if ( equalsType(testType, TestManifestX.NegativeSyntaxTestARQ) )
             return new QuerySyntaxTest(entry, Syntax.syntaxARQ, false);
@@ -107,7 +154,6 @@ public class SparqlTests {
         if ( equalsType(testType, TestManifest.QueryEvaluationTest) ) {
             // Locally not supported.
             // Omitted tests.
-
             // Two BNODE in the SELECT
             if ( entryContainsSubstring(entry, "functions/manifest#bnode01") )
                 return new OmittedTest(entry);
@@ -116,32 +162,37 @@ public class SparqlTests {
                 return new OmittedTest(entry);
 
             // Query evaluation tests.
-            return new QueryEvalTest(entry);
+            return new QueryEvalTest(entry, sparqlSyntax);
         }
         if ( equalsType(testType, TestManifestX.TestQuery) )
-            return new QueryEvalTest(entry);
+            return new QueryEvalTest(entry, sparqlSyntax);
 
         // ---- Update syntax tests
-        if ( equalsType(testType, TestManifest_11.PositiveUpdateSyntaxTest11) )
-            return new UpdateSyntaxTest(entry, updateSyntax11, true);
+//        if ( equalsType(testType, 
TestManifest_11.PositiveUpdateSyntaxTest11) )
+//            return new UpdateSyntaxTest(entry, sparqlSyntax, true);
+
         if ( equalsType(testType, TestManifestX.PositiveUpdateSyntaxTestARQ) )
             return new UpdateSyntaxTest(entry, Syntax.syntaxARQ, true);
 
-        if ( equalsType(testType, TestManifest_11.NegativeUpdateSyntaxTest11) )
-            return new UpdateSyntaxTest(entry, querySyntax11, false);
+//        if ( equalsType(testType, 
TestManifest_11.NegativeUpdateSyntaxTest11) )
+//            return new UpdateSyntaxTest(entry, sparqlSyntax, false);
+
         if ( equalsType(testType, TestManifestX.NegativeUpdateSyntaxTestARQ) )
             return new UpdateSyntaxTest(entry, Syntax.syntaxARQ, false);
 
-        if ( equalsType(testType, TestManifest_12.PositiveUpdateSyntaxTest) )
-            return new UpdateSyntaxTest(entry, Syntax.syntaxARQ, true);
-        if ( equalsType(testType, TestManifest_12.NegativeUpdateSyntaxTest) )
-            return new UpdateSyntaxTest(entry, Syntax.syntaxARQ, false);
+        if ( equalsType(testType, TestManifest.PositiveUpdateSyntaxTest) )
+            return new UpdateSyntaxTest(entry, sparqlSyntax, true);
+        if ( equalsType(testType, TestManifest.PositiveUpdateSyntaxTest11) )
+            return new UpdateSyntaxTest(entry, sparqlSyntax, true);
+
+        if ( equalsType(testType, TestManifest.NegativeUpdateSyntaxTest) )
+            return new UpdateSyntaxTest(entry, sparqlSyntax, false);
+        if ( equalsType(testType, TestManifest.NegativeUpdateSyntaxTest11) )
+            return new UpdateSyntaxTest(entry, sparqlSyntax, false);
 
         // ---- Update evaluation tests
-        if ( equalsType(testType, TestManifestUpdate_11.UpdateEvaluationTest) )
-            return new UpdateEvalTest(entry);
-        if ( equalsType(testType, TestManifest_11.UpdateEvaluationTest) )
-            return new UpdateEvalTest(entry);
+        if ( equalsType(testType, TestManifest.UpdateEvaluationTest) )
+            return new UpdateEvalTest(entry, sparqlSyntax);
 
         // ---- Other
 
@@ -150,14 +201,14 @@ public class SparqlTests {
 
         // Reduced is funny.
         if ( equalsType(testType, TestManifest.ReducedCardinalityTest) )
-            return new QueryEvalTest(entry);
+            return new QueryEvalTest(entry, sparqlSyntax);
 
         if ( equalsType(testType, TestManifestX.TestSurpressed) )
             return new SurpressedTest(entry);
 
-        if ( equalsType(testType, TestManifest_11.CSVResultFormatTest) ) {
-            Log.warn("Tests", "Skip CSV test: "+entry.getName());
-            return null;
+        if ( equalsType(testType, TestManifestX.CSVResultFormatTest) ) {
+            Log.warn("Tests", "Skip CSV query for test: "+entry.getName());
+            return new OmittedTest(entry);
         }
 
         return null;
@@ -167,7 +218,7 @@ public class SparqlTests {
         return typeNode.equals(typeResource.asNode());
     }
 
-    /** Make tests, execution only */
+    /** Make tests, execution only, any syntax version */
     static public Runnable makeSPARQLTestExecOnly(ManifestEntry entry, 
Creator<Dataset> maker) {
         Node testType = entry.getTestType();
         if ( testType == null )
@@ -176,9 +227,9 @@ public class SparqlTests {
         if ( testType != null ) {
             // -- Query Evaluation Tests
             if ( equalsType(testType, TestManifest.QueryEvaluationTest) )
-                return new QueryEvalTest(entry, maker);
+                return new QueryEvalTest(entry, null, maker);
             if ( equalsType(testType, TestManifestX.TestQuery) )
-                return new QueryEvalTest(entry, maker);
+                return new QueryEvalTest(entry, null, maker);
 
 //            // -- Update Evaluation tests
 //            if ( equalsType(testType, 
TestManifestUpdate_11.UpdateEvaluationTest) )
diff --git 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QueryEvalTest.java
 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QueryEvalTest.java
index a094fd3d9e..7e94d5211a 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QueryEvalTest.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QueryEvalTest.java
@@ -68,6 +68,7 @@ public class QueryEvalTest extends AbstractManifestTest {
     private final SPARQLResult results;
     private final QueryTestItem testItem;
     private final Creator<Dataset> creator;
+    private final Syntax syntax;
     /**
      * Whether to test result sets "by value" or "by term".
      * <p>
@@ -79,15 +80,16 @@ public class QueryEvalTest extends AbstractManifestTest {
      */
     public static boolean compareResultSetsByValue = true;
 
-    public QueryEvalTest(ManifestEntry entry, Creator<Dataset> maker) {
-        super(entry);
-        testItem = QueryTestItem.create(entry, 
TestManifest.QueryEvaluationTest.asNode());
-        results = testItem.getResults();
-        creator = maker;
+    public QueryEvalTest(ManifestEntry entry, Syntax syntax) {
+        this(entry, syntax, ()->DatasetFactory.createGeneral());
     }
 
-    public QueryEvalTest(ManifestEntry entry) {
-        this(entry, ()->DatasetFactory.createGeneral());
+    public QueryEvalTest(ManifestEntry entry, Syntax syntax, Creator<Dataset> 
maker) {
+        super(entry);
+        this.syntax = syntax;
+        this.testItem = QueryTestItem.create(entry, 
TestManifest.QueryEvaluationTest.asNode());
+        this.results = testItem.getResults();
+        this.creator = maker;
     }
 
     @Override
@@ -95,10 +97,9 @@ public class QueryEvalTest extends AbstractManifestTest {
         Query query;
         try {
             try {
-                query = SparqlTestLib.queryFromEntry(manifestEntry);
+                query = SparqlTestLib.queryFromEntry(manifestEntry, syntax);
             } catch (QueryParseException qEx) {
-                System.err.println("Parse failure in eval test: " + 
qEx.getMessage());
-                //setupFailure("Parse failure: " + qEx.getMessage());
+                setupFailure("Parse failure: " + qEx.getMessage());
                 fail("Parse failure: " + qEx.getMessage());
                 // Keep Java quiet!
                 throw qEx;
@@ -143,9 +144,12 @@ public class QueryEvalTest extends AbstractManifestTest {
     protected Dataset setUpDataset(Query query, QueryTestItem testItem) {
         try {
             if ( doesQueryHaveDataset(query) && 
doesTestItemHaveDataset(testItem) ) {
-                // known case - constructwhere04
+                // known cases where there is a dataset and FROM/FROM NAMED
+                //   sparql11/construct/constructwhere04
+                //   sparql/sparql10/datasets
                 // otherwise maybe a test error.
-                if ( ! entryContainsSubstring(testItem.getManifestEntry(), 
"manifest#constructwhere04") ) {
+                if ( ! entryContainsSubstring(testItem.getManifestEntry(), 
"/construct/manifest#constructwhere04")
+                        &&  ! 
entryContainsSubstring(testItem.getManifestEntry(), "/dataset/manifest#") ) {
                     // Only warn if there are results to test
                     // Syntax tests may have FROM etc and a manifest data file.
                     if ( testItem.getResultFile() != null )
diff --git 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SerializationTest.java
 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SerializationTest.java
index 8cb9553b8a..83cad573d3 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SerializationTest.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SerializationTest.java
@@ -46,7 +46,7 @@ public class SerializationTest extends AbstractManifestTest
     @Override
     public void runTest()
     {
-        Query query = SparqlTestLib.queryFromEntry(manifestEntry);
+        Query query = SparqlTestLib.queryFromEntry(manifestEntry, null);
         // Whatever was read in.
         runTestWorker(query, query.getSyntax()) ;
     }
diff --git 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SparqlTestLib.java
 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SparqlTestLib.java
index 47a1fac50e..28dd185b34 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SparqlTestLib.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SparqlTestLib.java
@@ -106,10 +106,6 @@ class SparqlTestLib {
         throw new TestSetupException("Can't determine the query. Not a blank 
node or a URI. "+entry.getAction());
     }
 
-    static Query queryFromEntry(ManifestEntry entry) {
-        return queryFromEntry(entry, null);
-    }
-
     /** read a query, forcing syntax */
     static Query queryFromEntry(ManifestEntry entry, Syntax syntax) {
         if ( queryFile(entry) == null ) {
diff --git 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/UpdateEvalTest.java
 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/UpdateEvalTest.java
index 501911f0b8..ee8daba1dd 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/UpdateEvalTest.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/UpdateEvalTest.java
@@ -48,13 +48,15 @@ import org.apache.jena.vocabulary.RDFS ;
 public class UpdateEvalTest extends AbstractManifestTest
 {
     private final Creator<Dataset> creator;
+    private final Syntax syntax;
 
-    public UpdateEvalTest(ManifestEntry entry) {
-        this(entry, ()->DatasetFactory.create());
+    public UpdateEvalTest(ManifestEntry entry, Syntax syntax) {
+        this(entry, syntax, ()->DatasetFactory.create());
     }
 
-    public UpdateEvalTest(ManifestEntry entry, Creator<Dataset> maker) {
+    public UpdateEvalTest(ManifestEntry entry, Syntax syntax, Creator<Dataset> 
maker) {
         super(entry);
+        this.syntax = syntax;
         this.creator = maker;
     }
 
@@ -64,7 +66,7 @@ public class UpdateEvalTest extends AbstractManifestTest
         Dataset output = getDataset(DatasetFactory.create(), 
manifestEntry.getGraph(), manifestEntry.getResult()) ;
 
         String updateFile = G.getOneSP(manifestEntry.getGraph(), 
manifestEntry.getAction(), TestManifestUpdate_11.request.asNode()).getURI();
-        UpdateRequest request = UpdateFactory.read(updateFile, 
Syntax.syntaxARQ) ;
+        UpdateRequest request = UpdateFactory.read(updateFile, syntax) ;
         UpdateAction.execute(request, input) ;
         boolean b = datasetSame(input, output, false) ;
         if ( ! b )
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/Scripts_SPARQL.java 
b/jena-arq/src/test/java/org/apache/jena/sparql/Scripts_SPARQL.java
index 9d4f0ca66b..5dc5c7046f 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/Scripts_SPARQL.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/Scripts_SPARQL.java
@@ -60,7 +60,7 @@ public class Scripts_SPARQL {
     @DisplayName("SPARQL 1.1")
     public Stream<DynamicNode> testFactorySPARQL_11() {
         return all(TestConsts.SPARQL11_TESTS_DIR+"manifest-sparql11-query.ttl",
-                   // Not CSV tests - no comparision supported.
+                   // No CSV tests - no comparision supported.
                    // No XML results - part of SPARQL 1.0.
                    TestConsts.SPARQL11_TESTS_DIR+"json-res/manifest.ttl",
                    
TestConsts.SPARQL11_TESTS_DIR+"manifest-sparql11-update.ttl");
diff --git a/jena-arq/testing/ARQ/PropertyFunctions/manifest.ttl 
b/jena-arq/testing/ARQ/PropertyFunctions/manifest.ttl
index 6452891a6a..7caf6fd57d 100644
--- a/jena-arq/testing/ARQ/PropertyFunctions/manifest.ttl
+++ b/jena-arq/testing/ARQ/PropertyFunctions/manifest.ttl
@@ -23,307 +23,355 @@
     mf:entries
     # data-0 is a zero triple graph.
     ( 
-      [  mf:name    "Property Function - list 1" ;
-         mf:action
-            [ qt:query  <list-1.rq> ;
-              qt:data   <data-1.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list 1" ;
+        mf:action
+           [ qt:query  <list-1.rq> ;
+             qt:data   <data-1.ttl> ] ;
         mf:result  <list-1.srx>
       ]
-      [  mf:name    "Property Function - list 2" ;
-         mf:action
-            [ qt:query  <list-2.rq> ;
-              qt:data   <data-1.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list 2" ;
+        mf:action
+           [ qt:query  <list-2.rq> ;
+             qt:data   <data-1.ttl> ] ;
         mf:result  <list-2.srx>
       ]
 
-      [  mf:name    "Property Function - list 3" ;
-         mf:action
-            [ qt:query  <list-3.rq> ;
-              qt:data   <data-1.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list 3" ;
+        mf:action
+           [ qt:query  <list-3.rq> ;
+             qt:data   <data-1.ttl> ] ;
         mf:result  <list-3.srx>
       ]
-      [  mf:name    "Property Function - list 4" ;
-         mf:action
-            [ qt:query  <list-4.rq> ;
-              qt:data   <data-1.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list 4" ;
+        mf:action
+           [ qt:query  <list-4.rq> ;
+             qt:data   <data-1.ttl> ] ;
         mf:result  <list-4.srx>
       ]
 
-      [  mf:name    "Property Function - list 5" ;
-         mf:action
-            [ qt:query  <list-5.rq> ;
-              qt:data   <data-1.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list 5" ;
+        mf:action
+           [ qt:query  <list-5.rq> ;
+             qt:data   <data-1.ttl> ] ;
         mf:result  <list-5.srx>
       ]
 
-      [  mf:name    "Property Function - list 6" ;
-         mf:action
-            [ qt:query  <list-6.rq> ;
-              qt:data   <data-1.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list 6" ;
+        mf:action
+           [ qt:query  <list-6.rq> ;
+             qt:data   <data-1.ttl> ] ;
         mf:result  <list-6.srx>
       ]
 
-      [  mf:name    "Property Function - list 7" ;
-         mf:action
-            [ qt:query  <list-7.rq> ;
-              qt:data   <data-1.ttl> ] ;
-        mf:result  <list-7.srx>
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list 7" ;
+        mf:action
+           [ qt:query  <list-7.rq> ;
+             qt:data   <data-1.ttl> ] ;
+       mf:result  <list-7.srx>
       ]
 
-      [  mf:name    "Property Function - list 8" ;
-         mf:action
-            [ qt:query  <list-8.rq> ;
-              qt:data   <data-1.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list 8" ;
+        mf:action
+           [ qt:query  <list-8.rq> ;
+             qt:data   <data-1.ttl> ] ;
         mf:result  <list-8.srx>
       ]
 
-      [  mf:name    "Property Function - list 9" ;
-         mf:action
-            [ qt:query  <list-9.rq> ;
-              qt:data   <data-1.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list 9" ;
+        mf:action
+           [ qt:query  <list-9.rq> ;
+             qt:data   <data-1.ttl> ] ;
         mf:result  <list-9.srx>
       ]
 
-      [  mf:name    "Property Function - list length 1" ;
-         mf:action
-            [ qt:query  <list-length-1.rq> ;
-              qt:data   <data-5.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list length 1" ;
+        mf:action
+           [ qt:query  <list-length-1.rq> ;
+             qt:data   <data-5.ttl> ] ;
         mf:result  <list-length-1.srx>
       ]
-      [  mf:name    "Property Function - list length 2" ;
-         mf:action
-            [ qt:query  <list-length-2.rq> ;
-              qt:data   <data-5.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list length 2" ;
+        mf:action
+           [ qt:query  <list-length-2.rq> ;
+             qt:data   <data-5.ttl> ] ;
         mf:result  <list-length-2.srx>
       ]
-      [  mf:name    "Property Function - list length 3" ;
-         mf:action
-            [ qt:query  <list-length-3.rq> ;
-              qt:data   <data-5.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list length 3" ;
+        mf:action
+           [ qt:query  <list-length-3.rq> ;
+             qt:data   <data-5.ttl> ] ;
         mf:result  <list-length-3.srx>
       ]
 
-      [  mf:name    "Property Function - list index 1" ;
-         mf:action
-            [ qt:query  <list-index-1.rq> ;
-              qt:data   <data-5.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list index 1" ;
+        mf:action
+           [ qt:query  <list-index-1.rq> ;
+             qt:data   <data-5.ttl> ] ;
         mf:result  <list-index-1.srx>
       ]
-      [  mf:name    "Property Function - list index 2" ;
-         mf:action
-            [ qt:query  <list-index-2.rq> ;
-              qt:data   <data-5.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list index 2" ;
+        mf:action
+           [ qt:query  <list-index-2.rq> ;
+             qt:data   <data-5.ttl> ] ;
         mf:result  <list-index-2.srx>
       ]
-      [  mf:name    "Property Function - list index 3" ;
-         mf:action
-            [ qt:query  <list-index-3.rq> ;
-              qt:data   <data-5.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list index 3" ;
+        mf:action
+           [ qt:query  <list-index-3.rq> ;
+             qt:data   <data-5.ttl> ] ;
         mf:result  <list-index-3.srx>
       ]
-      [  mf:name    "Property Function - list index 4" ;
-         mf:action
-            [ qt:query  <list-index-4.rq> ;
-              qt:data   <data-5.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list index 4" ;
+        mf:action
+           [ qt:query  <list-index-4.rq> ;
+             qt:data   <data-5.ttl> ] ;
         mf:result  <list-index-4.srx>
       ]
-      [  mf:name    "Property Function - list index 5" ;
-         mf:action
-            [ qt:query  <list-index-5.rq> ;
-              qt:data   <data-5.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list index 5" ;
+        mf:action
+           [ qt:query  <list-index-5.rq> ;
+             qt:data   <data-5.ttl> ] ;
         mf:result  <list-index-5.srx>
       ]
-      [  mf:name    "Property Function - list index 6" ;
-         mf:action
-            [ qt:query  <list-index-6.rq> ;
-              qt:data   <data-5.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list index 6" ;
+        mf:action
+           [ qt:query  <list-index-6.rq> ;
+             qt:data   <data-5.ttl> ] ;
         mf:result  <list-index-6.srx>
       ]
 
-      [  mf:name    "Property Function - list index 7" ;
-         mf:action
-            [ qt:query  <list-index-7.rq> ;
-              qt:data   <data-5.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list index 7" ;
+        mf:action
+           [ qt:query  <list-index-7.rq> ;
+             qt:data   <data-5.ttl> ] ;
         mf:result  <list-index-7.srx>
       ]
 
-      [  mf:name    "Property Function - list index 8" ;
-         mf:action
-            [ qt:query  <list-index-8.rq> ;
-              qt:data   <data-5.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list index 8" ;
+        mf:action
+           [ qt:query  <list-index-8.rq> ;
+             qt:data   <data-5.ttl> ] ;
         mf:result  <list-index-8.srx>
       ]
 
-      [  mf:name    "Property Function - list index 9" ;
-         mf:action
-            [ qt:query  <list-index-9.rq> ;
-              qt:data   <data-5.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - list index 9" ;
+        mf:action
+           [ qt:query  <list-index-9.rq> ;
+             qt:data   <data-5.ttl> ] ;
         mf:result  <list-index-9.srx>
       ]
 
-      [  mf:name    "Property Function - container 1" ;
-         mf:action
-            [ qt:query  <container-1.rq> ;
-              qt:data   <data-2.ttl> ] ;
-        mf:result  <container-1.srx>
-      ]
-      [  mf:name    "Property Function - container 2" ;
-         mf:action
-            [ qt:query  <container-2.rq> ;
-              qt:data   <data-2.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - container 1" ;
+        mf:action
+           [ qt:query  <container-1.rq> ;
+             qt:data   <data-2.ttl> ] ;
+         mf:result  <container-1.srx>
+      ]
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - container 2" ;
+        mf:action
+           [ qt:query  <container-2.rq> ;
+             qt:data   <data-2.ttl> ] ;
         mf:result  <container-2.srx>
       ]
-      [  mf:name    "Property Function - container 3" ;
-         mf:action
-            [ qt:query  <container-3.rq> ;
-              qt:data   <data-2.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - container 3" ;
+        mf:action
+           [ qt:query  <container-3.rq> ;
+             qt:data   <data-2.ttl> ] ;
         mf:result  <container-3.srx>
       ]
-      [  mf:name    "Property Function - container 4" ;
-         mf:action
-            [ qt:query  <container-4.rq> ;
-              qt:data   <data-2.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - container 4" ;
+        mf:action
+           [ qt:query  <container-4.rq> ;
+             qt:data   <data-2.ttl> ] ;
         mf:result  <container-4.srx>
       ]
-      [  mf:name    "Property Function - container 5" ;
-         mf:action
-            [ qt:query  <container-5.rq> ;
-              qt:data   <data-4.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - container 5" ;
+        mf:action
+           [ qt:query  <container-5.rq> ;
+             qt:data   <data-4.ttl> ] ;
         mf:result  <container-5.srx>
       ]
-      [  mf:name    "Property Function - container 6" ;
-         mf:action
-            [ qt:query  <container-6.rq> ;
-              qt:data   <data-4.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - container 6" ;
+        mf:action
+           [ qt:query  <container-6.rq> ;
+             qt:data   <data-4.ttl> ] ;
         mf:result  <container-6.srx>
       ]
 
-      [  mf:name    "Property Function - container 7" ;
-         mf:action
-            [ qt:query  <container-7.rq> ;
-              qt:data   <data-4.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - container 7" ;
+        mf:action
+           [ qt:query  <container-7.rq> ;
+             qt:data   <data-4.ttl> ] ;
         mf:result  <container-7.srx>
       ]
 
-      [  mf:name    "Property Function - container 8" ;
-         mf:action
-            [ qt:query  <container-8.rq> ;
-              qt:data   <data-4.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - container 8" ;
+        mf:action
+           [ qt:query  <container-8.rq> ;
+             qt:data   <data-4.ttl> ] ;
         mf:result  <container-8.srx>
       ]
 
-      [  mf:name    "Property Function - container 9" ;
-         mf:action
-            [ qt:query  <container-9.rq> ;
-              qt:data   <data-6.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - container 9" ;
+        mf:action
+           [ qt:query  <container-9.rq> ;
+             qt:data   <data-6.ttl> ] ;
         mf:result  <container-9.srx>
       ]
 
-      [  mf:name    "Property Function - sequence 1" ;
-         mf:action
-            [ qt:query  <seq-1.rq> ;
-              qt:data   <data-2.ttl> ] ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - sequence 1" ;
+        mf:action
+           [ qt:query  <seq-1.rq> ;
+             qt:data   <data-2.ttl> ] ;
         mf:result  <seq-1.ttl>
       ]
 
-      [ mf:name    "Property Function - splitIRI 1" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - splitIRI 1" ;
         mf:action
             [ qt:query  <splitIRI-1.rq> ;
               qt:data   <data-3.ttl> ] ;
-        mf:result  <splitIRI-1.srx>
+         mf:result  <splitIRI-1.srx>
       ]
-      [ mf:name    "Property Function - splitIRI 2" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - splitIRI 2" ;
         mf:action
             [ qt:query  <splitIRI-2.rq> ;
               qt:data   <data-3.ttl> ] ;
-        mf:result  <splitIRI-2.srx>
+         mf:result  <splitIRI-2.srx>
       ]
-      [ mf:name    "Property Function - splitIRI 3" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - splitIRI 3" ;
         mf:action
             [ qt:query  <splitIRI-3.rq> ;
               qt:data   <data-3.ttl> ] ;
         mf:result  <splitIRI-3.srx>
       ]
-      [ mf:name    "Property Function - splitIRI 4" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - splitIRI 4" ;
         mf:action
             [ qt:query  <splitIRI-4.rq> ;
               qt:data   <data-3.ttl> ] ;
-        mf:result  <splitIRI-4.srx>
+         mf:result  <splitIRI-4.srx>
       ]
-      [ mf:name    "Property Function - splitIRI 5" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - splitIRI 5" ;
         mf:action
             [ qt:query  <splitIRI-5.rq> ;
               qt:data   <data-3.ttl> ] ;
         mf:result  <splitIRI-5.ttl>
       ]
-      [ mf:name    "Property Function - splitIRI 6" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - splitIRI 6" ;
         mf:action
             [ qt:query  <splitIRI-6.rq> ;
               qt:data   <data-3.ttl> ] ;
-        mf:result  <splitIRI-6.srx>
+         mf:result  <splitIRI-6.srx>
       ]
-      [ mf:name    "Property Function - splitIRI 7" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - splitIRI 7" ;
         mf:action
             [ qt:query  <splitIRI-7.rq> ;
               qt:data   <data-3.ttl> ] ;
         mf:result  <splitIRI-7.srx>
       ]
-      [ mf:name    "Property Function - splitIRI 8" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - splitIRI 8" ;
         mf:action
             [ qt:query  <splitIRI-8.rq> ;
               qt:data   <data-3.ttl> ] ;
         mf:result  <splitIRI-8.srx>
       ]
-      [ mf:name    "Property Function - splitIRI 9" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - splitIRI 9" ;
         mf:action
             [ qt:query  <splitIRI-9.rq> ;
               qt:data   <data-3.ttl> ] ;
         mf:result  <splitIRI-9.srx>
       ]
-      [ mf:name    "Property Function - Assign 1" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - Assign 1" ;
         mf:action
             [ qt:query  <assign-1.rq> ;
               qt:data   <data-3.ttl> ] ;
         mf:result  <assign-1.srx>
       ]
-      [ mf:name    "Property Function - Assign 2" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - Assign 2" ;
         mf:action
             [ qt:query  <assign-2.rq> ;
               qt:data   <data-3.ttl> ] ;
         mf:result  <assign-2.srx>
       ]
-      [ mf:name    "Property Function - Assign 3" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - Assign 3" ;
         mf:action
             [ qt:query  <assign-3.rq> ;
               qt:data   <data-3.ttl> ] ;
         mf:result  <assign-3.srx>
       ]
-      [ mf:name    "Property Function - Assign 4" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - Assign 4" ;
         mf:action
             [ qt:query  <assign-4.rq> ;
               qt:data   <data-3.ttl> ] ;
         mf:result  <assign-4.srx>
       ]
-      [ mf:name    "Property Function - Assign 5" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - Assign 5" ;
         mf:action
             [ qt:query  <assign-5.rq> ;
               qt:data   <data-3.ttl> ] ;
         mf:result  <assign-5.srx>
       ]
 
-     [ mf:name    "Property Function - Assign 6 (via java:)" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - Assign 6 (via java:)" ;
         mf:action
             [ qt:query  <assign-6.rq> ;
               qt:data   <data-3.ttl> ] ;
         mf:result  <assign-6.srx>
       ]
-     [ mf:name    "Property Function - str" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - str" ;
         mf:action
             [ qt:query  <str-1.rq> ;
               qt:data   <data-0.ttl> ] ;
         mf:result  <str-1.srx>
-     ]
-     [ mf:name    "Property Function - concat" ;
+      ]
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "Property Function - concat" ;
         mf:action
             [ qt:query  <concat-1.rq> ;
               qt:data   <data-3.ttl> ] ;
diff --git a/jena-arq/testing/ARQ/Scripting/manifest.ttl 
b/jena-arq/testing/ARQ/Scripting/manifest.ttl
index aea79e4e84..f8bcec64fb 100644
--- a/jena-arq/testing/ARQ/Scripting/manifest.ttl
+++ b/jena-arq/testing/ARQ/Scripting/manifest.ttl
@@ -23,29 +23,33 @@
     rdfs:comment  "JavaScript function" ;
     mf:entries
     ( 
-      [  mf:name    "JS Call: file-defined function - js:identity" ;
-         mf:action
-            [ qt:query  <js-query-1.rq> ;
-              qt:data   <data.ttl> ] ;
-         mf:result  <js-query-1.srj>
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "JS Call: file-defined function - js:identity" ;
+        mf:action
+           [ qt:query  <js-query-1.rq> ;
+             qt:data   <data.ttl> ] ;
+        mf:result  <js-query-1.srj>
       ]
-      [  mf:name    "JS Call: string-defined function - js:inc" ;
-         mf:action
-            [ qt:query  <js-query-2.rq> ;
-              qt:data   <data.ttl> ] ;
-         mf:result  <js-query-2.srj>
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "JS Call: string-defined function - js:inc" ;
+        mf:action
+           [ qt:query  <js-query-2.rq> ;
+             qt:data   <data.ttl> ] ;
+        mf:result  <js-query-2.srj>
       ]
-      [  mf:name    "JS Call: nested functions - js:inc(js:inc)" ;
-         mf:action
-            [ qt:query  <js-query-3.rq> ;
-              qt:data   <data.ttl> ] ;
-         mf:result  <js-query-3.srj>
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "JS Call: nested functions - js:inc(js:inc)" ;
+        mf:action
+           [ qt:query  <js-query-3.rq> ;
+             qt:data   <data.ttl> ] ;
+        mf:result  <js-query-3.srj>
       ]
-      [  mf:name    "JS Call: FILTER functions - multiple calls" ;
-         mf:action
-            [ qt:query  <js-query-4.rq> ;
-              qt:data   <data.ttl> ] ;
-         mf:result  <js-query-4.srj>
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "JS Call: FILTER functions - multiple calls" ;
+        mf:action
+           [ qt:query  <js-query-4.rq> ;
+             qt:data   <data.ttl> ] ;
+        mf:result  <js-query-4.srj>
       ]
       ## js-query-5 is an error and run separately.
     ).
diff --git a/jena-arq/testing/ARQ/ValueTesting/manifest.ttl 
b/jena-arq/testing/ARQ/ValueTesting/manifest.ttl
index f447384aff..d344866e21 100644
--- a/jena-arq/testing/ARQ/ValueTesting/manifest.ttl
+++ b/jena-arq/testing/ARQ/ValueTesting/manifest.ttl
@@ -13,162 +13,156 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-# $Id: manifest.n3,v 1.3 2006/07/14 15:59:33 andy_seaborne Exp $
-
 @prefix rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
 @prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
-@prefix dawgt:   <http://www.w3.org/2001/sw/DataAccess/tests/test-dawg#> .
 @prefix mf:     <http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#> .
 @prefix qt:     <http://www.w3.org/2001/sw/DataAccess/tests/test-query#> .
 
 <>  rdf:type mf:Manifest ;
     rdfs:comment "Value Testing Tests" ;
     mf:entries
-    ([  mf:name    "extendedType-eq-pass" ;
-        rdfs:comment
+    ([ rdf:type   mf:QueryEvaluationTest ;
+       mf:name    "extendedType-eq-pass" ;
+       rdfs:comment
             "Only extended types with identical lexical and datatypes can be 
tested for = ." ;
-        mf:action
+       mf:action
             [ qt:data   <extendedType-0.n3> ;
               qt:query  <extendedType-eq-pass.rq> ] ;
-        mf:result  <extendedType-eq-pass-result.n3> ;
-        dawgt:approval dawgt:Approved ;
-       dawgt:approvedBy 
<http://lists.w3.org/Archives/Public/public-rdf-dawg/2005JulSep/0175>
-      ]
+       mf:result  <extendedType-eq-pass-result.n3> ;
+     ]
 
-     [  mf:name    "extendedType-ne-fail" ;
-        rdfs:comment
+     [ rdf:type   mf:QueryEvaluationTest ;
+       mf:name    "extendedType-ne-fail" ;
+       rdfs:comment
             "Opaque types can not be tested for != ." ;
-        rdfs:seeAlso
-            <http://www.w3.org/2005/04/26-dawg-irc#T15-21-30> ;
-        mf:action
+       mf:action
             [ qt:data   <extendedType-0.n3> ;
               qt:query  <extendedType-ne-fail.rq> ] ;
-        mf:result  <extendedType-ne-fail-result.n3> ;
-        dawgt:approval dawgt:Approved ;
-       dawgt:approvedBy 
<http://lists.w3.org/Archives/Public/public-rdf-dawg/2005JulSep/0175>
+       mf:result  <extendedType-ne-fail-result.n3> ;
       ]
 
-     [  mf:name    "extendedType-literal-eq" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "extendedType-literal-eq" ;
         rdfs:comment
             "Test FILTER match on extended type." ;
         mf:action
             [ qt:data   <extendedType-0.n3> ;
               qt:query  <extendedType-literal-eq.rq> ] ;
         mf:result  <extendedType-literal-eq-result.n3> ;
-        dawgt:approval dawgt:NotApproved
       ]
 
-     [  mf:name    "extendedType-literal-ne" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "extendedType-literal-ne" ;
         rdfs:comment
             "Test FILTER negative match on extended type." ;
         mf:action
             [ qt:data   <extendedType-0.n3> ;
               qt:query  <extendedType-literal-ne.rq> ] ;
         mf:result  <extendedType-literal-ne-result.n3> ;
-        dawgt:approval dawgt:NotApproved
       ]
 
-     [  mf:name    "extendedType-graph" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "extendedType-graph" ;
         rdfs:comment
             "Test graph match on extended type." ;
         mf:action
             [ qt:data   <extendedType-0.n3> ;
               qt:query  <extendedType-graph.rq> ] ;
         mf:result  <extendedType-graph-result.n3> ;
-        dawgt:approval dawgt:NotApproved
       ]
 
-     [  mf:name    "typePromotion-decimal-decimal-pass" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "typePromotion-decimal-decimal-pass" ;
         rdfs:comment
             "Positive test: product of type promotion within the xsd:decimal 
type tree." ;
         mf:action
             [ qt:data   <typePromotion-0.n3> ;
               qt:query  <typePromotion-decimal-decimal-pass.rq> ] ;
         mf:result  <typePromotion-decimal-decimal-pass-result.n3> ;
-        dawgt:approval dawgt:NotApproved
       ]
 
-     [  
-       mf:name    "typePromotion-decimal-decimal-fail" ;
-        rdfs:comment
-            "Negative test: product of type promotion within the xsd:decimal 
type tree." ;
-        mf:action
-            [ qt:data   <typePromotion-0.n3> ;
-              qt:query  <typePromotion-decimal-decimal-fail.rq> ] ;
-        mf:result  <typePromotion-decimal-decimal-fail-result.n3> ;
-        dawgt:approval dawgt:NotApproved
+     [ rdf:type   mf:QueryEvaluationTest ;
+       mf:name    "typePromotion-decimal-decimal-fail" ;
+       rdfs:comment
+           "Negative test: product of type promotion within the xsd:decimal 
type tree." ;
+       mf:action
+           [ qt:data   <typePromotion-0.n3> ;
+             qt:query  <typePromotion-decimal-decimal-fail.rq> ] ;
+       mf:result  <typePromotion-decimal-decimal-fail-result.n3> ;
       ]
 
-     [  mf:name    "boolean-equiv-FALSE" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "boolean-equiv-FALSE" ;
         rdfs:comment
             "FALSE = legal boolean values." ;
         mf:action
             [ qt:data   <boolean-0.n3> ;
               qt:query  <boolean-equiv-FALSE.rq> ] ;
         mf:result  <boolean-equiv-FALSE-result.n3> ;
-        dawgt:approval dawgt:NotApproved
       ]
 
-     [  mf:name    "boolean-equiv-TRUE" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "boolean-equiv-TRUE" ;
         rdfs:comment
             "TRUE = legal boolean values." ;
         mf:action
             [ qt:data   <boolean-0.n3> ;
               qt:query  <boolean-equiv-TRUE.rq> ] ;
         mf:result  <boolean-equiv-TRUE-result.n3> ;
-        dawgt:approval dawgt:NotApproved
       ]
 
-     [  mf:name    "boolean-equiv-xsdType" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "boolean-equiv-xsdType" ;
         rdfs:comment
             "Various lexical forms of xsd:boolean equal each other." ;
         mf:action
             [ qt:data   <boolean-0.n3> ;
               qt:query  <boolean-equiv-xsdType.rq> ] ;
         mf:result  <boolean-equiv-xsdType-result.n3> ;
-        dawgt:approval dawgt:NotApproved
       ]
 
-     [  mf:name    "boolean-logical-OR" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "boolean-logical-OR" ;
         rdfs:comment
             "Various lexical forms of xsd:boolean equal an EBV." ;
         mf:action
             [ qt:data   <boolean-0.n3> ;
               qt:query  <boolean-logical-OR.rq> ] ;
         mf:result  <boolean-logical-OR-result.n3> ;
-        dawgt:approval dawgt:NotApproved
       ]
 
-     [  mf:name    "boolean-false-canonical" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "boolean-false-canonical" ;
         rdfs:comment
             "Lexical form of FALSE" ;
         mf:action
             [ qt:data   <boolean-0.n3> ;
               qt:query  <boolean-false-canonical.rq> ] ;
         mf:result  <boolean-false-canonical-result.n3> ;
-        dawgt:approval dawgt:NotApproved
       ]
 
-     [  mf:name    "boolean-true-canonical" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "boolean-true-canonical" ;
         rdfs:comment
             "Lexical form of TRUE" ;
         mf:action
             [ qt:data   <boolean-0.n3> ;
               qt:query  <boolean-true-canonical.rq> ] ;
         mf:result  <boolean-true-canonical-result.n3> ;
-        dawgt:approval dawgt:NotApproved
       ]
 
-     [  mf:name    "boolean-EBV-canonical" ;
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "boolean-EBV-canonical" ;
         rdfs:comment
             "Lexical form of EBV" ;
         mf:action
             [ qt:data   <boolean-0.n3> ;
               qt:query  <boolean-EBV-canonical.rq> ] ;
         mf:result  <boolean-EBV-canonical-result.n3> ;
-        dawgt:approval dawgt:NotApproved
       ]
-      [ mf:name    "xsd-string-lt" ;
+      
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "xsd-string-lt" ;
         rdfs:comment
             "FILTER with < on xsd:string" ;
         mf:action
@@ -176,7 +170,9 @@
               qt:query  <xsd-string-lt.rq> ] ;
         mf:result <xsd-string-lt-result.rdf> 
       ]
-      [ mf:name    "xsd-string-gt" ;
+
+      [ rdf:type   mf:QueryEvaluationTest ;
+        mf:name    "xsd-string-gt" ;
         rdfs:comment
             "FILTER with > on xsd:string" ;
         mf:action
@@ -184,7 +180,4 @@
               qt:query  <xsd-string-gt.rq> ] ;
         mf:result <xsd-string-gt-result.rdf>
       ]
-            
-
-    # End of tests
    ).
diff --git a/jena-core/src/main/java/org/apache/jena/util/LocationMapper.java 
b/jena-core/src/main/java/org/apache/jena/util/LocationMapper.java
index 5d8c2256c6..268f417626 100644
--- a/jena-core/src/main/java/org/apache/jena/util/LocationMapper.java
+++ b/jena-core/src/main/java/org/apache/jena/util/LocationMapper.java
@@ -30,17 +30,17 @@ import org.apache.jena.vocabulary.LocationMappingVocab ;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/** 
+/**
  * Alternative locations for URIs.  Maintains two maps:
  * single item alternatives and alternative prefixes.
  * To suggest an alternative location, first check the single items,
  * then check the prefixes.
- *    
+ *
  * A LocationMapper can be configured by an RDF file.  The default for this
  * is "etc/location-mapping.n3".
- * 
+ *
  * There is a default LocationMapper which is used by the global 
@link{FileManager}.
- * 
+ *
  * @see FileManager
  */
 public class LocationMapper
@@ -53,27 +53,24 @@ public class LocationMapper
         "file:etc/location-mapping.ttl" ;
     public static final String GlobalMapperSystemProperty1 = 
"http://jena.hpl.hp.com/2004/08/LocationMap"; ;
     public static final String GlobalMapperSystemProperty2 = "LocationMap" ;
-    
-    static String s_globalMapperPath = null ; 
-        
+
+    static String s_globalMapperPath = null ;
+
     Map<String, String> altLocations = new HashMap<>() ;
     Map<String, String> altPrefixes = new HashMap<>() ;
-    
+
     static LocationMapper theMapper = null ;
-    
+
     /** For use within Jena libraries only. */
-    public static LocationMapper getInternal()
-    {
-        if ( theMapper == null )
-        {
-            theMapper = new LocationMapper() ;
+    public static LocationMapper getInternal() {
+        if ( theMapper == null ) {
+            theMapper = new LocationMapper();
             if ( getGlobalConfigPath() != null )
-                theMapper.initFromPath(getGlobalConfigPath(), false) ;
+                theMapper.initFromPath(getGlobalConfigPath(), false);
         }
-        return theMapper ;
+        return theMapper;
     }
-    
-    
+
     /**
      * Get the global LocationMapper.
      * @deprecated Use {@code StreamManager} and {@code LocationMapper} from 
{@code org.apache.jena.riot.system.stream}.
@@ -81,340 +78,297 @@ public class LocationMapper
     @Deprecated
     public static LocationMapper get() { return getInternal(); }
 
-    
     /** Set the global location mapper. (as returned by {@link #get()})
-     * If called before any call to get(), then the usual default global 
location mapper is not created 
+     * If called before any call to get(), then the usual default global 
location mapper is not created
      * @param globalLocationMapper
      */
-    public static void setGlobalLocationMapper(LocationMapper 
globalLocationMapper)
-    {
-        theMapper = globalLocationMapper ;
+    public static void setGlobalLocationMapper(LocationMapper 
globalLocationMapper) {
+        theMapper = globalLocationMapper;
     }
 
-    /** Make a location mapper from the path settings */ 
-    static public LocationMapper makeGlobal()
-    {
-        LocationMapper lMap = new LocationMapper() ;
+    /** Make a location mapper from the path settings */
+    static public LocationMapper makeGlobal() {
+        LocationMapper lMap = new LocationMapper();
         if ( getGlobalConfigPath() != null )
-            lMap.initFromPath(getGlobalConfigPath(), false) ;
-        return lMap ;
+            lMap.initFromPath(getGlobalConfigPath(), false);
+        return lMap;
     }
-    
+
     /**
      * Create a LocationMapper with no mapping yet
      * @deprecated Use {@code StreamManager} and {@code LocationMapper} from 
{@code org.apache.jena.riot.system.stream}.
      */
     @Deprecated
     public LocationMapper() { }
-    
+
     /**
      * Create a LocationMapper made like another one
-     * This is a deep copy of the location and prefix maps.   
+     * This is a deep copy of the location and prefix maps.
      * @deprecated Use {@code StreamManager} and {@code LocationMapper} from 
{@code org.apache.jena.riot.system.stream}.
      */
     @Deprecated
-    public LocationMapper(LocationMapper locMapper)
-    {
-        altLocations.putAll(locMapper.altLocations) ;
-        altPrefixes.putAll(locMapper.altPrefixes) ;
+    public LocationMapper(LocationMapper locMapper) {
+        altLocations.putAll(locMapper.altLocations);
+        altPrefixes.putAll(locMapper.altPrefixes);
     }
-    
+
     /** Create a LocationMapper from an existing model
      * @see org.apache.jena.vocabulary.LocationMappingVocab
      * @deprecated Use {@code StreamManager} and {@code LocationMapper} from 
{@code org.apache.jena.riot.system.stream}.
      */
     @Deprecated
-    public LocationMapper(Model model)
-    {
-        processConfig(model) ;
+    public LocationMapper(Model model) {
+        processConfig(model);
     }
-    
+
     /**
-     * Create a LocationMapper from a config file 
-     * @deprecated Use {@code StreamManager} and {@code LocationMapper} from 
{@code org.apache.jena.riot.system.stream}.
+     * Create a LocationMapper from a config file
+     *
+     * @deprecated Use {@code StreamManager} and {@code LocationMapper} from
+     *     {@code org.apache.jena.riot.system.stream}.
      */
     @Deprecated
-    public LocationMapper(String config)
-    {
-        initFromPath(config, true) ;
+    public LocationMapper(String config) {
+        initFromPath(config, true);
     }
-    
-    private void initFromPath(String configPath, boolean configMustExist)
-    {
-        if ( configPath == null || configPath.length() == 0 )
-        {
-            log.warn("Null configuration") ;
-            return ;
+
+    private void initFromPath(String configPath, boolean configMustExist) {
+        if ( configPath == null || configPath.length() == 0 ) {
+            log.warn("Null configuration");
+            return;
         }
-        
+
         // Make a file manager to look for the location mapping file
-        FileManager fm = new FileManagerImpl() ;
-        fm.addLocatorFile() ;
-        fm.addLocatorClassLoader(fm.getClass().getClassLoader()) ;
-        
+        FileManager fm = new FileManagerImpl();
+        fm.addLocatorFile();
+        fm.addLocatorClassLoader(fm.getClass().getClassLoader());
+
         try {
-            String uriConfig = null ; 
-            InputStream in = null ;
-            
-            StringTokenizer pathElems = new StringTokenizer( configPath, 
FileManager.PATH_DELIMITER );
+            String uriConfig = null;
+            InputStream in = null;
+
+            StringTokenizer pathElems = new StringTokenizer(configPath, 
FileManager.PATH_DELIMITER);
             while (pathElems.hasMoreTokens()) {
                 String uri = pathElems.nextToken();
                 if ( uri == null || uri.length() == 0 )
-                    break ;
-                
-                in = fm.openNoMap(uri) ;
-                if ( in != null )
-                {
-                    uriConfig = uri ;
-                    break ;
+                    break;
+
+                in = fm.openNoMap(uri);
+                if ( in != null ) {
+                    uriConfig = uri;
+                    break;
                 }
             }
 
-            if ( in == null )
-            {
-                if ( ! configMustExist )
-                    log.debug("Failed to find configuration: "+configPath) ;
-                return ;
+            if ( in == null ) {
+                if ( !configMustExist )
+                    log.debug("Failed to find configuration: " + configPath);
+                return;
             }
-            String syntax = FileUtils.guessLang(uriConfig) ;
-            Model model = ModelFactory.createDefaultModel() ;
-            model.read(in, uriConfig, syntax) ;
-            processConfig(model) ;
-        } catch (JenaException ex)
-        {
-            LoggerFactory.getLogger(LocationMapper.class).warn("Error in 
configuration file: "+ex.getMessage()) ;
+            String syntax = FileUtils.guessLang(uriConfig);
+            Model model = ModelFactory.createDefaultModel();
+            model.read(in, uriConfig, syntax);
+            processConfig(model);
+        } catch (JenaException ex) {
+            LoggerFactory.getLogger(LocationMapper.class).warn("Error in 
configuration file: " + ex.getMessage());
         }
     }
-    
-    public String altMapping(String uri)
-    {
-        return altMapping(uri, uri) ;
+
+    public String altMapping(String uri) {
+        return altMapping(uri, uri);
     }
 
-    /** Apply mappings: first try for an exact alternative location, then
-     *  try to remap by prefix, finally, try the special case of filenames
-     *  in a specific base directory. 
+    /**
+     * Apply mappings: first try for an exact alternative location, then try 
to remap
+     * by prefix, finally, try the special case of filenames in a specific base
+     * directory.
+     *
      * @param uri
      * @param otherwise
      * @return The alternative location chosen
      */
-    public String altMapping(String uri, String otherwise)
-    {
-        if ( altLocations.containsKey(uri)) 
-            return altLocations.get(uri) ;
-        String newStart = null ;
-        String oldStart = null ;
-        for ( String prefix : altPrefixes.keySet() )
-        {
-            if ( uri.startsWith( prefix ) )
-            {
-                String s = altPrefixes.get( prefix );
-                if ( newStart == null || newStart.length() < s.length() )
-                {
+    public String altMapping(String uri, String otherwise) {
+        if ( altLocations.containsKey(uri) )
+            return altLocations.get(uri);
+        String newStart = null;
+        String oldStart = null;
+        for ( String prefix : altPrefixes.keySet() ) {
+            if ( uri.startsWith(prefix) ) {
+                String s = altPrefixes.get(prefix);
+                if ( newStart == null || newStart.length() < s.length() ) {
                     oldStart = prefix;
                     newStart = s;
                 }
             }
         }
-        
+
         if ( newStart != null )
-            return newStart+uri.substring(oldStart.length()) ;
-        
-        return otherwise ;
+            return newStart + uri.substring(oldStart.length());
+
+        return otherwise;
+    }
+
+    public void addAltEntry(String uri, String alt) {
+        altLocations.put(uri, alt);
+    }
+
+    public void addAltPrefix(String uriPrefix, String altPrefix) {
+        altPrefixes.put(uriPrefix, altPrefix);
     }
-    
 
-    public void addAltEntry(String uri, String alt)
-    {
-        altLocations.put(uri, alt) ;
+    /** Iterate over all the entries registered */
+    public Iterator<String> listAltEntries() {
+        return altLocations.keySet().iterator();
     }
 
-    public void addAltPrefix(String uriPrefix, String altPrefix) 
-    {
-        altPrefixes.put(uriPrefix, altPrefix) ;
+    /** Iterate over all the prefixes registered */
+    public Iterator<String> listAltPrefixes() {
+        return altPrefixes.keySet().iterator();
     }
 
-    /** Iterate over all the entries registered */ 
-    public Iterator<String> listAltEntries()  { return 
altLocations.keySet().iterator() ; } 
-    /** Iterate over all the prefixes registered */ 
-    public Iterator<String> listAltPrefixes() { return 
altPrefixes.keySet().iterator() ; } 
-    
-    public void removeAltEntry(String uri)
-    {
-        altLocations.remove(uri) ;
+    public void removeAltEntry(String uri) {
+        altLocations.remove(uri);
     }
 
-    public void removeAltPrefix(String uriPrefix) 
-    {
-        altPrefixes.remove(uriPrefix) ;
+    public void removeAltPrefix(String uriPrefix) {
+        altPrefixes.remove(uriPrefix);
     }
-    public String getAltEntry(String uri)
-    {
-        return altLocations.get(uri) ;
+
+    public String getAltEntry(String uri) {
+        return altLocations.get(uri);
     }
 
-    public String getAltPrefix(String uriPrefix) 
-    {
-        return altPrefixes.get(uriPrefix) ;
+    public String getAltPrefix(String uriPrefix) {
+        return altPrefixes.get(uriPrefix);
     }
-    
-    
-    static private String getGlobalConfigPath()
-    {
+
+    static private String getGlobalConfigPath() {
         if ( s_globalMapperPath == null )
-            s_globalMapperPath = 
SystemUtils.getSystemProperty(GlobalMapperSystemProperty1,null) ;
+            s_globalMapperPath = 
SystemUtils.getSystemProperty(GlobalMapperSystemProperty1, null);
         if ( s_globalMapperPath == null )
-            s_globalMapperPath = 
SystemUtils.getSystemProperty(GlobalMapperSystemProperty2,null) ;
+            s_globalMapperPath = 
SystemUtils.getSystemProperty(GlobalMapperSystemProperty2, null);
         if ( s_globalMapperPath == null )
-            s_globalMapperPath = DEFAULT_PATH ;
-        return s_globalMapperPath ;
+            s_globalMapperPath = DEFAULT_PATH;
+        return s_globalMapperPath;
     }
-    
+
     @Override
-    public int hashCode()
-    {
-        int x = 0 ;
+    public int hashCode() {
+        int x = 0;
 
-        for ( String k : altLocations.keySet() )
-        {
-            String v = altLocations.get( k );
+        for ( String k : altLocations.keySet() ) {
+            String v = altLocations.get(k);
             x = x ^ k.hashCode() ^ v.hashCode();
         }
-        for ( String k : altPrefixes.keySet() )
-        {
-            String v = altPrefixes.get( k );
+        for ( String k : altPrefixes.keySet() ) {
+            String v = altPrefixes.get(k);
             x = x ^ k.hashCode() ^ v.hashCode();
         }
-        return x ;
+        return x;
     }
-    
+
     @Override
-    public boolean equals(Object obj)
-    {
-        if ( ! ( obj instanceof LocationMapper ) )
-            return false ;
-        LocationMapper other = (LocationMapper)obj ;
-        
+    public boolean equals(Object obj) {
+        if ( !(obj instanceof LocationMapper) )
+            return false;
+        LocationMapper other = (LocationMapper)obj;
+
         if ( altLocations.size() != other.altLocations.size() )
-            return false ;
-        
+            return false;
+
         if ( altPrefixes.size() != other.altPrefixes.size() )
-            return false ;
+            return false;
 
-        for ( String k : altLocations.keySet() )
-        {
-            String v = altLocations.get( k );
-            if ( !other.altLocations.get( k ).equals( v ) )
-            {
+        for ( String k : altLocations.keySet() ) {
+            String v = altLocations.get(k);
+            if ( !other.altLocations.get(k).equals(v) ) {
                 return false;
             }
         }
-        for ( String k : altPrefixes.keySet() )
-        {
-            String v = altPrefixes.get( k );
-            if ( !other.altPrefixes.get( k ).equals( v ) )
-            {
+        for ( String k : altPrefixes.keySet() ) {
+            String v = altPrefixes.get(k);
+            if ( !other.altPrefixes.get(k).equals(v) ) {
                 return false;
             }
         }
-        return true ;
+        return true;
     }
-    
+
     @Override
-    public String toString()
-    {
-        String s = "" ;
-        for ( String k : altLocations.keySet() )
-        {
-            String v = altLocations.get( k );
+    public String toString() {
+        String s = "";
+        for ( String k : altLocations.keySet() ) {
+            String v = altLocations.get(k);
             s = s + "(Loc:" + k + "=>" + v + ") ";
         }
 
-        for ( String k : altPrefixes.keySet() )
-        {
-            String v = altPrefixes.get( k );
+        for ( String k : altPrefixes.keySet() ) {
+            String v = altPrefixes.get(k);
             s = s + "(Prefix:" + k + "=>" + v + ") ";
         }
-        return s ;
+        return s;
     }
-    
-    public Model toModel()
-    {
-        Model m = ModelFactory.createDefaultModel() ;
-        m.setNsPrefix("lmap", 
"http://jena.hpl.hp.com/2004/08/location-mapping#";) ;
-        toModel(m) ;
-        return m ;
+
+    public Model toModel() {
+        Model m = ModelFactory.createDefaultModel();
+        m.setNsPrefix("lmap", 
"http://jena.hpl.hp.com/2004/08/location-mapping#";);
+        toModel(m);
+        return m;
     }
-    
-    public void toModel(Model model)
-    {
 
-        for ( String s1 : altLocations.keySet() )
-        {
+    public void toModel(Model model) {
+
+        for ( String s1 : altLocations.keySet() ) {
             Resource r = model.createResource();
             Resource e = model.createResource();
-            model.add( r, LocationMappingVocab.mapping, e );
+            model.add(r, LocationMappingVocab.mapping, e);
 
             String k = s1;
-            String v = altLocations.get( k );
-            model.add( e, LocationMappingVocab.name, k );
-            model.add( e, LocationMappingVocab.altName, v );
+            String v = altLocations.get(k);
+            model.add(e, LocationMappingVocab.name, k);
+            model.add(e, LocationMappingVocab.altName, v);
         }
 
-        for ( String s : altPrefixes.keySet() )
-        {
+        for ( String s : altPrefixes.keySet() ) {
             Resource r = model.createResource();
             Resource e = model.createResource();
-            model.add( r, LocationMappingVocab.mapping, e );
+            model.add(r, LocationMappingVocab.mapping, e);
             String k = s;
-            String v = altPrefixes.get( k );
-            model.add( e, LocationMappingVocab.prefix, k );
-            model.add( e, LocationMappingVocab.altPrefix, v );
+            String v = altPrefixes.get(k);
+            model.add(e, LocationMappingVocab.prefix, k);
+            model.add(e, LocationMappingVocab.altPrefix, v);
         }
     }
-    
-    public void processConfig(Model m)
-    {
-        StmtIterator mappings =
-            m.listStatements(null, LocationMappingVocab.mapping, 
(RDFNode)null) ;
-
-        for (; mappings.hasNext();)
-        {
-            Statement s = mappings.nextStatement() ;
-            Resource mapping =  s.getResource() ;
-            
-            if ( mapping.hasProperty(LocationMappingVocab.name) )
-            {
-                try 
-                {
-                    String name = 
mapping.getRequiredProperty(LocationMappingVocab.name)
-                                        .getString() ;
-                    String altName = 
mapping.getRequiredProperty(LocationMappingVocab.altName)
-                                        .getString() ;
-                    addAltEntry(name, altName) ;
-                    log.debug("Mapping: "+name+" => "+altName) ;
-                } catch (JenaException ex)
-                {
-                    log.warn("Error processing name mapping: 
"+ex.getMessage()) ;
-                    return ;
+
+    public void processConfig(Model m) {
+        StmtIterator mappings = m.listStatements(null, 
LocationMappingVocab.mapping, (RDFNode)null);
+
+        for ( ; mappings.hasNext() ; ) {
+            Statement s = mappings.nextStatement();
+            Resource mapping = s.getResource();
+
+            if ( mapping.hasProperty(LocationMappingVocab.name) ) {
+                try {
+                    String name = 
mapping.getRequiredProperty(LocationMappingVocab.name).getString();
+                    String altName = 
mapping.getRequiredProperty(LocationMappingVocab.altName).getString();
+                    addAltEntry(name, altName);
+                    log.debug("Mapping: " + name + " => " + altName);
+                } catch (JenaException ex) {
+                    log.warn("Error processing name mapping: " + 
ex.getMessage());
+                    return;
                 }
-                
+
             }
-            
-            if ( mapping.hasProperty(LocationMappingVocab.prefix) )
-            {
-                try 
-                {
-                    String prefix = 
mapping.getRequiredProperty(LocationMappingVocab.prefix)
-                                        .getString() ;
-                    String altPrefix = 
mapping.getRequiredProperty(LocationMappingVocab.altPrefix)
-                                        .getString() ;
-                    addAltPrefix(prefix, altPrefix) ;
-                    log.debug("Prefix mapping: "+prefix+" => "+altPrefix) ;
-                } catch (JenaException ex)
-                {
-                    log.warn("Error processing prefix mapping: 
"+ex.getMessage()) ;
-                    return ;
+
+            if ( mapping.hasProperty(LocationMappingVocab.prefix) ) {
+                try {
+                    String prefix = 
mapping.getRequiredProperty(LocationMappingVocab.prefix).getString();
+                    String altPrefix = 
mapping.getRequiredProperty(LocationMappingVocab.altPrefix).getString();
+                    addAltPrefix(prefix, altPrefix);
+                    log.debug("Prefix mapping: " + prefix + " => " + 
altPrefix);
+                } catch (JenaException ex) {
+                    log.warn("Error processing prefix mapping: " + 
ex.getMessage());
+                    return;
                 }
             }
         }
diff --git 
a/jena-core/src/main/java/org/apache/jena/vocabulary/TestManifest.java 
b/jena-core/src/main/java/org/apache/jena/vocabulary/TestManifest.java
index 9e11992527..51a8406359 100644
--- a/jena-core/src/main/java/org/apache/jena/vocabulary/TestManifest.java
+++ b/jena-core/src/main/java/org/apache/jena/vocabulary/TestManifest.java
@@ -19,78 +19,102 @@
  *   SPDX-License-Identifier: Apache-2.0
  */
 
-package org.apache.jena.vocabulary ;
+package org.apache.jena.vocabulary;
 
-import org.apache.jena.rdf.model.* ;
+import org.apache.jena.rdf.model.Property;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.rdf.model.ResourceFactory;
 
 public class TestManifest {
-    /** <p>The RDF model that holds the vocabulary terms</p> */
-    private static final Model m_model = ModelFactory.createDefaultModel();
 
-    /** <p>The namespace of the vocabulary as a string</p> */
+    /** The namespace of the vocabulary as a string */
     public static final String NS = 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#";;
 
-    /** <p>The namespace of the vocabulary as a string</p>
-     *  @see #NS */
-    public static String getURI() {return NS;}
+    /**
+     * The namespace of the vocabulary as a string
+     */
+    public static String getURI() { return NS; }
+
+    /** The namespace of the vocabulary as a resource */
+    public static final Resource NAMESPACE = 
ResourceFactory.createResource(NS);
 
-    /** <p>The namespace of the vocabulary as a resource</p> */
-    public static final Resource NAMESPACE = m_model.createResource( NS );
+    /** Spec Version label */
+    public static final Property specVersion = 
ResourceFactory.createProperty(NS+"specVersion");
 
-    /** <p>The expected outcome</p> */
-    public static final Property result = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#result"; );
+    /** The expected outcome */
+    public static final Property result = 
ResourceFactory.createProperty(NS+"result");
 
-    /** <p>Action to perform</p> */
-    public static final Property action = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#action"; );
+    /** Action to perform */
+    public static final Property action = 
ResourceFactory.createProperty(NS+"action");
 
-    /** <p>Optional name of this entry</p> */
-    public static final Property name = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#name"; );
+    /** Optional name of this entry */
+    public static final Property name = 
ResourceFactory.createProperty(NS+"name");
 
-    /** <p>Connects the manifest resource to rdf:type list of entries</p> */
-    public static final Property entries = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#entries"; );
+    /** Connects the manifest resource to rdf:type list of entries */
+    public static final Property entries = 
ResourceFactory.createProperty(NS+"entries");
 
-    /** <p>Connects the manifest resource to rdf:type list of manifests</p> */
-    public static final Property include = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#include"; );
+    /** Connects the manifest resource to rdf:type list of manifests */
+    public static final Property include = 
ResourceFactory.createProperty(NS+"include");
 
     /** Assumed base for the tests in the manifest */
-    public static final Property assumedTestBase = m_model.createProperty( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#assumedTestBase"; );
-
-    /** <p>The given mf:result for a mf:ReducedCardinalityTest is the results 
as if the
-     *  REDUCED keyword were omitted. To pass a mf:ReducedCardinalityTest, an 
implementation
-     *  must produce a result set with each solution in the expected results 
appearing
-     *  at least once and no more than the number of times it appears in the 
expected
-     *  results. Of course, there must also be no results produced that are 
not in
-     *  the expected results.</p>
+    public static final Property assumedTestBase = 
ResourceFactory.createProperty(NS+"assumedTestBase");
+
+    /**
+     * The given mf:result for a mf:ReducedCardinalityTest is the results as 
if the
+     * REDUCED keyword were omitted. To pass a mf:ReducedCardinalityTest, an
+     * implementation must produce a result set with each solution in the 
expected
+     * results appearing at least once and no more than the number of times it
+     * appears in the expected results. Of course, there must also be no 
results
+     * produced that are not in the expected results.
+     */
+    public static final Resource ReducedCardinalityTest = 
ResourceFactory.createResource(NS+"ReducedCardinalityTest");
+
+    /**
+     * A type of test specifically for query evaluation testing. Query 
evaluation
+     * tests are required to have an associated input dataset, a query, and an
+     * expected output dataset.
      */
-    public static final Resource ReducedCardinalityTest = 
m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#ReducedCardinalityTest";
 );
+    public static final Resource QueryEvaluationTest = 
ResourceFactory.createResource(NS+"QueryEvaluationTest");
 
-    /** <p>A type of test specifically for query evaluation testing. Query 
evaluation
-     *  tests are required to have an associated input dataset, a query, and 
an expected
-     *  output dataset.</p>
+    /**
+     * A type of test specifically for syntax testing. Syntax tests are not 
required
+     * to have an associated result, only an action. Negative syntax tests are 
tests
+     * of which the result should be a parser error.
      */
-    public static final Resource QueryEvaluationTest = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#QueryEvaluationTest"; 
);
+    public static final Resource NegativeSyntaxTest = 
ResourceFactory.createResource(NS+"NegativeSyntaxTest");
 
-    /** <p>A type of test specifically for syntax testing. Syntax tests are 
not required
-     *  to have an associated result, only an action. Negative syntax tests 
are tests
-     *  of which the result should be a parser error.</p>
+    /**
+     * A type of test specifically for syntax testing. Syntax tests are not 
required
+     * to have an associated result, only an action.
      */
-    public static final Resource NegativeSyntaxTest = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#NegativeSyntaxTest"; );
+    public static final Resource PositiveSyntaxTest = 
ResourceFactory.createResource(NS+"PositiveSyntaxTest");
 
-    /** <p>A type of test specifically for syntax testing. Syntax tests are 
not required
-     *  to have an associated result, only an action.</p>
+    /**
+     * A type of test specifically for update syntax testing.
      */
-    public static final Resource PositiveSyntaxTest = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#PositiveSyntaxTest"; );
+    public static final Resource PositiveUpdateSyntaxTest = 
ResourceFactory.createResource(NS+"PositiveUpdateSyntaxTest");
+    public static final Resource PositiveUpdateSyntaxTest11 = 
ResourceFactory.createResource(NS+"PositiveUpdateSyntaxTest11");
+
+    /**
+     * A type of test specifically for update syntax testing.
+     *  Negative syntax tests are tests of which the result should be a parser 
error.
+     */
+    public static final Resource NegativeUpdateSyntaxTest = 
ResourceFactory.createResource(NS+"NegativeUpdateSyntaxTest");
+    public static final Resource NegativeUpdateSyntaxTest11 = 
ResourceFactory.createResource(NS+"NegativeUpdateSyntaxTest11");
+
+    /** The class of all SPARQL Update evaluation tests */
+    public static final Resource UpdateEvaluationTest = 
ResourceFactory.createResource( NS+"UpdateEvaluationTest" );
 
-    /** <p>One entry in rdf:type list of entries</p> */
-    public static final Resource ManifestEntry = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#ManifestEntry"; );
+    /** One entry in rdf:type list of entries */
+    public static final Resource ManifestEntry = 
ResourceFactory.createResource(NS+"ManifestEntry");
 
-    /** <p>The class of manifests</p> */
-    public static final Resource Manifest = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#Manifest"; );
+    /** The class of manifests */
+    public static final Resource Manifest = 
ResourceFactory.createResource(NS+"Manifest");
 
-    public static final Resource accepted = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#accepted"; );
+    public static final Resource accepted = 
ResourceFactory.createResource(NS+"accepted");
 
-    public static final Resource proposed = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#proposed"; );
+    public static final Resource proposed = 
ResourceFactory.createResource(NS+"proposed");
 
-    public static final Resource rejected = m_model.createResource( 
"http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#rejected"; );
+    public static final Resource rejected = 
ResourceFactory.createResource(NS+"rejected");
 
 }

Reply via email to