You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by bu...@apache.org on 2013/02/25 18:12:48 UTC

svn commit: r851896 - in /websites/staging/marmotta/trunk/content: ./ css/site.css dependencies.html kiwi-triplestore.html rat-report.html

Author: buildbot
Date: Mon Feb 25 17:12:48 2013
New Revision: 851896

Log:
Staging update by buildbot for marmotta

Modified:
    websites/staging/marmotta/trunk/content/   (props changed)
    websites/staging/marmotta/trunk/content/css/site.css
    websites/staging/marmotta/trunk/content/dependencies.html
    websites/staging/marmotta/trunk/content/kiwi-triplestore.html
    websites/staging/marmotta/trunk/content/rat-report.html

Propchange: websites/staging/marmotta/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Mon Feb 25 17:12:48 2013
@@ -1 +1 @@
-1449728
+1449781

Modified: websites/staging/marmotta/trunk/content/css/site.css
==============================================================================
--- websites/staging/marmotta/trunk/content/css/site.css (original)
+++ websites/staging/marmotta/trunk/content/css/site.css Mon Feb 25 17:12:48 2013
@@ -72,6 +72,7 @@ div.navbar-inner {
     -webkit-box-shadow: rgba(0, 0, 0, 0.247059) 0px 1px 3px 0px, rgba(0, 0, 0, 0.0980392) 0px -1px 0px 0px inset;
     background-color: rgb(44, 44, 44);
     background-image: -webkit-linear-gradient(top, rgb(51, 51, 51), rgb(34, 34, 34));
+    background-image: linear-gradient(to bottom, rgb(51, 51, 51), rgb(34, 34, 34));
     background-repeat: repeat-x;
     border-bottom-left-radius: 0px;
     border-bottom-right-radius: 0px;

Modified: websites/staging/marmotta/trunk/content/dependencies.html
==============================================================================
--- websites/staging/marmotta/trunk/content/dependencies.html (original)
+++ websites/staging/marmotta/trunk/content/dependencies.html Mon Feb 25 17:12:48 2013
@@ -235,8 +235,8 @@
         }
       }
 </script>
-<a name="Dependency_Tree"></a><div class="section"><h3>Dependency Tree<a name="Dependency_Tree"></a></h3><ul><li>org.apache.marmotta:marmotta-site:pom:3.0.0-incubating-SNAPSHOT <img id="_306405807" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_1555978865', '_306405807' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_1555978865" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>Apache Marmotta Site</th></tr><tr class="b"><td><p><b>Description: </b>Files for the Marmotta site (Apache CMS)</p><p><b>URL: </b><a class="externalLink" href="http://marmotta.incubator.apache.org">http://marmotta.incubator.apache.org</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache Software License, Version 2.0</a></p></td></tr></table></div><ul><li>org.apache.marmotta:marmotta-reactor:pom:3.0.0-incubating-SNAPSHOT (compile) <img id="_
 1025244318" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_276500039', '_1025244318' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_276500039" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>Apache Marmotta</th></tr><tr class="b"><td><p><b>Description: </b>Open implementation of the Linked Data Platform</p><p><b>URL: </b><a class="externalLink" href="http://marmotta.incubator.apache.org">http://marmotta.incubator.apache.org</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a></p></td></tr></table></div></li><li>javax.servlet:servlet-api:jar:2.5 (provided) <img id="_2033675655" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_2114102329', '_2033675655' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_2114102329" style="disp
 lay:none"><table border="0" class="table table-striped"><tr class="a"><th>servlet-api</th></tr><tr class="b"><td><p><b>Description: </b>There is currently no description associated with this project.</p><p><b>Project License: </b>No license is defined for this project.</p></td></tr></table></div></li><li>junit:junit:jar:4.11 (test) <img id="_1298999282" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_323452821', '_1298999282' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_323452821" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>JUnit</th></tr><tr class="b"><td><p><b>Description: </b>JUnit is a regression testing framework written by Erich Gamma and Kent Beck.
