Author: buildbot
Date: Wed Jul 30 12:18:52 2014
New Revision: 917933
Log:
Staging update by buildbot for jena
Modified:
websites/staging/jena/trunk/content/ (props changed)
websites/staging/jena/trunk/content/documentation/inference/index.html
Propchange: websites/staging/jena/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Wed Jul 30 12:18:52 2014
@@ -1 +1 @@
-1614613
+1614627
Modified: websites/staging/jena/trunk/content/documentation/inference/index.html
==============================================================================
--- websites/staging/jena/trunk/content/documentation/inference/index.html
(original)
+++ websites/staging/jena/trunk/content/documentation/inference/index.html Wed
Jul 30 12:18:52 2014
@@ -158,7 +158,7 @@
are possible, and feedback to the author (via the <a
href="http://groups.yahoo.com/group/jena-dev">jena-dev</a>
support list) is welcomed. </p>
-<h2 id="wzxhzdk20wzxhzdk21index"><a name="index"></a>Index</h2>
+<h2 id="index">Index</h2>
<p><ol>
<li><a href="#overview">Overview of inference support</a> </li>
<li><a href="#api">The inference API</a></li>
@@ -169,7 +169,7 @@
<li><a href="#extensions">Extending the inference support</a></li>
<li><a href="#futures">Futures</a></li>
</ol></p>
-<h2 id="wzxhzdk56wzxhzdk57overview-of-inference-support"><a
name="overview"></a>Overview of inference support</h2>
+<h2 id="overview">Overview of inference support</h2>
<p><p>The Jena inference subsystem is designed to allow a range of inference
engines
or reasoners to be plugged into Jena. Such engines are used to derive
additional
RDF assertions which are entailed from some base RDF together with any
optional
@@ -228,7 +228,7 @@
</ol></p>
<p>[<a href="#index">index</a>]</p>
-<h2 id="wzxhzdk129wzxhzdk130the-inference-api"><a name="api"></a>The Inference
API</h2>
+<h2 id="api">The Inference API</h2>
<p><ol>
<li><a href="#reasonerAPI">Generic reasoner API</a></li>
<li><a href="#generalExamples">Small examples</a></li>
@@ -242,7 +242,7 @@
- <a href="#tracing">Tracing</a> <br>
</li>
</ol></p>
-<h3 id="wzxhzdk167wzxhzdk168generic-reasoner-api"><a
name="reasonerAPI"></a>Generic reasoner API</h3>
+<h3 id="wzxhzdk161wzxhzdk162generic-reasoner-api"><a
name="reasonerAPI"></a>Generic reasoner API</h3>
<h4 id="finding-a-reasoner">Finding a reasoner</h4>
<p><p>For each type of reasoner there is a factory class (which conforms to
the interface
<code><a
href="/documentation/javadoc/jena/com/hp/hpl/jena/reasoner/ReasonerFactory.html">ReasonerFactory</a></code>)
@@ -310,7 +310,7 @@
and <code>Reasoner.supportsProperty</code> are used to access this
descriptive
metadata.</p>
<p>[<a href="#api">API index</a>] [<a href="#index">main index</a>]</p></p>
-<h3 id="wzxhzdk263wzxhzdk264some-small-examples"><a
name="generalExamples"></a>Some small examples</h3>
+<h3 id="wzxhzdk257wzxhzdk258some-small-examples"><a
name="generalExamples"></a>Some small examples</h3>
<p><p>These initial examples are not designed to illustrate the power of the
reasoners
but to illustrate the code required to set one up.</p>
<p>Let us first create a Jena model containing the statements that some
property
@@ -402,13 +402,13 @@
<p>[<a href="#api">API index</a>] [<a href="#index">main index</a>]</p>
-<h3 id="wzxhzdk303wzxhzdk304operations-on-inference-models"><a
name="operationsOnInferenceModels"></a>Operations on inference models</h3>
+<h3 id="wzxhzdk297wzxhzdk298operations-on-inference-models"><a
name="operationsOnInferenceModels"></a>Operations on inference models</h3>
<p><p>For many applications one simply creates a model incorporating some
inference
step, using the <code>ModelFactory</code> methods, and then just works within
the standard Jena Model API to access the entailed statements. However,
sometimes
it is necessary to gain more control over the processing or to access
additional
reasoner features not available as <i>virtual</i> triples.</p></p>
-<h4 id="wzxhzdk311wzxhzdk312validation"><a
name="validation"></a>Validation</h4>
+<h4 id="wzxhzdk305wzxhzdk306validation"><a
name="validation"></a>Validation</h4>
<p><p>The most common reasoner operation which can't be exposed through
additional
triples in the inference model is that of validation. Typically the ontology
languages used with the semantic web allow constraints to be expressed, the
@@ -473,7 +473,7 @@
an additional method <code>Report.isClean()</code> which returns true if the
ontology is both valid (logically consistent) and generated no warnings (such
as inconsistent classes).</p></p>
-<h4 id="wzxhzdk373wzxhzdk374extended-list-statements"><a
name="extendedListStatements"></a>Extended list statements</h4>
+<h4 id="wzxhzdk367wzxhzdk368extended-list-statements"><a
name="extendedListStatements"></a>Extended list statements</h4>
<p><p>The default API supports accessing all entailed information at the level
of
individual triples. This is surprisingly flexible but there are queries which
cannot be easily supported this way. The first such is when the query needs
@@ -492,7 +492,7 @@
preloading your data with expressions you might need to query over. However,
for some external reasoners, especially description logic reasoners, we
anticipate
restricted uses of this form of listStatement will be important.</p></p>
-<h4 id="wzxhzdk385wzxhzdk386direct-and-indirect-relationships"><a
name="directRelations"></a>Direct and indirect relationships</h4>
+<h4 id="wzxhzdk379wzxhzdk380direct-and-indirect-relationships"><a
name="directRelations"></a>Direct and indirect relationships</h4>
<p><p>The second type of operation that is not obviously convenient at the
triple
level involves distinguishing between direct and indirect relationships. If
a relation is transitive, for example rdfs:subClassOf, then we can define the
@@ -513,7 +513,7 @@
<p>Typically the easiest way to work with such indirect and direct relations is
to use the <a href="../ontology/index.html">Ontology API</a> which hides the
grubby details of these property aliases.</p></p>
-<h4 id="wzxhzdk412wzxhzdk413derivations"><a
name="derivations"></a>Derivations</h4>
+<h4 id="wzxhzdk406wzxhzdk407derivations"><a
name="derivations"></a>Derivations</h4>
<p><p>It is sometimes useful to be able to trace where an inferred statement
was
generated from. This is achieved using the
<code>InfModel.getDerivation(Statement)</code>
method. This returns a iterator over a set <a
href="/documentation/javadoc/jena/com/hp/hpl/jena/reasoner/Derivation.html"><code>Derviation</code></a>
@@ -559,7 +559,7 @@ Rule rule1 concluded (eg:A eg:p eg:D) &l
Rule rule1 concluded (eg:B eg:p eg:D) <-
Fact (eg:B eg:p eg:C)
Fact (eg:C eg:p eg:D)</i></pre></p>
-<h4 id="wzxhzdk455wzxhzdk456accessing-raw-data-and-deductions"><a
name="rawAccess"></a>Accessing raw data and deductions</h4>
+<h4 id="wzxhzdk449wzxhzdk450accessing-raw-data-and-deductions"><a
name="rawAccess"></a>Accessing raw data and deductions</h4>
<p><p>From an <code>InfModel</code> it is easy to retrieve the original,
unchanged,
data over which the model has been computed using the
<code>getRawModel()</code>
call. This returns a model equivalent to the one used in the initial
<code>bind</code>
@@ -568,7 +568,7 @@ Rule rule1 concluded (eg:A eg:p eg:D) &l
<p>Some reasoners, notably the forward chaining rule engine, store the deduced
statements in a concrete form and this set of deductions can be obtained
separately
by using the <code>getDeductionsModel()</code> call. </p></p>
-<h4 id="wzxhzdk469wzxhzdk470processing-control"><a
name="processingControl"></a>Processing control</h4>
+<h4 id="wzxhzdk463wzxhzdk464processing-control"><a
name="processingControl"></a>Processing control</h4>
<p><p>Having bound a <code>Model</code> into an <code>InfModel</code> by using
a
<code>Reasoner</code> its content can still be changed by the normal
<code>add</code>
and <code>remove</code> calls to the <code>InfModel</code>. Any such change
@@ -595,7 +595,7 @@ Rule rule1 concluded (eg:A eg:p eg:D) &l
call. It there are any outstanding queries (i.e. StmtIterators which have not
been read to the end yet) then those will be aborted (the next hasNext() call
will return false).</p></p>
-<h4 id="wzxhzdk499wzxhzdk500tracing"><a name="tracing"></a>Tracing</h4>
+<h4 id="wzxhzdk493wzxhzdk494tracing"><a name="tracing"></a>Tracing</h4>
<p><p>When developing new reasoner configurations, especially new rule sets
for the
rule engines, it is sometimes useful to be able to trace the operations of
the
associated inference engine. Though, often this generates too much
information
@@ -609,14 +609,14 @@ Rule rule1 concluded (eg:A eg:p eg:D) &l
its underlying InfGraph and calling <code>setTraceOn()</code> call. If you
need
to make use of this see the full javadoc for the relevant InfGraph
implementation.</p>
<p>[<a href="#api">API index</a>] [<a href="#index">main index</a>]</p></p>
-<h2 id="wzxhzdk519wzxhzdk520the-rdfs-reasoner"><a name="rdfs"></a>The RDFS
reasoner</h2>
+<h2 id="wzxhzdk513wzxhzdk514the-rdfs-reasoner"><a name="rdfs"></a>The RDFS
reasoner</h2>
<p><ol>
<li><a href="#RDFSintro">RDFS reasoner - introduction and coverage</a></li>
<li><a href="#RDFSconfiguration">RDFS Configuration</a></li>
<li><a href="#RDFSexamples">RDFS Example</a></li>
<li><a href="#RDFSnotes">RDFS implementation and performance notes</a></li>
</ol></p>
-<h3 id="wzxhzdk539wzxhzdk540rdfs-reasoner-intro-and-coverage"><a
name="RDFSintro"></a>RDFS reasoner - intro and coverage</h3>
+<h3 id="wzxhzdk533wzxhzdk534rdfs-reasoner-intro-and-coverage"><a
name="RDFSintro"></a>RDFS reasoner - intro and coverage</h3>
<p><p>Jena includes an RDFS reasoner (<code>RDFSRuleReasoner</code>) which
supports
almost all of the RDFS entailments described by the RDF Core working group
[<a href="http://www.w3.org/TR/rdf-mt/">RDF
Semantics</a>]. The only omissions are deliberate and are described
below.</p>
@@ -642,7 +642,7 @@ Rule rule1 concluded (eg:A eg:p eg:D) &l
additional bNode triples, even in <i>virtual</i> triple form, is negligible
and so this has been deliberately omitted from the reasoner. </p>
<p>[<a href="#rdfs">RDFS index</a>] [<a href="#index">main index</a>]</p></p>
-<h3 id="wzxhzdk575wzxhzdk576rdfs-configuration"><a
name="RDFSconfiguration"></a>RDFS configuration</h3>
+<h3 id="wzxhzdk569wzxhzdk570rdfs-configuration"><a
name="RDFSconfiguration"></a>RDFS configuration</h3>
<p><p>The RDFSRuleReasoner can be configured to work at three different
compliance
levels: </p>
<dl>
@@ -730,7 +730,7 @@ Rule rule1 concluded (eg:A eg:p eg:D) &l
</tr>
</table>
<p>[<a href="#rdfs">RDFS index</a>] [<a href="#index">main index</a>]</p></p>
-<h3 id="wzxhzdk692wzxhzdk693rdfs-example"><a name="RDFSexamples"></a>RDFS
Example</h3>
+<h3 id="wzxhzdk686wzxhzdk687rdfs-example"><a name="RDFSexamples"></a>RDFS
Example</h3>
<p><p>As a complete worked example let us create a simple RDFS schema, some
instance
data and use an instance of the RDFS reasoner to query the two.</p>
<p>We shall use a trivial schema:</p>
@@ -805,7 +805,7 @@ that is not compatible with 13</i></pre>
<p>because the age was given using an RDF plain litera where as the schema
requires
it to be a datatyped literal which is compatible with xsd:integer.</p>
<p>[<a href="#rdfs">RDFS index</a>] [<a href="#index">main index</a>]</p></p>
-<h3 id="wzxhzdk859wzxhzdk860rdfs-implementation-and-performance-notes"><a
name="RDFSnotes"></a>RDFS implementation and performance notes</h3>
+<h3 id="wzxhzdk853wzxhzdk854rdfs-implementation-and-performance-notes"><a
name="RDFSnotes"></a>RDFS implementation and performance notes</h3>
<p><p>The RDFSRuleReasoner is a hybrid implementation. The subproperty and
subclass
lattices are eagerly computed and stored in a compact in-memory form using
the
TransitiveReasoner (see below). The identification of which container
membership
@@ -863,7 +863,7 @@ that is not compatible with 13</i></pre>
on adapting the rule engines to exploit the capabilities of the more
sophisticated
database backends will be considered.</p>
<p>[<a href="#rdfs">RDFS index</a>] [<a href="#index">main index</a>]</p></p>
-<h2 id="wzxhzdk947wzxhzdk948the-owl-reasoner"><a name="owl"></a>The OWL
reasoner</h2>
+<h2 id="wzxhzdk941wzxhzdk942the-owl-reasoner"><a name="owl"></a>The OWL
reasoner</h2>
<p><ol>
<li><a href="#OWLintro">OWL reasoner introduction</a></li>
<li><a href="#OWLcoverage">OWL coverage</a></li>
@@ -880,7 +880,7 @@ an external DL reasoner such as Pellet,
configuration still leaves something to be desired and will the subject of
future work - time permitting.</p>
<p>See also <a href="#OWLnotes">subsection 5</a> for notes on more specific
limitations
of the current implementation. </p></p>
-<h3 id="wzxhzdk981wzxhzdk982owl-coverage"><a name="OWLcoverage"></a>OWL
coverage</h3>
+<h3 id="wzxhzdk975wzxhzdk976owl-coverage"><a name="OWLcoverage"></a>OWL
coverage</h3>
<p><p>The Jena OWL reasoners could be described as instance-based reasoners.
That
is, they work by using rules to propagate the if- and only-if- implications
of
the OWL constructs on instance data. Reasoning about classes is done
indirectly
@@ -1099,7 +1099,7 @@ configuration still leaves something to
restriction.</li>
</ul>
<p>[<a href="#owl">OWL index</a>] [<a href="#index">main index</a>]</p></p>
-<h3 id="wzxhzdk1231wzxhzdk1232owl-configuration"><a
name="OWLconfiguration"></a>OWL Configuration</h3>
+<h3 id="wzxhzdk1225wzxhzdk1226owl-configuration"><a
name="OWLconfiguration"></a>OWL Configuration</h3>
<p><p>This reasoner is accessed using
<code>ModelFactory.createOntologyModel</code>
with the prebuilt <a
href="/documentation/javadoc/jena/com/hp/hpl/jena/ontology/OntModelSpec.html"><code>OntModelSpec</code></a>
<code>OWL_MEM_RULE_INF</code> or manually via
<code>ReasonerRegistery.getOWLReasoner()</code>.</p>
@@ -1136,7 +1136,7 @@ configuration still leaves something to
of the rule-based approach we imagine useful subsets of functionality
emerging
- like that that supported by the RDFS reasoner in the form of the level
settings.</p>
<p>[<a href="#owl">OWL index</a>] [<a href="#index">main index</a>]</p></p>
-<h3 id="wzxhzdk1297wzxhzdk1298owl-example"><a name="OWLexamples"></a>OWL
Example</h3>
+<h3 id="wzxhzdk1291wzxhzdk1292owl-example"><a name="OWLexamples"></a>OWL
Example</h3>
<p><p>As an example of using the OWL inference support, consider the sample
schema
and data file in the data directory - <a
href="data/owlDemoSchema.xml">owlDemoSchema.xml</a>
and <a href="data/owlDemoData.xml">owlDemoData.xml</a>. </p>
@@ -1225,7 +1225,7 @@ Implicated node: eg:bigNameSpecialMB</i>
referencing two motherboards which are explicitly defined to be different
resources
and thus violate the FunctionProperty nature of
<code>hasMotherBoard</code>.</p>
<p>[<a href="#owl">OWL index</a>] [<a href="#index">main index</a>]</p></p>
-<h3 id="wzxhzdk1406wzxhzdk1407owl-notes-and-limitations"><a
name="OWLnotes"></a>OWL notes and limitations</h3>
+<h3 id="wzxhzdk1400wzxhzdk1401owl-notes-and-limitations"><a
name="OWLnotes"></a>OWL notes and limitations</h3>
<h4 id="comprehension-axioms">Comprehension axioms</h4>
<p><p>A critical implication of our variant of the instance-based approach is
that
the reasoner does not directly answer queries relating to dynamically
introduced
@@ -1296,7 +1296,7 @@ class B = cardinality(P,1)</pre>
should be valid) but not complete. </p></p>
<p>[<a href="#owl">OWL index</a>] [<a href="#index">main index</a>]</p>
-<h2 id="wzxhzdk1445wzxhzdk1446the-transitive-reasoner"><a
name="transitive"></a>The transitive reasoner</h2>
+<h2 id="wzxhzdk1439wzxhzdk1440the-transitive-reasoner"><a
name="transitive"></a>The transitive reasoner</h2>
<p><p>The TransitiveReasoner provides support for storing and traversing class
and
property lattices. This implements just the <i>transitive</i> and
<i>symmetric</i>
properties of <code>rdfs:subPropertyOf</code> and
<code>rdfs:subClassOf</code>.
@@ -1312,7 +1312,7 @@ class B = cardinality(P,1)</pre>
used in the default RDFS reasoner.</p>
<p>It has no configuration options.</p>
<p>[<a href="#index">Index</a>]</p></p>
-<h2 id="wzxhzdk1467wzxhzdk1468the-general-purpose-rule-engine"><a
name="rules"></a>The general purpose rule engine</h2>
+<h2 id="wzxhzdk1461wzxhzdk1462the-general-purpose-rule-engine"><a
name="rules"></a>The general purpose rule engine</h2>
<p><ol>
<li><a href="#RULEoverview">Overview of the rule engine(s)</a></li>
<li><a href="#RULEsyntax">Rule syntax and structure</a></li>
@@ -1326,7 +1326,7 @@ class B = cardinality(P,1)</pre>
<li><a href="#RULEnotes">Notes</a></li>
<li><a href="#RULEextensions">Extensions</a></li>
</ol></p>
-<h3 id="wzxhzdk1515wzxhzdk1516overview-of-the-rule-engines"><a
name="RULEoverview"></a>Overview of the rule engine(s)</h3>
+<h3 id="wzxhzdk1509wzxhzdk1510overview-of-the-rule-engines"><a
name="RULEoverview"></a>Overview of the rule engine(s)</h3>
<p><p>Jena includes a general purpose rule-based reasoner which is used to
implement
both the RDFS and OWL reasoners but is also available for general use. This
reasoner supports rule-based inference over RDF graphs and provides forward
@@ -1345,7 +1345,7 @@ class B = cardinality(P,1)</pre>
The current release includes a starting set of primitives which are
sufficient
for the RDFS and OWL implementations but is easily extensible.</p>
<p>[<a href="#rules">rule index</a>] [<a href="#index">main index</a>]</p></p>
-<h3 id="wzxhzdk1537wzxhzdk1538rule-syntax-and-structure"><a
name="RULEsyntax"></a>Rule syntax and structure</h3>
+<h3 id="wzxhzdk1531wzxhzdk1532rule-syntax-and-structure"><a
name="RULEsyntax"></a>Rule syntax and structure</h3>
<p><p>A rule for the rule-based reasoner is defined by a Java <code><a
href="/documentation/javadoc/jena/com/hp/hpl/jena/reasoner/rulesys/Rule.html">Rule</a></code>
object with a list of body terms (premises), a list of head terms
(conclusions)
and an optional name and optional direction. Each term or <a
href="/documentation/javadoc/jena/com/hp/hpl/jena/reasoner/rulesys/ClauseEntry.html"><code>ClauseEntry</code></a>