You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2018/04/25 09:57:11 UTC

[2/6] jena git commit: [JENA-1524] org.apache.jena.system is split by org.apache.jena.arq and org.apache.jena.core

 [JENA-1524] org.apache.jena.system is split by org.apache.jena.arq and org.apache.jena.core


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

Branch: refs/heads/master
Commit: d82328d905b0f8ae40f699990ffe800728824975
Parents: bea3495
Author: Christopher Hanna Johnson <ch...@gmail.com>
Authored: Sun Apr 15 23:24:12 2018 +0200
Committer: Christopher Hanna Johnson <ch...@gmail.com>
Committed: Mon Apr 16 00:23:49 2018 +0200

----------------------------------------------------------------------
 apache-jena-osgi/jena-osgi/pom.xml              |   2 +-
 .../java/org/apache/jena/osgi/Activator.java    |   2 +-
 ...rg.apache.jena.system.JenaSubsystemLifecycle |   2 +-
 .../main/java/org/apache/jena/query/ARQ.java    |   2 +-
 .../main/java/org/apache/jena/query/Query.java  |   2 +-
 .../apache/jena/query/ResultSetFormatter.java   |   2 +-
 .../main/java/org/apache/jena/riot/IO_Jena.java |   2 +-
 .../java/org/apache/jena/riot/RDFDataMgr.java   |   2 +-
 .../org/apache/jena/riot/RDFWriterRegistry.java |   2 +-
 .../main/java/org/apache/jena/riot/RIOT.java    |   2 +-
 .../java/org/apache/jena/riot/ResultSetMgr.java |   2 +-
 .../jena/riot/resultset/rw/ResultsWriter.java   |   2 +-
 .../org/apache/jena/riot/system/InitRIOT.java   |   2 +-
 .../apache/jena/riot/system/SerializerRDF.java  |   4 +-
 .../java/org/apache/jena/sparql/core/Var.java   |   2 +-
 .../sparql/core/assembler/AssemblerUtils.java   |   2 +-
 .../org/apache/jena/sparql/expr/NodeValue.java  |   2 +-
 .../apache/jena/sparql/graph/GraphFactory.java  |   2 +-
 .../java/org/apache/jena/sparql/sse/SSE.java    |   2 +-
 .../org/apache/jena/sparql/system/InitARQ.java  |   2 +-
 .../org/apache/jena/sparql/util/ExprUtils.java  |   2 +-
 .../java/org/apache/jena/system/JenaInit.java   |  40 ++++
 .../java/org/apache/jena/riot/TS_LangSuite.java |   2 +-
 .../jena/riot/system/TestSerializable.java      |   2 +-
 .../org/apache/jena/sparql/ARQTestSuite.java    |   2 +-
 .../sparql/algebra/optimize/TestOptimizer.java  |   2 +-
 .../jena/sparql/function/js/TestSPARQL_JS.java  |   2 +-
 .../function/library/TestFnFunctions.java       |   2 +-
 .../jena/sparql/resultset/TestResultSet.java    |   2 +-
 jena-base/pom.xml                               |   4 +-
 jena-cmds/src/main/java/arq/cmdline/CmdARQ.java |   2 +-
 .../src/main/java/arq/cmdline/ModContext.java   |   2 +-
 jena-cmds/src/main/java/arq/qexpr.java          |   2 +-
 jena-cmds/src/main/java/jena/rdfcat.java        |   2 +-
 jena-cmds/src/main/java/jena/rdfcompare.java    |   2 +-
 .../src/main/java/riotcmd/CmdLangParse.java     |   2 +-
 jena-cmds/src/main/java/riotcmd/dumpthrift.java |   2 +-
 .../java/tdb/bulkloader2/CmdIndexBuild.java     |   2 +-
 .../main/java/tdb/bulkloader2/CmdIndexCopy.java |   2 +-
 .../tdb/bulkloader2/CmdNodeTableBuilder.java    |   2 +-
 .../java/tdb/bulkloader2/CmdRewriteIndex.java   |   2 +-
 jena-cmds/src/main/java/tdb/cmdline/CmdTDB.java |   2 +-
 .../src/main/java/tdb2/cmdline/CmdTDB.java      |   2 +-
 .../src/test/java/riotcmd/rdflangtest.java      |   2 +-
 .../assembler/assemblers/AssemblerBase.java     |   2 +-
 .../main/java/org/apache/jena/graph/Node.java   |   2 +-
 .../java/org/apache/jena/graph/NodeFactory.java |   2 +-
 .../main/java/org/apache/jena/graph/Triple.java |   2 +-
 .../org/apache/jena/rdf/model/ModelFactory.java |   2 +-
 .../apache/jena/rdf/model/impl/ModelCom.java    |   2 +-
 .../java/org/apache/jena/sys/InitJenaCore.java  |  63 ++++++
 .../apache/jena/sys/JenaSubsystemLifecycle.java |  35 +++
 .../apache/jena/sys/JenaSubsystemRegistry.java  |  53 +++++
 .../jena/sys/JenaSubsystemRegistryBasic.java    |  92 ++++++++
 .../java/org/apache/jena/sys/JenaSystem.java    | 225 +++++++++++++++++++
 .../java/org/apache/jena/sys/Serializer.java    |  84 +++++++
 .../org/apache/jena/system/InitJenaCore.java    |  63 ------
 .../jena/system/JenaSubsystemLifecycle.java     |  35 ---
 .../jena/system/JenaSubsystemRegistry.java      |  53 -----
 .../jena/system/JenaSubsystemRegistryBasic.java |  92 --------
 .../java/org/apache/jena/system/JenaSystem.java | 225 -------------------
 .../java/org/apache/jena/system/Serializer.java |  84 -------
 .../java/org/apache/jena/util/FileManager.java  |   2 +-
 ...rg.apache.jena.system.JenaSubsystemLifecycle |   2 +-
 .../java/org/apache/jena/test/JenaTestBase.java |   2 +-
 .../java/org/apache/jena/lang/csv/InitCSV.java  |   2 +-
 .../main/java/org/apache/jena/tdb2/TDB2.java    |   2 +-
 .../java/org/apache/jena/tdb2/TDB2Factory.java  |   2 +-
 .../tdb2/assembler/DatasetAssemblerTDB.java     |   2 +-
 .../jena/tdb2/sys/DatabaseConnection.java       |   2 +-
 .../java/org/apache/jena/tdb2/sys/InitTDB2.java |   2 +-
 .../org/apache/jena/tdb2/sys/SystemTDB.java     |   2 +-
 .../apache/jena/tdb2/store/TestDatasetTDB.java  |   2 +-
 .../java/org/apache/jena/fuseki/Fuseki.java     |   2 +-
 .../apache/jena/fuseki/cmds/FusekiBasicCmd.java |   2 +-
 .../java/org/apache/jena/fuseki/Fuseki.java     |   2 +-
 .../org/apache/jena/fuseki/cmd/FusekiCmd.java   |   2 +-
 .../server/FusekiServerEnvironmentInit.java     |   2 +-
 .../test/assembler/TestDatasetAssembler.java    |   2 +-
 .../jena/jdbc/AbstractJenaDriverTests.java      |   2 +-
 .../AbstractJenaConnectionTests.java            |   2 +-
 .../results/AbstractDatabaseMetadataTests.java  |   2 +-
 .../jdbc/results/AbstractResultSetTests.java    |   2 +-
 .../org/apache/jena/jdbc/mem/MemDriver.java     |   2 +-
 .../jena/jdbc/remote/RemoteEndpointDriver.java  |   2 +-
 .../AbstractRemoteEndpointResultSetTests.java   |   2 +-
 .../org/apache/jena/jdbc/tdb/TDBDriver.java     |   2 +-
 .../org/apache/jena/permissions/Factory.java    |   2 +-
 .../rdfconnection/RDFConnectionFactory.java     |   2 +-
 .../src/main/java/org/apache/jena/sdb/SDB.java  |   2 +-
 .../java/org/apache/jena/sdb/SDBFactory.java    |   2 +-
 .../java/org/apache/jena/sdb/core/InitSDB.java  |   2 +-
 .../jena/query/spatial/InitJenaSpatial.java     |   2 +-
 .../query/spatial/SpatialDatasetFactory.java    |   2 +-
 .../apache/jena/query/spatial/SpatialQuery.java |   2 +-
 .../src/main/java/org/apache/jena/tdb/TDB.java  |   2 +-
 .../java/org/apache/jena/tdb/TDBFactory.java    |   2 +-
 .../jena/tdb/assembler/DatasetAssemblerTDB.java |   2 +-
 .../java/org/apache/jena/tdb/sys/InitTDB.java   |   2 +-
 .../java/org/apache/jena/tdb/sys/SystemTDB.java |   2 +-
 .../jena/query/text/es/InitJenaTextES.java      |   2 +-
 .../org/apache/jena/query/text/es/TextES.java   |   2 +-
 .../query/text/es/TextESDatasetFactory.java     |   2 +-
 .../apache/jena/query/text/InitJenaText.java    |   2 +-
 .../jena/query/text/TextDatasetFactory.java     |   2 +-
 .../org/apache/jena/query/text/TextQuery.java   |   2 +-
 .../text/assembler/TestEntityMapAssembler.java  |   2 +-
 .../assembler/TestGenericAnalyzerAssembler.java |   2 +-
 .../assembler/TestTextDatasetAssembler.java     |   2 +-
 .../assembler/TestTextIndexLuceneAssembler.java |   2 +-
 110 files changed, 691 insertions(+), 651 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/apache-jena-osgi/jena-osgi/pom.xml
