blob: 822c23d3d2945101028b617b6c9958cc4a85e227 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<title>Apache Jena - SPARQL Tutorial - 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-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/tutorials/sparql_datasets.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='/tutorials'>TUTORIALS</a></li>
<li class="breadcrumb-item active">SPARQL DATASETS</li>
</ol>
</div>
<h1 class="title">SPARQL Tutorial - Datasets</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="#querying-datasets">Querying datasets</a>
<ul>
<li><a href="#example-data">Example Data</a></li>
<li><a href="#accessing-the-dataset">Accessing the Dataset</a></li>
<li><a href="#querying-a-specific-graph">Querying a specific graph</a></li>
<li><a href="#querying-to-find-data-from-graphs-that-match-a-pattern">Querying to find data from graphs that match a pattern</a></li>
</ul>
</li>
<li><a href="#describing-rdf-datasets---from-and-from-named">Describing RDF Datasets - <code>FROM</code> and <code>FROM NAMED</code></a></li>
</ul>
</nav>
</aside>
<article class="flex-column me-lg-4">
<p>This section covers RDF Datasets - an RDF Dataset is the unit that
is queried by a SPARQL query. It consists of a default graph, and a
number of named graphs.</p>
<h2 id="querying-datasets">Querying datasets</h2>
<p>The graph matching operation
(<a href="sparql_basic_patterns.html">basic patterns</a>,
<a href="sparql_optionals.html"><code>OPTIONAL</code>s</a>, and <a href="sparql_union.html"><code>UNION</code>s</a>) work on
one RDF graph. This starts out being the default graph of the
dataset but it can be changed by the <code>GRAPH</code> keyword.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sparql" data-lang="sparql"><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">GRAPH</span> <span style="color:#00a000">uri</span> { ... <span style="">pattern</span> ... }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">GRAPH</span> <span style="">var</span> { ... <span style="">pattern</span> ... }
</span></span></code></pre></div><p>If a URI is given, the pattern will be matched against the graph in
the dataset with that name - if there isn&rsquo;t one, the <code>GRAPH</code> clause
fails to match at all.</p>
<p>If a variable is given, all the named graphs (not the default
graph) are tried. The variable may be used elsewhere so that if,
during execution, its value is already known for a solution, only
the specific named graph is tried.</p>
<h3 id="example-data">Example Data</h3>
<p>An RDF dataset can take a variety of forms. Two common setups are
to have the default graph being the union (the RDF merge) of all
the named graphs or to have the default graph be an inventory of
the named graphs (where they came from, when they were read etc).
There are no limitations - one graph can be included twice under
different names, or some graphs may share triples with others.</p>
<p>In the examples below we will use the following dataset that might
occur for an RDF aggregator of book details:</p>
<p>Default graph (<a href="sparql_data/ds-dft.ttl">ds-dft.ttl</a>):</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-turtle" data-lang="turtle"><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">@prefix</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#bbb"> </span><span style="color:#b8860b">&lt;http://purl.org/dc/elements/1.1/&gt;</span><span style="color:#bbb"> </span>.<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="color:#a2f;font-weight:bold">@prefix</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">xsd:</span><span style="color:#bbb"> </span><span style="color:#b8860b">&lt;http://www.w3.org/2001/XMLSchema#&gt;</span><span style="color:#bbb"> </span>.<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="color:#b8860b">&lt;ds-ng-1.ttl&gt;</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#008000;font-weight:bold">date</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;2005-07-14T03:18:56+0100&#34;</span><span style="color:#666">^^</span><span style="font-style:italic">xsd:dateTime</span><span style="color:#bbb"> </span>.<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="color:#b8860b">&lt;ds-ng-2.ttl&gt;</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#008000;font-weight:bold">date</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;2005-09-22T05:53:05+0100&#34;</span><span style="color:#666">^^</span><span style="font-style:italic">xsd:dateTime</span><span style="color:#bbb"> </span>.<span style="color:#bbb">
</span></span></span></code></pre></div><p>Named graph (<a href="sparql_data/ds-ng-1.ttl">ds-ng-1.ttl</a>):</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-turtle" data-lang="turtle"><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">@prefix</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#bbb"> </span><span style="color:#b8860b">&lt;http://purl.org/dc/elements/1.1/&gt;</span><span style="color:#bbb"> </span>.<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span>[]<span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#008000;font-weight:bold">title</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;Harry Potter and the Philospher&#39;s Stone&#34;</span><span style="color:#bbb"> </span>.<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span>[]<span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#008000;font-weight:bold">title</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;Harry Potter and the Chamber of Secrets&#34;</span><span style="color:#bbb"> </span>.<span style="color:#bbb">
</span></span></span></code></pre></div><p>Named graph (<a href="sparql_data/ds-ng-2.ttl">ds-ng-2.ttl</a>):</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-turtle" data-lang="turtle"><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">@prefix</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#bbb"> </span><span style="color:#b8860b">&lt;http://purl.org/dc/elements/1.1/&gt;</span><span style="color:#bbb"> </span>.<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span>[]<span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#008000;font-weight:bold">title</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;Harry Potter and the Sorcerer&#39;s Stone&#34;</span><span style="color:#bbb"> </span>.<span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span>[]<span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#008000;font-weight:bold">title</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;Harry Potter and the Chamber of Secrets&#34;</span><span style="color:#bbb"> </span>.<span style="color:#bbb">
</span></span></span></code></pre></div><p>That is, we have two small graphs describing some books, and we
have a default graph which records when these graphs were last
read.</p>
<p>Queries can be run with the command line application (this would be
all one line):</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>$ java -cp ... arq.sparql
</span></span><span style="display:flex;"><span> --graph ds-dft.ttl --namedgraph ds-ng-1.ttl --namedgraph ds-ng-2.ttl
</span></span><span style="display:flex;"><span> --query query file
</span></span></code></pre></div><p>Datasets don&rsquo;t have to be created just for the lifetime of the query.
They can be created and stored in a database, as would be more
usual for an aggregator application.</p>
<h3 id="accessing-the-dataset">Accessing the Dataset</h3>
<p>The first example just accesses the default graph
(<a href="sparql_data/q-ds-1.rq">q-ds-1.rq</a>):</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sparql" data-lang="sparql"><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">PREFIX</span> <span style="color:#00f;font-weight:bold">xsd</span>: <span style="color:#a0a000">&lt;http://www.w3.org/2001/XMLSchema#&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">PREFIX</span> <span style="color:#00f;font-weight:bold">dc</span>: <span style="color:#a0a000">&lt;http://purl.org/dc/elements/1.1/&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">PREFIX</span> : <span style="color:#a0a000">&lt;.&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">SELECT</span> <span style="color:#666">*</span>
</span></span><span style="display:flex;"><span>{ <span style="color:#b8860b">?s</span> <span style="color:#b8860b">?p</span> <span style="color:#b8860b">?o</span> }
</span></span></code></pre></div><p>(The &ldquo;<code>PREFIX : &lt;.&gt;</code>&rdquo; just helps format the output)</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-turtle" data-lang="turtle"><span style="display:flex;"><span><span style="">----------------------------------------------------------------------</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="">s</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="">p</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="">o</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">======================================================================</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">:</span><span style="color:#008000;font-weight:bold">ds-ng-2</span>.<span style="">ttl</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#008000;font-weight:bold">date</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;2005-09-22T05:53:05+01:00&#34;</span><span style="color:#666">^^</span><span style="font-style:italic">xsd:dateTime</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">:</span><span style="color:#008000;font-weight:bold">ds-ng-1</span>.<span style="">ttl</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#008000;font-weight:bold">date</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;2005-07-14T03:18:56+01:00&#34;</span><span style="color:#666">^^</span><span style="font-style:italic">xsd:dateTime</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">----------------------------------------------------------------------</span><span style="color:#bbb">
</span></span></span></code></pre></div><p>This is the default graph only - nothing from the named graphs
because they aren&rsquo;t queried unless explicitly indicated via
<code>GRAPH</code>.</p>
<p>We can query for all triples by querying the default graph and the
named graphs (<a href="sparql_data/q-ds-2.rq">q-ds-2.rq</a>):</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sparql" data-lang="sparql"><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">PREFIX</span> <span style="color:#00f;font-weight:bold">xsd</span>: <span style="color:#a0a000">&lt;http://www.w3.org/2001/XMLSchema#&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">PREFIX</span> <span style="color:#00f;font-weight:bold">dc</span>: <span style="color:#a0a000">&lt;http://purl.org/dc/elements/1.1/&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">PREFIX</span> : <span style="color:#a0a000">&lt;.&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">SELECT</span> <span style="color:#666">*</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span> { <span style="color:#b8860b">?s</span> <span style="color:#b8860b">?p</span> <span style="color:#b8860b">?o</span> } <span style="color:#a2f;font-weight:bold">UNION</span> { <span style="color:#a2f;font-weight:bold">GRAPH</span> <span style="color:#b8860b">?g</span> { <span style="color:#b8860b">?s</span> <span style="color:#b8860b">?p</span> <span style="color:#b8860b">?o</span> } }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>giving:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-turtle" data-lang="turtle"><span style="display:flex;"><span><span style="">---------------------------------------------------------------------------------------</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="">s</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="">p</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="">o</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="">g</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">=======================================================================================</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">:</span><span style="color:#008000;font-weight:bold">ds-ng-2</span>.<span style="">ttl</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#008000;font-weight:bold">date</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;2005-09-22T05:53:05+01:00&#34;</span><span style="color:#666">^^</span><span style="font-style:italic">xsd:dateTime</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">:</span><span style="color:#008000;font-weight:bold">ds-ng-1</span>.<span style="">ttl</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#008000;font-weight:bold">date</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;2005-07-14T03:18:56+01:00&#34;</span><span style="color:#666">^^</span><span style="font-style:italic">xsd:dateTime</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="">_</span><span style="color:#00f;font-weight:bold">:</span><span style="color:#008000;font-weight:bold">b0</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#008000;font-weight:bold">title</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;Harry Potter and the Sorcerer&#39;s Stone&#34;</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">:</span><span style="color:#008000;font-weight:bold">ds-ng-2</span>.<span style="">ttl</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="">_</span><span style="color:#00f;font-weight:bold">:</span><span style="color:#008000;font-weight:bold">b1</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#008000;font-weight:bold">title</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;Harry Potter and the Chamber of Secrets&#34;</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">:</span><span style="color:#008000;font-weight:bold">ds-ng-2</span>.<span style="">ttl</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="">_</span><span style="color:#00f;font-weight:bold">:</span><span style="color:#008000;font-weight:bold">b2</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#008000;font-weight:bold">title</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;Harry Potter and the Chamber of Secrets&#34;</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">:</span><span style="color:#008000;font-weight:bold">ds-ng-1</span>.<span style="">ttl</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="">_</span><span style="color:#00f;font-weight:bold">:</span><span style="color:#008000;font-weight:bold">b3</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">dc:</span><span style="color:#008000;font-weight:bold">title</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;Harry Potter and the Philospher&#39;s Stone&#34;</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#00f;font-weight:bold">:</span><span style="color:#008000;font-weight:bold">ds-ng-1</span>.<span style="">ttl</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">---------------------------------------------------------------------------------------</span><span style="color:#bbb">
</span></span></span></code></pre></div><h3 id="querying-a-specific-graph">Querying a specific graph</h3>
<p>If the application knows the name graph, it can directly ask a
query such as finding all the titles in a given graph
(<a href="sparql_data/q-ds-3.rq">q-ds-3.rq</a>):</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sparql" data-lang="sparql"><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">PREFIX</span> <span style="color:#00f;font-weight:bold">dc</span>: <span style="color:#a0a000">&lt;http://purl.org/dc/elements/1.1/&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">PREFIX</span> : <span style="color:#a0a000">&lt;.&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">SELECT</span> <span style="color:#b8860b">?title</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span> <span style="color:#a2f;font-weight:bold">GRAPH</span> :<span style="color:#008000;font-weight:bold">ds-ng-2.ttl</span>
</span></span><span style="display:flex;"><span> { <span style="color:#b8860b">?b</span> <span style="color:#00f;font-weight:bold">dc</span>:<span style="color:#008000;font-weight:bold">title</span> <span style="color:#b8860b">?title</span> }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Results:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-turtle" data-lang="turtle"><span style="display:flex;"><span><span style="">---------------------------------------------</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="">title</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">=============================================</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;Harry Potter and the Sorcerer&#39;s Stone&#34;</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;Harry Potter and the Chamber of Secrets&#34;</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">---------------------------------------------</span><span style="color:#bbb">
</span></span></span></code></pre></div><h3 id="querying-to-find-data-from-graphs-that-match-a-pattern">Querying to find data from graphs that match a pattern</h3>
<p>The name of the graphs to be queried can be determined with the
query itself. The same process for variables applies whether they
are part of a graph pattern or the <code>GRAPH</code> form. The query below
(<a href="sparql_data/q-ds-4.rq">q-ds-4.rq</a>) sets a condition on the variable used to
select named graphs, based on information in the default graph.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sparql" data-lang="sparql"><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">PREFIX</span> <span style="color:#00f;font-weight:bold">xsd</span>: <span style="color:#a0a000">&lt;http://www.w3.org/2001/XMLSchema#&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">PREFIX</span> <span style="color:#00f;font-weight:bold">dc</span>: <span style="color:#a0a000">&lt;http://purl.org/dc/elements/1.1/&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">PREFIX</span> : <span style="color:#a0a000">&lt;.&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">SELECT</span> <span style="color:#b8860b">?date</span> <span style="color:#b8860b">?title</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span> <span style="color:#b8860b">?g</span> <span style="color:#00f;font-weight:bold">dc</span>:<span style="color:#008000;font-weight:bold">date</span> <span style="color:#b8860b">?date</span> . <span style="color:#a2f;font-weight:bold">FILTER</span> (<span style="color:#b8860b">?date</span> <span style="color:#666">&gt;</span> <span style="color:#b44">&#34;2005-08-01T00:00:00Z&#34;</span><span style="color:#666">^^</span><span style="color:#00f;font-weight:bold">xsd</span>:<span style="color:#008000;font-weight:bold">dateTime</span> )
</span></span><span style="display:flex;"><span> <span style="color:#a2f;font-weight:bold">GRAPH</span> <span style="color:#b8860b">?g</span>
</span></span><span style="display:flex;"><span> { <span style="color:#b8860b">?b</span> <span style="color:#00f;font-weight:bold">dc</span>:<span style="color:#008000;font-weight:bold">title</span> <span style="color:#b8860b">?title</span> }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>The results of executing this query on the example dataset are the
titles in one of the graphs, the one with the date later than 1
August 2005.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-turtle" data-lang="turtle"><span style="display:flex;"><span><span style="">-----------------------------------------------------------------------------------------</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="">date</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="">title</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">=========================================================================================</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;2005-09-22T05:53:05+01:00&#34;</span><span style="color:#666">^^</span><span style="font-style:italic">xsd:dateTime</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;Harry Potter and the Sorcerer&#39;s Stone&#34;</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;2005-09-22T05:53:05+01:00&#34;</span><span style="color:#666">^^</span><span style="font-style:italic">xsd:dateTime</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb"> </span><span style="color:#b44">&#34;Harry Potter and the Chamber of Secrets&#34;</span><span style="color:#bbb"> </span><span style="">|</span><span style="color:#bbb">
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"></span><span style="">-----------------------------------------------------------------------------------------</span><span style="color:#bbb">
</span></span></span></code></pre></div><h2 id="describing-rdf-datasets---from-and-from-named">Describing RDF Datasets - <code>FROM</code> and <code>FROM NAMED</code></h2>
<p>A query execution can be given the dataset when the execution
object is built or it can be described in the query itself. When
the details are on the command line, a temporary dataset is created
but an application can create datasets and then use them in many
queries.</p>
<p>When described in the query, <code>FROM &lt;</code><em><code>url</code></em><code>&gt;</code> is used to identify
the contents to be in the default graph. There can be more than one
<code>FROM</code> clause and the default graph is result of reading each file
into the default graph. It is the RDF merge of the individual
graphs.</p>
<p>Don&rsquo;t be confused by the fact the default graph is described by one
or more URLs in <code>FROM</code> clauses. This is where the data is read
from, not the name of the graph. As several FROM clauses can be
given, the data can be read in from several places but none of them
become the graph name.</p>
<p><code>FROM NAMED &lt;</code><em><code>url</code></em><code>&gt;</code> is used to identify a named graph. The
graph is given the name <em>url</em> and the data is read from that
location. Multiple <code>FROM NAMED</code> clauses cause multiple graphs to be
added to the dataset.</p>
<p>For example, the query to find all the triples in both default
graph and named graphs could be written as
(<a href="sparql_data/q-ds-5.rq">q-ds-5.rq</a>):</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sparql" data-lang="sparql"><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">PREFIX</span> <span style="color:#00f;font-weight:bold">xsd</span>: <span style="color:#a0a000">&lt;http://www.w3.org/2001/XMLSchema#&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">PREFIX</span> <span style="color:#00f;font-weight:bold">dc</span>: <span style="color:#a0a000">&lt;http://purl.org/dc/elements/1.1/&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">PREFIX</span> : <span style="color:#a0a000">&lt;.&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">SELECT</span> <span style="color:#666">*</span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">FROM</span> <span style="color:#a0a000">&lt;ds-dft.ttl&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">FROM NAMED</span> <span style="color:#a0a000">&lt;ds-ng-1.ttl&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">FROM NAMED</span> <span style="color:#a0a000">&lt;ds-ng-2.ttl&gt;</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span> { <span style="color:#b8860b">?s</span> <span style="color:#b8860b">?p</span> <span style="color:#b8860b">?o</span> } <span style="color:#a2f;font-weight:bold">UNION</span> { <span style="color:#a2f;font-weight:bold">GRAPH</span> <span style="color:#b8860b">?g</span> { <span style="color:#b8860b">?s</span> <span style="color:#b8860b">?p</span> <span style="color:#b8860b">?o</span> } }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p><a href="sparql_results.html">Next: results</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="#querying-datasets">Querying datasets</a>
<ul>
<li><a href="#example-data">Example Data</a></li>
<li><a href="#accessing-the-dataset">Accessing the Dataset</a></li>
<li><a href="#querying-a-specific-graph">Querying a specific graph</a></li>
<li><a href="#querying-to-find-data-from-graphs-that-match-a-pattern">Querying to find data from graphs that match a pattern</a></li>
</ul>
</li>
<li><a href="#describing-rdf-datasets---from-and-from-named">Describing RDF Datasets - <code>FROM</code> and <code>FROM NAMED</code></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>