You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by bu...@apache.org on 2013/08/23 23:58:18 UTC

svn commit: r875919 - in /websites/staging/jena/trunk/content: ./ documentation/jdbc/custom_driver.html

Author: buildbot
Date: Fri Aug 23 21:58:18 2013
New Revision: 875919

Log:
Staging update by buildbot for jena

Added:
    websites/staging/jena/trunk/content/documentation/jdbc/custom_driver.html
Modified:
    websites/staging/jena/trunk/content/   (props changed)

Propchange: websites/staging/jena/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Fri Aug 23 21:58:18 2013
@@ -1 +1 @@
-1517044
+1517070

Added: websites/staging/jena/trunk/content/documentation/jdbc/custom_driver.html
==============================================================================
--- websites/staging/jena/trunk/content/documentation/jdbc/custom_driver.html (added)
+++ websites/staging/jena/trunk/content/documentation/jdbc/custom_driver.html Fri Aug 23 21:58:18 2013
@@ -0,0 +1,155 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/css/bootstrap.min.css" rel="stylesheet" type="text/css">
+  <link href="/css/bootstrap-extension.css" rel="stylesheet" type="text/css">
+
+  <title>Apache Jena - Creating a Custom Jena JDBC Driver</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
+  <script src="/js/jena-navigation.js" type="text/javascript"></script>
+  <script src="/js/bootstrap.min.js" type="text/javascript"></script>
+</head>
+
+<body>
+    <div class="navbar navbar-fixed-top">
+      <div class="navbar-inner">
+        <div class="container">
+        <a class="brand" href="/index.html" style="padding-top: 6px; padding-bottom: 0px;">
+            <img class="logo-menu" src="/images/jena-logo/jena-logo-notext-small.png" alt="jena logo">
+          </a>
+          <a class="brand" href="/index.html">Apache Jena</a>
+          <div class="nav-collapse collapse">
+            <ul class="nav">
+              <li id="homepage"><a href="/index.html"><i class="icon-home"></i> Home</a></li>
+              <li id="download"><a href="/download/index.html"><i class="icon-download-alt"></i> Download</a></li>
+              <li class="dropdown">
+                <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="icon-book"></i> Learn <b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li class="nav-header">Tutorials</li>
+                  <li><a href="/tutorials/index.html">Overview</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="/documentation/query/manipulating_sparql_using_arq.html">Manipulating SPARQL using ARQ</a></li>
+                  <li><a href="/tutorials/using_jena_with_eclipse.html">Using Jena with Eclipse</a></li>
+                  <li><a href="/documentation/notes/index.html">How-To's</a></li>
+                  <li class="divider"></li>
+                  <li class="nav-header">References</li>
+                  <li><a href="/documentation/index.html">Overview</a></li>
+                  <li><a href="/documentation/javadoc/">Javadoc</a></li>
+                  <li><a href="/documentation/rdf/index.html">RDF API</a></li>
+                  <li><a href="/documentation/io/">RDF I/O</a></li>
+                  <li><a href="/documentation/query/index.html">ARQ (SPARQL)</a></li>
+                  <li><a href="/documentation/query/text-query.html">Text Search</a></li>
+                  <li><a href="/documentation/tdb/index.html">TDB</a></li>
+		  <li><a href="/documentation/sdb/index.html">SDB</a></li>
+		  <li><a href="/documentation/jdbc/index.html">SPARQL over JDBC</a></li>
+                  <li><a href="/documentation/serving_data/index.html">Fuseki</a></li>
+                  <li><a href="/documentation/assembler/index.html">Assembler</a></li>
+                  <li><a href="/documentation/ontology/">Ontology API</a></li>
+                  <li><a href="/documentation/inference/index.html">Inference API</a></li>
+                  <li><a href="/documentation/tools/index.html">Command-line tools</a></li>
+                </ul>
+              </li>
+              <li id="ask"><a href="/help_and_support/index.html"><i class="icon-question-sign"></i> Ask</a></li>
+              
+              <li class="dropdown">
+                <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="icon-bullhorn"></i> 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="nav-header">Project</li>
+                  <li><a href="/about_jena/about.html">About Jena</a></li>
+                  <li><a href="/about_jena/roadmap.html">Roadmap</a></li>
+                  <li><a href="/about_jena/architecture.html">Architecture</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 class="divider"></li>
+                  <li class="nav-header">ASF</li>
+                  <li><a href="http://www.apache.org/">Apache Software Foundation</a></li>
+                  <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+                  <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+                  <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+                  <li><a href="http://www.apache.org/security/">Security</a></li>
+                </ul>
+              </li>
+            </ul>
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+
+
+<div class="container">
+	<div class="row-fluid">
+	<div class="span12">
+	<h1 class="title">Creating a Custom Jena JDBC Driver</h1>
+  <p>As noted in the <a href="index.html#overview">overview</a> Jena JDBC drivers are built around a core
+library which implements much of the common functionality required in an abstract way.  This
+means that it is relatively easy to build a custom driver just by relying on the core library
+and implementing a minimum of one class.</p>
+<h2 id="custom-driver-class">Custom Driver class</h2>
+<p>The one and only thing that you are required to do to create a custom driver is to implement
+a class that extends <code>JenaDriver</code>.  This requires you to implement a constructor which simply
+needs to call the parent constructor with the relevant inputs, one of these is your driver specific
+connection URL prefix i.e. the <code>foo</code> in <code>jdbc:jena:foo:</code>.  Implementation specific prefixes
+must conform to the regular expression <code>[A-Za-z\d\-_]+:</code> i.e. some combination of alphanumerics,
+hyphens and underscores terminated by a colon.</p>
+<p>Additionally you must override and implement two abstract methods <code>connect()</code> and <code>getPropertyInfo()</code>.
+The former is used to produce an instance of a <code>JenaConnection</code> while the latter provides information 
+that may be used by tools to present users with some form of user interface for configuring a 
+connection to your driver.</p>
+<p>An important thing to note is that this may be all you need to do to create a custom driver, it is
+perfectly acceptable for your <code>connect()</code> implementation to just return one of the implementations
+from the built-in drivers.  This may be useful if you are writing a driver for a specific store and
+wish to provide simplified connection URL parameters and create the appropriate connection instance
+programmatically.</p>
+<h2 id="custom-connection-class">Custom Connection class</h2>
+<p>The next stage in creating a custom driver (where necessary) is to create a class derived from
+<code>JenaConnection</code>.  This has a somewhat broader set of abstract methods which you will need to implement
+such as <code>createStatementInternal()</code> and various methods which you may optionally override if you
+need to deviate from the default behaviors.</p>
+<p>If you wish to go down this route then we recommend looking at the source for the built in implementations
+to guide you in this.  It may be easier to extend one of the built-in implementations rather than writing
+an entire custom implementation yourself.</p>
+<p>Note that custom implementations may also require you to implement custom <code>JenaStatement</code> and <code>JenaPreparedSatement</code>
+implementations.</p>
+  </div>
+</div>
+
+</div><!--/.container -->
+
+    <footer class="footer">
+      <div class="container">
+        <p>Copyright &copy; 2011&ndash;2013 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.
+        </p>
+      </div>
+  </footer>
+      
+
+</body>
+</html>