----------------------------------------------------------------------
diff --git a/apache-jena-osgi/jena-osgi/pom.xml b/apache-jena-osgi/jena-osgi/pom.xml
index 03b3032..aa434ae 100644
--- a/apache-jena-osgi/jena-osgi/pom.xml
+++ b/apache-jena-osgi/jena-osgi/pom.xml
@@ -145,7 +145,7 @@
     </dependency>
     <!--
     NOTE: Also update 
-    src/main/resources/META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle
+    src/main/resources/META-INF/services/org.apache.jena.sys.JenaSubsystemLifecycle
     to the concatenation of the different Jena modules' JenaSubsystemLifecycle
     (order does not matter). See JENA-1139 for details.
     -->

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/apache-jena-osgi/jena-osgi/src/main/java/org/apache/jena/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/apache-jena-osgi/jena-osgi/src/main/java/org/apache/jena/osgi/Activator.java b/apache-jena-osgi/jena-osgi/src/main/java/org/apache/jena/osgi/Activator.java
index 0d9055d..310ba57 100644
--- a/apache-jena-osgi/jena-osgi/src/main/java/org/apache/jena/osgi/Activator.java
+++ b/apache-jena-osgi/jena-osgi/src/main/java/org/apache/jena/osgi/Activator.java
@@ -18,7 +18,7 @@
 
 package org.apache.jena.osgi;
 
-import org.apache.jena.system.JenaSystem;
+import org.apache.jena.sys.JenaSystem;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/apache-jena-osgi/jena-osgi/src/main/resources/META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle
----------------------------------------------------------------------
diff --git a/apache-jena-osgi/jena-osgi/src/main/resources/META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle b/apache-jena-osgi/jena-osgi/src/main/resources/META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle
index 28c4284..52ac905 100644
--- a/apache-jena-osgi/jena-osgi/src/main/resources/META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle
+++ b/apache-jena-osgi/jena-osgi/src/main/resources/META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle
@@ -1,4 +1,4 @@
-org.apache.jena.system.InitJenaCore
+org.apache.jena.sys.InitJenaCore
 org.apache.jena.riot.system.InitRIOT
 org.apache.jena.sparql.system.InitARQ
 org.apache.jena.tdb.sys.InitTDB

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/query/ARQ.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/query/ARQ.java b/jena-arq/src/main/java/org/apache/jena/query/ARQ.java
index e319bc8..fa99256 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/ARQ.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/ARQ.java
@@ -37,7 +37,7 @@ import org.apache.jena.sparql.pfunction.PropertyFunctionRegistry ;
 import org.apache.jena.sparql.util.Context ;
 import org.apache.jena.sparql.util.MappingRegistry ;
 import org.apache.jena.sparql.util.Symbol ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/query/Query.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/query/Query.java b/jena-arq/src/main/java/org/apache/jena/query/Query.java
