Author: buildbot
Date: Wed Feb 10 15:36:45 2016
New Revision: 980032

Log:
Staging update by buildbot for jena

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

Propchange: websites/staging/jena/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Wed Feb 10 15:36:45 2016
@@ -1 +1 @@
-1728530
+1729631

Added: websites/staging/jena/trunk/content/documentation/notes/datasetgraph.html
==============================================================================
--- websites/staging/jena/trunk/content/documentation/notes/datasetgraph.html 
(added)
+++ websites/staging/jena/trunk/content/documentation/notes/datasetgraph.html 
Wed Feb 10 15:36:45 2016
@@ -0,0 +1,316 @@
+<!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.
+-->
+
+  <title>Apache Jena - The `DatasetGraph` hierarchy.</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.0.3.min.js";></script>
+  <script src="/js/jena-navigation.js" type="text/javascript"></script>
+  <script src="/js/bootstrap.min.js" type="text/javascript"></script>
+  <script src="/js/breadcrumbs.js" type="text/javascript"></script>
+
+  <script src="/js/improve.js" type="text/javascript"></script>
+
+  
+  <!-- Uncomment to enable code coloring <link href="/css/codehilite.css" 
rel="stylesheet" type="text/css"> -->
+
+</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="/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="dropdown-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/hadoop/index.html">Elephas - 
tools for RDF on Hadoop</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/fuseki2/index.html">Fuseki</a></li>
+                  <li><a 
href="/documentation/permissions/index.html">Permissions</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>
+                  <li><a 
href="/documentation/extras/index.html">Extras</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/jena/">Jena Core</a></li>
+                  <li><a href="/documentation/javadoc/arq/">ARQ</a></li>
+                  <li><a href="/documentation/javadoc/tdb/">TDB</a></li>
+                  <li><a 
href="/documentation/javadoc/elephas/">Elephas</a></li>
+                  <li><a href="/documentation/javadoc/text/">Text 
Search</a></li>
+                  <li><a href="/documentation/javadoc/spatial/">Spatial 
Search</a></li>
+                  <li><a 
href="/documentation/javadoc/permissions/">Permissions</a></li>
+                  <li><a href="/documentation/javadoc/jdbc/">JDBC</a></li>
+                  <li><a href="/documentation/javadoc/">All Javadoc</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/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="dropdown-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>
+
+              <li id="edit"><a 
href="javascript:improveThisPage(location.href);" title="Improve this Page (Use 
username anonymous and empty password)"><span class="glyphicon 
glyphicon-pencil"></span> Improve this Page</a></li>   
+    </ul>
+  </div>
+</div>
+</nav>
+
+
+<div class="container">
+    <div class="row">
+    <div class="col-md-12">
+    <div id="breadcrumbs"></div>
+    <h1 class="title">The `DatasetGraph` hierarchy.</h1>
+  <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, 
h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, 
dt:hover > .elementid-permalink { visibility: visible }</style>
+<p><em>These notes were written February 2016.</em></p>
+<p><code>DatasetGraph</code> forms the basic of storage as
+<a 
href="https://www.w3.org/TR/rdf11-concepts/#section-dataset";>RDFDataset</a>.  
There
+is a class hierarchy to make implementation a matter of choosing the style
+of implementation and adding specific functionality.</p>
+<p>The hierarchy of the significant classes is:
+(there are others adding special features)</p>
+<p><code>DatasetGraph - the interface
+    DatasetGraphBase
+        DatasetGraphBaseFind
+            DatasetGraphCollection
+                DatasetGraphMapLink - ad hoc collection of graphs
+            DatasetGraphOne
+            DatasetGraphTriplesQuads
+                DatasetGraphInMemory - fully transactional in-memory.
+                DatasetGraphMap
+        DatasetGraphQuads 
+    DatasetGraphTrackActive - transaction support 
+        DatasetGraphTransaction - This is the main TDB dataset.
+        DatasetGraphWithLock - MRSW support
+    DatasetGraphWrapper
+        DatasetGraphTxn - TDB usage
+        DatasetGraphViewGraphs</code></p>
+<p>Other important classes:</p>
+<p><code>GraphView</code></p>
+<h2 id="datasetgraph">DatasetGraph<a class="headerlink" href="#datasetgraph" 
title="Permanent link">&para;</a></h2>
+<p>The interface.</p>
+<h2 id="general-hierarchy">General hierarchy<a class="headerlink" 
href="#general-hierarchy" title="Permanent link">&para;</a></h2>
+<h3 id="datasetgraphbase">DatasetGraphBase<a class="headerlink" 
href="#datasetgraphbase" title="Permanent link">&para;</a></h3>
+<p>This provides some basic machinery and provides implementations of
+operations that have alternative styles.  It converts 
<code>add(G,S,P,O)</code> to
+<code>add(quad)</code> and <code>delete(G,S,P,O)</code> to 
<code>delele(quad)</code> and converts
+<code>find(quad)</code> to <code>find(G,S,P,O)</code>.</p>
+<p>It provides basic implementations of <code>deleteAny(?,?,?,?)</code> and 
<code>clear()</code>.</p>
+<p>It provides a Lock (LockMRSW) and the Context.</p>
+<p>From here on down, the storage aspect of the hierarchy splits depending on
+implementation style.</p>
+<h3 id="datasetgraphbasefind">DatasetGraphBaseFind<a class="headerlink" 
href="#datasetgraphbasefind" title="Permanent link">&para;</a></h3>
+<p>This is the beginning of the hierarchy for DSGs that store using different 
units for default graph and named graphs.
+This class splits find/4 into the following variants:</p>
+<p><code>findInDftGraph
+    findInUnionGraph
+    findQuadsInUnionGraph
+    findUnionGraphTriples
+    findInSpecificNamedGraph
+    findInAnyNamedGraphs</code></p>
+<h3 id="datasetgraphtriplesquads">DatasetGraphTriplesQuads<a 
class="headerlink" href="#datasetgraphtriplesquads" title="Permanent 
link">&para;</a></h3>
+<p>This is the beginning of the hierarchy for DSGs implemented as a set of 
triples for the default graph and a set of quads for all the named graphs.</p>
+<p>It splits add(Quad) and delete(Quad) into:</p>
+<div class="codehilite"><pre><span class="n">addToDftGraph</span>
+<span class="n">addToNamedGraph</span>
+<span class="n">deleteFromDftGraph</span>
+<span class="n">deleteFromNamedGraph</span>
+</pre></div>
+
+
+<p>and makes </p>
+<div class="codehilite"><pre><span class="n">setDefaultGraph</span>
+<span class="n">addGraph</span>
+<span class="n">removeGraph</span>
+</pre></div>
+
+
+<p>copy-in operations - triples are copied into the graph or removed from the
+graph, rather than the graph being shared.</p>
+<h3 id="datasetgraphinmemory">DatasetGraphInMemory<a class="headerlink" 
href="#datasetgraphinmemory" title="Permanent link">&para;</a></h3>
+<p>The main in-memory implementation, providing full transactions 
(serializable isolation, abort).</p>
+<p>Use this one!</p>
+<p>This class backs <code>DatasetFactory.createTxnMem()</code>.</p>
+<h3 id="datasetgraphmap">DatasetGraphMap<a class="headerlink" 
href="#datasetgraphmap" title="Permanent link">&para;</a></h3>
+<p>The in-memory implementation using in-memory Graphs as the storage for 
Triples.
+It provides MRSW-transactions (serializable isolation, no real abort).
+Use this if a single threaded application.</p>
+<p>This class backs <code>DatasetFactory.create()</code>.</p>
+<h3 id="datasetgraphcollection">DatasetGraphCollection<a class="headerlink" 
href="#datasetgraphcollection" title="Permanent link">&para;</a></h3>
+<p>Operations split into operations on a collection of Graphs, one for the 
default graph, and a map of (Node,Graph) for the named graphs.
+It provides MRSW-transactions (serializable isolation, no real abort).</p>
+<h3 id="datasetgraphmaplink">DatasetGraphMapLink<a class="headerlink" 
href="#datasetgraphmaplink" title="Permanent link">&para;</a></h3>
+<p>This implementation is manages Graphs provided by the application.</p>
+<p>It provides MRSW-transactions (serializable isolation, no real abort).
+Applications need to be careful when modifying the Graphs directly and also
+modifying them via the DatasetGraph interface.</p>
+<p>This class backs <code>DatasetFactory.createGeneral()</code>.</p>
+<h3 id="datasetgraphwrapper">DatasetGraphWrapper<a class="headerlink" 
href="#datasetgraphwrapper" title="Permanent link">&para;</a></h3>
+<p>Indirection to another <code>DatasetGraph</code>.</p>
+<p>Surprisingly useful.</p>
+<h3 id="datasetgraphviewgraphs">DatasetGraphViewGraphs<a class="headerlink" 
href="#datasetgraphviewgraphs" title="Permanent link">&para;</a></h3>
+<p>A small class that provides the "get a graph" operations over a
+<code>DatasetGraph</code> using <code>GraphView</code>.</p>
+<p>Not used because subclasses usually want to inherit from a different part
+fo the hierarchy but the idea of implementating <code>getDefaultGraph()</code> 
and
+<code>getGraph(Node)</code> as calls to <code>GraphView</code> is used 
elsewhere.</p>
+<p>Do not use with an implementations that store using graph
+(e.g. <code>DatasetGraphMap</code>, <code>DatasetGraphMapLink</code>) because 
it goes into an
+infinite recursion if they use GraphView internally.</p>
+<h3 id="graphview">GraphView<a class="headerlink" href="#graphview" 
title="Permanent link">&para;</a></h3>
+<p>Implementation of the Graph interface as a view of a DatasetGraph including
+providing a basic implementation of the union graph.  Subclasses can, and do,
+provide a better mechanisms for the union graph based on their internal
+indexes.</p>
+<h3 id="datasetgraphone">DatasetGraphOne<a class="headerlink" 
href="#datasetgraphone" title="Permanent link">&para;</a></h3>
+<p>An implement that only provides a default graph, given at creation time.
+This is a fixed - the app can't add named graphs.</p>
+<p>Cuts through all the machinery to be a simple, direct implementation.</p>
+<p>Backs up <code>DatasetGraphFactory.createOneGraph</code> but not
+<code>DatasetFactory.create(Model)</code> which provided are adding named 
graphs.</p>
+<h3 id="datasetgraphquads">DatasetGraphQuads<a class="headerlink" 
href="#datasetgraphquads" title="Permanent link">&para;</a></h3>
+<p>Root for implementations based on just quad storage, no special triples in
+the default graph (e.g. the default graph is always the calculated union of
+named graphs).  </p>
+<p>Not used currently.</p>
+<h3 id="datasetgraphtrackactive">DatasetGraphTrackActive<a class="headerlink" 
href="#datasetgraphtrackactive" title="Permanent link">&para;</a></h3>
+<p>Framework for implementing transactions.  Provides checking.</p>
+<h3 id="datasetgraphwithlock">DatasetGraphWithLock<a class="headerlink" 
href="#datasetgraphwithlock" title="Permanent link">&para;</a></h3>
+<p>Provides transactions, without abort by default, using a lock.  If the lock
+is LockMRSW, we get multiple-readers or a single writer at any given moment
+in time. As most datastructures are multi-thread reader safe, this style
+works over systems that do not themselves provide transactions.</p>
+<p>Abort requires work to be undone.  Jena may in the future provide reverse
+replay abort (do the adds and deletes in reverse operation, reverse order)
+but this is partial. It does not protect against the DatasetGraph
+implementation throwing exceptions nor JVM or machine crash (if any
+persistence). It still needs MRSW to achive isolation.</p>
+<p>Read-commited needs synchronization safe datastructures -including
+co-ordinated changes to several place at once (ConcurrentHashMap isn't
+enough - need to update 2 or more ConcurrentHashMaps together).</p>
+<h2 id="tdb">TDB<a class="headerlink" href="#tdb" title="Permanent 
link">&para;</a></h2>
+<h3 id="datasetgraphtdb">DatasetGraphTDB<a class="headerlink" 
href="#datasetgraphtdb" title="Permanent link">&para;</a></h3>
+<p><code>DatasetGraphTDB</code> is concerned with the storage
+historical and not used directly by applications.</p>
+<h3 id="datasetgraphtransaction">DatasetGraphTransaction<a class="headerlink" 
href="#datasetgraphtransaction" title="Permanent link">&para;</a></h3>
+<p>This is the class returned by <code>TDBFactory</code>, wrapped in 
<code>DatasetImpl</code>.</p>
+<p>Different in TDB2 - DatasetGraphTransaction not used, DatasetGraphTDB is 
transactional.</p>
+<h3 id="datasetgraphtxn">DatasetGraphTxn<a class="headerlink" 
href="#datasetgraphtxn" title="Permanent link">&para;</a></h3>
+<p>This is the TDB per-transaction <code>DatasetGraph</code> using the 
transaction view
+of indexes.  For the application, it is held in the transactions
+<code>ThreadLocal</code> in <code>DatasetGraphTransaction</code>.</p>
+<p>Internally, each read transaction for the same generation of the data uses
+the same <code>DatasetGraphTransaction</code>.</p>
+  </div>
+</div>
+
+</div><!--/.container -->
+
+    <footer class="footer">
+      <div class="container">
+        <p>Copyright &copy; 2011&ndash;2016 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>


Reply via email to