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 2013/06/20 12:18:36 UTC

svn commit: r866584 [9/21] - in /websites/staging/jena/trunk/content: ./ documentation/assembler/ documentation/inference/ documentation/io/ documentation/javadoc/arq/ documentation/javadoc/fuseki/ documentation/javadoc/jena/ documentation/javadoc/larq...

Modified: websites/staging/jena/trunk/content/documentation/query/manipulating_sparql_using_arq.html
==============================================================================
--- websites/staging/jena/trunk/content/documentation/query/manipulating_sparql_using_arq.html (original)
+++ websites/staging/jena/trunk/content/documentation/query/manipulating_sparql_using_arq.html Thu Jun 20 10:18:34 2013
@@ -169,16 +169,16 @@ blog</a></em></p>
 <h2 id="inserting-values-simple-prepared-statements">Inserting values (simple prepared statements)</h2>
 <p>Let's begin with something simple. Suppose we wanted to restrict the
 following query to a particular person:</p>
-<div class="codehilite"><pre>   <span class="nb">select</span> <span class="o">*</span> <span class="p">{</span><span class="err"> </span><span class="p">?</span><span class="n">person</span> <span class="sr">&lt;http://xmlns.com/foaf/0.1/name&gt;</span><span class="err"> </span><span class="p">?</span><span class="n">name</span> <span class="p">}</span>
+<div class="codehilite"><pre>   <span class="n">select</span> <span class="o">*</span> <span class="p">{</span> ?<span class="n">person</span> <span class="o">&lt;</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">name</span><span class="o">&gt;</span> ?<span class="n">name</span> <span class="p">}</span>
 </pre></div>
 
 
 <p><code>String#replaceAll</code> would work, but there is a safer way.
 <code>QueryExecutionFactory</code> in most cases lets you supply a <code>QuerySolution</code>
 with which you can prebind values.</p>
-<div class="codehilite"><pre>   <span class="n">QuerySolutionMap</span> <span class="n">initialBinding</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QuerySolutionMap</span><span class="p">();</span>
-   <span class="n">initialBinding</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">,</span> <span class="n">personResource</span><span class="p">);</span>
-   <span class="n">qe</span> <span class="o">=</span> <span class="n">QueryExecutionFactory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">initialBinding</span><span class="p">);</span>
+<div class="codehilite"><pre>   <span class="n">QuerySolutionMap</span> <span class="n">initialBinding</span> <span class="p">=</span> <span class="n">new</span> <span class="n">QuerySolutionMap</span><span class="p">();</span>
+   <span class="n">initialBinding</span><span class="p">.</span><span class="n">add</span><span class="p">(</span>&quot;<span class="n">name</span>&quot;<span class="p">,</span> <span class="n">personResource</span><span class="p">);</span>
+   <span class="n">qe</span> <span class="p">=</span> <span class="n">QueryExecutionFactory</span><span class="p">.</span><span class="n">create</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">initialBinding</span><span class="p">);</span>
 </pre></div>
 
 
@@ -193,24 +193,24 @@ query. So what how do we really alter qu
 <p>ARQ provides two ways to work with queries: at the syntax level (<code>Query</code>
 and <code>Element</code>), or the algebra level (<code>Op</code>). The distinction is clear in
 filters:</p>
-<div class="codehilite"><pre>   <span class="n">SELECT</span><span class="err"> </span><span class="p">?</span><span class="n">s</span> <span class="p">{</span><span class="err"> </span><span class="p">?</span><span class="n">s</span> <span class="sr">&lt;http://example.com/val&gt;</span><span class="err"> </span><span class="p">?</span><span class="n">val</span> <span class="o">.</span> <span class="n">FILTER</span> <span class="p">(</span><span class="err"> </span><span class="p">?</span><span class="n">val</span> <span class="o">&lt;</span> <span class="mi">20</span> <span class="p">)</span> <span class="p">}</span>
+<div class="codehilite"><pre>   <span class="n">SELECT</span> ?<span class="n">s</span> <span class="p">{</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">val</span><span class="o">&gt;</span> ?<span class="n">val</span> <span class="p">.</span> <span class="n">FILTER</span> <span class="p">(</span> ?<span class="n">val</span> <span class="o">&lt;</span> 20 <span class="p">)</span> <span class="p">}</span>
 </pre></div>
 
 
 <p>If you work at the syntax level you'll find that this looks (in pseudo
 code) like:</p>
-<div class="codehilite"><pre>   <span class="p">(</span><span class="n">GROUP</span> <span class="p">(</span><span class="n">PATTERN</span> <span class="p">(</span><span class="err"> </span><span class="p">?</span><span class="n">s</span> <span class="sr">&lt;http://example.com/val&gt;</span><span class="err"> </span><span class="p">?</span><span class="n">val</span> <span class="p">))</span> <span class="p">(</span><span class="n">FILTER</span> <span class="p">(</span> <span class="o">&lt;</span><span class="err"> </span><span class="p">?</span><span class="n">val</span> <span class="mi">20</span> <span class="p">)</span> <span class="p">))</span>
+<div class="codehilite"><pre>   <span class="p">(</span><span class="n">GROUP</span> <span class="p">(</span><span class="n">PATTERN</span> <span class="p">(</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">val</span><span class="o">&gt;</span> ?<span class="n">val</span> <span class="p">))</span> <span class="p">(</span><span class="n">FILTER</span> <span class="p">(</span> <span class="o">&lt;</span> ?<span class="n">val</span> 20 <span class="p">)</span> <span class="p">))</span>
 </pre></div>
 
 
 <p>That is there's a group containing a triple pattern and a filter, just
 as you see in the query. The algebra is different, and we can see it
 using <code>arq.qparse --print op</code></p>
-<div class="codehilite"><pre>   <span class="nv">$</span> <span class="nv">java</span> <span class="n">arq</span><span class="o">.</span><span class="n">qparse</span> <span class="o">--</span><span class="k">print</span> <span class="n">op</span> <span class="s">&#39;SELECT ?s { ?s &lt;http://example.com/val&gt; ?val . FILTER ( ?val &lt; 20 ) }&#39;</span>
-   <span class="p">(</span><span class="n">base</span> <span class="sr">&lt;file:///...&gt;</span>
-       <span class="p">(</span><span class="n">project</span> <span class="p">(?</span><span class="n">s</span><span class="p">)</span>
-           <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span><span class="err"> </span><span class="p">?</span><span class="n">val</span> <span class="mi">20</span><span class="p">)</span>
-               <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span><span class="err"> </span><span class="p">?</span><span class="n">s</span> <span class="sr">&lt;http://example.com/val&gt;</span><span class="err"> </span><span class="p">?</span><span class="n">val</span><span class="p">)))))</span>
+<div class="codehilite"><pre>   $ <span class="n">java</span> <span class="n">arq</span><span class="p">.</span><span class="n">qparse</span> <span class="o">--</span><span class="n">print</span> <span class="n">op</span> <span class="s">&#39;SELECT ?s { ?s &lt;http://example.com/val&gt; ?val . FILTER ( ?val &lt; 20 ) }&#39;</span>
+   <span class="p">(</span><span class="n">base</span> <span class="o">&lt;</span><span class="n">file</span><span class="p">:</span><span class="o">///</span><span class="p">...</span><span class="o">&gt;</span>
+       <span class="p">(</span><span class="n">project</span> <span class="p">(</span>?<span class="n">s</span><span class="p">)</span>
+           <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span> ?<span class="n">val</span> 20<span class="p">)</span>
+               <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">val</span><span class="o">&gt;</span> ?<span class="n">val</span><span class="p">)))))</span>
 </pre></div>
 
 
@@ -218,11 +218,11 @@ using <code>arq.qparse --print op</code>
 This form makes it clear that the expression is filtering the pattern.</p>
 <p>Let's create that query from scratch using ARQ. We begin with some
 common pieces: the triple to match, and the expression for the filter.</p>
-<div class="codehilite"><pre>   <span class="sr">//</span><span class="err"> </span><span class="p">?</span><span class="n">s</span><span class="err"> </span><span class="p">?</span><span class="n">p</span><span class="err"> </span><span class="p">?</span><span class="n">o</span> <span class="o">.</span>
-   <span class="n">Triple</span> <span class="n">pattern</span> <span class="o">=</span>
-       <span class="n">Triple</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">Var</span><span class="o">.</span><span class="n">alloc</span><span class="p">(</span><span class="s">&quot;s&quot;</span><span class="p">),</span> <span class="n">Var</span><span class="o">.</span><span class="n">alloc</span><span class="p">(</span><span class="s">&quot;p&quot;</span><span class="p">),</span> <span class="n">Var</span><span class="o">.</span><span class="n">alloc</span><span class="p">(</span><span class="s">&quot;o&quot;</span><span class="p">));</span>
-   <span class="sr">//</span> <span class="p">(</span><span class="err"> </span><span class="p">?</span><span class="n">s</span> <span class="o">&lt;</span> <span class="mi">20</span> <span class="p">)</span>
-   <span class="n">Expr</span> <span class="n">e</span> <span class="o">=</span> <span class="k">new</span> <span class="n">E_LessThan</span><span class="p">(</span><span class="k">new</span> <span class="n">ExprVar</span><span class="p">(</span><span class="s">&quot;s&quot;</span><span class="p">),</span> <span class="k">new</span> <span class="n">NodeValueInteger</span><span class="p">(</span><span class="mi">20</span><span class="p">));</span>
+<div class="codehilite"><pre>   <span class="o">//</span> ?<span class="n">s</span> ?<span class="n">p</span> ?<span class="n">o</span> <span class="p">.</span>
+   <span class="n">Triple</span> <span class="n">pattern</span> <span class="p">=</span>
+       <span class="n">Triple</span><span class="p">.</span><span class="n">create</span><span class="p">(</span><span class="n">Var</span><span class="p">.</span><span class="n">alloc</span><span class="p">(</span>&quot;<span class="n">s</span>&quot;<span class="p">),</span> <span class="n">Var</span><span class="p">.</span><span class="n">alloc</span><span class="p">(</span>&quot;<span class="n">p</span>&quot;<span class="p">),</span> <span class="n">Var</span><span class="p">.</span><span class="n">alloc</span><span class="p">(</span>&quot;<span class="n">o</span>&quot;<span class="p">));</span>
+   <span class="o">//</span> <span class="p">(</span> ?<span class="n">s</span> <span class="o">&lt;</span> 20 <span class="p">)</span>
+   <span class="n">Expr</span> <span class="n">e</span> <span class="p">=</span> <span class="n">new</span> <span class="n">E_LessThan</span><span class="p">(</span><span class="n">new</span> <span class="n">ExprVar</span><span class="p">(</span>&quot;<span class="n">s</span>&quot;<span class="p">),</span> <span class="n">new</span> <span class="n">NodeValueInteger</span><span class="p">(</span>20<span class="p">));</span>
 </pre></div>
 
 
@@ -230,29 +230,29 @@ common pieces: the triple to match, and 
 for variables. <code>Expr</code> is the root interface for expressions, those
 things that appear in <code>FILTER</code> and <code>LET</code>.</p>
 <p>First the syntax route:</p>
-<div class="codehilite"><pre>   <span class="n">ElementTriplesBlock</span> <span class="n">block</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ElementTriplesBlock</span><span class="p">();</span> <span class="sr">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">BGP</span>
-   <span class="n">block</span><span class="o">.</span><span class="n">addTriple</span><span class="p">(</span><span class="n">pattern</span><span class="p">);</span>                              <span class="sr">//</span> <span class="n">Add</span> <span class="k">our</span> <span class="n">pattern</span> <span class="n">match</span>
-   <span class="n">ElementFilter</span> <span class="n">filter</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ElementFilter</span><span class="p">(</span><span class="n">e</span><span class="p">);</span>           <span class="sr">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">filter</span> <span class="n">matching</span> <span class="n">the</span> <span class="n">expression</span>
-   <span class="n">ElementGroup</span> <span class="n">body</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ElementGroup</span><span class="p">();</span>                <span class="sr">//</span> <span class="n">Group</span> <span class="k">our</span> <span class="n">pattern</span> <span class="n">match</span> <span class="ow">and</span> <span class="n">filter</span>
-   <span class="n">body</span><span class="o">.</span><span class="n">addElement</span><span class="p">(</span><span class="n">block</span><span class="p">);</span>
-   <span class="n">body</span><span class="o">.</span><span class="n">addElement</span><span class="p">(</span><span class="n">filter</span><span class="p">);</span>
-
-   <span class="n">Query</span> <span class="sx">q = </span><span class="n">QueryFactory</span><span class="o">.</span><span class="n">make</span><span class="p">();</span>
-   <span class="sx">q.setQueryPattern(body);                               // Set the body of the query to our group</span>
-<span class="sx">   q.</span><span class="n">setQuerySelectType</span><span class="p">();</span>                                <span class="sr">//</span> <span class="n">Make</span> <span class="n">it</span> <span class="n">a</span> <span class="nb">select</span> <span class="n">query</span>
-   <span class="n">q</span><span class="o">.</span><span class="n">addResultVar</span><span class="p">(</span><span class="s">&quot;s&quot;</span><span class="p">);</span>                                   <span class="sr">//</span> <span class="n">Select</span><span class="err"> </span><span class="p">?</span><span class="n">s</span>
+<div class="codehilite"><pre>   <span class="n">ElementTriplesBlock</span> <span class="n">block</span> <span class="p">=</span> <span class="n">new</span> <span class="n">ElementTriplesBlock</span><span class="p">();</span> <span class="o">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">BGP</span>
+   <span class="n">block</span><span class="p">.</span><span class="n">addTriple</span><span class="p">(</span><span class="n">pattern</span><span class="p">);</span>                              <span class="o">//</span> <span class="n">Add</span> <span class="n">our</span> <span class="n">pattern</span> <span class="n">match</span>
+   <span class="n">ElementFilter</span> <span class="n">filter</span> <span class="p">=</span> <span class="n">new</span> <span class="n">ElementFilter</span><span class="p">(</span><span class="n">e</span><span class="p">);</span>           <span class="o">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">filter</span> <span class="n">matching</span> <span class="n">the</span> <span class="n">expression</span>
+   <span class="n">ElementGroup</span> <span class="n">body</span> <span class="p">=</span> <span class="n">new</span> <span class="n">ElementGroup</span><span class="p">();</span>                <span class="o">//</span> <span class="n">Group</span> <span class="n">our</span> <span class="n">pattern</span> <span class="n">match</span> <span class="n">and</span> <span class="n">filter</span>
+   <span class="n">body</span><span class="p">.</span><span class="n">addElement</span><span class="p">(</span><span class="n">block</span><span class="p">);</span>
+   <span class="n">body</span><span class="p">.</span><span class="n">addElement</span><span class="p">(</span><span class="n">filter</span><span class="p">);</span>
+
+   <span class="n">Query</span> <span class="n">q</span> <span class="p">=</span> <span class="n">QueryFactory</span><span class="p">.</span><span class="n">make</span><span class="p">();</span>
+   <span class="n">q</span><span class="p">.</span><span class="n">setQueryPattern</span><span class="p">(</span><span class="n">body</span><span class="p">);</span>                               <span class="o">//</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">body</span> <span class="n">of</span> <span class="n">the</span> <span class="n">query</span> <span class="n">to</span> <span class="n">our</span> <span class="n">group</span>
+   <span class="n">q</span><span class="p">.</span><span class="n">setQuerySelectType</span><span class="p">();</span>                                <span class="o">//</span> <span class="n">Make</span> <span class="n">it</span> <span class="n">a</span> <span class="n">select</span> <span class="n">query</span>
+   <span class="n">q</span><span class="p">.</span><span class="n">addResultVar</span><span class="p">(</span>&quot;<span class="n">s</span>&quot;<span class="p">);</span>                                   <span class="o">//</span> <span class="n">Select</span> ?<span class="n">s</span>
 </pre></div>
 
 
 <p>Now the algebra:</p>
 <div class="codehilite"><pre>   <span class="n">Op</span> <span class="n">op</span><span class="p">;</span>
-   <span class="n">BasicPattern</span> <span class="n">pat</span> <span class="o">=</span> <span class="k">new</span> <span class="n">BasicPattern</span><span class="p">();</span>                 <span class="sr">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">pattern</span>
-   <span class="n">pat</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">pattern</span><span class="p">);</span>                                      <span class="sr">//</span> <span class="n">Add</span> <span class="k">our</span> <span class="n">pattern</span> <span class="n">match</span>
-   <span class="n">op</span> <span class="o">=</span> <span class="k">new</span> <span class="n">OpBGP</span><span class="p">(</span><span class="n">pat</span><span class="p">);</span>                                   <span class="sr">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">BGP</span> <span class="n">from</span> <span class="n">this</span> <span class="n">pattern</span>
-   <span class="n">op</span> <span class="o">=</span> <span class="n">OpFilter</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">op</span><span class="p">);</span>                           <span class="sr">//</span> <span class="n">Filter</span> <span class="n">that</span> <span class="n">pattern</span> <span class="n">with</span> <span class="k">our</span> <span class="n">expression</span>
-   <span class="n">op</span> <span class="o">=</span> <span class="k">new</span> <span class="n">OpProject</span><span class="p">(</span><span class="n">op</span><span class="p">,</span> <span class="n">Arrays</span><span class="o">.</span><span class="n">asList</span><span class="p">(</span><span class="n">Var</span><span class="o">.</span><span class="n">alloc</span><span class="p">(</span><span class="s">&quot;s&quot;</span><span class="p">)));</span> <span class="sr">//</span> <span class="n">Reduce</span> <span class="n">to</span> <span class="n">just</span><span class="err"> </span><span class="p">?</span><span class="n">s</span>
-   <span class="n">Query</span> <span class="sx">q = </span><span class="n">OpAsQuery</span><span class="o">.</span><span class="n">asQuery</span><span class="p">(</span><span class="n">op</span><span class="p">);</span>                       <span class="sr">//</span> <span class="n">Convert</span> <span class="n">to</span> <span class="n">a</span> <span class="n">query</span>
-   <span class="n">q</span><span class="o">.</span><span class="n">setQuerySelectType</span><span class="p">();</span>                                <span class="sr">//</span> <span class="n">Make</span> <span class="n">is</span> <span class="n">a</span> <span class="nb">select</span> <span class="n">query</span>
+   <span class="n">BasicPattern</span> <span class="n">pat</span> <span class="p">=</span> <span class="n">new</span> <span class="n">BasicPattern</span><span class="p">();</span>                 <span class="o">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">pattern</span>
+   <span class="n">pat</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="n">pattern</span><span class="p">);</span>                                      <span class="o">//</span> <span class="n">Add</span> <span class="n">our</span> <span class="n">pattern</span> <span class="n">match</span>
+   <span class="n">op</span> <span class="p">=</span> <span class="n">new</span> <span class="n">OpBGP</span><span class="p">(</span><span class="n">pat</span><span class="p">);</span>                                   <span class="o">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">BGP</span> <span class="n">from</span> <span class="n">this</span> <span class="n">pattern</span>
+   <span class="n">op</span> <span class="p">=</span> <span class="n">OpFilter</span><span class="p">.</span><span class="n">filter</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">op</span><span class="p">);</span>                           <span class="o">//</span> <span class="n">Filter</span> <span class="n">that</span> <span class="n">pattern</span> <span class="n">with</span> <span class="n">our</span> <span class="n">expression</span>
+   <span class="n">op</span> <span class="p">=</span> <span class="n">new</span> <span class="n">OpProject</span><span class="p">(</span><span class="n">op</span><span class="p">,</span> <span class="n">Arrays</span><span class="p">.</span><span class="n">asList</span><span class="p">(</span><span class="n">Var</span><span class="p">.</span><span class="n">alloc</span><span class="p">(</span>&quot;<span class="n">s</span>&quot;<span class="p">)));</span> <span class="o">//</span> <span class="n">Reduce</span> <span class="n">to</span> <span class="n">just</span> ?<span class="n">s</span>
+   <span class="n">Query</span> <span class="n">q</span> <span class="p">=</span> <span class="n">OpAsQuery</span><span class="p">.</span><span class="n">asQuery</span><span class="p">(</span><span class="n">op</span><span class="p">);</span>                       <span class="o">//</span> <span class="n">Convert</span> <span class="n">to</span> <span class="n">a</span> <span class="n">query</span>
+   <span class="n">q</span><span class="p">.</span><span class="n">setQuerySelectType</span><span class="p">();</span>                                <span class="o">//</span> <span class="n">Make</span> <span class="n">is</span> <span class="n">a</span> <span class="n">select</span> <span class="n">query</span>
 </pre></div>
 
 
@@ -278,19 +278,19 @@ simplify and optimise query execution.</
 <p>In Research Revealed I wrote some code to take a number of constraints
 and produce a query. There were a number of ways to do this, but one way
 I found was to generate ops from each constraint and join the results:</p>
-<div class="codehilite"><pre>   <span class="k">for</span> <span class="p">(</span><span class="n">Constraint</span> <span class="n">con:</span> <span class="n">cons</span><span class="p">)</span> <span class="p">{</span>
-       <span class="n">op</span> <span class="o">=</span> <span class="n">OpJoin</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">op</span><span class="p">,</span> <span class="n">consToOp</span><span class="p">(</span><span class="n">cons</span><span class="p">));</span> <span class="sr">//</span> <span class="nb">join</span>
+<div class="codehilite"><pre>   <span class="k">for</span> <span class="p">(</span><span class="n">Constraint</span> <span class="n">con</span><span class="p">:</span> <span class="n">cons</span><span class="p">)</span> <span class="p">{</span>
+       <span class="n">op</span> <span class="p">=</span> <span class="n">OpJoin</span><span class="p">.</span><span class="n">create</span><span class="p">(</span><span class="n">op</span><span class="p">,</span> <span class="n">consToOp</span><span class="p">(</span><span class="n">cons</span><span class="p">));</span> <span class="o">//</span> <span class="n">join</span>
    <span class="p">}</span>
 </pre></div>
 
 
 <p>The result was a perfectly correct mess, which is only barely readable
 with just three conditions:</p>
-<div class="codehilite"><pre>   <span class="p">(</span><span class="nb">join</span>
-       <span class="p">(</span><span class="nb">join</span>
-           <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span><span class="err"> </span><span class="p">?</span><span class="n">o0</span> <span class="mi">20</span><span class="p">)</span> <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span><span class="err"> </span><span class="p">?</span><span class="n">s</span> <span class="sr">&lt;urn:ex:prop0&gt;</span><span class="err"> </span><span class="p">?</span><span class="n">o0</span><span class="p">)))</span>
-           <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span><span class="err"> </span><span class="p">?</span><span class="n">o1</span> <span class="mi">20</span><span class="p">)</span> <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span><span class="err"> </span><span class="p">?</span><span class="n">s</span> <span class="sr">&lt;urn:ex:prop1&gt;</span><span class="err"> </span><span class="p">?</span><span class="n">o1</span><span class="p">))))</span>
-       <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span><span class="err"> </span><span class="p">?</span><span class="n">o2</span> <span class="mi">20</span><span class="p">)</span> <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span><span class="err"> </span><span class="p">?</span><span class="n">s</span> <span class="sr">&lt;urn:ex:prop2&gt;</span><span class="err"> </span><span class="p">?</span><span class="n">o2</span><span class="p">))))</span>
+<div class="codehilite"><pre>   <span class="p">(</span><span class="n">join</span>
+       <span class="p">(</span><span class="n">join</span>
+           <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span> ?<span class="n">o0</span> 20<span class="p">)</span> <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">urn</span><span class="p">:</span><span class="n">ex</span><span class="p">:</span><span class="n">prop0</span><span class="o">&gt;</span> ?<span class="n">o0</span><span class="p">)))</span>
+           <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span> ?<span class="n">o1</span> 20<span class="p">)</span> <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">urn</span><span class="p">:</span><span class="n">ex</span><span class="p">:</span><span class="n">prop1</span><span class="o">&gt;</span> ?<span class="n">o1</span><span class="p">))))</span>
+       <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span> ?<span class="n">o2</span> 20<span class="p">)</span> <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">urn</span><span class="p">:</span><span class="n">ex</span><span class="p">:</span><span class="n">prop2</span><span class="o">&gt;</span> ?<span class="n">o2</span><span class="p">))))</span>
 </pre></div>
 
 
