You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by gi...@apache.org on 2021/12/09 10:17:51 UTC

[jena-site] branch asf-site updated: Updated site from main (ffc86074dc78a9a192747020415db4b5d92091bc)

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

git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/jena-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new df6ca1a  Updated site from main (ffc86074dc78a9a192747020415db4b5d92091bc)
df6ca1a is described below

commit df6ca1a0f6983e166b1305d2c236539710416bf3
Author: jenkins <bu...@apache.org>
AuthorDate: Thu Dec 9 10:17:49 2021 +0000

    Updated site from main (ffc86074dc78a9a192747020415db4b5d92091bc)
---
 content/documentation/fuseki2/fuseki-docker.html   |  6 +--
 content/documentation/fuseki2/fuseki-webapp.html   | 15 ++++----
 content/documentation/index.xml                    | 23 ++++++-----
 content/documentation/io/rdf-input.html            | 27 ++++++-------
 content/documentation/io/rdf-output.html           |  6 +--
 content/documentation/query/algebra.html           |  4 +-
 content/documentation/query/arq-query-eval.html    | 15 ++++----
 content/documentation/query/construct-quad.html    |  3 +-
 content/documentation/query/custom_aggregates.html |  3 +-
 content/documentation/query/programmatic.html      |  8 +---
 content/documentation/query/update.html            |  3 +-
 content/documentation/rdfconnection/index.html     |  6 +--
 content/documentation/shacl/index.html             |  2 +-
 content/documentation/shex/index.html              |  2 +-
 content/documentation/sparql-apis/http-auth.html   |  4 +-
 content/documentation/sparql-apis/index.html       | 38 +++++++++++++++----
 content/documentation/tdb/commands.html            | 36 ++++++++++--------
 content/documentation/tdb/faqs.html                | 16 +++++++-
 content/documentation/tdb/quadfilter.html          | 26 +++++--------
 content/documentation/tdb/tdb-xloader.html         | 30 +++++++++------
 content/download/index.html                        | 30 +++++++--------
 content/index.xml                                  | 23 ++++++-----
 content/sitemap.xml                                | 44 +++++++++++-----------
 23 files changed, 204 insertions(+), 166 deletions(-)

diff --git a/content/documentation/fuseki2/fuseki-docker.html b/content/documentation/fuseki2/fuseki-docker.html
index b88fb21..c741302 100644
--- a/content/documentation/fuseki2/fuseki-docker.html
+++ b/content/documentation/fuseki2/fuseki-docker.html
@@ -213,10 +213,10 @@ server.</p>
 <pre><code>mkdir -p databases/DB2
 tdb2.tdbloader --loc databases/DB2 MyData.ttl
 # Publish read-only
-docker-compose run --rm --name MyServer --service-ports fuseki --tdb2 --loc databases/DB2 /ds
+docker-compose run --rm --name MyServer --service-ports fuseki --loc databases/DB2 /ds
 </code></pre>
 <p>To allow update on the database, add <code>--update</code>. Updates are persisted.</p>
-<pre><code>docker-compose run --rm --name MyServer --service-ports fuseki --tdb2 --update --loc databases/DB2 /ds
+<pre><code>docker-compose run --rm --name MyServer --service-ports fuseki --update --loc databases/DB2 /ds
 </code></pre>
 <p>See
 <a href="https://jena.apache.org/documentation/fuseki2/fuseki-configuration.html">fuseki-configuration</a>
@@ -265,7 +265,7 @@ command line arguments appropriately.</p>
 </code></pre>
 <p>With databases on a bind mount to host filesystem directory:</p>
 <pre><code>MNT=&quot;--mount type=bind,src=$PWD/databases,dst=/fuseki/databases&quot;
-docker run -i --rm -p &quot;3030:3030&quot; $MNT --name MyServer -t fuseki --tdb2 --update --loc databases/DB2 /ds
+docker run -i --rm -p &quot;3030:3030&quot; $MNT --name MyServer -t fuseki --update --loc databases/DB2 /ds
 </code></pre>
 <h2 id="version-specific-notes">Version specific notes:</h2>
 <ul>
diff --git a/content/documentation/fuseki2/fuseki-webapp.html b/content/documentation/fuseki2/fuseki-webapp.html
index ac3f69f..9122ff9 100644
--- a/content/documentation/fuseki2/fuseki-webapp.html
+++ b/content/documentation/fuseki2/fuseki-webapp.html
@@ -193,21 +193,20 @@ how to provide datasets and configure services using the configuration file.</p>
 <p>This is running Fuseki from the command line.</p>
 <p>To publish at <tt>http://<i>host</i>:3030/NAME</i></tt>:</p>
 <p>where <code>/NAME</code> is the dataset publishing name at this server in URI space.</p>
-<p>TDB1 database:</p>
+<p>TDB2 database:</p>
 <pre><code>fuseki-server [--loc=DIR] [[--update] /NAME]
 </code></pre>
-<p>The argument <code>--tdb2</code> puts the command line handling into &ldquo;TDB2 mode&rdquo;.
-A dataset created with <code>--loc</code> is a TDB2 dataset.
-TDB2 database:</p>
-<pre><code>fuseki-server --tdb2 [--loc=DIR] [[--update] /NAME]
-</code></pre>
-<p>In-memory, non-peristent database (always updatable):</p>
+<p>The <code>--loc</code> directory is either a TDB1 or TDB2 database.
+The directory <code>DIR</code> must exist.
+If the database in <code>DIR</code> does not exist, then a new database is created. By
+default this is a TDB2 database unoess teh argument &ndash;tdb1 is given.</p>
+<p>An in-memory, non-peristent database (always updatable) is:</p>
 <pre><code>fuseki-server --mem /NAME
 </code></pre>
 <p>Load a file at start and provide it read-only:</p>
 <pre><code>fuseki-server --file=MyData.ttl /NAME
 </code></pre>
-<p>where &ldquo;MyData.ttl&rdquo; can be any RDF format, both triples or quads.</p>
+<p>where <code>MyData.ttl</code> can be any RDF format, both triples or quads.</p>
 <p>Administrative functions are only available from &ldquo;localhost&rdquo;.</p>
 <p>See <code>fuseki-server --help</code> for details of more arguments.</p>
 <h2 id="layout">Layout</h2>
diff --git a/content/documentation/index.xml b/content/documentation/index.xml
index 1a70762..0931068 100644
--- a/content/documentation/index.xml
+++ b/content/documentation/index.xml
@@ -182,7 +182,7 @@ Not currently supported:
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://jena.apache.org/documentation/sparql-apis/</guid>
-      <description>Jump to &amp;ldquo;Changes&amp;quot;.
+      <description>Jump to the &amp;ldquo;Changes&amp;rdquo; section.
 Overview The SPARQL specifications provide query, update and the graph store protocol (GSP).
 For working with RDF data:
    API GPI     Model Graph   Statement Triple   Resource Node   Literal Node   String Var   Dataset DatasetGraph    Quad    and for SPARQL,
@@ -252,8 +252,8 @@ SERVICE is a feature of SPARQL 1.1 that allows an executing query to make a SPAR
       
       <guid>https://jena.apache.org/documentation/query/programmatic.html</guid>
       <description>It is possible to build queries by building and abstract syntax tree (as the parser does) or by building the algebra expression for the query. It is usually better to work with the algebra form as it is more regular.
-See the examples in the ARQ src-examples/ directory of the ARQ distribution, particularly arq.examples.AlgebraExec.
- src-examples at gitbox.apache.org src-examples at github.com  See also ARQ - SPARQL Algebra
+See the examples such as arq.examples.algrebra.AlgebraExec at jena-examples:arq/examples
+See also ARQ - SPARQL Algebra
 ARQ documentation index</description>
     </item>
     
@@ -295,7 +295,7 @@ In order to eliminate this limitation, Jena ARQ extends the grammar of the CONST
       
       <guid>https://jena.apache.org/documentation/query/custom_aggregates.html</guid>
       <description>ARQ supports custom aggregate functions as allowed by the SPARQL 1.1 specification.
-See example code.</description>
+See jena-examples:arq/examples/aggregates.</description>
     </item>
     
     <item>
@@ -435,7 +435,7 @@ Expressions are enclosed in () and can be optionally named using AS. If no name
       <guid>https://jena.apache.org/documentation/query/update.html</guid>
       <description>SPARQL Update is a W3C standard for an RDF update language with SPARQL syntax. It is described in &amp;ldquo;SPARQL 1.1 Update&amp;quot;.
 A SPARQL Update request is composed of a number of update operations, so in a single request graphs can be created, loaded with RDF data and modified.
-Some examples of ARQ&amp;rsquo;s SPARQL Update support are to be found in the download in src-examples/arq/examples/update.
+Some examples of ARQ&amp;rsquo;s SPARQL Update support are to be found in the download in jena-examples:arq/examples/update.
 The main API classes are:
  UpdateRequest - A list of Update to be performed.</description>
     </item>
