You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by bu...@apache.org on 2011/09/08 01:36:22 UTC

svn commit: r795472 [1/2] - in /websites/staging/jena/trunk/content/jena: ./ about_jena/ documentation/ documentation/assembler/ documentation/inference/ documentation/larq/ documentation/ontology/ documentation/query/ documentation/rdf/ documentation/...

Author: buildbot
Date: Wed Sep  7 23:36:20 2011
New Revision: 795472

Log:
Staging update by buildbot

Added:
    websites/staging/jena/trunk/content/jena/documentation/assembler/
    websites/staging/jena/trunk/content/jena/documentation/assembler/assembler-howto.html
    websites/staging/jena/trunk/content/jena/documentation/assembler/index.html
    websites/staging/jena/trunk/content/jena/documentation/assembler/inside-assemblers.html
Modified:
    websites/staging/jena/trunk/content/jena/about_jena/about.html
    websites/staging/jena/trunk/content/jena/about_jena/architecture.html
    websites/staging/jena/trunk/content/jena/about_jena/index.html
    websites/staging/jena/trunk/content/jena/about_jena/roadmap.html
    websites/staging/jena/trunk/content/jena/about_jena/team.html
    websites/staging/jena/trunk/content/jena/documentation/index.html
    websites/staging/jena/trunk/content/jena/documentation/inference/index.html
    websites/staging/jena/trunk/content/jena/documentation/larq/index.html
    websites/staging/jena/trunk/content/jena/documentation/ontology/index.html
    websites/staging/jena/trunk/content/jena/documentation/query/index.html
    websites/staging/jena/trunk/content/jena/documentation/rdf/index.html
    websites/staging/jena/trunk/content/jena/documentation/sdb/index.html
    websites/staging/jena/trunk/content/jena/documentation/serving_data/index.html
    websites/staging/jena/trunk/content/jena/documentation/tdb/index.html
    websites/staging/jena/trunk/content/jena/documentation/tools/index.html
    websites/staging/jena/trunk/content/jena/documentation/tools/schemagen.html
    websites/staging/jena/trunk/content/jena/download/index.html
    websites/staging/jena/trunk/content/jena/download/maven.html
    websites/staging/jena/trunk/content/jena/download/osgi.html
    websites/staging/jena/trunk/content/jena/getting_involved/index.html
    websites/staging/jena/trunk/content/jena/getting_started/fuseki.html
    websites/staging/jena/trunk/content/jena/getting_started/index.html
    websites/staging/jena/trunk/content/jena/getting_started/rdf_api.html
    websites/staging/jena/trunk/content/jena/getting_started/sparql.html
    websites/staging/jena/trunk/content/jena/getting_started/tell_me_how.html
    websites/staging/jena/trunk/content/jena/help_and_support/bugs_and_suggestions.html
    websites/staging/jena/trunk/content/jena/help_and_support/faq.html
    websites/staging/jena/trunk/content/jena/help_and_support/index.html
    websites/staging/jena/trunk/content/jena/index.html
    websites/staging/jena/trunk/content/jena/tutorials/index.html
    websites/staging/jena/trunk/content/jena/tutorials/sparql.html
    websites/staging/jena/trunk/content/jena/tutorials/using_jena_with_eclipse.html

Modified: websites/staging/jena/trunk/content/jena/about_jena/about.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/about_jena/about.html (original)
+++ websites/staging/jena/trunk/content/jena/about_jena/about.html Wed Sep  7 23:36:20 2011
@@ -87,7 +87,7 @@
 <ul>
 <li><a href="/jena/tutorials/index.html">RDF tutorial</a></li>
 <li><a href="/jena/tutorials/sparql.html">SPARQL queries</a></li>
-<li><a href="/jena/tutorials/using_jena_with_eclipse.html">Using Jena with Eclipse</a></li>
+<li><a href="/jena/tutorials/usingklzzwxh:0023jenaklzzwxh:0024withklzzwxh:0025eclipse.html">Using Jena with Eclipse</a></li>
 </ul>
 <h1 id="documentation">Documentation</h1>
 <ul>
@@ -101,6 +101,11 @@
 <li><a href="/jena/documentation/serving_data/index.html">Serving Data</a></li>
 <li><a href="/jena/documentation/ontology/index.html">Ontology</a></li>
 <li><a href="/jena/documentation/inference/index.html">Inference</a></li>
+<li><a href="/jena/documentation/assembler/index.html">Assembler</a><ul>
+<li><a href="/jena/documentation/assembler/assembler-howto.html">Assembler how-to</a></li>
+<li><a href="/jena/documentation/assembler/inside-assemblers.html">Inside assemblers</a></li>
+</ul>
+</li>
 <li><a href="/jena/documentation/tools/index.html">Tools</a><ul>
 <li><a href="/jena/documentation/tools/schemagen.html">schemagen</a></li>
 </ul>

Modified: websites/staging/jena/trunk/content/jena/about_jena/architecture.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/about_jena/architecture.html (original)
+++ websites/staging/jena/trunk/content/jena/about_jena/architecture.html Wed Sep  7 23:36:20 2011
@@ -87,7 +87,7 @@
 <ul>
 <li><a href="/jena/tutorials/index.html">RDF tutorial</a></li>
 <li><a href="/jena/tutorials/sparql.html">SPARQL queries</a></li>
-<li><a href="/jena/tutorials/using_jena_with_eclipse.html">Using Jena with Eclipse</a></li>
+<li><a href="/jena/tutorials/usingklzzwxh:0023jenaklzzwxh:0024withklzzwxh:0025eclipse.html">Using Jena with Eclipse</a></li>
 </ul>
 <h1 id="documentation">Documentation</h1>
 <ul>
@@ -101,6 +101,11 @@
 <li><a href="/jena/documentation/serving_data/index.html">Serving Data</a></li>
 <li><a href="/jena/documentation/ontology/index.html">Ontology</a></li>
 <li><a href="/jena/documentation/inference/index.html">Inference</a></li>
+<li><a href="/jena/documentation/assembler/index.html">Assembler</a><ul>
+<li><a href="/jena/documentation/assembler/assembler-howto.html">Assembler how-to</a></li>
+<li><a href="/jena/documentation/assembler/inside-assemblers.html">Inside assemblers</a></li>
+</ul>
+</li>
 <li><a href="/jena/documentation/tools/index.html">Tools</a><ul>
 <li><a href="/jena/documentation/tools/schemagen.html">schemagen</a></li>
 </ul>

Modified: websites/staging/jena/trunk/content/jena/about_jena/index.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/about_jena/index.html (original)
+++ websites/staging/jena/trunk/content/jena/about_jena/index.html Wed Sep  7 23:36:20 2011
@@ -87,7 +87,7 @@
 <ul>
 <li><a href="/jena/tutorials/index.html">RDF tutorial</a></li>
 <li><a href="/jena/tutorials/sparql.html">SPARQL queries</a></li>
-<li><a href="/jena/tutorials/using_jena_with_eclipse.html">Using Jena with Eclipse</a></li>
+<li><a href="/jena/tutorials/usingklzzwxh:0023jenaklzzwxh:0024withklzzwxh:0025eclipse.html">Using Jena with Eclipse</a></li>
 </ul>
 <h1 id="documentation">Documentation</h1>
 <ul>
@@ -101,6 +101,11 @@
 <li><a href="/jena/documentation/serving_data/index.html">Serving Data</a></li>
 <li><a href="/jena/documentation/ontology/index.html">Ontology</a></li>
 <li><a href="/jena/documentation/inference/index.html">Inference</a></li>
+<li><a href="/jena/documentation/assembler/index.html">Assembler</a><ul>
+<li><a href="/jena/documentation/assembler/assembler-howto.html">Assembler how-to</a></li>
+<li><a href="/jena/documentation/assembler/inside-assemblers.html">Inside assemblers</a></li>
+</ul>
+</li>
 <li><a href="/jena/documentation/tools/index.html">Tools</a><ul>
 <li><a href="/jena/documentation/tools/schemagen.html">schemagen</a></li>
 </ul>

Modified: websites/staging/jena/trunk/content/jena/about_jena/roadmap.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/about_jena/roadmap.html (original)
+++ websites/staging/jena/trunk/content/jena/about_jena/roadmap.html Wed Sep  7 23:36:20 2011
@@ -87,7 +87,7 @@
 <ul>
 <li><a href="/jena/tutorials/index.html">RDF tutorial</a></li>
 <li><a href="/jena/tutorials/sparql.html">SPARQL queries</a></li>