@@ -299,27 +299,27 @@ readable by moving the filters out, and 
 can do this with the following <code>Transform</code>:</p>
 <div class="codehilite"><pre>   <span class="n">class</span> <span class="n">QueryCleaner</span> <span class="n">extends</span> <span class="n">TransformBase</span>
    <span class="p">{</span>
-       <span class="nv">@Override</span>
-       <span class="n">public</span> <span class="n">Op</span> <span class="n">transform</span><span class="p">(</span><span class="n">OpJoin</span> <span class="nb">join</span><span class="p">,</span> <span class="n">Op</span> <span class="n">left</span><span class="p">,</span> <span class="n">Op</span> <span class="n">right</span><span class="p">)</span> <span class="p">{</span>
-           <span class="sr">//</span> <span class="n">Bail</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">of</span> <span class="n">the</span> <span class="n">right</span> <span class="n">form</span>
-           <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="n">left</span> <span class="n">instanceof</span> <span class="n">OpFilter</span> <span class="o">&amp;&amp;</span> <span class="n">right</span> <span class="n">instanceof</span> <span class="n">OpFilter</span><span class="p">))</span> <span class="k">return</span> <span class="nb">join</span><span class="p">;</span>
-           <span class="n">OpFilter</span> <span class="n">leftF</span> <span class="o">=</span> <span class="p">(</span><span class="n">OpFilter</span><span class="p">)</span> <span class="n">left</span><span class="p">;</span>
-           <span class="n">OpFilter</span> <span class="n">rightF</span> <span class="o">=</span> <span class="p">(</span><span class="n">OpFilter</span><span class="p">)</span> <span class="n">right</span><span class="p">;</span>
-
-           <span class="sr">//</span> <span class="n">Add</span> <span class="n">all</span> <span class="n">of</span> <span class="n">the</span> <span class="n">triple</span> <span class="n">matches</span> <span class="n">to</span> <span class="n">the</span> <span class="n">LHS</span> <span class="n">BGP</span>
-           <span class="p">((</span><span class="n">OpBGP</span><span class="p">)</span> <span class="n">leftF</span><span class="o">.</span><span class="n">getSubOp</span><span class="p">())</span><span class="o">.</span><span class="n">getPattern</span><span class="p">()</span><span class="o">.</span><span class="n">addAll</span><span class="p">(((</span><span class="n">OpBGP</span><span class="p">)</span> <span class="n">rightF</span><span class="o">.</span><span class="n">getSubOp</span><span class="p">())</span><span class="o">.</span><span class="n">getPattern</span><span class="p">());</span>
-           <span class="sr">//</span> <span class="n">Add</span> <span class="n">the</span> <span class="n">RHS</span> <span class="n">filter</span> <span class="n">to</span> <span class="n">the</span> <span class="n">LHS</span>
-           <span class="n">leftF</span><span class="o">.</span><span class="n">getExprs</span><span class="p">()</span><span class="o">.</span><span class="n">addAll</span><span class="p">(</span><span class="n">rightF</span><span class="o">.</span><span class="n">getExprs</span><span class="p">());</span>
+       <span class="p">@</span><span class="n">Override</span>
+       <span class="n">public</span> <span class="n">Op</span> <span class="n">transform</span><span class="p">(</span><span class="n">OpJoin</span> <span class="n">join</span><span class="p">,</span> <span class="n">Op</span> <span class="n">left</span><span class="p">,</span> <span class="n">Op</span> <span class="n">right</span><span class="p">)</span> <span class="p">{</span>
+           <span class="o">//</span> <span class="n">Bail</span> <span class="k">if</span> <span class="n">not</span> <span class="n">of</span> <span class="n">the</span> <span class="n">right</span> <span class="n">form</span>
+           <span class="k">if</span> <span class="p">(</span>!<span class="p">(</span><span class="n">left</span> <span class="n">instanceof</span> <span class="n">OpFilter</span> <span class="o">&amp;&amp;</span> <span class="n">right</span> <span class="n">instanceof</span> <span class="n">OpFilter</span><span class="p">))</span> <span class="k">return</span> <span class="n">join</span><span class="p">;</span>
+           <span class="n">OpFilter</span> <span class="n">leftF</span> <span class="p">=</span> <span class="p">(</span><span class="n">OpFilter</span><span class="p">)</span> <span class="n">left</span><span class="p">;</span>
+           <span class="n">OpFilter</span> <span class="n">rightF</span> <span class="p">=</span> <span class="p">(</span><span class="n">OpFilter</span><span class="p">)</span> <span class="n">right</span><span class="p">;</span>
+
+           <span class="o">//</span> <span class="n">Add</span> <span class="n">all</span> <span class="n">of</span> <span class="n">the</span> <span class="n">triple</span> <span class="n">matches</span> <span class="n">to</span> <span class="n">the</span> <span class="n">LHS</span> <span class="n">BGP</span>
+           <span class="p">((</span><span class="n">OpBGP</span><span class="p">)</span> <span class="n">leftF</span><span class="p">.</span><span class="n">getSubOp</span><span class="p">()).</span><span class="n">getPattern</span><span class="p">().</span><span class="n">addAll</span><span class="p">(((</span><span class="n">OpBGP</span><span class="p">)</span> <span class="n">rightF</span><span class="p">.</span><span class="n">getSubOp</span><span class="p">()).</span><span class="n">getPattern</span><span class="p">());</span>
+           <span class="o">//</span> <span class="n">Add</span> <span class="n">the</span> <span class="n">RHS</span> <span class="n">filter</span> <span class="n">to</span> <span class="n">the</span> <span class="n">LHS</span>
+           <span class="n">leftF</span><span class="p">.</span><span class="n">getExprs</span><span class="p">().</span><span class="n">addAll</span><span class="p">(</span><span class="n">rightF</span><span class="p">.</span><span class="n">getExprs</span><span class="p">());</span>
            <span class="k">return</span> <span class="n">leftF</span><span class="p">;</span>
        <span class="p">}</span>
    <span class="p">}</span>