@@ -1681,7 +1681,7 @@ Having the description in a file means that the data that the application is goi
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://jena.apache.org/documentation/tdb/commands.html</guid>
-      <description>Contents  Installation Scripts  Script set up - bash scripts Script set up - Windows batch files   Command line script arguments  Setting options from the command line   TDB Commands  Store description tdbloader tdbloader2 tdbquery tdbdump tdbstats    Installation From Apache Jena version 2.7.x onwards, TDB is now installed as part of a single integrated Jena package. There is no longer a need to install a separate TDB package to run the TDB command line tools, or to u [...]
+      <description>Contents  Installation Scripts  Script set up - bash scripts Script set up - Windows batch files   Command line script arguments  Setting options from the command line   TDB Commands  Store description tdbloader TDB xloader tdbquery tdbdump tdbstats    Installation From Apache Jena version 2.7.x onwards, TDB is now installed as part of a single integrated Jena package. There is no longer a need to install a separate TDB package to run the TDB command line tools, or to  [...]
     </item>
     
     <item>
@@ -1721,7 +1721,7 @@ SPARQL has the concept of a dataset description. In a query string, the clauses
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://jena.apache.org/documentation/tdb/faqs.html</guid>
-      <description>FAQs  Does TDB support Transactions? Can I share a TDB dataset between multiple applications? What is the Impossibly Large Object exception? What are the ObjectFile.read() and ObjectFileStorage.read() errors? What is the difference between tdbloader and tdbloader2? How large a Java heap size should I use for TDB? Does Fuseki/TDB have a memory leak? Should I use a SSD? Why do I get the exception Can&amp;rsquo;t open database at location /path/to/db as it is already lock [...]
+      <description>FAQs  What are TDB1 and TDB2? Does TDB support Transactions? Can I share a TDB dataset between multiple applications? What is the Impossibly Large Object exception? What are the ObjectFile.read() and ObjectFileStorage.read() errors? What is the difference between tdbloader and tdbloader2? How large a Java heap size should I use for TDB? Does Fuseki/TDB have a memory leak? Should I use a SSD? Why do I get the exception Can&amp;rsquo;t open database at location /path/to/ [...]
     </item>
     
     <item>
@@ -1753,7 +1753,7 @@ For the preferred statistics strategy, the TDB optimizer uses information captur
       
       <guid>https://jena.apache.org/documentation/tdb/quadfilter.html</guid>
       <description>This page describes how to filter quads at the lowest level of TDB. It can be used to hide certain quads (triples in named graphs) or triples.
-The code for the example on this page can be found in the TDB download: src-examples/tdb.examples/ExQuadFilter.java Filtering quads should be used with care. The performance of the tuple filter callback is critical.
+The code for the example on this page can be found in the TDB examples Filtering quads should be used with care. The performance of the tuple filter callback is critical.
 See also Dynamic Datasets to select only certain specified named graphs for a query.</description>
     </item>
     
@@ -1816,11 +1816,10 @@ The file access mechanism can be set explicitly, but this is not a good idea for
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://jena.apache.org/documentation/tdb/tdb-xloader.html</guid>
-      <description>TDB xloader (&amp;ldquo;x&amp;rdquo; for external) is a bulkloader for very large datasets. The goal is stability and reliability for long running loading, running on modest and
+      <description>TDB xloader (&amp;ldquo;x&amp;rdquo; for external) is a bulkloader for very large datasets. The goal is stability and reliability for long running loading, running on modest hardware and can be use to load a database on rotating disk or SSD.
 xloader is not a replacement for regular TDB1 and TDB2 loaders.
-&amp;ldquo;tdb1.xloader&amp;rdquo; was called &amp;ldquo;tdbloader2&amp;rdquo; and has some improvements.
-It is not as fast as other TDB loaders on dataset where the general loaders work on without encountering progressive slowdown.
-The xloaders for TDB1 and TDB2 are not identical.</description>
+There are two scripts to load data using the xloader subsystem.
+&amp;ldquo;tdb1.xloader&amp;rdquo;, which was called &amp;ldquo;tdbloader2&amp;rdquo; and has some improvements.</description>
     </item>
     
     <item>
diff --git a/content/documentation/io/rdf-input.html b/content/documentation/io/rdf-input.html
index 9cb50bc..59bfead 100644
--- a/content/documentation/io/rdf-input.html
+++ b/content/documentation/io/rdf-input.html
@@ -445,30 +445,31 @@ contain &lsquo;:'.</p>
 configuration file is necessary.</p>
 <p>The base URI for reading models will be the original URI, not the alternative location.</p>
 <h2 id="advanced-examples">Advanced examples</h2>
-<p>Example code may be found in <a href="https://github.com/apache/jena/tree/main/jena-arq/src-examples/arq/examples/riot/">jena-arq/src-examples</a>.</p>
+<p>Example code may be found in <a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/arq/examples/riot/">jena-examples:arq/examples</a>.</p>
 <h3 id="iterating-over-parser-output">Iterating over parser output</h3>
 <p>One of the capabilities of the RIOT API is the ability to treat parser output as an iterator,
 this is useful when you don&rsquo;t want to go to the trouble of writing a full sink implementation and can easily express your
 logic in normal iterator style.</p>
-<p>To do this you use one of the subclasses of
-<a href="https://github.com/apache/jena/tree/main/jena-arq/src/main/java/org/apache/jena/riot/lang/PipedRDFIterator.java?view=markup">PipedRDFIterator</a>
-in conjunction with a <a href="https://github.com/apache/jena/tree/main/jena-arq/src/main/java/org/apache/jena/riot/lang/PipedRDFStream.java?view=markup">PipedRDFStream</a>.</p>
-<p>This <code>PipedRDFStream</code> provides an implementation of <code>StreamRDF</code> which allows it to consume parser output and this is consumed by
-the <code>PipedRDFIterator</code> implementation.  This has some advantages over a direct <code>StreamRDF</code> implementation since it allows the parser
-production of data to run ahead of your consumption of data which may result in better overall throughput.</p>
-<p>The only complication is that you need to ensure that the thread feeding the <code>PipedRDFStream</code> and the consumer of the iterator are on different threads
-as otherwise you can run into a deadlock situation where one is waiting on data from the other which is never started.</p>
-<p>See <a href="https://github.com/apache/jena/blob/main/jena-arq/src-examples/arq/examples/riot/ExRIOT6_AddNewReader.java">RIOT example 6</a>
-which shows an example usage including a simple way to push the parser onto a different thread to avoid the possible deadlock.</p>
+<p>To do this you use <code>AsyncParser.asyncParseTriples</code> which parses the input on
+another thread:</p>
+<pre><code>    Iterator&lt;Triple&gt; iter = AsyncParser.asyncParseTriples(filename);
+    iter.forEachRemaining(triple-&gt;{
+        // Do something with triple
+    });
+</code></pre>
+<p>For N-Triples and N-Quads, you can use
+<code>RiotParsers.createIteratorNTriples(input)</code> which parses the input on the
+calling thread.</p>
+<p><a href="https://github.com/apache/jena/blob/main/jena-examples/src/main/java/arq/examples/riot/ExRIOT9_AsyncParser.java">RIOT example 9</a>.</p>
 <h3 id="filter-the-output-of-parsing">Filter the output of parsing</h3>
 <p>When working with very large files, it can be useful to
 process the stream of triples or quads produced
 by the parser so as to work in a streaming fashion.</p>
-<p>See <a href="https://github.com/apache/jena/blob/main/jena-arq/src-examples/arq/examples/riot/ExRIOT4_StreamRDF_Filter.java">RIOT example 4</a></p>
+<p>See <a href="https://github.com/apache/jena/blob/main/jena-examples/src/main/java/arq/examples/arq/examples/riot/ExRIOT4_StreamRDF_Filter.java">RIOT example 4</a></p>
 <h3 id="add-a-new-language">Add a new language</h3>
 <p>The set of languages is not fixed. A new language,
 together with a parser, can be added to RIOT as shown in
-<a href="https://github.com/apache/jena/tree/main/jena-arq/src-examples/arq/examples/riot/ExRIOT5_StreamRDFCollect.java">RIOT example 5</a></p>
+<a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/arq/examples/riot/ExRIOT5_StreamRDFCollect.java">RIOT example 5</a></p>
 
 
         </div>
diff --git a/content/documentation/io/rdf-output.html b/content/documentation/io/rdf-output.html
index d2980cd..a05cb91 100644
--- a/content/documentation/io/rdf-output.html
+++ b/content/documentation/io/rdf-output.html
@@ -674,7 +674,7 @@ by using one of the following RDFFormats:</p>
 pass the &ldquo;frame&rdquo; in the <code>JSONLD_FRAME_PRETTY</code> and <code>JSONLD_FRAME_FLAT</code>
 cases.</p>
 <p>What can be done, and how it can be, is explained in the
