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 21:08:36 UTC

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

Author: buildbot
Date: Mon Feb 25 20:08:36 2013
New Revision: 851912

Log:
Staging update by buildbot for marmotta

Modified:
    websites/staging/marmotta/trunk/content/   (props changed)
    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 20:08:36 2013
@@ -1 +1 @@
-1449781
+1449867

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 20:08:36 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="_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>
+<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="_1529215900" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_2086570527', '_1529215900' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_2086570527" 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=
 "_1658640849" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_2059457381', '_1658640849' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_2059457381" 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="_595964706" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_227303128', '_595964706' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_227303128" 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="_488622019" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_146471359', '_488622019' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_146471359" 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="_882364564" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_1460923252', '_882364564' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_1460923252" 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="_767587849" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_114498824', '_767587849' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_114498824" 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/licen
 ses/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>
                   </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 20:08:36 2013
@@ -291,7 +291,128 @@ Repository repository = new SailReposito
   <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>
+</ul></div></div><div class="section"><h2>KiWi Triple Table (kiwi-tripletable)<a name="KiWi_Triple_Table_kiwi-tripletable"></a></h2><p>The KiWi Triple Table offers efficient Java Collections over OpenRDF Statements. It implements the Java Set interface, but offers query support (listing triples with wildcards) with in-memory SPOC and CSPO indexes. This is useful if you want to keep large temporary in-memory collections of triples and is e.g. used by the kiwi-transactions module for keeping track of added and removed triples in the transaction data. It can also be used for caching purposes.</p>
+<div class="section"><h3> Maven Artifact <a name="Maven_Artifact"></a></h3><p>The KiWi Triple Table can be used with any OpenRDF repository, it is merely a container for triples. To use the library in your own project, add the following Maven dependency to your project:</p>
+<div class="source"><pre class="prettyprint"> &lt;dependency&gt;
+     &lt;groupId&gt;org.apache.marmotta&lt;/groupId&gt;
+     &lt;artifactId&gt;kiwi-tripletable&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>As the triple table implements the Set interface, usage is very simple. The following code block illustrates how:</p>
+<div class="source"><pre class="prettyprint">TripleTable&lt;Statement&gt; triples = new TripleTable&lt;Statement&gt;();
+
+// add some triples
+triples.add(valueFactory.createStatement(s1,p1,o1);
+triples.add(valueFactory.createStatement(s2,p2,o2);
+...
+
+// iterate over all triples
+for(Statement t : triples) {
+    // do something with t
+}
+
+// list only triples with subject s1
+for(Statement t : triples.listTriples(s1,null,null,null)) {
+    // do something with t
+}
+</pre></div><p>Note that the KiWi Triple Table does not implement a complete repository and therefore neither offers its own value factory nor allows persistence of statements or connection management. In case you need an in-memory repository with support for all these features, consider using a OpenRDF memory sail.</p></div></div><div class="section"><h2>KiWi Reasoner (kiwi-reasoner)<a name="KiWi_Reasoner_kiwi-reasoner"></a></h2><p>The KiWi reasoner is a powerful and flexible rule-based reasoner that can be used on top of a KiWi Triple Store. Its expressivity is more or less the same as Datalog, i.e. it will always terminate and can be evaluated in polynomial time (data complexity not taking into account the number of rules). In the context of triple stores, the KiWi reasoner can be used to easily implement the implicit semantics of different domain vocabularies. For example, the following rule program expresses SKOS semantics:</p>
+<div class="source"><pre class="prettyprint">@prefix skos: &lt;http://www.w3.org/2004/02/skos/core#&gt;
+
+($1 skos:broader $2) -&gt; ($1 skos:broaderTransitive $2)
+($1 skos:narrower $2) -&gt; ($1 skos:narrowerTransitive $2)
+
+($1 skos:broaderTransitive $2), ($2 skos:broaderTransitive $3) -&gt; ($1 skos:broaderTransitive $3)
+($1 skos:narrowerTransitive $2), ($2 skos:narrowerTransitive $3) -&gt; ($1 skos:narrowerTransitive $3)
+
+($1 skos:broader $2) -&gt; ($2 skos:narrower $1)
+($1 skos:narrower $2) -&gt; ($2 skos:broader $1)
+
+($1 skos:broader $2) -&gt; ($1 skos:related $2)
+($1 skos:narrower $2) -&gt; ($1 skos:related $2)
+($1 skos:related $2) -&gt; ($2 skos:related $1)
+</pre></div><p>Similarly, the reasoner can be used for expressing RDFS subclass and domain inference, as well as a subset of OWL semantics (the one that is most interesting :-P ). Beyond RDFS and OWL, it also allows implementing domain-specific rule semantics. Additional examples for programs can be found in the source code.</p><p>The reasoner is implemented as a incremental forward-chaining reasoner with truth maintenance. In practice, this means that:</p>
+<ul>
+  <li>incremental reasoning is triggered after a transaction commits successfully; the reasoner will then apply those  rules that match with at least one of the newly added triples</li>
+  <li>inferred triples are then materialized in the triple store in the inferred context (see the configuration of  the triple store above) and are thus available in the same way as base triples</li>
+  <li>truth maintenance keeps track of the reasons (i.e. rules and triples) why an inferred triple exists; this helps  making updates (especially removals of rules and triples) very efficient without requiring to completely  recompute all inferred triples</li>
+</ul>
+<div class="section"><h3> Maven Artifact <a name="Maven_Artifact"></a></h3><p>The KiWi Reasoner can only be used in conjunction with the KiWi Triple Store, because it maintains most of its information in the relational database (e.g. the data structures for truth maintenance) and directly translates rule body query patterns into SQL. To include it in a project that uses the KiWi Triple Store, add the following dependency to your Maven project:</p>
+<div class="source"><pre class="prettyprint"> &lt;dependency&gt;
+     &lt;groupId&gt;org.apache.marmotta&lt;/groupId&gt;
+     &lt;artifactId&gt;kiwi-reasoner&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>The KiWi Reasoner can be stacked into any sail stack with a transactional sail (see kiwi-transactions) and a KiWi Store at its root. The relevant database tables are created automatically when the repository is initialised. A simple repository with reasoner is initialized as follows:</p>
+<div class="source"><pre class="prettyprint">KiWistore = new KiWiStore(&quot;test&quot;,jdbcUrl,jdbcUser,jdbcPass,dialect, &quot;http://localhost/context/default&quot;, &quot;http://localhost/context/inferred&quot;);
+KiWiTransactionalSail tsail = new KiWiTransactionalSail(store);
+KiWiReasoningSail rsail = new KiWiReasoningSail(tsail, new ReasoningConfiguration());
+repository = new SailRepository(rsail);
+repository.initialize();
+
+// add a reasoning program
+rsail.addProgram(&quot;simple&quot;, this.getClass().getResourceAsStream(&quot;simple.kwrl&quot;));
+
+// update an existing reasoning program
+rsail.updateProgram(&quot;simple&quot;, ...);
+
+// run full reasoning (delete all existing inferred triples and re-create them)
+rsail.reRunPrograms();
+</pre></div><p>The reasoner can have any number of reasoning programs. The concept of a program is merely introduced to group different tasks. Internally, all reasoning rules are considered as an unordered collection, regardless which program they belong to.</p>
+</div><div class="section"><h3> Performance Considerations <a name="Performance_Considerations"></a></h3><p>Even though the reasoner is efficient compared with many other reasoners, there are a number of things to take into account, because reasoning is always a potentially expensive operation:</p>
+<ul>
+  <li>reasoning will always terminate, but the upper bound for inferred triples is in theory the set of all combinations  of nodes occurring in base triples in the database used as subject, predicate, or object, i.e. n^3</li>
+  <li>specific query patterns with many ground values are more efficient than patterns with many variables, as fixed  values can considerably reduce the candidate results in the SQL queries while variables are translated into SQL  joins</li>
+  <li>re-running a full reasoning can be extremely costly on large databases, so it is better configuring the reasoning  programs before importing large datasets (large being in the range of millions of triples)</li>
+  <li>updating a program is more efficient than first deleting the old version and then adding the new version,  because the reasoner compares old and new program and only updates the changed rules</li>
+</ul><p>In addition, the reasoner is currently executed in a single worker thread. The main reason is that otherwise there are potentially many transaction conflicts. We are working on an improved version that could benefit more from multi-core processors.</p></div></div><div class="section"><h2>KiWi Versioning (kiwi-versioning)<a name="KiWi_Versioning_kiwi-versioning"></a></h2><p>The KiWi Versioning module allows logging of updates to the triple store as well as accessing snapshots of the triple store at any given time in history. In many ways, it is similar to the history functionality offered by Wiki systems. KiWi Versioning can be useful for many purposes:</p>
+<ul>
+  <li>for tracking changes to resources and the whole repository and identifying the source (provenance) of certain  triples</li>
+  <li>for creating snapshots of the repository that are known to be good and referring to these snapshots later  while still updating the repository with new data</li>
+  <li>for more easily reverting errorneous changes to the triple store, in a similar way to a wiki; this can e.g. be  used in a data wiki</li>
+</ul><p>Currently, the KiWi Versioning module allows tracking changes and creating snapshots. Reverting changes has not yet been implemented and will be added later (together with support for pruning old versions).</p><p>Versioning is tightly bound to the transaction support: a version is more or less the transaction data after commit time. This corresponds to the concept of unit of work: a unit of work is finished when the user explicitly commits the transaction (e.g. when the entity has been completely added with all its triples or the ontology has been completely imported).</p>
+<div class="section"><h3> Maven Artifact <a name="Maven_Artifact"></a></h3><p>The KiWi Versioning module can only be used in conjunction with the KiWi Triple Store, because it maintains most of its information in the relational database (e.g. the data structures for change tracking). To include it in a project that uses the KiWi Triple Store, add the following dependency to your Maven project:</p>
+<div class="source"><pre class="prettyprint"> &lt;dependency&gt;
+     &lt;groupId&gt;org.apache.marmotta&lt;/groupId&gt;
+     &lt;artifactId&gt;kiwi-versioning&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>You can use the KiWi Versioning module in your own code in a sail stack with a KiWi transactional sail and a KiWi Store at the root. The basic usage is as follows:</p>
+<div class="source"><pre class="prettyprint">KiWiStore store = new KiWiStore(&quot;test&quot;,jdbcUrl,jdbcUser,jdbcPass,dialect, &quot;http://localhost/context/default&quot;, &quot;http://localhost/context/inferred&quot;);
+KiWiTransactionalSail tsail = new KiWiTransactionalSail(store);
+KiWiVersioningSail vsail = new KiWiVersioningSail(tsail);
+repository = new SailRepository(vsail);
+repository.initialize();
+
+// do something with the repository (e.g. add data)
+...
+
+// list all versions (note that there are many methods with different parameters, including a subject resource,
+// a date range, or both)
+RepositoryResult&lt;Version&gt; versions = vsail.listVersions();
+try {
+    while(versions.hasNext()) {
+        Version v = version.next();
+
+        // do something with v
+    }
+} finally {
+    versions.close();
+}
+
+// get a snapshot connection for a certain date
+Date snapshotDate = new Date(...);
+RepositoryConnection snapshotConnection = vsail.getSnapshot(snapshotDate);
+try {
+    // access the triples in the snapshot as they were at the time of the snapshot
+    ...
+} finally {
+    snapshotConnection.close();
+}
+</pre></div><p>Note that for obvious reasons (you cannot change history!), a snapshot connection is read-only. Accessing any update functionality of the connection will throw a RepositoryException. However, you can of course even run SPARQL queries over a snapshot connection (SPARQLing the past).</p>
+</div><div class="section"><h3> Performance Considerations <a name="Performance_Considerations"></a></h3><p>When versioning is enabled, bear in mind that nothing is ever really deleted in the triple store. Triples that are removed in one of the updates are simply marked as deleted and added to the version information for removed triples.</p><p>Otherwise there is no considerable performance impact. Accessing snapshots at any date is essentially as efficient as any ordinary triple access (but it does not do triple caching).</p></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 20:08:36 2013
@@ -222,7 +222,7 @@
 *****************************************************
 Summary
 -------
-Generated at: 2013-02-25T17:12:45+00:00
+Generated at: 2013-02-25T20:08:31+00:00
 Notes: 2
 Binaries: 2
 Archives: 0