-   <span class="o">...</span>
-   <span class="n">op</span> <span class="o">=</span> <span class="n">Transformer</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="k">new</span> <span class="n">QueryCleaner</span><span class="p">(),</span> <span class="n">op</span><span class="p">);</span> <span class="sr">//</span> <span class="n">clean</span> <span class="n">query</span>
+   <span class="p">...</span>
+   <span class="n">op</span> <span class="p">=</span> <span class="n">Transformer</span><span class="p">.</span><span class="n">transform</span><span class="p">(</span><span class="n">new</span> <span class="n">QueryCleaner</span><span class="p">(),</span> <span class="n">op</span><span class="p">);</span> <span class="o">//</span> <span class="n">clean</span> <span class="n">query</span>
 </pre></div>
 
 
 <p>This looks for joins of the form:</p>
-<div class="codehilite"><pre>   <span class="p">(</span><span class="nb">join</span>
+<div class="codehilite"><pre>   <span class="p">(</span><span class="n">join</span>
        <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="n">exp1</span><span class="p">)</span> <span class="p">(</span><span class="n">bgp1</span><span class="p">))</span>
        <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="n">exp2</span><span class="p">)</span> <span class="p">(</span><span class="n">bgp2</span><span class="p">)))</span>
 </pre></div>
@@ -332,11 +332,11 @@ can do this with the following <code>Tra
 
 <p>As we go through the original query all joins are removed, and the
 result is:</p>
