blob: 37f6a863a4e973e0df48f93af2526d881f028556 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<title>Apache Jena - Fuseki HTTP Administration Protocol</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="/css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="/css/bootstrap-icons.css" rel="stylesheet" media="screen"><link rel="stylesheet" type="text/css" href="https://jena.apache.org/sass/jena.1b17c39a117e22b46db4c66f6395dc27c134a60377d87d2d5745b8600eb69722.css" integrity="sha256-GxfDmhF&#43;IrRttMZvY5XcJ8E0pgN32H0tV0W4YA62lyI=">
<link rel="shortcut icon" href="/images/favicon.ico" />
</head>
<body>
<nav class="navbar navbar-expand-lg bg-body-tertiary" role="navigation">
<div class="container">
<div class="navbar-header">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="/index.html">
<img class="logo-menu" src="/images/jena-logo/jena-logo-notext-small.png" alt="jena logo">Apache Jena</a>
</div>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li id="homepage" class="nav-item"><a class="nav-link" href="/index.html"><span class="bi-house"></span> Home</a></li>
<li id="download" class="nav-item"><a class="nav-link" href="/download/index.cgi"><span class="bi-download"></span> Download</a></li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false"><span class="bi-journal"></span> Learn <b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="dropdown-header">Tutorials</li>
<li><a class="dropdown-item" href="/tutorials/index.html">Overview</a></li>
<li><a class="dropdown-item" href="/documentation/fuseki2/index.html">Fuseki Triplestore</a></li>
<li><a class="dropdown-item" href="/documentation/notes/index.html">How-To's</a></li>
<li><a class="dropdown-item" href="/documentation/query/manipulating_sparql_using_arq.html">Manipulating SPARQL using ARQ</a></li>
<li><a class="dropdown-item" href="/tutorials/rdf_api.html">RDF core API tutorial</a></li>
<li><a class="dropdown-item" href="/tutorials/sparql.html">SPARQL tutorial</a></li>
<li><a class="dropdown-item" href="/tutorials/using_jena_with_eclipse.html">Using Jena with Eclipse</a></li>
<li class="dropdown-divider"></li>
<li class="dropdown-header">References</li>
<li><a class="dropdown-item" href="/documentation/index.html">Overview</a></li>
<li><a class="dropdown-item" href="/documentation/query/index.html">ARQ (SPARQL)</a></li>
<li><a class="dropdown-item" href="/documentation/io/">RDF I/O</a></li>
<li><a class="dropdown-item" href="/documentation/assembler/index.html">Assembler</a></li>
<li><a class="dropdown-item" href="/documentation/tools/index.html">Command-line tools</a></li>
<li><a class="dropdown-item" href="/documentation/rdfs/">Data with RDFS Inferencing</a></li>
<li><a class="dropdown-item" href="/documentation/geosparql/index.html">GeoSPARQL</a></li>
<li><a class="dropdown-item" href="/documentation/inference/index.html">Inference API</a></li>
<li><a class="dropdown-item" href="/documentation/ontology/">Ontology API</a></li>
<li><a class="dropdown-item" href="/documentation/permissions/index.html">Permissions</a></li>
<li><a class="dropdown-item" href="/documentation/extras/querybuilder/index.html">Query Builder</a></li>
<li><a class="dropdown-item" href="/documentation/rdf/index.html">RDF API</a></li>
<li><a class="dropdown-item" href="/documentation/rdfconnection/">RDF Connection - SPARQL API</a></li>
<li><a class="dropdown-item" href="/documentation/rdfstar/index.html">RDF-star</a></li>
<li><a class="dropdown-item" href="/documentation/shacl/index.html">SHACL</a></li>
<li><a class="dropdown-item" href="/documentation/shex/index.html">ShEx</a></li>
<li><a class="dropdown-item" href="/documentation/tdb/index.html">TDB</a></li>
<li><a class="dropdown-item" href="/documentation/tdb2/index.html">TDB2</a></li>
<li><a class="dropdown-item" href="/documentation/query/text-query.html">Text Search</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false"><span class="bi-journal-code"></span> Javadoc <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="/documentation/javadoc.html">All Javadoc</a></li>
<li><a class="dropdown-item" href="/documentation/javadoc/arq/">ARQ</a></li>
<li><a class="dropdown-item" href="/documentation/javadoc/fuseki2/">Fuseki</a></li>
<li><a class="dropdown-item" href="/documentation/javadoc/geosparql/">GeoSPARQL</a></li>
<li><a class="dropdown-item" href="/documentation/javadoc/jena/">Jena Core</a></li>
<li><a class="dropdown-item" href="/documentation/javadoc/permissions/">Permissions</a></li>
<li><a class="dropdown-item" href="/documentation/javadoc/extras/querybuilder/">Query Builder</a></li>
<li><a class="dropdown-item" href="/documentation/javadoc/shacl/">SHACL</a></li>
<li><a class="dropdown-item" href="/documentation/javadoc/tdb/">TDB</a></li>
<li><a class="dropdown-item" href="/documentation/javadoc/text/">Text Search</a></li>
</ul>
</li>
</ul>
<form class="d-flex" role="search" action="/search" method="GET">
<div class="input-group">
<input class="form-control border-end-0 border m-0" type="search" name="q" id="search-query" placeholder="Search...." aria-label="Search" style="width: 10rem;">
<button class="btn btn-outline-secondary border-start-0 border" type="submit">
<i class="bi-search"></i>
</button>
</div>
</form>
<ul class="navbar-nav">
<li id="ask" class="nav-item"><a class="nav-link" href="/help_and_support/index.html" title="Ask"><span class="bi-patch-question"></span><span class="text-body d-none d-xxl-inline"> Ask</span></a></li>
<li class="nav-item dropdown">
<a href="#" title="Get involved" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false"><span class="bi-megaphone"></span><span class="text-body d-none d-xxl-inline"> Get involved </span><b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="/getting_involved/index.html">Contribute</a></li>
<li><a class="dropdown-item" href="/help_and_support/bugs_and_suggestions.html">Report a bug</a></li>
<li class="dropdown-divider"></li>
<li class="dropdown-header">Project</li>
<li><a class="dropdown-item" href="/about_jena/about.html">About Jena</a></li>
<li><a class="dropdown-item" href="/about_jena/architecture.html">Architecture</a></li>
<li><a class="dropdown-item" href="/about_jena/citing.html">Citing</a></li>
<li><a class="dropdown-item" href="/about_jena/team.html">Project team</a></li>
<li><a class="dropdown-item" href="/about_jena/contributions.html">Related projects</a></li>
<li><a class="dropdown-item" href="/about_jena/roadmap.html">Roadmap</a></li>
<li><a class="dropdown-item" href="/about_jena/security-advisories.html">Security Advisories</a></li>
<li class="dropdown-divider"></li>
<li class="dropdown-header">ASF</li>
<li><a class="dropdown-item" href="https://www.apache.org/">Apache Software Foundation</a></li>
<li><a class="dropdown-item" href="https://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
<li><a class="dropdown-item" href="https://www.apache.org/licenses/LICENSE-2.0">License</a></li>
<li><a class="dropdown-item" href="https://www.apache.org/security/">Security</a></li>
<li><a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
</ul>
</li>
<li class="nav-item" id="edit"><a class="nav-link" href="https://github.com/apache/jena-site/edit/main/source/documentation/fuseki2/fuseki-server-protocol.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>
</nav>
<div class="container">
<div class="row">
<div class="col-md-12">
<div id="breadcrumbs">
<ol class="breadcrumb mt-4 p-2 bg-body-tertiary">
<li class="breadcrumb-item"><a href='/documentation'>DOCUMENTATION</a></li>
<li class="breadcrumb-item"><a href='/documentation/fuseki2'>FUSEKI2</a></li>
<li class="breadcrumb-item active">FUSEKI SERVER PROTOCOL</li>
</ol>
</div>
<h1 class="title">Fuseki HTTP Administration Protocol</h1>
<main class="d-flex flex-xl-row flex-column">
<aside class="text-muted align-self-start mb-3 p-0 d-xl-none d-block">
<h2 class="h6 sticky-top m-0 p-2 bg-body-tertiary">On this page</h2>
<nav id="TableOfContents">
<ul>
<li><a href="#operations">Operations</a></li>
<li><a href="#ping">Ping</a></li>
<li><a href="#server-information">Server Information</a></li>
<li><a href="#datasets-and-services">Datasets and Services</a>
<ul>
<li><a href="#adding-a-dataset-and-its-services">Adding a Dataset and its Services.</a>
<ul>
<li><a href="#templates">Templates</a></li>
<li><a href="#assembler-example">Assembler example</a></li>
</ul>
</li>
<li><a href="#removing-a-dataset">Removing a Dataset</a></li>
<li><a href="#active-and-offline">Active and Offline</a></li>
</ul>
</li>
<li><a href="#statistics">Statistics</a>
<ul>
<li><a href="#backup">Backup</a></li>
<li><a href="#backup-policies">Backup policies</a></li>
<li><a href="#compact">Compact</a></li>
</ul>
</li>
<li><a href="#tasks">Tasks</a></li>
<li><a href="#metrics">Metrics</a></li>
</ul>
</nav>
</aside>
<article class="flex-column me-lg-4">
<p>This page describes the HTTP Protocol used to control an Fuseki server via
its administrative interface.</p>
<ul>
<li><a href="#operations">Operations</a></li>
<li><a href="#server-information">Server Information</a></li>
<li><a href="#datasets-and-services">Datasets and Services</a>
<ul>
<li>Adding a Dataset and its Services</li>
<li>Removing a Dataset</li>
<li>Dormant and Active</li>
</ul>
</li>
<li><a href="#remove-dataset">Removing a dataset</a></li>
</ul>
<p>All admin operations have URL paths starting <code>/$/</code> to avoid clashes with
dataset names and this prefix is reserved for the Fuseki control functions.
Further operations may be added within this naming scheme.</p>
<h2 id="operations">Operations</h2>
<p>Replace <code>{name}</code> with a dataset name: e.g. <code>/$/backup/myDataset</code>.</p>
<table>
<thead>
<tr>
<th>Method</th>
<th>URL pattern</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><tt>GET</tt></td>
<td><code>/$/ping</code></td>
<td>Check if server is alive</td>
</tr>
<tr>
<td><tt>POST</tt></td>
<td><code>/$/ping</code></td>
<td></td>
</tr>
<tr>
<td><tt>GET</tt></td>
<td><code>/$/server</code></td>
<td>Get basic information (version, uptime, datasets&hellip;)</td>
</tr>
<tr>
<td><tt>POST</tt></td>
<td><code>/$/server</code></td>
<td></td>
</tr>
<tr>
<td><tt>GET</tt></td>
<td><code>/$/status</code></td>
<td>Alias of <code>/$/server</code></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><tt>POST</tt></td>
<td><code>/$/datasets</code></td>
<td>Create a new dataset</td>
</tr>
<tr>
<td><tt>GET</tt></td>
<td><code>/$/datasets</code></td>
<td>Get a list of datasets</td>
</tr>
<tr>
<td><tt>DELETE</tt></td>
<td><code>/$/datasets/{name}</code></td>
<td>Remove a dataset</td>
</tr>
<tr>
<td><tt>GET</tt></td>
<td><code>/$/datasets/{name}</code></td>
<td>Get information about a dataset</td>
</tr>
<tr>
<td><tt>POST</tt></td>
<td><code>/$/datasets/{name}?state=offline</code></td>
<td>Switch state of dataset to offline</td>
</tr>
<tr>
<td><tt>POST</tt></td>
<td><code>/$/datasets/{name}?state=active</code></td>
<td>Switch state of dataset to online</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><tt>POST</tt></td>
<td><code>/$/server/shutdown</code></td>
<td>Not implemented yet</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><tt>GET</tt></td>
<td><code>/$/stats</code></td>
<td>Get request statistics for all datasets</td>
</tr>
<tr>
<td><tt>GET</tt></td>
<td><code>/$/stats/{name}</code></td>
<td>Get request statistics for a dataset</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><tt>POST</tt></td>
<td><code>/$/backup/{name}</code></td>
<td></td>
</tr>
<tr>
<td><tt>POST</tt></td>
<td><code>/$/backups/{name}</code></td>
<td>Alias of <code>/$/backup/{name}</code></td>
</tr>
<tr>
<td><tt>GET</tt></td>
<td><code>/$/backups-list</code></td>
<td></td>
</tr>
<tr>
<td><tt>POST</tt></td>
<td><code>/$/compact/{name}?deleteOld=true</code></td>
<td></td>
</tr>
<tr>
<td><tt>POST</tt></td>
<td><code>/$/sleep</code></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><tt>GET</tt></td>
<td><code>/$/tasks</code></td>
<td></td>
</tr>
<tr>
<td><tt>GET</tt></td>
<td><code>/$/tasks/{name}</code></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><tt>GET</tt></td>
<td><code>/$/metrics</code></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><tt>GET</tt></td>
<td><code>/$/logs</code></td>
<td>Not implemented yet</td>
</tr>
</tbody>
</table>
<h2 id="ping">Ping</h2>
<p>Pattern: <code>/$/ping</code></p>
<p>The URL <code>/$/ping</code> is a guaranteed low cost point to test whether a server
is running or not. It returns no other information other than to respond to the
request over <code>GET</code> or <code>POST</code> (to avoid any HTTP caching) with a 200 response.</p>
<p>Return: current timestamp</p>
<h2 id="server-information">Server Information</h2>
<p>Pattern: <code>/$/server</code></p>
<p>The URL <code>/$/server</code> returns details about the server and it&rsquo;s current status in JSON.</p>
<p><em>@@details of JSON format.</em></p>
<h2 id="datasets-and-services">Datasets and Services</h2>
<p>Pattern: <code>/$/datasets</code></p>
<p><code>/$/datasets</code> is a container representing all datasets present in the server.
<code>/$/datasets/{name}</code> names a specific dataset. As a container, operations on items
in the container, via <code>GET</code>, <code>POST</code> and <code>DELETE</code>, operate on specific dataset.</p>
<h3 id="adding-a-dataset-and-its-services">Adding a Dataset and its Services.</h3>
<blockquote>
<p><em>@@ May add server-managed templates</em></p>
</blockquote>
<p>A dataset set can be added to a running server. There are several methods
for doing this:</p>
<ul>
<li>Post the assembler file</li>
<li>HTML Form upload the assembler file</li>
<li>Use a built-in template (in-memory or persistent)</li>
</ul>
<p>All require HTTP <code>POST</code>.</p>
<p>Changes to the server state are carried across restarts.</p>
<p>For persistent datasets, for example <a href="/documentation/tdb">TDB</a>,
the dataset is persists across restart.</p>
<p>For in-memory datasets, the dataset is rebuilt from it&rsquo;s description
(this may include loading data from a file) but any changes are lost.</p>
<h4 id="templates">Templates</h4>
<p>A short-cut form for some common set-ups is provided by <tt>POST</tt>ing with
the following parameters (query string or HTML form):</p>
<table>
<thead>
<tr>
<th>Parameter</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>dbType</code></td>
<td>Either <code>mem</code> or <code>tdb</code></td>
</tr>
<tr>
<td><code>dbName</code></td>
<td>URL path name</td>
</tr>
</tbody>
</table>
<p>The dataset name must not be already in-use.</p>
<p>Datasets are created in directory <code>databases/</code>.</p>
<h4 id="assembler-example">Assembler example</h4>
<p>The assembler description contains data and service. It can be sent by posting the assembler RDF graph
in any RDF format or by posting from an HTML form (the syntax must be Turtle).</p>
<p>The assembler file is stored by the server will be used on restart or when making the dataset active again.</p>
<blockquote>
<p><em>@@</em></p>
</blockquote>
<h3 id="removing-a-dataset">Removing a Dataset</h3>
<p>Note: <code>DELETE</code> means &ldquo;gone for ever&rdquo;. The dataset name and the details of its
configuration are completely deleted and can not be recovered.</p>
<p>The data of a TDB dataset is not deleted.</p>
<h3 id="active-and-offline">Active and Offline</h3>
<p>A dataset is in one of two modes: &ldquo;active&rdquo;, meaning it is services request over HTTP
(subject to configuration and security), or &ldquo;offline&rdquo;, meaning the configuration and name
is known about by the server but the dataset is not attached to the server. When &ldquo;offline&rdquo;,
any persistent data can be manipulated outside the server.</p>
<p>Datasets are initially &ldquo;active&rdquo;. The transition from &ldquo;active&rdquo; to &ldquo;offline&rdquo; is graceful - all outstanding requests are completed.</p>
<h2 id="statistics">Statistics</h2>
<p>Pattern: <code>/$/stats/{name}</code></p>
<p>Statistics can be obtained for each dataset or all datasets in a single response.
<code>/$/stats</code> is treated as a container for this information.</p>
<blockquote>
<p><em>@@ stats details</em>
See <a href="fuseki-server-info.html">Fuseki Server Information</a> for details of statistics kept by a Fuseki server.</p>
</blockquote>
<h3 id="backup">Backup</h3>
<p>Pattern: <code>/$/backup/{name}</code></p>
<p>This operation initiates a backup and returns a JSON object with the task Id in it.</p>
<p>Backups are written to the server local directory &lsquo;backups&rsquo; as gzip-compressed N-Quads files.</p>
<p>See <a href="#tasks">Tasks</a> for how to monitor a backups progress.</p>
<p>Return: A task is allocated a identifier (usually, a number).</p>
<pre tabindex="0"><code>{ &#34;taskId&#34; : &#34;{taskId}&#34; }
</code></pre><p>The task id can be used to construct a URL to get details of the task:</p>
<pre tabindex="0"><code>/$/tasks/{taskId}
</code></pre><p>Pattern: <code>/$/backups-list</code></p>
<p>Returns a list of all the files in the backup area of the server. This is
useful for managing the files externally.</p>
<p>The returned JSON object will have the form <code>{ backups: [ ... ] }</code> where the <code>[]</code> array is
a list of file names.</p>
<p>Since 4.7.0 backups are written to a temporary file in the same directory and renamed on completion.
In case of server crash, it will not be renamed.
This guarantees backups are complete.
Cleanup of incomplete backups can be done by users on application / container start: remove all incomplete files.g</p>
<h3 id="backup-policies">Backup policies</h3>
<p>Users can use the backup api <a href="/documentation/fuseki2/fuseki-server-protocol.html#backup">the Fuseki HTTP Administration Protocol</a> to build backup policies.
See issue for more information <a href="https://github.com/apache/jena/issues/1500">https://github.com/apache/jena/issues/1500</a> .</p>
<h3 id="compact">Compact</h3>
<p>Pattern: <code>/$/compact/{name}</code></p>
<p>This operations initiates a database compaction task and returns a JSON object with the task Id in it.</p>
<p>The optional parameter and value <code>deleteOld=true</code> deletes the database which currently is compacted after compacting completion.</p>
<p>Compaction <strong>ONLY</strong> applies to TDB2 datasets, see <a href="../tdb2/tdb2_admin.html#compaction">TDB2 Database Administration</a>
for more details of this operation.</p>
<p>You can monitor the status of the task via the Tasks portion of the API. A successful compaction will have
the <code>finishPoint</code> field set and <code>success</code> field set to <code>true</code>.</p>
<h2 id="tasks">Tasks</h2>
<p>Some operations cause a background task to be executed, backup is an example.
The result of such operations includes a json object with the task id and
also a <code>Location:</code> header with the URL of the task created.</p>
<p>The progress of the task can be monitored with HTTP GET operations:</p>
<p>Pattern: <code>/$/tasks</code> – All asynchronous tasks.<br/>
Pattern: <code>/$/tasks/{taskId}</code> – A particular task.</p>
<p>The URL <code>/$/tasks</code> returns a description of all running and recently tasks. A finished task can be identified by having a <code>finishPoint</code> and <code>success</code> fields.</p>
<p>Each background task has an id. The URL <code>/$/tasks/{taskId}</code> gets a description about one single task.</p>
<p>Details of the last few completed tasks are retained, up to a fixed number. The records will eventually be removed as later tasks complete, and the task URL will then return 404.</p>
<p>Pattern: <code>/$/tasks</code> ; example:</p>
<pre tabindex="0"><code>[ {
&#34;finished&#34; : &#34;2014-05-28T12:52:51.860+01:00&#34; ,
&#34;started&#34; : &#34;2014-05-28T12:52:50.859+01:00&#34; ,
&#34;task&#34; : &#34;sleep&#34; ,
&#34;taskId&#34; : &#34;1&#34; ,
&#34;success&#34; : true
} ,
{
&#34;finished&#34; : &#34;2014-05-28T12:53:24.718+01:00&#34; ,
&#34;started&#34; : &#34;2014-05-28T12:53:14.717+01:00&#34; ,
&#34;task&#34; : &#34;sleep&#34; ,
&#34;taskId&#34; : &#34;2&#34; ,
&#34;success&#34; : true
}
]
</code></pre><p>Pattern: <code>/$/tasks/1</code> : example:</p>
<pre tabindex="0"><code>[ {
&#34;finished&#34; : &#34;2014-05-28T13:54:13.608+01:00&#34; ,
&#34;started&#34; : &#34;2014-05-28T13:54:03.607+01:00&#34; ,
&#34;task&#34; : &#34;backup&#34; ,
&#34;taskId&#34; : &#34;1&#34; ,
&#34;success&#34; : false
}
]
</code></pre><p>This is inside an array to make the format returned the same as <code>/$/tasks</code>.</p>
<h2 id="metrics">Metrics</h2>
<p>Pattern: <code>/$/metrics</code></p>
<blockquote>
<p><em>@@</em></p>
</blockquote>
</article>
<aside class="text-muted align-self-start mb-3 mb-xl-5 p-0 d-none d-xl-flex flex-column sticky-top">
<h2 class="h6 sticky-top m-0 p-2 bg-body-tertiary">On this page</h2>
<nav id="TableOfContents">
<ul>
<li><a href="#operations">Operations</a></li>
<li><a href="#ping">Ping</a></li>
<li><a href="#server-information">Server Information</a></li>
<li><a href="#datasets-and-services">Datasets and Services</a>
<ul>
<li><a href="#adding-a-dataset-and-its-services">Adding a Dataset and its Services.</a>
<ul>
<li><a href="#templates">Templates</a></li>
<li><a href="#assembler-example">Assembler example</a></li>
</ul>
</li>
<li><a href="#removing-a-dataset">Removing a Dataset</a></li>
<li><a href="#active-and-offline">Active and Offline</a></li>
</ul>
</li>
<li><a href="#statistics">Statistics</a>
<ul>
<li><a href="#backup">Backup</a></li>
<li><a href="#backup-policies">Backup policies</a></li>
<li><a href="#compact">Compact</a></li>
</ul>
</li>
<li><a href="#tasks">Tasks</a></li>
<li><a href="#metrics">Metrics</a></li>
</ul>
</nav>
</aside>
</main>
</div>
</div>
</div>
<footer class="bd-footer py-4 py-md-5 mt-4 mt-lg-5 bg-body-tertiary">
<div class="container" style="font-size:80%" >
<p>
Copyright &copy; 2011&ndash;2024 The Apache Software Foundation, Licensed under the
<a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
</p>
<p>
Apache Jena, Jena, the Apache Jena project logo, Apache and the Apache feather logos are trademarks of
The Apache Software Foundation.
<br/>
<a href="https://privacy.apache.org/policies/privacy-policy-public.html"
>Apache Software Foundation Privacy Policy</a>.
</p>
</div>
</footer>
<script src="/js/popper.min.js.js" type="text/javascript"></script>
<script src="/js/bootstrap.min.js" type="text/javascript"></script>
<script src="/js/improve.js" type="text/javascript"></script>
<script type="text/javascript">
(function() {
'use strict'
const links = document.querySelectorAll(`a[href="${window.location.pathname}"]`)
if (links !== undefined && links !== null) {
for (const link of links) {
link.classList.add('active')
let parentElement = link.parentElement
let count = 0
const levelsLimit = 4
while (['UL', 'LI'].includes(parentElement.tagName) && count <= levelsLimit) {
if (parentElement.tagName === 'LI') {
parentElement.querySelector('a:first-child').classList.add('active')
}
parentElement = parentElement.parentElement
count++
}
}
}
})()
</script>
</body>
</html>