-        It is used by the developer who implements unit tests in Java.</p><p><b>URL: </b><a class="externalLink" href="http://junit.org">http://junit.org</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.opensource.org/licenses/cpl1.0.txt">Common Public License Version 1.0</a></p></td></tr></table></div></li><li>org.hamcrest:hamcrest-library:jar:1.3 (test) <img id="_976484723" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_1760635870', '_976484723' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_1760635870" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>Hamcrest library</th></tr><tr class="b"><td><p><b>Description: </b>Hamcrest library of matcher implementations.</p><p><b>URL: </b><a class="externalLink" href="https://github.com/hamcrest/JavaHamcrest/hamcrest-library">https://github.com/hamcrest/JavaHamcrest/hamcrest-library</a></p><p><b>Project Licen
 se: </b><a class="externalLink" href="http://www.opensource.org/licenses/bsd-license.php">New BSD License</a></p></td></tr></table></div></li><li>org.hamcrest:hamcrest-core:jar:1.3 (test) <img id="_1230352185" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_937349248', '_1230352185' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_937349248" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>Hamcrest Core</th></tr><tr class="b"><td><p><b>Description: </b>This is the core API of hamcrest matcher framework to be used by third-party framework providers. This includes the a foundation set of matcher implementations for common operations.</p><p><b>URL: </b><a class="externalLink" href="https://github.com/hamcrest/JavaHamcrest/hamcrest-core">https://github.com/hamcrest/JavaHamcrest/hamcrest-core</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.opensource.org/lic
 enses/bsd-license.php">New BSD License</a></p></td></tr></table></div></li></ul></li></ul></div></div><a name="Licenses"></a><div class="section"><h2>Licenses<a name="Licenses"></a></h2><p><b>Apache Software License, Version 2.0: </b>Apache Marmotta, Apache Marmotta Site</p><p><b>New BSD License: </b>Hamcrest Core, Hamcrest library</p><p><b>Unknown: </b>servlet-api</p><p><b>Common Public License Version 1.0: </b>JUnit</p></div><a name="Dependency_File_Details"></a><div class="section"><h2>Dependency File Details<a name="Dependency_File_Details"></a></h2><table border="0" class="table table-striped"><tr class="a"><th>Filename</th><th>Size</th><th>Entries</th><th>Classes</th><th>Packages</th><th>JDK Rev</th><th>Debug</th></tr><tr class="b"><td>servlet-api-2.5.jar</td><td>102.65 kB</td><td>68</td><td>42</td><td>2</td><td>1.5</td><td>debug</td></tr><tr class="a"><td>junit-4.11.jar</td><td>239.30 kB</td><td>266</td><td>233</td><td>28</td><td>1.5</td><td>debug</td></tr><tr class="
 b"><td>marmotta-reactor-3.0.0-incubating-SNAPSHOT.pom</td><td>9.62 kB</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr><tr class="a"><td>hamcrest-core-1.3.jar</td><td>43.97 kB</td><td>52</td><td>45</td><td>3</td><td>1.5</td><td>debug</td></tr><tr class="b"><td>hamcrest-library-1.3.jar</td><td>51.83 kB</td><td>46</td><td>35</td><td>7</td><td>1.5</td><td>debug</td></tr><tr class="a"><th>Total</th><th>Size</th><th>Entries</th><th>Classes</th><th>Packages</th><th>JDK Rev</th><th>Debug</th></tr><tr class="b"><td>5</td><td>447.36 kB</td><td>432</td><td>355</td><td>40</td><td>1.5</td><td>4</td></tr><tr class="a"><td>compile: 1</td><td>compile: 9.62 kB</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr><tr class="b"><td>test: 3</td><td>test: 335.09 kB</td><td>test: 364</td><td>test: 313</td><td>test: 38</td><td>-</td><td>test: 3</td></tr><tr class="a"><td>provided: 1</td><td>provided: 102.65 kB</td><td>provided: 68</td><td>provided: 42</td><td>provided: 2</td><td>-
 </td><td>provided: 1</td></tr></table></div>