-<div class="codehilite"><pre>   <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="n">exprlist</span> <span class="p">(</span><span class="o">&lt;</span><span class="err"> </span><span class="p">?</span><span class="n">o0</span> <span class="mi">20</span><span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span><span class="err"> </span><span class="p">?</span><span class="n">o1</span> <span class="mi">20</span><span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span><span class="err"> </span><span class="p">?</span><span class="n">o2</span> <span class="mi">20</span><span class="p">))</span>
+<div class="codehilite"><pre>   <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="n">exprlist</span> <span class="p">(</span><span class="o">&lt;</span> ?<span class="n">o0</span> 20<span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span> ?<span class="n">o1</span> 20<span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span> ?<span class="n">o2</span> 20<span class="p">))</span>
        <span class="p">(</span><span class="n">bgp</span>
-           <span class="p">(</span><span class="n">triple</span><span class="err"> </span><span class="p">?</span><span class="n">s</span> <span class="sr">&lt;urn:ex:prop0&gt;</span><span class="err"> </span><span class="p">?</span><span class="n">o0</span><span class="p">)</span>
-           <span class="p">(</span><span class="n">triple</span><span class="err"> </span><span class="p">?</span><span class="n">s</span> <span class="sr">&lt;urn:ex:prop1&gt;</span><span class="err"> </span><span class="p">?</span><span class="n">o1</span><span class="p">)</span>
-           <span class="p">(</span><span class="n">triple</span><span class="err"> </span><span class="p">?</span><span class="n">s</span> <span class="sr">&lt;urn:ex:prop2&gt;</span><span class="err"> </span><span class="p">?</span><span class="n">o2</span><span class="p">)</span>
+           <span class="p">(</span><span class="n">triple</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">urn</span><span class="p">:</span><span class="n">ex</span><span class="p">:</span><span class="n">prop0</span><span class="o">&gt;</span> ?<span class="n">o0</span><span class="p">)</span>
+           <span class="p">(</span><span class="n">triple</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">urn</span><span class="p">:</span><span class="n">ex</span><span class="p">:</span><span class="n">prop1</span><span class="o">&gt;</span> ?<span class="n">o1</span><span class="p">)</span>
+           <span class="p">(</span><span class="n">triple</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">urn</span><span class="p">:</span><span class="n">ex</span><span class="p">:</span><span class="n">prop2</span><span class="o">&gt;</span> ?<span class="n">o2</span><span class="p">)</span>
    <span class="p">))</span>
 </pre></div>
 

Modified: websites/staging/jena/trunk/content/documentation/query/manipulating_sparql_using_arq_pt.html
==============================================================================
--- websites/staging/jena/trunk/content/documentation/query/manipulating_sparql_using_arq_pt.html (original)
+++ websites/staging/jena/trunk/content/documentation/query/manipulating_sparql_using_arq_pt.html Thu Jun 20 10:18:34 2013
@@ -166,16 +166,16 @@ a API ARQ é sua amiga na longa jornad
 blog</a></em></p>
 <h2 id="inserindo-valores-comandos-simples-prontos">Inserindo valores (comandos simples prontos)</h2>
 <p>Vamos começar com algo simples. Suponha que nós queiramos restringir a query a seguir a uma pessoa (person) em particular:</p>
-<div class="codehilite"><pre>   <span class="nb">select</span> <span class="o">*</span> <span class="p">{</span> <span class="p">?</span><span class="n">person</span> <span class="sr">&lt;http://xmlns.com/foaf/0.1/name&gt;</span> <span class="p">?</span><span class="n">name</span> <span class="p">}</span>
+<div class="codehilite"><pre>   <span class="n">select</span> <span class="o">*</span> <span class="p">{</span> ?<span class="n">person</span> <span class="o">&lt;</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">name</span><span class="o">&gt;</span> ?<span class="n">name</span> <span class="p">}</span>
 </pre></div>
 
 
 <p><code>String#replaceAll</code> deveria funcionar, mas existe um jeito mais seguro. 
 <code>QueryExecutionFactory</code> em muitos casos, permite que você alimente uma  <code>QuerySolution</code>
 com a qual você pode prefixar valores.</p>
-<div class="codehilite"><pre>   <span class="n">QuerySolutionMap</span> <span class="n">initialBinding</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QuerySolutionMap</span><span class="p">();</span>
-   <span class="n">initialBinding</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">,</span> <span class="n">personResource</span><span class="p">);</span>
-   <span class="n">qe</span> <span class="o">=</span> <span class="n">QueryExecutionFactory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">initialBinding</span><span class="p">);</span>
+<div class="codehilite"><pre>   <span class="n">QuerySolutionMap</span> <span class="n">initialBinding</span> <span class="p">=</span> <span class="n">new</span> <span class="n">QuerySolutionMap</span><span class="p">();</span>
+   <span class="n">initialBinding</span><span class="p">.</span><span class="n">add</span><span class="p">(</span>&quot;<span class="n">name</span>&quot;<span class="p">,</span> <span class="n">personResource</span><span class="p">);</span>
+   <span class="n">qe</span> <span class="p">=</span> <span class="n">QueryExecutionFactory</span><span class="p">.</span><span class="n">create</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">initialBinding</span><span class="p">);</span>
 </pre></div>
 
 
@@ -187,22 +187,22 @@ citações. (Esteja ciente de que is
 apenas a execução daquela query. Então, como nós realmente alteramos queries?</p>
 <p>ARQ provê duas maneiras de se trabalhar com queries: no nível de sintaxe  (<code>Query</code>
 and <code>Element</code>), ou no nível algébrico  (<code>Op</code>). A distinção entre eles fica claro com os filtros:</p>
-<div class="codehilite"><pre>   <span class="n">SELECT</span> <span class="p">?</span><span class="n">s</span> <span class="p">{</span> <span class="p">?</span><span class="n">s</span> <span class="sr">&lt;http://example.com/val&gt;</span> <span class="p">?</span><span class="n">val</span> <span class="o">.</span> <span class="n">FILTER</span> <span class="p">(</span> <span class="p">?</span><span class="n">val</span> <span class="o">&lt;</span> <span class="mi">20</span> <span class="p">)</span> <span class="p">}</span>
+<div class="codehilite"><pre>   <span class="n">SELECT</span> ?<span class="n">s</span> <span class="p">{</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">val</span><span class="o">&gt;</span> ?<span class="n">val</span> <span class="p">.</span> <span class="n">FILTER</span> <span class="p">(</span> ?<span class="n">val</span> <span class="o">&lt;</span> 20 <span class="p">)</span> <span class="p">}</span>
 </pre></div>
 
 
 <p>Se você trabalha no nível de sintaxe, você irá descobrir que isso (em pseudo código) se parece com : </p>
-<div class="codehilite"><pre>   <span class="p">(</span><span class="n">GROUP</span> <span class="p">(</span><span class="n">PATTERN</span> <span class="p">(</span> <span class="p">?</span><span class="n">s</span> <span class="sr">&lt;http://example.com/val&gt;</span> <span class="p">?</span><span class="n">val</span> <span class="p">))</span> <span class="p">(</span><span class="n">FILTER</span> <span class="p">(</span> <span class="o">&lt;</span> <span class="p">?</span><span class="n">val</span> <span class="mi">20</span> <span class="p">)</span> <span class="p">))</span>
+<div class="codehilite"><pre>   <span class="p">(</span><span class="n">GROUP</span> <span class="p">(</span><span class="n">PATTERN</span> <span class="p">(</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">val</span><span class="o">&gt;</span> ?<span class="n">val</span> <span class="p">))</span> <span class="p">(</span><span class="n">FILTER</span> <span class="p">(</span> <span class="o">&lt;</span> ?<span class="n">val</span> 20 <span class="p">)</span> <span class="p">))</span>
 </pre></div>
 
 
 <p>Isto é, existe um grupo contendo um padrão triplo e um filtro, do mesmo jeito que você vê na query. 
 A álgebra é diferente e nós podemos vê-la usando  <code>arq.qparse --print op</code></p>
-<div class="codehilite"><pre>   <span class="nv">$</span> <span class="nv">java</span> <span class="n">arq</span><span class="o">.</span><span class="n">qparse</span> <span class="o">--</span><span class="k">print</span> <span class="n">op</span> <span class="s">&#39;SELECT ?s { ?s &lt;http://example.com/val&gt; ?val . FILTER ( ?val &lt; 20 ) }&#39;</span>
-   <span class="p">(</span><span class="n">base</span> <span class="sr">&lt;file:///...&gt;</span>
-       <span class="p">(</span><span class="n">project</span> <span class="p">(?</span><span class="n">s</span><span class="p">)</span>
-           <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span> <span class="p">?</span><span class="n">val</span> <span class="mi">20</span><span class="p">)</span>
-               <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span> <span class="p">?</span><span class="n">s</span> <span class="sr">&lt;http://example.com/val&gt;</span> <span class="p">?</span><span class="n">val</span><span class="p">)))))</span>
+<div class="codehilite"><pre>   $ <span class="n">java</span> <span class="n">arq</span><span class="p">.</span><span class="n">qparse</span> <span class="o">--</span><span class="n">print</span> <span class="n">op</span> <span class="s">&#39;SELECT ?s { ?s &lt;http://example.com/val&gt; ?val . FILTER ( ?val &lt; 20 ) }&#39;</span>
+   <span class="p">(</span><span class="n">base</span> <span class="o">&lt;</span><span class="n">file</span><span class="p">:</span><span class="o">///</span><span class="p">...</span><span class="o">&gt;</span>
+       <span class="p">(</span><span class="n">project</span> <span class="p">(</span>?<span class="n">s</span><span class="p">)</span>
+           <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span> ?<span class="n">val</span> 20<span class="p">)</span>
+               <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">val</span><span class="o">&gt;</span> ?<span class="n">val</span><span class="p">)))))</span>
 </pre></div>
 
 
@@ -210,40 +210,40 @@ A álgebra é diferente e nós pod
 está filtrando o padrão.</p>
 <p>Vamos criar esta query do zero usando ARQ. Nós começamos com algumas partes comuns: a tripla a ser comparada 
 e a expressão a ser filtrada.</p>
-<div class="codehilite"><pre>   <span class="sr">//</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="o">.</span>
-   <span class="n">Triple</span> <span class="n">pattern</span> <span class="o">=</span>
-       <span class="n">Triple</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">Var</span><span class="o">.</span><span class="n">alloc</span><span class="p">(</span><span class="s">&quot;s&quot;</span><span class="p">),</span> <span class="n">Var</span><span class="o">.</span><span class="n">alloc</span><span class="p">(</span><span class="s">&quot;p&quot;</span><span class="p">),</span> <span class="n">Var</span><span class="o">.</span><span class="n">alloc</span><span class="p">(</span><span class="s">&quot;o&quot;</span><span class="p">));</span>
-   <span class="sr">//</span> <span class="p">(</span> <span class="p">?</span><span class="n">s</span> <span class="o">&lt;</span> <span class="mi">20</span> <span class="p">)</span>
-   <span class="n">Expr</span> <span class="n">e</span> <span class="o">=</span> <span class="k">new</span> <span class="n">E_LessThan</span><span class="p">(</span><span class="k">new</span> <span class="n">ExprVar</span><span class="p">(</span><span class="s">&quot;s&quot;</span><span class="p">),</span> <span class="k">new</span> <span class="n">NodeValueInteger</span><span class="p">(</span><span class="mi">20</span><span class="p">));</span>
+<div class="codehilite"><pre>   <span class="o">//</span> ?<span class="n">s</span> ?<span class="n">p</span> ?<span class="n">o</span> <span class="p">.</span>
+   <span class="n">Triple</span> <span class="n">pattern</span> <span class="p">=</span>
+       <span class="n">Triple</span><span class="p">.</span><span class="n">create</span><span class="p">(</span><span class="n">Var</span><span class="p">.</span><span class="n">alloc</span><span class="p">(</span>&quot;<span class="n">s</span>&quot;<span class="p">),</span> <span class="n">Var</span><span class="p">.</span><span class="n">alloc</span><span class="p">(</span>&quot;<span class="n">p</span>&quot;<span class="p">),</span> <span class="n">Var</span><span class="p">.</span><span class="n">alloc</span><span class="p">(</span>&quot;<span class="n">o</span>&quot;<span class="p">));</span>
+   <span class="o">//</span> <span class="p">(</span> ?<span class="n">s</span> <span class="o">&lt;</span> 20 <span class="p">)</span>
+   <span class="n">Expr</span> <span class="n">e</span> <span class="p">=</span> <span class="n">new</span> <span class="n">E_LessThan</span><span class="p">(</span><span class="n">new</span> <span class="n">ExprVar</span><span class="p">(</span>&quot;<span class="n">s</span>&quot;<span class="p">),</span> <span class="n">new</span> <span class="n">NodeValueInteger</span><span class="p">(</span>20<span class="p">));</span>
 </pre></div>
 
 
 <p><code>Triple</code> deveria ser familiar de Jena.  <code>Var</code> é uma extensão de <code>Node</code>
 para variáveis. <code>Expr</code> é a interface raíz para expressões, aquelas coisas que aparecem em <code>FILTER</code> and <code>LET</code>.</p>
 <p>Primeiro, o caminho da sintaxe:</p>
-<div class="codehilite"><pre>   <span class="n">ElementTriplesBlock</span> <span class="n">block</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ElementTriplesBlock</span><span class="p">();</span> <span class="sr">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">BGP</span>
-   <span class="n">block</span><span class="o">.</span><span class="n">addTriple</span><span class="p">(</span><span class="n">pattern</span><span class="p">);</span>                              <span class="sr">//</span> <span class="n">Add</span> <span class="k">our</span> <span class="n">pattern</span> <span class="n">match</span>
-   <span class="n">ElementFilter</span> <span class="n">filter</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ElementFilter</span><span class="p">(</span><span class="n">e</span><span class="p">);</span>           <span class="sr">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">filter</span> <span class="n">matching</span> <span class="n">the</span> <span class="n">expression</span>
-   <span class="n">ElementGroup</span> <span class="n">body</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ElementGroup</span><span class="p">();</span>                <span class="sr">//</span> <span class="n">Group</span> <span class="k">our</span> <span class="n">pattern</span> <span class="n">match</span> <span class="ow">and</span> <span class="n">filter</span>
-   <span class="n">body</span><span class="o">.</span><span class="n">addElement</span><span class="p">(</span><span class="n">block</span><span class="p">);</span>
-   <span class="n">body</span><span class="o">.</span><span class="n">addElement</span><span class="p">(</span><span class="n">filter</span><span class="p">);</span>
-
-   <span class="n">Query</span> <span class="sx">q = </span><span class="n">QueryFactory</span><span class="o">.</span><span class="n">make</span><span class="p">();</span>
-   <span class="sx">q.setQueryPattern(body);                               // Set the body of the query to our group</span>
-<span class="sx">   q.</span><span class="n">setQuerySelectType</span><span class="p">();</span>                                <span class="sr">//</span> <span class="n">Make</span> <span class="n">it</span> <span class="n">a</span> <span class="nb">select</span> <span class="n">query</span>
-   <span class="n">q</span><span class="o">.</span><span class="n">addResultVar</span><span class="p">(</span><span class="s">&quot;s&quot;</span><span class="p">);</span>                                   <span class="sr">//</span> <span class="n">Select</span> <span class="p">?</span><span class="n">s</span>
+<div class="codehilite"><pre>   <span class="n">ElementTriplesBlock</span> <span class="n">block</span> <span class="p">=</span> <span class="n">new</span> <span class="n">ElementTriplesBlock</span><span class="p">();</span> <span class="o">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">BGP</span>
+   <span class="n">block</span><span class="p">.</span><span class="n">addTriple</span><span class="p">(</span><span class="n">pattern</span><span class="p">);</span>                              <span class="o">//</span> <span class="n">Add</span> <span class="n">our</span> <span class="n">pattern</span> <span class="n">match</span>
+   <span class="n">ElementFilter</span> <span class="n">filter</span> <span class="p">=</span> <span class="n">new</span> <span class="n">ElementFilter</span><span class="p">(</span><span class="n">e</span><span class="p">);</span>           <span class="o">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">filter</span> <span class="n">matching</span> <span class="n">the</span> <span class="n">expression</span>
+   <span class="n">ElementGroup</span> <span class="n">body</span> <span class="p">=</span> <span class="n">new</span> <span class="n">ElementGroup</span><span class="p">();</span>                <span class="o">//</span> <span class="n">Group</span> <span class="n">our</span> <span class="n">pattern</span> <span class="n">match</span> <span class="n">and</span> <span class="n">filter</span>
+   <span class="n">body</span><span class="p">.</span><span class="n">addElement</span><span class="p">(</span><span class="n">block</span><span class="p">);</span>
+   <span class="n">body</span><span class="p">.</span><span class="n">addElement</span><span class="p">(</span><span class="n">filter</span><span class="p">);</span>
+
+   <span class="n">Query</span> <span class="n">q</span> <span class="p">=</span> <span class="n">QueryFactory</span><span class="p">.</span><span class="n">make</span><span class="p">();</span>
+   <span class="n">q</span><span class="p">.</span><span class="n">setQueryPattern</span><span class="p">(</span><span class="n">body</span><span class="p">);</span>                               <span class="o">//</span> <span class="n">Set</span> <span class="n">the</span> <span class="n">body</span> <span class="n">of</span> <span class="n">the</span> <span class="n">query</span> <span class="n">to</span> <span class="n">our</span> <span class="n">group</span>
+   <span class="n">q</span><span class="p">.</span><span class="n">setQuerySelectType</span><span class="p">();</span>                                <span class="o">//</span> <span class="n">Make</span> <span class="n">it</span> <span class="n">a</span> <span class="n">select</span> <span class="n">query</span>
+   <span class="n">q</span><span class="p">.</span><span class="n">addResultVar</span><span class="p">(</span>&quot;<span class="n">s</span>&quot;<span class="p">);</span>                                   <span class="o">//</span> <span class="n">Select</span> ?<span class="n">s</span>
 </pre></div>
 
 
 <p>Agora a álgebra:</p>
 <div class="codehilite"><pre>   <span class="n">Op</span> <span class="n">op</span><span class="p">;</span>
-   <span class="n">BasicPattern</span> <span class="n">pat</span> <span class="o">=</span> <span class="k">new</span> <span class="n">BasicPattern</span><span class="p">();</span>                 <span class="sr">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">pattern</span>
-   <span class="n">pat</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">pattern</span><span class="p">);</span>                                      <span class="sr">//</span> <span class="n">Add</span> <span class="k">our</span> <span class="n">pattern</span> <span class="n">match</span>
-   <span class="n">op</span> <span class="o">=</span> <span class="k">new</span> <span class="n">OpBGP</span><span class="p">(</span><span class="n">pat</span><span class="p">);</span>                                   <span class="sr">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">BGP</span> <span class="n">from</span> <span class="n">this</span> <span class="n">pattern</span>
-   <span class="n">op</span> <span class="o">=</span> <span class="n">OpFilter</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">op</span><span class="p">);</span>                           <span class="sr">//</span> <span class="n">Filter</span> <span class="n">that</span> <span class="n">pattern</span> <span class="n">with</span> <span class="k">our</span> <span class="n">expression</span>
-   <span class="n">op</span> <span class="o">=</span> <span class="k">new</span> <span class="n">OpProject</span><span class="p">(</span><span class="n">op</span><span class="p">,</span> <span class="n">Arrays</span><span class="o">.</span><span class="n">asList</span><span class="p">(</span><span class="n">Var</span><span class="o">.</span><span class="n">alloc</span><span class="p">(</span><span class="s">&quot;s&quot;</span><span class="p">)));</span> <span class="sr">//</span> <span class="n">Reduce</span> <span class="n">to</span> <span class="n">just</span> <span class="p">?</span><span class="n">s</span>
-   <span class="n">Query</span> <span class="sx">q = </span><span class="n">OpAsQuery</span><span class="o">.</span><span class="n">asQuery</span><span class="p">(</span><span class="n">op</span><span class="p">);</span>                       <span class="sr">//</span> <span class="n">Convert</span> <span class="n">to</span> <span class="n">a</span> <span class="n">query</span>
-   <span class="n">q</span><span class="o">.</span><span class="n">setQuerySelectType</span><span class="p">();</span>                                <span class="sr">//</span> <span class="n">Make</span> <span class="n">is</span> <span class="n">a</span> <span class="nb">select</span> <span class="n">query</span>
+   <span class="n">BasicPattern</span> <span class="n">pat</span> <span class="p">=</span> <span class="n">new</span> <span class="n">BasicPattern</span><span class="p">();</span>                 <span class="o">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">pattern</span>
+   <span class="n">pat</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="n">pattern</span><span class="p">);</span>                                      <span class="o">//</span> <span class="n">Add</span> <span class="n">our</span> <span class="n">pattern</span> <span class="n">match</span>
+   <span class="n">op</span> <span class="p">=</span> <span class="n">new</span> <span class="n">OpBGP</span><span class="p">(</span><span class="n">pat</span><span class="p">);</span>                                   <span class="o">//</span> <span class="n">Make</span> <span class="n">a</span> <span class="n">BGP</span> <span class="n">from</span> <span class="n">this</span> <span class="n">pattern</span>
+   <span class="n">op</span> <span class="p">=</span> <span class="n">OpFilter</span><span class="p">.</span><span class="n">filter</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">op</span><span class="p">);</span>                           <span class="o">//</span> <span class="n">Filter</span> <span class="n">that</span> <span class="n">pattern</span> <span class="n">with</span> <span class="n">our</span> <span class="n">expression</span>
+   <span class="n">op</span> <span class="p">=</span> <span class="n">new</span> <span class="n">OpProject</span><span class="p">(</span><span class="n">op</span><span class="p">,</span> <span class="n">Arrays</span><span class="p">.</span><span class="n">asList</span><span class="p">(</span><span class="n">Var</span><span class="p">.</span><span class="n">alloc</span><span class="p">(</span>&quot;<span class="n">s</span>&quot;<span class="p">)));</span> <span class="o">//</span> <span class="n">Reduce</span> <span class="n">to</span> <span class="n">just</span> ?<span class="n">s</span>
+   <span class="n">Query</span> <span class="n">q</span> <span class="p">=</span> <span class="n">OpAsQuery</span><span class="p">.</span><span class="n">asQuery</span><span class="p">(</span><span class="n">op</span><span class="p">);</span>                       <span class="o">//</span> <span class="n">Convert</span> <span class="n">to</span> <span class="n">a</span> <span class="n">query</span>
+   <span class="n">q</span><span class="p">.</span><span class="n">setQuerySelectType</span><span class="p">();</span>                                <span class="o">//</span> <span class="n">Make</span> <span class="n">is</span> <span class="n">a</span> <span class="n">select</span> <span class="n">query</span>
 </pre></div>
 
 
@@ -262,24 +262,22 @@ então dê um passo a frente e use <
 <h2 id="transformando-a-algebra">Transformando a Álgebra</h2>
 <p>A primeira vista, não há vantagens óbvias em usar a álgebra. O real poder fica claro com o uso de 
 transformers (transformações), que lhe permitem reorganizar uma álgebra completamente. ARQ faz amplo 
-uso de transformers para simplificar e aperfeiçoar execuções de query.<br />
-</p>
+uso de transformers para simplificar e aperfeiçoar execuções de query.  </p>
 <p>Em Research Revealed (Pesquisa revelada, em tradução livre), eu escrevi algum código para pegar certo 
 número de constraints (constantes) e produzir uma query. Havia várias formas de se fazer isto, mas o 
-jeito que eu achei foi gerar ops de cada constraint e juntar o resultado.<br />
-</p>
-<div class="codehilite"><pre>   <span class="k">for</span> <span class="p">(</span><span class="n">Constraint</span> <span class="n">con:</span> <span class="n">cons</span><span class="p">)</span> <span class="p">{</span>
-       <span class="n">op</span> <span class="o">=</span> <span class="n">OpJoin</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">op</span><span class="p">,</span> <span class="n">consToOp</span><span class="p">(</span><span class="n">cons</span><span class="p">));</span> <span class="sr">//</span> <span class="nb">join</span>
+jeito que eu achei foi gerar ops de cada constraint e juntar o resultado.  </p>
+<div class="codehilite"><pre>   <span class="k">for</span> <span class="p">(</span><span class="n">Constraint</span> <span class="n">con</span><span class="p">:</span> <span class="n">cons</span><span class="p">)</span> <span class="p">{</span>
+       <span class="n">op</span> <span class="p">=</span> <span class="n">OpJoin</span><span class="p">.</span><span class="n">create</span><span class="p">(</span><span class="n">op</span><span class="p">,</span> <span class="n">consToOp</span><span class="p">(</span><span class="n">cons</span><span class="p">));</span> <span class="o">//</span> <span class="n">join</span>
    <span class="p">}</span>
 </pre></div>
 
 
 <p>O resultado foi uma bagunça incrivelmente correta, que é remotamente compreensível em apenas três condições:</p>
-<div class="codehilite"><pre>   <span class="p">(</span><span class="nb">join</span>
-       <span class="p">(</span><span class="nb">join</span>
-           <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span> <span class="p">?</span><span class="n">o0</span> <span class="mi">20</span><span class="p">)</span> <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span> <span class="p">?</span><span class="n">s</span> <span class="sr">&lt;urn:ex:prop0&gt;</span> <span class="p">?</span><span class="n">o0</span><span class="p">)))</span>
-           <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span> <span class="p">?</span><span class="n">o1</span> <span class="mi">20</span><span class="p">)</span> <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span> <span class="p">?</span><span class="n">s</span> <span class="sr">&lt;urn:ex:prop1&gt;</span> <span class="p">?</span><span class="n">o1</span><span class="p">))))</span>
-       <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span> <span class="p">?</span><span class="n">o2</span> <span class="mi">20</span><span class="p">)</span> <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span> <span class="p">?</span><span class="n">s</span> <span class="sr">&lt;urn:ex:prop2&gt;</span> <span class="p">?</span><span class="n">o2</span><span class="p">))))</span>
+<div class="codehilite"><pre>   <span class="p">(</span><span class="n">join</span>
+       <span class="p">(</span><span class="n">join</span>
+           <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span> ?<span class="n">o0</span> 20<span class="p">)</span> <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">urn</span><span class="p">:</span><span class="n">ex</span><span class="p">:</span><span class="n">prop0</span><span class="o">&gt;</span> ?<span class="n">o0</span><span class="p">)))</span>
+           <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span> ?<span class="n">o1</span> 20<span class="p">)</span> <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">urn</span><span class="p">:</span><span class="n">ex</span><span class="p">:</span><span class="n">prop1</span><span class="o">&gt;</span> ?<span class="n">o1</span><span class="p">))))</span>
+       <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="o">&lt;</span> ?<span class="n">o2</span> 20<span class="p">)</span> <span class="p">(</span><span class="n">bgp</span> <span class="p">(</span><span class="n">triple</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">urn</span><span class="p">:</span><span class="n">ex</span><span class="p">:</span><span class="n">prop2</span><span class="o">&gt;</span> ?<span class="n">o2</span><span class="p">))))</span>
 </pre></div>
 
 
@@ -287,27 +285,27 @@ jeito que eu achei foi gerar ops de cada
  filtros e juntando (merging) os padrões triplos. Nós podemos fazer isso usando  <code>Transform</code>:</p>
 <div class="codehilite"><pre>   <span class="n">class</span> <span class="n">QueryCleaner</span> <span class="n">extends</span> <span class="n">TransformBase</span>
    <span class="p">{</span>
-       <span class="nv">@Override</span>
-       <span class="n">public</span> <span class="n">Op</span> <span class="n">transform</span><span class="p">(</span><span class="n">OpJoin</span> <span class="nb">join</span><span class="p">,</span> <span class="n">Op</span> <span class="n">left</span><span class="p">,</span> <span class="n">Op</span> <span class="n">right</span><span class="p">)</span> <span class="p">{</span>
-           <span class="sr">//</span> <span class="n">Bail</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">of</span> <span class="n">the</span> <span class="n">right</span> <span class="n">form</span>
-           <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="n">left</span> <span class="n">instanceof</span> <span class="n">OpFilter</span> <span class="o">&amp;&amp;</span> <span class="n">right</span> <span class="n">instanceof</span> <span class="n">OpFilter</span><span class="p">))</span> <span class="k">return</span> <span class="nb">join</span><span class="p">;</span>
-           <span class="n">OpFilter</span> <span class="n">leftF</span> <span class="o">=</span> <span class="p">(</span><span class="n">OpFilter</span><span class="p">)</span> <span class="n">left</span><span class="p">;</span>
-           <span class="n">OpFilter</span> <span class="n">rightF</span> <span class="o">=</span> <span class="p">(</span><span class="n">OpFilter</span><span class="p">)</span> <span class="n">right</span><span class="p">;</span>
-
-           <span class="sr">//</span> <span class="n">Add</span> <span class="n">all</span> <span class="n">of</span> <span class="n">the</span> <span class="n">triple</span> <span class="n">matches</span> <span class="n">to</span> <span class="n">the</span> <span class="n">LHS</span> <span class="n">BGP</span>
-           <span class="p">((</span><span class="n">OpBGP</span><span class="p">)</span> <span class="n">leftF</span><span class="o">.</span><span class="n">getSubOp</span><span class="p">())</span><span class="o">.</span><span class="n">getPattern</span><span class="p">()</span><span class="o">.</span><span class="n">addAll</span><span class="p">(((</span><span class="n">OpBGP</span><span class="p">)</span> <span class="n">rightF</span><span class="o">.</span><span class="n">getSubOp</span><span class="p">())</span><span class="o">.</span><span class="n">getPattern</span><span class="p">());</span>
-           <span class="sr">//</span> <span class="n">Add</span> <span class="n">the</span> <span class="n">RHS</span> <span class="n">filter</span> <span class="n">to</span> <span class="n">the</span> <span class="n">LHS</span>
-           <span class="n">leftF</span><span class="o">.</span><span class="n">getExprs</span><span class="p">()</span><span class="o">.</span><span class="n">addAll</span><span class="p">(</span><span class="n">rightF</span><span class="o">.</span><span class="n">getExprs</span><span class="p">());</span>
+       <span class="p">@</span><span class="n">Override</span>
+       <span class="n">public</span> <span class="n">Op</span> <span class="n">transform</span><span class="p">(</span><span class="n">OpJoin</span> <span class="n">join</span><span class="p">,</span> <span class="n">Op</span> <span class="n">left</span><span class="p">,</span> <span class="n">Op</span> <span class="n">right</span><span class="p">)</span> <span class="p">{</span>
+           <span class="o">//</span> <span class="n">Bail</span> <span class="k">if</span> <span class="n">not</span> <span class="n">of</span> <span class="n">the</span> <span class="n">right</span> <span class="n">form</span>
+           <span class="k">if</span> <span class="p">(</span>!<span class="p">(</span><span class="n">left</span> <span class="n">instanceof</span> <span class="n">OpFilter</span> <span class="o">&amp;&amp;</span> <span class="n">right</span> <span class="n">instanceof</span> <span class="n">OpFilter</span><span class="p">))</span> <span class="k">return</span> <span class="n">join</span><span class="p">;</span>
+           <span class="n">OpFilter</span> <span class="n">leftF</span> <span class="p">=</span> <span class="p">(</span><span class="n">OpFilter</span><span class="p">)</span> <span class="n">left</span><span class="p">;</span>
+           <span class="n">OpFilter</span> <span class="n">rightF</span> <span class="p">=</span> <span class="p">(</span><span class="n">OpFilter</span><span class="p">)</span> <span class="n">right</span><span class="p">;</span>
+
+           <span class="o">//</span> <span class="n">Add</span> <span class="n">all</span> <span class="n">of</span> <span class="n">the</span> <span class="n">triple</span> <span class="n">matches</span> <span class="n">to</span> <span class="n">the</span> <span class="n">LHS</span> <span class="n">BGP</span>
+           <span class="p">((</span><span class="n">OpBGP</span><span class="p">)</span> <span class="n">leftF</span><span class="p">.</span><span class="n">getSubOp</span><span class="p">()).</span><span class="n">getPattern</span><span class="p">().</span><span class="n">addAll</span><span class="p">(((</span><span class="n">OpBGP</span><span class="p">)</span> <span class="n">rightF</span><span class="p">.</span><span class="n">getSubOp</span><span class="p">()).</span><span class="n">getPattern</span><span class="p">());</span>
+           <span class="o">//</span> <span class="n">Add</span> <span class="n">the</span> <span class="n">RHS</span> <span class="n">filter</span> <span class="n">to</span> <span class="n">the</span> <span class="n">LHS</span>
+           <span class="n">leftF</span><span class="p">.</span><span class="n">getExprs</span><span class="p">().</span><span class="n">addAll</span><span class="p">(</span><span class="n">rightF</span><span class="p">.</span><span class="n">getExprs</span><span class="p">());</span>
            <span class="k">return</span> <span class="n">leftF</span><span class="p">;</span>
        <span class="p">}</span>
    <span class="p">}</span>
-   <span class="o">...</span>
-   <span class="n">op</span> <span class="o">=</span> <span class="n">Transformer</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="k">new</span> <span class="n">QueryCleaner</span><span class="p">(),</span> <span class="n">op</span><span class="p">);</span> <span class="sr">//</span> <span class="n">clean</span> <span class="n">query</span>
+   <span class="p">...</span>
+   <span class="n">op</span> <span class="p">=</span> <span class="n">Transformer</span><span class="p">.</span><span class="n">transform</span><span class="p">(</span><span class="n">new</span> <span class="n">QueryCleaner</span><span class="p">(),</span> <span class="n">op</span><span class="p">);</span> <span class="o">//</span> <span class="n">clean</span> <span class="n">query</span>
 </pre></div>
 
 
 <p>O código abaixo procura pelos  joins do formulário:</p>
-<div class="codehilite"><pre>   <span class="p">(</span><span class="nb">join</span>
+<div class="codehilite"><pre>   <span class="p">(</span><span class="n">join</span>
        <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="n">exp1</span><span class="p">)</span> <span class="p">(</span><span class="n">bgp1</span><span class="p">))</span>
        <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="n">exp2</span><span class="p">)</span> <span class="p">(</span><span class="n">bgp2</span><span class="p">)))</span>
 </pre></div>