-<a href="https://github.com/apache/jena/tree/main/jena-arq/src-examples/arq/examples/riot/Ex_WriteJsonLD.java">sample code</a>.</p>
+<a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/arq/examples/riot/Ex_WriteJsonLD.java">sample code</a>.</p>
 <h3 id="rdf-binary">RDF Binary</h3>
 <p><a href="rdf-binary.html">This is a binary encoding</a> using
 <a href="https://thrift.apache.org/">Apache Thrift</a> or
@@ -732,7 +732,7 @@ while the jena writer name defaults to a streaming plain output.</p>
 </tbody>
 </table>
 <h2 id="examples">Examples</h2>
-<p>Example code may be found in <a href="https://github.com/apache/jena/tree/main/jena-arq/src-examples/arq/examples/riot/">jena-arq/src-examples</a>.</p>
+<p>Example code may be found in <a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/arq/examples/riot/">jena-examples:arq/examples</a>.</p>
 <h3 id="ways-to-write-a-model">Ways to write a model</h3>
 <p>The follow ways are different ways to write a model in Turtle:</p>
 <pre><code>    Model model =  ... ;
@@ -778,7 +778,7 @@ RDFDataMgr.write(System.out, m, Lang.TRIG) ;
 </code></pre>
 <h3 id="adding-a-new-output-format">Adding a new output format</h3>
 <p>A complete example of adding a new output format is given in the example file:
-<a href="https://github.com/apache/jena/blob/main/jena-arq/src-examples/arq/examples/riot/ExRIOT7_AddNewWriter.java">RIOT Output example 7</a>.</p>
+<a href="https://github.com/apache/jena/blob/main/jena-examples/src/main/java/arq/examples/arq/examples/riot/ExRIOT7_AddNewWriter.java">RIOT Output example 7</a>.</p>
 <h2 id="notes">Notes</h2>
 <p>Using <code>OutputStream</code>s is strongly encouraged.  This allows the writers
 to manage the character encoding using UTF-8.  Using <code>java.io.Writer</code>
diff --git a/content/documentation/query/algebra.html b/content/documentation/query/algebra.html
index f4c0903..89c909a 100644
--- a/content/documentation/query/algebra.html
+++ b/content/documentation/query/algebra.html
@@ -245,11 +245,11 @@ output stream (it manages the conversion to UTF-8) and ARQ own
 SSE is simply passing the calls to the writer operation from the
 <code>org.apache.jena.sparql.sse.writer</code> package.</p>
 <h2 id="creating-an-algebra-expression-programmatically">Creating an algebra expression programmatically</h2>
-<p>See the example in <code>src-examples/arq.examples.AlgebraExec</code>.</p>
+<p>See the example in
+<a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/algebra/AlgebraExec.java">AlgebraExec</a>.</p>
 <p>To produce the complete javadoc for ARQ, download an ARQ
 distribution and run the ant task &lsquo;javadoc-all&rsquo;.</p>
 <h2 id="evaluating-a-algebra-expression">Evaluating a algebra expression</h2>
-<p>See the example in <code>src-examples/arq.examples.AlgebraExec</code>.</p>
 <pre><code>QueryIterator qIter = Algebra.exec(op,graph) ;
 
 QueryIterator qIter = Algebra.exec(op,datasetGraph) ;
diff --git a/content/documentation/query/arq-query-eval.html b/content/documentation/query/arq-query-eval.html
index 6d56523..db8afd9 100644
--- a/content/documentation/query/arq-query-eval.html
+++ b/content/documentation/query/arq-query-eval.html
@@ -202,8 +202,8 @@ For higher SPARQL performance, ARQ can be extended at the
 <a href="#opexecutor">algebra level</a>.</p>
 <p>Applications writers who extend ARQ at the query execution level
 should be prepared to work with the source code for ARQ for
-specific details and for finding code to reuse. Some example can be
-found in the <code>src-examples</code> directory in the ARQ download.</p>
+specific details and for finding code to reuse. Some examples can be
+found <a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/">arq/examples directory</a></p>
 <ul>
 <li><a href="#overview-of-arq-query-processing">Overview of ARQ Query processing</a></li>
 <li><a href="#the-main-query-engine">The Main Query Engine</a></li>
@@ -373,8 +373,8 @@ no further engine factories are checked.</p>
 called to return a <code>Plan</code> object for the execution. The main
 operation of the <code>Plan</code> interface is to get the <code>QueryIterator</code> for
 the query.</p>
-<p>See the example in
-<code>src-examples/arq.examples.engine.MyQueryEngine</code>.</p>
+<p>See the example <code>arq.examples.engine.MyQueryEngine</code> at
+<a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/">jena-examples:arq/examples</a>.</p>
 <h2 id="the-main-query-engine">The Main Query Engine</h2>
 <p>The main query engine can execute any query. It contains a number
 of basic graph pattern matching implementations including one that
@@ -486,7 +486,8 @@ has a convenience operation to do this):</p>
   // Register it
   StageBuilder.setGenerator(ARQ.getContext(), myStageGenerator) ;
 </code></pre>
-<p>Example: <code>src-examples/arq.examples.bgpmatching</code>.</p>
+<p>Example:
+<a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/bgpmatching/">jena-examples:arq/examples/bgpmatching</a></p>
 <h2 id="opexecutor">OpExecutor</h2>
 <p>A <code>StageGenerator</code> provides matching for a basic graph pattern. If
 an extension wishes to take responsibility for more of the