+<a name="Dependency_Tree"></a><div class="section"><h3>Dependency Tree<a name="Dependency_Tree"></a></h3><ul><li>org.apache.marmotta:marmotta-site:pom:3.0.0-incubating-SNAPSHOT <img id="_1678408648" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_765064455', '_1678408648' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_765064455" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>Apache Marmotta Site</th></tr><tr class="b"><td><p><b>Description: </b>Files for the Marmotta site (Apache CMS)</p><p><b>URL: </b><a class="externalLink" href="http://marmotta.incubator.apache.org">http://marmotta.incubator.apache.org</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache Software License, Version 2.0</a></p></td></tr></table></div><ul><li>org.apache.marmotta:marmotta-reactor:pom:3.0.0-incubating-SNAPSHOT (compile) <img id="_
 580287586" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_559741456', '_580287586' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_559741456" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>Apache Marmotta</th></tr><tr class="b"><td><p><b>Description: </b>Open implementation of the Linked Data Platform</p><p><b>URL: </b><a class="externalLink" href="http://marmotta.incubator.apache.org">http://marmotta.incubator.apache.org</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a></p></td></tr></table></div></li><li>javax.servlet:servlet-api:jar:2.5 (provided) <img id="_1509307358" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_186273995', '_1509307358' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_186273995" style="display:
 none"><table border="0" class="table table-striped"><tr class="a"><th>servlet-api</th></tr><tr class="b"><td><p><b>Description: </b>There is currently no description associated with this project.</p><p><b>Project License: </b>No license is defined for this project.</p></td></tr></table></div></li><li>junit:junit:jar:4.11 (test) <img id="_590332378" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_529979813', '_590332378' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_529979813" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>JUnit</th></tr><tr class="b"><td><p><b>Description: </b>JUnit is a regression testing framework written by Erich Gamma and Kent Beck.
+        It is used by the developer who implements unit tests in Java.</p><p><b>URL: </b><a class="externalLink" href="http://junit.org">http://junit.org</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.opensource.org/licenses/cpl1.0.txt">Common Public License Version 1.0</a></p></td></tr></table></div></li><li>org.hamcrest:hamcrest-library:jar:1.3 (test) <img id="_539642061" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_560200', '_539642061' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_560200" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>Hamcrest library</th></tr><tr class="b"><td><p><b>Description: </b>Hamcrest library of matcher implementations.</p><p><b>URL: </b><a class="externalLink" href="https://github.com/hamcrest/JavaHamcrest/hamcrest-library">https://github.com/hamcrest/JavaHamcrest/hamcrest-library</a></p><p><b>Project License: </b>
 <a class="externalLink" href="http://www.opensource.org/licenses/bsd-license.php">New BSD License</a></p></td></tr></table></div></li><li>org.hamcrest:hamcrest-core:jar:1.3 (test) <img id="_1835405702" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_65618614', '_1835405702' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_65618614" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>Hamcrest Core</th></tr><tr class="b"><td><p><b>Description: </b>This is the core API of hamcrest matcher framework to be used by third-party framework providers. This includes the a foundation set of matcher implementations for common operations.</p><p><b>URL: </b><a class="externalLink" href="https://github.com/hamcrest/JavaHamcrest/hamcrest-core">https://github.com/hamcrest/JavaHamcrest/hamcrest-core</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.opensource.org/licenses/bsd-
 license.php">New BSD License</a></p></td></tr></table></div></li></ul></li></ul></div></div><a name="Licenses"></a><div class="section"><h2>Licenses<a name="Licenses"></a></h2><p><b>Apache Software License, Version 2.0: </b>Apache Marmotta, Apache Marmotta Site</p><p><b>New BSD License: </b>Hamcrest Core, Hamcrest library</p><p><b>Unknown: </b>servlet-api</p><p><b>Common Public License Version 1.0: </b>JUnit</p></div><a name="Dependency_File_Details"></a><div class="section"><h2>Dependency File Details<a name="Dependency_File_Details"></a></h2><table border="0" class="table table-striped"><tr class="a"><th>Filename</th><th>Size</th><th>Entries</th><th>Classes</th><th>Packages</th><th>JDK Rev</th><th>Debug</th></tr><tr class="b"><td>servlet-api-2.5.jar</td><td>102.65 kB</td><td>68</td><td>42</td><td>2</td><td>1.5</td><td>debug</td></tr><tr class="a"><td>junit-4.11.jar</td><td>239.30 kB</td><td>266</td><td>233</td><td>28</td><td>1.5</td><td>debug</td></tr><tr class="b"><td>mar
 motta-reactor-3.0.0-incubating-SNAPSHOT.pom</td><td>9.62 kB</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr><tr class="a"><td>hamcrest-core-1.3.jar</td><td>43.97 kB</td><td>52</td><td>45</td><td>3</td><td>1.5</td><td>debug</td></tr><tr class="b"><td>hamcrest-library-1.3.jar</td><td>51.83 kB</td><td>46</td><td>35</td><td>7</td><td>1.5</td><td>debug</td></tr><tr class="a"><th>Total</th><th>Size</th><th>Entries</th><th>Classes</th><th>Packages</th><th>JDK Rev</th><th>Debug</th></tr><tr class="b"><td>5</td><td>447.36 kB</td><td>432</td><td>355</td><td>40</td><td>1.5</td><td>4</td></tr><tr class="a"><td>compile: 1</td><td>compile: 9.62 kB</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr><tr class="b"><td>test: 3</td><td>test: 335.09 kB</td><td>test: 364</td><td>test: 313</td><td>test: 38</td><td>-</td><td>test: 3</td></tr><tr class="a"><td>provided: 1</td><td>provided: 102.65 kB</td><td>provided: 68</td><td>provided: 42</td><td>provided: 2</td><td>-</td><td>p
 rovided: 1</td></tr></table></div>
                   </div>
           </div>
 