@@ -319,11 +317,11 @@ jeito que eu achei foi gerar ops de cada
 
 
 <p>Enquanto nós percorremos a query original, todos os joins são removidos e o resultado final é:</p>
-<div class="codehilite"><pre>   <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="n">exprlist</span> <span class="p">(</span><span class="o">&lt;</span> <span class="p">?</span><span class="n">o0</span> <span class="mi">20</span><span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span> <span class="p">?</span><span class="n">o1</span> <span class="mi">20</span><span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span> <span class="p">?</span><span class="n">o2</span> <span class="mi">20</span><span class="p">))</span>
+<div class="codehilite"><pre>   <span class="p">(</span><span class="n">filter</span> <span class="p">(</span><span class="n">exprlist</span> <span class="p">(</span><span class="o">&lt;</span> ?<span class="n">o0</span> 20<span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span> ?<span class="n">o1</span> 20<span class="p">)</span> <span class="p">(</span><span class="o">&lt;</span> ?<span class="n">o2</span> 20<span class="p">))</span>
        <span class="p">(</span><span class="n">bgp</span>
-           <span class="p">(</span><span class="n">triple</span> <span class="p">?</span><span class="n">s</span> <span class="sr">&lt;urn:ex:prop0&gt;</span> <span class="p">?</span><span class="n">o0</span><span class="p">)</span>
-           <span class="p">(</span><span class="n">triple</span> <span class="p">?</span><span class="n">s</span> <span class="sr">&lt;urn:ex:prop1&gt;</span> <span class="p">?</span><span class="n">o1</span><span class="p">)</span>
-           <span class="p">(</span><span class="n">triple</span> <span class="p">?</span><span class="n">s</span> <span class="sr">&lt;urn:ex:prop2&gt;</span> <span class="p">?</span><span class="n">o2</span><span class="p">)</span>
+           <span class="p">(</span><span class="n">triple</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">urn</span><span class="p">:</span><span class="n">ex</span><span class="p">:</span><span class="n">prop0</span><span class="o">&gt;</span> ?<span class="n">o0</span><span class="p">)</span>
+           <span class="p">(</span><span class="n">triple</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">urn</span><span class="p">:</span><span class="n">ex</span><span class="p">:</span><span class="n">prop1</span><span class="o">&gt;</span> ?<span class="n">o1</span><span class="p">)</span>
+           <span class="p">(</span><span class="n">triple</span> ?<span class="n">s</span> <span class="o">&lt;</span><span class="n">urn</span><span class="p">:</span><span class="n">ex</span><span class="p">:</span><span class="n">prop2</span><span class="o">&gt;</span> ?<span class="n">o2</span><span class="p">)</span>
    <span class="p">))</span>
 </pre></div>