-<li><a href="/jena/tutorials/using_jena_with_eclipse.html">Using Jena with Eclipse</a></li>
+<li><a href="/jena/tutorials/usingklzzwxh:0023jenaklzzwxh:0024withklzzwxh:0025eclipse.html">Using Jena with Eclipse</a></li>
 </ul>
 <h1 id="documentation">Documentation</h1>
 <ul>
@@ -101,6 +101,11 @@
 <li><a href="/jena/documentation/serving_data/index.html">Serving Data</a></li>
 <li><a href="/jena/documentation/ontology/index.html">Ontology</a></li>
 <li><a href="/jena/documentation/inference/index.html">Inference</a></li>
+<li><a href="/jena/documentation/assembler/index.html">Assembler</a><ul>
+<li><a href="/jena/documentation/assembler/assembler-howto.html">Assembler how-to</a></li>
+<li><a href="/jena/documentation/assembler/inside-assemblers.html">Inside assemblers</a></li>
+</ul>
+</li>
 <li><a href="/jena/documentation/tools/index.html">Tools</a><ul>
 <li><a href="/jena/documentation/tools/schemagen.html">schemagen</a></li>
 </ul>

Modified: websites/staging/jena/trunk/content/jena/about_jena/team.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/about_jena/team.html (original)
+++ websites/staging/jena/trunk/content/jena/about_jena/team.html Wed Sep  7 23:36:20 2011
@@ -87,7 +87,7 @@
 <ul>
 <li><a href="/jena/tutorials/index.html">RDF tutorial</a></li>
 <li><a href="/jena/tutorials/sparql.html">SPARQL queries</a></li>
-<li><a href="/jena/tutorials/using_jena_with_eclipse.html">Using Jena with Eclipse</a></li>
+<li><a href="/jena/tutorials/usingklzzwxh:0023jenaklzzwxh:0024withklzzwxh:0025eclipse.html">Using Jena with Eclipse</a></li>
 </ul>
 <h1 id="documentation">Documentation</h1>
 <ul>
@@ -101,6 +101,11 @@
 <li><a href="/jena/documentation/serving_data/index.html">Serving Data</a></li>
 <li><a href="/jena/documentation/ontology/index.html">Ontology</a></li>
 <li><a href="/jena/documentation/inference/index.html">Inference</a></li>
+<li><a href="/jena/documentation/assembler/index.html">Assembler</a><ul>
+<li><a href="/jena/documentation/assembler/assembler-howto.html">Assembler how-to</a></li>
+<li><a href="/jena/documentation/assembler/inside-assemblers.html">Inside assemblers</a></li>
+</ul>
+</li>
 <li><a href="/jena/documentation/tools/index.html">Tools</a><ul>
 <li><a href="/jena/documentation/tools/schemagen.html">schemagen</a></li>
 </ul>

