blob: a2fee81b4dc0b4829f8b541d1acd0006d91c6845 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<title>Apache Jena - SDB Configuration</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/archive/sdb/configuration.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/archive'>ARCHIVE</a></li>
<li class="breadcrumb-item"><a href='/documentation/archive/sdb'>SDB</a></li>
<li class="breadcrumb-item active">CONFIGURATION.HTML</li>
</ol>
</div>
<h1 class="title">SDB Configuration</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="#setting-options">Setting Options</a></li>
<li><a href="#current-options">Current Options</a>
<ul>
<li><a href="#queries-over-all-named-graphs">Queries over all Named Graphs</a></li>
<li><a href="#streaming-over-jdbc">Streaming over JDBC</a></li>
<li><a href="#annotated-sql">Annotated SQL</a></li>
</ul>
</li>
</ul>
</nav>
</aside>
<article class="flex-column me-lg-4">
<hr>
<blockquote>
<p>The Apache Jena SDB module has been retired and is no longer supported.<br/>
The last release of Jena with this module was Apache Jena 3.17.0.<br/></p>
</blockquote>
<hr>
<p>This page describes the configuration options available. These are
options for query processing, not for the database layout and
storage, which is controlled by
<a href="store_description.html" title="SDB/Store Description">store descriptions</a>.</p>
<h2 id="setting-options">Setting Options</h2>
<p>Options can be set globally, throughout the JVM, or on a per query
execution basis. SDB uses the same mechanism as
<a href="http://jena.sf.net/ARQ" title="http://jena.sf.net/ARQ">ARQ</a>.</p>
<p>There is a global context, which is give to each query
execution as it is created. Modifications to the global context
after the query execution is created are not seen by the query
execution. Modifications to the context of a single query execution
do not affect any other query execution nor the global context.</p>
<p>A context is a set of symbol/value pairs. Symbols are used created
internal to ARQ and SDB and access via Java constants. Values are
any Java object, together with the values <code>true</code> and <code>false</code>, which
are short for the constants of class <code>java.lang.Boolean</code>.</p>
<p>Setting globally:</p>
<pre><code> SDB.getContext().set(symbol, value) ;
</code></pre>
<p>Per query execution:</p>
<pre><code> QueryExecution qExec = QueryExecutionFactory.create(...) ;
qExec.getContext.set(symbol, value) ;
</code></pre>
<p>Setting for a query execution happens before any query compilation
or setup happens. Creation of a query execution object does not
compile the query, which happens when the appropriate <code>.exec</code>
method is called.</p>
<h2 id="current-options">Current Options</h2>
<table>
<thead>
<tr>
<th>Symbol</th>
<th>Effect</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>SDB.unionDefaultGraph</code></td>
<td>Query patterns on the default graph match against the union of the named graphs.</td>
<td>false</td>
</tr>
<tr>
<td><code>SDB.jdbcStream</code></td>
<td>Attempt to stream JDBC results.</td>
<td>true</td>
</tr>
<tr>
<td><code>SDB.jdbcFetchSize</code></td>
<td>Set the JDBC fetch size on the SQL query statements. Must be &gt;= 0.</td>
<td>unset</td>
</tr>
<tr>
<td><code>SDB.streamGraphAPI</code></td>
<td>Stream Jena APIs (also requires <code>jdbcStream</code> and <code>jdbcFetchSize</code></td>
<td>false</td>
</tr>
<tr>
<td><code>SDB.annotateGeneratedSQL</code></td>
<td>Put SQL comments in SQL</td>
<td>true</td>
</tr>
</tbody>
</table>
<h3 id="queries-over-all-named-graphs">Queries over all Named Graphs</h3>
<p>All the named graphs can be treated as a single graph in two ways:
either set the SDB option above or use the URI that refers to RDF
merge of the named graphs (<code>urn:x-arq:UnionGraph</code>).</p>
<p>When querying the RDF merge of named graph, the default graph in
the store is not included.</p>
<p>This feature applies to queries only. It does not affect the
storage nor does it change loading.</p>
<p>To find out which named graph a triple can be found in, use <code>GRAPH</code>
as usual.</p>
<p>The following special IRIs exist for use as a graph name in <code>GRAPH</code>
only:</p>
<ul>
<li><code>&lt;urn:x-arq:DefaultGraph&gt;</code> – the default graph, even when
option for named union queries is set.</li>
<li><code>&lt;urn:x-arq:UnionGraph&gt;</code> – the union of all named graphs, even
when the option for named union queries is not set.</li>
</ul>
<h3 id="streaming-over-jdbc">Streaming over JDBC</h3>
<p>By default, SDB processes results from SQL statements in a
streaming fashion. It is important to close query execution
objects, especially if not consuming all the results, because that
causes the underlying JDBC result set to be closed. JDBC result
sets can be a scarce system resource.</p>
<p>If this option is set, but the JDBC connection is not streaming,
then this feature is harmless. Setting it false caused SDB to read
all results of an SQL statement at once, treating streamed
connections as unstreamed.</p>
<p>Note that this only streams results end-to-end if the underlying
JDBC connection itself is set up to stream. Most do not in the
default configuration to reduce transient resource peaks on the
server under load.</p>
<p>Setting the fetch size enables cursors in some databases but there
may be restrictions imposed by the database. See the documentation
for your database for details.</p>
<p>In addition, operations on the graph API can be made streaming by
also setting the Graph API to streaming.</p>
<h3 id="annotated-sql">Annotated SQL</h3>
<p>SQL generation can include SQL comments to show how SPARQL has been
turned into SQL. This option is <code>true</code> by default and always set
for the command <code>sdbprint</code>.</p>
<pre><code>SDB.getContext().setFalse(SDB.annotateGeneratedSQL) ;
</code></pre>
</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="#setting-options">Setting Options</a></li>
<li><a href="#current-options">Current Options</a>
<ul>
<li><a href="#queries-over-all-named-graphs">Queries over all Named Graphs</a></li>
<li><a href="#streaming-over-jdbc">Streaming over JDBC</a></li>
<li><a href="#annotated-sql">Annotated SQL</a></li>
</ul>
</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>