blob: 022c1305fd21eafffd7c5b7a30e99fe8165bab15 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<title>Apache Jena - SOH - SPARQL over HTTP</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/fuseki2/soh.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/fuseki2'>FUSEKI2</a></li>
<li class="active">SOH</li>
</ol>
</div>
<h1 class="title">SOH - SPARQL over HTTP</h1>
<p><strong>SOH</strong> (SPARQL Over HTTP) is a set of command-line scripts for
working with SPARQL 1.1. SOH is server-independent and will work
with any compliant SPARQL 1.1 system offering HTTP access.</p>
<p>SOH is written in ruby.</p>
<p>Commands:</p>
<ul>
<li><code>s-http</code> – SPARQL 1.1 HTTP Protocol</li>
<li><code>s-get</code>, <code>s-put</code>, <code>s-delete</code>, <code>s-post</code>, <code>s-head</code> – abbreviation for
<code>s-http get ...</code> etc.</li>
<li><code>s-query</code> – SPARQL 1.1 Query, both GET and POST of queries.</li>
<li><code>s-update</code> – SPARQL 1.1 Update</li>
<li><code>s-update-form</code> – SPARQL 1.1 Update using the HTML form and a
parameter of <code>request=</code>.</li>
</ul>
<p>Each command supports the <code>-v</code> flag to print out details of the
HTTP interaction.</p>
<h2 id="contents">Contents</h2>
<ul>
<li><a href="#soh-sparql-query">SOH SPARQL Query</a></li>
<li><a href="#soh-sparql-http">SOH SPARQL HTTP</a></li>
<li><a href="#soh-sparql-update">SOH SPARQL Update</a></li>
<li><a href="#service-endpoints">Service endpoints</a></li>
</ul>
<h2 id="soh-sparql-query">SOH SPARQL Query</h2>
<pre><code>s-query --service=endpointURL 'query string'
s-query --service=endpointURL --query=queryFile.rq
</code></pre>
<h2 id="soh-sparql-http">SOH SPARQL HTTP</h2>
<p>The <a href="http://www.w3.org/TR/sparql11-http-rdf-update/">SPARQL Graph Store Protocol</a>
is a way to read, create and update whole graphs in an RDF Dataset.
It is useful for data management and building into
automated processes because it is easy to script with
tools like <code>curl</code> or <code>wget</code>.</p>
<p>SOH provides commands that simplify the use HTTP further by setting HTTP
headers based on the operation performed.</p>
<p>The syntax of the commands is:</p>
<pre><code>s-http VERB datasetURI graphName [file]
</code></pre>
<p>where graph name is a URI or the word <em>default</em> for the default
graph.</p>
<p><code>s-get</code>, <code>s-put</code>, <code>s-delete</code>, <code>s-post</code> are abbreviations for <code>s-http get</code>,
<code>s-http put</code>, <code>s-http delete</code> and <code>s-http post</code> respectively.</p>
<p><code>file</code> is needed for PUT and POST. The file name extension determines
the HTTP content type.</p>
<pre><code> s-put http://localhost:3030/dataset default data.ttl
s-get http://localhost:3030/dataset default
s-put http://localhost:3030/dataset http://example/graph data.ttl
s-get http://localhost:3030/dataset http://example/graph
</code></pre>
<h2 id="soh-sparql-update">SOH SPARQL Update</h2>
<pre><code>s-update --service=endpointURL 'update string'
s-update --service=endpointURL --update=updateFile.ru
</code></pre>
<h2 id="service-endpoints">Service endpoints</h2>
<p>SOH is a general purpose set of scripts that work with any SPARQL
1.1. server. Different servers offer different naming conventions
for HTTP REST, query and update. This section provides summary
information about using SOH with some servers. See the
documentation for each server for authoritative information.</p>
<p>If you have details for other servers, <a href="/getting_involved/index.html">get involved</a></p>
<h3 id="fuseki">Fuseki</h3>
<p>If a <a href="index.html">Fuseki</a> server is run with the
command:</p>
<pre><code>fuseki-server --update --mem /MyDataset
</code></pre>
<p>If you want to run fuseki server with persistent data store then use the following command:</p>
<pre><code>fuseki-server --loc=[store location] --update /MyDataset
</code></pre>
<p>then the service endpoints are:</p>
<ul>
<li>HTTP: <code>http://localhost:3030/MyDataset/data</code></li>
<li>Query: <code>http://localhost:3030/MyDataset/query</code> or <code>http://localhost:3030/MyDataset/sparql</code></li>
<li>Update: <code>http://localhost:3030/MyDataset/update</code></li>
</ul>
</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>