Added: websites/staging/jena/trunk/content/jena/documentation/assembler/assembler-howto.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/documentation/assembler/assembler-howto.html (added)
+++ websites/staging/jena/trunk/content/jena/documentation/assembler/assembler-howto.html Wed Sep  7 23:36:20 2011
@@ -0,0 +1,955 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/jena/css/jena.css" rel="stylesheet" type="text/css">
+  <title>Apache Jena - Jena Assembler howto</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <script src="/jena/js/jquery-1.6.1.min.js" type="text/javascript"></script>
+  <script src="/jena/js/jena-navigation.js" type="text/javascript"></script>
+</head>
+
+<body>
+  <div id="header">
+    <div id="logoblock">
+    <img alt="Apache Jena" src="/jena/images/jena-logo/jena-logo-small.png"/>
+    </div>
+
+    <div id="titleblock">
+      <h1 class="title">Apache Jena</h1>
+      <div id="topmenu" class="tabbar round-10">
+        <ul>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/index.html" id="home_menu">Home</a></li>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/help_and_support/index.html">Support</a></li>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/getting_started/index.html">Getting started</a></li>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/tutorials/index.html">Tutorials</a></li>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/documentation/index.html">Documentation</a></li>
+        </ul>
+      </div>
+    </div>
+  </div>
+
+  <div id="navigation" class="clear">
+  <h1 id="quick_links">Quick links</h1>
+<ul>
+<li><a href="/jena/index.html">Home</a></li>
+<li><a href="/jena/download/index.html">Downloads</a></li>
+<li><a href="/jena/help_and_support/index.html">Help and support</a></li>
+<li><a href="/jena/help_and_support/bugs_and_suggestions.html">Report a bug</a></li>
+<li><a href="/jena/about_jena/roadmap.html">Roadmap</a></li>
+<li><a href="/jena/getting_involved/index.html">Getting involved</a></li>
+</ul>
+<h1 id="about_jena">About Jena</h1>
+<ul>
+<li><a href="/jena/index.html">Home</a></li>
+<li><a href="/jena/about_jena/about.html">About Jena</a></li>
+<li><a href="/jena/about_jena/architecture.html">Architecture</a></li>
+<li><a href="/jena/about_jena/roadmap.html">Roadmap</a></li>
+<li><a href="/jena/about_jena/team.html">Project team</a></li>
+</ul>
+<h1 id="download">Download</h1>
+<ul>
+<li><a href="/jena/download/index.html">Downloading Jena</a></li>
+<li><a href="/jena/download/maven.html">Using Maven</a></li>
+<li><a href="/jena/download/osgi.html">Using OSGi</a></li>
+</ul>
+<h1 id="help_and_support">Help and support</h1>
+<ul>
+<li><a href="/jena/help_and_support/index.html">Getting help</a></li>
+<li><a href="/jena/help_and_support/bugs_and_suggestions.html">Bugs and suggestions</a></li>
+</ul>
+<h1 id="getting_started">Getting Started</h1>
+<ul>
+<li><a href="/jena/getting_started/index.html">A first Jena project</a></li>
+<li><a href="/jena/getting_started/rdf_api.html">RDF API overview</a></li>
+<li><a href="/jena/getting_started/sparql.html">Querying RDF with SPARQL</a></li>
+<li><a href="/jena/getting_started/fuseki.html">Serving RDF over HTTP</a></li>
+<li><a href="/jena/getting_started/tell_me_how.html">Tell me how to ...</a></li>
+</ul>
+<h1 id="tutorials">Tutorials</h1>
+<ul>
+<li><a href="/jena/tutorials/index.html">RDF tutorial</a></li>
+<li><a href="/jena/tutorials/sparql.html">SPARQL queries</a></li>
+<li><a href="/jena/tutorials/usingklzzwxh:0023jenaklzzwxh:0024withklzzwxh:0025eclipse.html">Using Jena with Eclipse</a></li>
+</ul>
+<h1 id="documentation">Documentation</h1>
+<ul>
+<li><a href="/jena/documentation/index.html">Overview</a></li>
+<li><a href="/jena/documentation/javadoc">Javadoc</a></li>
+<li><a href="/jena/documentation/rdf/index.html">RDF</a></li>
+<li><a href="/jena/documentation/query/index.html">Query</a></li>
+<li><a href="/jena/documentation/tdb/index.html">TDB</a></li>
+<li><a href="/jena/documentation/sdb/index.html">SDB</a></li>
+<li><a href="/jena/documentation/larq/index.html">LARQ</a></li>
+<li><a href="/jena/documentation/serving_data/index.html">Serving Data</a></li>
+<li><a href="/jena/documentation/ontology/index.html">Ontology</a></li>
+<li><a href="/jena/documentation/inference/index.html">Inference</a></li>
+<li><a href="/jena/documentation/assembler/index.html">Assembler</a><ul>
+<li><a href="/jena/documentation/assembler/assembler-howto.html">Assembler how-to</a></li>
+<li><a href="/jena/documentation/assembler/inside-assemblers.html">Inside assemblers</a></li>
+</ul>
+</li>
+<li><a href="/jena/documentation/tools/index.html">Tools</a><ul>
+<li><a href="/jena/documentation/tools/schemagen.html">schemagen</a></li>
+</ul>
+</li>
+</ul>
+<h1 id="getting_involved">Getting Involved</h1>
+<ul>
+<li><a href="/jena/getting_involved/index.html">Contributing to Jena</a></li>
+</ul>
+<h1 id="asf_links">ASF links</h1>
+<ul>
+<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>
+  </div>
+
+  <div id="content">
+    <h1 class="title">Jena Assembler howto</h1>
+    <h2 id="introduction">Introduction</h2>
+<p>This document describes the vocabulary and effect of the built-in
+Jena assembler descriptions for constructing models (and other
+things). A <a href="inside-assemblers.html">companion document</a> describes
+the built-in assembler classes and how to write and integrate your
+own assemblers. If you just need a quick guide to the common model
+specifications, see the <a href="index.html">assembler quickstart</a>.</p>
+<p>This document describes how to use the Assembler classes to
+construct models -- and other things -- from RDF descriptions that
+use the Jena Assembler vocabulary. That vocabulary is available in
+<a href="../../vocabularies/assembler.n3">ja-vocabulary.n3</a> as an RDFS
+schema with conventional prefix <code>ja</code> for the URI
+<code>http://jena.hpl.hp.com/2005/11/Assembler#</code>; the class <code>JA</code> is its
+Java rendition.</p>
+<p>The examples used in this document are extracted from the examples
+file <a href="examples.n3">examples.n3</a>. The pieces of RDF/OWL schema are
+extracted from the <code>ja-vocabulary</code> file.</p>
+<p>The property names selected are those which are the "declared
+properties" (as per Jena's <code>listDeclaredProperties</code> method) of the
+class. Only the most specialised super-classes and range classes are
+shown, so (for example) <code>rdf:Resource</code> typically won't appear.</p>
+<h3 id="overview">Overview</h3>
+<p>An Assembler specification is a Resource in some RDF Model. The
+properties of that Resource describe what kind of object is to be
+assembled and what its components are: for example, an InfModel is
+constructed by specifying a base model and a reasoner. The
+specifications for the components are themselves Assembler
+specifications given by other Resources in the same Model.For
+example, to specify a memory model with data loaded from a file:</p>
+<div class="codehilite"><pre><span class="err">eg:opening-example</span> <span class="err">a</span> <span class="err">ja:MemoryModel</span>
+    <span class="err">;</span> <span class="err">ja:content</span> <span class="err">[ja:</span><span class="kd">extern</span><span class="err">alContent</span> <span class="err">&lt;file:</span><span class="c1">////home/kers/projects/jena2/doc/assembler/Data/example.n3&gt;]</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p>The <code>rdf:type</code> of <code>eg:model</code> specifies that the constructed Model is to
+be a Jena memory-based model. The <code>ja:content</code> property specifies
+that the model is to be loaded with the content of the resource
+<code>file:Data/example.n3</code>. The content handler guesses from the ".n3"
+suffix that this file is to be read using the Jena N3 reader.</p>
+<p>Unless otherwise specified by an application, Assembler
+specifications are interpreted after <em>completion</em> by</p>
+<ol>
+<li>including the JA schema,</li>
+<li>including (recursively) the objects of any owl:imports and
+    ja:imports statements, and</li>
+<li>doing <a href="#limited-rdfs-inference">(limited) RDFS inference</a>.</li>
+</ol>
+<p>(The supplied model is not modified.) In the example above,
+<code>eg:model</code> has to be given an explicit type, but the <code>ja:externalContent</code>
+bnode is implicitly typed by the domain of <code>ja:externalContent</code>. In
+this document, we will usually leave out inferrable types.</p>
+<p>We can construct our example model from the specification like this
+(you may need to tweak the filename to make this work in your
+environment):</p>
+<div class="codehilite"><pre><span class="n">Model</span> <span class="n">spec</span> <span class="o">=</span> <span class="n">FileManager</span><span class="o">.</span><span class="n">get</span><span class="p">()</span><span class="o">.</span><span class="n">loadModel</span><span class="p">(</span> <span class="s">&quot;examples.n3&quot;</span> <span class="p">);</span>
+<span class="n">Resource</span> <span class="n">root</span> <span class="o">=</span> <span class="n">spec</span><span class="o">.</span><span class="n">createResource</span><span class="p">(</span> <span class="n">spec</span><span class="o">.</span><span class="n">expandPrefix</span><span class="p">(</span> <span class="s">&quot;eg:opening-example&quot;</span> <span class="p">)</span> <span class="p">);</span>
+<span class="n">Model</span> <span class="n">m</span> <span class="o">=</span> <span class="n">Assembler</span><span class="o">.</span><span class="n">general</span><span class="o">.</span><span class="n">openModel</span><span class="p">(</span> <span class="n">root</span> <span class="p">);</span>
+</pre></div>
+
+
+<p>The model is constructed from the "root resource",
+<code>eg:opening-example</code> in our example. <code>general</code> knows how to create
+all the kinds of objects - not just Models - that we describe in
+the next sections.</p>
+<h2 id="specifications_common_to_all_models">Specifications common to all models</h2>
+<p>Assembler specifications can describe many kinds of models: memory,
+inference, database, ontology, and file-backed. All of these model
+specifications share a set of base properties for attaching
+content, prefix mappings, and reification modes.</p>
+<div class="codehilite"><pre><span class="err">ja:Loadable</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:Object</span>
+<span class="err">.</span>
+<span class="err">ja:initialContent</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Loadable</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:Content</span>
+<span class="err">.</span>
+<span class="err">ja:content</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Loadable</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:Content</span>
+<span class="err">.</span>
+
+<span class="err">ja:Model</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:ContentItem</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:Loadable</span>
+<span class="err">.</span>
+<span class="err">ja:prefixMapping</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Model</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:PrefixMapping</span>
+<span class="err">.</span>
+<span class="err">ja:reificationMode</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Model</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:ReificationMode</span>
+<span class="err">.</span>
+</pre></div>
+
+
+<p>All of a model's <code>ja:content</code> property values are interpreted as
+specifying <code>Content</code> objects and a single composite <code>Content</code>
+object is constructed and used to initialise the model. See
+<a href="#spec-content">Content</a> for the description of Content
+specifications. For example:</p>
+<div class="codehilite"><pre><span class="err">eg:sharedContent</span>
+    <span class="err">ja:</span><span class="kd">extern</span><span class="err">alContent</span> <span class="err">&lt;http:</span><span class="c1">//somewhere/RDF/ont.owl&gt;</span>
+    <span class="err">.</span>
+<span class="err">eg:common-example</span> <span class="err">a</span> <span class="err">ja:MemoryModel</span> <span class="err">;</span>
+      <span class="err">ja:content</span> <span class="err">eg:sharedContent</span> <span class="err">;</span>
+      <span class="err">ja:content</span> <span class="err">[ja:</span><span class="kd">extern</span><span class="err">alContent</span> <span class="err">&lt;file:</span><span class="c1">////home/kers/projects/jena2/doc/assembler/Data/A.rdf&gt;] ;</span>
+      <span class="err">ja:content</span> <span class="err">[ja:</span><span class="kd">extern</span><span class="err">alContent</span> <span class="err">&lt;file:</span><span class="c1">////home/kers/projects/jena2/doc/assembler/Data/B.rdf&gt;]</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p>The model constructed for <code>eg:A</code> will be loaded with the contents
+of <code>Data/A.n3</code>, <code>Data/B.rdf</code>, and <code>http://somewhere/RDF/ont.owl</code>.
+If the model supports transactions, then the content is loaded
+inside a transaction; if the load fails, the transaction is
+aborted, and a <code>TransactionAbortedException</code> thrown. If the content
+has any prefix mappings, then they are also added to the model.</p>
+<p>All of a model's <code>ja:prefixMapping</code>, <code>ja:prefix</code>, and
+<code>ja:namespace</code> properties are interpreted as specifying a
+<code>PrefixMapping</code> object and a single composite <code>PrefixMapping</code> is
+constructed and used to set the prefixes of the model. See
+<a href="#spec-prefix-mapping">PrefixMapping</a> for the description of
+Content specifications.</p>
+<p>A model may have a single <code>ja:reificationMode</code> property whose value
+must be one of the constants <code>ja:standard</code>, <code>ja:convenient</code>, or
+<code>ja:minimal</code>. The model's reification mode is set accordingly, if
+possible.</p>
+<h3 id="content_specification">Content specification</h3>
+<p>A Content specification describes content that can be used to fill
+models. Content can be external (files and URLs) or literal
+(strings in the specification) or quotations (referring to RDF
+which is part of the specification).</p>
+<div class="codehilite"><pre><span class="err">ja:Content</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:HasFileManager</span>
+<span class="err">.</span>
+
+<span class="err">ja:HasFileManager</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:Object</span>
+<span class="err">.</span>
+<span class="err">ja:fileManager</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:HasFileManager</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:FileManager</span>
+<span class="err">.</span>
+</pre></div>
+
+
+<p>A <code>ja:Content</code> specification may have zero or more
+<code>ja:externalContent</code> property values. These are URI resources
+naming an external (file or http etc) RDF object. The constructed
+Content object contains the union of the values of all such
+resources. For example:</p>
+<div class="codehilite"><pre><span class="err">eg:</span><span class="kd">extern</span><span class="err">al-content-example</span>
+    <span class="err">ja:</span><span class="kd">extern</span><span class="err">alContent</span> <span class="err">&lt;file:</span><span class="c1">////home/kers/projects/jena2/doc/assembler/Data/C.owl&gt;,</span>
+                       <span class="err">&lt;http:</span><span class="c1">//jena.hpl.hp.com/some-jena-data.rdf&gt;</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p>The external content is located using a <code>FileManager</code>. If the
+<code>Content</code> resource has a <code>ja:fileManager</code> property, then the
+<code>FileManager</code> described by that resource is used. Otherwise, if the
+<code>ContentAssembler</code> assembling this specification was constructed
+with a <code>FileManager</code> argument, that <code>FileManager</code> is used.
+Otherwise, the default <code>FileManager</code>, <code>FileManager.get()</code>, is
+used.</p>
+<p>The string literal value of the any <code>ja:literalContent</code> properties
+is interpreted as RDF in an appropriate language. The constructed
+Content object contains that RDF. The language is either specified
+by an explicit <code>ja:contentEncoding</code> property value, or guessed from
+the content of the string. The only encodings permitted are "N3"
+and "RDF/XML". For example:</p>
+<div class="codehilite"><pre><span class="err">eg:literal-content-example</span>
+    <span class="err">ja:literalContent</span> <span class="err">&quot;\_:it</span> <span class="err">dc:title</span> <span class="err">&#39;Interesting</span> <span class="err">Times&#39;&quot;</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p>The literal content is wrapped so that prefix declarations for
+<strong>rdf</strong>, <strong>rdfs</strong>, <strong>owl</strong>, <strong>dc</strong>, and <strong>xsd</strong> apply before
+interpretation.</p>
+<p>The property values of any <code>ja:quotedContent</code> properties should be
+resources. The subgraphs rooted at those resources (using the
+algorithm from <code>ResourceUtils.reachableClosure()</code>) are added to the
+content.</p>
+<h3 id="rdb_models_and_connections">RDB models and Connections</h3>
+<p>The description of an RDB model requires its name and a description
+of the JDBC connection for the database the model is in. For
+example:</p>
+<div class="codehilite"><pre><span class="err">eg:database-example</span>
+    <span class="err">ja:connection</span> <span class="err">eg:connection</span> <span class="err">;</span>
+      <span class="err">ja:modelName</span> <span class="err">&quot;Thunderbird3&quot;</span>
+    <span class="err">.</span>
+<span class="err">eg:connection</span>
+    <span class="err">ja:dbType</span> <span class="err">&quot;MySQL&quot;</span> <span class="err">;</span>
+      <span class="err">ja:dbURL</span> <span class="err">&lt;jdbc:mysql:</span><span class="c1">//localhost/test&gt; ;</span>
+      <span class="err">ja:dbUser</span> <span class="err">&quot;cjd&quot;</span>
+    <span class="err">.</span>
+
+<span class="err">ja:RDBModel</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:Connectable</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:connection;</span> <span class="err">owl:cardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:NamedModel</span>
+<span class="err">.</span>
+
+<span class="err">ja:Connectable</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:Object</span>
+<span class="err">.</span>
+<span class="err">ja:connection</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Connectable</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:Connection</span>
+<span class="err">.</span>
+
+<span class="err">ja:NamedModel</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:modelName;</span> <span class="err">owl:cardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:Model</span>
+<span class="err">.</span>
+<span class="err">ja:modelName</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:NamedModel</span>
+<span class="err">.</span>
+</pre></div>
+
+
+<p><code>ja:RDBModel</code> is a subclass of <code>ja:NamedModel</code> and shares the
+<code>ja:ModelName</code> property value naming the model within the
+database.</p>
+<p>The mandatory unique property value of <code>ja:connection</code> specifies
+the connection to the database to be used.</p>
+<p>The description of a connection requires the database name and type
+and the user name and password. If the username and password are
+not specified, <code>Assembler.general</code> will default them, normally to
+the values of the system properties <code>jena.dbUser</code> and
+<code>jena.dbPassword</code>.</p>
+<div class="codehilite"><pre><span class="err">ja:Connection</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:dbType;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:dbClass;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:dbTypeProperty;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:dbURL;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:dbClassProperty;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:dbUser;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:dbPassword;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:dbUserProperty;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:dbPasswordProperty;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:dbURLProperty;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:Object</span>
+<span class="err">.</span>
+<span class="err">ja:dbTypeProperty</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Connection</span>
+<span class="err">.</span>
+<span class="err">ja:dbPasswordProperty</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Connection</span>
+<span class="err">.</span>
+<span class="err">ja:dbType</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Connection</span>
+<span class="err">.</span>
+<span class="err">ja:dbURL</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Connection</span>
+<span class="err">.</span>
+<span class="err">ja:dbPassword</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Connection</span>
+<span class="err">.</span>
+<span class="err">ja:dbURLProperty</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Connection</span>
+<span class="err">.</span>
+<span class="err">ja:dbUserProperty</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Connection</span>
+<span class="err">.</span>
+<span class="err">ja:dbClass</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Connection</span>
+<span class="err">.</span>
+<span class="err">ja:dbClassProperty</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Connection</span>
+<span class="err">.</span>
+<span class="err">ja:dbUser</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:Connection</span>
+<span class="err">.</span>
+</pre></div>
+
+
+<p>The <code>ja:dbURL</code> property value specifies the URL of the database to
+be connected to. If it is omitted, the <code>ja:dbURLProperty</code> value is
+the name of a Java system property whose value is the URL of the
+database.</p>
+<p>The <code>ja:dbType</code> property value specifies the type of the database
+as a string. If it is omitted, the <code>ja:dbTypeProperty</code> value is the
+name of a Java system property whose value is the database type.</p>
+<p>The unique <code>ja:dbUser</code> property value is a string literal whose
+value is the name of the user connecting to the database. If it is
+omitted, the value of the <code>ja:dbUserProperty</code> is the name of a Java
+system property containing the user name.</p>
+<p>The unique <code>ja:dbPassword</code> property value is the password of the
+user connecting to the database. If it is omitted, the value of the
+<code>ja:dbPasswordProperty</code> is the name of a Java system property whose
+value is the password.</p>
+<h3 id="file_models">File models</h3>
+<p>A FileModel specification builds a memory model that is backed by a
+file. By "backed", we mean that the model is loaded from that file
+and written back to the file when (if) it is closed. Furthermore,
+the model (weakly) supports transactions.</p>
+<div class="codehilite"><pre><span class="err">eg:fileModel-example-1</span>
+    <span class="err">ja:directory</span> <span class="err">&lt;file:</span><span class="c1">///tmp&gt; ;</span>
+    <span class="err">ja:modelName</span> <span class="err">&quot;simple&quot;</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p>Here, the model is read from (and written to) the file
+<code>/tmp/simple</code>. Directory names are given as resources (not
+literals) and of course file names are system dependent -- this is
+what one might see on a Unix system. If the directory name is to be
+shared by several different FileModels, it can be useful to give it
+a namespace prefix so that it can be changed in one place as
+necessary.</p>
+<div class="codehilite"><pre><span class="err">eg:fileModel-example-2</span>
+    <span class="err">ja:directory</span> <span class="err">&lt;file:</span><span class="c1">////home/kers/projects/jena2/doc/assembler/FileModels&gt; ;</span>
+    <span class="err">ja:mapName</span> <span class="err">ja:true</span> <span class="err">;</span>
+    <span class="err">ja:modelName</span> <span class="err">&quot;http:</span><span class="c1">//somewhere.org/stuff.n3&quot;</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p>Model names can be <em>mapped</em> to allow them to be URIs without the /s
+in URIs being taken as directory separators. Here, the base file
+name will be <code>FileModels/http_C_S_Ssomewhere.org_Sstuff.n3</code>. The
+encoding is not pretty, but is sufficient for simple URIs.</p>
+<div class="codehilite"><pre><span class="err">ja:FileModel</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:mapName;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:directory;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:fileEncoding;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:NamedModel</span>
+<span class="err">.</span>
+<span class="err">ja:fileEncoding</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:FileModel</span>
+<span class="err">.</span>
+<span class="err">ja:directory</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:FileModel</span>
+<span class="err">.</span>
+<span class="err">ja:mapName</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:FileModel</span>
+<span class="err">.</span>
+</pre></div>
+
+
+<p>The <code>ja:directory</code> property specifies the directory in which the
+model file is located. The <code>ja:modelName</code> property specifies the
+name of the file within that directory.</p>
+<p>The optional unique property <code>ja:fileEncoding</code> has as its value a
+string which is the name of the encoding language of the model (ie
+one of RDF/XML or N3, etc). If it is omitted, the language is
+guessed from the suffix of the filename (as per
+<code>FileUtils.guessLang()</code>).</p>
+<p>If the optional unique property <code>ja:mapName</code> has the value
+<code>ja:true</code>, then the name of the model is <em>mapped</em> by replacing any
+_, /, or : characters by the escape sequences __, _S, or _C.
+This translation (which is the same one done by <code>FileGraphMaker</code>
+for <code>FileModelMaker</code>) allows URIs to be used as model names without
+conflicting with the filesystems use of / characters.</p>
+<h3 id="inference_models_and_reasoners">Inference models and reasoners</h3>
+<p>Inference models are specified by supplying a description of the
+reasoner that is used by the model and (optionally) a base model to
+reason over. For example:</p>
+<div class="codehilite"><pre><span class="err">eg:inference-example</span>
+    <span class="err">ja:baseModel</span> <span class="err">[a</span> <span class="err">ja:MemoryModel]</span> <span class="err">;</span>
+      <span class="err">ja:reasoner</span> <span class="err">[ja:reasonerURL</span> <span class="err">&lt;http:</span><span class="c1">//jena.hpl.hp.com/2003/RDFSExptRuleReasoner&gt;]</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p>describes an inference model that uses RDFS reasoning. The
+<em>reasonerURL</em> property value is the URI used to identify the
+reasoner (it is the value of the Jena constant
+<code>RDFSRuleReasonerFactory.URI</code>). The base model is specified as a
+memory model; if it is left out, an empty memory model is used. Of
+course, you can specify a database model as a base model:</p>
+<div class="codehilite"><pre><span class="err">eg:database-example</span>
+    <span class="err">ja:connection</span> <span class="err">eg:connection</span> <span class="err">;</span>
+    <span class="err">ja:modelName</span> <span class="err">&quot;Thunderbird3&quot;</span>
+    <span class="err">.</span>
+<span class="err">eg:connection</span>
+    <span class="err">ja:dbType</span> <span class="err">&quot;MySQL&quot;</span> <span class="err">;</span>
+    <span class="err">ja:dbURL</span> <span class="err">&lt;jdbc:mysql:</span><span class="c1">//localhost/test&gt; ;</span>
+    <span class="err">ja:dbUser</span> <span class="err">&quot;cjd&quot;</span>
+    <span class="err">.</span>
+<span class="err">eg:db-inference-example</span>
+    <span class="err">ja:baseModel</span> <span class="err">eg:database-example</span> <span class="err">;</span>
+    <span class="err">ja:reasoner</span> <span class="err">[ja:reasonerURL</span> <span class="err">&lt;http:</span><span class="c1">//jena.hpl.hp.com/2003/RDFSExptRuleReasoner&gt;]</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p>The same reasoner as used as in the previous example, but now the
+base model is a database specified in the same way as our earlier
+example.</p>
+<p>Because Jena's access to external reasoners goes through the same
+API as for its internal reasoners, you can access a DIG reasoner
+(such as Pellet running as a server) using an Assembler
+specification:
+    eg:external-inference-example
+        ja:reasoner [<a href="http://jena.hpl.hp.com/2003/JenaReasoner#extReasonerURL">http://jena.hpl.hp.com/2003/JenaReasoner#extReasonerURL</a>
+                       <a href="http://localhost:2004/">http://localhost:2004/</a> ;
+                     ja:reasonerURL <a href="http://jena.hpl.hp.com/2003/DIGReasoner">http://jena.hpl.hp.com/2003/DIGReasoner</a>]
+        .</p>
+<p>If there's a DIG server running locally on port 2004, this
+specification will create a DIG inference model that uses it.</p>
+<p>The internal rule reasoner can be supplied with rules written
+inside the specification, or outside from some resource (file or
+http: URL):
+    eg:rule-inference-example
+        ja:reasoner [ja:rule "[r1: (?x my:P ?y) -&gt; (?x rdf:type my:T)]"]
+        .</p>
+<p>This reasoner will infer a type declaration from a use of a
+property. (The prefix <em>my</em> will have to be known to the rule
+parser, of course.)</p>
+<div class="codehilite"><pre><span class="err">ja:InfModel</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:reasoner;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:baseModel;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:Model</span>
+<span class="err">.</span>
+<span class="err">ja:reasoner</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:InfModel</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:ReasonerFactory</span>
+<span class="err">.</span>
+<span class="err">ja:baseModel</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:InfModel</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:Model</span>
+<span class="err">.</span>
+
+<span class="err">ja:HasRules</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:Object</span>
+<span class="err">.</span>
+<span class="err">ja:rule</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:HasRules</span>
+<span class="err">.</span>
+<span class="err">ja:rulesFrom</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:HasRules</span>
+<span class="err">.</span>
+<span class="err">ja:rules</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:HasRules</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:RuleSet</span>
+<span class="err">.</span>
+</pre></div>
+
+
+<p>An InfModel's <code>ja:baseModel</code> property value specifies the base
+model for the inference model; if omitted, an empty memory model is
+used.</p>
+<p>An InfModel's <code>ja:ReasonerFactory</code> property value specifies the
+Reasoner for this inference model; if omitted, a
+GenericRuleReasoner is used.</p>
+<p>A Reasoner's optional <code>ja:schema</code> property specifies a Model which
+contains the schema for the reasoner to be bound to. If omitted, no
+schema is used.</p>
+<p>If the Reasoner is a GenericRuleReasoner, it may have any of the
+RuleSet properties <code>ja:rules</code>, <code>ja:rulesFrom</code>, or <code>ja:rule</code>. The
+rules of the implied <code>RuleSet</code> are added to the <code>Reasoner</code>.</p>
+<h4 id="reasonerfactory">ReasonerFactory</h4>
+<p>A ReasonerFactory can be specified by URL or by class name (but not
+both).</p>
+<div class="codehilite"><pre><span class="err">ja:ReasonerFactory</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:ReasonerURL;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:HasRules</span>
+<span class="err">.</span>
+<span class="err">ja:reasonerClass</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:ReasonerFactory</span>
+<span class="err">.</span>
+<span class="err">ja:reasonerURL</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:ReasonerFactory</span>
+<span class="err">.</span>
+<span class="err">ja:schema</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:ReasonerFactory</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:Model</span>
+<span class="err">.</span>
+</pre></div>
+
+
+<p>If the optional unique property <code>ja:reasonerURL</code> is specified, then
+its resource value is the URI of a reasoner in the Jena reasoner
+registry; the reasoner is the one with the given URI.</p>
+<p>If the optional property <code>ja:schema</code> is specified, then the models
+specified by all the schema properties are unioned and any reasoner
+produced by the factory will have that union bound in as its schema
+(using the <code>Reasoner::bindSchema()</code> method).</p>
+<p>If the optional unique property <code>ja:reasonerClass</code> is specified,
+its value names a class which implements <code>ReasonerFactory</code>. That
+class is loaded and an instance of it used as the factory.</p>
+<p>The class may be named by the lexical form of a literal, or by a
+URI with the (fake) "java:" scheme.</p>
+<p>If the class has a method <code>theInstance</code>, that method is called to
+supply the <code>ReasonerFactory</code> instance to use. Otherwise, a new
+instance of that class is constructed. Jena's reasoner factories
+come equipped with this method; for other factories, see the
+documentation.</p>
+<h4 id="rulesets">Rulesets</h4>
+<p>A <code>RuleSet</code> specification allows rules (for ReasonerFactories) to
+be specified inline, elsewhere in the specification model, or in an
+external resource.</p>
+<div class="codehilite"><pre><span class="err">ja:RuleSet</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:HasRules</span>
+<span class="err">.</span>
+</pre></div>
+
+
+<p>The optional repeatable property <code>ja:rule</code> has as its value a
+literal string which is the text of a Jena rule or rules. All those
+rules are added to the <code>RuleSet</code>.</p>
+<p>The optional repeatable property <code>ja:rulesFrom</code> has as its value a
+resource whose URI identifies a file or other external entity that
+can be loaded as Jena rules. All those rules are added to the
+<code>RuleSet</code>.</p>
+<p>The optional repeatable property <code>ja:rules</code> has as its value a
+resource which identifies another <code>RuleSet</code> in the specification
+model. All those rules from that <code>RuleSet</code> are added to this
+<code>RuleSet</code>.</p>
+<h3 id="ontology_models">Ontology models</h3>
+<p>Ontology models can be specified in several ways. The simplest is
+to use the name of an OntModelSpec from the Java OntModelSpec
+class:</p>
+<div class="codehilite"><pre><span class="err">eg:simple-ont-example</span>
+    <span class="err">ja:ontModelSpec</span> <span class="err">ja:OWL_DL_MEM_RULE_INF</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p>This constructs an <code>OntModel</code> with an empty base model and using
+the OWL_DL language and the full rule reasoner. All of the
+OntModelSpec constants in the Jena implementation are available in
+this way. A base model can be specified:</p>
+<div class="codehilite"><pre><span class="err">eg:base-ont-example</span>
+    <span class="err">ja:baseModel</span> <span class="err">[a</span> <span class="err">ja:MemoryModel</span> <span class="err">;</span>
+                 <span class="err">ja:content</span> <span class="err">[ja:</span><span class="kd">extern</span><span class="err">alContent</span> <span class="err">&lt;http:</span><span class="c1">//jena.hpl.hp.com/some-jena-data.rdf&gt;]]</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p>The OntModel has a base which is a memory model loaded with the
+contents of <code>http://jena.hpl.hp.com/some-jena-data.rdf</code>. Since the
+ontModelSpec was omitted, it defaults to <code>OWL_MEM_RDFS_INF</code> - the
+same default as <code>ModelFactory.createOntologyModel()</code>.</p>
+<div class="codehilite"><pre><span class="err">ja:OntModel</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:UnionModel</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:InfModel</span>
+<span class="err">.</span>
+<span class="err">ja:ontModelSpec</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:OntModel</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:OntModelSpec</span>
+<span class="err">.</span>
+
+<span class="err">ja:OntModelSpec</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:like;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:reasonerFactory;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:importSource;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:documentManager;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:ontLanguage;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:Object</span>
+<span class="err">.</span>
+<span class="err">ja:importSource</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:OntModelSpec</span>
+<span class="err">.</span>
+<span class="err">ja:reasonerFactory</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:OntModelSpec</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:ReasonerFactory</span>
+<span class="err">.</span>
+<span class="err">ja:documentManager</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:OntModelSpec</span>
+<span class="err">.</span>
+<span class="err">ja:ontLanguage</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:OntModelSpec</span>
+<span class="err">.</span>
+<span class="err">ja:likeBuiltinSpec</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:OntModelSpec</span>
+<span class="err">.</span>
+</pre></div>
+
+
+<p><code>OntModel</code> is a subclass of <code>InfModel</code>, and the <code>ja:baseModel</code>
+property means the same thing.</p>
+<p>The <code>OntModelSpec</code> property value is a resource, interpreted as an
+OntModelSpec description based on its name and the value of the
+appropriate properties:</p>
+<ul>
+<li><code>ja:likeBuiltinSpec</code>: The value of this optional unique
+    property must be a JA resource whose local name is the same as the
+    name of an OntModelSpec constant (as in the simple case above).
+    This is the basis for the OntModelSpec constructed from this
+    specification. If absent, then <code>OWL_MEM_RDFS_INF</code> is used. To build
+    an OntModelSpec with no inference, use eg
+    <code>ja:likeBuiltinSpec ja:OWL_MEM</code>.</li>
+<li><code>ja:importSource</code>: The value of this optional unique property
+    is a <code>ModelSource</code> description which describes where imports are
+    obtained from. A <code>ModelSource</code> my be of class <code>ja:ModelSource</code>, for
+    which memory models are constructed, or a <code>ja:RDBModelSource</code> with
+    a <code>ja:connection</code> property, for which models are constructed in the
+    specified database.</li>
+<li><code>ja:documentManager</code>: This value of this optional unique
+    property is a DocumentManager specification. If absent, the default
+    document manager is used.</li>
+<li><code>ja:reasonerFactory</code>: The value of this optional unique
+    property is the ReasonerFactory resource which will be used to
+    construct this OntModelSpec's reasoner. A <code>reasonerFactory</code>
+    specification is the same as an InfModel's <code>reasoner</code> specification
+    (the different properties are required for technical reasons).</li>
+<li><code>ja:reasonerURL</code>: as a special case of <code>reasonerFactory</code>, a
+    reasoner may be specified by giving its URL as the object of the
+    optional unique <code>reasonerURL</code> property. It is not permitted to
+    supply both a <code>reasonerURL</code> and <code>reasonerFactory</code> properties.</li>
+<li><code>ja:ontLanguage</code>: The value of this optional unique property is
+    one of the values in the <code>ProfileRegistry</code> class which identifies
+    the ontology language of this <code>OntModelSpec</code>:<ul>
+<li>OWL: http://www.w3.org/2002/07/owl#</li>
+<li>OWL DL: http://www.w3.org/TR/owl-features/#term_OWLDL</li>
+<li>OWL Lite: http://www.w3.org/TR/owl-features/#term_OWLLite</li>
+<li>RDFS: http://www.w3.org/2000/01/rdf-schema#</li>
+<li>DAML: http://www.daml.org/2001/03/daml+oil#</li>
+</ul>
+</li>
+</ul>
+<p>Any unspecified properties have default values, normally taken from
+those of <code>OntModelSpec.OWL_MEM_RDFS_INF</code>. However, if the
+OntModelSpec resource is in the JA namespace, and its local name is
+the same as that of an OntModelSpec constant, then that constant is
+used as the default value.</p>
+<h3 id="document_managers">Document managers</h3>
+<p>An <code>OntDocumentManager</code> can be specified by a <code>ja:DocumentManager</code>
+specification which describes the <code>OntDocumentManager</code>'s file
+manager and policy settings.</p>
+<div class="codehilite"><pre><span class="err">eg:mapper</span>
+    <span class="err">lm:mapping</span> <span class="err">[lm:altName</span> <span class="err">&quot;file:etc/foo.n3&quot;</span> <span class="err">;</span>
+    <span class="err">lm:name</span> <span class="err">&quot;file:foo.n3&quot;]</span>
+    <span class="err">.</span>
+<span class="err">eg:document-manager-example</span>
+    <span class="err">ja:fileManager</span> <span class="err">[ja:locationMapper</span> <span class="err">eg:mapper]</span> <span class="err">;</span>
+    <span class="err">ja:meta</span> <span class="err">[</span> <span class="err">dm:altURL</span> <span class="err">&lt;http:</span><span class="c1">//localhost/RDF/my-alt.rdf&gt;]</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p>In this example, <code>eg:document-manager-example</code> is a
+<code>ja:DocumentManager</code> specification. It has its own
+<code>FileManager specification</code>, the object of the
+<code>ja:fileManager property</code>; that <code>FileManager</code> has a location
+mapper, <code>eg:mapper</code>, that maps a single filename.</p>
+<p>The document manager also has an additional property to link it to
+document manager meta-data: the sub-model of the assembler
+specification reachable from <code>eg:document-manager-example</code> is
+passed to the document manager when it is created. For the meanings
+of the <code>dm:</code> properties, see the Jena ontology documentation and
+the ontology.rdf ontology.</p>
+<div class="codehilite"><pre><span class="err">ja:DocumentManager</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:policyPath;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:fileManager;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:fileManager;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:HasFileManager</span>
+<span class="err">.</span>
+<span class="err">ja:policyPath</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:DocumentManager</span>
+<span class="err">.</span>
+</pre></div>
+
+
+<p>The <code>ja:fileManager</code> property value, if present, has as its object
+a <code>ja:FileManager</code> specification; the constructed document manager
+is given a new file manager constructed from that specification. If
+there is no <code>ja:fileManager</code> property, then the default
+<code>FileManager</code> is used.</p>
+<p>The <code>ja:policyPath</code> property value, if present, should be a string
+which is a path to policy files as described in the Jena ontology
+documentation. If absent, the usual default path is applied.</p>
+<p>If the sub-model of the assembler specification reachable from the
+DocumentManager resource contains any OntDocumentManager
+<code>DOC\_MGR\_POLICY</code> or <code>ONTOLOGY\_SPEC</code> objects, they will be
+interpreted by the constructed document manager object.</p>
+<div class="codehilite"><pre><span class="err">ja:FileManager</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:locationMapper;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:Object</span>
+<span class="err">.</span>
+<span class="err">ja:locationMapper</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:FileManager</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:LocationMapper</span>
+<span class="err">.</span>
+</pre></div>
+
+
+<p>A <code>ja:FileManager</code> object may have a <code>ja:locationMapper</code> property
+value which identifies the specification of a <code>LocationMapper</code>
+object initialising that file manager.</p>
+<div class="codehilite"><pre><span class="err">ja:LocationMapper</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">lm:mapping;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:Object</span>
+<span class="err">.</span>
+<span class="err">lm:mapping</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:LocationMapper</span>
+<span class="err">.</span>
+</pre></div>
+
+
+<p>A <code>ja:LocationMapper</code> object may have <code>lm:mapping</code> property values,
+describing the location mapping, as described in the FileManager
+documentation. (Note that the vocabulary for those items is in a
+different namespace than the JA properties and classes.)</p>
+<h3 id="union_models">Union models</h3>
+<p>Union models can be constructed from any number of sub-models and a
+single <em>root</em> model. The root model is the one written to when the
+union model is updated; the sub-models are untouched.</p>
+<div class="codehilite"><pre><span class="err">ja:UnionModel</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:rootModel;</span> <span class="err">owl:maxCardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:Model</span>
+<span class="err">.</span>
+<span class="err">ja:rootModel</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:UnionModel</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:Model</span>
+<span class="err">.</span>
+<span class="err">ja:subModel</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:UnionModel</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:Model</span>
+<span class="err">.</span>
+</pre></div>
+
+
+<p>If the single <code>ja:rootModel</code> property is present, its value
+describes a model to use as the root model of the union. All
+updates to the union are directed to this root model. If no root
+model is supplied, the union is given an <em>immutable</em>, <em>empty</em> model
+as its root.</p>
+<p>Any <code>ja:subModel</code> property values have objects describing the
+remaining sub-models of the union. The order of the sub-models in
+the union is <em>undefined</em> (which is why there's a special rootModel
+property).</p>
+<h3 id="prefix_mappings">Prefix mappings</h3>
+<p>The PrefixMappings of a model may be set from PrefixMapping
+specifications.</p>
+<div class="codehilite"><pre><span class="err">ja:PrefixMapping</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:Object</span>
+<span class="err">.</span>
+<span class="err">ja:includes</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:PrefixMapping</span> <span class="err">;</span>
+  <span class="err">rdfs:range</span> <span class="err">ja:PrefixMapping</span>
+<span class="err">.</span>
+
+<span class="err">ja:SinglePrefixMapping</span> <span class="err">a</span> <span class="err">rdfs:Class</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:namespace;</span> <span class="err">owl:cardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">[owl:onProperty</span> <span class="err">ja:prefix;</span> <span class="err">owl:cardinality</span> <span class="err">1]</span> <span class="err">;</span>
+  <span class="err">rdfs:subClassOf</span> <span class="err">ja:PrefixMapping</span>
+<span class="err">.</span>
+<span class="err">ja:namespace</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:SinglePrefixMapping</span>
+<span class="err">.</span>
+<span class="err">ja:prefix</span> <span class="err">a</span> <span class="err">rdf:Property</span> <span class="err">;</span>
+  <span class="err">rdfs:domain</span> <span class="err">ja:SinglePrefixMapping</span>
+<span class="err">.</span>
+</pre></div>
+
+
+<p>The <code>ja:includes</code> property allows a PrefixMapping to include the
+content of other specified PrefixMappings.</p>
+<p>The <code>ja:prefix</code> and <code>ja:namespace</code> properties allow the
+construction of a single element of a prefix mapping by specifying
+the prefix and namespace of the mapping.</p>
+<h3 id="other_assembler_directives">Other Assembler directives</h3>
+<p>There are two more <code>Assembler</code> directives that can be used in an
+Assembler specification: the <em>assembler</em> and <em>imports</em> directives.</p>
+<h4 id="assembler">Assembler</h4>
+<p>A specification may contain statements of the form:</p>
+<div class="codehilite"><pre><span class="n">someResource</span> <span class="n">ja:assembler</span> <span class="s">&quot;some.Assembler.class.name&quot;</span>
+</pre></div>
+
+
+<p>When <code>someResource</code> is used as the type of a root object, the
+AssemblerGroup that processes the description will use an instance
+of the Java class named by the object of the statement. That class
+must implement the <code>Assembler</code> interface. See
+<a href="#loading-assembler-classes">loading assembler classes</a> for more
+details.</p>
+<p>Similarly, statements of the form:</p>
+<div class="codehilite"><pre><span class="n">someResource</span> <span class="n">ja:loadClass</span> <span class="s">&quot;some.class.name&quot;</span>
+</pre></div>
+
+
+<p>will cause the named class to be loaded (but not treated as
+assemblers).</p>
+<h4 id="imports">Imports</h4>
+<p>If a specification contains statements of the form:</p>
+<div class="codehilite"><pre><span class="n">anyResource</span> <span class="n">owl:imports</span> <span class="n">someURL</span>
+</pre></div>
+
+
+<p>or, equivalently,</p>
+<div class="codehilite"><pre><span class="n">anyResource</span> <span class="n">ja:imports</span> <span class="n">someURL</span>
+</pre></div>
+
+
+<p>then the specification is regarded as also containing the contents
+of the RDF at <code>someURL</code>. That RDF may in turn contain <code>imports</code>
+referring to other RDF.</p>
+<h2 id="limited_rdfs_inference">Limited RDFS inference</h2>
+<p>The Assembler engine uses limited RDFS inference to complete the
+model it is given, so that the spec-writer does not need to write
+excessive and redundant RDF. (It does not use the usual Jena
+reasoners because this limited once-off reasoning has been faster.)
+The inference steps are:</p>
+<ul>
+<li>add all the classes from the JA schema.</li>
+<li>do subclass closure over all the classes.</li>
+<li>do domain and range inference.</li>
+<li>do simple intersection inference: if X is an instance of
+    <em>intersection A B C ...</em>, then X is an instance of A, B, C ... (and
+    their supertypes).</li>
+</ul>
+<p>This is sufficient for closed-world assembling. Other parts of the
+<code>JA</code> schema -- eg, cardinality constraints -- are hard-coded into the
+individual assemblers.</p>
+  </div>
+
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2011 The Apache Software Foundation, Licensed under
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logos are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+
+</body>
+</html>

Added: websites/staging/jena/trunk/content/jena/documentation/assembler/index.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/documentation/assembler/index.html (added)
+++ websites/staging/jena/trunk/content/jena/documentation/assembler/index.html Wed Sep  7 23:36:20 2011
@@ -0,0 +1,236 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/jena/css/jena.css" rel="stylesheet" type="text/css">
+  <title>Apache Jena - Jena assembler quickstart</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <script src="/jena/js/jquery-1.6.1.min.js" type="text/javascript"></script>
+  <script src="/jena/js/jena-navigation.js" type="text/javascript"></script>
+</head>
+
+<body>
+  <div id="header">
+    <div id="logoblock">
+    <img alt="Apache Jena" src="/jena/images/jena-logo/jena-logo-small.png"/>
+    </div>
+
+    <div id="titleblock">
+      <h1 class="title">Apache Jena</h1>
+      <div id="topmenu" class="tabbar round-10">
+        <ul>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/index.html" id="home_menu">Home</a></li>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/help_and_support/index.html">Support</a></li>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/getting_started/index.html">Getting started</a></li>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/tutorials/index.html">Tutorials</a></li>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/documentation/index.html">Documentation</a></li>
+        </ul>
+      </div>
+    </div>
+  </div>
+
+  <div id="navigation" class="clear">
+  <h1 id="quick_links">Quick links</h1>
+<ul>
+<li><a href="/jena/index.html">Home</a></li>
+<li><a href="/jena/download/index.html">Downloads</a></li>
+<li><a href="/jena/help_and_support/index.html">Help and support</a></li>
+<li><a href="/jena/help_and_support/bugs_and_suggestions.html">Report a bug</a></li>
+<li><a href="/jena/about_jena/roadmap.html">Roadmap</a></li>
+<li><a href="/jena/getting_involved/index.html">Getting involved</a></li>
+</ul>
+<h1 id="about_jena">About Jena</h1>
+<ul>
+<li><a href="/jena/index.html">Home</a></li>
+<li><a href="/jena/about_jena/about.html">About Jena</a></li>
+<li><a href="/jena/about_jena/architecture.html">Architecture</a></li>
+<li><a href="/jena/about_jena/roadmap.html">Roadmap</a></li>
+<li><a href="/jena/about_jena/team.html">Project team</a></li>
+</ul>
+<h1 id="download">Download</h1>
+<ul>
+<li><a href="/jena/download/index.html">Downloading Jena</a></li>
+<li><a href="/jena/download/maven.html">Using Maven</a></li>
+<li><a href="/jena/download/osgi.html">Using OSGi</a></li>
+</ul>
+<h1 id="help_and_support">Help and support</h1>
+<ul>
+<li><a href="/jena/help_and_support/index.html">Getting help</a></li>
+<li><a href="/jena/help_and_support/bugs_and_suggestions.html">Bugs and suggestions</a></li>
+</ul>
+<h1 id="getting_started">Getting Started</h1>
+<ul>
+<li><a href="/jena/getting_started/index.html">A first Jena project</a></li>
+<li><a href="/jena/getting_started/rdf_api.html">RDF API overview</a></li>
+<li><a href="/jena/getting_started/sparql.html">Querying RDF with SPARQL</a></li>
+<li><a href="/jena/getting_started/fuseki.html">Serving RDF over HTTP</a></li>
+<li><a href="/jena/getting_started/tell_me_how.html">Tell me how to ...</a></li>
+</ul>
+<h1 id="tutorials">Tutorials</h1>
+<ul>
+<li><a href="/jena/tutorials/index.html">RDF tutorial</a></li>
+<li><a href="/jena/tutorials/sparql.html">SPARQL queries</a></li>
+<li><a href="/jena/tutorials/usingklzzwxh:0023jenaklzzwxh:0024withklzzwxh:0025eclipse.html">Using Jena with Eclipse</a></li>
+</ul>
+<h1 id="documentation">Documentation</h1>
+<ul>
+<li><a href="/jena/documentation/index.html">Overview</a></li>
+<li><a href="/jena/documentation/javadoc">Javadoc</a></li>
+<li><a href="/jena/documentation/rdf/index.html">RDF</a></li>
+<li><a href="/jena/documentation/query/index.html">Query</a></li>
+<li><a href="/jena/documentation/tdb/index.html">TDB</a></li>
+<li><a href="/jena/documentation/sdb/index.html">SDB</a></li>
+<li><a href="/jena/documentation/larq/index.html">LARQ</a></li>
+<li><a href="/jena/documentation/serving_data/index.html">Serving Data</a></li>
+<li><a href="/jena/documentation/ontology/index.html">Ontology</a></li>
+<li><a href="/jena/documentation/inference/index.html">Inference</a></li>
+<li><a href="/jena/documentation/assembler/index.html">Assembler</a><ul>
+<li><a href="/jena/documentation/assembler/assembler-howto.html">Assembler how-to</a></li>
+<li><a href="/jena/documentation/assembler/inside-assemblers.html">Inside assemblers</a></li>
+</ul>
+</li>
+<li><a href="/jena/documentation/tools/index.html">Tools</a><ul>
+<li><a href="/jena/documentation/tools/schemagen.html">schemagen</a></li>
+</ul>
+</li>
+</ul>
+<h1 id="getting_involved">Getting Involved</h1>
+<ul>
+<li><a href="/jena/getting_involved/index.html">Contributing to Jena</a></li>
+</ul>
+<h1 id="asf_links">ASF links</h1>
+<ul>
+<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>
+  </div>
+
+  <div id="content">
+    <h1 class="title">Jena assembler quickstart</h1>
+    <p>Jena's assembler provides a means of constructing Jena models
+according to a recipe, where that recipe is itself stated in
+RDF. This is the Assembler quickstart page. For more detailed
+information, see the <a href="assembler-howto.html">Assembler howto</a>
+or <a href="inside-assemblers.html">Inside assemblers</a>.</p>
+<h2 id="what_is_an_assembler_specification">What is an Assembler specification?</h2>
+<p>An Assembler <em>specification</em> is an RDF description of how to
+construct a model and its associated resources, such as reasoners,
+prefix mappings, and initial content. The Assembler vocabulary is
+given in the <a href="../../vocabularies/assembler.n3">Assembler schema</a>,
+and we'll use the prefix <code>ja</code> for its identifiers.</p>
+<h2 id="what_is_an_assembler">What is an Assembler?</h2>
+<p>An <em>Assembler</em> is an object that implements the <code>Assembler</code>
+interface and can construct objects (typically models) from
+Assembler specifications. The constant <code>Assembler.general</code> is an
+Assembler that knows how to construct some general patterns
+of model specification.</p>
+<h2 id="how_can_i_make_a_model_according_to_a_specification">How can I make a model according to a specification?</h2>
+<p>Suppose the Model <code>M</code> contains an Assembler specification whose
+<em>root</em> - the Resource describing the whole Model to construct is
+<code>R</code> (so <code>R.getModel() == M)</code>. Invoke:</p>
+<div class="codehilite"><pre><span class="n">Assembler</span><span class="o">.</span><span class="n">general</span><span class="o">.</span><span class="n">openModel</span><span class="p">(</span><span class="n">R</span><span class="p">)</span>
+</pre></div>
+
+
+<p>The result is the desired Model. Further details about the
+<code>Assembler</code> interface, the special Assembler <code>general</code>, and the
+details of specific Assemblers, are deferred to the
+<a href="assembler-howto.html">Assembler howto</a>.</p>
+<h2 id="how_can_i_specify_">How can I specify ...</h2>
+<p>In the remaining sections, the object we want to describe is given
+the root resource <code>my:root</code>.</p>
+<h3 id="_a_memory_model">... a memory model?</h3>
+<div class="codehilite"><pre><span class="err">my:root</span> <span class="err">a</span> <span class="err">ja:MemoryModel.</span>
+</pre></div>
+
+
+<h3 id="_an_inference_model">... an inference model?</h3>
+<div class="codehilite"><pre><span class="err">my:root</span>
+    <span class="err">ja:reasoner</span> <span class="err">[ja:reasonerURL</span> <span class="err">theReasonerURL]</span> <span class="err">;</span>
+    <span class="err">ja:baseModel</span> <span class="err">theBaseModelResource</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p><em>theReasonerURL</em> is one of the reasoner (factory) URLs given in the
+inference documentation and code; <em>theBaseModelResource</em> is another
+resource in the same document describing the base model.</p>
+<h3 id="_a_database_model">... a database model?</h3>
+<div class="codehilite"><pre><span class="err">my:root</span>
+    <span class="err">ja:connection</span> <span class="err">aConnectionresource</span> <span class="err">;</span>
+    <span class="err">ja:modelName</span> <span class="err">&quot;myModelName&quot;</span>
+    <span class="err">.</span>
+
+<span class="err">aConnectionResource</span> <span class="err">;</span>
+    <span class="err">ja:dbURL</span> <span class="err">theDatabaseURL</span> <span class="err">;</span>
+    <span class="err">ja:dbUser</span> <span class="err">&quot;the</span> <span class="err">user</span> <span class="err">name&quot;</span> <span class="err">;</span>
+    <span class="err">ja:dbPassword</span> <span class="err">&quot;the</span> <span class="err">user&#39;s</span> <span class="err">password&quot;</span> <span class="err">;</span>
+    <span class="err">ja:dbType</span> <span class="err">&quot;the</span> <span class="err">database</span> <span class="err">type,</span> <span class="err">eg</span> <span class="err">MySQL&quot;</span> <span class="err">;</span>
+    <span class="err">ja:dbClass</span> <span class="err">&quot;some.jena.driver.</span><span class="kd">class</span><span class="err">&quot;</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p><em>aConnectionResource</em> describes the connection to the desired
+database. If a particular Java driver class has to be loaded, it is
+specified by the <code>dbClass</code> property value. See the
+<a href="assembler-howto.html">Assembler howto</a> for ways in which sensitive
+details such as passwords can be left out of the description.</p>
+<h3 id="_some_initialising_content">... some initialising content?</h3>
+<div class="codehilite"><pre><span class="err">my:root</span>
+    <span class="err">ja:content</span> <span class="err">[ja:</span><span class="kd">extern</span><span class="err">alContent</span> <span class="err">&lt;someContentURL&gt;]</span>
+    <span class="err">...</span> <span class="err">rest</span> <span class="err">of</span> <span class="err">model</span> <span class="err">specification</span> <span class="err">...</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p>The model will be pre-loaded with the contents of <em>someContentURL</em>.</p>
+<h3 id="_an_ontology_model">... an ontology model?</h3>
+<div class="codehilite"><pre><span class="err">my:root</span>
+    <span class="err">ja:ontModelSpec</span> <span class="err">ja:OntModelSpecName</span> <span class="err">;</span>
+    <span class="err">ja:baseModel</span> <span class="err">somebaseModel</span>
+    <span class="err">.</span>
+</pre></div>
+
+
+<p>The <em>OntModelSpecName</em> can be any of the predefined Jena
+OntModelSpec names, eg <code>OWL_DL_MEM_RULE_INF</code>. The baseModel is
+another model description - it can be left out, in which case you
+get an empty memory model. See
+<a href="assembler-howto.html">Assembler howto</a> for construction of
+non-predefined OntModelSpecs.</p>
+  </div>
+
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2011 The Apache Software Foundation, Licensed under
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logos are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+
+</body>
+</html>