blob: 8f15306cb9fef7a63758f49f13989610bccd5787 [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-extension.css" rel="stylesheet" type="text/css">
<link href="/css/jena.css" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="/images/favicon.ico" />
<script src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></script>
<script src="/js/jena-navigation.js" type="text/javascript"></script>
<script src="/js/bootstrap.min.js" type="text/javascript"></script>
<script src="/js/improve.js" type="text/javascript"></script>
</head>
<body>
<nav class="navbar navbar-default" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></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 navbar-ex1-collapse">
<ul class="nav navbar-nav">
<li id="homepage"><a href="/index.html"><span class="glyphicon glyphicon-home"></span> Home</a></li>
<li id="download"><a href="/download/index.cgi"><span class="glyphicon glyphicon-download-alt"></span> Download</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-book"></span> Learn <b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="dropdown-header">Tutorials</li>
<li><a href="/tutorials/index.html">Overview</a></li>
<li><a href="/documentation/fuseki2/index.html">Fuseki Triplestore</a></li>
<li><a href="/documentation/notes/index.html">How-To's</a></li>
<li><a href="/documentation/query/manipulating_sparql_using_arq.html">Manipulating SPARQL using ARQ</a></li>
<li><a href="/tutorials/rdf_api.html">RDF core API tutorial</a></li>
<li><a href="/tutorials/sparql.html">SPARQL tutorial</a></li>
<li><a href="/tutorials/using_jena_with_eclipse.html">Using Jena with Eclipse</a></li>
<li class="divider"></li>
<li class="dropdown-header">References</li>
<li><a href="/documentation/index.html">Overview</a></li>
<li><a href="/documentation/query/index.html">ARQ (SPARQL)</a></li>
<li><a href="/documentation/assembler/index.html">Assembler</a></li>
<li><a href="/documentation/tools/index.html">Command-line tools</a></li>
<li><a href="/documentation/rdfs/">Data with RDFS Inferencing</a></li>
<li><a href="/documentation/geosparql/index.html">GeoSPARQL</a></li>
<li><a href="/documentation/inference/index.html">Inference API</a></li>
<li><a href="/documentation/javadoc.html">Javadoc</a></li>
<li><a href="/documentation/ontology/">Ontology API</a></li>
<li><a href="/documentation/permissions/index.html">Permissions</a></li>
<li><a href="/documentation/extras/querybuilder/index.html">Query Builder</a></li>
<li><a href="/documentation/rdf/index.html">RDF API</a></li>
<li><a href="/documentation/rdfconnection/">RDF Connection - SPARQL API</a></li>
<li><a href="/documentation/io/">RDF I/O</a></li>
<li><a href="/documentation/rdfstar/index.html">RDF-star</a></li>
<li><a href="/documentation/shacl/index.html">SHACL</a></li>
<li><a href="/documentation/shex/index.html">ShEx</a></li>
<li><a href="/documentation/jdbc/index.html">SPARQL over JDBC</a></li>
<li><a href="/documentation/tdb/index.html">TDB</a></li>
<li><a href="/documentation/tdb2/index.html">TDB2</a></li>
<li><a href="/documentation/query/text-query.html">Text Search</a></li>
</ul>
</li>
<li class="drop down">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-book"></span> Javadoc <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/documentation/javadoc.html">All Javadoc</a></li>
<li><a href="/documentation/javadoc/arq/">ARQ</a></li>
<li><a href="/documentation/javadoc_elephas.html">Elephas</a></li>
<li><a href="/documentation/javadoc/fuseki2/">Fuseki</a></li>
<li><a href="/documentation/javadoc/geosparql/">GeoSPARQL</a></li>
<li><a href="/documentation/javadoc/jdbc/">JDBC</a></li>
<li><a href="/documentation/javadoc/jena/">Jena Core</a></li>
<li><a href="/documentation/javadoc/permissions/">Permissions</a></li>
<li><a href="/documentation/javadoc/extras/querybuilder/">Query Builder</a></li>
<li><a href="/documentation/javadoc/shacl/">SHACL</a></li>
<li><a href="/documentation/javadoc/tdb/">TDB</a></li>
<li><a href="/documentation/javadoc/text/">Text Search</a></li>
</ul>
</li>
<li id="ask"><a href="/help_and_support/index.html"><span class="glyphicon glyphicon-question-sign"></span> Ask</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-bullhorn"></span> Get involved <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/getting_involved/index.html">Contribute</a></li>
<li><a href="/help_and_support/bugs_and_suggestions.html">Report a bug</a></li>
<li class="divider"></li>
<li class="dropdown-header">Project</li>
<li><a href="/about_jena/about.html">About Jena</a></li>
<li><a href="/about_jena/architecture.html">Architecture</a></li>
<li><a href="/about_jena/citing.html">Citing</a></li>
<li><a href="/about_jena/team.html">Project team</a></li>
<li><a href="/about_jena/contributions.html">Related projects</a></li>
<li><a href="/about_jena/roadmap.html">Roadmap</a></li>
<li class="divider"></li>
<li class="dropdown-header">ASF</li>
<li><a href="http://www.apache.org/">Apache Software Foundation</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
<li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
<li><a href="http://www.apache.org/security/">Security</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
</ul>
</li>
<li id="edit"><a href="https://github.com/apache/jena-site/edit/main/source/documentation/archive/sdb/configuration.md" title="Edit this page on GitHub"><span class="glyphicon glyphicon-pencil"></span> Edit this page</a></li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="row">
<div class="col-md-12">
<div id="breadcrumbs">
<ol class="breadcrumb">
<li><a href='/documentation'>DOCUMENTATION</a></li>
<li><a href='/documentation/archive'>ARCHIVE</a></li>
<li><a href='/documentation/archive/sdb'>SDB</a></li>
<li class="active">CONFIGURATION</li>
</ol>
</div>
<h1 class="title">SDB Configuration</h1>
<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="contents">Contents</h2>
<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>
<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>
</div>
</div>
</div>
<footer class="footer">
<div class="container" style="font-size:80%" >
<p>
Copyright &copy; 2011&ndash;2022 The Apache Software Foundation, Licensed under the
<a href="http://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 type="text/javascript">
var link = $('a[href="' + this.location.pathname + '"]');
if (link != undefined)
link.parents('li,ul').addClass('active');
</script>
</body>
</html>