Modified: websites/staging/marmotta/trunk/content/kiwi-triplestore.html
==============================================================================
--- websites/staging/marmotta/trunk/content/kiwi-triplestore.html (original)
+++ websites/staging/marmotta/trunk/content/kiwi-triplestore.html Mon Feb 25 17:12:48 2013
@@ -218,7 +218,80 @@
                 
         <div id="bodyColumn" >
                                   
-            <h1>KiWi Triple Store</h1><p>TODO</p>
+            <h1>KiWi Triple Store</h1><p>The KiWi triple store is a high performance transactional triple store backend for OpenRDF Sesame building on top of a relational database (currently H2, PostgreSQL, or MySQL). It has optional support for rule-based reasoning (sKWRL) and versioning of updates. The KiWi triple store is also the default backend for Apache Marmotta. It originated in the EU-funded research project KiWi - Knowledge in a Wiki (hence the name).</p><div class="section"><h2>Introduction<a name="Introduction"></a></h2><p>The KiWi triple store is composed of a number of Sesame Sail modules that can be combined and stacked as needed. Currently (Apache Marmotta v3.0), the KiWi triple store offers the following modules:</p>
+<ul>
+  <li>kiwi-triplestore: implements triple persistence in a relational database</li>
+  <li>kiwi-transactions: adds extended transaction support to a notifying sail (notifies on transaction commit)</li>
+  <li>kiwi-tripletable: support for in-memory indexed Java Collections for OpenRDF statements</li>
+  <li>kiwi-contextaware: support for context-aware OpenRDF Sails (allow overriding contexts in statements)</li>
+  <li>kiwi-reasoner: adds a rule-based forward chaining reasoner with truth maintenance for the KiWi triple store</li>
+  <li>kiwi-versioning: adds versioning of updates to a KiWi triple store</li>
+</ul><p>Versioning and Reasoner only work with a KiWi store as parent Sail, i.e. they cannot be used with other Sesame backends. Transactions, Context-Aware Sails, and the Triple Table support classes are in principle independent and can also be stacked with other storage backends.</p></div><div class="section"><h2>KiWi Store (kiwi-triplestore)<a name="KiWi_Store_kiwi-triplestore"></a></h2><p>The heart of the KiWi triple store is the KiWiStore storage backend. It implements a OpenRDF Notifying Sail on top of a custom relational database schema. It can be used in a similar way to the already existing (but now deprecated) OpenRDF RDBMS backends. The KiWi triple store operates almost directly on top of the relational database, there is only minimal overhead on the Java side (some caching and result transformations). Each OpenRDF repository connection is a database connection, and each repository result is a database cursor (so it supports lazy fetching when iterating over the r
 esult).</p>
