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 2023/04/23 13:33:07 UTC

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

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 72d05f258 Updated site from main (a48ceed01a31499c6132c6b49f0ba0ba23775af0)
72d05f258 is described below

commit 72d05f258f05f091292214d385e8db976835edb2
Author: jenkins <bu...@apache.org>
AuthorDate: Sun Apr 23 13:33:00 2023 +0000

    Updated site from main (a48ceed01a31499c6132c6b49f0ba0ba23775af0)
---
 .../fuseki2/fuseki-configuration.html              |  13 +-
 content/documentation/index.xml                    |  59 ++-
 content/documentation/io/{ => arp}/arp.html        |  14 +-
 content/documentation/io/{ => arp}/arp_sax.html    |  10 +-
 .../documentation/io/{ => arp}/arp_standalone.html |  10 +-
 content/documentation/io/index.html                |   2 +-
 .../rdfxml-input.html}                             | 294 +++++++--------
 .../documentation/io/{arp.html => rdfxml-io.html}  | 117 +++---
 .../io/{arp_sax.html => rdfxml-output.html}        | 409 ++++++++++++---------
 content/documentation/io/rdfxml_howto.html         |   4 +-
 .../documentation/query/javascript-functions.html  |  38 +-
 content/download/index.html                        |  36 +-
 content/index.json                                 |   2 +-
 content/index.xml                                  |  59 ++-
 content/sitemap.xml                                |  33 +-
 15 files changed, 634 insertions(+), 466 deletions(-)

diff --git a/content/documentation/fuseki2/fuseki-configuration.html b/content/documentation/fuseki2/fuseki-configuration.html
index 7c5906d18..883eb3dc3 100644
--- a/content/documentation/fuseki2/fuseki-configuration.html
+++ b/content/documentation/fuseki2/fuseki-configuration.html
@@ -334,12 +334,13 @@ graph of data.</p>
 </code></pre>
 <h3 id="data-services-on-the-dataset">Data services on the dataset</h3>
 <p>The standard SPARQL operations can also be defined on the dataset URL with no secondary service name:</p>
-<p>&lt;#service2&gt; rdf:type fuseki:Service ;
-fuseki:name     &ldquo;/dataset&rdquo; ;
-fuseki:endpoint  [ fuseki:operation fuseki:query ];
-fuseki:endpoint  [ fuseki:operation fuseki:gsp_r ];
-fuseki:dataset  &lt;#dataset&gt; ;
-.</p>
+<pre><code>&lt;#service2&gt; rdf:type fuseki:Service ;
+    fuseki:name     &quot;/dataset&quot; ;
+    fuseki:endpoint  [ fuseki:operation fuseki:query ];
+    fuseki:endpoint  [ fuseki:operation fuseki:gsp_r ];
+    fuseki:dataset  &lt;#dataset&gt; ;
+    .
+</code></pre>
 <p>HTTP requests use the URL of the dataset.</p>
 <ul>
 <li>SPARQL Query: <tt>http://<i>host:port</i>/dataset?query=...</tt></li>
diff --git a/content/documentation/index.xml b/content/documentation/index.xml
index 4793d72d0..8067c2142 100644
--- a/content/documentation/index.xml
+++ b/content/documentation/index.xml
@@ -367,7 +367,7 @@ SPARQL protocol client - remote HTTP requests Reference engine - direct implemen
       <guid>https://jena.apache.org/documentation/query/javascript-functions.html</guid>
       <description>ARQ supports writing custom SPARQL functions in JavaScript. These functions can be used in FILTERs and for calculating values to assign with AS in BIND and SELECT expressions.
 XSD datatypes for strings, numbers and booleans are converted to the native JavaScript datatypes. RDFterms that do not fit easily into JavaScript datatypes are handled with a object class NV.
-Requirements ARQ requires a javascript engine such as GraalVM to be added to the classpath.</description>
+Applications should be aware that there are risks in exposing a script engine with full computational capabilities through SPARQL.</description>
     </item>
     
     <item>
@@ -1107,15 +1107,54 @@ Each of the builders has a series of methods to define the query. Each method re
 SelectBuilder sb = new SelectBuilder() .addVar( &amp;quot;*&amp;quot; ) .</description>
     </item>
     
+    <item>
+      <title>Jena RDF XML</title>
+      <link>https://jena.apache.org/documentation/io/rdfxml-io.html</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://jena.apache.org/documentation/io/rdfxml-io.html</guid>
+      <description>This is a guide to the RDF/XML I/O subsystem of Jena.
+The RDF/XML parser is designed for use with RIOT and to have the same handling of errors, IRI resolution, and treatment of base IRIs as other RIOT readers.
+RDF/XML Input The usual way to access the RDF/XML parser is via RDFDataMgr or RDFParser.
+Model model = RDFDataMgr.loadModel(&amp;quot;data.rdf&amp;quot;); or
+Model model = RDFParser.source(&amp;quot;data.rdf&amp;quot;).toModel(); The original &amp;ldquo;ARP&amp;rdquo; parser is still available bu tmaybe pahsed out.</description>
+    </item>
+    
     <item>
       <title>Jena RDF/XML How-To</title>
       <link>https://jena.apache.org/documentation/io/rdfxml_howto.html</link>
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://jena.apache.org/documentation/io/rdfxml_howto.html</guid>
-      <description>This is a guide to the RDF/XML I/O subsystem of Jena, ARP. The first section gives a quick introduction to the I/O subsystem. The other sections are aimed at users wishing to use advanced features within the RDF/XML I/O subsystem.
+      <description>Legacy Documentation : may not be up-to-date
+This is a guide to the RDF/XML I/O subsystem of Jena, ARP. The first section gives a quick introduction to the I/O subsystem. The other sections are aimed at users wishing to use advanced features within the RDF/XML I/O subsystem.
 Other content related to Jena RDF/XML How-To includes:
-Details of ARP, the Jena RDF/XML parser Quick Introduction The main I/O methods in Jena use InputStreams and OutputStreams. This is import to correctly handle character sets.</description>
+Details of ARP, the Jena RDF/XML parser Quick Introduction The main I/O methods in Jena use InputStreams and OutputStreams.</description>
+    </item>
+    
+    <item>
+      <title>Jena RDF/XML Input How-To</title>
+      <link>https://jena.apache.org/documentation/io/rdfxml-input.html</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://jena.apache.org/documentation/io/rdfxml-input.html</guid>
+      <description>Legacy Documentation : may not be up-to-date
+Original RDF/XML HowTo.
+This is a guide to the RDF/XML legacy input subsystem of Jena, ARP.
+Advanced RDF/XML Input For access to these advanced features, first get an RDFReader object that is an instance of an ARP parser, by using the getReader() method on any Model. It is then configured using the [setProperty](/documentation/javadoc/jena/org/apache/jena/rdfxml/xmlinput0/JenaReader.html#setProperty(java.lang.String, java.lang.Object))(String, Object) method. This changes the properties for parsing RDF/XML. Many of the properties change the RDF parser, some change the XML parse [...]
+    </item>
+    
+    <item>
+      <title>Jena RDF/XML Output How-To</title>
+      <link>https://jena.apache.org/documentation/io/rdfxml-output.html</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://jena.apache.org/documentation/io/rdfxml-output.html</guid>
+      <description>Legacy Documentation : may not be up-to-date
+Original RDF/XML HowTo.
+Advanced RDF/XML Output Two forms for output are provided: pretty printed RDF/XML (&amp;ldquo;RDF/XML-ABBREV&amp;rdquo;) or plain RDF/XML
+While some of the code is shared, these two writers are really very different, resulting in different but equivalent output. &amp;ldquo;RDF/XML-ABBREV&amp;rdquo; is slower, but should produce more readable XML.
+Properties to Control RDF/XML Output Property NameDescriptionValue classLegal Values xmlbase The value to be included for an xml:base attribute on the root element in the file.</description>
     </item>
     
     <item>
@@ -1272,11 +1311,11 @@ Example This example ensures certain prefixes are in the dataset and adds some b
     </item>
     
     <item>
-      <title>RDF/XML Handling in Jena</title>
-      <link>https://jena.apache.org/documentation/io/arp.html</link>
+      <title>RDF/XML Input in Jena</title>
+      <link>https://jena.apache.org/documentation/io/arp/arp.html</link>
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
-      <guid>https://jena.apache.org/documentation/io/arp.html</guid>
+      <guid>https://jena.apache.org/documentation/io/arp/arp.html</guid>
       <description>This section details the Jena RDF/XML parser. ARP is the parsing subsystem in Jena for handling the RDF/XML syntax.
 ARP Features Using ARP without Jena Using other SAX and DOM XML sources ARP Features Java based RDF parser. Compliant with RDF Syntax and RDF Test Cases Recommendations. Compliant with following standards and recommendations: xml:lang
 xml:lang is fully supported, both in RDF/XML and any document embedding RDF/XML. Moreover, the language tags are checked against RFC1766, RFC3066, ISO639-1, ISO3166.</description>
@@ -1358,10 +1397,10 @@ As a standalone server As a service run by the operation system, for example, st
     
     <item>
       <title>SAX Input into Jena and ARP</title>
-      <link>https://jena.apache.org/documentation/io/arp_sax.html</link>
+      <link>https://jena.apache.org/documentation/io/arp/arp_sax.html</link>
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
-      <guid>https://jena.apache.org/documentation/io/arp_sax.html</guid>
+      <guid>https://jena.apache.org/documentation/io/arp/arp_sax.html</guid>
       <description>Normally, both ARP and Jena are used to read files either from the local machine or from the Web. A different use case, addressed here, is when the XML source is available in-memory in some way. In these cases, ARP and Jena can be used as a SAX event handler, turning SAX events into triples, or a DOM tree can be parsed into a Jena Model.
 1. Overview To read an arbitrary SAX source as triples to be added into a Jena model, it is not possible to use a Model.</description>
     </item>
@@ -2041,10 +2080,10 @@ Part of the remit for the 2001 RDF Core working group was to add to RDF support
     
     <item>
       <title>Using ARP Without Jena</title>
-      <link>https://jena.apache.org/documentation/io/arp_standalone.html</link>
+      <link>https://jena.apache.org/documentation/io/arp/arp_standalone.html</link>
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
-      <guid>https://jena.apache.org/documentation/io/arp_standalone.html</guid>
+      <guid>https://jena.apache.org/documentation/io/arp/arp_standalone.html</guid>
       <description>ARP can be used both as a Jena subsystem, or as a standalone RDF/XML parser. This document gives a quick guide to using ARP standalone.
 Overview To load an RDF file:
 Create an ARP instance. Set parse options, particularly error detection control, using getOptions or setOptionsWith. Set its handlers, by calling the getHandlers or setHandlersWith methods, and then. Setting the statement handler. Optionally setting the other handlers. Call a load method Xerces is used for parsing the XML.</description>
diff --git a/content/documentation/io/arp.html b/content/documentation/io/arp/arp.html
similarity index 97%
copy from content/documentation/io/arp.html
copy to content/documentation/io/arp/arp.html
index 331e782e0..6229d03b0 100644
--- a/content/documentation/io/arp.html
+++ b/content/documentation/io/arp/arp.html
@@ -3,7 +3,7 @@
 <head>
     
 
-    <title>Apache Jena - RDF/XML Handling in Jena</title>
+    <title>Apache Jena - RDF/XML Input in Jena</title>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 
@@ -121,7 +121,7 @@
                 
                 
                 
-                <li class="nav-item" id="edit"><a class="nav-link" href="https://github.com/apache/jena-site/edit/main/source/documentation/io/arp.md" title="Edit this page on GitHub"><span class="bi-pencil-square"></span><span class="text-body d-none d-xxl-inline"> Edit this page</span></a></li>
+                <li class="nav-item" id="edit"><a class="nav-link" href="https://github.com/apache/jena-site/edit/main/source/documentation/io/arp/arp.md" title="Edit this page on GitHub"><span class="bi-pencil-square"></span><span class="text-body d-none d-xxl-inline"> Edit this page</span></a></li>
             </ul>
         </div>
     </div>
@@ -163,6 +163,14 @@
         
         
             
+                <li class="breadcrumb-item"><a href='/documentation/io/arp'>ARP</a></li>
+            
+            
+        
+    
+        
+        
+            
                 <li class="breadcrumb-item active">ARP.HTML</li>
             
             
@@ -174,7 +182,7 @@
 
 
             </div>
-            <h1 class="title">RDF/XML Handling in Jena</h1>
+            <h1 class="title">RDF/XML Input in Jena</h1>
             
             
 <main class="d-flex flex-xl-row flex-column">
diff --git a/content/documentation/io/arp_sax.html b/content/documentation/io/arp/arp_sax.html
similarity index 98%
copy from content/documentation/io/arp_sax.html
copy to content/documentation/io/arp/arp_sax.html
index 1a2f743cf..6ed2baa48 100644
--- a/content/documentation/io/arp_sax.html
+++ b/content/documentation/io/arp/arp_sax.html
@@ -121,7 +121,7 @@
                 
                 
                 
-                <li class="nav-item" id="edit"><a class="nav-link" href="https://github.com/apache/jena-site/edit/main/source/documentation/io/arp_sax.md" title="Edit this page on GitHub"><span class="bi-pencil-square"></span><span class="text-body d-none d-xxl-inline"> Edit this page</span></a></li>
+                <li class="nav-item" id="edit"><a class="nav-link" href="https://github.com/apache/jena-site/edit/main/source/documentation/io/arp/arp_sax.md" title="Edit this page on GitHub"><span class="bi-pencil-square"></span><span class="text-body d-none d-xxl-inline"> Edit this page</span></a></li>
             </ul>
         </div>
     </div>
@@ -163,6 +163,14 @@
         
         
             
+                <li class="breadcrumb-item"><a href='/documentation/io/arp'>ARP</a></li>
+            
+            
+        
+    
+        
+        
+            
                 <li class="breadcrumb-item active">ARP SAX</li>
             
             
diff --git a/content/documentation/io/arp_standalone.html b/content/documentation/io/arp/arp_standalone.html
similarity index 98%
rename from content/documentation/io/arp_standalone.html
rename to content/documentation/io/arp/arp_standalone.html
index acb762bcc..c221a071d 100644
--- a/content/documentation/io/arp_standalone.html
+++ b/content/documentation/io/arp/arp_standalone.html
@@ -121,7 +121,7 @@
                 
                 
                 
-                <li class="nav-item" id="edit"><a class="nav-link" href="https://github.com/apache/jena-site/edit/main/source/documentation/io/arp_standalone.md" title="Edit this page on GitHub"><span class="bi-pencil-square"></span><span class="text-body d-none d-xxl-inline"> Edit this page</span></a></li>
+                <li class="nav-item" id="edit"><a class="nav-link" href="https://github.com/apache/jena-site/edit/main/source/documentation/io/arp/arp_standalone.md" title="Edit this page on GitHub"><span class="bi-pencil-square"></span><span class="text-body d-none d-xxl-inline"> Edit this page</span></a></li>
             </ul>
         </div>
     </div>
@@ -163,6 +163,14 @@
         
         
             
+                <li class="breadcrumb-item"><a href='/documentation/io/arp'>ARP</a></li>
+            
+            
+        
+    
+        
+        
+            
                 <li class="breadcrumb-item active">ARP STANDALONE</li>
             
             
diff --git a/content/documentation/io/index.html b/content/documentation/io/index.html
index e424cb9d4..ad0a192ed 100644
--- a/content/documentation/io/index.html
+++ b/content/documentation/io/index.html
@@ -192,7 +192,7 @@
 <li><a href="rdf-input.html">Reading RDF in Jena</a></li>
 <li><a href="rdf-output.html">Writing RDF in Jena</a></li>
 <li><a href="streaming-io.html">Working with RDF Streams</a></li>
-<li><a href="rdfxml_howto.html">Additional details on working with RDF/XML</a></li>
+<li><a href="rdfxml-io.html">Additional details on working with RDF/XML</a></li>
 </ul>
 <h2 id="formats">Formats</h2>
 <p>The following RDF formats are supported by Jena. In addition, other syntaxes
diff --git a/content/documentation/query/javascript-functions.html b/content/documentation/io/rdfxml-input.html
similarity index 56%
copy from content/documentation/query/javascript-functions.html
copy to content/documentation/io/rdfxml-input.html
index c6f73f7a0..500ddeb8a 100644
--- a/content/documentation/query/javascript-functions.html
+++ b/content/documentation/io/rdfxml-input.html
@@ -3,7 +3,7 @@
 <head>
     
 
-    <title>Apache Jena - ARQ - JavaScript SPARQL Functions</title>
+    <title>Apache Jena - Jena RDF/XML Input How-To</title>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 
@@ -121,7 +121,7 @@
                 
                 
                 
-                <li class="nav-item" id="edit"><a class="nav-link" href="https://github.com/apache/jena-site/edit/main/source/documentation/query/javascript-functions.md" title="Edit this page on GitHub"><span class="bi-pencil-square"></span><span class="text-body d-none d-xxl-inline"> Edit this page</span></a></li>
+                <li class="nav-item" id="edit"><a class="nav-link" href="https://github.com/apache/jena-site/edit/main/source/documentation/io/rdfxml-input.md" title="Edit this page on GitHub"><span class="bi-pencil-square"></span><span class="text-body d-none d-xxl-inline"> Edit this page</span></a></li>
             </ul>
         </div>
     </div>
@@ -155,7 +155,7 @@
         
         
             
-                <li class="breadcrumb-item"><a href='/documentation/query'>QUERY</a></li>
+                <li class="breadcrumb-item"><a href='/documentation/io'>IO</a></li>
             
             
         
@@ -163,7 +163,7 @@
         
         
             
-                <li class="breadcrumb-item active">JAVASCRIPT FUNCTIONS</li>
+                <li class="breadcrumb-item active">RDFXML INPUT</li>
             
             
         
@@ -174,7 +174,7 @@
 
 
             </div>
-            <h1 class="title">ARQ - JavaScript SPARQL Functions</h1>
+            <h1 class="title">Jena RDF/XML Input How-To</h1>
             
             
 <main class="d-flex flex-xl-row flex-column">
@@ -183,156 +183,163 @@
     <h2 class="h6 sticky-top m-0 p-2 bg-body-tertiary">On this page</h2>
     <nav id="TableOfContents">
   <ul>
-    <li><a href="#requirements">Requirements</a></li>
-    <li><a href="#loading-javascript-functions">Loading JavaScript functions</a></li>
-    <li><a href="#using-javascript-functions">Using JavaScript functions</a>
+    <li><a href="#advanced-rdfxml-input">Advanced RDF/XML Input</a>
       <ul>
-        <li><a href="#arguments-and-function-results">Arguments and Function Results</a></li>
+        <li><a href="#arp-properties">ARP properties</a></li>
       </ul>
     </li>
-    <li><a href="#example">Example</a></li>
-    <li><a href="#use-with-fuseki">Use with Fuseki</a></li>
+    <li><a href="#further-details">Further details</a></li>
   </ul>
 </nav>
   </aside>
   <article class="flex-column me-lg-4">
-    <p>ARQ supports writing
-<a href="https://www.w3.org/TR/sparql11-query/#extensionFunctions">custom SPARQL functions</a>
-in JavaScript. These functions can be used in FILTERs and for calculating
-values to assign with AS in BIND and SELECT expressions.</p>
-<p>XSD datatypes for strings, numbers and booleans are converted to the
-native JavaScript datatypes. RDFterms that do not fit easily into
-JavaScript datatypes are handled with a object class <code>NV</code>.</p>
-<h2 id="requirements">Requirements</h2>
-<p>ARQ requires a javascript engine such as <a href="https://www.graalvm.org/">GraalVM</a> to
-be added to the classpath.</p>
-<pre tabindex="0"><code>    &lt;properties&gt;
-      &lt;ver.graalvm&gt;....&lt;/ver.graalvm&gt;
-      ...
-</code></pre><pre tabindex="0"><code>    &lt;dependency&gt;
-      &lt;groupId&gt;org.graalvm.js&lt;/groupId&gt;
-      &lt;artifactId&gt;js&lt;/artifactId&gt;
-      &lt;version&gt;${ver.graalvm}&lt;/version&gt;
-    &lt;/dependency&gt;
+    <p><em>Legacy Documentation : may not be up-to-date</em></p>
+<p>Original <a href="rdfxml_howto.html">RDF/XML HowTo</a>.</p>
+<hr>
+<p>This is a guide to the RDF/XML legacy input subsystem of Jena, ARP.</p>
+<h2 id="advanced-rdfxml-input">Advanced RDF/XML Input</h2>
+<p>For access to these advanced features, first get an <code>RDFReader</code>
+object that is an instance of an ARP parser, by using the
+<a href="/documentation/javadoc/jena/org/apache/jena/rdf/model/RDFReaderF.html#getReader()"><code>getReader</code></a><code>()</code>
+method on any <code>Model</code>. It is then configured using the
+[<code>setProperty</code>](/documentation/javadoc/jena/org/apache/jena/rdfxml/xmlinput0/JenaReader.html#setProperty(java.lang.String, java.lang.Object))<code>(String, Object)</code>
+method. This changes the properties for parsing RDF/XML. Many of
+the properties change the RDF parser, some change the XML parser.
+(The Jena RDF/XML parser, ARP, implements the
+<a href="http://www.w3.org/TR/rdf-syntax-grammar/#section-Infoset-Grammar">RDF grammar</a>
+over a <a href="http://xml.apache.org/xerces2-j/index.html">Xerces2-J</a> XML
+parser). However, changing the features and properties of the XML
+parser is not likely to be useful, but was easy to implement.</p>
+<p>[<code>setProperty</code>](/documentation/javadoc/jena/org/apache/jena/rdfxml/xmlinput0/JenaReader.html#setProperty(java.lang.String, java.lang.Object))<code>(String, Object)</code>
+can be used to set and get:</p>
+<ul>
+<li>ARP properties
+<br /> These allow fine grain control over the extensive error
+reporting capabilities of ARP. And are detailed directly below.</li>
+<li>SAX2 features
+<br />See
+<a href="http://xml.apache.org/xerces2-j/features.html">Xerces features</a>.
+Value should be given as a String <code>&quot;true&quot;</code> or <code>&quot;false&quot;</code> or a <code>Boolean</code>.</li>
+<li>SAX2 properties
+<br /> See <a href="http://xml.apache.org/xerces2-j/properties.html">Xerces properties</a>.</li>
+<li>Xerces features
+<br /> See <a href="http://xml.apache.org/xerces2-j/features.html">Xerces features</a>.
+Value should be given as a String <code>&quot;true&quot;</code> or <code>&quot;false&quot;</code> or a <code>Boolean</code>.</li>
+<li>Xerces properties
+<br /> See <a href="http://xml.apache.org/xerces2-j/properties.html">Xerces properties</a>.</li>
+</ul>
+<h3 id="arp-properties">ARP properties</h3>
+<p>An ARP property is referred to either by its property name, (see
+below) or by an absolute URL of the form
+<code>http://jena.hpl.hp.com/arp/properties/&lt;PropertyName&gt;</code>. The value
+should be a String, an Integer or a Boolean depending on the
+property.</p>
+<p>ARP property names and string values are case insensitive.</p>
+<table>
+<thead>
+<tr>
+<th>Property Name</th>
+<th>Description</th>
+<th>Value class</th>
+<th>Legal Values</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>iri-rules</code></td>
+<td>Set the engine for checking and resolving. <code>&quot;strict&quot;</code> sets the IRI engine with rules for valid IRIs, XLink and RDF; it does not permit spaces in IRIs. <code>&quot;iri&quot;</code>sets the IRI engine to IRI (<a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a>, <a href="http://www.ietf.org/rfc/rfc3987.txt">RFC 3987</a>) <code>.</code> The default is <code>&quot;lax&quot;</code>(for backwards compatibility)<code>,</code> the rules for RDF URI references only, [...]
+<td>String</td>
+<td><code>lax</code><br /><code>strict</code><br /><code>iri</code></td>
+</tr>
+<tr>
+<td><code>error-mode</code></td>
+<td><a href="/documentation/javadoc/jena/org/apache/jena/rdfxml/xmlinput0/ARPOptions.html#setDefaultErrorMode()"><code>ARPOptions.setDefaultErrorMode()</code></a> <br /><a href="/documentation/javadoc/jena/org/apache/jena/rdfxml/xmlinput0/ARPOptions.html#setLaxErrorMode()"><code>ARPOptions.setLaxErrorMode()</code></a><br /><a href="/documentation/javadoc/jena/org/apache/jena/rdfxml0/xmlinput/ARPOptions.html#setStrictErrorMode()"><code>ARPOptions.setStrictErrorMode()</code></a><br /><a hr [...]
+<td><code>String</code></td>
+<td><code>default</code><br /><code>lax</code><br /><code>strict</code><br /><code>strict-ignore</code><br /><code>strict-warning</code><br /><code>strict-error</code><br /><code>strict-fatal</code></td>
+</tr>
+<tr>
+<td><code>embedding</code></td>
+<td><a href="/documentation/javadoc/jena/org/apache/jena/rdfxml0/xmlinput/ARPOptions.html#setEmbedding(boolean)"><code>ARPOptions.setEmbedding(boolean)</code></a> <br />This sets ARP to look for RDF embedded within an enclosing XML document.</td>
+<td><code>String</code> or <code>Boolean</code></td>
+<td><code>true</code><br /><code>false</code></td>
+</tr>
+<tr>
+<td><code>ERR_&lt;XXX&gt;</code> <br /><code>WARN_&lt;XXX&gt;</code><br /><code>IGN_&lt;XXX&gt;</code></td>
+<td>See <a href="/documentation/javadoc/jena/org/apache/jena/rdfxml0/xmlinput/ARPErrorNumbers.html"><code>ARPErrorNumbers</code></a> for a complete list of the error conditions detected. Setting one of these properties is equivalent to the method <a href="/documentation/javadoc/jena/org/apache/jena/rdfxml0/xmlinput/ARPOptions.html#setErrorMode(int,%20int)"><code>ARPOptions.setErrorMode(int, int)</code></a>. Thus fine-grained control over the behaviour in response to specific error condit [...]
+<td><code>String</code> or <code>Integer</code></td>
+<td><a href="/documentation/javadoc/jena/org/apache/jena/rdfxml0/xmlinput/ARPErrorNumbers.html#EM_IGNORE"><code>EM_IGNORE</code></a><br /><a href="/documentation/javadoc/jena/org/apache/jena/rdfxml0/xmlinput/ARPErrorNumbers.html#EM_WARNING"><code>EM_WARNING</code></a><br /><a href="/documentation/javadoc/jena/org/apache/jena/rdfxml0/xmlinput/ARPErrorNumbers.html#EM_ERROR"><code>EM_ERROR</code></a><br /><a href="/documentation/javadoc/jena/org/apache/jena/rdfxml0/xmlinput/ARPErrorNumbers. [...]
+</tr>
+</tbody>
+</table>
+<p>To set ARP properties, create a map of values to be set and put this in parser context:</p>
+<pre tabindex="0"><code>    Map&lt;String, Object&gt; properties = new HashMap&lt;&gt;();
+    // See class ARPErrorNumbers for the possible ARP properties.
+    properties.put(&#34;WARN_BAD_NAME&#34;, &#34;EM_IGNORE&#34;);
 
-    &lt;dependency&gt;
-      &lt;groupId&gt;org.graalvm.js&lt;/groupId&gt;
-      &lt;artifactId&gt;js-scriptengine&lt;/artifactId&gt;
-      &lt;version&gt;${ver.graalvm}&lt;/version&gt;
-    &lt;/dependency&gt;
-</code></pre><h2 id="loading-javascript-functions">Loading JavaScript functions</h2>
-<p>JavaScript is loaded from an external file using the context setting
-&ldquo;<a href="http://jena.apache.org/ARQ#js-library%22">http://jena.apache.org/ARQ#js-library&quot;</a>. This can be written as
-<code>arq:js-library</code> for commands and Fuseki configuration files.</p>
-<p>Example:</p>
-<pre><code>sparql --set arq:js-library=SomeFile.js --data ... --query ...
-</code></pre>
-<p>will execute on the data with the JavaScript functions from file
-&ldquo;SomeFile.js&rdquo; available.</p>
-<p>JavScript functions can also be set from a string directly from within Java using constant
-<code>ARQ.symJavaScriptFunctions</code> (&ldquo;<a href="http://jena.apache.org/ARQ#js-functions%22)">http://jena.apache.org/ARQ#js-functions&quot;)</a>.</p>
-<h2 id="using-javascript-functions">Using JavaScript functions</h2>
-<p>SPARQL functions implemented in JavaScript are automatically called when a
-URI starting &ldquo;<a href="http://jena.apache.org/ARQ/jsFunction#%22">http://jena.apache.org/ARQ/jsFunction#&quot;</a> used.</p>
-<p>This can conveniently be abbreviated by:</p>
-<pre><code>PREFIX js: &lt;http://jena.apache.org/ARQ/jsFunction#&gt;
-</code></pre>
-<h3 id="arguments-and-function-results">Arguments and Function Results</h3>
-<p><code>xsd:string</code> (a string with no language tag), any XSD numbers (integer,
-decimal, float, double and all the derived types) and <code>xsd:boolean</code> are
-converted to JavaScript string, number and boolean respectively.</p>
-<p>SPARQL functions must return a value. When a function returns a value,
-it can be one of these JavaScript native datatypes, in which case the
-reverse conversion is applied back to XSD datatypes.  For numbers, the
-conversion is back to <code>xsd:integer</code> (if it has no fractional part) or
-<code>xsd:double</code>.</p>
-<p>The JavaScript function can also create <code>NodeValue</code> (or <code>NV</code>) objects
-for other datatypes by calling Java from within the JavaScript script
-engine of the Java runtime.</p>
-<p>URIs are passed as <code>NV</code> object and are available in JavaScript as a string.</p>
-<p>The class <code>NV</code> is used for all other RDF terms.</p>
-<p>Returning JavaScript <code>null</code> is the error indicator and a SPARQL
-expression error (<code>ExprEvalException</code>) is raised, like any other
-expression error in SPARQL. That, in turn, will cause the whole
-expression the function is part of to evaluate to an error (unless
-a special form like <code>COALESCE</code> is used). In a <code>FILTER</code> that typically
-makes the filter evaluate to &ldquo;false&rdquo;.</p>
-<h2 id="example">Example</h2>
-<p>Suppose &ldquo;functions.js&rdquo; contains code to camel case words in a string.
-For example, &ldquo;some words to process &quot; becomes &ldquo;someWordsToProcess&rdquo;.</p>
-<pre><code>// CamelCase a string
-// Words to be combined are separated by a space in the string.
-
-function toCamelCase(str) {
-    return str.split(' ')
-	.map(cc)
-	.join('');
-}
+    // Build and run a parser
+    Model model = RDFParser.create()
+        .lang(Lang.RDFXML)
+        .source(...)
+        .set(SysRIOT.sysRdfReaderProperties, properties)
+        .base(&#34;http://base/&#34;)
+        .toModel();
+    System.out.println(&#34;== Parsed data output in Turtle&#34;);
+    RDFDataMgr.write(System.out,  model, Lang.TURTLE);
+</code></pre><p>See example
+<a href="https://github.com/apache/jena/blob/main/jena-examples/src/main/java/arq/examples/riot/ExRIOT_RDFXML_ReaderProperties.java">ExRIOT_RDFXML_ReaderProperties.java</a>.</p>
+<p><b>Legacy Example</b></p>
+<p>As an example, if you are working in an environment with legacy RDF
+data that uses unqualified RDF attributes such as &ldquo;about&rdquo; instead
+of &ldquo;rdf:about&rdquo;, then the following code is appropriate:</p>
+<pre><code>Model m = ModelFactory.createDefaultModel();
+RDFReader arp = m.getReader();
+m = null; // m is no longer needed.
+// initialize arp
+// Do not warn on use of unqualified RDF attributes.
+arp.setProperty(&quot;WARN_UNQUALIFIED_RDF_ATTRIBUTE&quot;,&quot;EM_IGNORE&quot;);
 
-function ucFirst(word)    {
-    return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
-}
+…
 
-function lcFirst(word)    {
-    return word.toLowerCase();
-}
-
-function cc(word,index)   {
-    return (index == 0) ? lcFirst(word) : ucFirst(word);
-}
+InputStream in = new FileInputStream(fname);
+arp.read(m,in,url);
+in.close();
 </code></pre>
-<p>and the query <code>Q.rq</code></p>
-<pre><code>PREFIX js: &lt;http://jena.apache.org/ARQ/jsFunction#&gt;
-
-SELECT ?input (js:toCamelCase(?input) AS ?X)
-{
-    VALUES ?input { &quot;some woRDs to PROCESS&quot; }
-}
+<p>As a second example, suppose you wish to work in strict mode, but
+allow <code>&quot;daml:collection&quot;</code>, the following works:</p>
+<pre><code> …
+ arp.setProperty(&quot;error-mode&quot;, &quot;strict&quot; );
+ arp.setProperty(&quot;IGN_DAML_COLLECTION&quot;,&quot;EM_IGNORE&quot;);
+ …
 </code></pre>
-<p>which can be executed with:</p>
-<pre><code>sparql --set arq:js-library=functions.js --query Q.rq
+<p>The other way round does not work.</p>
+<pre><code> …
+ arp.setProperty(&quot;IGN_DAML_COLLECTION&quot;,&quot;EM_IGNORE&quot;);
+ arp.setProperty(&quot;error-mode&quot;, &quot;strict&quot; );
+ …
 </code></pre>
-<p>and it results in:</p>
-<pre><code>--------------------------------------------------
-| input                   | X                    |
-==================================================
-| &quot;some woRDs to PROCESS&quot; | &quot;someWordsToProcess&quot; |
---------------------------------------------------
-</code></pre>
-<h2 id="use-with-fuseki">Use with Fuseki</h2>
-<p>The context setting can be provided on the command line starting the
-server, for example:</p>
-<pre><code>fuseki --set arq:js-library=functions.js --mem /ds
-</code></pre>
-<p>or it can be specified in the server configuration file <code>config.ttl</code>:</p>
-<pre><code>PREFIX :        &lt;#&gt;
-PREFIX fuseki:  &lt;http://jena.apache.org/fuseki#&gt;
-PREFIX rdf:     &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt;
-PREFIX rdfs:    &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
-PREFIX ja:      &lt;http://jena.hpl.hp.com/2005/11/Assembler#&gt;
-
-[] rdf:type fuseki:Server ;
-    # Set the server-wide context
-    ja:context [
-         ja:cxtName &quot;arq:js-library&quot; ;
-         ja:cxtValue &quot;/filepath/functions.js&quot;
-    ] ;
-.
-
-&lt;#service&gt; rdf:type fuseki:Service;
-    rdfs:label                   &quot;Dataset&quot;;
-    fuseki:name                  &quot;ds&quot;;
-    fuseki:serviceQuery          &quot;sparql&quot;;
-    fuseki:dataset &lt;#dataset&gt; ;
-    .
+<p>This is because in strict mode
+<a href="/documentation/javadoc/jena/org/apache/jena/rdfxml0/xmlinput/ARPErrorNumbers.html#IGN_DAML_COLLECTION"><code>IGN_DAML_COLLECTION</code></a>
+is treated as an error, and so the second call to <code>setProperty</code>
+overwrites the effect of the first.</p>
+<p>The IRI rules and resolver can be set on a per-reader basis:</p>
+<pre><code>InputStream in = ... ;
+String baseURI = ... ;
+Model model = ModelFactory.createDefaultModel();
+RDFReader r = model.getReader(&quot;RDF/XML&quot;);
+r.setProperty(&quot;iri-rules&quot;, &quot;strict&quot;) ;
+r.setProperty(&quot;error-mode&quot;, &quot;strict&quot;) ; // Warning will be errors.
 
-&lt;#dataset&gt; rdf:type ja:DatasetTxnMem;
-    ja:data &lt;file:D.trig&gt;;
-.
+// Alternative to the above &quot;error-mode&quot;: set specific warning to be an error.
+//r.setProperty( &quot;WARN_MALFORMED_URI&quot;, ARPErrorNumbers.EM_ERROR) ;
+r.read(model, in, baseURI) ;
+in.close();
 </code></pre>
-<p>and used as:</p>
-<pre><code>fuseki --conf config.ttl
+<p>The global default IRI engine can be set with:</p>
+<pre><code>ARPOptions.setIRIFactoryGlobal(IRIFactory.iriImplementation()) ;
 </code></pre>
+<p>or other IRI rule engine from <code>IRIFactory</code>.</p>
+<h2 id="further-details">Further details</h2>
+<p><a href="arp/arp.html">Details of ARP, the Jena RDF/XML parser</a></p>
 
   </article>
   
@@ -340,15 +347,12 @@ PREFIX ja:      &lt;http://jena.hpl.hp.com/2005/11/Assembler#&gt;
     <h2 class="h6 sticky-top m-0 p-2 bg-body-tertiary">On this page</h2>
     <nav id="TableOfContents">
   <ul>
-    <li><a href="#requirements">Requirements</a></li>
-    <li><a href="#loading-javascript-functions">Loading JavaScript functions</a></li>
-    <li><a href="#using-javascript-functions">Using JavaScript functions</a>
+    <li><a href="#advanced-rdfxml-input">Advanced RDF/XML Input</a>
       <ul>
-        <li><a href="#arguments-and-function-results">Arguments and Function Results</a></li>
+        <li><a href="#arp-properties">ARP properties</a></li>
       </ul>
     </li>
-    <li><a href="#example">Example</a></li>
-    <li><a href="#use-with-fuseki">Use with Fuseki</a></li>
+    <li><a href="#further-details">Further details</a></li>
   </ul>
 </nav>
   </aside>
diff --git a/content/documentation/io/arp.html b/content/documentation/io/rdfxml-io.html
similarity index 80%
rename from content/documentation/io/arp.html
rename to content/documentation/io/rdfxml-io.html
index 331e782e0..ed9b6a88a 100644
--- a/content/documentation/io/arp.html
+++ b/content/documentation/io/rdfxml-io.html
@@ -3,7 +3,7 @@
 <head>
     
 
-    <title>Apache Jena - RDF/XML Handling in Jena</title>
+    <title>Apache Jena - Jena RDF XML</title>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 
@@ -121,7 +121,7 @@
                 
                 
                 
-                <li class="nav-item" id="edit"><a class="nav-link" href="https://github.com/apache/jena-site/edit/main/source/documentation/io/arp.md" title="Edit this page on GitHub"><span class="bi-pencil-square"></span><span class="text-body d-none d-xxl-inline"> Edit this page</span></a></li>
+                <li class="nav-item" id="edit"><a class="nav-link" href="https://github.com/apache/jena-site/edit/main/source/documentation/io/rdfxml-io.md" title="Edit this page on GitHub"><span class="bi-pencil-square"></span><span class="text-body d-none d-xxl-inline"> Edit this page</span></a></li>
             </ul>
         </div>
     </div>
@@ -163,7 +163,7 @@
         
         
             
-                <li class="breadcrumb-item active">ARP.HTML</li>
+                <li class="breadcrumb-item active">RDFXML IO</li>
             
             
         
@@ -174,7 +174,7 @@
 
 
             </div>
-            <h1 class="title">RDF/XML Handling in Jena</h1>
+            <h1 class="title">Jena RDF XML</h1>
             
             
 <main class="d-flex flex-xl-row flex-column">
@@ -183,67 +183,65 @@
     <h2 class="h6 sticky-top m-0 p-2 bg-body-tertiary">On this page</h2>
     <nav id="TableOfContents">
   <ul>
-    <li><a href="#arp-features">ARP Features</a></li>
+    <li><a href="#rdfxml-input">RDF/XML Input</a></li>
+    <li><a href="#rdfxml-output">RDF/XML Output</a></li>
   </ul>
 </nav>
   </aside>
   <article class="flex-column me-lg-4">
-    <p>This section details the Jena RDF/XML parser.
-ARP is the parsing subsystem in Jena for handling the RDF/XML syntax.</p>
+    <p>This is a guide to the RDF/XML I/O subsystem of Jena.</p>
+<p>The RDF/XML parser is designed for use with RIOT and to have the same handling
+of errors, IRI resolution, and treatment of base IRIs as other RIOT readers.</p>
+<h2 id="rdfxml-input">RDF/XML Input</h2>
+<p>The usual way to access the RDF/XML parser is via <code>RDFDataMgr</code> or <code>RDFParser</code>.</p>
+<pre><code>Model model = RDFDataMgr.loadModel(&quot;data.rdf&quot;);
+</code></pre>
+<p>or</p>
+<pre><code>Model model = RDFParser.source(&quot;data.rdf&quot;).toModel();
+</code></pre>
+<p>The original &ldquo;ARP&rdquo; parser is still available bu tmaybe pahsed out.  To access
+the legacy parser, use the context symbol <code>RIOT.symRDFXML0</code> to <code>true</code> or
+`&ldquo;true&rdquo;.</p>
+<pre><code>Model model = RDFParser.source(&quot;&quot;data.rdf&quot;)
+                       .set(RIOT.symRDFXML0, true)
+                       .parse(dest);
+</code></pre>
+<p>This applies to the command line:</p>
+<pre><code>riot --set rdfxml:rdfxml0=true data.rdf
+</code></pre>
+<p>This can be set globally in the JVM:</p>
+<pre><code>RIOT.getContext().set(RIOT.symRDFXML0, &quot;true&quot;);
+</code></pre>
+<p>Details of <a href="rdfxml-input.html">legacy RDF/XML input</a>.</p>
+<p>Details of the original Jena RDF/XML parser, <a href="arp/arp.html">ARP</a>.</p>
+<h2 id="rdfxml-output">RDF/XML Output</h2>
+<p>Two forms for output are provided:</p>
 <ul>
-<li><a href="#arp-features">ARP Features</a></li>
-<li><a href="arp_standalone.html">Using ARP without Jena</a></li>
-<li><a href="arp_sax.html">Using other SAX and DOM XML sources</a></li>
-</ul>
-<h2 id="arp-features">ARP Features</h2>
-<ul>
-<li>Java based RDF parser.</li>
-<li>Compliant with
-<a href="http://www.w3.org/TR/rdf-syntax-grammar">RDF Syntax</a> and
-<a href="http://www.w3.org/TR/rdf-testcases">RDF Test Cases</a>
-Recommendations.</li>
-<li>Compliant with following standards and recommendations:
-<ul>
-<li><strong>xml:lang</strong><br />
-<a href="http://www.w3.org/TR/REC-xml#sec-lang-tag">xml:lang</a> is fully
-supported, both in RDF/XML and any document embedding RDF/XML.
-Moreover, the language tags are checked against
-<a href="http://www.isi.edu/in-notes/rfc1766.txt">RFC1766</a>,
-<a href="http://www.isi.edu/in-notes/rfc3066.txt">RFC3066</a>, ISO639-1,
-<a href="http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/db_en.html">ISO3166</a>.</li>
-<li><strong>xml:base</strong><br />
-<a href="http://www.w3.org/TR/xmlbase/">xml:base</a> is fully supported,
-both in RDF/XML and any document embedding RDF/XML.</li>
-<li><strong>URI</strong><br />
-All URI references are checked against
-<a href="http://www.isi.edu/in-notes/rfc2396.txt">RFC2396</a>. The treatment
-of international URIs implements the concept of
-<a href="http://www.w3.org/TR/rdf-concepts/#dfn-URI-reference">RDF URI Reference</a>.</li>
-<li><strong>XML Names</strong><br />
-All rdf:ID&rsquo;s are checked against the
-<a href="http://www.w3.org/TR/REC-xml#dt-name">XML Names</a> specification.</li>
-<li><strong>Unicode Normal Form C</strong><br />
-String literals are checked for conformance with an early
-uniform normalization processing model.</li>
-<li><strong>XML Literals</strong><br />
-<code>rdf:parseType='Literal'</code> is processed respecting namespaces,
-processing instructions and XML comments. This follows the XML
-exclusive canonicalizations recommendation with comments.</li>
-<li><strong>Relative Namespace URI references</strong><br />
-Namespace URI references are checked in light of the
-<a href="http://www.w3.org/2000/09/xppa">W3C XML Plenary decision</a>.</li>
-</ul>
+<li>
+<p>The default output <code>Lang.RDFXML</code>, historically called &ldquo;RDF/XML-ABBREV&rdquo;, which
+also has a format name <code>RDFFormat.RDFXML_PRETTY</code>. It produces readable
+output. It requires working memory to analyse the data to be written and it is
+not streaming.</p>
+</li>
+<li>
+<p>For efficient, streaming output, the basic RDF/XML <code>RDFFormat.RDFXML_PLAIN</code>
+works for data of any size. It outputs each subject together with all property
+values without using the full features of RDF/XML.</p>
 </li>
-<li>Command-line RDF/XML error checking.</li>
-<li>Can be used independently of Jena, with customizable
-<code>StatementHandler</code>.</li>
-<li>Highly configurable error processing.</li>
-<li>Xerces based XML parsing.</li>
-<li>Processes both standalone and embedded RDF/XML.</li>
-<li>Streaming parser, suitable for large files.</li>
-<li>Supports SAX and DOM, for integration with non-file XML
-sources.</li>
 </ul>
+<p>For &ldquo;RDF/XML-ABBREV&rdquo;:</p>
+<pre><code>RDFDataMgr.write(System.out, model, Lang.RDFXML);
+</code></pre>
+<p>or</p>
+<pre><code>RDFWriter.source(model).lang(Lang.RDFXML).output(System.out);
+</code></pre>
+<p>and for plain RDF/XML:</p>
+<pre><code>RDFDataMgr.write(System.out, model, RDFFormat.RDFXML_PLAIN);
+</code></pre>
+<p>or</p>
+<pre><code>RDFWriter.source(model).format(RDFFormat.RDFXML_PLAIN).output(System.out);
+</code></pre>
+<p>Details of <a href="rdfxml-output.html">legacy RDF/XML output</a>.</p>
 
   </article>
   
@@ -251,7 +249,8 @@ sources.</li>
     <h2 class="h6 sticky-top m-0 p-2 bg-body-tertiary">On this page</h2>
     <nav id="TableOfContents">
   <ul>
-    <li><a href="#arp-features">ARP Features</a></li>
+    <li><a href="#rdfxml-input">RDF/XML Input</a></li>
+    <li><a href="#rdfxml-output">RDF/XML Output</a></li>
   </ul>
 </nav>
   </aside>
diff --git a/content/documentation/io/arp_sax.html b/content/documentation/io/rdfxml-output.html
similarity index 53%
rename from content/documentation/io/arp_sax.html
rename to content/documentation/io/rdfxml-output.html
index 1a2f743cf..8a2456cd5 100644
--- a/content/documentation/io/arp_sax.html
+++ b/content/documentation/io/rdfxml-output.html
@@ -3,7 +3,7 @@
 <head>
     
 
-    <title>Apache Jena - SAX Input into Jena and ARP</title>
+    <title>Apache Jena - Jena RDF/XML Output How-To</title>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 
@@ -121,7 +121,7 @@
                 
                 
                 
-                <li class="nav-item" id="edit"><a class="nav-link" href="https://github.com/apache/jena-site/edit/main/source/documentation/io/arp_sax.md" title="Edit this page on GitHub"><span class="bi-pencil-square"></span><span class="text-body d-none d-xxl-inline"> Edit this page</span></a></li>
+                <li class="nav-item" id="edit"><a class="nav-link" href="https://github.com/apache/jena-site/edit/main/source/documentation/io/rdfxml-output.md" title="Edit this page on GitHub"><span class="bi-pencil-square"></span><span class="text-body d-none d-xxl-inline"> Edit this page</span></a></li>
             </ul>
         </div>
     </div>
@@ -163,7 +163,7 @@
         
         
             
-                <li class="breadcrumb-item active">ARP SAX</li>
+                <li class="breadcrumb-item active">RDFXML OUTPUT</li>
             
             
         
@@ -174,7 +174,7 @@
 
 
             </div>
-            <h1 class="title">SAX Input into Jena and ARP</h1>
+            <h1 class="title">Jena RDF/XML Output How-To</h1>
             
             
 <main class="d-flex flex-xl-row flex-column">
@@ -183,186 +183,233 @@
     <h2 class="h6 sticky-top m-0 p-2 bg-body-tertiary">On this page</h2>
     <nav id="TableOfContents">
   <ul>
-    <li><a href="#1-overview">1. Overview</a></li>
-    <li><a href="#sample-code">Sample Code</a></li>
-    <li><a href="#initializing-sax-event-source">Initializing SAX event source</a></li>
-    <li><a href="#error-handler">Error Handler</a></li>
-    <li><a href="#options">Options</a></li>
-    <li><a href="#xml-lang-and-namespaces">XML Lang and Namespaces</a></li>
-    <li><a href="#using-your-own-triple-handler">Using your own triple handler</a></li>
-    <li><a href="#using-a-dom-as-input">Using a DOM as Input</a>
+    <li><a href="#advanced-rdfxml-output">Advanced RDF/XML Output</a>
       <ul>
-        <li><a href="#using-a-dom-as-input-to-jena">Using a DOM as Input to Jena</a></li>
-        <li><a href="#using-a-dom-as-input-to-arp">Using a DOM as Input to ARP</a></li>
+        <li><a href="#properties-to-control-rdfxml-output">Properties to Control RDF/XML Output</a></li>
       </ul>
     </li>
+    <li><a href="#conformance">Conformance</a></li>
+    <li><a href="#faster-rdfxml-io">Faster RDF/XML I/O</a></li>
   </ul>
 </nav>
   </aside>
   <article class="flex-column me-lg-4">
-    <p>Normally, both ARP and Jena are used to read files either from the
-local machine or from the Web. A different use case, addressed
-here, is when the XML source is available in-memory in some way. In
-these cases, ARP and Jena can be used as a SAX event handler,
-turning SAX events into triples, or a DOM tree can be parsed into a
-Jena Model.</p>
-<h2 id="1-overview">1. Overview</h2>
-<p>To read an arbitrary SAX source as triples to be added into a Jena
-model, it is not possible to use a
-<code>Model.</code><a href="/documentation/javadoc/jena/org/apache/jena/rdf/model/Model.html#read(java.io.InputStream,%20java.lang.String)"><code>read</code></a>()
-operation. Instead, you construct a SAX event handler of class
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/SAX2Model.html"><code>SAX2Model</code></a>,
-using the
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/SAX2Model.html#create(java.lang.String,%20org.apache.jena.rdf.model.Model)"><code>create</code></a>
-method, install these as the handler on your SAX event source, and
-then stream the SAX events. It is possible to have fine-grained
-control over the SAX events, for instance, by inserting or deleting
-events, before passing them to the
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/SAX2Model.html"><code>SAX2Model</code></a>
-handler.</p>
-<h2 id="sample-code">Sample Code</h2>
-<p>This code uses the Xerces parser as a SAX event stream, and adds
-the triple to a
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/model/Model.html"><code>Model</code></a> using
-default options.</p>
-<pre><code>// Use your own SAX source.
-XMLReader saxParser = new SAXParser();
-
-// set up SAX input
-InputStream in = new FileInputStream(&quot;kb.rdf&quot;);
-InputSource ins = new InputSource(in);
-ins.setSystemId(base);
-
-Model m = ModelFactory.createDefaultModel();
-String base = &quot;http://example.org/&quot;;
-
-// create handler, linked to Model
-SAX2Model handler = SAX2Model.create(base, m);
-
-// install handler on SAX event stream
-SAX2RDF.installHandlers(saxParser, handler);
+    <p><em>Legacy Documentation : may not be up-to-date</em></p>
+<p>Original <a href="rdfxml_howto.html">RDF/XML HowTo</a>.</p>
+<hr>
+<h2 id="advanced-rdfxml-output">Advanced RDF/XML Output</h2>
+<p>Two forms for output are provided: pretty printed RDF/XML (&ldquo;RDF/XML-ABBREV&rdquo;) or plain RDF/XML</p>
+<p>While some of the code is shared, these
+two writers are really very different, resulting in different but
+equivalent output. &ldquo;RDF/XML-ABBREV&rdquo; is slower, but should produce
+more readable XML.</p>
+<h3 id="properties-to-control-rdfxml-output">Properties to Control RDF/XML Output</h3>
+<table>
+<tr><th>Property Name</th><th>Description</th><th>Value class</th><th>Legal Values</th></tr>
+<tr>
+<td><tt>xmlbase</tt></td>
+<td>The value to be included for an xml:base attribute on the root element in the file.</td>
+<td><tt>String</tt></td>
+<td>A URI string, or null (default)</td>
+</tr>
+<tr>
+<td><tt>longId</tt></td>
+<td>Whether to use long or short id's for anon resources. Short id's are easier to read and are the default, but can run out of memory on very large models.</td>
+<td><tt>String</tt> or <tt>Boolean</tt></td>
+<td><tt>"true"</tt>, <tt>"false"</tt> (default)</td>
+</tr>
+<tr>
+<td><tt>allowBadURIs</tt></td>
+<td>URIs in the graph are, by default, checked prior to serialization.</td>
+<td><tt>String</tt> or <tt>Boolean</tt></td>
+<td><tt>"true"</tt>, <tt>"false"</tt> (default)</td>
+</tr>
+<tr>
+<td><tt>relativeURIs</tt></td>
+<td>What sort of relative URIs should be used. A comma separated list of options:
+<ul>
+<li><em>same-document</em><br />
+same-document references (e.g. &quot;&quot; or &ldquo;#foo&rdquo;)</li>
+<li><em>network</em><br />
+network paths e.g. <code>&quot;//example.org/foo&quot;</code> omitting the URI scheme</li>
+<li><em>absolute</em><br />
+absolute paths e.g. <code>&quot;/foo&quot;</code> omitting the scheme and authority</li>
+<li><em>relative</em><br />
+relative path not beginning in <code>&quot;../&quot;</code></li>
+<li><em>parent</em><br />
+relative path beginning in <code>&quot;../&quot;</code></li>
+<li><em>grandparent</em><br />
+relative path beginning in <code>&quot;../../&quot;</code></li>
+</ul>
+<p>The default value is &ldquo;same-document, absolute, relative, parent&rdquo;.
+To switch off relative URIs use the value &ldquo;&rdquo;. Relative URIs of any
+of these types are output where possible if and only if the option
+has been specified.</td></p>
+<td>String</td>
+<td>&nbsp;</td>
+</tr>
+<tr>
+<td><tt>showXmlDeclaration</tt></td>
+<td>
+If true, an XML Declaration is included in the output, if false no XML declaration is included.
+The default behaviour only gives an XML Declaration when asked to write to an `OutputStreamWriter`
+that uses some encoding other than UTF-8 or UTF-16. In this case the encoding is shown in the
+XML declaration. To ensure that the encoding attribute is shown in the XML declaration either:
+<ul>
+<li>Set this option to true and use the
+<code>write(Model,Writer,String)</code> variant with an appropriate <code>OutputStreamWriter</code>.</li>
+<li>Or set this option to false, and write the declaration to an <code>OutputStream</code> before calling
+<code>write(Model,OutputStream,String)</code>.</li>
+</ul>
+</td>
+<td><tt>true</tt>, <tt>"true"</tt>, <tt>false</tt>, <tt>"false"</tt> or <tt>"default"</tt></td>
+<td>can be true, false or "default" (null)</td>
+</tr>
+<tr>
+<td><tt>showDoctypeDeclaration</tt></td>
+<td>
+If true, an XML Doctype declaration is included in the output. This
+declaration includes a `!ENTITY` declaration for each prefix mapping
+in the model, and any attribute value that starts with the URI of
+that mapping is written as starting with the corresponding entity
+invocation.
+</td>
+<td><tt>String</tt> or <tt>Boolean</tt></td>
+<td><tt>true</tt>, <tt>false</tt>, <tt>"true"</tt>, <tt>"false"</tt></td>
+</tr>
+<tr>
+<td><tt>tab</tt></td>
+<td>The number of spaces with which to indent XML child elements.</td>
+<td><tt>String</tt> or <tt>Integer</tt></td>
+<td>positive integer "2" is the default</td>
+</tr>
+<tr>
+<td><tt>attributeQuoteChar</tt></td>
+<td>How to write XML attributes.</td>
+<td><tt>String</tt></td>
+<td><tt>"\""</tt> or <tt>"'"</tt></td>
+</tr>
+<tr>
+<td><tt>blockRules</tt></td>
+<td>
+A list of `Resource` or a `String` being a comma separated list of
+fragment IDs from [http://www.w3.org/TR/rdf-syntax-grammar](http://www.w3.org/TR/rdf-syntax-grammar)
+indicating grammar rules that will not be used. Rules that can be blocked are:
+<ul>
+<li><a href="http://www.w3.org/TR/rdf-syntax-grammar#section-Reification">section-Reification</a>
+(<a href="/documentation/javadoc/jena/org/apache/jena/vocabulary/RDFSyntax.html#sectionReification"><code>RDFSyntax.sectionReification</code></a>)</li>
+<li><a href="http://www.w3.org/TR/rdf-syntax-grammar#section-List-Expand">section-List-Expand</a>
+(<a href="/documentation/javadoc/jena/org/apache/jena/vocabulary/RDFSyntax.html#sectionListExpand"><code>RDFSyntax.sectionListExpand</code></a>)</li>
+<li><a href="http://www.w3.org/TR/rdf-syntax-grammar#parseTypeLiteralPropertyElt">parseTypeLiteralPropertyElt</a>
+(<a href="/documentation/javadoc/jena/org/apache/jena/vocabulary/RDFSyntax.html#parseTypeLiteralPropertyElt"><code>RDFSyntax.parseTypeLiteralPropertyElt</code></a>)</li>
+<li><a href="http://www.w3.org/TR/rdf-syntax-grammar#parseTypeResourcePropertyElt">parseTypeResourcePropertyElt</a>
+(<a href="/documentation/javadoc/jena/org/apache/jena/vocabulary/RDFSyntax.html#parseTypeLiteralPropertyElt"><code>RDFSyntax.parseTypeLiteralPropertyElt</code></a>)</li>
+<li><a href="http://www.w3.org/TR/rdf-syntax-grammar#parseTypeCollectionPropertyElt">parseTypeCollectionPropertyElt</a>
+(<a href="/documentation/javadoc/jena/org/apache/jena/vocabulary/RDFSyntax.html#parseTypeCollectionPropertyElt"><code>RDFSyntax.parseTypeCollectionPropertyElt</code></a>)</li>
+<li><a href="http://www.w3.org/TR/rdf-syntax-grammar#idAttr">idAttr</a>
+(<a href="/documentation/javadoc/jena/org/apache/jena/vocabulary/RDFSyntax.html#idAttr"><code>RDFSyntax.idAttr</code></a>)</li>
+<li><a href="http://www.w3.org/TR/rdf-syntax-grammar#propertyAttr">propertyAttr</a>
+(<a href="/documentation/javadoc/jena/org/apache/jena/vocabulary/RDFSyntax.html#propertyAttr"><code>RDFSyntax.propertyAttr</code></a>)</li>
+</ul>
+<p>In addition <code>&quot;daml:collection&quot;</code>
+(<a href="/documentation/javadoc/jena/org/apache/jena/vocabulary/DAML_OIL.html#collection"><code>DAML_OIL.collection</code></a>)
+can be blocked. Blocking
+<a href="http://www.w3.org/TR/rdf-syntax-grammar#idAttr">idAttr</a> also
+blocks
+<a href="http://www.w3.org/TR/rdf-syntax-grammar#section-Reification">section-Reification</a>.
+By default, rule
+<a href="http://www.w3.org/TR/rdf-syntax-grammar#propertyAttr">propertyAttr</a>
+is blocked. For the basic writer (RDF/XML) only
+<a href="http://www.w3.org/TR/rdf-syntax-grammar#parseTypeLiteralPropertyElt">parseTypeLiteralPropertyElt</a>
+has any effect, since none of the other rules are implemented by
+that writer.</p>
+</td>
+<td><tt>Resource[]</tt> or <tt>String</tt></td>
+<td></td>
+</tr>
+<tr> 
+<td><tt>prettyTypes</tt></td>
+<td>
+Only for the RDF/XML-ABBREV writer. This is a list of the types of
+the principal objects in the model. The writer will tend to create
+RDF/XML with resources of these types at the top level.
+</td>
+<td>
+<tt>Resource[]</tt>
+</td>
+<td></td>
+</tr>
+</table>
+<p>To set properties on the RDF/XML writer:</p>
+<pre tabindex="0"><code>    // Properties to be set.
+    Map&lt;String, Object&gt; properties = new HashMap&lt;&gt;() ;
+    properties.put(&#34;showXmlDeclaration&#34;, &#34;true&#34;);
 
-try {
-    try {
-        saxParser.parse(ins);
-    } finally {
-        // MUST ensure handler is closed.
-        handler.close();
-    }
-} catch (SAXParseException e) {
-    // Fatal parsing errors end here,
-    // but they will already have been reported.
-}
+     RDFWriter.create()
+        .base(&#34;http://example.org/&#34;)
+        .format(RDFFormat.RDFXML_PLAIN)
+        .set(SysRIOT.sysRdfWriterProperties, properties)
+        .source(model)
+        .output(System.out);
+</code></pre><p>See
+<a href="https://github.com/apache/jena/blob/main/jena-examples/src/main/java/arq/examples/riot/ExRIOT_RDFXML_WriterProperties.java">ExRIOT_RDFXML_WriterProperties.java</a>.</p>
+<p><b>Legacy example</b></p>
+<p>As an example,</p>
+<pre><code>RDFWriter w = m.getWriter(&quot;RDF/XML-ABBREV&quot;);
+w.setProperty(&quot;attributeQuoteChar&quot;,&quot;'&quot;);
+w.setProperty(&quot;showXMLDeclaration&quot;,&quot;true&quot;);
+w.setProperty(&quot;tab&quot;,&quot;1&quot;);
+w.setProperty(&quot;blockRules&quot;,
+  &quot;daml:collection,parseTypeLiteralPropertyElt,&quot;
+  +&quot;parseTypeResourcePropertyElt,parseTypeCollectionPropertyElt&quot;);
 </code></pre>
-<h2 id="initializing-sax-event-source">Initializing SAX event source</h2>
-<p>If your SAX event source is a subclass of <code>XMLReader</code>, then the
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/SAX2RDF.html#installHandlers(org.xml.sax.XMLReader,%20org.apache.jena.rdf.arp.XMLHandler)">installHandlers</a>
-static method can be used as shown in the sample. Otherwise, you
-have to do it yourself. The
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/SAX2RDF.html#installHandlers(org.xml.sax.XMLReader,%20org.apache.jena.rdf.arp.XMLHandler)"><code>installHandlers</code></a>
-code is like this:</p>
-<pre><code>static public void installHandlers(XMLReader rdr, XMLHandler sax2rdf)
-throws SAXException
-{
-    rdr.setEntityResolver(sax2rdf);
-    rdr.setDTDHandler(sax2rdf);
-    rdr.setContentHandler(sax2rdf);
-    rdr.setErrorHandler(sax2rdf);
-    rdr.setFeature(&quot;http://xml.org/sax/features/namespaces&quot;, true);
-    rdr.setFeature(
-            &quot;http://xml.org/sax/features/namespace-prefixes&quot;,
-            true);
-    rdr.setProperty(
-            &quot;http://xml.org/sax/properties/lexical-handler&quot;,
-            sax2rdf);
-}
+<p>creates a writer that does not use rdf:parseType (preferring
+rdf:datatype for rdf:XMLLiteral), indents only a little, and
+produces the XMLDeclaration. Attributes are used, and are quoted
+with <code>&quot;'&quot;</code>.</p>
+<p>Note that property attributes are not used at all, by default.
+However, the RDF/XML-ABBREV writer includes a rule to produce
+property attributes when the value does not contain any spaces.
+This rule is normally switched off. This rule can be turned on
+selectively by using the blockRules property as detailed above.</p>
+<h2 id="conformance">Conformance</h2>
+<p>The RDF/XML I/O endeavours to conform with the
+<a href="http://www.w3.org/TR/rdf-syntax-grammar/">RDF Syntax Recommendation</a>.</p>
+<p>The parser must be set to strict mode. (Note that, the conformant
+behaviour for <code>rdf:parseType=&quot;daml:collection&quot;</code> is to silently turn
+<code>&quot;daml:collection&quot;</code> into <code>&quot;Literal&quot;</code>).</p>
+<p>The RDF/XML writer is conformant, but does not exercise much of the
+grammar.</p>
+<p>The RDF/XML-ABBREV writer exercises all of the grammar and is
+conformant except that it uses the <code>daml:collection</code> construct for
+DAML ontologies. This non-conformant behaviour can be switched off
+using the <code>blockRules</code> property.</p>
+<h2 id="faster-rdfxml-io">Faster RDF/XML I/O</h2>
+<p>To optimise the speed of writing RDF/XML it is suggested that all
+URI processing is turned off. Also do not use RDF/XML-ABBREV. It is
+unclear whether the longId attribute is faster or slower; the short
+IDs have to be generated on the fly and a table maintained during
+writing. The longer IDs are long, and hence take longer to write.
+The following creates a faster writer:</p>
+<pre><code>Model m;
+…
+…
+RDFWriter fasterWriter = m.getWriter(&quot;RDF/XML&quot;);
+fasterWriter.setProperty(&quot;allowBadURIs&quot;,&quot;true&quot;);
+fasterWriter.setProperty(&quot;relativeURIs&quot;,&quot;&quot;);
+fasterWriter.setProperty(&quot;tab&quot;,&quot;0&quot;);
+</code></pre>
+<p>When reading RDF/XML the check for reuse of rdf:ID has a memory
+overhead, which can be significant for very large files. In this
+case, this check can be suppressed by telling ARP to ignore this
+error.</p>
+<pre><code>Model m;
+…
+…
+RDFReader bigFileReader = m.getReader(&quot;RDF/XML&quot;);
+bigFileReader.setProperty(&quot;WARN_REDEFINITION_OF_ID&quot;,&quot;EM_IGNORE&quot;);
+…
 </code></pre>
-<p>For some other SAX source, the exact code will differ, but the
-required operations are as above.</p>
-<h2 id="error-handler">Error Handler</h2>
-<p>The <a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/SAX2Model.html">SAX2Model</a>
-handler supports the
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/model/RDFReader.html#setErrorHandler(org.apache.jena.rdf.model.RDFErrorHandler)">setErrorHandler</a>
-method, from the Jena
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/model/RDFReader.html">RDFReader</a>
-interface. This is used in the same way as that method to control
-error reporting.</p>
-<p>A specific fatal error, new in Jena 2.3, is ERR_INTERRUPTED, which
-indicates that the current Thread received an interrupt. This
-allows long jobs to be aborted on user request.</p>
-<h2 id="options">Options</h2>
-<p>The <a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/SAX2Model.html"><code>SAX2Model</code></a>
-handler supports the
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/model/RDFReader.html#setProperty(java.lang.String,%20java.lang.Object)"><code>setProperty</code></a>
-method, from the Jena
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/model/RDFReader.html"><code>RDFReader</code></a>
-interface. This is used in nearly the same way to have fine grain
-control over ARPs behaviour, particularly over error reporting, see
-the <a href="iohowto.html#arp_properties">I/O howto</a>. Setting SAX or
-Xerces properties cannot be done using this method.</p>
-<h2 id="xml-lang-and-namespaces">XML Lang and Namespaces</h2>
-<p>If you are only treating some document subset as RDF/XML then it is
-necessary to ensure that ARP knows the correct value for <code>xml:lang</code>
-and desirable that it knows the correct mappings of namespace
-prefixes.</p>
-<p>There is a second version of the
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/SAX2Model.html#create(java.lang.String,%20org.apache.jena.rdf.model.Model,%20java.lang.String)"><code>create</code></a>
-method, which allows specification of the <code>xml:lang</code> value from the
-outer context. If this is inappropriate it is possible, but hard
-work, to synthesis an appropriate SAX event.</p>
-<p>For the namespaces prefixes, it is possible to call the
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/SAX2RDF.html#startPrefixMapping(java.lang.String,%20java.lang.String)"><code>startPrefixMapping</code></a>
-SAX event, before passing the other SAX events, to declare each
-namespace, one by one. Failure to do this is permitted, but, for
-instance, a Jena Model will then not know the (advisory) namespace
-prefix bindings. These should be paired with endPrefixMapping
-events, but nothing untoward is likely if such code is omitted.</p>
-<h2 id="using-your-own-triple-handler">Using your own triple handler</h2>
-<p>As with ARP, it is possible to use this functionality, without
-using other Jena features, in particular, without using a Jena
-Model. Instead of using the class SAX2Model, you use its superclass
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/SAX2RDF.html">SAX2RDF</a>. The
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/SAX2RDF.html#create(java.lang.String)">create</a>
-method on this class does not provide any means of specifying what
-to do with the triples. Instead, the class implements the
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/SAX2RDF.html">ARPConfig</a>
-interface, which permits the setting of handlers and parser
-options, as described in the documentation for using
-<a href="standalone.html">ARP without Jena</a>.</p>
-<p>Thus you need to:</p>
-<ol>
-<li>Create a SAX2RDF using
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/SAX2RDF.html#create(java.lang.String)">SAX2RDF.create()</a></li>
-<li>Attach your StatementHandler and SAXErrorHandler and optionally
-your NamespaceHandler and ExtendedHandler to the SAX2RDF instance.</li>
-<li>Install the SAX2RDF instance as the SAX handler on your SAX
-source.</li>
-<li>Follow the remainder of the code sample above.</li>
-</ol>
-<h2 id="using-a-dom-as-input">Using a DOM as Input</h2>
-<p>None of the approaches listed here work with Java 1.4.1_04. We
-suggest using Java 1.4.2_04 or greater for this functionality.
-This issue has no impact on any other Jena functionality.</p>
-<h3 id="using-a-dom-as-input-to-jena">Using a DOM as Input to Jena</h3>
-<p>The <a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/DOM2Model.html"><code>DOM2Model</code></a>
-subclass of SAX2Model, allows the parsing of a DOM using ARP. The
-procedure to follow is:</p>
-<ul>
-<li>Construct a <code>DOM2Model</code>, using a factory method such as
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/DOM2Model.html#createD2M(java.lang.String,%20org.apache.jena.rdf.model.Model)"><code>createD2M</code></a>,
-specifying the xml:base of the document to be loaded, the Model to
-load into, optionally the xml:lang value (particularly useful if
-using a DOM Node from within a Document).</li>
-<li>Set any properties, error handlers etc. on the <code>DOM2Model</code>
-object.</li>
-<li>The DOM is parsed simply by calling the
-<a href="/documentation/javadoc/jena/org/apache/jena/rdf/arp/DOM2Model.html#load(org.w3c.dom.Node)"><code>load(Node)</code></a>
-method.</li>
-</ul>
-<h3 id="using-a-dom-as-input-to-arp">Using a DOM as Input to ARP</h3>
-<p>DOM2Model is a subclass of SAX2RDF, and handlers etc. can be set on
-the DOM2Model as for SAX2RDF. Using a null model as the argument to
-the factory indicates this usage.</p>
 
   </article>
   
@@ -370,19 +417,13 @@ the factory indicates this usage.</p>
     <h2 class="h6 sticky-top m-0 p-2 bg-body-tertiary">On this page</h2>
     <nav id="TableOfContents">
   <ul>
-    <li><a href="#1-overview">1. Overview</a></li>
-    <li><a href="#sample-code">Sample Code</a></li>
-    <li><a href="#initializing-sax-event-source">Initializing SAX event source</a></li>
-    <li><a href="#error-handler">Error Handler</a></li>
-    <li><a href="#options">Options</a></li>
-    <li><a href="#xml-lang-and-namespaces">XML Lang and Namespaces</a></li>
-    <li><a href="#using-your-own-triple-handler">Using your own triple handler</a></li>
-    <li><a href="#using-a-dom-as-input">Using a DOM as Input</a>
+    <li><a href="#advanced-rdfxml-output">Advanced RDF/XML Output</a>
       <ul>
-        <li><a href="#using-a-dom-as-input-to-jena">Using a DOM as Input to Jena</a></li>
-        <li><a href="#using-a-dom-as-input-to-arp">Using a DOM as Input to ARP</a></li>
+        <li><a href="#properties-to-control-rdfxml-output">Properties to Control RDF/XML Output</a></li>
       </ul>
     </li>
+    <li><a href="#conformance">Conformance</a></li>
+    <li><a href="#faster-rdfxml-io">Faster RDF/XML I/O</a></li>
   </ul>
 </nav>
   </aside>
diff --git a/content/documentation/io/rdfxml_howto.html b/content/documentation/io/rdfxml_howto.html
index 398d89513..2ca4b9336 100644
--- a/content/documentation/io/rdfxml_howto.html
+++ b/content/documentation/io/rdfxml_howto.html
@@ -209,7 +209,9 @@
 </nav>
   </aside>
   <article class="flex-column me-lg-4">
-    <p>This is a guide to the RDF/XML I/O subsystem of Jena, ARP.
+    <p><em>Legacy Documentation : may not be up-to-date</em></p>
+<hr>
+<p>This is a guide to the RDF/XML I/O subsystem of Jena, ARP.
 The first section gives a quick introduction to the
 I/O subsystem. The other sections are aimed at users wishing to use
 advanced features within the RDF/XML I/O subsystem.</p>
diff --git a/content/documentation/query/javascript-functions.html b/content/documentation/query/javascript-functions.html
index c6f73f7a0..4d3116eb0 100644
--- a/content/documentation/query/javascript-functions.html
+++ b/content/documentation/query/javascript-functions.html
@@ -184,7 +184,7 @@
     <nav id="TableOfContents">
   <ul>
     <li><a href="#requirements">Requirements</a></li>
-    <li><a href="#loading-javascript-functions">Loading JavaScript functions</a></li>
+    <li><a href="#enabling-and-loading-javascript-functions">Enabling and Loading JavaScript functions</a></li>
     <li><a href="#using-javascript-functions">Using JavaScript functions</a>
       <ul>
         <li><a href="#arguments-and-function-results">Arguments and Function Results</a></li>
@@ -203,6 +203,9 @@ values to assign with AS in BIND and SELECT expressions.</p>
 <p>XSD datatypes for strings, numbers and booleans are converted to the
 native JavaScript datatypes. RDFterms that do not fit easily into
 JavaScript datatypes are handled with a object class <code>NV</code>.</p>
+<p>Applications should be aware that there are risks in exposing a script engine
+with full computational capabilities through SPARQL.  Script functions are only
+as secure as the script engine environment they run in.</p>
 <h2 id="requirements">Requirements</h2>
 <p>ARQ requires a javascript engine such as <a href="https://www.graalvm.org/">GraalVM</a> to
 be added to the classpath.</p>
@@ -220,16 +223,23 @@ be added to the classpath.</p>
       &lt;artifactId&gt;js-scriptengine&lt;/artifactId&gt;
       &lt;version&gt;${ver.graalvm}&lt;/version&gt;
     &lt;/dependency&gt;
-</code></pre><h2 id="loading-javascript-functions">Loading JavaScript functions</h2>
+</code></pre><h2 id="enabling-and-loading-javascript-functions">Enabling and Loading JavaScript functions</h2>
 <p>JavaScript is loaded from an external file using the context setting
 &ldquo;<a href="http://jena.apache.org/ARQ#js-library%22">http://jena.apache.org/ARQ#js-library&quot;</a>. This can be written as
 <code>arq:js-library</code> for commands and Fuseki configuration files.</p>
+<p>Access to the script engine must be enabled at runtime.
+The Java system property to do this is <code>jena:scripting</code>.</p>
 <p>Example:</p>
-<pre><code>sparql --set arq:js-library=SomeFile.js --data ... --query ...
+<pre><code>export JVM_ARGS=-Djena:scripting=true
+sparql --set arq:js-library=SomeFile.js --data ... --query ...
+</code></pre>
+<p>and for MS Windows:</p>
+<pre><code>set JVM_ARGS=-Djena:scripting=true
+sparql --set arq:js-library=SomeFile.js --data ... --query ...
 </code></pre>
 <p>will execute on the data with the JavaScript functions from file
 &ldquo;SomeFile.js&rdquo; available.</p>
-<p>JavScript functions can also be set from a string directly from within Java using constant
+<p>JavaScript functions can also be set from a string directly from within Java using constant
 <code>ARQ.symJavaScriptFunctions</code> (&ldquo;<a href="http://jena.apache.org/ARQ#js-functions%22)">http://jena.apache.org/ARQ#js-functions&quot;)</a>.</p>
 <h2 id="using-javascript-functions">Using JavaScript functions</h2>
 <p>SPARQL functions implemented in JavaScript are automatically called when a
@@ -264,9 +274,10 @@ For example, &ldquo;some words to process &quot; becomes &ldquo;someWordsToProce
 // Words to be combined are separated by a space in the string.
 
 function toCamelCase(str) {
-    return str.split(' ')
-	.map(cc)
-	.join('');
+    return str
+              .split(' ')
+              .map(cc)
+              .join('');
 }
 
 function ucFirst(word)    {
@@ -289,10 +300,7 @@ SELECT ?input (js:toCamelCase(?input) AS ?X)
     VALUES ?input { &quot;some woRDs to PROCESS&quot; }
 }
 </code></pre>
-<p>which can be executed with:</p>
-<pre><code>sparql --set arq:js-library=functions.js --query Q.rq
-</code></pre>
-<p>and it results in:</p>
+<p>which results in:</p>
 <pre><code>--------------------------------------------------
 | input                   | X                    |
 ==================================================
@@ -302,7 +310,8 @@ SELECT ?input (js:toCamelCase(?input) AS ?X)
 <h2 id="use-with-fuseki">Use with Fuseki</h2>
 <p>The context setting can be provided on the command line starting the
 server, for example:</p>
-<pre><code>fuseki --set arq:js-library=functions.js --mem /ds
+<pre><code>export JVM_ARGS=-Djena:scripting=true
+fuseki --set arq:js-library=functions.js --mem /ds
 </code></pre>
 <p>or it can be specified in the server configuration file <code>config.ttl</code>:</p>
 <pre><code>PREFIX :        &lt;#&gt;
@@ -331,7 +340,8 @@ PREFIX ja:      &lt;http://jena.hpl.hp.com/2005/11/Assembler#&gt;
 .
 </code></pre>
 <p>and used as:</p>
-<pre><code>fuseki --conf config.ttl
+<pre><code>export JVM_ARGS=-Djena:scripting=true    
+fuseki --conf config.ttl
 </code></pre>
 
   </article>
@@ -341,7 +351,7 @@ PREFIX ja:      &lt;http://jena.hpl.hp.com/2005/11/Assembler#&gt;
     <nav id="TableOfContents">
   <ul>
     <li><a href="#requirements">Requirements</a></li>
-    <li><a href="#loading-javascript-functions">Loading JavaScript functions</a></li>
+    <li><a href="#enabling-and-loading-javascript-functions">Enabling and Loading JavaScript functions</a></li>
     <li><a href="#using-javascript-functions">Using JavaScript functions</a>
       <ul>
         <li><a href="#arguments-and-function-results">Arguments and Function Results</a></li>
diff --git a/content/download/index.html b/content/download/index.html
index c074de923..1b8c11b71 100644
--- a/content/download/index.html
+++ b/content/download/index.html
@@ -208,9 +208,9 @@
 </thead>
 <tbody>
 <tr>
-<td><a href="[preferred]jena/source/jena-4.7.0-source-release.zip">jena-4.7.0-source-release.zip</a></td>
-<td style="text-align:center"><a href="https://downloads.apache.org/jena/source/jena-4.7.0-source-release.zip.sha512">SHA512</a></td>
-<td style="text-align:center"><a href="https://downloads.apache.org/jena/source/jena-4.7.0-source-release.zip.asc">PGP</a></td>
+<td><a href="[preferred]jena/source/jena-4.8.0-source-release.zip">jena-4.8.0-source-release.zip</a></td>
+<td style="text-align:center"><a href="https://downloads.apache.org/jena/source/jena-4.8.0-source-release.zip.sha512">SHA512</a></td>
+<td style="text-align:center"><a href="https://downloads.apache.org/jena/source/jena-4.8.0-source-release.zip.asc">PGP</a></td>
 </tr>
 </tbody>
 </table>
@@ -226,14 +226,14 @@
 </thead>
 <tbody>
 <tr>
-<td><a href="[preferred]jena/binaries/apache-jena-fuseki-4.7.0.tar.gz">apache-jena-fuseki-4.7.0.tar.gz</a></td>
-<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.7.0.tar.gz.sha512">SHA512</a></td>
-<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.7.0.tar.gz.asc">PGP</a></td>
+<td><a href="[preferred]jena/binaries/apache-jena-fuseki-4.8.0.tar.gz">apache-jena-fuseki-4.8.0.tar.gz</a></td>
+<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.8.0.tar.gz.sha512">SHA512</a></td>
+<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.8.0.tar.gz.asc">PGP</a></td>
 </tr>
 <tr>
-<td><a href="[preferred]jena/binaries/apache-jena-fuseki-4.7.0.zip">apache-jena-fuseki-4.7.0.zip</a></td>
-<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.7.0.zip.sha512">SHA512</a></td>
-<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.7.0.zip.asc">PGP</a></td>
+<td><a href="[preferred]jena/binaries/apache-jena-fuseki-4.8.0.zip">apache-jena-fuseki-4.8.0.zip</a></td>
+<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.8.0.zip.sha512">SHA512</a></td>
+<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-fuseki-4.8.0.zip.asc">PGP</a></td>
 </tr>
 </tbody>
 </table>
@@ -249,14 +249,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.7.0.tar.gz">apache-jena-4.7.0.tar.gz</a></td>
-<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.7.0.tar.gz.sha512">SHA512</a></td>
-<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.7.0.tar.gz.asc">PGP</a></td>
+<td><a href="[preferred]jena/binaries/apache-jena-4.8.0.tar.gz">apache-jena-4.8.0.tar.gz</a></td>
+<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.8.0.tar.gz.sha512">SHA512</a></td>
+<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.8.0.tar.gz.asc">PGP</a></td>
 </tr>
 <tr>
-<td><a href="[preferred]jena/binaries/apache-jena-4.7.0.zip">apache-jena-4.7.0.zip</a></td>
-<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.7.0.zip.sha512">SHA512</a></td>
-<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.7.0.zip.asc">PGP</a></td>
+<td><a href="[preferred]jena/binaries/apache-jena-4.8.0.zip">apache-jena-4.8.0.zip</a></td>
+<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.8.0.zip.sha512">SHA512</a></td>
+<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/apache-jena-4.8.0.zip.asc">PGP</a></td>
 </tr>
 </tbody>
 </table>
@@ -272,9 +272,9 @@ The binary distribution of Fuseki as a WAR file:
 </thead>
 <tbody>
 <tr>
-<td><a href="[preferred]jena/binaries/jena-fuseki-war-4.7.0.war">jena-fuseki-war-4.7.0.war</a></td>
-<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/jena-fuseki-war-4.7.0.war.sha512">SHA512</a></td>
-<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/jena-fuseki-war-4.7.0.war.asc">PGP</a></td>
+<td><a href="[preferred]jena/binaries/jena-fuseki-war-4.8.0.war">jena-fuseki-war-4.8.0.war</a></td>
+<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/jena-fuseki-war-4.8.0.war.sha512">SHA512</a></td>
+<td style="text-align:center"><a href="https://downloads.apache.org/jena/binaries/jena-fuseki-war-4.8.0.war.asc">PGP</a></td>
 </tr>
 </tbody>
 </table>
diff --git a/content/index.json b/content/index.json
index 7d1868a04..f2aa11fda 100644
--- a/content/index.json
+++ b/content/index.json
@@ -1 +1 @@
-[{"categories":null,"contents":"This page is historical \u0026ldquo;for information only\u0026rdquo; - there is no Apache release of Eyeball and the code has not been updated for Jena3.\nThe original source code is available. So you\u0026rsquo;ve got Eyeball installed and you\u0026rsquo;ve run it on one of your files, and Eyeball doesn\u0026rsquo;t like it. You\u0026rsquo;re not sure why, or what to do about it. Here\u0026rsquo;s what\u0026rsquo;s going on.\nEyeball inspects your model a [...]
\ No newline at end of file
+[{"categories":null,"contents":"This page is historical \u0026ldquo;for information only\u0026rdquo; - there is no Apache release of Eyeball and the code has not been updated for Jena3.\nThe original source code is available. So you\u0026rsquo;ve got Eyeball installed and you\u0026rsquo;ve run it on one of your files, and Eyeball doesn\u0026rsquo;t like it. You\u0026rsquo;re not sure why, or what to do about it. Here\u0026rsquo;s what\u0026rsquo;s going on.\nEyeball inspects your model a [...]
\ No newline at end of file
diff --git a/content/index.xml b/content/index.xml
index 300835e75..b25200c0a 100644
--- a/content/index.xml
+++ b/content/index.xml
@@ -410,7 +410,7 @@ SPARQL protocol client - remote HTTP requests Reference engine - direct implemen
       <guid>https://jena.apache.org/documentation/query/javascript-functions.html</guid>
       <description>ARQ supports writing custom SPARQL functions in JavaScript. These functions can be used in FILTERs and for calculating values to assign with AS in BIND and SELECT expressions.
 XSD datatypes for strings, numbers and booleans are converted to the native JavaScript datatypes. RDFterms that do not fit easily into JavaScript datatypes are handled with a object class NV.
-Requirements ARQ requires a javascript engine such as GraalVM to be added to the classpath.</description>
+Applications should be aware that there are risks in exposing a script engine with full computational capabilities through SPARQL.</description>
     </item>
     
     <item>
@@ -1211,15 +1211,54 @@ Each of the builders has a series of methods to define the query. Each method re
 SelectBuilder sb = new SelectBuilder() .addVar( &amp;quot;*&amp;quot; ) .</description>
     </item>
     
+    <item>
+      <title>Jena RDF XML</title>
+      <link>https://jena.apache.org/documentation/io/rdfxml-io.html</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://jena.apache.org/documentation/io/rdfxml-io.html</guid>
+      <description>This is a guide to the RDF/XML I/O subsystem of Jena.
+The RDF/XML parser is designed for use with RIOT and to have the same handling of errors, IRI resolution, and treatment of base IRIs as other RIOT readers.
+RDF/XML Input The usual way to access the RDF/XML parser is via RDFDataMgr or RDFParser.
+Model model = RDFDataMgr.loadModel(&amp;quot;data.rdf&amp;quot;); or
+Model model = RDFParser.source(&amp;quot;data.rdf&amp;quot;).toModel(); The original &amp;ldquo;ARP&amp;rdquo; parser is still available bu tmaybe pahsed out.</description>
+    </item>
+    
     <item>
       <title>Jena RDF/XML How-To</title>
       <link>https://jena.apache.org/documentation/io/rdfxml_howto.html</link>
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://jena.apache.org/documentation/io/rdfxml_howto.html</guid>
-      <description>This is a guide to the RDF/XML I/O subsystem of Jena, ARP. The first section gives a quick introduction to the I/O subsystem. The other sections are aimed at users wishing to use advanced features within the RDF/XML I/O subsystem.
+      <description>Legacy Documentation : may not be up-to-date
+This is a guide to the RDF/XML I/O subsystem of Jena, ARP. The first section gives a quick introduction to the I/O subsystem. The other sections are aimed at users wishing to use advanced features within the RDF/XML I/O subsystem.
 Other content related to Jena RDF/XML How-To includes:
-Details of ARP, the Jena RDF/XML parser Quick Introduction The main I/O methods in Jena use InputStreams and OutputStreams. This is import to correctly handle character sets.</description>
+Details of ARP, the Jena RDF/XML parser Quick Introduction The main I/O methods in Jena use InputStreams and OutputStreams.</description>
+    </item>
+    
+    <item>
+      <title>Jena RDF/XML Input How-To</title>
+      <link>https://jena.apache.org/documentation/io/rdfxml-input.html</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://jena.apache.org/documentation/io/rdfxml-input.html</guid>
+      <description>Legacy Documentation : may not be up-to-date
+Original RDF/XML HowTo.
+This is a guide to the RDF/XML legacy input subsystem of Jena, ARP.
+Advanced RDF/XML Input For access to these advanced features, first get an RDFReader object that is an instance of an ARP parser, by using the getReader() method on any Model. It is then configured using the [setProperty](/documentation/javadoc/jena/org/apache/jena/rdfxml/xmlinput0/JenaReader.html#setProperty(java.lang.String, java.lang.Object))(String, Object) method. This changes the properties for parsing RDF/XML. Many of the properties change the RDF parser, some change the XML parse [...]
+    </item>
+    
+    <item>
+      <title>Jena RDF/XML Output How-To</title>
+      <link>https://jena.apache.org/documentation/io/rdfxml-output.html</link>
+      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+      
+      <guid>https://jena.apache.org/documentation/io/rdfxml-output.html</guid>
+      <description>Legacy Documentation : may not be up-to-date
+Original RDF/XML HowTo.
+Advanced RDF/XML Output Two forms for output are provided: pretty printed RDF/XML (&amp;ldquo;RDF/XML-ABBREV&amp;rdquo;) or plain RDF/XML
+While some of the code is shared, these two writers are really very different, resulting in different but equivalent output. &amp;ldquo;RDF/XML-ABBREV&amp;rdquo; is slower, but should produce more readable XML.
+Properties to Control RDF/XML Output Property NameDescriptionValue classLegal Values xmlbase The value to be included for an xml:base attribute on the root element in the file.</description>
     </item>
     
     <item>
@@ -1439,11 +1478,11 @@ Example This example ensures certain prefixes are in the dataset and adds some b
     </item>
     
     <item>
-      <title>RDF/XML Handling in Jena</title>
-      <link>https://jena.apache.org/documentation/io/arp.html</link>
+      <title>RDF/XML Input in Jena</title>
+      <link>https://jena.apache.org/documentation/io/arp/arp.html</link>
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
-      <guid>https://jena.apache.org/documentation/io/arp.html</guid>
+      <guid>https://jena.apache.org/documentation/io/arp/arp.html</guid>
       <description>This section details the Jena RDF/XML parser. ARP is the parsing subsystem in Jena for handling the RDF/XML syntax.
 ARP Features Using ARP without Jena Using other SAX and DOM XML sources ARP Features Java based RDF parser. Compliant with RDF Syntax and RDF Test Cases Recommendations. Compliant with following standards and recommendations: xml:lang
 xml:lang is fully supported, both in RDF/XML and any document embedding RDF/XML. Moreover, the language tags are checked against RFC1766, RFC3066, ISO639-1, ISO3166.</description>
@@ -1548,10 +1587,10 @@ As a standalone server As a service run by the operation system, for example, st
     
     <item>
       <title>SAX Input into Jena and ARP</title>
-      <link>https://jena.apache.org/documentation/io/arp_sax.html</link>
+      <link>https://jena.apache.org/documentation/io/arp/arp_sax.html</link>
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
-      <guid>https://jena.apache.org/documentation/io/arp_sax.html</guid>
+      <guid>https://jena.apache.org/documentation/io/arp/arp_sax.html</guid>
       <description>Normally, both ARP and Jena are used to read files either from the local machine or from the Web. A different use case, addressed here, is when the XML source is available in-memory in some way. In these cases, ARP and Jena can be used as a SAX event handler, turning SAX events into triples, or a DOM tree can be parsed into a Jena Model.
 1. Overview To read an arbitrary SAX source as triples to be added into a Jena model, it is not possible to use a Model.</description>
     </item>
@@ -2431,10 +2470,10 @@ Configurando seu ambiente O primeiro passo é instalar o Java JDK 1.8.x. As inst
     
     <item>
       <title>Using ARP Without Jena</title>
-      <link>https://jena.apache.org/documentation/io/arp_standalone.html</link>
+      <link>https://jena.apache.org/documentation/io/arp/arp_standalone.html</link>
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
-      <guid>https://jena.apache.org/documentation/io/arp_standalone.html</guid>
+      <guid>https://jena.apache.org/documentation/io/arp/arp_standalone.html</guid>
       <description>ARP can be used both as a Jena subsystem, or as a standalone RDF/XML parser. This document gives a quick guide to using ARP standalone.
 Overview To load an RDF file:
 Create an ARP instance. Set parse options, particularly error detection control, using getOptions or setOptionsWith. Set its handlers, by calling the getHandlers or setHandlersWith methods, and then. Setting the statement handler. Optionally setting the other handlers. Call a load method Xerces is used for parsing the XML.</description>
diff --git a/content/sitemap.xml b/content/sitemap.xml
index 2013700cd..68f9ae619 100644
--- a/content/sitemap.xml
+++ b/content/sitemap.xml
@@ -51,7 +51,7 @@
     <lastmod>2020-02-28T13:09:12+01:00</lastmod>
   </url><url>
     <loc>https://jena.apache.org/download/</loc>
-    <lastmod>2022-12-20T17:21:05+00:00</lastmod>
+    <lastmod>2023-04-16T17:26:15+01:00</lastmod>
   </url><url>
     <loc>https://jena.apache.org/documentation/archive/sdb/</loc>
     <lastmod>2022-11-09T14:16:56+00:00</lastmod>
@@ -114,7 +114,7 @@
     <lastmod>2021-11-05T08:11:46+00:00</lastmod>
   </url><url>
     <loc>https://jena.apache.org/documentation/query/javascript-functions.html</loc>
-    <lastmod>2023-03-03T14:31:22+01:00</lastmod>
+    <lastmod>2023-02-19T09:28:48+00:00</lastmod>
   </url><url>
     <loc>https://jena.apache.org/documentation/query/lateral-join.html</loc>
     <lastmod>2023-02-26T22:14:57+01:00</lastmod>
@@ -204,7 +204,7 @@
     <lastmod>2023-04-10T12:49:33+02:00</lastmod>
   </url><url>
     <loc>https://jena.apache.org/download.html</loc>
-    <lastmod>2022-12-21T14:55:40+01:00</lastmod>
+    <lastmod>2023-04-16T17:26:15+01:00</lastmod>
   </url><url>
     <loc>https://jena.apache.org/documentation/notes/event-handler-howto.html</loc>
     <lastmod>2020-02-28T13:09:12+01:00</lastmod>
@@ -255,7 +255,7 @@
     <lastmod>2021-09-16T13:13:09+02:00</lastmod>
   </url><url>
     <loc>https://jena.apache.org/documentation/fuseki2/fuseki-configuration.html</loc>
-    <lastmod>2021-10-29T14:57:22+01:00</lastmod>
+    <lastmod>2023-03-21T20:27:25+00:00</lastmod>
   </url><url>
     <loc>https://jena.apache.org/documentation/fuseki2/fuseki-server-info.html</loc>
     <lastmod>2020-09-19T11:47:36+01:00</lastmod>
@@ -355,9 +355,18 @@
   </url><url>
     <loc>https://jena.apache.org/documentation/extras/querybuilder/</loc>
     <lastmod>2023-02-05T18:59:30+01:00</lastmod>
+  </url><url>
+    <loc>https://jena.apache.org/documentation/io/rdfxml-io.html</loc>
+    <lastmod>2023-03-21T21:30:23+00:00</lastmod>
   </url><url>
     <loc>https://jena.apache.org/documentation/io/rdfxml_howto.html</loc>
-    <lastmod>2023-02-05T18:59:30+01:00</lastmod>
+    <lastmod>2023-03-21T21:30:23+00:00</lastmod>
+  </url><url>
+    <loc>https://jena.apache.org/documentation/io/rdfxml-input.html</loc>
+    <lastmod>2023-03-21T21:30:23+00:00</lastmod>
+  </url><url>
+    <loc>https://jena.apache.org/documentation/io/rdfxml-output.html</loc>
+    <lastmod>2023-03-21T21:30:23+00:00</lastmod>
   </url><url>
     <loc>https://jena.apache.org/about_jena/roadmap.html</loc>
     <lastmod>2023-04-10T10:11:44+01:00</lastmod>
@@ -419,11 +428,11 @@
     <loc>https://jena.apache.org/documentation/rdf-patch/</loc>
     <lastmod>2023-01-03T12:26:01+00:00</lastmod>
   </url><url>
-    <loc>https://jena.apache.org/documentation/io/arp.html</loc>
-    <lastmod>2020-02-28T13:09:12+01:00</lastmod>
+    <loc>https://jena.apache.org/documentation/io/arp/arp.html</loc>
+    <lastmod>2023-03-21T21:30:23+00:00</lastmod>
   </url><url>
     <loc>https://jena.apache.org/documentation/io/</loc>
-    <lastmod>2022-09-22T10:18:03+10:00</lastmod>
+    <lastmod>2023-03-21T21:30:23+00:00</lastmod>
   </url><url>
     <loc>https://jena.apache.org/documentation/io/json-ld-11.html</loc>
     <lastmod>2022-05-04T22:17:27+01:00</lastmod>
@@ -449,8 +458,8 @@
     <loc>https://jena.apache.org/documentation/fuseki2/fuseki-webapp.html</loc>
     <lastmod>2022-11-16T11:52:14+01:00</lastmod>
   </url><url>
-    <loc>https://jena.apache.org/documentation/io/arp_sax.html</loc>
-    <lastmod>2023-02-05T18:59:30+01:00</lastmod>
+    <loc>https://jena.apache.org/documentation/io/arp/arp_sax.html</loc>
+    <lastmod>2023-03-21T21:30:23+00:00</lastmod>
   </url><url>
     <loc>https://jena.apache.org/documentation/tools/schemagen-maven.html</loc>
     <lastmod>2020-04-29T21:07:12+01:00</lastmod>
@@ -695,8 +704,8 @@
     <loc>https://jena.apache.org/tutorials/using_jena_with_eclipse_pt.html</loc>
     <lastmod>2022-12-21T14:55:40+01:00</lastmod>
   </url><url>
-    <loc>https://jena.apache.org/documentation/io/arp_standalone.html</loc>
-    <lastmod>2023-02-05T18:59:30+01:00</lastmod>
+    <loc>https://jena.apache.org/documentation/io/arp/arp_standalone.html</loc>
+    <lastmod>2023-03-21T21:30:23+00:00</lastmod>
   </url><url>
     <loc>https://jena.apache.org/download/maven.html</loc>
     <lastmod>2022-12-21T14:55:40+01:00</lastmod>