index d29c6ac..3eea849 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/Query.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/Query.java
@@ -40,7 +40,7 @@ import org.apache.jena.sparql.syntax.Element ;
 import org.apache.jena.sparql.syntax.PatternVars ;
 import org.apache.jena.sparql.syntax.Template ;
 import org.apache.jena.sparql.util.FmtUtils ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 
 /** The data structure for a query as presented externally.
  *  There are two ways of creating a query - use the parser to turn

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java b/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java
index 1b372fc..3d2aa83 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java
@@ -45,7 +45,7 @@ import org.apache.jena.sparql.resultset.ResultsFormat;
 import org.apache.jena.sparql.resultset.TextOutput;
 import org.apache.jena.sparql.resultset.XMLOutput;
 import org.apache.jena.sparql.serializer.SerializationContext ;
-import org.apache.jena.system.JenaSystem;
+import org.apache.jena.sys.JenaSystem;
 
 /** ResultSetFormatter - Convenience ways to call the various output formatters.
  *  in various formats.

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java b/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java
index e04e7e8..12a054f 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java
@@ -20,7 +20,7 @@ package org.apache.jena.riot ;
 
 import org.apache.jena.riot.system.IO_JenaReaders ;
 import org.apache.jena.riot.system.IO_JenaWriters ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 
 public class IO_Jena
 {

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
index 3430056..df40a2b 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java
@@ -45,7 +45,7 @@ import org.apache.jena.sparql.core.Quad ;
 import org.apache.jena.sparql.graph.GraphFactory ;
 import org.apache.jena.sparql.util.Context ;
 import org.apache.jena.sparql.util.Symbol ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java
index fa367ce..ce371d2 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java
@@ -25,7 +25,7 @@ import org.apache.jena.riot.system.RiotLib ;
 import org.apache.jena.riot.thrift.WriterDatasetThrift ;
 import org.apache.jena.riot.thrift.WriterGraphThrift ;
 import org.apache.jena.riot.writer.* ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 
 public class RDFWriterRegistry
 {

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java b/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java
index 2bd31c3..ccc06c2 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RIOT.java
@@ -24,7 +24,7 @@ import org.apache.jena.sparql.SystemARQ ;
 import org.apache.jena.sparql.mgt.SystemInfo ;
 import org.apache.jena.sparql.util.Context ;
 import org.apache.jena.sparql.util.Symbol ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 
 public class RIOT {
     // Initialization statics must be first in the class to avoid

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java b/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java
index 965d4c8..fa693a1 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/ResultSetMgr.java
@@ -33,7 +33,7 @@ import org.apache.jena.riot.resultset.rw.ResultsWriter;
 import org.apache.jena.sparql.resultset.ResultSetException;
 import org.apache.jena.sparql.resultset.SPARQLResult;
 import org.apache.jena.sparql.util.Context ;
-import org.apache.jena.system.JenaSystem;
+import org.apache.jena.sys.JenaSystem;
 
 /** 
  * Reading and writing of Result Sets.

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/riot/resultset/rw/ResultsWriter.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/resultset/rw/ResultsWriter.java b/jena-arq/src/main/java/org/apache/jena/riot/resultset/rw/ResultsWriter.java
index 28c3953..3cf6b09 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/resultset/rw/ResultsWriter.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/resultset/rw/ResultsWriter.java
@@ -30,7 +30,7 @@ import org.apache.jena.riot.resultset.ResultSetWriter;
 import org.apache.jena.riot.resultset.ResultSetWriterFactory;
 import org.apache.jena.riot.resultset.ResultSetWriterRegistry;
 import org.apache.jena.sparql.util.Context;
-import org.apache.jena.system.JenaSystem;
+import org.apache.jena.sys.JenaSystem;
 
 public class ResultsWriter {
     static { JenaSystem.init(); }

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/riot/system/InitRIOT.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/InitRIOT.java b/jena-arq/src/main/java/org/apache/jena/riot/system/InitRIOT.java
index 1f03826..9f5cec4 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/InitRIOT.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/InitRIOT.java
@@ -19,7 +19,7 @@
 package org.apache.jena.riot.system;
 
 import org.apache.jena.riot.RIOT ;
-import org.apache.jena.system.JenaSubsystemLifecycle ;
+import org.apache.jena.sys.JenaSubsystemLifecycle ;
 
 /** RIOT initialization. Used by {@code JenaSystem} */
 public class InitRIOT implements JenaSubsystemLifecycle {

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/riot/system/SerializerRDF.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/SerializerRDF.java b/jena-arq/src/main/java/org/apache/jena/riot/system/SerializerRDF.java
index f5d7a73..dfb054b 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/SerializerRDF.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/SerializerRDF.java
@@ -28,8 +28,8 @@ import org.apache.thrift.protocol.TProtocol;
 public class SerializerRDF {
     
     public static void init() {
-        org.apache.jena.system.Serializer.setNodeSerializer(SNode::new);
-        org.apache.jena.system.Serializer.setTripleSerializer(STriple::new);
+        org.apache.jena.sys.Serializer.setNodeSerializer(SNode::new);
+        org.apache.jena.sys.Serializer.setTripleSerializer(STriple::new);
         org.apache.jena.riot.system.Serializer.setQuadSerializer(SQuad::new);
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/sparql/core/Var.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/Var.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/Var.java
index a5c7d8b..cd3faab 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/Var.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/Var.java
@@ -28,7 +28,7 @@ import org.apache.jena.sparql.ARQConstants ;
 import org.apache.jena.sparql.ARQInternalErrorException ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.expr.ExprVar ;
-import org.apache.jena.system.JenaSystem;
+import org.apache.jena.sys.JenaSystem;
 
 /** A SPARQL variable */
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
index a9aa7bb..d358841 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
@@ -35,7 +35,7 @@ import org.apache.jena.sparql.util.MappingRegistry ;
 import org.apache.jena.sparql.util.Symbol ;
 import org.apache.jena.sparql.util.TypeNotUniqueException ;
 import org.apache.jena.sparql.util.graph.GraphUtils ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.apache.jena.vocabulary.RDFS ;
 import static org.apache.jena.sparql.core.assembler.DatasetAssemblerVocab.*;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
index ece4fe7..1a1b675 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
@@ -58,7 +58,7 @@ import org.apache.jena.sparql.graph.NodeConst ;
 import org.apache.jena.sparql.graph.NodeTransform ;
 import org.apache.jena.sparql.serializer.SerializationContext ;
 import org.apache.jena.sparql.util.* ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.apache.jena.vocabulary.RDF ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphFactory.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphFactory.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphFactory.java
index fe0c12c..e8362fa 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphFactory.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphFactory.java
@@ -26,7 +26,7 @@ import org.apache.jena.graph.impl.GraphPlain ;
 import org.apache.jena.rdf.model.Model ;
 import org.apache.jena.rdf.model.ModelFactory ;
 import org.apache.jena.sparql.SystemARQ ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 
 /** Ways to make graphs and models */
 public class GraphFactory

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java b/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java
index 6de6137..05b83ff 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/sse/SSE.java
@@ -58,7 +58,7 @@ import org.apache.jena.sparql.sse.writers.WriterOp ;
 import org.apache.jena.sparql.util.FmtUtils ;
 import org.apache.jena.sparql.vocabulary.FOAF ;
 import org.apache.jena.sparql.vocabulary.ListPFunction ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.apache.jena.util.FileUtils ;
 import org.apache.jena.vocabulary.* ;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/sparql/system/InitARQ.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/system/InitARQ.java b/jena-arq/src/main/java/org/apache/jena/sparql/system/InitARQ.java
index d88d989..48a605a 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/system/InitARQ.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/system/InitARQ.java
@@ -19,7 +19,7 @@
 package org.apache.jena.sparql.system;
 
 import org.apache.jena.query.ARQ ;
-import org.apache.jena.system.JenaSubsystemLifecycle ;
+import org.apache.jena.sys.JenaSubsystemLifecycle ;
 
 /** ARQ initialization. Used by {@code JenaSystem} */
 public class InitARQ implements JenaSubsystemLifecycle {

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/sparql/util/ExprUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/ExprUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/ExprUtils.java
index c341e9f..86dc006 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/ExprUtils.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/ExprUtils.java
@@ -42,7 +42,7 @@ import org.apache.jena.sparql.serializer.SerializationContext ;
 import org.apache.jena.sparql.sse.SSE ;
 import org.apache.jena.sparql.sse.SSEParseException ;
 import org.apache.jena.sparql.sse.builders.ExprBuildException ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 
 
 /** Misc support for Expr */

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/main/java/org/apache/jena/system/JenaInit.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/system/JenaInit.java b/jena-arq/src/main/java/org/apache/jena/system/JenaInit.java
new file mode 100644
index 0000000..b159be1
--- /dev/null
+++ b/jena-arq/src/main/java/org/apache/jena/system/JenaInit.java
@@ -0,0 +1,40 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.system;
+
+import org.apache.jena.sys.JenaSystem;
+
+/**
+ * This is a temporary adapter for implementations to transition to [JENA-1524]
+ */
+public class JenaInit {
+
+    /**
+     * Initialize Jena.
+     */
+    public static void init() {
+        JenaSystem.init();
+    }
+
+    /** Shutdown subsystems */
+    public static void shutdown() {
+        JenaSystem.shutdown();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/test/java/org/apache/jena/riot/TS_LangSuite.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/TS_LangSuite.java b/jena-arq/src/test/java/org/apache/jena/riot/TS_LangSuite.java
index cd29ef4..fdb8f5b 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/TS_LangSuite.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/TS_LangSuite.java
@@ -20,7 +20,7 @@ package org.apache.jena.riot;
 
 import junit.framework.TestSuite ;
 import org.apache.jena.riot.langsuite.FactoryTestRiot ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.junit.runner.RunWith ;
 import org.junit.runners.AllTests ;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/test/java/org/apache/jena/riot/system/TestSerializable.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/system/TestSerializable.java b/jena-arq/src/test/java/org/apache/jena/riot/system/TestSerializable.java
index 8f4c99b..9de3e05 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/system/TestSerializable.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/system/TestSerializable.java
@@ -31,7 +31,7 @@ import org.apache.jena.graph.Triple;
 import org.apache.jena.sparql.core.Quad;
 import org.apache.jena.sparql.core.Var;
 import org.apache.jena.sparql.sse.SSE;
-import org.apache.jena.system.JenaSystem;
+import org.apache.jena.sys.JenaSystem;
 import org.junit.BeforeClass;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/test/java/org/apache/jena/sparql/ARQTestSuite.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/ARQTestSuite.java b/jena-arq/src/test/java/org/apache/jena/sparql/ARQTestSuite.java
index 29d243c..d10571e 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/ARQTestSuite.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/ARQTestSuite.java
@@ -28,7 +28,7 @@ import org.apache.jena.sparql.engine.main.QueryEngineMain ;
 import org.apache.jena.sparql.engine.ref.QueryEngineRef ;
 import org.apache.jena.sparql.expr.E_Function ;
 import org.apache.jena.sparql.expr.NodeValue ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.apache.jena.system.TS_System ;
 import org.apache.jena.web.TS_Web ;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java
index 2fc0f76..0f6d04f 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestOptimizer.java
@@ -29,7 +29,7 @@ import org.apache.jena.sparql.core.VarExprList ;
 import org.apache.jena.sparql.expr.ExprVar ;
 import org.apache.jena.sparql.expr.nodevalue.NodeValueInteger ;
 import org.apache.jena.sparql.sse.SSE ;
-import org.apache.jena.system.JenaSystem;
+import org.apache.jena.sys.JenaSystem;
 import org.junit.Test ;
 
 public class TestOptimizer extends AbstractTestTransform

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/test/java/org/apache/jena/sparql/function/js/TestSPARQL_JS.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/function/js/TestSPARQL_JS.java b/jena-arq/src/test/java/org/apache/jena/sparql/function/js/TestSPARQL_JS.java
index 0e9e85b..dd2ed64 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/function/js/TestSPARQL_JS.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/function/js/TestSPARQL_JS.java
@@ -22,7 +22,7 @@ import junit.framework.TestSuite;
 import org.apache.jena.query.ARQ;
 import org.apache.jena.sparql.junit.ScriptTestSuiteFactory;
 import org.apache.jena.sparql.util.Context;
-import org.apache.jena.system.JenaSystem;
+import org.apache.jena.sys.JenaSystem;
 import org.junit.runner.RunWith;
 import org.junit.runners.AllTests;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/test/java/org/apache/jena/sparql/function/library/TestFnFunctions.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/function/library/TestFnFunctions.java b/jena-arq/src/test/java/org/apache/jena/sparql/function/library/TestFnFunctions.java
index bb24388..8f2436a 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/function/library/TestFnFunctions.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/function/library/TestFnFunctions.java
@@ -23,7 +23,7 @@ import static org.apache.jena.sparql.function.library.LibTest.test;
 import org.apache.jena.sparql.expr.ExprEvalException ;
 import org.apache.jena.sparql.expr.ExprException ;
 import org.apache.jena.sparql.expr.VariableNotBoundException ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.junit.Test ;
 
 public class TestFnFunctions {

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-arq/src/test/java/org/apache/jena/sparql/resultset/TestResultSet.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/resultset/TestResultSet.java b/jena-arq/src/test/java/org/apache/jena/sparql/resultset/TestResultSet.java
index 11c15c3..bff88a9 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/resultset/TestResultSet.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/resultset/TestResultSet.java
@@ -48,7 +48,7 @@ import org.apache.jena.sparql.sse.builders.BuilderResultSet ;
 import org.apache.jena.sparql.util.Context;
 import org.apache.jena.sparql.util.NodeFactoryExtra ;
 import org.apache.jena.sparql.util.ResultSetUtils ;
-import org.apache.jena.system.JenaSystem;
+import org.apache.jena.sys.JenaSystem;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test ;

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-base/pom.xml
----------------------------------------------------------------------
diff --git a/jena-base/pom.xml b/jena-base/pom.xml
index 5945802..4e2e83d 100644
--- a/jena-base/pom.xml
+++ b/jena-base/pom.xml
@@ -71,8 +71,8 @@
       <groupId>com.jayway.awaitility</groupId>
       <artifactId>awaitility</artifactId>
       <scope>test</scope>
-    </dependency>    
-    
+    </dependency>
+
   </dependencies>
 
   <build>

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-cmds/src/main/java/arq/cmdline/CmdARQ.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/arq/cmdline/CmdARQ.java b/jena-cmds/src/main/java/arq/cmdline/CmdARQ.java
index d6fb553..77baf0f 100644
--- a/jena-cmds/src/main/java/arq/cmdline/CmdARQ.java
+++ b/jena-cmds/src/main/java/arq/cmdline/CmdARQ.java
@@ -25,7 +25,7 @@ import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.query.ARQ ;
 import org.apache.jena.riot.RIOT ;
 import org.apache.jena.sparql.engine.iterator.QueryIteratorBase ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 
 public abstract class CmdARQ extends CmdGeneral
 {

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-cmds/src/main/java/arq/cmdline/ModContext.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/arq/cmdline/ModContext.java b/jena-cmds/src/main/java/arq/cmdline/ModContext.java
index 96d76bf..4c7c7f5 100644
--- a/jena-cmds/src/main/java/arq/cmdline/ModContext.java
+++ b/jena-cmds/src/main/java/arq/cmdline/ModContext.java
@@ -30,7 +30,7 @@ import org.apache.jena.query.ARQ ;
 import org.apache.jena.sparql.util.Context ;
 import org.apache.jena.sparql.util.MappingRegistry ;
 import org.apache.jena.sparql.util.Symbol ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 
 /** Set Context items */
 public class ModContext extends ModBase

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-cmds/src/main/java/arq/qexpr.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/arq/qexpr.java b/jena-cmds/src/main/java/arq/qexpr.java
index 5305517..9ef0144 100644
--- a/jena-cmds/src/main/java/arq/qexpr.java
+++ b/jena-cmds/src/main/java/arq/qexpr.java
@@ -42,7 +42,7 @@ import org.apache.jena.sparql.function.FunctionEnv ;
 import org.apache.jena.sparql.sse.WriterSSE ;
 import org.apache.jena.sparql.util.ExprUtils ;
 import org.apache.jena.sparql.util.NodeFactoryExtra ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 
 /** A program to execute expressions from the command line. */
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-cmds/src/main/java/jena/rdfcat.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/jena/rdfcat.java b/jena-cmds/src/main/java/jena/rdfcat.java
index 706767d..efe16dc 100644
--- a/jena-cmds/src/main/java/jena/rdfcat.java
+++ b/jena-cmds/src/main/java/jena/rdfcat.java
@@ -33,7 +33,7 @@ import java.util.function.BiConsumer;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.rdf.model.impl.RDFWriterFImpl ;
 import org.apache.jena.shared.NoWriterForLangException ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.apache.jena.util.FileManager ;
 import org.apache.jena.util.FileUtils ;
 import org.apache.jena.vocabulary.OWL ;

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-cmds/src/main/java/jena/rdfcompare.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/jena/rdfcompare.java b/jena-cmds/src/main/java/jena/rdfcompare.java
index a5ccc33..5f23157 100644
--- a/jena-cmds/src/main/java/jena/rdfcompare.java
+++ b/jena-cmds/src/main/java/jena/rdfcompare.java
@@ -25,7 +25,7 @@ import org.apache.jena.rdf.model.ModelFactory ;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFDataMgr ;
 import org.apache.jena.riot.RDFLanguages ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 
 /** A program which read two RDF models and determines if they are the same.
  *

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-cmds/src/main/java/riotcmd/CmdLangParse.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/riotcmd/CmdLangParse.java b/jena-cmds/src/main/java/riotcmd/CmdLangParse.java
index 8669e88..10d1d57 100644
--- a/jena-cmds/src/main/java/riotcmd/CmdLangParse.java
+++ b/jena-cmds/src/main/java/riotcmd/CmdLangParse.java
@@ -49,7 +49,7 @@ import org.apache.jena.riot.tokens.Tokenizer ;
 import org.apache.jena.riot.tokens.TokenizerFactory ;
 import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.core.DatasetGraphFactory ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 
 /** Common framework for running RIOT parsers */
 public abstract class CmdLangParse extends CmdGeneral

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-cmds/src/main/java/riotcmd/dumpthrift.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/riotcmd/dumpthrift.java b/jena-cmds/src/main/java/riotcmd/dumpthrift.java
index cfadd38..9723a19 100644
--- a/jena-cmds/src/main/java/riotcmd/dumpthrift.java
+++ b/jena-cmds/src/main/java/riotcmd/dumpthrift.java
@@ -24,7 +24,7 @@ import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.logging.LogCtl ;
 import org.apache.jena.riot.thrift.BinRDF ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 
 /** Dump an rdf-thrift file to show structure */ 
 public class dumpthrift {

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-cmds/src/main/java/tdb/bulkloader2/CmdIndexBuild.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/tdb/bulkloader2/CmdIndexBuild.java b/jena-cmds/src/main/java/tdb/bulkloader2/CmdIndexBuild.java
index 57c2de4..d3f9262 100644
--- a/jena-cmds/src/main/java/tdb/bulkloader2/CmdIndexBuild.java
+++ b/jena-cmds/src/main/java/tdb/bulkloader2/CmdIndexBuild.java
@@ -19,7 +19,7 @@
 package tdb.bulkloader2;
 
 import org.apache.jena.atlas.logging.LogCtl ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.apache.jena.tdb.store.bulkloader2.ProcIndexBuild ;
 
 public class CmdIndexBuild {

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-cmds/src/main/java/tdb/bulkloader2/CmdIndexCopy.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/tdb/bulkloader2/CmdIndexCopy.java b/jena-cmds/src/main/java/tdb/bulkloader2/CmdIndexCopy.java
index 9ea62b8d..9bbcbfa 100644
--- a/jena-cmds/src/main/java/tdb/bulkloader2/CmdIndexCopy.java
+++ b/jena-cmds/src/main/java/tdb/bulkloader2/CmdIndexCopy.java
@@ -19,7 +19,7 @@
 package tdb.bulkloader2;
 
 import org.apache.jena.atlas.logging.LogCtl ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.apache.jena.tdb.store.bulkloader2.ProcIndexCopy ;
 
 public class CmdIndexCopy 

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-cmds/src/main/java/tdb/bulkloader2/CmdNodeTableBuilder.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/tdb/bulkloader2/CmdNodeTableBuilder.java b/jena-cmds/src/main/java/tdb/bulkloader2/CmdNodeTableBuilder.java
index bb56b70..0d9d634 100644
--- a/jena-cmds/src/main/java/tdb/bulkloader2/CmdNodeTableBuilder.java
+++ b/jena-cmds/src/main/java/tdb/bulkloader2/CmdNodeTableBuilder.java
@@ -29,7 +29,7 @@ import org.apache.jena.atlas.lib.FileOps ;
 import org.apache.jena.atlas.logging.LogCtl ;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFLanguages ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.apache.jena.tdb.base.file.Location ;
 import org.apache.jena.tdb.setup.DatasetBuilderStd ;
 import org.apache.jena.tdb.store.bulkloader2.ProcNodeTableBuilder ;

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-cmds/src/main/java/tdb/bulkloader2/CmdRewriteIndex.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/tdb/bulkloader2/CmdRewriteIndex.java b/jena-cmds/src/main/java/tdb/bulkloader2/CmdRewriteIndex.java
index 43bc29c..ffbfa98 100644
--- a/jena-cmds/src/main/java/tdb/bulkloader2/CmdRewriteIndex.java
+++ b/jena-cmds/src/main/java/tdb/bulkloader2/CmdRewriteIndex.java
@@ -21,7 +21,7 @@ package tdb.bulkloader2;
 import org.apache.jena.atlas.lib.FileOps ;
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.logging.LogCtl ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.apache.jena.tdb.base.file.Location ;
 import org.apache.jena.tdb.store.bulkloader2.ProcRewriteIndex ;
 import org.apache.jena.tdb.sys.Names ;

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-cmds/src/main/java/tdb/cmdline/CmdTDB.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/tdb/cmdline/CmdTDB.java b/jena-cmds/src/main/java/tdb/cmdline/CmdTDB.java
index 8082308..5505fef 100644
--- a/jena-cmds/src/main/java/tdb/cmdline/CmdTDB.java
+++ b/jena-cmds/src/main/java/tdb/cmdline/CmdTDB.java
@@ -25,7 +25,7 @@ import org.apache.jena.atlas.logging.LogCtl ;
 import org.apache.jena.query.ARQ ;
 import org.apache.jena.query.Dataset ;
 import org.apache.jena.sparql.core.DatasetGraph ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.apache.jena.tdb.TDB ;
 import org.apache.jena.tdb.base.file.Location ;
 import org.apache.jena.tdb.setup.DatasetBuilderStd ;

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-cmds/src/main/java/tdb2/cmdline/CmdTDB.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/main/java/tdb2/cmdline/CmdTDB.java b/jena-cmds/src/main/java/tdb2/cmdline/CmdTDB.java
index ed6f0f0..523f153 100644
--- a/jena-cmds/src/main/java/tdb2/cmdline/CmdTDB.java
+++ b/jena-cmds/src/main/java/tdb2/cmdline/CmdTDB.java
@@ -26,7 +26,7 @@ import org.apache.jena.dboe.base.file.Location;
 import org.apache.jena.query.ARQ ;
 import org.apache.jena.query.Dataset ;
 import org.apache.jena.sparql.core.DatasetGraph ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.apache.jena.tdb2.TDB2;
 import org.apache.jena.tdb2.store.DatasetGraphSwitchable;
 import org.apache.jena.tdb2.sys.TDBInternal;

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-cmds/src/test/java/riotcmd/rdflangtest.java
----------------------------------------------------------------------
diff --git a/jena-cmds/src/test/java/riotcmd/rdflangtest.java b/jena-cmds/src/test/java/riotcmd/rdflangtest.java
index 1f5af3b..d2569d9 100644
--- a/jena-cmds/src/test/java/riotcmd/rdflangtest.java
+++ b/jena-cmds/src/test/java/riotcmd/rdflangtest.java
@@ -43,7 +43,7 @@ import org.apache.jena.sparql.junit.SimpleTestRunner ;
 import org.apache.jena.sparql.util.NodeFactoryExtra ;
 import org.apache.jena.sparql.vocabulary.DOAP ;
 import org.apache.jena.sparql.vocabulary.FOAF ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.apache.jena.vocabulary.DC ;
 import org.apache.jena.vocabulary.DCTerms ;
 import org.apache.jena.vocabulary.RDF ;

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java b/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
index e1f9bc7..73c9ab7 100644
--- a/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
+++ b/jena-core/src/main/java/org/apache/jena/assembler/assemblers/AssemblerBase.java
@@ -23,7 +23,7 @@ import org.apache.jena.assembler.* ;
 import org.apache.jena.assembler.exceptions.* ;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.shared.JenaException ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.apache.jena.vocabulary.RDF ;
 
 public abstract class AssemblerBase implements Assembler

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/graph/Node.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/graph/Node.java b/jena-core/src/main/java/org/apache/jena/graph/Node.java
index 2251767..d39874f 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/Node.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/Node.java
@@ -27,7 +27,7 @@ import org.apache.jena.datatypes.RDFDatatype ;
 import org.apache.jena.graph.impl.LiteralLabel ;
 import org.apache.jena.shared.JenaException ;
 import org.apache.jena.shared.PrefixMapping ;
-import org.apache.jena.system.Serializer;
+import org.apache.jena.sys.Serializer;
 
 /**
     A Node has five subtypes: Node_Blank, Node_Anon, Node_URI,  

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/graph/NodeFactory.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/graph/NodeFactory.java b/jena-core/src/main/java/org/apache/jena/graph/NodeFactory.java
index 566d3ca..920a49c 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/NodeFactory.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/NodeFactory.java
@@ -25,7 +25,7 @@ import org.apache.jena.datatypes.RDFDatatype ;
 import org.apache.jena.datatypes.TypeMapper ;
 import org.apache.jena.graph.impl.LiteralLabel ;
 import org.apache.jena.graph.impl.LiteralLabelFactory ;
-import org.apache.jena.system.JenaSystem;
+import org.apache.jena.sys.JenaSystem;
 
 public class NodeFactory {
     

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/graph/Triple.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/graph/Triple.java b/jena-core/src/main/java/org/apache/jena/graph/Triple.java
index f5eafea..07848f1 100644
--- a/jena-core/src/main/java/org/apache/jena/graph/Triple.java
+++ b/jena-core/src/main/java/org/apache/jena/graph/Triple.java
@@ -25,7 +25,7 @@ import java.util.function.Function;
 import java.util.function.Predicate;
 
 import org.apache.jena.shared.PrefixMapping ;
-import org.apache.jena.system.Serializer;
+import org.apache.jena.sys.Serializer;
 import org.apache.jena.util.iterator.ExtendedIterator ;
 import org.apache.jena.util.iterator.NullIterator ;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/rdf/model/ModelFactory.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/ModelFactory.java b/jena-core/src/main/java/org/apache/jena/rdf/model/ModelFactory.java
index 3ff131f..244983e 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/ModelFactory.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/ModelFactory.java
@@ -37,7 +37,7 @@ import org.apache.jena.reasoner.InfGraph ;
 import org.apache.jena.reasoner.Reasoner ;
 import org.apache.jena.reasoner.ReasonerRegistry ;
 import org.apache.jena.shared.PrefixMapping ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 
 /**
     ModelFactory provides methods for creating standard kinds of Model.

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
index 4b632aa..ab90d30 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
@@ -37,7 +37,7 @@ import org.apache.jena.graph.impl.LiteralLabelFactory ;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.shared.* ;
 import org.apache.jena.shared.impl.PrefixMappingImpl ;
-import org.apache.jena.system.JenaSystem ;
+import org.apache.jena.sys.JenaSystem ;
 import org.apache.jena.util.CollectionFactory ;
 import org.apache.jena.util.iterator.* ;
 import org.apache.jena.vocabulary.RDF ;

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/sys/InitJenaCore.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/sys/InitJenaCore.java b/jena-core/src/main/java/org/apache/jena/sys/InitJenaCore.java
new file mode 100644
index 0000000..369c59d
--- /dev/null
+++ b/jena-core/src/main/java/org/apache/jena/sys/InitJenaCore.java
@@ -0,0 +1,63 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.sys;
+
+import org.apache.jena.vocabulary.OWL ;
+import org.apache.jena.vocabulary.RDF ;
+import org.apache.jena.vocabulary.RDFS ;
+
+public class InitJenaCore  implements JenaSubsystemLifecycle {
+    private static volatile boolean initialized = false ;
+    private static Object           initLock    = new Object() ;
+
+    @Override
+    public void start() {
+        init() ;
+    }
+
+    @Override
+    public void stop() {}
+    
+    @Override
+    public int level() {
+        return 10 ;
+    }
+    
+    public static void init() {
+        if ( initialized )
+            return ;
+        synchronized (initLock) {
+            if ( initialized ) {
+                JenaSystem.logLifecycle("JenaCore.init - skip") ;
+                return ;
+            }
+            initialized = true ;
+            JenaSystem.logLifecycle("JenaCore.init - start") ;
+
+            // Initialization
+            // Touch classes with constants.  
+            // This isn't necessary but it makes it more deterministic.
+            // These constants are reused in various places.  
+            RDF.getURI() ;
+            RDFS.getURI() ;
+            OWL.getURI() ;
+            JenaSystem.logLifecycle("JenaCore.init - finish") ;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/sys/JenaSubsystemLifecycle.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/sys/JenaSubsystemLifecycle.java b/jena-core/src/main/java/org/apache/jena/sys/JenaSubsystemLifecycle.java
new file mode 100644
index 0000000..755ce7e
--- /dev/null
+++ b/jena-core/src/main/java/org/apache/jena/sys/JenaSubsystemLifecycle.java
@@ -0,0 +1,35 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.sys;
+
+/** Lifecycle interface for jena modules and subsystems. */ 
+public interface JenaSubsystemLifecycle {
+    
+    /** start - a module should be ready to operate when this returns */  
+    public void start() ;
+    
+    /** stop - a module should have preformed any shutdown operations by the time this returns */   
+    public void stop() ;
+    
+    /** Provide a marker as to the level to order initialization, 10,20,30,... 
+     * See {@link JenaSystem} for details.
+     */
+    default public int level() { return 9999 ; }
+}
+

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/sys/JenaSubsystemRegistry.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/sys/JenaSubsystemRegistry.java b/jena-core/src/main/java/org/apache/jena/sys/JenaSubsystemRegistry.java
new file mode 100644
index 0000000..056f956
--- /dev/null
+++ b/jena-core/src/main/java/org/apache/jena/sys/JenaSubsystemRegistry.java
@@ -0,0 +1,53 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.sys;
+
+import java.util.List ;
+
+/**
+ * A {@code JenaSubsystemRegistry} is a set of objects implementing {@link JenaSubsystemLifecycle}.
+ */
+public interface JenaSubsystemRegistry {
+    
+    /** Load - perform some kinds of search for {@link JenaSubsystemLifecycle} implementations.
+     * This is called once in the initialization process.
+     */
+    public void load();
+    
+    /** Add to the collection. */
+    public void add(JenaSubsystemLifecycle module);
+
+    /** check whether registered */
+    public boolean isRegistered(JenaSubsystemLifecycle module);
+
+    /** Remove from the collection. */
+    public void remove(JenaSubsystemLifecycle module);
+
+    public int size();
+
+    public boolean isEmpty();
+
+    /**
+     * Return the registered items in a copied list.
+     * The list is detached from the
+     * registry and the caller can mutate it.
+     * There is no specific ordering requirement. 
+     */
+    public List<JenaSubsystemLifecycle> snapshot();
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/sys/JenaSubsystemRegistryBasic.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/sys/JenaSubsystemRegistryBasic.java b/jena-core/src/main/java/org/apache/jena/sys/JenaSubsystemRegistryBasic.java
new file mode 100644
index 0000000..28af4fe
--- /dev/null
+++ b/jena-core/src/main/java/org/apache/jena/sys/JenaSubsystemRegistryBasic.java
@@ -0,0 +1,92 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.sys;
+
+import java.util.ArrayList ;
+import java.util.List ;
+import java.util.ServiceLoader ;
+
+/** Implementation of {@link JenaSubsystemRegistry} for use in the simple 
+ *  but common case of running Jena as a collection of jars
+ *  on the classpath. 
+ *  <p>
+ *  Uses {@link ServiceLoader} to find sub-systems. 
+ */
+public class JenaSubsystemRegistryBasic implements JenaSubsystemRegistry {
+    
+    private List<JenaSubsystemLifecycle> registry = new ArrayList<>() ;
+    private Object registryLock = new Object() ;
+
+    public JenaSubsystemRegistryBasic() {
+    }
+     
+    @Override
+    public void load() {
+        synchronized (registryLock) {
+            // Find subsystems asking for initialization. 
+            ServiceLoader<JenaSubsystemLifecycle> sl = 
+                // Use this->classloader form : better for OSGi 
+                ServiceLoader.load(JenaSubsystemLifecycle.class, this.getClass().getClassLoader()) ;
+            sl.forEach(this::add) ;
+        }
+    }
+
+    @Override
+    public void add(JenaSubsystemLifecycle module) {
+        synchronized (registryLock) {
+            if ( ! registry.contains(module) )
+                registry.add(module);
+        }
+    }
+
+    @Override
+    public boolean isRegistered(JenaSubsystemLifecycle module) {
+        synchronized (registryLock) {
+            return registry.contains(module);
+        }
+    }
+
+    @Override
+    public void remove(JenaSubsystemLifecycle module) {
+        synchronized (registryLock) {
+            registry.remove(module);
+        }
+    }
+
+    @Override
+    public int size() {
+        synchronized (registryLock) {
+            return registry.size();
+        }
+    }
+
+    @Override
+    public boolean isEmpty() {
+        synchronized (registryLock) {
+            return registry.isEmpty();
+        }
+    }
+    
+    @Override
+    public List<JenaSubsystemLifecycle> snapshot() {
+        synchronized (registryLock) {
+            return new ArrayList<>(registry) ;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/sys/JenaSystem.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/sys/JenaSystem.java b/jena-core/src/main/java/org/apache/jena/sys/JenaSystem.java
new file mode 100644
index 0000000..a818a4c
--- /dev/null
+++ b/jena-core/src/main/java/org/apache/jena/sys/JenaSystem.java
@@ -0,0 +1,225 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.sys;
+
+import java.util.Collections ;
+import java.util.Comparator ;
+import java.util.List ;
+import java.util.function.Consumer ;
+
+import org.slf4j.Logger ;
+import org.slf4j.LoggerFactory ;
+
+/** Jena "system" - simple controls for ensuring components are loaded and initialized.
+ * <p>
+ * All initialization should be concurrent and thread-safe.  In particular,
+ * some subsystems need initialization in some sort of order (e.g. ARQ before TDB).
+ * <p>
+ * This is achieved by "levels": levels less than 100 are considered "jena system levels" 
+ * and are reserved. 
+ * <ul>
+ * <li>0 - reserved
+ * <li>10 - jena-core
+ * <li>20 - RIOT
+ * <li>30 - ARQ
+ * <li>40 - TDB
+ * <li>9999 - other
+ * </ul>
+ * See also the <a href="http://jena.apache.org/documentation/notes/system-initialization.html">notes on Jena initialization</a>.
+ */
+public class JenaSystem {
+
+    /** Development support - flag to enable output during
+     * initialization. Output to {@code System.err}, not a logger
+     * to avoid the risk of recursive initialization.   
+     */
+    public static boolean DEBUG_INIT = false ;
+    
+    // A correct way to manage without synchonized using the double checked locking pattern.
+    //   http://en.wikipedia.org/wiki/Double-checked_locking
+    //   http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html 
+    private static volatile boolean initialized = false ;
+    private static Object initLock = new Object() ;
+    
+    /** Initialize Jena.
+     * <p>
+     * This function is cheap to call when already initialized so can be called to be sure.
+     * A commonly used idiom in jena is a static initializer in key classes.
+     * <p> 
+     * By default, initialization happens by using {@code ServiceLoader.load} to find
+     * {@link JenaSubsystemLifecycle} objects.
+     * See {@link #setSubsystemRegistry} to intercept that choice.
+     */
+    public static void init() {
+        // Any other thread attempting to initialize as well will
+        // first test the volatile outside the lock; if it's 
+        // not INITIALIZED, the thread will attempt to grab the lock
+        // and hence wait, then see initialized as true.
+
+        // But we need to cope with recursive calls of JenaSystem.init() as well.
+        // The same thread will not stop at the lock.
+        // Set initialized to true before a recursive call is possible
+        // handles this.  The recursive call will see initialized true and
+        // and return on the first test.
+
+        // Net effect:
+        // After a top level call of JenaSystem.init() returns, tjena has
+        // finishes initialization.
+        // Recursive calls do not have this property.
+
+        if ( initialized )
+            return ;
+        synchronized(initLock) {
+            if ( initialized )  {
+                logLifecycle("JenaSystem.init - return");
+                return ;
+            } 
+            // Catches recursive calls, same thread.
+            initialized = true ;
+            logLifecycle("JenaSystem.init - start");
+            
+            if ( get() == null )
+                setSubsystemRegistry(new JenaSubsystemRegistryBasic()) ;
+            
+            get().load() ;
+            
+            // Debug : what did we find?
+            if ( JenaSystem.DEBUG_INIT ) {
+                logLifecycle("Found:") ;
+                get().snapshot().forEach(mod->
+                logLifecycle("  %-20s [%d]", mod.getClass().getSimpleName(), mod.level())) ;
+            }
+            
+            get().add(new JenaInitLevel0()) ;
+            
+            if ( JenaSystem.DEBUG_INIT ) {
+                logLifecycle("Initialization sequence:") ;
+                JenaSystem.forEach( module ->
+                    logLifecycle("  %-20s [%d]", module.getClass().getSimpleName(), module.level()) ) ;
+            }
+            
+            JenaSystem.forEach( module -> {
+                logLifecycle("Init: %s", module.getClass().getSimpleName());
+                module.start() ;
+            }) ;
+            logLifecycle("JenaSystem.init - finish");
+        }
+    }
+
+    /** Shutdown subsystems */
+    public static void shutdown() {
+        if ( ! initialized ) {
+            logLifecycle("JenaSystem.shutdown - not initialized");
+            return ;
+        }
+        synchronized(initLock) {
+            if ( ! initialized ) { 
+                logLifecycle("JenaSystem.shutdown - return");
+                return ;
+            }
+            logLifecycle("JenaSystem.shutdown - start");
+            JenaSystem.forEachReverse(module -> {
+                logLifecycle("Stop: %s", module.getClass().getSimpleName());
+                module.stop() ;
+            }) ;
+            initialized = false ;
+            logLifecycle("JenaSystem.shutdown - finish");
+        }
+    }
+    
+    private static JenaSubsystemRegistry singleton = null;
+
+    /**
+     * Set the {@link JenaSubsystemRegistry}.
+     * To have any effect, this function
+     * must be called before any other Jena code,
+     * and especially before calling {@code JenaSystem.init()}.
+     */
+    public static void setSubsystemRegistry(JenaSubsystemRegistry thing) {
+        singleton = thing;
+    }
+
+    /** The current JenaSubsystemRegistry */
+    public static JenaSubsystemRegistry get() {
+        return singleton;
+    }
+
+    /**
+     * Call an action on each item in the registry. Calls are made sequentially
+     * and in increasing level order. The exact order within a level is not
+     * specified; it is not registration order.
+     * 
+     * @param action
+     */
+    public static void forEach(Consumer<JenaSubsystemLifecycle> action) {
+        forEach(action, comparator);
+    }
+
+    /**
+     * Call an action on each item in the registry but in the reverse
+     * enumeration order. Calls are made sequentially and in decreasing level
+     * order. The "reverse" is opposite order to {@link #forEach}, which may not
+     * be stable within a level. It is not related to registration order.
+     * 
+     * @param action
+     */
+    public static void forEachReverse(Consumer<JenaSubsystemLifecycle> action) {
+        forEach(action, reverseComparator);
+    }
+
+    // Order by level (increasing)
+    private static Comparator<JenaSubsystemLifecycle> comparator        = (obj1, obj2) -> Integer.compare(obj1.level(), obj2.level()) ;
+    // Order by level (decreasing)
+    private static Comparator<JenaSubsystemLifecycle> reverseComparator = comparator.reversed();
+
+    private synchronized static void forEach(Consumer<JenaSubsystemLifecycle> action, Comparator<JenaSubsystemLifecycle> ordering) {
+        List<JenaSubsystemLifecycle> x = get().snapshot() ;
+        Collections.sort(x, ordering);
+        x.forEach(action);
+    }
+    
+    /** Output a debugging message if DEBUG_INIT is set */
+    public static void logLifecycle(String fmt, Object ...args) {
+        if ( ! DEBUG_INIT )
+            return ;
+        System.err.printf(fmt, args) ;
+        System.err.println() ;
+    }
+
+    /** The level 0 subsystem - inserted without using the Registry load function. 
+     *  There should be only one such level 0 handler. 
+     */
+    private static class JenaInitLevel0 implements JenaSubsystemLifecycle {
+        private static Logger log = LoggerFactory.getLogger("Jena") ; 
+        @Override
+        public void start() {
+            log.debug("Jena initialization");
+        }
+    
+        @Override
+        public void stop() {
+            log.debug("Jena shutdown");
+        }
+    
+        @Override
+        public int level() {
+            return 0;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/sys/Serializer.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/sys/Serializer.java b/jena-core/src/main/java/org/apache/jena/sys/Serializer.java
new file mode 100644
index 0000000..cb9a837
--- /dev/null
+++ b/jena-core/src/main/java/org/apache/jena/sys/Serializer.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.sys;
+
+import java.io.Serializable;
+import java.util.function.Function;
+
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
+
+/** The injection points for the Node and Triple {@link Serializable} process. 
+ * This class is public to allow system initialization to inject
+ * handler functions for  {@link Node} and {@link Triple}.
+ * See also {@code Quad}. 
+ */
+public class Serializer {
+    
+    /*package*/ static Function<Node, Object> nodeWriteReplaceFunction = null;
+    /*package*/ static Function<Triple, Object> tripleWriteReplaceFunction = null;
+    
+    /** Set the node serializer replacement function.
+     * This is a function called by {@code Node.writeReplace} during the {@link Serializable} process.
+     * The return is an object used in place of {@link Node} for the serialization.  
+     * 
+     * <PRE>
+     * ANY-ACCESS-MODIFIER Object writeReplace() throws ObjectStreamException;
+     * </PRE><p>
+     * The returned object must provide
+     * <PRE>
+     * ANY-ACCESS-MODIFIER Object readResolve() throws ObjectStreamException;
+     * </PRE><p>  
+     * where "Object" is a {@link Node}.
+     * 
+     * @see java.io.Serializable
+     */
+    public static void setNodeSerializer(Function<Node, Object> writeReplaceFunction) {
+        nodeWriteReplaceFunction = writeReplaceFunction;
+    }
+    
+    /** Return the current node serializer replacement function. */
+    public static Function<Node, Object> getNodeSerializer() {
+        return nodeWriteReplaceFunction;
+    }
+
+    /** Set the triple serializer replacement function.
+     * This is a function called by {@code Triple.writeReplace} during the {@link Serializable} process.
+     * The return is an object used in place of {@link Triple} for the serialization.  
+     * 
+     * <PRE>
+     * ANY-ACCESS-MODIFIER Object writeReplace() throws ObjectStreamException;
+     * </PRE><p>
+     * The returned object must provide
+     * <PRE>
+     * ANY-ACCESS-MODIFIER Object readResolve() throws ObjectStreamException;
+     * </PRE><p>  
+     * where "Object" is a {@link Triple}.
+     * 
+     * @see java.io.Serializable
+     */
+    public static void setTripleSerializer(Function<Triple, Object> writeReplaceFunction) {
+        tripleWriteReplaceFunction = writeReplaceFunction;
+    }
+
+    /** Return the current triple serializer replacement function. */
+    public static Function<Triple, Object> getTripleSerializer() {
+        return tripleWriteReplaceFunction;
+    }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/system/InitJenaCore.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/system/InitJenaCore.java b/jena-core/src/main/java/org/apache/jena/system/InitJenaCore.java
deleted file mode 100644
index 394bf08..0000000
--- a/jena-core/src/main/java/org/apache/jena/system/InitJenaCore.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.system;
-
-import org.apache.jena.vocabulary.OWL ;
-import org.apache.jena.vocabulary.RDF ;
-import org.apache.jena.vocabulary.RDFS ;
-
-public class InitJenaCore  implements JenaSubsystemLifecycle {
-    private static volatile boolean initialized = false ;
-    private static Object           initLock    = new Object() ;
-
-    @Override
-    public void start() {
-        init() ;
-    }
-
-    @Override
-    public void stop() {}
-    
-    @Override
-    public int level() {
-        return 10 ;
-    }
-    
-    public static void init() {
-        if ( initialized )
-            return ;
-        synchronized (initLock) {
-            if ( initialized ) {
-                JenaSystem.logLifecycle("JenaCore.init - skip") ;
-                return ;
-            }
-            initialized = true ;
-            JenaSystem.logLifecycle("JenaCore.init - start") ;
-
-            // Initialization
-            // Touch classes with constants.  
-            // This isn't necessary but it makes it more deterministic.
-            // These constants are reused in various places.  
-            RDF.getURI() ;
-            RDFS.getURI() ;
-            OWL.getURI() ;
-            JenaSystem.logLifecycle("JenaCore.init - finish") ;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemLifecycle.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemLifecycle.java b/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemLifecycle.java
deleted file mode 100644
index 3587d79..0000000
--- a/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemLifecycle.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.system;
-
-/** Lifecycle interface for jena modules and subsystems. */ 
-public interface JenaSubsystemLifecycle {
-    
-    /** start - a module should be ready to operate when this returns */  
-    public void start() ;
-    
-    /** stop - a module should have preformed any shutdown operations by the time this returns */   
-    public void stop() ;
-    
-    /** Provide a marker as to the level to order initialization, 10,20,30,... 
-     * See {@link JenaSystem} for details.
-     */
-    default public int level() { return 9999 ; }
-}
-

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java b/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java
deleted file mode 100644
index 51d750b..0000000
--- a/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.system;
-
-import java.util.List ;
-
-/**
- * A {@code JenaSubsystemRegistry} is a set of objects implementing {@link JenaSubsystemLifecycle}.
- */
-public interface JenaSubsystemRegistry {
-    
-    /** Load - perform some kinds of search for {@link JenaSubsystemLifecycle} implementations.
-     * This is called once in the initialization process.
-     */
-    public void load();
-    
-    /** Add to the collection. */
-    public void add(JenaSubsystemLifecycle module);
-
-    /** check whether registered */
-    public boolean isRegistered(JenaSubsystemLifecycle module);
-
-    /** Remove from the collection. */
-    public void remove(JenaSubsystemLifecycle module);
-
-    public int size();
-
-    public boolean isEmpty();
-
-    /**
-     * Return the registered items in a copied list.
-     * The list is detached from the
-     * registry and the caller can mutate it.
-     * There is no specific ordering requirement. 
-     */
-    public List<JenaSubsystemLifecycle> snapshot();
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/d82328d9/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistryBasic.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistryBasic.java b/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistryBasic.java
deleted file mode 100644
index 52b6692..0000000
--- a/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistryBasic.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.system;
-
-import java.util.ArrayList ;
-import java.util.List ;
-import java.util.ServiceLoader ;
-
-/** Implementation of {@link JenaSubsystemRegistry} for use in the simple 
- *  but common case of running Jena as a collection of jars
- *  on the classpath. 
- *  <p>
- *  Uses {@link ServiceLoader} to find sub-systems. 
- */
-public class JenaSubsystemRegistryBasic implements JenaSubsystemRegistry {
-    
-    private List<JenaSubsystemLifecycle> registry = new ArrayList<>() ;
-    private Object registryLock = new Object() ;
-
-    public JenaSubsystemRegistryBasic() {
-    }
-     
-    @Override
-    public void load() {
-        synchronized (registryLock) {
-            // Find subsystems asking for initialization. 
-            ServiceLoader<JenaSubsystemLifecycle> sl = 
-                // Use this->classloader form : better for OSGi 
-                ServiceLoader.load(JenaSubsystemLifecycle.class, this.getClass().getClassLoader()) ;
-            sl.forEach(this::add) ;
-        }
-    }
-
-    @Override
-    public void add(JenaSubsystemLifecycle module) {
-        synchronized (registryLock) {
-            if ( ! registry.contains(module) )
-                registry.add(module);
-        }
-    }
-
-    @Override
-    public boolean isRegistered(JenaSubsystemLifecycle module) {
-        synchronized (registryLock) {
-            return registry.contains(module);
-        }
-    }
-
-    @Override
-    public void remove(JenaSubsystemLifecycle module) {
-        synchronized (registryLock) {
-            registry.remove(module);
-        }
-    }
-
-    @Override
-    public int size() {
-        synchronized (registryLock) {
-            return registry.size();
-        }
-    }
-
-    @Override
-    public boolean isEmpty() {
-        synchronized (registryLock) {
-            return registry.isEmpty();
-        }
-    }
-    
-    @Override
-    public List<JenaSubsystemLifecycle> snapshot() {
-        synchronized (registryLock) {
-            return new ArrayList<>(registry) ;
-        }
-    }
-}
\ No newline at end of file