Author: buildbot
Date: Mon Aug 26 17:03:49 2013
New Revision: 876265
Log:
Staging update by buildbot for jena
Modified:
websites/staging/jena/trunk/content/ (props changed)
websites/staging/jena/trunk/content/documentation/jdbc/index.html
Propchange: websites/staging/jena/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Mon Aug 26 17:03:49 2013
@@ -1 +1 @@
-1517072
+1517603
Modified: websites/staging/jena/trunk/content/documentation/jdbc/index.html
==============================================================================
--- websites/staging/jena/trunk/content/documentation/jdbc/index.html (original)
+++ websites/staging/jena/trunk/content/documentation/jdbc/index.html Mon Aug
26 17:03:49 2013
@@ -106,12 +106,13 @@
<p>Jena JDBC is a set of libraries which provide SPARQL over JDBC driver
implementations.</p>
<p>This is a pure SPARQL over JDBC implementation, there is no attempt to
present the underlying
RDF data model as a relational model through the driver and only SPARQL
queries and updates
-are supported. Otherwise it is a fully fledge type 4 JDBC driver.</p>
+are supported.</p>
+<p>It provides type 4 drivers in that they are pure Java based but the drivers
are not JDBC compliant since
+by definition they <strong>do not</strong> support SQL.</p>
<h2 id="documentation">Documentation</h2>
<ul>
<li><a href="#overview">Overview</a></li>
<li><a href="#basic-usage">Basic Usage</a></li>
-<li><a href="#making-queries">Making Queries</a></li>
<li><a href="#alternatives">Alternatives</a></li>
<li><a href="drivers.html">Jena JDBC Drivers</a></li>
<li><a href="artifacts.html">Maven Artifacts for Jena JDBC</a></li>
@@ -171,7 +172,7 @@ memory which can use lots of memory when
<p>The following takes you through the basic usage of the in-memory JDBC
driver. The code should be familiar
to anyone who has used JDBC before and is easily used with our other <a
href="drivers.html">drivers</a> simply by
changing the connection URL appropriately.</p>
-<h3 id="making-a-connection">Making a Connection</h3>
+<h3 id="establishing-a-connection">Establishing a Connection</h3>
<p>Firstly we should ensure that the driver we wish to use is registered with
the JDBC driver manager, a static
method is provided for this:</p>
<div class="codehilite"><pre><span class="n">MemDriver</span><span
class="p">.</span><span class="n">register</span><span class="p">();</span>
@@ -180,32 +181,37 @@ method is provided for this:</p>
<p>Once this is done we can then make a JDBC connection just be providing an
appropriate connection URL:</p>
<div class="codehilite"><pre><span class="c1">// Make a connection using the
In-Memory driver starting from an empty dataset</span>
-<span class="n">Connection</span> <span class="n">conn</span> <span
class="o">=</span> <span class="n">DriverManager</span><span
class="p">.</span><span class="n">getConnection</span><span
class="p">(</span><span
class="s">"jdbc:jena:men:empty=true"</span><span class="p">);</span>
+<span class="n">Connection</span> <span class="n">conn</span> <span
class="o">=</span> <span class="n">DriverManager</span><span
class="p">.</span><span class="n">getConnection</span><span
class="p">(</span><span
class="s">"jdbc:jena:mem:empty=true"</span><span class="p">);</span>
</pre></div>
<p>Now we can go ahead and use the connection as you would normally.</p>
-<h3 id="making-queries">Making Queries</h3>
+<h3 id="performing-queries">Performing Queries</h3>
<p>You make queries as you would with any JDBC driver, the only difference
being that the queries must be SPARQL:</p>
<div class="codehilite"><pre><span class="c1">// Need a statement</span>
<span class="n">Statement</span> <span class="n">stmt</span> <span
class="o">=</span> <span class="n">conn</span><span class="p">.</span><span
class="n">createStatement</span><span class="p">();</span>
-<span class="c1">// Make a query</span>
-<span class="n">ResultSet</span> <span class="n">rset</span> <span
class="o">=</span> <span class="n">stmt</span><span class="p">.</span><span
class="n">executeQuery</span><span class="p">(</span><span
class="s">"SELECT DISTINCT ?type WHERE { ?s a ?type } LIMIT
100"</span><span class="p">);</span>
+<span class="n">try</span> <span class="p">{</span>
+ <span class="c1">// Make a query</span>
+ <span class="n">ResultSet</span> <span class="n">rset</span> <span
class="o">=</span> <span class="n">stmt</span><span class="p">.</span><span
class="n">executeQuery</span><span class="p">(</span><span
class="s">"SELECT DISTINCT ?type WHERE { ?s a ?type } LIMIT
100"</span><span class="p">);</span>
-<span class="c1">// Iterate over results</span>
-<span class="k">while</span> <span class="p">(</span><span
class="n">rest</span><span class="p">.</span><span class="n">next</span><span
class="p">())</span> <span class="p">{</span>
- <span class="c1">// Print out type as a string</span>
- <span class="n">System</span><span class="p">.</span><span
class="n">out</span><span class="p">.</span><span class="n">println</span><span
class="p">(</span><span class="n">rset</span><span class="p">.</span><span
class="n">getString</span><span class="p">(</span><span
class="s">"type"</span><span class="p">));</span>
-<span class="p">}</span>
+ <span class="c1">// Iterate over results</span>
+ <span class="k">while</span> <span class="p">(</span><span
class="n">rest</span><span class="p">.</span><span class="n">next</span><span
class="p">())</span> <span class="p">{</span>
+ <span class="c1">// Print out type as a string</span>
+ <span class="n">System</span><span class="p">.</span><span
class="n">out</span><span class="p">.</span><span class="n">println</span><span
class="p">(</span><span class="n">rset</span><span class="p">.</span><span
class="n">getString</span><span class="p">(</span><span
class="s">"type"</span><span class="p">));</span>
+ <span class="p">}</span>
-<span class="c1">// Clean up</span>
-<span class="n">rset</span><span class="p">.</span><span
class="n">close</span><span class="p">();</span>
-<span class="n">stmt</span><span class="p">.</span><span
class="n">close</span><span class="p">();</span>
+ <span class="c1">// Clean up</span>
+ <span class="n">rset</span><span class="p">.</span><span
class="n">close</span><span class="p">();</span>
+<span class="p">}</span> <span class="n">catch</span> <span
class="p">(</span><span class="n">SQLException</span> <span
class="n">e</span><span class="p">)</span> <span class="p">{</span>
+ <span class="n">System</span><span class="p">.</span><span
class="n">err</span><span class="p">.</span><span class="n">println</span><span
class="p">(</span><span class="s">"SQL Error - "</span> <span
class="o">+</span> <span class="n">e</span><span class="p">.</span><span
class="n">getMessage</span><span class="p">());</span>
+<span class="p">}</span> <span class="n">finally</span> <span
class="p">{</span>
+ <span class="n">stmt</span><span class="p">.</span><span
class="n">close</span><span class="p">();</span>
+<span class="p">}</span>
</pre></div>
-<h3 id="making-updates">Making Updates</h3>
+<h3 id="performing-updates">Performing Updates</h3>
<p>You make updates as you would with any JDBC driver. Again the main
difference is that updates must be SPARQL,
one downside of this is that SPARQL provides no way to indicate the number of
triples/quads affected by an update
so the JDBC driver will either return <code>0</code> for successful updates or
throw a <code>SQLException</code> for failed updates:</p>
@@ -218,11 +224,10 @@ so the JDBC driver will either return <c
<span class="n">System</span><span class="p">.</span><span
class="n">out</span><span class="p">.</span><span class="n">println</span><span
class="p">(</span><span class="s">"Update succeeded"</span><span
class="p">);</span>
<span class="p">}</span> <span class="n">catch</span> <span
class="p">(</span><span class="n">SQLException</span> <span
class="n">e</span><span class="p">)</span> <span class="p">{</span>
<span class="n">System</span><span class="p">.</span><span
class="n">out</span><span class="p">.</span><span class="n">println</span><span
class="p">(</span><span class="s">"Update Failed "</span> <span
class="o">-</span> <span class="o">+</span> <span class="n">e</span><span
class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
+<span class="p">}</span> <span class="n">finally</span> <span
class="p">{</span>
+ <span class="c1">// Clean up</span>
+ <span class="n">stmt</span><span class="p">.</span><span
class="n">close</span><span class="p">();</span>
<span class="p">}</span>
-
-<span class="c1">// Clean up</span>
-<span class="n">rset</span><span class="p">.</span><span
class="n">close</span><span class="p">();</span>
-<span class="n">stmt</span><span class="p">.</span><span
class="n">close</span><span class="p">();</span>
</pre></div>