blob: fa591f0cbdfcdec4d6c1278cfc9a6aa641698823 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<title>Apache Jena - TDB Datasets</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/tdb/datasets.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/tdb'>TDB</a></li>
<li class="active">DATASETS</li>
</ol>
</div>
<h1 class="title">TDB Datasets</h1>
<p>An
<a href="http://www.w3.org/TR/sparql11-query/#rdfDataset" title="http://www.w3.org/TR/rdf-sparql-query/#rdfDataset">RDF Dataset</a>
is a collection of one, unnamed, default graph and zero, or more
named graphs. In a SPARQL query, a query pattern is matched against
the default graph unless the GRAPH keyword is applied to a
pattern.</p>
<h2 id="dataset-storage">Dataset Storage</h2>
<p>One file location (directory) is used to store one RDF dataset. The
unnamed graph of the dataset is held as a single graph while all
the named graphs are held in a collection of quad indexes.</p>
<p>Every dataset is obtained via TDBFactory.createDataset(Location)
within a JVM is the same dataset. (If a model is obtained from via
TDBFactory.createModel(Location) there is a hidden, shared dataset
and the appropriate model is returned. The preferred style
is to create the dataset, then get a model.)</p>
<h2 id="dataset-query">Dataset Query</h2>
<p>There is full support for SPARQL query over named graphs in a
TDB-back dataset.</p>
<p>All the named graphs can be treated as a single graph which is the
union (RDF merge) of all the named graphs. This is given the
special graph name <a href="urn:x-arq:UnionGraph%5C">urn:x-arq:UnionGraph\</a> in a GRAPH pattern.</p>
<p>When querying the RDF merge of named graphs, the default graph in
the store is not included. This feature applies to queries only. It
does not affect the storage nor does it change loading.</p>
<p>Alternatively, if the symbol tdb:unionDefaultGraph (see
<a href="configuration.html">TDB Configuration</a>) is
set, the unnamed graph for the query is the union of all the named
graphs in the datasets. The stored default graph is ignored and is
not part of the data of the union graph although it is
accessible by the special name <code>&lt;urn:x-arq:DefaultGraph\&gt;</code> in a GRAPH
pattern.</p>
<p>Set globally:</p>
<pre><code>TDB.getContext().set(TDB.symUnionDefaultGraph, true) ;
</code></pre>
<p>or set on a per query basis:</p>
<pre><code>try(QueryExecution qExec = QueryExecution.dataset(dataset)
.query(query)
.set(TDB.symUnionDefaultGraph,true)
.build() ) {
....
}
</code></pre>
<h2 id="special-graph-names">Special Graph Names</h2>
<table>
<thead>
<tr>
<th>URI</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>urn:x-arq:UnionGraph</code></td>
<td>The RDF merge of all the named graphs in the datasets of the query.</td>
</tr>
<tr>
<td><code>urn:x-arq:DefaultGraph</code></td>
<td>The default graph of the dataset, used when the default graph of the query is the union graph.</td>
</tr>
</tbody>
</table>
<p>Note that setting tdb:unionDefaultGraph does not affect the default
graph or default model obtained with dataset.getDefaultModel().</p>
<p>The RDF merge of all named graph can be accessed as the named graph
<code>urn:x-arq:UnionGraph</code> using
<code>Dataset.getNamedModel(&quot;urn:x-arq:UnionGraph&quot;)</code> .</p>
<h2 id="dataset-inferencing">Dataset Inferencing</h2>
<p>Inferencing on a Model in a Dataset, using the <a href="java_api.html">TDB Java API</a>, follows the same pattern as an in-memory InfModel.
The use of <a href="tdb_transactions.html">TDB Transactions</a> is <strong>strongly</strong> recommended to avoid data corruption.</p>
<pre><code> //Open TDB Dataset
String directory = ...
Dataset dataset = TDBFactory.createDataset(directory);
//Retrieve Named Graph from Dataset, or use Default Graph.
String graphURI = &quot;http://example.org/myGraph&quot;;
Model model = dataset.getNamedModel(graphURI);
//Create RDFS Inference Model, or use other Reasoner e.g. OWL.
InfModel infModel = ModelFactory.createRDFSModel(model);
...
//Perform operations on infModel.
...
</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>