blob: d128bd8c03b41f0eefa0240959f6fb5b36d5f7a5 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<title>Apache Jena - Reading and Writing RDF in Apache Jena</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/io/__index.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 active">IO</li>
</ol>
</div>
<h1 class="title">Reading and Writing RDF in Apache Jena</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="#formats">Formats</a></li>
<li><a href="#command-line-tools">Command line tools</a></li>
<li><a href="#inference">Inference</a></li>
</ul>
</nav>
</aside>
<article class="flex-column me-lg-4">
<p>This page details the setup of RDF I/O technology (RIOT).</p>
<ul>
<li><a href="#formats">Formats</a></li>
<li><a href="#command-line-tools">Commands</a></li>
<li><a href="rdf-input.html">Reading RDF in Jena</a></li>
<li><a href="rdf-output.html">Writing RDF in Jena</a></li>
<li><a href="streaming-io.html">Working with RDF Streams</a></li>
</ul>
<h2 id="formats">Formats</h2>
<p>The following RDF formats are supported by Jena. In addition, other syntaxes
can be integrated into both the parser and writer registries.</p>
<ul>
<li>Turtle</li>
<li>JSON-LD</li>
<li>N-Triples</li>
<li>N-Quads</li>
<li>TriG</li>
<li>RDF/XML</li>
<li>TriX</li>
<li>RDF/JSON</li>
<li>RDF Binary</li>
</ul>
<p>RDF/JSON is different from JSON-LD - it is a direct encoding of RDF triples in JSON.
See the <a href="rdf-json.html">description of RDF/JSON</a>.</p>
<p>RDF Binary is a binary encoding of RDF (graphs and datasets) that can be useful
for fast parsing. See <a href="rdf-binary.html">RDF Binary</a>.</p>
<h2 id="command-line-tools">Command line tools</h2>
<p>There are scripts in Jena download to run these commands.</p>
<ul>
<li><code>riot</code> - parse, guessing the syntax from the file extension.
Assumes N-Quads/N-Triples from stdin.</li>
<li><code>turtle</code>, <code>ntriples</code>, <code>nquads</code>, <code>trig</code>, <code>rdfxml</code> - parse a particular language</li>
</ul>
<p>These can be called directly as Java programs:</p>
<p>The file extensions understood are:</p>
<table>
<thead>
<tr>
<th> Extension </th>
<th>  Language </th>
</tr>
</thead>
<tbody>
<tr>
<td><code>.ttl</code></td>
<td>Turtle</td>
</tr>
<tr>
<td><code>.nt</code></td>
<td>N-Triples</td>
</tr>
<tr>
<td><code>.nq</code></td>
<td>N-Quads</td>
</tr>
<tr>
<td><code>.trig</code></td>
<td>TriG</td>
</tr>
<tr>
<td><code>.rdf</code></td>
<td>RDF/XML</td>
</tr>
<tr>
<td><code>.owl</code></td>
<td>RDF/XML</td>
</tr>
<tr>
<td><code>.jsonld</code></td>
<td>JSON-LD</td>
</tr>
<tr>
<td><code>.trdf</code></td>
<td>RDF Thrift</td>
</tr>
<tr>
<td><code>.rt</code></td>
<td>RDF Thrift</td>
</tr>
<tr>
<td><code>.rpb</code></td>
<td>RDF Protobuf</td>
</tr>
<tr>
<td><code>.pbrdf</code></td>
<td>RDF Protobuf</td>
</tr>
<tr>
<td><code>.rj</code></td>
<td>RDF/JSON</td>
</tr>
<tr>
<td><code>.trix</code></td>
<td>TriX</td>
</tr>
</tbody>
</table>
<p><code>.n3</code> is supported but only as a synonym for Turtle.</p>
<p>The <a href="trix.html">TriX</a> support is for the core TriX format.</p>
<p>In addition, if the extension is <code>.gz</code> the file is assumed to be gzip
compressed. The file name is examined for an inner extension. For
example, <code>.nt.gz</code> is gzip compressed N-Triples.</p>
<p>Jena does not support all possible compression formats itself, only
GZip and BZip2 are supported directly. If you want to use an
alternative compression format you can do so by piping the output of the
relevant decompression utility into one of Jena&rsquo;s commands e.g.</p>
<pre><code>zstd -d &lt; FILE.nq.zst | riot --syntax NQ ...
</code></pre>
<p>These scripts call java programs in the <code>riotcmd</code> package. For example:</p>
<pre><code>java -cp ... riotcmd.riot file.ttl
</code></pre>
<p>This can be a mixture of files in different syntaxes when file extensions
are used to determine the file syntax type.</p>
<p>The scripts all accept the same arguments (type <code>&quot;riot --help&quot;</code> to
get command line reminders):</p>
<ul>
<li><code>--syntax=NAME</code>; Explicitly set the input syntax for all files.</li>
<li><code>--validate</code>: Checking mode: same as <code>--strict --sink --check=true</code>.</li>
<li><code>--check=true/false</code>: Run with checking of literals and IRIs either on or off.</li>
<li><code>--time</code>: Output timing information.</li>
<li><code>--sink</code>: No output.</li>
<li><code>--output=FORMAT</code>: Output in a given syntax (streaming if possible).</li>
<li><code>--formatted=FORMAT</code>: Output in a given syntax, using pretty printing.</li>
<li><code>--stream=FORMAT</code>: Output in a given syntax, streaming (not all syntaxes can be streamed).</li>
</ul>
<p>To aid in checking for errors in UTF8-encoded files, there is a
utility which reads a file of bytes as UTF8 and checks the encoding.</p>
<ul>
<li><code>utf8</code> &ndash; read bytes as UTF8</li>
</ul>
<h2 id="inference">Inference</h2>
<p>RIOT support creation of inferred triples during the parsing
process:</p>
<pre><code>riotcmd.infer --rdfs VOCAB FILE FILE ...
</code></pre>
<p>Output will contain the base data and triples inferred based on
RDF subclass, subproperty, domain and range declarations.</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="#formats">Formats</a></li>
<li><a href="#command-line-tools">Command line tools</a></li>
<li><a href="#inference">Inference</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>