blob: 2106bdb0dde3c678aafd48cce0f6feaa4ea18ac5 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<title>Apache Jena - SDB/Commands</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/commands.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">COMMANDS</li>
</ol>
</div>
<h1 class="title">SDB/Commands</h1>
<p>This page describes the command line programs that can be used to
create an SDB store, load data into it and to issue queries.</p>
<h2 id="contents">Contents</h2>
<ul>
<li>
<p><a href="#scripts">Scripts</a></p>
<ul>
<li><a href="#script-set-up">Script set up</a></li>
<li><a href="#argument-structure">Argument Structure</a></li>
</ul>
</li>
<li>
<p><a href="#store-description">Store Description</a></p>
<ul>
<li><a href="#modifying-the-store-description">Modifying the Store Description</a></li>
<li><a href="#logging-and-monitoring">Logging and Monitoring</a></li>
</ul>
</li>
<li>
<p><a href="#sdb-commands">SDB Commands</a></p>
<ul>
<li><a href="#database-creation">Database creation</a></li>
<li><a href="#loading-data">Loading data</a></li>
<li><a href="#query">Query</a></li>
<li><a href="#testing">Testing</a></li>
<li><a href="#other">Other</a></li>
</ul>
</li>
</ul>
<h2 id="scripts">Scripts</h2>
<p>The directory <code>bin/</code> contains shell scripts to run the commands
from the command line. The scripts are bash scripts which also run
over <a href="http://www.cygwin.com/" title="http://www.cygwin.com/">Cygwin</a>.</p>
<h3 id="script-set-up">Script set up</h3>
<p>Set the environment variable <code>SDBROOT</code> to the root of the SDB
installation.</p>
<p>A store description can include naming the class for the JDBC
driver. Getting a <code>Store</code> object from a store description will
automatically load the JDBC driver from the classpath.</p>
<p>When running scripts, set the environment variable <code>SDB_JDBC</code> to
one or more jar files for JDBC drivers. If it is more than one jar
file, use the classpath syntax for your system. You can also use
the system property <code>jdbc.drivers</code>.</p>
<p>Set the environment variables <code>SDB_USER</code> and <code>SDB_PASSWORD</code> to the
database user name and password for JDBC.</p>
<pre><code> $ export SDBROOT=&quot;/path/to/sdb
$ export SDB_USER=&quot;YourDbUserName&quot;
$ export SDB_PASSWORD=&quot;YourDbPassword&quot;
$ export SDB_JDBC=&quot;/path/to/driver.jar&quot;
</code></pre>
<p>They are bash scripts, and work on Linux and Cygwin for MS
Windows.</p>
<pre><code> $ export PATH=$SDBROOT/bin:$PATH
</code></pre>
<p>Alternatively, there are wrapper scripts in <code>$SDBROOT/bin2</code> which
can be placed in a convenient directory that is already on the
shell command path.</p>
<h3 id="argument-structure">Argument Structure</h3>
<p>All commands take a SDB store description to extract the connection
and configuration information they need. This is written
<em><code>SPEC</code></em> in the command descriptions below but it can be
composed of several arguments as described here.</p>
<p>Each command then has command-specific arguments described below.</p>
<p>All commands support <code>--help</code> to give details of named and
positional arguments.</p>
<p>There are two equivalent forms of named argument syntax:</p>
<pre><code>--arg=val
--arg val
</code></pre>
<h2 id="store-description">Store Description</h2>
<p>If this is not specified, commands load the description file
sdb.ttl from the current directory.</p>
<pre><code> --sdb=&lt;sdb.ttl&gt;
</code></pre>
<p>This store description is a
<a href="/documentation/assembler/">Jena assembler</a>
file. The description consists of two parts; a store description
and a connection description.</p>
<p>Often, this is all that is needed to describe which store to use.
The individual components of a connection or configuration can be
overridden after the description have been read, before it is
processed.</p>
<p>The directory <code>Store/</code> has example assembler files.</p>
<p>The full details of the assembler file is given in
&lsquo;<a href="store_description.html" title="SDB/Store Description">SDB/Store Description</a>&rsquo;</p>
<h3 id="modifying-the-store-description">Modifying the Store Description</h3>
<p>The individual items of a store description can be overridden by
various command arguments. The description in the assembler file is
read, then any command line arguments used to modify the
description, then the appropriate object is created from the
modified description.</p>
<p>Set the layout type:</p>
<pre><code> --layout : layout name
</code></pre>
<p>Currently, one of <code>layout1</code>, <code>layout2</code>, <code>layout2/index</code>,
<code>layout2/hash</code>.</p>
<p>Set JDBC details:</p>
<pre><code> --dbName : Database Name
--dbHost : Host machine name
--dbType : Database type.
--dbUser : Database use
--dbPassword : Database password.
</code></pre>
<p>The host name can <code>host</code> or <code>host:port</code>.</p>
<p>The better way to handle passwords is to use environment variables
SDB_USER and SDB_PASSWORD because then the user/password is not
stored in a visible way.</p>
<h3 id="logging-and-monitoring">Logging and Monitoring</h3>
<p>All commands take the following arguments (although they may do
nothing if they make no sense to the command).</p>
<pre><code> -v
</code></pre>
<p>Be verbose.</p>
<pre><code> --time
</code></pre>
<p>Print timing information. Treat with care - while the timer avoids
recording JVM and some class loading time, it can&rsquo;t avoid all class
loading. Hence, the values of timing are more meaningful on longer
operations. JDBC operation times to a remote server can also be a
significant proportion in short operations.</p>
<pre><code> --log=[all|none|queries|statements|exceptions]
</code></pre>
<p>to log SQL actions on the database connection (but not the prepared
statements used by the loader). Can be repeated on the command
line.</p>
<h2 id="sdb-commands">SDB Commands</h2>
<h3 id="database-creation">Database creation</h3>
<pre><code> sdbconfig SPEC [--create|--format|--indexes|--dropIndexes]
</code></pre>
<p>Setup a database.</p>
<table>
<thead>
<tr>
<th>Option</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>--create</code></td>
<td>formats the store and sets up indexes</td>
</tr>
<tr>
<td><code>--format</code></td>
<td>just formats the store and creates indexes for loading, not querying.</td>
</tr>
<tr>
<td><code>--indexes</code></td>
<td>Create indexes for querying</td>
</tr>
<tr>
<td><code>--dropIndexes</code> </td>
<td>Drop indexes for querying.</td>
</tr>
</tbody>
</table>
<p>Loading large graphs can be faster by formatting, loading the data,
then building the query indexes with this command.</p>
<pre><code> sdbtruncate SPEC
</code></pre>
<p>Truncate the store. Non-transactional. Destroys data.</p>
<h3 id="loading-data">Loading data</h3>
<pre><code> sdbload SPEC FILE [FILE ...]
</code></pre>
<p>Load RDF data into a store using the SDB bulk loader. Data is
streamed into the database and is not loaded as a single
transaction.</p>
<p>The file&rsquo;s extension is used to determine the data syntax.</p>
<p>To load into a named graph:</p>
<pre><code> sdbload SPEC --graph=URI FILE [FILE ...]
</code></pre>
<h3 id="query">Query</h3>
<pre><code> sdbquery SPEC --query=FILE
</code></pre>
<p>Execute a query.</p>
<pre><code> sdbprint SPEC --print=X [--sql] --query=FILE
</code></pre>
<p>Print details of a query. <code>X</code> is any of <code>query</code>, <code>op</code>, <code>sqlNode</code>,
<code>sql</code> or <code>plan</code>. <code>--print=X</code> can be repeated. &ndash;sql is short for
&ndash;print=sql. The default is <code>--print=sql</code>.</p>
<h3 id="testing">Testing</h3>
<pre><code> sdbtest SPEC MANIFEST
</code></pre>
<p>Execute a test manifest file. The manifest of all query tests,
which will test connection and loading of data, is in
<code>&lt;em&gt;SDBROOT&lt;/em&gt;/testing/manifest-sdb.ttl</code>.</p>
<h3 id="other">Other</h3>
<pre><code> sdbdump SPEC --out=SYNTAX
</code></pre>
<p>Dump the contents of a store N-TRIPLES or a given serialization
format (usual Jena syntax names, e.g. <code>Turtle</code> or <code>TTL</code>).</p>
<p>Only suitable for data sizes that fit in memory. All output
syntaxes that do some form of pretty printing will need additional
space for their internal datastructures.</p>
<pre><code> sdbsql SPEC [ --file=FILE | SQL string ]
</code></pre>
<p>Execute a SQL command on the store, using the connection details
from the store specification. The SQL command either comes from
file <code>FILE</code> or the command line as a string.</p>
<pre><code> sdbinfo SPEC
</code></pre>
<p>Details of a store.</p>
<pre><code> sdbmeta SPEC --out=SYNTAX
</code></pre>
<p>Do things with the meta graphs of a store.</p>
<pre><code> sdbscript SPEC FILE
</code></pre>
<p>Execute a script. Currently only JRuby is supported.</p>
<pre><code> sdbtuple SPEC [--create|--print|--drop|--truncate] tableName
</code></pre>
<p>Many of the tables used within SDB are tuples of RDF nodes. This
command allows low-level access to these tuple tables. Misuse of
this command can corrupt the store.</p>
</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>