+<div class="section"><h3> Maven Artifact <a name="Maven_Artifact"></a></h3><p>To use the KiWiStore, include the following artifact in your Maven build file:</p>
+<div class="source"><pre class="prettyprint">&lt;dependency&gt;
+    &lt;groupId&gt;org.apache.marmotta&lt;/groupId&gt;
+    &lt;artifactId&gt;kiwi-triplestore&lt;/artifactId&gt;
+    &lt;version&gt;3.0.0-incubating-SNAPSHOT&lt;/version&gt;
+&lt;/dependency&gt;
+</pre></div>
+</div><div class="section"><h3> Code Usage <a name="Code_Usage"></a></h3><p>In your code, creating a KiWi triple store works mostly like other OpenRDF backends. The only additional data that is required are the JDBC connection details for accessing the database (i.e. database type, database URI, database user and database password) and how to store inferred triples or triples without explicit context. You can create a new instance of a KiWi store as follows:</p>
+<div class="source"><pre class="prettyprint">String defaultContext  = &quot;http://localhost/context/default&quot;;
+String inferredContext = &quot;http://localhost/context/inferred&quot;;
+KiWiDialect dialect    = new H2Dialect();
+KiWiStore store = new KiWiStore(&quot;test&quot;,jdbcUrl,jdbcUser,jdbcPass,dialect, defaultContext, inferredContext );
+Repository repository = new SailRepository(store);
+try {
+    repository.initialize();
+
+    // get a connection and perform operations as usual
+    RepositoryConnection con = repository.getConnection();
+    try {
+        con.begin();
+
+        // do stuff
+
+        con.commit();
+    } finally {
+        con.close();
+    }
+} catch(RepositoryException ex) {
+    // handle exception
+} finally {
+    repository.shutdown();
+}
+</pre></div><p>Note that there are some uncommon parameters, most notably the defaultContext and inferredContext:</p>
+<ul>
+  <li><b>defaultContext</b> is the URI of the context to use in case no explicit context is specified; this changes the default  behaviour of OpenRDF a bit, but it is the cleaner approach (and more efficient in the relational database because it  avoids NULL values)</li>
+  <li><b>inferredContext</b> is the URI to use for storing all triples that are inferred by some reasoner (either the KiWi reasoner  or the OpenRDF RDFS reasoner); this is also a different behaviour to OpenRDF; we use it because the semantics is  otherwise not completely clear in case an inference was made based on the information stemming from two different  contexts</li>
+  <li><b>dialect</b> specifies the dialect to use for connecting to the database; currently supported dialects are H2Dialect,  PostgreSQLDialect and MySQLDialect; note that the MySQL JDBC library is licensed under LGPL and can therefore not  be shipped with Apache Marmotta</li>
+</ul><p>We plan to add support for additional databases over time.</p>
+</div><div class="section"><h3> Performance Considerations <a name="Performance_Considerations"></a></h3><p>Additionally, there are some things to keep in mind when using a KiWi triple store (all of them are good coding practice, but in KiWi they also have performance implications):</p>
+<ul>
+  <li>a RepositoryConnection has a direct correspondence to a database connection, so it always needs to be closed properly;  if you forget closing connections, you will have resource leakage pretty quickly</li>
+  <li>all operations carried out on a repository connection are directly carried out in the database (e.g. inserting  triples); the database connection is transactional, i.e. changes will only be available to other transactions when  the commit() method is called explicitly; it is therefore good practice to always commit or rollback a connection  before closing it</li>
+  <li>a RepositoryResult has a direct correspondence to a database ResultSet and therefore to a database cursor, so like  with connections, it needs to be closed properly or otherwise you will have resource leakage</li>
+  <li>the value factory of the KiWi Store maintains its own, separate database connection for creating and retrieving  RDF values; any newly created values are committed immediately to the database to make sure they are available to  other transactions</li>
+  <li>the database tables will only be created when repository.initialize() is called; if the tables already exist,  initialization will check whether a schema upgrade is required and automatically do the upgrade if needed</li>
+  <li>the repository must be explicitly shutdown when it is no longer needed, or otherwise it will keep open  the database connection of the value factory as well as the internal connection pool</li>
+</ul></div></div><div class="section"><h2>KiWi Transaction Support (kiwi-transactions)<a name="KiWi_Transaction_Support_kiwi-transactions"></a></h2><p>OpenRDF Sesame already offers basic transaction handling and update notification support in any OpenRDF sail stack around a NotifyingSail (i.e. it can be used independently of the KiWi triple store). This module builds on this functionality to provide a mechanism for keeping track of all changes (added and removed triples) occurring between the time a transaction began and the time the transaction was committed or rolled back. The transaction data is then handed over to all registered transaction listeners at certain event points (in analogy to JPA we offer before commit, after commit, on rollback).</p><p>Extended transaction support is e.g. used by the versioning component (each transaction is considered a unit of work or version) and by the reasoner (on transaction commit, the transaction data is handed to the incremental re
 asoner). It is also used by some extended Apache Marmotta and Linked Media Framework functionalities like the LMF Semantic Search.</p>
