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/10/27 02:01:50 UTC

svn commit: r797528 [4/6] - /websites/staging/jena/trunk/content/jena/documentation/query/

Added: websites/staging/jena/trunk/content/jena/documentation/query/library-function.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/documentation/query/library-function.html (added)
+++ websites/staging/jena/trunk/content/jena/documentation/query/library-function.html Thu Oct 27 00:01:49 2011
@@ -0,0 +1,408 @@
+<!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 - Functions in ARQ</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <script src="/jena/js/jquery-1.6.4.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>
+<li><a href="/jena/documentation/">Documentation</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/using_jena_with_eclipse.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">SPARQL (ARQ)</a></li>
+<li><a href="/jena/documentation/tdb/index.html">TDB</a></li>
+<li><a href="/jena/documentation/sdb/index.html">SDB</a><ul>
+<li><a href="/jena/documentation/sdb/installation.html">Installation</a></li>
+<li><a href="/jena/documentation/sdb/quickstart.html">Quick start</a></li>
+<li><a href="/jena/documentation/sdb/commands.html">Cmd line</a></li>
+<li><a href="/jena/documentation/sdb/javaapi.html">Java API</a></li>
+<li><a href="/jena/documentation/sdb/configuration.html">Config</a></li>
+<li><a href="/jena/documentation/sdb/databases_supported.html">Databases</a></li>
+</ul>
+</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/io/index.html">I/O</a><ul>
+<li><a href="/jena/documentation/io/iohowto.html">I/O how-to</a></li>
+</ul>
+</li>
+<li><a href="/jena/documentation/notes/index.html">Notes</a><ul>
+<li><a href="/jena/documentation/notes/concurrency-howto.html">Concurrency how-to</a></li>
+<li><a href="/jena/documentation/notes/event-handler-howto.html">Event handler how-to</a></li>
+<li><a href="/jena/documentation/notes/file-manager.html">File manager how-to</a></li>
+<li><a href="/jena/documentation/notes/model-factory.html">Model factory how-to</a></li>
+<li><a href="/jena/documentation/notes/rdf-frames.html">RDF frames</a></li>
+<li><a href="/jena/documentation/notes/reification.html">Reification how-to</a></li>
+<li><a href="/jena/documentation/notes/typed-literals.html">Typed literals how-to</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">Functions in ARQ</h1>
+    <p>SPARQL allows custom functions in filter expressions so that
+queries can be used on domain-specific data. SPARQL defines a
+function by URI (or prefixed name) in FILTER expressions.  ARQ
+provides a function library and supports application-provided
+functions.  Functions and property functions can be
+<a href="extension.html">registered or dynamically loaded</a>.</p>
+<p>See also the <a href="lucene-arq.html">free text search</a> page.</p>
+<p>See also the <a href="library-propfunc.html">property functions</a> library
+page.</p>
+<p>Applications can also
+<a href="writing_functions.html">provide their own functions</a>.</p>
+<h2 id="function_library">Function Library</h2>
+<p>The prefix <code>afn</code> is <code>&lt;http://jena.hpl.hp.com/ARQ/function#&gt;</code>.</p>
+<p>Direct loading using a URI prefix of
+<code>&lt;java:com.hp.hpl.jena.sparql.function.library.&gt;</code> (note the final
+dot) is deprecated.</p>
+<p>The prefix <code>fn</code> is <code>&lt;http://www.w3.org/2005/xpath-functions#&gt;</code> (the
+XPath and XQuery function namespace).</p>
+<h3 id="xqueryxpath_functions_and_operators_supported">XQuery/XPath functions and operators supported</h3>
+<p><strong>String Functions</strong></p>
+<table>
+<thead>
+<tr>
+<th>Function name</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>fn:contains(string, substr)</code></td>
+<td>Test whether <em><code>substr</code></em> occurs in <em>string.</em></td>
+</tr>
+<tr>
+<td><code>fn:starts-with(string, match)</code></td>
+<td>Test whether <em><code>string</code></em> starts with <em><code>substr</code>.</em></td>
+</tr>
+<tr>
+<td><code>fn:ends-with(string, match)</code></td>
+<td>Test whether <em><code>string</code></em> ends with <em><code>substr.</code></em></td>
+</tr>
+<tr>
+<td><code>fn:string-length(string)</code></td>
+<td>Return the length of a <em><code>string</code></em>.</td>
+</tr>
+<tr>
+<td><code>fn:lower-case(string)</code></td>
+<td>Return a string which is the lower case equivalent of the argument.</td>
+</tr>
+<tr>
+<td><code>fn:upper-case(string)</code></td>
+<td>Return a string which is the upper case equivalent of the argument.</td>
+</tr>
+<tr>
+<td><code>fn:matches(string, pattern [, flags])</code></td>
+<td>Regular expression match.</td>
+</tr>
+<tr>
+<td><code>fn:concat(string, ...)</code></td>
+<td>Return the concatenation of strings.</td>
+</tr>
+<tr>
+<td><code>fn:substring(string, begin [,length])</code></td>
+<td>Returns the substring of a <em><code>string</code></em>, given by <em><code>begin</code></em> (integer) and, optionally, length <em><code>length</code></em>.</td>
+</tr>
+</tbody>
+</table>
+<p>Absence of <em><code>length</code></em> means to end of string.  Strings are indexed
+from zero.
+-   <strong>Strings start from one</strong>, not zero as they do in Java and C#.
+-   The <strong>third argument is the length</strong>, like C# but unlike Java, where
+    it is the <em>endIndex</em>.</p>
+<p>Notes:</p>
+<ol>
+<li>Strings in
+    "<a href="http://www.w3.org/TR/xpath-functions/">XQuery 1.0 and XPath 2.0 Functions and Operators</a>"
+    start from character position one, unlike Java and C# where
+    strings start from zero.</li>
+<li>The <code>fn:substring</code> operation takes an optional length, like C#
+    but different from Java, where it is the <em>endIndex</em> of the first
+    character after the substring.</li>
+</ol>
+<p>The operation <code>afn:substring</code> provides Java semantics.</p>
+<p><strong>Mathematical Functions</strong></p>
+<table>
+<thead>
+<tr>
+<th>Function name</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>afn:min(num1, num2)</code></td>
+<td>Return the minimum of two expressions evaluating to numbers.</td>
+</tr>
+<tr>
+<td><code>afn:max(num1, num2)</code></td>
+<td>Return the maximum of two expressions evaluating to numbers.</td>
+</tr>
+<tr>
+<td><code>fn:round(v)</code></td>
+<td>Return the nearest integer value to the argument.</td>
+</tr>
+<tr>
+<td><code>fn:abs(v)</code></td>
+<td>Return the absolute value.</td>
+</tr>
+<tr>
+<td><code>fn:floor(v)</code></td>
+<td>Return the greatest integer value less than the argument (as a double).</td>
+</tr>
+<tr>
+<td><code>fn:ceiling(v)</code></td>
+<td>Return the smallest integer value than the argument (as a double).</td>
+</tr>
+</tbody>
+</table>
+<p>Note: See also <code>afn:min</code> and <code>afn:max</code> for binary min and max
+functions.</p>
+<p><strong>Boolean Functions</strong></p>
+<table>
+<thead>
+<tr>
+<th>Function name</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>fn:boolean(value)</code></td>
+<td>Boolean effective value of <em><code>value</code></em>.</td>
+</tr>
+<tr>
+<td><code>fn:not(value)</code></td>
+<td>Logical negation of the boolean effective value of <em><code>value</code></em>.</td>
+</tr>
+</tbody>
+</table>
+<h4 id="functions_provided_by_arq">Functions provided by ARQ</h4>
+<p><strong>RDF Graph Functions</strong></p>
+<table>
+<thead>
+<tr>
+<th>Function name</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>afn:bnode(?x)</code></td>
+<td>Return the blank node label if ?x is a blank node.</td>
+</tr>
+<tr>
+<td><code>afn:localname(?x)</code></td>
+<td>The local name of ?x if a IRI. Based on splitting the IRI, not on any prefixes in the query or dataset.</td>
+</tr>
+<tr>
+<td><code>afn:namespace(?x)</code></td>
+<td>The namespace of ?x if a IRI. Based on splitting the IRI, not on any prefixes in the query or dataset.</td>
+</tr>
+</tbody>
+</table>
+<p><strong>String Functions</strong></p>
+<table>
+<thead>
+<tr>
+<th>Function name</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>afn:substr(string, startIndex [,endIndex])</code></td>
+<td>Substring, Java style using <em><code>startIndex</code></em> and <em><code>endIndex</code></em>.</td>
+</tr>
+<tr>
+<td><code>afn:substring</code></td>
+<td>Synonym for afn:substr</td>
+</tr>
+<tr>
+<td><code>afn:strjoin(sep, string ...)</code></td>
+<td>Concatenate string together, with a separator.</td>
+</tr>
+<tr>
+<td><code>afn:sha1sum(resource)</code></td>
+<td>Calculate the SHA1 checksum of a literal or URI.</td>
+</tr>
+</tbody>
+</table>
+<p><strong>Mathematical Functions</strong></p>
+<table>
+<thead>
+<tr>
+<th>Function name</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>afn:min(num1,           num2)</code></td>
+<td>Return the minimum of two expressions evaluating to numbers.</td>
+</tr>
+<tr>
+<td><code>afn:max(num1,           num2)</code></td>
+<td>Return the maximum of two expressions evaluating to numbers.</td>
+</tr>
+<tr>
+<td><code>afn:pi()</code></td>
+<td>The value of pi, as an XSD double.</td>
+</tr>
+<tr>
+<td><code>afn:e()</code></td>
+<td>The value of e, as an XSD double.</td>
+</tr>
+<tr>
+<td><code>afn:sqrt(num)</code></td>
+<td>The square root of num.</td>
+</tr>
+</tbody>
+</table>
+<p><strong>Miscellaneous Functions</strong></p>
+<table>
+<thead>
+<tr>
+<th>Function name</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>afn:now()</code></td>
+<td>Current time.  Actually, the time the query started. Constant throughout a query execution.</td>
+</tr>
+<tr>
+<td><code>afn:sha1sum(resource)</code></td>
+<td>Calculate the SHA1 checksum of a literal or URI.</td>
+</tr>
+</tbody>
+</table>
+<p><a href="index.html">ARQ documentation index</a></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 Jena, Jena, the Apache Jena project logo,
+        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/query/library-propfunc.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/documentation/query/library-propfunc.html (added)
+++ websites/staging/jena/trunk/content/jena/documentation/query/library-propfunc.html Thu Oct 27 00:01:49 2011
@@ -0,0 +1,300 @@
+<!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 - Property Functions in ARQ</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <script src="/jena/js/jquery-1.6.4.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>
+<li><a href="/jena/documentation/">Documentation</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/using_jena_with_eclipse.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">SPARQL (ARQ)</a></li>
+<li><a href="/jena/documentation/tdb/index.html">TDB</a></li>
+<li><a href="/jena/documentation/sdb/index.html">SDB</a><ul>
+<li><a href="/jena/documentation/sdb/installation.html">Installation</a></li>
+<li><a href="/jena/documentation/sdb/quickstart.html">Quick start</a></li>
+<li><a href="/jena/documentation/sdb/commands.html">Cmd line</a></li>
+<li><a href="/jena/documentation/sdb/javaapi.html">Java API</a></li>
+<li><a href="/jena/documentation/sdb/configuration.html">Config</a></li>
+<li><a href="/jena/documentation/sdb/databases_supported.html">Databases</a></li>
+</ul>
+</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/io/index.html">I/O</a><ul>
+<li><a href="/jena/documentation/io/iohowto.html">I/O how-to</a></li>
+</ul>
+</li>
+<li><a href="/jena/documentation/notes/index.html">Notes</a><ul>
+<li><a href="/jena/documentation/notes/concurrency-howto.html">Concurrency how-to</a></li>
+<li><a href="/jena/documentation/notes/event-handler-howto.html">Event handler how-to</a></li>
+<li><a href="/jena/documentation/notes/file-manager.html">File manager how-to</a></li>
+<li><a href="/jena/documentation/notes/model-factory.html">Model factory how-to</a></li>
+<li><a href="/jena/documentation/notes/rdf-frames.html">RDF frames</a></li>
+<li><a href="/jena/documentation/notes/reification.html">Reification how-to</a></li>
+<li><a href="/jena/documentation/notes/typed-literals.html">Typed literals how-to</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">Property Functions in ARQ</h1>
+    <p>SPARQL allows custom property functions to add functionality to the
+triple matching process. Property functions can be
+<a href="extension.html">registered or dynamically loaded</a>.</p>
+<p>See also the <a href="../larq/">free text search</a> page.</p>
+<p>See also the FILTER functions
+<a href="library-function.html">FILTER functions library</a>.</p>
+<h2 id="property_function_library">Property Function Library</h2>
+<p>Prefix <code>apf:</code> which is <code>&lt;http://jena.hpl.hp.com/ARQ/property#&gt;</code>.</p>
+<p>Direct loading using a URI prefix of
+<code>&lt;java:com.hp.hpl.jena.sparql.pfunction.library.&gt;</code> (note the final
+dot) also works.</p>
+<p>The prefix <code>list:</code> is <code>http://jena.hpl.hp.com/ARQ/list#</code>.</p>
+<table>
+<tr><th>Property name</th><th>Description</th></tr>
+<tr><td>
+<i><code>list</code> </i><code>list:member</code> <i><code>member</code></i>
+</td><td>
+Membership of an RDF List (RDF Collection). If <i>list</i> is not bound
+or a constant, find and iterate all lists in the graph (can be
+slow) else evaluate for one particular list. If <i>member</i> a
+variable, generate solutions with <i>member</i> bound to each element in
+the list. If <i>member</i> is bound or a constant expression, test to
+see if a member of the list.
+</td></tr>
+<tr><td>
+<code><i>list </i>list:index <i>(index member)</i></code>
+</td><td>
+Index of an RDF List (RDF Collection). If <i>list</i> is not bound or a
+constant, find and iterate all lists in the graph (can be slow)
+else evaluate for one particular list. The object is a list pair,
+either element can be bound, unbound or a fixed node. Unbound
+variables in the object list are bound by the property function.
+</td></tr>
+<tr><td>
+<code><i>list </i>list:length <i>length</i></code>
+</td><td>
+Length of an RDF List (RDF Collection). If <i>list</i> is not bound or a
+constant, find and iterate all lists in the graph (can be slow)
+else evaluate for one particular list. The object is tested against
+or bound to the length of the list.
+</td></tr>
+<tr><td>
+<code><i>container </i>rdfs:member <i>member</i></code>
+</td><td>
+Membership of an RDF Container (rdf:Bag, rdf:Seq, rdf:Alt).
+Pre-registered URI. If this infers with queries running over a Jena
+inference model which also provides <code>rdfs:member</code>, then remove this
+from the global registry.
+</td></tr>
+<tr><td>
+<code>  PropertyFunctionRegistry.get().<br>       remove(RDFS.member.getURI()) ;</code>
+<code>apf:textMatch</code>
+</td><td>
+Free text match.  See the [free text search](lucene-arq.html) page
+for details.
+</td></tr>
+<tr><td>
+<code><i>bag </i>apf:bag <i>member</i></code>
+</td><td>
+The argument <i>bag</i> must be bound by this point in the query or a
+constant expression. If <i>bag</i> is bound or a URI, and <i>member</i> a
+variable, generate solutions with <i>member</i> bound to each element in
+the bag. If <i>member</i> is bound or a constant expression, test to see
+if a member of the list.
+</td><tr>
+<tr><td>
+<code><i>seq</i> apf:seq <i>member</i></code>
+</td><td>
+The argument <i>seq</i> must be bound by this point in the query or a
+constant expression. If <i>seq</i> is bound or a URI, and <i>member</i> a
+variable, generate solutions with <i>member</i> bound to each element in
+the sequence. If <i>member</i> is bound or a constant expression, test
+to see if a member of the list.
+</td><tr>
+<tr><td>
+<code><i>seq</i> apf:alt <i>member</i></code>
+</td><td>
+The argument <i>alt</i> must be bound by this point in the query or a
+constant expression. If <i>alt</i> is bound or a URI, and <i>member</i> a
+variable, generate solutions with <i>member</i> bound to each element in
+the alt . If <i>member</i> is bound or a constant expression, test to
+see if a member of the list.
+</td><tr>
+<tr><td>
+<i><code>varOrTerm</code></i><code>apf:assign</code><i><code>varOrTerm</code></i>
+</td><td>
+Assign an RDF term from one side to the other.  If both are fixed
+RDF terms or bound variables, it becomes a boolean test that the
+subject is the same RDF term as the object.
+</td><tr>
+<tr><td>
+<i><code>iri</code></i><code>apf:splitIRI (<i>namespace</i> <i> localname</i>)</code><br />
+<i><code>iri</code></i><code>apf:splitURI (<i>namespace</i> <i> localname</i>)</code>
+</td><td>
+Split the IRI or URI into namespace (an IRI) and local name (a
+string). Compare if given values or bound variables, otherwise set
+the variable. The object is a list with 2 elements.
+<code>splitURI</code> is an synonym.
+</td><tr>
+<tr><td>
+<code><i>subject</i> apf:str <i>object</i></code>
+</td><td>
+The <i>subject</i> is the string form of the <i>object</i>, like the function
+str().
+<i>Object</i> must be bound or a constant. <i>Object</i> can not be a blank
+node (see <code>apf:blankNode</code>)
+</td><tr>
+<tr><td>
+<code><i>subject</i> apf:blankNode <i>label</i><br>           <code><i>subject</i> apf:bnode <i>label</i><br></td></code>
+</td><td>
+<i>Subject</i> must be bound to a blank node or a constant. <i>Label</i> is
+either a string, in which case test for whether this is the blank
+node label of <i>subject</i>, or it is a variable, which is assigned the
+blank node label as a plain string. Argument mismatch causes no
+match. Use with care.
+</td><tr>
+<tr><td>
+<code><i>subject</i> apf:versionARQ <i>version</i><br>             <br>  </code>
+</td><td>
+Set the <i>subject</i> to the IRI for ARQ and set the object to the
+version string (format "N.N.N" where N is a number). If any of the
+variables are already set, test for the correct value.
+</td><tr>
+<tr><td>
+<code><i>var</i> apf:concat <i>(arg arg ...)</i></code>
+</td><td>
+Concatenate the arguments in the object list as strings, and
+assign to <code><i>var</i></code>.
+</td><tr>
+</table>
+
+<p><a href="index.html">ARQ documentation index</a></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 Jena, Jena, the Apache Jena project logo,
+        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/query/logging.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/documentation/query/logging.html (added)
+++ websites/staging/jena/trunk/content/jena/documentation/query/logging.html Thu Oct 27 00:01:49 2011
@@ -0,0 +1,188 @@
+<!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 - ARQ - Logging</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <script src="/jena/js/jquery-1.6.4.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>
+<li><a href="/jena/documentation/">Documentation</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/using_jena_with_eclipse.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">SPARQL (ARQ)</a></li>
+<li><a href="/jena/documentation/tdb/index.html">TDB</a></li>
+<li><a href="/jena/documentation/sdb/index.html">SDB</a><ul>
+<li><a href="/jena/documentation/sdb/installation.html">Installation</a></li>
+<li><a href="/jena/documentation/sdb/quickstart.html">Quick start</a></li>
+<li><a href="/jena/documentation/sdb/commands.html">Cmd line</a></li>
+<li><a href="/jena/documentation/sdb/javaapi.html">Java API</a></li>
+<li><a href="/jena/documentation/sdb/configuration.html">Config</a></li>
+<li><a href="/jena/documentation/sdb/databases_supported.html">Databases</a></li>
+</ul>
+</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/io/index.html">I/O</a><ul>
+<li><a href="/jena/documentation/io/iohowto.html">I/O how-to</a></li>
+</ul>
+</li>
+<li><a href="/jena/documentation/notes/index.html">Notes</a><ul>
+<li><a href="/jena/documentation/notes/concurrency-howto.html">Concurrency how-to</a></li>
+<li><a href="/jena/documentation/notes/event-handler-howto.html">Event handler how-to</a></li>
+<li><a href="/jena/documentation/notes/file-manager.html">File manager how-to</a></li>
+<li><a href="/jena/documentation/notes/model-factory.html">Model factory how-to</a></li>
+<li><a href="/jena/documentation/notes/rdf-frames.html">RDF frames</a></li>
+<li><a href="/jena/documentation/notes/reification.html">Reification how-to</a></li>
+<li><a href="/jena/documentation/notes/typed-literals.html">Typed literals how-to</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">ARQ - Logging</h1>
+    <p>ARQ uses
+<a href="http://jakarta.apache.org/commons/logging/">Apache Commons Logging</a>
+as the API and ships with
+<a href="http://logging.apache.org/log4j/docs/">Log4J</a> as a deployment
+system.  You can use Java 1.4 logging instead.</p>
+<p>ARQ does not output any logging messages at level INFO in normal
+operation. The code uses level TRACE and DEBUG.  Running with
+logging set to an application at INFO will cause no output in
+normal operation. Output below INFO can be very verbose and is
+intended mainly to help debug ARQ. WARN and FATAL messages are only
+used when something is wrong.</p>
+<p>The root of all the loggers is "com.hp.hpl.jena".
+"com.hp.hpl.jena.query" is the application API. 
+"com.hp.hpl.jena.sparql" is the implementation and extensions
+points.</p>
+<p>If using in Tomcat, or other system that provides complex class
+loading arrangements, be careful about loading from jars in both
+the web application and the system directories as this can cause
+separate logging systems to be created (this may not matter).</p>
+<p><a href="index.html">ARQ documentation index</a></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 Jena, Jena, the Apache Jena project logo,
+        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/query/negation.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/documentation/query/negation.html (added)
+++ websites/staging/jena/trunk/content/jena/documentation/query/negation.html Thu Oct 27 00:01:49 2011
@@ -0,0 +1,247 @@
+<!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 - ARQ - Negation</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <script src="/jena/js/jquery-1.6.4.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>
+<li><a href="/jena/documentation/">Documentation</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/using_jena_with_eclipse.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">SPARQL (ARQ)</a></li>
+<li><a href="/jena/documentation/tdb/index.html">TDB</a></li>
+<li><a href="/jena/documentation/sdb/index.html">SDB</a><ul>
+<li><a href="/jena/documentation/sdb/installation.html">Installation</a></li>
+<li><a href="/jena/documentation/sdb/quickstart.html">Quick start</a></li>
+<li><a href="/jena/documentation/sdb/commands.html">Cmd line</a></li>
+<li><a href="/jena/documentation/sdb/javaapi.html">Java API</a></li>
+<li><a href="/jena/documentation/sdb/configuration.html">Config</a></li>
+<li><a href="/jena/documentation/sdb/databases_supported.html">Databases</a></li>
+</ul>
+</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/io/index.html">I/O</a><ul>
+<li><a href="/jena/documentation/io/iohowto.html">I/O how-to</a></li>
+</ul>
+</li>
+<li><a href="/jena/documentation/notes/index.html">Notes</a><ul>
+<li><a href="/jena/documentation/notes/concurrency-howto.html">Concurrency how-to</a></li>
+<li><a href="/jena/documentation/notes/event-handler-howto.html">Event handler how-to</a></li>
+<li><a href="/jena/documentation/notes/file-manager.html">File manager how-to</a></li>
+<li><a href="/jena/documentation/notes/model-factory.html">Model factory how-to</a></li>
+<li><a href="/jena/documentation/notes/rdf-frames.html">RDF frames</a></li>
+<li><a href="/jena/documentation/notes/reification.html">Reification how-to</a></li>
+<li><a href="/jena/documentation/notes/typed-literals.html">Typed literals how-to</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">ARQ - Negation</h1>
+    <p>Standard SPARQL can perform negation using the idiom of
+<code>OPTIONAL</code>/<code>!BOUND</code>. It is inconvenient and can be hard to use as
+complexity increases. ARQ supports additional operators for
+negation.</p>
+<p>This is syntactic extension and is available if the query is parsed
+with language <code>Syntax.syntaxARQ</code>.</p>
+<div class="codehilite"><pre><span class="c1"># Names of people who have not stated that they know anyone</span>
+<span class="n">PREFIX</span> <span class="n">foaf:</span> <span class="sr">&lt;http://xmlns.com/foaf/0.1/&gt;</span>
+<span class="n">SELECT</span> <span class="p">?</span><span class="n">name</span>
+<span class="n">WHERE</span> <span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">foaf:givenName</span>  <span class="p">?</span><span class="n">name</span> <span class="o">.</span>
+    <span class="n">OPTIONAL</span> <span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">foaf:knows</span> <span class="p">?</span><span class="n">who</span> <span class="p">}</span> <span class="o">.</span>
+    <span class="n">FILTER</span> <span class="p">(</span><span class="o">!</span><span class="n">BOUND</span><span class="p">(?</span><span class="n">who</span><span class="p">))</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>In ARQ, there is the <code>NOT EXISTS</code> operator (<code>UNSAID</code> is an alias
+for <code>NOT EXISTS</code>) which acts at the point in the query where it is
+written. It does not bind any variables but variables aready boudn
+in the query will have their bound value.</p>
+<div class="codehilite"><pre><span class="c1"># Names of people who have not stated that they know anyone</span>
+<span class="n">PREFIX</span> <span class="n">foaf:</span> <span class="sr">&lt;http://xmlns.com/foaf/0.1/&gt;</span>
+<span class="n">SELECT</span> <span class="p">?</span><span class="n">name</span>
+<span class="n">WHERE</span> <span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">foaf:givenName</span> <span class="p">?</span><span class="n">name</span> <span class="o">.</span>
+    <span class="n">NOT</span> <span class="n">EXISTS</span> <span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">foaf:knows</span> <span class="p">?</span><span class="n">who</span> <span class="p">}</span>
+      <span class="p">}</span>
+</pre></div>
+
+
+<p>There is also an <code>EXISTS</code> operator.</p>
+<div class="codehilite"><pre><span class="c1"># Names of people where it is stated that they know at least one other person.</span>
+<span class="n">PREFIX</span> <span class="n">foaf:</span> <span class="sr">&lt;http://xmlns.com/foaf/0.1/&gt;</span>
+<span class="n">SELECT</span> <span class="p">?</span><span class="n">name</span>
+<span class="n">WHERE</span> <span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">foaf:givenName</span> <span class="p">?</span><span class="n">name</span> <span class="o">.</span>
+    <span class="n">EXISTS</span> <span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">foaf:knows</span> <span class="p">?</span><span class="n">who</span> <span class="o">.</span> <span class="n">FILTER</span><span class="p">(?</span><span class="n">who</span> <span class="o">!=</span> <span class="p">?</span><span class="n">x</span><span class="p">)</span> <span class="p">}</span>
+      <span class="p">}</span>
+</pre></div>
+
+
+<p>In this example, the pattern is a little more complex. Any graph
+pattern is allowed although use of <code>OPTIONAL</code> is pointless (which
+will always match, possible with no additional results).</p>
+<p><code>NOT EXISTS</code> and <code>EXISTS</code> can also be used in <code>FILTER</code> expressions.
+In SPARQL, <code>FILTER</code> expressions act over the whole of the basic
+graph pattern in which they occur.</p>
+<div class="codehilite"><pre><span class="c1"># Names of people who have not stated that they know anyone</span>
+<span class="n">PREFIX</span> <span class="n">foaf:</span> <span class="sr">&lt;http://xmlns.com/foaf/0.1/&gt;</span>
+<span class="n">SELECT</span> <span class="p">?</span><span class="n">name</span>
+<span class="n">WHERE</span> <span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">foaf:givenName</span> <span class="p">?</span><span class="n">name</span> <span class="o">.</span>
+    <span class="n">FILTER</span> <span class="p">(</span><span class="n">NOT</span> <span class="n">EXISTS</span> <span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">foaf:knows</span> <span class="p">?</span><span class="n">who</span> <span class="p">})</span>
+      <span class="p">}</span>
+</pre></div>
+
+
+<p>A note of caution:</p>
+<div class="codehilite"><pre><span class="n">PREFIX</span> <span class="n">foaf:</span> <span class="sr">&lt;http://xmlns.com/foaf/0.1/&gt;</span>
+<span class="n">SELECT</span> <span class="p">?</span><span class="n">name</span>
+<span class="n">WHERE</span> <span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">foaf:givenName</span> <span class="p">?</span><span class="n">name</span> <span class="o">.</span>
+    <span class="n">FILTER</span> <span class="p">(</span><span class="n">NOT</span> <span class="n">EXISTS</span> <span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">foaf:knows</span> <span class="p">?</span><span class="n">y</span> <span class="p">})</span>
+        <span class="p">?</span><span class="n">x</span> <span class="n">foaf:knows</span> <span class="p">?</span><span class="n">who</span>
+      <span class="p">}</span>
+</pre></div>
+
+
+<p>is the same as (it's a single basic graph pattern - the filter does
+not break it in two):</p>
+<div class="codehilite"><pre><span class="n">PREFIX</span> <span class="n">foaf:</span> <span class="sr">&lt;http://xmlns.com/foaf/0.1/&gt;</span>
+<span class="n">SELECT</span> <span class="p">?</span><span class="n">name</span>
+<span class="n">WHERE</span> <span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">foaf:givenName</span> <span class="p">?</span><span class="n">name</span> <span class="o">.</span>
+        <span class="p">?</span><span class="n">x</span> <span class="n">foaf:knows</span> <span class="p">?</span><span class="n">y</span> <span class="o">.</span>
+    <span class="n">FILTER</span> <span class="p">(</span><span class="n">NOT</span> <span class="n">EXISTS</span> <span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">foaf:knows</span> <span class="p">?</span><span class="n">who</span> <span class="p">})</span>
+      <span class="p">}</span>
+</pre></div>
+
+
+<p>and the <code>FILTER</code> will always be false (<code>{ ?x foaf:knows ?y }</code> must
+have matched to get to this point in the query and useing ?who
+instead makes no difference).</p>
+<p><a href="index.html">ARQ documentation index</a></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 Jena, Jena, the Apache Jena project logo,
+        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/query/programmatic.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/documentation/query/programmatic.html (added)
+++ websites/staging/jena/trunk/content/jena/documentation/query/programmatic.html Thu Oct 27 00:01:49 2011
@@ -0,0 +1,176 @@
+<!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 - ARQ - Building Queries Programmatically</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <script src="/jena/js/jquery-1.6.4.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>
+<li><a href="/jena/documentation/">Documentation</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/using_jena_with_eclipse.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">SPARQL (ARQ)</a></li>
+<li><a href="/jena/documentation/tdb/index.html">TDB</a></li>
+<li><a href="/jena/documentation/sdb/index.html">SDB</a><ul>
+<li><a href="/jena/documentation/sdb/installation.html">Installation</a></li>
+<li><a href="/jena/documentation/sdb/quickstart.html">Quick start</a></li>
+<li><a href="/jena/documentation/sdb/commands.html">Cmd line</a></li>
+<li><a href="/jena/documentation/sdb/javaapi.html">Java API</a></li>
+<li><a href="/jena/documentation/sdb/configuration.html">Config</a></li>
+<li><a href="/jena/documentation/sdb/databases_supported.html">Databases</a></li>
+</ul>
+</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/io/index.html">I/O</a><ul>
+<li><a href="/jena/documentation/io/iohowto.html">I/O how-to</a></li>
+</ul>
+</li>
+<li><a href="/jena/documentation/notes/index.html">Notes</a><ul>
+<li><a href="/jena/documentation/notes/concurrency-howto.html">Concurrency how-to</a></li>
+<li><a href="/jena/documentation/notes/event-handler-howto.html">Event handler how-to</a></li>
+<li><a href="/jena/documentation/notes/file-manager.html">File manager how-to</a></li>
+<li><a href="/jena/documentation/notes/model-factory.html">Model factory how-to</a></li>
+<li><a href="/jena/documentation/notes/rdf-frames.html">RDF frames</a></li>
+<li><a href="/jena/documentation/notes/reification.html">Reification how-to</a></li>
+<li><a href="/jena/documentation/notes/typed-literals.html">Typed literals how-to</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">ARQ - Building Queries Programmatically</h1>
+    <p>It is possible to build queries by building and abstract syntax
+tree (as the parser does) or by building the algebra expression for
+the query.  It is usually better to work with the algebra form as
+it is more regular.</p>
+<p>See the examples in the ARQ <code>src-examples/</code> directory of the ARQ
+distribution, particularly <code>arq.examples.AlgebraExec</code>.</p>
+<p>See also <a href="algebra.html">ARQ - SPARQL Algebra</a></p>
+<p><a href="index.html">ARQ documentation index</a></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 Jena, Jena, the Apache Jena project logo,
+        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/query/property_paths.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/documentation/query/property_paths.html (added)
+++ websites/staging/jena/trunk/content/jena/documentation/query/property_paths.html Thu Oct 27 00:01:49 2011
@@ -0,0 +1,463 @@
+<!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 - </title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <script src="/jena/js/jquery-1.6.4.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>
+<li><a href="/jena/documentation/">Documentation</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/using_jena_with_eclipse.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">SPARQL (ARQ)</a></li>
+<li><a href="/jena/documentation/tdb/index.html">TDB</a></li>
+<li><a href="/jena/documentation/sdb/index.html">SDB</a><ul>
+<li><a href="/jena/documentation/sdb/installation.html">Installation</a></li>
+<li><a href="/jena/documentation/sdb/quickstart.html">Quick start</a></li>
+<li><a href="/jena/documentation/sdb/commands.html">Cmd line</a></li>
+<li><a href="/jena/documentation/sdb/javaapi.html">Java API</a></li>
+<li><a href="/jena/documentation/sdb/configuration.html">Config</a></li>
+<li><a href="/jena/documentation/sdb/databases_supported.html">Databases</a></li>
+</ul>
+</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/io/index.html">I/O</a><ul>
+<li><a href="/jena/documentation/io/iohowto.html">I/O how-to</a></li>
+</ul>
+</li>
+<li><a href="/jena/documentation/notes/index.html">Notes</a><ul>
+<li><a href="/jena/documentation/notes/concurrency-howto.html">Concurrency how-to</a></li>
+<li><a href="/jena/documentation/notes/event-handler-howto.html">Event handler how-to</a></li>
+<li><a href="/jena/documentation/notes/file-manager.html">File manager how-to</a></li>
+<li><a href="/jena/documentation/notes/model-factory.html">Model factory how-to</a></li>
+<li><a href="/jena/documentation/notes/rdf-frames.html">RDF frames</a></li>
+<li><a href="/jena/documentation/notes/reification.html">Reification how-to</a></li>
+<li><a href="/jena/documentation/notes/typed-literals.html">Typed literals how-to</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"></h1>
+    <h1 id="arq_-_property_paths">ARQ - Property Paths</h1>
+<p>A property path is a possible route through a graph between two
+graph nodes.  A trivial case if a property path of length exactly
+one, which is a triple pattern.</p>
+<p>Property paths involve syntactic extension and are available if the
+query is parsed with language <code>Syntax.syntaxARQ</code>.</p>
+<h2 id="path_language">Path Language</h2>
+<p>A property path expression (or just 'path') is similar to a string
+regular expression but over properties, not characters. ARQ
+determines all matches of a path expression and binds subject or
+object as appropriate. Only one match is recorded - no duplicates
+for any given path expression, although is the path is used in a
+situation where it's initial points is already repeated in a
+pattern, then this duplication is preserved.</p>
+<table>
+<thead>
+<tr>
+<th>Path example</th>
+<th>Meaning</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>`dc:title</td>
+<td>rdfs:label`</td>
+</tr>
+<tr>
+<td><code>foaf:knows/foaf:name</code></td>
+<td>Name of people one "knows" steps away.</td>
+</tr>
+<tr>
+<td><code>foaf:knows/foaf:knows/foaf:name</code></td>
+<td>Name of people two "knows" steps away.</td>
+</tr>
+</tbody>
+</table>
+<p>In the description below, <em><code>uri</code></em> is either a URI or a prefixed
+name.</p>
+<table>
+<thead>
+<tr>
+<th>Syntax Form</th>
+<th>Matches</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>&lt;i&gt;uri&lt;/i&gt;</code></td>
+<td>A URI or a prefixed name. A path of length one.</td>
+</tr>
+<tr>
+<td><em><code>^elt</code></em></td>
+<td>Reverse path (object to subject).</td>
+</tr>
+<tr>
+<td><em><code>(elt)</code></em></td>
+<td>A group path <em><code>elt</code></em>, brackets control precedence.</td>
+</tr>
+<tr>
+<td><em><code>elt1 / elt2</code></em></td>
+<td>A sequence path of <em><code>elt1</code></em>, followed by <em><code>elt2</code></em></td>
+</tr>
+<tr>
+<td><em><code>elt1 ^ elt2</code></em></td>
+<td>Shorthand for <code>&lt;i&gt;elt1 / ^elt2&lt;/i&gt;</code>, that is <em><code>elt1</code></em> followed by reverse <em><code>elt2</code></em>.</td>
+</tr>
+<tr>
+<td>*`elt1</td>
+<td>elt2`*</td>
+</tr>
+<tr>
+<td><em><code>elt*</code></em></td>
+<td>A path of zero or more occurrences of <em><code>elt</code></em>.</td>
+</tr>
+<tr>
+<td><em><code>elt+</code></em></td>
+<td>A path of one or more occurrences of <em><code>elt</code></em>.</td>
+</tr>
+<tr>
+<td><em><code>elt?</code></em></td>
+<td>A path of zero or one <em><code>elt</code></em>.</td>
+</tr>
+<tr>
+<td><em><code>elt{n,m}</code></em></td>
+<td>A path between n and m occurrences of <em><code>elt</code></em>.</td>
+</tr>
+<tr>
+<td><em><code>elt{n}</code></em></td>
+<td>Exactly <em><code>n</code></em> occurrences of <em><code>elt</code></em>. A fixed length path.</td>
+</tr>
+<tr>
+<td><em><code>elt{n,}</code></em></td>
+<td><em><code>n</code></em> or more occurrences of <em><code>elt</code></em>.</td>
+</tr>
+<tr>
+<td><em><code>elt{,n}</code></em></td>
+<td>Between 0 and <em><code>n</code></em> occurrences of <em><code>elt</code></em>.</td>
+</tr>
+<tr>
+<td><code>&lt;i&gt;!uri&lt;/i&gt;</code></td>
+<td>A path matching a property which isn't <code>&lt;i&gt;uri&lt;/i&gt;</code> (negated property set)</td>
+</tr>
+<tr>
+<td>`<i>!(uri1</td>
+<td>...</td>
+</tr>
+<tr>
+<td><code>&lt;i&gt;any of uri1 ... uriN&lt;/i&gt;</code> (negated property set)</td>
+<td>A zero occurrence of an path element always matches.</td>
+</tr>
+</tbody>
+</table>
+<p>Precedence:</p>
+<ol>
+<li>URI, prefixed names</li>
+<li>Negated property set</li>
+<li>Groups</li>
+<li>Unary ^ reverse links</li>
+<li>Unary operators <code>*</code>, <code>?</code>, <code>+</code> and <code>{}</code> forms</li>
+<li>Binary operators <code>/</code> and ^</li>
+<li>Binary operator <code>|</code></li>
+</ol>
+<p>Precedence is left-to-right within groups.</p>
+<h2 id="path_evaluation">Path Evaluation</h2>
+<p>Paths are "simple" if they involve only operators / (sequence), ^
+(reverse, unary or binary) and the form {<em>n</em>}, for some single
+integer <em>n</em>. Such paths are fixed length. They are translated to
+triple patterns by the query compiler and do not require special
+path-evaluation at runtime.</p>
+<p>A path of just a URI is still a single triple pattern.</p>
+<p>A path is "complex"  if it involves one or more of the operators
+*,?, + and {}. Such paths require special evaluation and provide
+expressivity outside of strict SPARQL because paths can be of
+variable length. When used with models backed by SQL databases,
+complex path expressions may take some time.</p>
+<p>A path of length zero connects a graph node to itself.</p>
+<p>Cycles in paths are possible and are handled.</p>
+<p>Paths do not need to be anchored at one end of the other, although
+this can lead to large numbers of result because the whole graph is
+searched.</p>
+<p>Property functions in paths are only available for simple paths.</p>
+<h2 id="extended_language">Extended Language</h2>
+<p>This involves is syntactic extension and is available if the query
+is parsed with language <code>Syntax.syntaxARQ</code>.</p>
+<p>Paths can be directly included in the query in the property
+position of a triple pattern:</p>
+<div class="codehilite"><pre><span class="n">PREFIX</span> <span class="p">:</span>     <span class="sr">&lt;http://example/&gt;</span>
+<span class="n">PREFIX</span> <span class="n">rdf:</span>  <span class="sr">&lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt;</span>
+<span class="n">PREFIX</span> <span class="n">rdfs:</span> <span class="sr">&lt;http://www.w3.org/2000/01/rdf-schema#&gt;</span>
+
+<span class="c1"># Find the types of :x, following subClassOf</span>
+<span class="n">SELECT</span> <span class="o">*</span>
+<span class="p">{</span>
+   <span class="p">:</span><span class="n">x</span>  <span class="n">rdf:type</span><span class="o">/</span><span class="n">rdfs:subClassOf</span><span class="o">*</span>  <span class="p">?</span><span class="n">t</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<h2 id="examples">Examples</h2>
+<h3 id="simple_paths">Simple Paths</h3>
+<p>Find the name of any people that Alice knows.</p>
+<div class="codehilite"><pre><span class="p">{</span>
+  <span class="p">?</span><span class="n">x</span> <span class="n">foaf:mbox</span> <span class="sr">&lt;mailto:alice@example&gt;</span> <span class="o">.</span>
+  <span class="p">?</span><span class="n">x</span> <span class="n">foaf:knows</span><span class="o">/</span><span class="n">foaf:name</span> <span class="p">?</span><span class="n">name</span> <span class="o">.</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>Find the names of people 2 "<code>foaf:knows</code>" links away.</p>
+<div class="codehilite"><pre><span class="p">{</span>
+  <span class="p">?</span><span class="n">x</span> <span class="n">foaf:mbox</span> <span class="sr">&lt;mailto:alice@example&gt;</span> <span class="o">.</span>
+  <span class="p">?</span><span class="n">x</span> <span class="n">foaf:knows</span><span class="sr">/foaf:knows/</span><span class="n">foaf:name</span> <span class="p">?</span><span class="n">name</span> <span class="o">.</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>This is the same as the strict SPARQL query:</p>
+<div class="codehilite"><pre><span class="p">{</span>
+  <span class="p">?</span><span class="n">x</span>  <span class="n">foaf:mbox</span> <span class="sr">&lt;mailto:alice@example&gt;</span> <span class="o">.</span>
+  <span class="p">?</span><span class="n">x</span>  <span class="n">foaf:knows</span> <span class="p">[</span> <span class="n">foaf:knows</span> <span class="p">[</span> <span class="n">foaf:name</span> <span class="p">?</span><span class="n">name</span> <span class="p">]]</span><span class="o">.</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>or, with explicit variables:</p>
+<div class="codehilite"><pre><span class="p">{</span>
+  <span class="p">?</span><span class="n">x</span>  <span class="n">foaf:mbox</span> <span class="sr">&lt;mailto:alice@example&gt;</span> <span class="o">.</span>
+  <span class="p">?</span><span class="n">x</span>  <span class="n">foaf:knows</span> <span class="p">?</span><span class="n">a1</span> <span class="o">.</span>
+  <span class="p">?</span><span class="n">a1</span> <span class="n">foaf:knows</span> <span class="p">?</span><span class="n">a2</span> <span class="o">.</span>
+  <span class="p">?</span><span class="n">a2</span> <span class="n">foaf:name</span> <span class="p">?</span><span class="n">name</span> <span class="o">.</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>Because someone Alice knows may well know Alice, the example above
+may include Alice herself. This could be avoided with:</p>
+<div class="codehilite"><pre><span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">foaf:mbox</span> <span class="sr">&lt;mailto:alice@example&gt;</span> <span class="o">.</span>
+  <span class="p">?</span><span class="n">x</span> <span class="n">foaf:knows</span><span class="o">/</span><span class="n">foaf:knows</span> <span class="p">?</span><span class="n">y</span> <span class="o">.</span>
+  <span class="n">FILTER</span> <span class="p">(</span> <span class="p">?</span><span class="n">x</span> <span class="o">!=</span> <span class="p">?</span><span class="n">y</span> <span class="p">)</span>
+  <span class="p">?</span><span class="n">y</span> <span class="n">foaf:name</span> <span class="p">?</span><span class="n">name</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>These two are the same query: the second is just reversing the
+property direction which swaps the roles of subject and object.</p>
+<div class="codehilite"><pre><span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">foaf:mbox</span> <span class="sr">&lt;mailto:alice@example&gt;</span> <span class="p">}</span>
+
+<span class="p">{</span> <span class="sr">&lt;mailto:alice@example&gt;</span> <span class="o">^</span><span class="n">foaf:mbox</span> <span class="p">?</span><span class="n">x</span> <span class="p">}</span>
+</pre></div>
+
+
+<p>Mutual <code>foaf:knows</code> relationships: <code>?x</code> knows someone who knows
+<code>?x</code></p>
+<div class="codehilite"><pre><span class="p">{</span>
+  <span class="p">?</span><span class="n">x</span> <span class="n">foaf:knows</span><span class="o">^</span><span class="n">foaf:knows</span> <span class="p">?</span><span class="n">x</span> <span class="o">.</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>Negated property sets define matching by naming one or more
+properties that must not match. Match if there is a triple from
+<code>?x</code> to <code>?y</code> which is not <code>rdf:type</code>.</p>
+<div class="codehilite"><pre><span class="p">{</span>
+  <span class="p">?</span><span class="n">x</span> <span class="o">!</span><span class="n">rdf:type</span> <span class="p">?</span><span class="n">y</span> <span class="o">.</span>
+<span class="p">}</span>
+
+<span class="p">{</span>
+  <span class="p">?</span><span class="n">x</span> <span class="o">!</span><span class="p">(</span><span class="n">rdf:type</span><span class="o">|^</span><span class="n">rdf:type</span><span class="p">)</span> <span class="p">?</span><span class="n">y</span> <span class="o">.</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>Only properties and reverse properties are allowed in a negated
+property set, not a full path expression.</p>
+<h3 id="complex_paths">Complex Paths</h3>
+<p>Find the names of all the people can be reached from Alice by
+<code>foaf:knows</code>:</p>
+<div class="codehilite"><pre><span class="p">{</span>
+  <span class="p">?</span><span class="n">x</span> <span class="n">foaf:mbox</span> <span class="sr">&lt;mailto:alice@example&gt;</span> <span class="o">.</span>
+  <span class="p">?</span><span class="n">x</span> <span class="n">foaf:knows</span><span class="o">+/</span><span class="n">foaf:name</span> <span class="p">?</span><span class="n">name</span> <span class="o">.</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>Again, because of cycles in <code>foaf:knows</code> relationships, it is
+likely to include Alice herself.</p>
+<p>Some forms of limited inference are possible as well. For example:
+all types and supertypes of a resource:</p>
+<div class="codehilite"><pre><span class="p">{</span> <span class="sr">&lt;http://example/&gt;</span> <span class="n">rdf:type</span><span class="o">/</span><span class="n">rdfs:subClassOf</span><span class="o">*</span> <span class="p">?</span><span class="n">type</span> <span class="p">}</span>
+</pre></div>
+
+
+<p>All resources and all their inferred types:</p>
+<div class="codehilite"><pre><span class="p">{</span> <span class="p">?</span><span class="n">x</span> <span class="n">rdf:type</span><span class="o">/</span><span class="n">rdfs:subClassOf</span><span class="o">*</span> <span class="p">?</span><span class="n">type</span> <span class="p">}</span>
+</pre></div>
+
+
+<h2 id="use_with_legal_sparql_syntax">Use with Legal SPARQL Syntax</h2>
+<p>A path can parsed, then installed as a
+<a href="extension.html#propertyFunctions">property function</a> to be
+referred to by URI. This way, when the URI is used in the predicate
+location in a triple pattern, the path expression is evaluated.</p>
+<div class="codehilite"><pre><span class="n">Path</span> <span class="n">path</span> <span class="o">=</span> <span class="o">...</span>
+<span class="n">String</span> <span class="n">uri</span> <span class="o">=</span> <span class="o">...</span>
+<span class="n">PathLib</span><span class="o">.</span><span class="n">install</span><span class="p">(</span><span class="n">uri</span><span class="p">,</span> <span class="n">path</span><span class="p">)</span> <span class="p">;</span>
+</pre></div>
+
+
+<p>For example:</p>
+<div class="codehilite"><pre><span class="n">Path</span> <span class="n">path</span> <span class="o">=</span> <span class="n">PathParser</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s">&quot;rdf:type/rdfs:subClassOf*&quot;</span><span class="p">,</span> <span class="n">PrefixMapping</span><span class="o">.</span><span class="n">Standard</span><span class="p">)</span> <span class="p">;</span>
+<span class="n">String</span> <span class="n">uri</span> <span class="o">=</span> <span class="s">&quot;http://example/ns#myType&quot;</span> <span class="p">;</span>
+<span class="n">PathLib</span><span class="o">.</span><span class="n">install</span><span class="p">(</span><span class="n">uri</span><span class="p">,</span> <span class="n">path</span><span class="p">)</span> <span class="p">;</span>
+</pre></div>
+
+
+<p>and the SPARQL query:</p>
+<div class="codehilite"><pre><span class="n">PREFIX</span> <span class="p">:</span> <span class="sr">&lt;http://example/&gt;</span>
+<span class="n">PREFIX</span> <span class="n">ns:</span> <span class="sr">&lt;http://example/ns#&gt;</span>
+<span class="c1"># Find the types of :x, following subClassOf</span>
+<span class="n">SELECT</span> <span class="o">*</span> <span class="p">{</span> <span class="p">:</span><span class="n">x</span> <span class="n">ns:myType</span> <span class="p">?</span><span class="n">t</span><span class="p">}</span>
+</pre></div>
+
+
+<p>This also works with if an existing property is redefined (a URI in
+a path expression is not interpreted as a property function) so,
+for example, <code>rdf:type</code> can be redefined as a path that also
+considers RDFS sub -class relationships. The path is a complex path
+so the property function for <code>rdf:type</code> is not triggered.</p>
+<div class="codehilite"><pre><span class="n">Path</span> <span class="n">path</span> <span class="o">=</span> <span class="n">PathParser</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s">&quot;rdf:type/rdfs:subClassOf*&quot;</span><span class="p">,</span> <span class="n">PrefixMapping</span><span class="o">.</span><span class="n">Standard</span><span class="p">)</span> <span class="p">;</span>
+<span class="n">PathLib</span><span class="o">.</span><span class="n">install</span><span class="p">(</span><span class="n">RDF</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">getURI</span><span class="p">(),</span> <span class="n">path</span><span class="p">)</span> <span class="p">;</span>
+</pre></div>
+
+
+<p><a href="index.html">ARQ documentation index</a></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 Jena, Jena, the Apache Jena project logo,
+        Apache and the Apache feather logos are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+
+</body>
+</html>