Author: buildbot
Date: Fri Dec 20 12:58:01 2019
New Revision: 1054365
Log:
Staging update by buildbot for jena
Modified:
websites/staging/jena/trunk/content/ (props changed)
websites/staging/jena/trunk/content/documentation/extras/querybuilder/index.html
Propchange: websites/staging/jena/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Fri Dec 20 12:58:01 2019
@@ -1 +1 @@
-1870934
+1871856
Modified:
websites/staging/jena/trunk/content/documentation/extras/querybuilder/index.html
==============================================================================
---
websites/staging/jena/trunk/content/documentation/extras/querybuilder/index.html
(original)
+++
websites/staging/jena/trunk/content/documentation/extras/querybuilder/index.html
Fri Dec 20 12:58:01 2019
@@ -163,10 +163,8 @@
visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink,
h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink,
dt:hover > .elementid-permalink { visibility: visible }</style>
-<p>Query Builder for Jena. Implementations of Ask, Construct and Select
builders that allow
-developers to create queries without resorting to StringBuilders or similar
solutions.</p>
-<p>Each of the builders has a series of methods to define the query. Each
method returns the
-builder for easy chaining. The example:</p>
+<p>Query Builder for Jena. Implementations of Ask, Construct, Select and
Update builders that allow developers to create queries without resorting to
StringBuilders or similar solutions.</p>
+<p>Each of the builders has a series of methods to define the query. Each
method returns the builder for easy chaining. The example:</p>
<div class="codehilite"><pre><span class="n">SelectBuilder</span> <span
class="n">sb</span> <span class="p">=</span> <span class="n">new</span> <span
class="n">SelectBuilder</span><span class="p">()</span>
<span class="p">.</span><span class="n">addVar</span><span
class="p">(</span> "<span class="o">*</span>" <span class="p">)</span>
<span class="p">.</span><span class="n">addWhere</span><span
class="p">(</span> "?<span class="n">s</span>"<span
class="p">,</span> "?<span class="n">p</span>"<span
class="p">,</span> "?<span class="n">o</span>" <span
class="p">);</span>
@@ -176,14 +174,101 @@ builder for easy chaining. The example
<p>produces</p>
-<div class="codehilite"><pre><span class="n">SELECT</span> <span
class="o">*</span>
-<span class="n">WHERE</span>
+<div class="codehilite"><pre><span class="n">SELECT</span> <span
class="o">*</span>
+<span class="n">WHERE</span>
<span class="p">{</span> ?<span class="n">s</span> ?<span class="n">p</span>
?<span class="n">o</span> <span class="p">}</span>
</pre></div>
+<h1 id="constructing-expressions">Constructing Expressions<a
class="headerlink" href="#constructing-expressions" title="Permanent
link">¶</a></h1>
+<p>Expressions are primarily used in <code>filter</code> and <code>bind</code>
statements as well as in select clauses. All the standard expressions are
implemented in the <code>ExprFactory</code> class. An <code>ExprFactory</code>
can be retrieved from any Builder by calling the <code>getExprFactory()</code>
method. This will create a Factory that has the same prefix mappings and the
query. An alternative is to construct the <code>ExprFactory</code> directly,
this factory will not have the prefixes defined in
<code>PrefixMapping.Extended</code>.</p>
+<div class="codehilite"><pre><span class="n">SelectBuilder</span> <span
class="n">builder</span> <span class="p">=</span> <span class="n">new</span>
<span class="n">SelectBuilder</span><span class="p">();</span>
+<span class="n">ExprFactory</span> <span class="n">exprF</span> <span
class="p">=</span> <span class="n">builder</span><span class="p">.</span><span
class="n">getExprFactory</span><span class="p">()</span>
+ <span class="p">.</span><span class="n">addPrefix</span><span
class="p">(</span> "<span class="n">cf</span>"<span class="p">,</span>
+ "<span class="n">http</span><span class="p">:</span><span
class="o">//</span><span class="n">vocab</span><span class="p">.</span><span
class="n">nerc</span><span class="p">.</span><span class="n">ac</span><span
class="p">.</span><span class="n">uk</span><span class="o">/</span><span
class="n">collection</span><span class="o">/</span><span
class="n">P07</span><span class="o">/</span><span class="n">current</span><span
class="o">/</span><span class="n">CFSN0023</span><span
class="o">/</span>"<span class="p">)</span>
+<span class="n">builder</span><span class="p">.</span><span
class="n">addVar</span><span class="p">(</span> <span
class="n">exprF</span><span class="p">.</span><span
class="nb">floor</span><span class="p">(</span> ?<span class="n">v</span> <span
class="p">),</span> ?<span class="nb">floor</span> <span class="p">)</span>
+
+ <span class="p">.</span><span class="n">addWhere</span><span
class="p">(</span> ?<span class="n">s</span><span class="p">,</span>
"<span class="n">cf</span><span class="p">:</span><span
class="n">air_temperature</span>"<span class="p">,</span> ?<span
class="n">v</span> <span class="p">)</span>
+</pre></div>
+
+
+<h1 id="update-builder">Update Builder<a class="headerlink"
href="#update-builder" title="Permanent link">¶</a></h1>
+<p>The <code>UpdateBuilder</code> is used to create <code>Update</code>,
<code>UpdateDeleteWhere</code> or <code>UpdateRequest</code> objects. When an
<code>UpdateRequest</code> is built is contains a single <code>Update</code>
object as defined by the <code>UpdateBuilder</code>. <code>Update</code>
objects can be added to an UpdateRequest using the <code>appendTo()</code>
method.</p>
+<div class="codehilite"><pre><span class="n">Var</span> <span
class="n">subj</span> <span class="p">=</span> <span class="n">Var</span><span
class="p">.</span><span class="n">alloc</span><span class="p">(</span>
"<span class="n">s</span>" <span class="p">);</span>
+<span class="n">Var</span> <span class="n">obj</span> <span class="p">=</span>
<span class="n">Var</span><span class="p">.</span><span
class="n">alloc</span><span class="p">(</span> "<span
class="n">o</span>" <span class="p">);</span>
+
+<span class="n">UpdateBuilder</span> <span class="n">builder</span> <span
class="p">=</span> <span class="n">new</span> <span
class="n">UpdateBuilder</span><span class="p">(</span> <span
class="n">PrefixMapping</span><span class="p">.</span><span
class="n">Standard</span><span class="p">)</span>
+ <span class="p">.</span><span class="n">addInsert</span><span
class="p">(</span> <span class="n">subj</span><span class="p">,</span>
"<span class="n">rdfs</span><span class="p">:</span><span
class="n">comment</span>"<span class="p">,</span> <span
class="n">obj</span> <span class="p">)</span>
+ <span class="p">.</span><span class="n">addWhere</span><span
class="p">(</span> <span class="n">subj</span><span class="p">,</span>
"<span class="n">dc</span><span class="p">:</span><span
class="n">title</span>"<span class="p">,</span> <span
class="n">obj</span><span class="p">);</span>
+
+<span class="n">UpdateRequest</span> <span class="n">req</span> <span
class="p">=</span> <span class="n">builder</span><span class="p">.</span><span
class="n">buildRequest</span><span class="p">();</span>
+
+<span class="n">UpdateBuilder</span> <span class="n">builder2</span> <span
class="p">=</span> <span class="n">new</span> <span
class="n">UpdateBuilder</span><span class="p">()</span>
+ <span class="p">.</span><span class="n">addPrefix</span><span
class="p">(</span> "<span class="n">dc</span>"<span
class="p">,</span> "<span class="n">http</span><span
class="p">:</span><span class="o">//</span><span class="n">purl</span><span
class="p">.</span><span class="n">org</span><span class="o">/</span><span
class="n">dc</span><span class="o">/</span><span class="n">elements</span><span
class="o">/</span>1<span class="p">.</span>1<span class="o">/</span>"<span
class="p">)</span>
+ <span class="p">.</span><span class="n">addDelete</span><span
class="p">(</span> <span class="n">subj</span><span class="p">,</span>
"?<span class="n">p</span>"<span class="p">,</span> <span
class="n">obj</span><span class="p">)</span>
+ <span class="p">.</span><span class="n">where</span><span
class="p">(</span> <span class="n">subj</span><span class="p">,</span> <span
class="n">dc</span><span class="p">:</span><span class="n">creator</span><span
class="p">,</span> "<span class="n">me</span>"<span class="p">)</span>
+ <span class="p">.</span><span class="n">appendTo</span><span
class="p">(</span> <span class="n">req</span> <span class="p">);</span>
+</pre></div>
+
+
+<h1 id="where-builder">Where Builder<a class="headerlink"
href="#where-builder" title="Permanent link">¶</a></h1>
+<p>In some use cases it is desirable to create a where clause without
constructing an entire query. The <code>WhereBuilder</code> is designed to fit
this need. For example to construct the query:</p>
+<div class="codehilite"><pre><span class="n">PREFIX</span> <span
class="n">rdfs</span><span class="p">:</span> <span class="o"><</span><span
class="n">http</span><span class="p">:</span><span class="o">//</span><span
class="n">www</span><span class="p">.</span><span class="n">w3</span><span
class="p">.</span><span class="n">org</span><span class="o">/</span>2000<span
class="o">/</span>01<span class="o">/</span><span class="n">rdf</span><span
class="o">-</span><span class="n">schema</span>#<span class="o">></span>
+<span class="n">PREFIX</span> <span class="n">foaf</span><span
class="p">:</span> <span class="o"><</span><span class="n">http</span><span
class="p">:</span><span class="o">//</span><span class="n">xmlns</span><span
class="p">.</span><span class="n">com</span><span class="o">/</span><span
class="n">foaf</span><span class="o">/</span>0<span class="p">.</span>1<span
class="o">/></span>
+
+<span class="n">SELECT</span> ?<span class="n">page</span> ?<span
class="n">type</span> <span class="n">WHERE</span>
+<span class="p">{</span>
+ ?<span class="n">s</span> <span class="n">foaf</span><span
class="p">:</span><span class="n">page</span> ?<span class="n">page</span>
<span class="p">.</span>
+ <span class="p">{</span> ?<span class="n">s</span> <span
class="n">rdfs</span><span class="p">:</span><span class="n">label</span>
"<span class="n">Microsoft</span>"<span class="p">@</span><span
class="n">en</span> <span class="p">.</span> <span class="n">BIND</span> <span
class="p">(</span>"<span class="n">A</span>" <span
class="n">as</span> ?<span class="n">type</span><span class="p">)</span> <span
class="p">}</span>
+ <span class="n">UNION</span>
+ <span class="p">{</span> ?<span class="n">s</span> <span
class="n">rdfs</span><span class="p">:</span><span class="n">label</span>
"<span class="n">Apple</span>"<span class="p">@</span><span
class="n">en</span> <span class="p">.</span> <span class="n">BIND</span> <span
class="p">(</span>"<span class="n">B</span>" <span
class="n">as</span> ?<span class="n">type</span><span class="p">)</span> <span
class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>You could use a WhereBuilder to construct the union queries and add them to
a Select or other query builder.</p>
+<div class="codehilite"><pre><span class="n">WhereBuilder</span> <span
class="n">whereBuilder</span> <span class="p">=</span> <span
class="n">new</span> <span class="n">WhereBuilder</span><span
class="p">()</span>
+ <span class="p">.</span><span class="n">addPrefix</span><span
class="p">(</span> "<span class="n">rdfs</span>"<span
class="p">,</span> "<span class="n">http</span><span
class="p">:</span><span class="o">//</span><span class="n">www</span><span
class="p">.</span><span class="n">w3</span><span class="p">.</span><span
class="n">org</span><span class="o">/</span>2000<span class="o">/</span>01<span
class="o">/</span><span class="n">rdf</span><span class="o">-</span><span
class="n">schema</span>#" <span class="p">)</span>
+ <span class="n">addWhere</span><span class="p">(</span> "?<span
class="n">s</span>"<span class="p">,</span> "<span
class="n">rdfs</span><span class="p">:</span><span
class="n">label</span>"<span class="p">,</span> "<span
class="s">'Microsoft'</span><span class="p">@</span><span
class="n">en</span>" <span class="p">)</span>
+ <span class="p">.</span><span class="n">addBind</span><span
class="p">(</span> "<span class="s">'A'</span>"<span
class="p">,</span> "?<span class="n">type</span>"<span
class="p">)</span>
+ <span class="p">.</span><span class="n">addUnion</span><span
class="p">(</span> <span class="n">new</span> <span
class="n">WhereBuilder</span><span class="p">()</span>
+ <span class="p">.</span><span class="n">addPrefix</span><span
class="p">(</span> "<span class="n">rdfs</span>"<span
class="p">,</span> "<span class="n">http</span><span
class="p">:</span><span class="o">//</span><span class="n">www</span><span
class="p">.</span><span class="n">w3</span><span class="p">.</span><span
class="n">org</span><span class="o">/</span>2000<span class="o">/</span>01<span
class="o">/</span><span class="n">rdf</span><span class="o">-</span><span
class="n">schema</span>#" <span class="p">)</span>
+ <span class="p">.</span><span class="n">addWhere</span><span
class="p">(</span> "?<span class="n">s</span>"<span
class="p">,</span> "<span class="n">rdfs</span><span
class="p">:</span><span class="n">label</span>"<span class="p">,</span>
"<span class="s">'Apple'</span><span class="p">@</span><span
class="n">en</span>" <span class="p">)</span>
+ <span class="p">.</span><span class="n">addBind</span><span
class="p">(</span> "<span class="s">'B'</span>"<span
class="p">,</span> "?<span class="n">type</span>"<span
class="p">)</span>
+ <span class="p">);</span>
+
+<span class="n">SelectBuilder</span> <span class="n">builder</span> <span
class="p">=</span> <span class="n">new</span> <span
class="n">SelectBuilder</span><span class="p">()</span>
+ <span class="p">.</span><span class="n">addPrefix</span><span
class="p">(</span> "<span class="n">rdfs</span>"<span
class="p">,</span> "<span class="n">http</span><span
class="p">:</span><span class="o">//</span><span class="n">www</span><span
class="p">.</span><span class="n">w3</span><span class="p">.</span><span
class="n">org</span><span class="o">/</span>2000<span class="o">/</span>01<span
class="o">/</span><span class="n">rdf</span><span class="o">-</span><span
class="n">schema</span>#" <span class="p">)</span>
+ <span class="p">.</span><span class="n">addPrefix</span><span
class="p">(</span> "<span class="n">foaf</span>"<span
class="p">,</span> "<span class="n">http</span><span
class="p">:</span><span class="o">//</span><span class="n">xmlns</span><span
class="p">.</span><span class="n">com</span><span class="o">/</span><span
class="n">foaf</span><span class="o">/</span>0<span class="p">.</span>1<span
class="o">/</span>" <span class="p">);</span>
+ <span class="p">.</span><span class="n">addVar</span><span
class="p">(</span> "?<span class="n">page</span>"<span
class="p">)</span>
+ <span class="p">.</span><span class="n">addVar</span><span
class="p">(</span> "?<span class="n">type</span>" <span
class="p">)</span>
+ <span class="p">.</span><span class="n">addWhere</span><span
class="p">(</span> "?<span class="n">s</span>"<span
class="p">,</span> "<span class="n">foaf</span><span
class="p">:</span><span class="n">page</span>"<span class="p">,</span>
"?<span class="n">page</span>" <span class="p">)</span>
+ <span class="p">.</span><span class="n">addWhere</span><span
class="p">(</span> <span class="n">whereBuilder</span> <span class="p">);</span>
+</pre></div>
+
+
+<p>The where clauses could be built inline as:</p>
+<div class="codehilite"><pre><span class="n">SelectBuilder</span> <span
class="n">builder</span> <span class="p">=</span> <span class="n">new</span>
<span class="n">SelectBuilder</span><span class="p">()</span>
+ <span class="p">.</span><span class="n">addPrefixs</span><span
class="p">(</span> <span class="n">PrefixMapping</span><span
class="p">.</span><span class="n">Standard</span> <span class="p">)</span>
+ <span class="p">.</span><span class="n">addPrefix</span><span
class="p">(</span> "<span class="n">foaf</span>"<span
class="p">,</span> "<span class="n">http</span><span
class="p">:</span><span class="o">//</span><span class="n">xmlns</span><span
class="p">.</span><span class="n">com</span><span class="o">/</span><span
class="n">foaf</span><span class="o">/</span>0<span class="p">.</span>1<span
class="o">/</span>" <span class="p">);</span>
+ <span class="p">.</span><span class="n">addVar</span><span
class="p">(</span> "?<span class="n">page</span>"<span
class="p">)</span>
+ <span class="p">.</span><span class="n">addVar</span><span
class="p">(</span> "?<span class="n">type</span>" <span
class="p">)</span>
+ <span class="p">.</span><span class="n">addWhere</span><span
class="p">(</span> "?<span class="n">s</span>"<span
class="p">,</span> "<span class="n">foaf</span><span
class="p">:</span><span class="n">page</span>"<span class="p">,</span>
"?<span class="n">page</span>" <span class="p">)</span>
+ <span class="p">.</span><span class="n">addWhere</span><span
class="p">(</span> <span class="n">new</span> <span
class="n">WhereBuilder</span><span class="p">()</span>
+ <span class="p">.</span><span class="n">addPrefix</span><span
class="p">(</span> "<span class="n">rdfs</span>"<span
class="p">,</span> "<span class="n">http</span><span
class="p">:</span><span class="o">//</span><span class="n">www</span><span
class="p">.</span><span class="n">w3</span><span class="p">.</span><span
class="n">org</span><span class="o">/</span>2000<span class="o">/</span>01<span
class="o">/</span><span class="n">rdf</span><span class="o">-</span><span
class="n">schema</span>#" <span class="p">)</span>
+ <span class="p">.</span><span class="n">addWhere</span><span
class="p">(</span> "?<span class="n">s</span>"<span
class="p">,</span> "<span class="n">rdfs</span><span
class="p">:</span><span class="n">label</span>"<span class="p">,</span>
"<span class="s">'Microsoft'</span><span class="p">@</span><span
class="n">en</span>" <span class="p">)</span>
+ <span class="p">.</span><span class="n">addBind</span><span
class="p">(</span> "<span class="s">'A'</span>"<span
class="p">,</span> "?<span class="n">type</span>"<span
class="p">)</span>
+ <span class="p">.</span><span class="n">addUnion</span><span
class="p">(</span> <span class="n">new</span> <span
class="n">WhereBuilder</span><span class="p">()</span>
+ <span class="p">.</span><span class="n">addPrefix</span><span
class="p">(</span> "<span class="n">rdfs</span>"<span
class="p">,</span> "<span class="n">http</span><span
class="p">:</span><span class="o">//</span><span class="n">www</span><span
class="p">.</span><span class="n">w3</span><span class="p">.</span><span
class="n">org</span><span class="o">/</span>2000<span class="o">/</span>01<span
class="o">/</span><span class="n">rdf</span><span class="o">-</span><span
class="n">schema</span>#" <span class="p">)</span>
+ <span class="p">.</span><span class="n">addWhere</span><span
class="p">(</span> "?<span class="n">s</span>"<span
class="p">,</span> "<span class="n">rdfs</span><span
class="p">:</span><span class="n">label</span>"<span class="p">,</span>
"<span class="s">'Apple'</span><span class="p">@</span><span
class="n">en</span>" <span class="p">)</span>
+ <span class="p">.</span><span class="n">addBind</span><span
class="p">(</span> "<span class="s">'B'</span>"<span
class="p">,</span> "?<span class="n">type</span>"<span
class="p">)</span>
+ <span class="p">)</span>
+ <span class="p">);</span>
+</pre></div>
+
+
<h1 id="template-usage">Template Usage<a class="headerlink"
href="#template-usage" title="Permanent link">¶</a></h1>
-<p>In addition to making it easier to build valid queries the QueryBuilder has
a clone method.<br />
+<p>In addition to making it easier to build valid queries the QueryBuilder has
a clone method.
Using this a developer can create as "Template" query and add to it as
necessary.</p>
<p>for example using the above query as the "template" the this code:</p>
<div class="codehilite"><pre><span class="n">SelectBuilder</span> <span
class="n">sb2</span> <span class="p">=</span> <span class="n">sb</span><span
class="p">.</span><span class="n">clone</span><span class="p">();</span>
@@ -194,16 +279,16 @@ Using this a developer can create as "Te
<p>produces</p>
<div class="codehilite"><pre><span class="n">PREFIX</span> <span
class="n">foaf</span><span class="p">:</span> <span class="o"><</span><span
class="n">http</span><span class="p">:</span><span class="o">//</span><span
class="n">xmlns</span><span class="p">.</span><span class="n">com</span><span
class="o">/</span><span class="n">foaf</span><span class="o">/</span>0<span
class="p">.</span>1<span class="o">/></span>
-<span class="n">SELECT</span> <span class="o">*</span>
-<span class="n">WHERE</span>
- <span class="p">{</span> ?<span class="n">s</span> ?<span class="n">p</span>
?<span class="n">o</span> <span class="p">.</span>
- ?<span class="n">s</span> <span class="o"><</span><span
class="n">http</span><span class="p">:</span><span class="o">//</span><span
class="n">www</span><span class="p">.</span><span class="n">w3</span><span
class="p">.</span><span class="n">org</span><span class="o">/</span>1999<span
class="o">/</span>02<span class="o">/</span>22<span class="o">-</span><span
class="n">rdf</span><span class="o">-</span><span class="n">syntax</span><span
class="o">-</span><span class="n">ns</span>#<span class="n">type</span><span
class="o">></span> <span class="n">foaf</span><span class="p">:</span><span
class="n">person</span> <span class="p">.</span>
+<span class="n">SELECT</span> <span class="o">*</span>
+<span class="n">WHERE</span>
+ <span class="p">{</span> ?<span class="n">s</span> ?<span class="n">p</span>
?<span class="n">o</span> <span class="p">.</span>
+ ?<span class="n">s</span> <span class="o"><</span><span
class="n">http</span><span class="p">:</span><span class="o">//</span><span
class="n">www</span><span class="p">.</span><span class="n">w3</span><span
class="p">.</span><span class="n">org</span><span class="o">/</span>1999<span
class="o">/</span>02<span class="o">/</span>22<span class="o">-</span><span
class="n">rdf</span><span class="o">-</span><span class="n">syntax</span><span
class="o">-</span><span class="n">ns</span>#<span class="n">type</span><span
class="o">></span> <span class="n">foaf</span><span class="p">:</span><span
class="n">person</span> <span class="p">.</span>
<span class="p">}</span>
</pre></div>
<h1 id="prepared-statement-usage">Prepared Statement Usage<a
class="headerlink" href="#prepared-statement-usage" title="Permanent
link">¶</a></h1>
-<p>The query builders have the ability to replace variables with other values.
This can be </p>
+<p>The query builders have the ability to replace variables with other values.
This can be</p>
<div class="codehilite"><pre><span class="n">SelectBuilder</span> <span
class="n">sb</span> <span class="p">=</span> <span class="n">new</span> <span
class="n">SelectBuilder</span><span class="p">()</span>
<span class="p">.</span><span class="n">addVar</span><span
class="p">(</span> "<span class="o">*</span>" <span class="p">)</span>
<span class="p">.</span><span class="n">addWhere</span><span
class="p">(</span> "?<span class="n">s</span>"<span
class="p">,</span> "?<span class="n">p</span>"<span
class="p">,</span> "?<span class="n">o</span>" <span
class="p">);</span>
@@ -214,8 +299,8 @@ Using this a developer can create as "Te
<p>produces</p>
-<div class="codehilite"><pre><span class="n">SELECT</span> <span
class="o">*</span>
-<span class="n">WHERE</span>
+<div class="codehilite"><pre><span class="n">SELECT</span> <span
class="o">*</span>
+<span class="n">WHERE</span>
<span class="p">{</span> ?<span class="n">s</span> ?<span class="n">p</span>
<span class="o"><</span><span class="n">http</span><span
class="p">:</span><span class="o">//</span><span class="n">xmlns</span><span
class="p">.</span><span class="n">com</span><span class="o">/</span><span
class="n">foaf</span><span class="o">/</span>0<span class="p">.</span>1<span
class="o">/</span><span class="n">Person</span><span class="o">></span>
<span class="p">}</span>
</pre></div>
</div>