blob: 7c5979d49ca89045f8184fccfb6d5e4a435ddaaa [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<title>Apache Jena - TDB 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/tdb/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/tdb'>TDB</a></li>
<li class="breadcrumb-item active">CONFIGURATION.HTML</li>
</ol>
</div>
<h1 class="title">TDB 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>
<ul>
<li>
<ul>
<li><a href="#setting-from-the-command-line">Setting from the command line</a></li>
<li><a href="#setting-with-java-system-properties">Setting with Java System properties</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#query-of-the-union-of-named-graphs">Query of the union of named graphs</a></li>
<li><a href="#logging-query-execution">Logging Query Execution</a></li>
<li><a href="#dataset-caching">Dataset Caching</a></li>
<li><a href="#file-access-mode">File Access Mode</a></li>
<li><a href="#tdb-configuration-symbols">TDB Configuration Symbols</a></li>
<li><a href="#advanced-store-configuration">Advanced Store Configuration</a></li>
</ul>
</nav>
</aside>
<article class="flex-column me-lg-4">
<p>There are a number of configuration options that affect the
operation of TDB.</p>
<h2 id="setting-options">Setting Options</h2>
<p>Options can be set globally, through out the JVM, or on a per query
execution basis. TDB 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 TDB and accessed 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> TDB.getContext().set(symbol, value) ;
</code></pre>
<p>Per query execution:</p>
<pre><code>try(QueryExecution qExec = QueryExecution.dataset(dataset)
.query(query).set(ARQ.symLogExec,true).build() ) {
....
}
</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>
<h4 id="setting-from-the-command-line">Setting from the command line</h4>
<p>Options can also set from the
<a href="commands.html#setting-options-from-the-command-line" title="TDB/Commands">command line</a>
with &ldquo;<code>--set</code>.</p>
<h4 id="setting-with-java-system-properties">Setting with Java System properties</h4>
<p>(TDB 0.8.5 and later)</p>
<p>Options can be set when invoking the JVM using the Java system
properties as set by &ldquo;<code>-D</code>&rdquo;.</p>
<h2 id="query-of-the-union-of-named-graphs">Query of the union of named graphs</h2>
<p>See <a href="datasets.html" title="TDB/Datasets">TDB/Datasets</a>.</p>
<h2 id="logging-query-execution">Logging Query Execution</h2>
<p>If the symbol &ldquo;<code>tdb:logExec</code>&rdquo; is set to &ldquo;true&rdquo;, and also the logger
<code>org.apache.jena.tdb.exec</code> is enabled from level &ldquo;info&rdquo;, then each
basic graph patterns is logged before execution. This pattern
logged is after substitution of variable values and after
optimization by the
<a href="optimizer.html" title="TDB/Optimizer">BGP optimizer</a>.</p>
<h2 id="dataset-caching">Dataset Caching</h2>
<p>(TDB 0.8.0 and later)</p>
<p>TDB caches datasets based on the location of the backing directory.
Within a single JVM, all attempts to create or open a dataset at a
particular location go through the same dataset (and same disk
caching). Therefore, an application can open the same location
several times in different places in the code and still get the
same underlying dataset for query and update.</p>
<p>Note that closing the dataset closes it everywhere (the opening
calls are not being reference counted).</p>
<h2 id="file-access-mode">File Access Mode</h2>
<p>The context symbol can be set to &ldquo;mapped&rdquo; or &ldquo;direct&rdquo;. Unset, or
the value &ldquo;default&rdquo;, ask TDB to use to make the choice based on
JVM. Leaving it to the default is <em>strongly</em> encouraged.</p>
<h2 id="tdb-configuration-symbols">TDB Configuration Symbols</h2>
<p>Configuration Symbols</p>
<table>
<thead>
<tr>
<th>Symbol</th>
<th>Java Constant</th>
<th>Effect</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>tdb:logExec</code></td>
<td><code>TDB.symLogExec</code></td>
<td>Log execution of BGPs. Set to &ldquo;true&rdquo; to enable. Must also enable the logger &ldquo;org.apache.jena.tdb.exec&rdquo;.</td>
<td>unset</td>
</tr>
<tr>
<td><code>tdb:unionDefaultGraph</code></td>
<td><code>TDB.symUnionDefaultGraph</code></td>
<td>Query patterns on the default graph match against the union of the named graphs.</td>
<td>unset</td>
</tr>
<tr>
<td><code>tdb:fileMode</code></td>
<td><code>SystemTDB.fileMode</code></td>
<td>Force use of memory mapped files (<code>&quot;mapped&quot;</code>) or direct file caching (<code>&quot;direct&quot;</code>). See discussion of TDB on 32 or 64 bit hardware, especially limitations of memory mapped files on 32 bit Java.</td>
<td>Set by the system based on 32 or 64 bit java.</td>
</tr>
</tbody>
</table>
<h2 id="advanced-store-configuration">Advanced Store Configuration</h2>
<p>Various internal caching sizes can be set to different values to the
defaults. See the <a href="store-parameters.html">full description</a>.</p>
</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>
<ul>
<li>
<ul>
<li><a href="#setting-from-the-command-line">Setting from the command line</a></li>
<li><a href="#setting-with-java-system-properties">Setting with Java System properties</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#query-of-the-union-of-named-graphs">Query of the union of named graphs</a></li>
<li><a href="#logging-query-execution">Logging Query Execution</a></li>
<li><a href="#dataset-caching">Dataset Caching</a></li>
<li><a href="#file-access-mode">File Access Mode</a></li>
<li><a href="#tdb-configuration-symbols">TDB Configuration Symbols</a></li>
<li><a href="#advanced-store-configuration">Advanced Store Configuration</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>