@@ -557,7 +558,6 @@ custom query engine and overriding <code>QueryEngineMain.modifyOp</code>:</p>
 <pre><code>  @Override
   protected Op modifyOp(Op op)
   {
-     // Cope with initial bindings.
      op = Substitute.substitute(op, initialInput) ;
      // Use standard optimizations.
      op = super.modifyOp(op) ;
@@ -590,7 +590,8 @@ normal algorithm or a custom <code>OpExecutor</code> or a custom Stage
 Generator or a combination of all three extension mechanism.</p>
 <p>Only a small, skeleton custom query engine is needed to intercept
 the initial setup. See the example in
-<code>src-examples/arq.examples.engine.MyQueryEngine</code>.</p>
+<a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/">jena-examples:arq/examples</a>
+<code>arq.examples.engine.MyQueryEngine</code>.</p>
 <p>While it is possible to replace the entire process of query
 evaluation, this is a substantial endeavour. <code>QueryExecutionBase</code>
 provides the machinery for result presentation (<code>SELECT</code>,
diff --git a/content/documentation/query/construct-quad.html b/content/documentation/query/construct-quad.html
index c46edae..5474b45 100644
--- a/content/documentation/query/construct-quad.html
+++ b/content/documentation/query/construct-quad.html
@@ -290,7 +290,8 @@ on the default graph. For instance:</p>
 // The part of &quot;GRAPH ?g1 { ?s1 ?p1 ?o1 }&quot; will be ignored. Only &quot;?s ?p ?o&quot; in the default graph will be returned.
 Iterator&lt;Triple&gt; triples = qexec.execConstructTriples();
 </code></pre>
-<p>More examples can be found at <code>ExampleConstructQuads.java</code> under <code>jena-arq/src-examples</code></p>
+<p>More examples can be found at <code>ExampleConstructQuads.java</code> at
+<a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/constructquads/">jena-examples:arq/examples/constructquads/</a>.</p>
 <h2 id="fuseki-support">Fuseki Support</h2>
 <p>Jena <a href="/documentation/fuseki2/index.html">Fuseki</a> is also empowered with Construct Quad query as a built-in
 function. No more additional configuration is required to switch it on.
diff --git a/content/documentation/query/custom_aggregates.html b/content/documentation/query/custom_aggregates.html
index 2476220..886e4aa 100644
--- a/content/documentation/query/custom_aggregates.html
+++ b/content/documentation/query/custom_aggregates.html
@@ -177,7 +177,8 @@
             <h1 class="title">ARQ - Custom aggregates</h1>
             
 	<p>ARQ supports custom aggregate functions as allowed by the SPARQL 1.1 specification.</p>
-<p>See <a href="https://github.com/apache/jena/tree/main/jena-arq/src-examples/arq/examples/aggregates">example code</a>.</p>
+<p>See
+<a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/aggregates/">jena-examples:arq/examples/aggregates</a>.</p>
 
 
         </div>
diff --git a/content/documentation/query/programmatic.html b/content/documentation/query/programmatic.html
index 56e87c2..e103805 100644
--- a/content/documentation/query/programmatic.html
+++ b/content/documentation/query/programmatic.html
@@ -180,12 +180,8 @@
 tree (as the parser does) or by building the algebra expression for
 the query.  It is usually better to work with the algebra form as
 it is more regular.</p>
-<p>See the examples in the ARQ <code>src-examples/</code> directory of the ARQ
-distribution, particularly <code>arq.examples.AlgebraExec</code>.</p>
-<ul>
-<li><a href="https://gitbox.apache.org/repos/asf?p=jena.git;a=tree;f=jena-arq/src-examples/arq/examples">src-examples at gitbox.apache.org</a></li>
-<li><a href="https://github.com/apache/jena/tree/main/jena-arq/src-examples/arq/examples">src-examples at github.com</a></li>
-</ul>
+<p>See the examples such as <code>arq.examples.algrebra.AlgebraExec</code> at
+<a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/">jena-examples:arq/examples</a></p>
 <p>See also <a href="algebra.html">ARQ - SPARQL Algebra</a></p>
 <p><a href="index.html">ARQ documentation index</a></p>
 
diff --git a/content/documentation/query/update.html b/content/documentation/query/update.html
index c48a319..2c045f4 100644
--- a/content/documentation/query/update.html
+++ b/content/documentation/query/update.html
@@ -183,7 +183,8 @@ SPARQL syntax. It is described in
 operations, so in a single request graphs can be created, loaded
 with RDF data and modified.</p>
 <p>Some examples of ARQ&rsquo;s SPARQL Update support are to be found in the
-download in src-examples/arq/examples/update.</p>
+download in
+<a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/update">jena-examples:arq/examples/update</a>.</p>
 <p>The main API classes are:</p>
 <ul>
 <li>UpdateRequest - A list of Update to be performed.</li>
diff --git a/content/documentation/rdfconnection/index.html b/content/documentation/rdfconnection/index.html
index fcb2986..5592c46 100644
--- a/content/documentation/rdfconnection/index.html
+++ b/content/documentation/rdfconnection/index.html
@@ -266,9 +266,9 @@ builder to construct <code>RDFConnectionRemote</code>s.</p>
             .destination(&quot;http://host/triplestore&quot;);
 </code></pre>
 <p>which uses default settings used by <code>RDFConenctionFactory.connect</code>.</p>
-<p>See <a href="https://github.com/apache/jena/blob/main/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/examples/RDFConnectionExample4.java">example
+<p>See <a href="https://github.com/apache/jena/blob/main/jena-examples/src/main/java/rdfconnection/examples/RDFConnectionExample4.java">example
 4</a>
-and <a href="https://github.com/apache/jena/blob/main/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/examples/RDFConnectionExample5.java">example
+and <a href="https://github.com/apache/jena/blob/main/jena-examples/src/main/java/rdfconnection/examples/RDFConnectionExample5.java">example
 5</a>.</p>
 <p>There are many options, including setting HTTP headers for content types
 (<a href="/documentation/javadoc/rdfconnection/index.html">javadoc</a>)
@@ -282,7 +282,7 @@ default general settings work but it is possible to have a specialised connectio
 </code></pre>
 <p>which uses settings tuned to Fuseki, including round-trip handling of
 blank nodes.</p>
-<p>See <a href="https://github.com/apache/jena/blob/main/jena-rdfconnection/src/main/java/org/apache/jena/rdfconnection/examples/RDFConnectionExample6.java">example
+<p>See <a href="https://github.com/apache/jena/blob/main/jena-examples/src/main/java/rdfconnection/examples/RDFConnectionExample6.java">example
 6</a>.</p>
 <h2 id="graph-store-protocol">Graph Store Protocol</h2>
 <p>The <a href="https://www.w3.org/TR/sparql11-http-rdf-update/">SPARQL Graph
diff --git a/content/documentation/shacl/index.html b/content/documentation/shacl/index.html
index 92dc755..a51dc05 100644
--- a/content/documentation/shacl/index.html
+++ b/content/documentation/shacl/index.html
@@ -236,7 +236,7 @@ all named graphs in the dataset.</p>
 <li><code>GraphValidation</code> for updating graphs with validation</li>
 </ul>
 <h2 id="api-examples">API Examples</h2>
-<p><a href="https://github.com/apache/jena/tree/main/jena-shacl/src/main/java/org/apache/jena/shacl/examples">https://github.com/apache/jena/tree/main/jena-shacl/src/main/java/org/apache/jena/shacl/examples</a></p>
+<p><a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/shacl/examples/">https://github.com/apache/jena/tree/main/jena-examples/src/main/java/shacl/examples/</a></p>
 <p>Example
 <a href="https://github.com/apache/jena/tree/main/jena-shacl/src/main/java/org/apache/jena/shacl/examples/Shacl01_validateGraph.java"><code>Shacl01_validateGraph</code></a>
 shows validation and printing of the validation report in a text form and in RDF:</p>
diff --git a/content/documentation/shex/index.html b/content/documentation/shex/index.html
index 758a82a..971b156 100644
--- a/content/documentation/shex/index.html
+++ b/content/documentation/shex/index.html
@@ -210,7 +210,7 @@ can be given, separated by "," and format `all` outputs all 3 formats.
 </ul>
 <h2 id="api-examples">API Examples</h2>
 <p>Examples:</p>
-<p><a href="https://github.com/apache/jena/tree/main/jena-shex/src/main/java/org/apache/jena/shex/examples/">https://github.com/apache/jena/tree/main/jena-shex/src/main/java/org/apache/jena/shex/examples/</a></p>
+<p><a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/shex/examples/">https://github.com/apache/jena/tree/main/jena-examples/src/main/java/shex/examples/</a></p>
 <pre><code>    public static void main(String ...args) {
         String SHAPES     = &quot;examples/schema.shex&quot;;
         String SHAPES_MAP = &quot;examples/shape-map.shexmap&quot;;
diff --git a/content/documentation/sparql-apis/http-auth.html b/content/documentation/sparql-apis/http-auth.html
index 9e982a3..0fe84a7 100644
--- a/content/documentation/sparql-apis/http-auth.html
+++ b/content/documentation/sparql-apis/http-auth.html
@@ -273,7 +273,9 @@ used.</p>
         ResultSet rs <span style="color:#666">=</span> qExec<span style="color:#666">.</span><span style="color:#b44">execSelect</span><span style="color:#666">();</span>
         ResultSetFormatter<span style="color:#666">.</span><span style="color:#b44">out</span><span style="color:#666">(</span>rs<span style="color:#666">);</span>
     <span style="color:#666">}</span>
-</code></pre></div>
+</code></pre></div><h2 id="examples">Examples</h2>
+<p><a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/auth">jena-examples:arq/examples/auth/</a>.</p>
+
 
         </div>
     </div>
diff --git a/content/documentation/sparql-apis/index.html b/content/documentation/sparql-apis/index.html
index 5cb1f83..d4017f9 100644
--- a/content/documentation/sparql-apis/index.html
+++ b/content/documentation/sparql-apis/index.html
@@ -171,7 +171,7 @@
             </div>
             <h1 class="title">Apache Jena SPARQL APIs</h1>
             
-	<p>Jump to &ldquo;<a href="#changes">Changes</a>&quot;.</p>
+	<p>Jump to the &ldquo;<a href="#changes">Changes</a>&rdquo; section.</p>
 <h2 id="overview">Overview</h2>
 <p>The SPARQL specifications provide
 <a href="https://www.w3.org/TR/sparql11-query/">query</a>,
@@ -302,12 +302,10 @@ necessary.</li>
 <p>Deprecate modifying <code>QueryExecution</code> after it is built.</p>
 </li>
 <li>
-<p>Parameterization for remote queries.
-Parameterization - replacing variables by values before sending
-a query - makes the query into a template. The same applies to updates.
-This is also provided uniformly for local queries and should be used in
-preference to the local-only &ldquo;initial binding&rdquo; approach which is
-similarly but not identical.</p>
+<p>Substitution of variables for concrete values in query and update execution.
+This is a form of paramterization that works in both local and remnote usage
+(unlike &ldquo;initial bindings&rdquo; which are only available for local query execution).
+See the <a href="#substitution">substitution section</a> section below.</p>
 </li>
 <li>
 <p><code>HttpOp</code>, using <code>java.net.http.HttpClient</code>, is split into <code>HttpRDF</code> for
@@ -316,7 +314,7 @@ common patterns of HTTP usage.</p>
 </li>
 <li>
 <p>The previous <code>HttpOp</code> is available as <code>HttpOp1</code> and Apache HttpClient is still
-a dependency. Eventually, `HttpOp`` and dependecy on  Apache HttpClient will be removed.</p>
+a dependency. Eventually, <code>HttpOp</code> and dependency on  Apache HttpClient will be removed.</p>
 </li>
 <li>
 <p>GSP - support for dataset operations as well as graphs (also supported by Fuseki).</p>
@@ -327,6 +325,30 @@ a dependency. Eventually, `HttpOp`` and dependecy on  Apache HttpClient will be
 <code>RDFLink</code> provide APIs.</p>
 </li>
 </ul>
+<h2 id="substitution">Substitution</h2>
+<p>All query and update builders provide operations to use a query and substitute
+variables for concrete RDF terms in the execution.</p>
+<p>Unlike &ldquo;initial bindings&rdquo; substitution is provided in query and update builders
+for both local and remote cases.</p>
+<p>Substitution is always &ldquo;replace variable with RDF term&rdquo; in a query or update
+that is correct syntax. This means it does not apply to <code>INSERT DATA</code> or <code>DELETE DATA</code> but can be used with <code>INSERT { ?s ?p ?o } WHERE {}</code> and
+<code>DELETE { ?s ?p ?o } WHERE {}</code>.</p>
+<p>Full example:
+<a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/arq/examples/ExQuerySubstitute_01.java">ExQuerySubstitute_01.java</a>.</p>
+<pre><code>    ResultSet resultSet1 = QueryExecution.dataset(dataset)
+            .query(prefixes+&quot;SELECT * { ?person foaf:name ?name }&quot;)
+            .substitution(&quot;name&quot;, name1)
+            .select();
+    ResultSetFormatter.out(resultSet1);
+</code></pre><p>Substitution is to be preferred over &ldquo;initial bindings&rdquo; because it is clearly
+defined and applies to both query and update in both local and remote uses.</p>
+<p>&ldquo;Substitution&rdquo; and &ldquo;initial bindings&rdquo; are similar but not identical.</p>
+<p>See also</p>
+<ul>
+<li><a href="documentation/query/parameterized-sparql-strings.html">Parameterized Queries</a></li>
+<li><a href="https://jena.apache.org/documentation/extras/querybuilder/index.html">Jena Query Builder</a></li>
+</ul>
+<p>which provide different ways to build a query.</p>
 <h2 id="ttrdfconnectiontt"><tt>RDFConnection</tt></h2>
 <p><a href="../rdfconnection/">RDFConnection</a></p>
 <pre><code>    try ( RDFConnection conn = RDFConnectionRemote.service(dataURL).build()) {
diff --git a/content/documentation/tdb/commands.html b/content/documentation/tdb/commands.html
index c7249eb..caeb6e6 100644
--- a/content/documentation/tdb/commands.html
+++ b/content/documentation/tdb/commands.html
@@ -194,7 +194,7 @@
 <ul>
 <li><a href="#store-description">Store description</a></li>
 <li><a href="#tdbloader">tdbloader</a></li>
-<li><a href="#tdbloader2">tdbloader2</a></li>
+<li><a href="#tdb-xloader">TDB xloader</a></li>
 <li><a href="#tdbquery">tdbquery</a></li>
 <li><a href="#tdbdump">tdbdump</a></li>
 <li><a href="#tdbstats">tdbstats</a></li>
@@ -258,9 +258,26 @@ are loaded into the default graph, quad formats (e.g. N-Quads, TriG)
 are loaded into the dataset according to the name or the default graph.</p>
 <p>Bulk loader and index builder. Performs bulk load operations more
 efficiently than simply reading RDF into a TDB-back model.</p>
+<h3 id="tdbxloader">tdb.xloader</h3>
+<p><code>tdb1.xloader</code> and <code>tdb2.xloader</code> are bulk loaders for very large data for TDB1
+and TDB2.</p>
+<p>See <a href="./tdb-xloader.html">TDB xloader</a> for more information. These loaders only
+work on Linux and Mac OS/X since it relies on some Unix system utilities.</p>
+<h3 id="tdbquery"><code>tdbquery</code></h3>
+<p>Invoke a SPARQL query on a store. Use <code>--time</code> for timing
+information. The store is attached on each run of this command so
+timing includes some overhead not present in a running system.</p>
+<p>Details about query execution can be obtained &ndash; see notes on the
+<a href="optimizer.html#investigating-what-is-going-on">TDB Optimizer</a>.</p>
+<h3 id="tdbdump"><code>tdbdump</code></h3>
+<p>Dump the store in
+<a href="http://www.w3.org/TR/n-quads/">N-Quads</a>
+format.</p>
+<h3 id="tdbstats"><code>tdbstats</code></h3>
+<p>Produce a statistics for the dataset. See the
+<a href="optimizer.html#statistics-rule-file">TDB Optimizer description.</a>.</p>
 <h3 id="tdbloader2"><code>tdbloader2</code></h3>
-<p>Bulk loader and index builder. Faster than <code>tdbloader</code> but only works
-on Linux and Mac OS/X since it relies on some Unix system utilities.</p>
+<p><em>This has been replace by  <a href="./tdb-xloader.html">TDB xloader</a>.</em></p>
 <p>This bulk loader can only be used to create a database. It may
 overwrite existing data. It requires accepts the <code>--loc</code> argument and a
 list of files to load e.g.</p>
@@ -283,19 +300,6 @@ looks to be/is insufficient.</p>
 wish to have the <a href="http://www.ivarch.com/programs/pv.shtml">PipeViewer</a>
 tool installed on your system as this will provide extra progress information
 during the indexing phase of the build.</p>
-<h3 id="tdbquery"><code>tdbquery</code></h3>
-<p>Invoke a SPARQL query on a store. Use <code>--time</code> for timing
-information. The store is attached on each run of this command so
-timing includes some overhead not present in a running system.</p>
-<p>Details about query execution can be obtained &ndash; see notes on the
-<a href="optimizer.html#investigating-what-is-going-on">TDB Optimizer</a>.</p>
-<h3 id="tdbdump"><code>tdbdump</code></h3>
-<p>Dump the store in
-<a href="http://www.w3.org/TR/n-quads/">N-Quads</a>
-format.</p>
-<h3 id="tdbstats">tdbstats</h3>
-<p>Produce a statistics for the dataset. See the
-<a href="optimizer.html#statistics-rule-file">TDB Optimizer description.</a>.</p>
 
 
         </div>
diff --git a/content/documentation/tdb/faqs.html b/content/documentation/tdb/faqs.html
index 5afa3c7..802ce74 100644
--- a/content/documentation/tdb/faqs.html
+++ b/content/documentation/tdb/faqs.html
@@ -178,6 +178,7 @@
             
 	<h2 id="faqs">FAQs</h2>
 <ul>
+<li><a href="#tdb1-tdb2">What are TDB1 and TDB2?</a></li>
 <li><a href="#transactions">Does TDB support Transactions?</a></li>
 <li><a href="#multi-jvm">Can I share a TDB dataset between multiple applications?</a></li>
 <li><a href="#impossibly-large-object">What is the <em>Impossibly Large Object</em> exception?</a></li>
@@ -192,6 +193,12 @@
 <li><a href="#tdb2-lock">What is the <em>Unable to check TDB lock owner, the lock file contents appear to be for a TDB2 database. Please try loading this location as a TDB2 database</em> error?</a></li>
 <li><a href="#not-answered">My question isn&rsquo;t answered here?</a></li>
 </ul>
+<p>&lt;a name=&quot;tdb1-tdb2&gt;</a></p>
+<h2 id="tdb1-and-tdb2">TDB1 and TDB2</h2>
+<p>TDB2 is a later generation of database for Jena. It is more robust and can
+handle large update transactions.</p>
+<p>These are different databases systems - they have different on-disk file formats
+and databases for one are not compatible with other database engine.</p>
 <p><a name="transactions"></a></p>
 <h2 id="does-tdb-support-transactions">Does TDB support transactions?</h2>
 <p>Yes, TDB provides
@@ -206,10 +213,10 @@ transactionally.</p>
 <p><a name="multi-jvm"></a></p>
 <h2 id="can-i-share-a-tdb-dataset-between-multiple-applications">Can I share a TDB dataset between multiple applications?</h2>
 <p>Multiple applications, running in multiple JVMs, using the same
-file databases is <strong>not</strong> supported and has a high risk of data corruption.  Once corrupted a database cannot be repaired
+file databases is <strong>not</strong> supported and has a high risk of data corruption.  Once corrupted, a database cannot be repaired
 and must be rebuilt from the original source data. Therefore there <strong>must</strong> be a single JVM
 controlling the database directory and files.</p>
-<p>From 1.1.0 onwards TDB includes automatic prevention of multi-JVM usage which prevents this under most circumstances and helps
+<p>TDB includes automatic prevention of multi-JVM usage which prevents this under most circumstances and helps
 protect your data from corruption.</p>
 <p>If you wish to share a TDB dataset between applications use our <a href="../fuseki2/">Fuseki</a> component which provides a
 database server. Fuseki supports <a href="http://www.w3.org/TR/sparql11-query/">SPARQL Query</a>,
@@ -235,8 +242,13 @@ will need to be rebuilt from the original source data, this is why we <strong>st
 <p>As noted above to resolve this problem you <strong>must</strong> rebuild your database from the original source data, a corrupted database <strong>cannot</strong>
 be repaired. This is why we <strong>strongly</strong> recommend you use <a href="tdb_transactions.html">transactions</a> since this protects your dataset against
 corruption.</p>
+<h2 id="what-is-tdbxloader">What is <code>tdb.xloader</code>?</h2>
+<p><code>tdb1.xloader</code> and <code>tdb2.xloader</code> are bulk loaders for very large datasets that
+take several hours to load.</p>
+<p>See <a href="./tdb-xloader.html">TDB xloader</a> for more information.</p>
 <p><a name="tdbloader-vs-tdbloader2"></a></p>
 <h2 id="what-is-the-different-between-tdbloader-and-tdbloader2">What is the different between <code>tdbloader</code> and <code>tdbloader2</code>?</h2>
+<p><code>tdbloader2</code> has been replaced by <code>tdb1.xloader</code> and <code>tdb2.xloader</code> for TDB1 and TDB2 respectively.</p>
 <p><code>tdbloader</code> and <code>tdbloader2</code> differ in how they build databases.</p>
 <p><code>tdbloader</code> is Java based and uses the same TDB APIs that you would use in your own Java code to perform the data load.  The advantage of this is that
 it supports incremental loading of data into a TDB database.  The downside is that the loader will be slower for initial database builds.</p>
diff --git a/content/documentation/tdb/quadfilter.html b/content/documentation/tdb/quadfilter.html
index 47f5479..6b57aab 100644
--- a/content/documentation/tdb/quadfilter.html
+++ b/content/documentation/tdb/quadfilter.html
@@ -179,8 +179,9 @@
 	<p>This page describes how to filter quads at the lowest level of TDB.
 It can be used to hide certain quads (triples in named graphs) or
 triples.</p>
-<p>The code for the example on this page can be found in the TDB
-download: <code>src-examples/tdb.examples/ExQuadFilter.java</code> Filtering
+<p>The code for the example on this page can be found in the
+<a href="https://github.com/apache/jena/tree/main/jena-examples/src/main/java/tdb">TDB examples</a>
+Filtering
 quads should be used with care. The performance of the tuple filter
 callback is critical.</p>
 <p>See also
@@ -193,18 +194,12 @@ accept or reject the quad or triple. This happens during basic
 graph pattern processing.</p>
 <p>A rejected quad is simply not processed further in the basic graph
 pattern and it is as if it is not in the dataset.</p>
-<p>The filter has a signature of:</p>
-<pre><code> // org.apache.jena.atlas.iterator.Filter
- interface Filter&lt;T&gt;
- {
-    public boolean accept(T item) ;
- }
-</code></pre>
-<p>with a type parameter of <code>Tuple&lt;NodeId&gt;</code>. <code>NodeId</code> is the low level
+<p>The filter has a signature of: <code>java.util.function.Predicate&lt;Tuple&lt;NodeId&gt;&gt;</code>
+with a type parameter of <code>Tuple&lt;NodeId&gt;</code>. <code>NodeId</code> is the low level
 internal identifier TDB uses for RDF terms. <code>Tuple</code> is a class for
 an immutable tuples of values of the same type.</p>
 <pre><code>  /** Create a filter to exclude the graph http://example/g2 */
-  private static Filter&lt;Tuple&lt;NodeId&gt;&gt; createFilter(Dataset ds)
+  private static Predicate&lt;Tuple&lt;NodeId&gt;&gt; createFilter(Dataset ds)
   {
       DatasetGraphTransaction dst = (DatasetGraphTransaction)(ds.asDatasetGraph()) ;
       DatasetGraphTDB dsg = dst.getBaseDatasetGraph();
@@ -215,8 +210,7 @@ an immutable tuples of values of the same type.</p>
       final NodeId target = nodeTable.getNodeIdForNode(Node.createURI(&quot;http://example/g2&quot;)) ;
 
       // Filter for accept/reject as quad as being visible.
-      Filter&lt;Tuple&lt;NodeId&gt;&gt; filter = new Filter&lt;Tuple&lt;NodeId&gt;&gt;() {
-          public boolean accept(Tuple&lt;NodeId&gt; item)
+      Predicate&lt;Tuple&lt;NodeId&gt;&gt; filter = item -&gt;
           {
               // Quads are 4-tuples, triples are 3-tuples.
               if ( item.size() == 4 &amp;&amp; item.get(0).equals(target) )
@@ -224,19 +218,19 @@ an immutable tuples of values of the same type.</p>
                   return false ;
               // Accept
               return true ;
-          } } ;
+          } ;
       return filter ;
   }
 </code></pre>
 <p>To install a filter, put it in the context of a query execution
 under the symbol <code>SystemTDB.symTupleFilter</code> then execute the query as normal.</p>
 <pre><code>    Dataset ds = ... ;
-    Filter&lt;Tuple&lt;NodeId&gt;&gt; filter = createFilter(ds) ;
+    Predicate&lt;Tuple&lt;NodeId&gt;&gt; filter = createFilter(ds) ;
     Query query = ... ;
     try (QueryExecution qExec = QueryExecution.dataset(ds)
             .query(query)
             .set(SystemTDB.symTupleFilter, filter)
-            .build() ) {}
+            .build() ) {
         ResultSet rs = qExec.execSelect() ;
         ...
     }
diff --git a/content/documentation/tdb/tdb-xloader.html b/content/documentation/tdb/tdb-xloader.html
index c7ba640..bad5da9 100644
--- a/content/documentation/tdb/tdb-xloader.html
+++ b/content/documentation/tdb/tdb-xloader.html
@@ -177,15 +177,18 @@
             <h1 class="title">TDB xloader</h1>
             
 	<p>TDB xloader (&ldquo;x&rdquo; for external) is a bulkloader for very large datasets. The goal
-is stability and reliability for long running loading, running on modest and</p>
+is stability and reliability for long running loading, running on modest
+hardware and can be use to load a database on rotating disk or SSD.</p>
 <p>xloader is not a replacement for regular TDB1 and TDB2 loaders.</p>
-<p>&ldquo;tdb1.xloader&rdquo; was called &ldquo;tdbloader2&rdquo; and has some improvements.</p>
+<p>There are two scripts to load data using the xloader subsystem.</p>
+<p>&ldquo;tdb1.xloader&rdquo;, which was called &ldquo;tdbloader2&rdquo; and has some improvements.</p>
 <p>It is not as fast as other TDB loaders on dataset where the general loaders work
-on without encountering progressive slowdown.</p>
-<p>The xloaders for TDB1 and TDB2 are not identical. The TDB2 is more capable; it
-is based on the same design approach with further refinements to building the
-node table and to reduce the total amount of temporary file space used.</p>
-<p>The xloader does not run on MS Windows. It uses and external sort program from
+without encountering progressive slowdown.</p>
+<p>The xloaders for TDB1 and TDB2 are not identical. The TDB2 xloader is more
+capable; it is based on the same design approach with further refinements to
+building the node table and to reduce the total amount of temporary file space
+used.</p>
+<p>The xloader does not run on MS Windows. It uses an external sort program from
 unix - <code>sort(1)</code>.</p>
 <p>The xloader only builds a fresh database from empty.
 It can not be used to load an existing database.</p>
@@ -193,16 +196,19 @@ It can not be used to load an existing database.</p>
 <p><code>tdb2.xloader --loc DIRECTORY</code> FILE&hellip;</p>
 <p>or</p>
 <p><code>tdb1.xloader --loc DIRECTORY</code> FILE&hellip;</p>
-<p>Additioally, there is an argument <code>--tmpdir</code> to use a different directory for
+<p>Additionally, there is an argument <code>--tmpdir</code> to use a different directory for
 temporary files.</p>
-<p><code>FILE</code> is any RDF syntax supported by Jena.</p>
+<p><code>FILE</code> is any RDF syntax supported by Jena. Syntax is determined by the file
+extension and can include an addtional &ldquo;.gz&rdquo; or &ldquo;.bz2&rdquo; for compressed files.</p>
 <h3 id="advice">Advice</h3>
-<p><code>xloader</code> uses a lot of temporary disk space.</p>
 <p>To avoid a load failing due to a syntax or other data error, it is advisable to
 run <code>riot --check</code> on the data first. Parsing is faster than loading.</p>
+<p>The TDB databases will take up a lot of disk space and in addition during
+loading <code>xloader</code> uses a significant amount of temporary disk space.</p>
 <p>If desired, the data can be converted to <a href="../io/rdf-binary.html">RDF Thrift</a> at
-this stage by adding <code>--stream rdf-thrift</code> to the riot checking run.
-Parsing RDF Thrift is faster than parsing N-Triples although the bulk of the loading process is not limited by parser speed.</p>
+this stage by adding <code>--stream rdf-thrift</code> to the riot checking run.  Parsing
+RDF Thrift is faster than parsing N-Triples although the bulk of the loading
+process is not limited by parser speed.</p>
 <p>Do not capture the bulk loader output in a file on the same disk as the database
 or temporary directory; it slows loading down.</p>
 
diff --git a/content/download/index.html b/content/download/index.html
index 024d5ab..955ed60 100644
--- a/content/download/index.html
+++ b/content/download/index.html
@@ -184,14 +184,14 @@ WAR file packaging):</p>
 </thead>
 <tbody>
 <tr>
-<td><a href="[preferred]jena/binaries/apache-jena-fuseki-4.2.0.tar.gz">apache-jena-fuseki-4.2.0.tar.gz</a></td>
-<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.2.0.tar.gz.sha512">SHA512</a></td>
-<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.2.0.tar.gz.asc">PGP</a></td>
+<td><a href="[preferred]jena/binaries/apache-jena-fuseki-4.3.0.tar.gz">apache-jena-fuseki-4.3.0.tar.gz</a></td>
+<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.3.0.tar.gz.sha512">SHA512</a></td>
+<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.3.0.tar.gz.asc">PGP</a></td>
 </tr>
 <tr>
-<td><a href="[preferred]jena/binaries/apache-jena-fuseki-4.2.0.zip">apache-jena-fuseki-4.2.0.zip</a></td>
-<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.2.0.zip.sha512">SHA512</a></td>
-<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.2.0.zip.asc">PGP</a></td>
+<td><a href="[preferred]jena/binaries/apache-jena-fuseki-4.3.0.zip">apache-jena-fuseki-4.3.0.zip</a></td>
+<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.3.0.zip.sha512">SHA512</a></td>
+<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.3.0.zip.asc">PGP</a></td>
 </tr>
 </tbody>
 </table>
@@ -207,9 +207,9 @@ Source release: this forms the official release of Apache Jena. All binaries art
 </thead>
 <tbody>
 <tr>
-<td><a href="[preferred]jena/source/jena-4.2.0-source-release.zip">jena-4.2.0-source-release.zip</a></td>
-<td align="center"><a href="https://downloads.apache.org/jena/source/jena-4.2.0-source-release.zip.sha512">SHA512</a></td>
-<td align="center"><a href="https://downloads.apache.org/jena/source/jena-4.2.0-source-release.zip.asc">PGP</a></td>
+<td><a href="[preferred]jena/source/jena-4.3.0-source-release.zip">jena-4.3.0-source-release.zip</a></td>
+<td align="center"><a href="https://downloads.apache.org/jena/source/jena-4.3.0-source-release.zip.sha512">SHA512</a></td>
+<td align="center"><a href="https://downloads.apache.org/jena/source/jena-4.3.0-source-release.zip.asc">PGP</a></td>
 </tr>
 </tbody>
 </table>
@@ -225,14 +225,14 @@ The binary distribution of libraries contains the APIs, SPARQL engine, the TDB n
 </thead>
 <tbody>
 <tr>
-<td><a href="[preferred]jena/binaries/apache-jena-4.2.0.tar.gz">apache-jena-4.2.0.tar.gz</a></td>
-<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.2.0.tar.gz.sha512">SHA512</a></td>
-<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.2.0.tar.gz.asc">PGP</a></td>
+<td><a href="[preferred]jena/binaries/apache-jena-4.3.0.tar.gz">apache-jena-4.3.0.tar.gz</a></td>
+<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.3.0.tar.gz.sha512">SHA512</a></td>
+<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.3.0.tar.gz.asc">PGP</a></td>
 </tr>
 <tr>
-<td><a href="[preferred]jena/binaries/apache-jena-4.2.0.zip">apache-jena-4.2.0.zip</a></td>
-<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.2.0.zip.sha512">SHA512</a></td>
-<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.2.0.zip.asc">PGP</a></td>
+<td><a href="[preferred]jena/binaries/apache-jena-4.3.0.zip">apache-jena-4.3.0.zip</a></td>
+<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.3.0.zip.sha512">SHA512</a></td>
+<td align="center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.3.0.zip.asc">PGP</a></td>
 </tr>
 </tbody>
 </table>
diff --git a/content/index.xml b/content/index.xml
index 05e265b..4f64064 100644
--- a/content/index.xml
+++ b/content/index.xml
@@ -225,7 +225,7 @@ Not currently supported:
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://jena.apache.org/documentation/sparql-apis/</guid>
-      <description>Jump to &amp;ldquo;Changes&amp;quot;.
+      <description>Jump to the &amp;ldquo;Changes&amp;rdquo; section.
 Overview The SPARQL specifications provide query, update and the graph store protocol (GSP).
 For working with RDF data:
    API GPI     Model Graph   Statement Triple   Resource Node   Literal Node   String Var   Dataset DatasetGraph    Quad    and for SPARQL,
@@ -295,8 +295,8 @@ SERVICE is a feature of SPARQL 1.1 that allows an executing query to make a SPAR
       
       <guid>https://jena.apache.org/documentation/query/programmatic.html</guid>
       <description>It is possible to build queries by building and abstract syntax tree (as the parser does) or by building the algebra expression for the query. It is usually better to work with the algebra form as it is more regular.
-See the examples in the ARQ src-examples/ directory of the ARQ distribution, particularly arq.examples.AlgebraExec.
- src-examples at gitbox.apache.org src-examples at github.com  See also ARQ - SPARQL Algebra
+See the examples such as arq.examples.algrebra.AlgebraExec at jena-examples:arq/examples
+See also ARQ - SPARQL Algebra
 ARQ documentation index</description>
     </item>
     
@@ -338,7 +338,7 @@ In order to eliminate this limitation, Jena ARQ extends the grammar of the CONST
       
       <guid>https://jena.apache.org/documentation/query/custom_aggregates.html</guid>
       <description>ARQ supports custom aggregate functions as allowed by the SPARQL 1.1 specification.
-See example code.</description>
+See jena-examples:arq/examples/aggregates.</description>
     </item>
     
     <item>
@@ -478,7 +478,7 @@ Expressions are enclosed in () and can be optionally named using AS. If no name
       <guid>https://jena.apache.org/documentation/query/update.html</guid>
       <description>SPARQL Update is a W3C standard for an RDF update language with SPARQL syntax. It is described in &amp;ldquo;SPARQL 1.1 Update&amp;quot;.
 A SPARQL Update request is composed of a number of update operations, so in a single request graphs can be created, loaded with RDF data and modified.
-Some examples of ARQ&amp;rsquo;s SPARQL Update support are to be found in the download in src-examples/arq/examples/update.
+Some examples of ARQ&amp;rsquo;s SPARQL Update support are to be found in the download in jena-examples:arq/examples/update.
 The main API classes are:
  UpdateRequest - A list of Update to be performed.</description>
     </item>
@@ -1954,7 +1954,7 @@ Having the description in a file means that the data that the application is goi
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://jena.apache.org/documentation/tdb/commands.html</guid>
-      <description>Contents  Installation Scripts  Script set up - bash scripts Script set up - Windows batch files   Command line script arguments  Setting options from the command line   TDB Commands  Store description tdbloader tdbloader2 tdbquery tdbdump tdbstats    Installation From Apache Jena version 2.7.x onwards, TDB is now installed as part of a single integrated Jena package. There is no longer a need to install a separate TDB package to run the TDB command line tools, or to u [...]
+      <description>Contents  Installation Scripts  Script set up - bash scripts Script set up - Windows batch files   Command line script arguments  Setting options from the command line   TDB Commands  Store description tdbloader TDB xloader tdbquery tdbdump tdbstats    Installation From Apache Jena version 2.7.x onwards, TDB is now installed as part of a single integrated Jena package. There is no longer a need to install a separate TDB package to run the TDB command line tools, or to  [...]
     </item>
     
     <item>
@@ -1994,7 +1994,7 @@ SPARQL has the concept of a dataset description. In a query string, the clauses
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://jena.apache.org/documentation/tdb/faqs.html</guid>
-      <description>FAQs  Does TDB support Transactions? Can I share a TDB dataset between multiple applications? What is the Impossibly Large Object exception? What are the ObjectFile.read() and ObjectFileStorage.read() errors? What is the difference between tdbloader and tdbloader2? How large a Java heap size should I use for TDB? Does Fuseki/TDB have a memory leak? Should I use a SSD? Why do I get the exception Can&amp;rsquo;t open database at location /path/to/db as it is already lock [...]
+      <description>FAQs  What are TDB1 and TDB2? Does TDB support Transactions? Can I share a TDB dataset between multiple applications? What is the Impossibly Large Object exception? What are the ObjectFile.read() and ObjectFileStorage.read() errors? What is the difference between tdbloader and tdbloader2? How large a Java heap size should I use for TDB? Does Fuseki/TDB have a memory leak? Should I use a SSD? Why do I get the exception Can&amp;rsquo;t open database at location /path/to/ [...]
     </item>
     
     <item>
@@ -2026,7 +2026,7 @@ For the preferred statistics strategy, the TDB optimizer uses information captur
       
       <guid>https://jena.apache.org/documentation/tdb/quadfilter.html</guid>
       <description>This page describes how to filter quads at the lowest level of TDB. It can be used to hide certain quads (triples in named graphs) or triples.
-The code for the example on this page can be found in the TDB download: src-examples/tdb.examples/ExQuadFilter.java Filtering quads should be used with care. The performance of the tuple filter callback is critical.
+The code for the example on this page can be found in the TDB examples Filtering quads should be used with care. The performance of the tuple filter callback is critical.
 See also Dynamic Datasets to select only certain specified named graphs for a query.</description>
     </item>
     
@@ -2089,11 +2089,10 @@ The file access mechanism can be set explicitly, but this is not a good idea for
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://jena.apache.org/documentation/tdb/tdb-xloader.html</guid>
-      <description>TDB xloader (&amp;ldquo;x&amp;rdquo; for external) is a bulkloader for very large datasets. The goal is stability and reliability for long running loading, running on modest and
+      <description>TDB xloader (&amp;ldquo;x&amp;rdquo; for external) is a bulkloader for very large datasets. The goal is stability and reliability for long running loading, running on modest hardware and can be use to load a database on rotating disk or SSD.
 xloader is not a replacement for regular TDB1 and TDB2 loaders.
-&amp;ldquo;tdb1.xloader&amp;rdquo; was called &amp;ldquo;tdbloader2&amp;rdquo; and has some improvements.
-It is not as fast as other TDB loaders on dataset where the general loaders work on without encountering progressive slowdown.
-The xloaders for TDB1 and TDB2 are not identical.</description>
+There are two scripts to load data using the xloader subsystem.
+&amp;ldquo;tdb1.xloader&amp;rdquo;, which was called &amp;ldquo;tdbloader2&amp;rdquo; and has some improvements.</description>
     </item>
     
     <item>
diff --git a/content/sitemap.xml b/content/sitemap.xml
index ca99394..d27b2bd 100644
--- a/content/sitemap.xml
+++ b/content/sitemap.xml
@@ -89,7 +89,7 @@
   
   <url>
     <loc>https://jena.apache.org/download/</loc>
-    <lastmod>2021-11-01T08:15:56+00:00</lastmod>
+    <lastmod>2021-12-05T23:16:52+00:00</lastmod>
   </url>
   
   <url>
@@ -99,17 +99,17 @@
   
   <url>
     <loc>https://jena.apache.org/documentation/shacl/</loc>
-    <lastmod>2021-09-27T16:55:34+01:00</lastmod>
+    <lastmod>2021-11-15T19:40:46+00:00</lastmod>
   </url>
   
   <url>
     <loc>https://jena.apache.org/documentation/shex/</loc>
-    <lastmod>2021-09-19T09:51:17+01:00</lastmod>
+    <lastmod>2021-11-15T19:40:46+00:00</lastmod>
   </url>
   
   <url>
     <loc>https://jena.apache.org/documentation/sparql-apis/</loc>
-    <lastmod>2021-11-05T16:04:36+00:00</lastmod>
+    <lastmod>2021-12-05T23:14:11+00:00</lastmod>
   </url>
   
   <url>
@@ -139,7 +139,7 @@
   
   <url>
     <loc>https://jena.apache.org/documentation/query/programmatic.html</loc>
-    <lastmod>2021-02-19T15:39:55+13:00</lastmod>
+    <lastmod>2021-11-15T19:40:46+00:00</lastmod>
   </url>
   
   <url>
@@ -154,17 +154,17 @@
   
   <url>
     <loc>https://jena.apache.org/documentation/query/construct-quad.html</loc>
-    <lastmod>2021-11-05T16:04:36+00:00</lastmod>
+    <lastmod>2021-11-15T19:40:46+00:00</lastmod>
   </url>
   
   <url>
     <loc>https://jena.apache.org/documentation/query/custom_aggregates.html</loc>
-    <lastmod>2021-02-19T15:39:55+13:00</lastmod>
+    <lastmod>2021-11-15T19:40:46+00:00</lastmod>
   </url>
   
   <url>
     <loc>https://jena.apache.org/documentation/query/arq-query-eval.html</loc>
-    <lastmod>2021-11-05T16:04:36+00:00</lastmod>
+    <lastmod>2021-11-15T19:40:46+00:00</lastmod>
   </url>
   
   <url>
@@ -219,12 +219,12 @@
   
   <url>
     <loc>https://jena.apache.org/documentation/query/algebra.html</loc>
-    <lastmod>2020-05-01T11:11:56+12:00</lastmod>
+    <lastmod>2021-11-15T19:40:46+00:00</lastmod>
   </url>
   
   <url>
     <loc>https://jena.apache.org/documentation/query/update.html</loc>
-    <lastmod>2020-02-28T13:09:12+01:00</lastmod>
+    <lastmod>2021-11-15T19:40:46+00:00</lastmod>
   </url>
   
   <url>
@@ -324,12 +324,12 @@
   
   <url>
     <loc>https://jena.apache.org/documentation.html</loc>
-    <lastmod>2021-11-30T09:38:00-07:00</lastmod>
+    <lastmod>2021-12-05T23:14:11+00:00</lastmod>
   </url>
   
   <url>
     <loc>https://jena.apache.org/download.html</loc>
-    <lastmod>2021-11-01T08:15:56+00:00</lastmod>
+    <lastmod>2021-12-05T23:16:52+00:00</lastmod>
   </url>
   
   <url>
@@ -364,7 +364,7 @@
   
   <url>
     <loc>https://jena.apache.org/documentation/fuseki2/fuseki-docker.html</loc>
-    <lastmod>2020-10-08T22:51:38+13:00</lastmod>
+    <lastmod>2021-11-27T15:03:59+00:00</lastmod>
   </url>
   
   <url>
@@ -474,7 +474,7 @@
   
   <url>
     <loc>https://jena.apache.org/documentation/sparql-apis/http-auth.html</loc>
-    <lastmod>2021-11-05T16:04:36+00:00</lastmod>
+    <lastmod>2021-11-15T19:40:46+00:00</lastmod>
   </url>
   
   <url>
@@ -664,7 +664,7 @@
   
   <url>
     <loc>https://jena.apache.org/documentation/rdfconnection/</loc>
-    <lastmod>2021-11-05T16:04:36+00:00</lastmod>
+    <lastmod>2021-11-15T19:40:46+00:00</lastmod>
   </url>
   
   <url>
@@ -684,7 +684,7 @@
   
   <url>
     <loc>https://jena.apache.org/documentation/io/rdf-input.html</loc>
-    <lastmod>2021-09-26T09:54:06+01:00</lastmod>
+    <lastmod>2021-12-05T22:49:42+00:00</lastmod>
   </url>
   
   <url>
@@ -714,7 +714,7 @@
   
   <url>
     <loc>https://jena.apache.org/documentation/fuseki2/fuseki-webapp.html</loc>
-    <lastmod>2021-03-26T16:45:50+00:00</lastmod>
+    <lastmod>2021-11-27T15:03:59+00:00</lastmod>
   </url>
   
   <url>
@@ -929,7 +929,7 @@
   
   <url>
     <loc>https://jena.apache.org/documentation/tdb/commands.html</loc>
-    <lastmod>2020-02-28T13:09:12+01:00</lastmod>
+    <lastmod>2021-11-15T17:03:29+00:00</lastmod>
   </url>
   
   <url>
@@ -949,7 +949,7 @@
   
   <url>
     <loc>https://jena.apache.org/documentation/tdb/faqs.html</loc>
-    <lastmod>2020-06-26T14:59:03+01:00</lastmod>
+    <lastmod>2021-12-05T23:14:11+00:00</lastmod>
   </url>
   
   <url>
@@ -964,7 +964,7 @@
   
   <url>
     <loc>https://jena.apache.org/documentation/tdb/quadfilter.html</loc>
-    <lastmod>2021-11-05T16:04:36+00:00</lastmod>
+    <lastmod>2021-11-15T19:40:46+00:00</lastmod>
   </url>
   
   <url>
@@ -994,7 +994,7 @@
   
   <url>
     <loc>https://jena.apache.org/documentation/tdb/tdb-xloader.html</loc>
-    <lastmod>2021-11-12T12:33:33+00:00</lastmod>
+    <lastmod>2021-12-05T23:14:11+00:00</lastmod>
   </url>
   
   <url>
@@ -1144,7 +1144,7 @@
   
   <url>
     <loc>https://jena.apache.org/documentation/io/rdf-output.html</loc>
-    <lastmod>2021-09-26T09:54:06+01:00</lastmod>
+    <lastmod>2021-11-15T19:40:46+00:00</lastmod>
   </url>
   
 </urlset>
\ No newline at end of file