+<div class="section"><h3> Maven Artifact <a name="Maven_Artifact"></a></h3><p>To use the extended transaction support, include the following artifact in your Maven build file:</p>
+<div class="source"><pre class="prettyprint"> &lt;dependency&gt;
+     &lt;groupId&gt;org.apache.marmotta&lt;/groupId&gt;
+     &lt;artifactId&gt;kiwi-transactions&lt;/artifactId&gt;
+     &lt;version&gt;3.0.0-incubating-SNAPSHOT&lt;/version&gt;
+ &lt;/dependency&gt;
+</pre></div>
+</div><div class="section"><h3> Code Usage <a name="Code_Usage"></a></h3><p>In your code, the KiWi extended transactions can easily be stacked into your sail stack around any NotifyingSail. Event listeners can be added/removed by calling the appropriate addTransactionListener and removeTransactionListener methods:</p>
+<div class="source"><pre class="prettyprint">KiWiTransactionalSail sail = new KiWiTransactionalSail(new MemoryStore());
+sail.addTransactionListener(...);
+Repository repository = new SailRepository(sail);
+...
+</pre></div><p>The TransactionListener interface defines three methods:</p>
+<ul>
+  <li><i>beforeCommit(TransactionData data)</i> is called just before the transaction actually carries out its commit  to the database;</li>
+  <li><i>afterCommit(TransactionData data)</i> is called immediately after the transaction has been committed to the database  (i.e. you can rely on the data being persistent)</li>
+  <li><i>rollback(TransactionData data)</i> is called when the transaction is rolled back (e.g. in case of an error)</li>
+</ul></div></div>
                   </div>
           </div>
 

Modified: websites/staging/marmotta/trunk/content/rat-report.html
==============================================================================
--- websites/staging/marmotta/trunk/content/rat-report.html (original)
+++ websites/staging/marmotta/trunk/content/rat-report.html Mon Feb 25 17:12:48 2013
@@ -222,7 +222,7 @@
 *****************************************************
 Summary
 -------
-Generated at: 2013-02-25T14:49:34+00:00
+Generated at: 2013-02-25T17:12:45+00:00
 Notes: 2
 Binaries: 2
 Archives: 0
@@ -240,6 +240,7 @@ Generated files do not required license 
 
 Unapproved licenses:
 
+  content/markdown/kiwi-triplestore.md.vm
   content/markdown/index.md
   content/markdown/client-library.md
   content/markdown/ldclient.md
@@ -248,7 +249,6 @@ Unapproved licenses:
   content/markdown/configuration.md
   content/markdown/privacy.md
   content/markdown/ldcache.md
-  content/markdown/kiwi-triplestore.md
   content/markdown/download.md
   content/markdown/installation.md
   content/markdown/development.md
@@ -267,6 +267,7 @@ Archives:
   Binary files (which do not require AL headers) will be marked B
   Compressed archives will be marked A
   Notices, licenses etc will be marked N
+ !????? content/markdown/kiwi-triplestore.md.vm
  !????? content/markdown/index.md
  !????? content/markdown/client-library.md
  !????? content/markdown/ldclient.md
@@ -275,7 +276,6 @@ Archives:
  !????? content/markdown/configuration.md
  !????? content/markdown/privacy.md
  !????? content/markdown/ldcache.md
- !????? content/markdown/kiwi-triplestore.md
  !????? content/markdown/download.md
  !????? content/markdown/installation.md
  !????? content/markdown/development.md
@@ -298,6 +298,60 @@ Archives:
  
  
  =======================================================================
+ ==content/markdown/kiwi-triplestore.md.vm
+ =======================================================================
+# KiWi Triple Store #
+
+The KiWi triple store is a high performance transactional triple store backend for OpenRDF Sesame building on top of a
+relational database (currently H2, PostgreSQL, or MySQL). It has optional support for rule-based reasoning (sKWRL) and
+versioning of updates. The KiWi triple store is also the default backend for Apache Marmotta. It originated in the
+EU-funded research project &quot;KiWi - Knowledge in a Wiki&quot; (hence the name).
+
+Introduction
+------------
+
+The KiWi triple store is composed of a number of Sesame Sail modules that can be combined and stacked as needed.
+Currently (Apache Marmotta v3.0), the KiWi triple store offers the following modules:
+
+* kiwi-triplestore: implements triple persistence in a relational database
+* kiwi-transactions: adds extended transaction support to a notifying sail (notifies on transaction commit)
+* kiwi-tripletable: support for in-memory indexed Java Collections for OpenRDF statements
+* kiwi-contextaware: support for context-aware OpenRDF Sails (allow overriding contexts in statements)
+* kiwi-reasoner: adds a rule-based forward chaining reasoner with truth maintenance for the KiWi triple store
+* kiwi-versioning: adds versioning of updates to a KiWi triple store
+
+Versioning and Reasoner only work with a KiWi store as parent Sail, i.e. they cannot be used with other Sesame backends.
+Transactions, Context-Aware Sails, and the Triple Table support classes are in principle independent and can also
+be stacked with other storage backends.
+
+KiWi Store (kiwi-triplestore)
+-----------------------------
+
+The heart of the KiWi triple store is the KiWiStore storage backend. It implements a OpenRDF Notifying Sail on top
+of a custom relational database schema. It can be used in a similar way to the already existing (but now deprecated)
+OpenRDF RDBMS backends. The KiWi triple store operates almost directly on top of the relational database, there is
+only minimal overhead on the Java side (some caching and result transformations). Each OpenRDF repository connection
+is a database connection, and each repository result is a database cursor (so it supports lazy fetching when iterating
+over the result).
+
+&lt;h3&gt; Maven Artifact &lt;/h3&gt;
+
+To use the KiWiStore, include the following artifact in your Maven build file:
+
+    &lt;dependency&gt;
+        &lt;groupId&gt;org.apache.marmotta&lt;/groupId&gt;
+        &lt;artifactId&gt;kiwi-triplestore&lt;/artifactId&gt;
+        &lt;version&gt;${projectVersion}&lt;/version&gt;
+    &lt;/dependency&gt;
+
+&lt;h3&gt; Code Usage &lt;/h3&gt;
+
+In your code, creating a KiWi triple store works mostly like other OpenRDF backends. The only additional data that is
+required are the JDBC connection details for accessing the database (i.e. database type, database URI, database user
+and database password) and how to store inferred triples or triples without explicit context. You can create a new
+instance of a KiWi store as follows:
+
+ =======================================================================
  ==content/markdown/index.md
  =======================================================================
 # Apache Marmotta (incubator)
@@ -481,13 +535,6 @@ list along with updating the &quot;Last 
 @@TODOO
 
  =======================================================================
- ==content/markdown/kiwi-triplestore.md
- =======================================================================
-# KiWi Triple Store
-
-TODO
-
- =======================================================================
  ==content/markdown/download.md
  =======================================================================
 # Download Marmotta