http://git-wip-us.apache.org/repos/asf/asterixdb-site/blob/d00eca89/docs/0.9.4/aql/filters.html
----------------------------------------------------------------------
diff --git a/docs/0.9.4/aql/filters.html b/docs/0.9.4/aql/filters.html
new file mode 100644
index 0000000..8c18a52
--- /dev/null
+++ b/docs/0.9.4/aql/filters.html
@@ -0,0 +1,142 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia Site Renderer 1.8.1 from 
src/site/markdown/aql/filters.md at 2018-10-02
+ | Rendered using Apache Maven Fluido Skin 1.7
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20181002" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>AsterixDB &#x2013; Filter-Based LSM Index Acceleration</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.7.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+    <script type="text/javascript" 
src="../js/apache-maven-fluido-1.7.min.js"></script>
+
+  </head>
+  <body class="topBarDisabled">
+    <div class="container-fluid">
+      <div id="banner">
+        <div class="pull-left"><a href=".././" id="bannerLeft"><img 
src="../images/asterixlogo.png"  alt="AsterixDB"/></a></div>
+        <div class="pull-right"></div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+        <li id="publishDate">Last Published: 2018-10-02</li>
+      <li id="projectVersion" class="pull-right">Version: 0.9.4</li>
+      <li class="pull-right"><a href="../index.html" title="Documentation 
Home">Documentation Home</a></li>
+        </ul>
+      </div>
+      <div class="row-fluid">
+        <div id="leftColumn" class="span2">
+          <div class="well sidebar-nav">
+    <ul class="nav nav-list">
+      <li class="nav-header">Get Started - Installation</li>
+    <li><a href="../ncservice.html" title="Option 1: using NCService"><span 
class="none"></span>Option 1: using NCService</a></li>
+    <li><a href="../ansible.html" title="Option 2: using Ansible"><span 
class="none"></span>Option 2: using Ansible</a></li>
+    <li><a href="../aws.html" title="Option 3: using Amazon Web 
Services"><span class="none"></span>Option 3: using Amazon Web Services</a></li>
+      <li class="nav-header">AsterixDB Primer</li>
+    <li><a href="../sqlpp/primer-sqlpp.html" title="Option 1: using 
SQL++"><span class="none"></span>Option 1: using SQL++</a></li>
+    <li><a href="../aql/primer.html" title="Option 2: using AQL"><span 
class="none"></span>Option 2: using AQL</a></li>
+      <li class="nav-header">Data Model</li>
+    <li><a href="../datamodel.html" title="The Asterix Data Model"><span 
class="none"></span>The Asterix Data Model</a></li>
+      <li class="nav-header">Queries - SQL++</li>
+    <li><a href="../sqlpp/manual.html" title="The SQL++ Query Language"><span 
class="none"></span>The SQL++ Query Language</a></li>
+    <li><a href="../sqlpp/builtins.html" title="Builtin Functions"><span 
class="none"></span>Builtin Functions</a></li>
+      <li class="nav-header">Queries - AQL</li>
+    <li><a href="../aql/manual.html" title="The Asterix Query Language 
(AQL)"><span class="none"></span>The Asterix Query Language (AQL)</a></li>
+    <li><a href="../aql/builtins.html" title="Builtin Functions"><span 
class="none"></span>Builtin Functions</a></li>
+      <li class="nav-header">API/SDK</li>
+    <li><a href="../api.html" title="HTTP API"><span class="none"></span>HTTP 
API</a></li>
+    <li><a href="../csv.html" title="CSV Output"><span class="none"></span>CSV 
Output</a></li>
+      <li class="nav-header">Advanced Features</li>
+    <li><a href="../aql/fulltext.html" title="Support of Full-text 
Queries"><span class="none"></span>Support of Full-text Queries</a></li>
+    <li><a href="../aql/externaldata.html" title="Accessing External 
Data"><span class="none"></span>Accessing External Data</a></li>
+    <li><a href="../feeds/tutorial.html" title="Support for Data 
Ingestion"><span class="none"></span>Support for Data Ingestion</a></li>
+    <li><a href="../udf.html" title="User Defined Functions"><span 
class="none"></span>User Defined Functions</a></li>
+    <li class="active"><a href="#"><span class="none"></span>Filter-Based LSM 
Index Acceleration</a></li>
+    <li><a href="../aql/similarity.html" title="Support of Similarity 
Queries"><span class="none"></span>Support of Similarity Queries</a></li>
+</ul>
+          <hr />
+          <div id="poweredBy">
+            <div class="clear"></div>
+            <div class="clear"></div>
+            <div class="clear"></div>
+            <div class="clear"></div>
+<a href=".././" title="AsterixDB" class="builtBy"><img class="builtBy"  
alt="AsterixDB" src="../images/asterixlogo.png"    /></a>
+            </div>
+          </div>
+        </div>
+        <div id="bodyColumn"  class="span10" >
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements.  See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership.  The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License.  You may obtain a copy of the License at
+ !
+ !   http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing,
+ ! software distributed under the License is distributed on an
+ ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ! KIND, either express or implied.  See the License for the
+ ! specific language governing permissions and limitations
+ ! under the License.
+ !-->
+<h1>Filter-Based LSM Index Acceleration</h1>
+<div class="section">
+<h2><a name="Table_of_Contents"></a><a name="toc" id="toc">Table of 
Contents</a></h2>
+<ul>
+
+<li><a href="#Motivation">Motivation</a></li>
+<li><a href="#FiltersInAsterixDB">Filters in AsterixDB</a></li>
+<li><a href="#FiltersAndMergePolicies">Filters and Merge Policies</a></li>
+</ul></div>
+<div class="section">
+<h2><a name="Motivation_.5BBack_to_TOC.5D"></a><a name="Motivation" 
id="Motivation">Motivation</a> <font size="4"><a href="#toc">[Back to 
TOC]</a></font></h2>
+<p>Traditional relational databases usually employ conventional index 
structures such as B+ trees due to their low read latency.  However, such 
traditional index structures use in-place writes to perform updates, resulting 
in costly random writes to disk. Today&#x2019;s emerging applications often 
involve insert-intensive workloads for which the cost of random writes 
prohibits efficient ingestion of data. Consequently, popular NoSQL systems such 
as Cassandra, HBase, LevelDB, BigTable, etc. have adopted Log-Structured Merge 
(LSM) Trees as their storage structure. LSM-trees avoids the cost of random 
writes by batching updates into a component of the index that resides in main 
memory &#x2013; an <i>in-memory component</i>. When the space occupancy of the 
in-memory component exceeds a specified threshold, its entries are 
<i>flushed</i> to disk forming a new component &#x2013; a <i>disk 
component</i>. As disk components accumulate on disk, they are periodically 
merged together subject to
  a <i>merge policy</i> that decides when and what to merge. The benefit of the 
LSM-trees comes at the cost of possibly sacrificing read efficiency, but, it 
has been shown in previous studies that these inefficiencies can be mostly 
mitigated.</p>
+<p>AsterixDB has also embraced LSM-trees, not just by using them as primary 
indexes, but also by using the same LSM-ification technique for all of its 
secondary index structures. In particular, AsterixDB adopted a generic 
framework for converting a class of indexes (that includes conventional B+ 
trees, R trees, and inverted indexes) into LSM-based secondary indexes, 
allowing higher data ingestion rates. In fact, for certain index structures, 
our results have shown that using an LSM-based version of an index can be made 
to significantly outperform its conventional counterpart for <i>both</i> 
ingestion and query speed (an example of such an index being the R-tree for 
spatial data).</p>
+<p>Since an LSM-based index naturally partitions data into multiple disk 
components, it is possible, when answering certain queries, to exploit 
partitioning to only access some components and safely filter out the remaining 
components, thus reducing query times. For instance, referring to our <a 
href="primer.html#ADM:_Modeling_Semistructed_Data_in_AsterixDB">TinySocial</a> 
example, suppose a user always retrieves tweets from the <tt>TweetMessages</tt> 
dataset based on the <tt>send-time</tt> field (e.g., tweets posted in the last 
24 hours). Since there is not a secondary index on the <tt>send-time</tt> 
field, the only available option for AsterixDB would be to scan the whole 
<tt>TweetMessages</tt> dataset and then apply the predicate as a 
post-processing step. However, if disk components of the primary index were 
tagged with the minimum and maximum timestamp values of the objects they 
contain, we could utilize the tagged information to directly access the primary 
index and prune comp
 onents that do not match the query predicate. Thus, we could save substantial 
cost by avoiding scanning the whole dataset and only access the relevant 
components. We simply call such tagging information that are associated with 
components, filters. (Note that even if there were a secondary index on 
<tt>send-time</tt> field, using filters could save substantial cost by avoiding 
accessing the secondary index, followed by probing the primary index for every 
fetched entry.) Moreover, the same filtering technique can also be used with 
any secondary LSM index (e.g., an LSM R-tree), in case the query contains 
multiple predicates (e.g., spatial and temporal predicates), to obtain similar 
pruning power.</p></div>
+<div class="section">
+<h2><a name="Filters_in_AsterixDB_.5BBack_to_TOC.5D"></a><a 
name="FiltersInAsterixDB" id="FiltersInAsterixDB">Filters in AsterixDB</a> 
<font size="4"><a href="#toc">[Back to TOC]</a></font></h2>
+<p>We have added support for LSM-based filters to all of AsterixDB&#x2019;s 
index types. To enable the use of filters, the user must specify the 
filter&#x2019;s key when creating a dataset, as shown below:</p>
+<div class="section">
+<div class="section">
+<h4><a name="Creating_a_Dataset_with_a_Filter"></a>Creating a Dataset with a 
Filter</h4>
+
+<div>
+<div>
+<pre class="source">    create dataset Tweets(TweetType) primary key tweetid 
with filter on send-time;
+</pre></div></div>
+
+<p>Filters can be created on any totally ordered datatype (i.e., any field 
that can be indexed using a B+ -tree), such as integers, doubles, floats, 
UUIDs, datetimes, etc.</p>
+<p>When a dataset with a filter is created, the name of the filter&#x2019;s 
key field is persisted in the <tt>Metadata.Dataset</tt> dataset (which is the 
metadata dataset that stores the details of each dataset in an AsterixDB 
instance) so that DML operations against the dataset can recognize the 
existence of filters and can update them or utilize them accordingly. Creating 
a dataset with a filter in AsterixDB implies that the primary and all secondary 
indexes of that dataset will maintain filters on their disk components. Once a 
filtered dataset is created, the user can use the dataset normally (just like 
any other dataset). AsterixDB will automatically maintain the filters and will 
leverage them to efficiently answer queries whenever possible (i.e., when a 
query has predicates on the filter&#x2019;s key).</p></div></div></div>
+<div class="section">
+<h2><a name="Filters_and_Merge_Policies_.5BBack_to_TOC.5D"></a><a 
name="FiltersAndMergePolicies" id="FiltersAndMergePolicies">Filters and Merge 
Policies</a> <font size="4"><a href="#toc">[Back to TOC]</a></font></h2>
+<p>The AsterixDB default merge policy, the prefix merge policy, relies on 
component sizes and the number of components to decide which components to 
merge. This merge policy has proven to provide excellent performance for both 
ingestion and queries. However, when evaluating our filtering solution with the 
prefix policy, we observed a behavior that can reduce filter effectiveness. In 
particular, we noticed that under the prefix merge policy, the disk components 
of a secondary index tend to be constantly merged into a single component. This 
is because the prefix policy relies on a single size parameter for all of the 
indexes of a dataset. This parameter is typically chosen based on the sizes of 
the disk components of the primary index, which tend to be much larger than the 
sizes of the secondary indexes&#x2019; disk components. This difference caused 
the prefix merge policy to behave similarly to the constant merge policy (i.e., 
relatively poorly) when applied to secondary indexes in 
 the sense that the secondary indexes are constantly merged into a single disk 
component. Consequently, the effectiveness of filters on secondary indexes was 
greatly reduced under the prefix-merge policy, but they were still effective 
when probing the primary index.  Based on this behavior, we developed a new 
merge policy, an improved version of the prefix policy, called the 
correlated-prefix policy. The basic idea of this policy is that it delegates 
the decision of merging the disk components of all the indexes in a dataset to 
the primary index. When the policy decides that the primary index needs to be 
merged (using the same decision criteria as for the prefix policy), then it 
will issue successive merge requests to the I/O scheduler on behalf of all 
other indexes associated with the same dataset. The end result is that 
secondary indexes will always have the same number of disk components as their 
primary index under the correlated-prefix merge policy. This has improved query 
perfo
 rmance, since disk components of secondary indexes now have a much better 
chance of being pruned.</p></div>
+        </div>
+      </div>
+    </div>
+    <hr/>
+    <footer>
+      <div class="container-fluid">
+        <div class="row-fluid">
+<div class="row-fluid">Apache AsterixDB, AsterixDB, Apache, the Apache
+        feather logo, and the Apache AsterixDB project logo are either
+        registered trademarks or trademarks of The Apache Software
+        Foundation in the United States and other countries.
+        All other marks mentioned may be trademarks or registered
+        trademarks of their respective owners.
+      </div>
+        </div>
+      </div>
+    </footer>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/asterixdb-site/blob/d00eca89/docs/0.9.4/aql/fulltext.html
----------------------------------------------------------------------
diff --git a/docs/0.9.4/aql/fulltext.html b/docs/0.9.4/aql/fulltext.html
new file mode 100644
index 0000000..022e124
--- /dev/null
+++ b/docs/0.9.4/aql/fulltext.html
@@ -0,0 +1,208 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia Site Renderer 1.8.1 from 
src/site/markdown/aql/fulltext.md at 2018-10-02
+ | Rendered using Apache Maven Fluido Skin 1.7
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20181002" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>AsterixDB &#x2013; AsterixDB  Support of Full-text search 
queries</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.7.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+    <script type="text/javascript" 
src="../js/apache-maven-fluido-1.7.min.js"></script>
+
+  </head>
+  <body class="topBarDisabled">
+    <div class="container-fluid">
+      <div id="banner">
+        <div class="pull-left"><a href=".././" id="bannerLeft"><img 
src="../images/asterixlogo.png"  alt="AsterixDB"/></a></div>
+        <div class="pull-right"></div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+        <li id="publishDate">Last Published: 2018-10-02</li>
+      <li id="projectVersion" class="pull-right">Version: 0.9.4</li>
+      <li class="pull-right"><a href="../index.html" title="Documentation 
Home">Documentation Home</a></li>
+        </ul>
+      </div>
+      <div class="row-fluid">
+        <div id="leftColumn" class="span2">
+          <div class="well sidebar-nav">
+    <ul class="nav nav-list">
+      <li class="nav-header">Get Started - Installation</li>
+    <li><a href="../ncservice.html" title="Option 1: using NCService"><span 
class="none"></span>Option 1: using NCService</a></li>
+    <li><a href="../ansible.html" title="Option 2: using Ansible"><span 
class="none"></span>Option 2: using Ansible</a></li>
+    <li><a href="../aws.html" title="Option 3: using Amazon Web 
Services"><span class="none"></span>Option 3: using Amazon Web Services</a></li>
+      <li class="nav-header">AsterixDB Primer</li>
+    <li><a href="../sqlpp/primer-sqlpp.html" title="Option 1: using 
SQL++"><span class="none"></span>Option 1: using SQL++</a></li>
+    <li><a href="../aql/primer.html" title="Option 2: using AQL"><span 
class="none"></span>Option 2: using AQL</a></li>
+      <li class="nav-header">Data Model</li>
+    <li><a href="../datamodel.html" title="The Asterix Data Model"><span 
class="none"></span>The Asterix Data Model</a></li>
+      <li class="nav-header">Queries - SQL++</li>
+    <li><a href="../sqlpp/manual.html" title="The SQL++ Query Language"><span 
class="none"></span>The SQL++ Query Language</a></li>
+    <li><a href="../sqlpp/builtins.html" title="Builtin Functions"><span 
class="none"></span>Builtin Functions</a></li>
+      <li class="nav-header">Queries - AQL</li>
+    <li><a href="../aql/manual.html" title="The Asterix Query Language 
(AQL)"><span class="none"></span>The Asterix Query Language (AQL)</a></li>
+    <li><a href="../aql/builtins.html" title="Builtin Functions"><span 
class="none"></span>Builtin Functions</a></li>
+      <li class="nav-header">API/SDK</li>
+    <li><a href="../api.html" title="HTTP API"><span class="none"></span>HTTP 
API</a></li>
+    <li><a href="../csv.html" title="CSV Output"><span class="none"></span>CSV 
Output</a></li>
+      <li class="nav-header">Advanced Features</li>
+    <li class="active"><a href="#"><span class="none"></span>Support of 
Full-text Queries</a></li>
+    <li><a href="../aql/externaldata.html" title="Accessing External 
Data"><span class="none"></span>Accessing External Data</a></li>
+    <li><a href="../feeds/tutorial.html" title="Support for Data 
Ingestion"><span class="none"></span>Support for Data Ingestion</a></li>
+    <li><a href="../udf.html" title="User Defined Functions"><span 
class="none"></span>User Defined Functions</a></li>
+    <li><a href="../aql/filters.html" title="Filter-Based LSM Index 
Acceleration"><span class="none"></span>Filter-Based LSM Index 
Acceleration</a></li>
+    <li><a href="../aql/similarity.html" title="Support of Similarity 
Queries"><span class="none"></span>Support of Similarity Queries</a></li>
+</ul>
+          <hr />
+          <div id="poweredBy">
+            <div class="clear"></div>
+            <div class="clear"></div>
+            <div class="clear"></div>
+            <div class="clear"></div>
+<a href=".././" title="AsterixDB" class="builtBy"><img class="builtBy"  
alt="AsterixDB" src="../images/asterixlogo.png"    /></a>
+            </div>
+          </div>
+        </div>
+        <div id="bodyColumn"  class="span10" >
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements.  See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership.  The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License.  You may obtain a copy of the License at
+ !
+ !   http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing,
+ ! software distributed under the License is distributed on an
+ ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ! KIND, either express or implied.  See the License for the
+ ! specific language governing permissions and limitations
+ ! under the License.
+ !-->
+<h1>AsterixDB  Support of Full-text search queries</h1>
+<div class="section">
+<h2><a name="Table_of_Contents"></a><a name="toc" id="toc">Table of 
Contents</a></h2>
+<ul>
+
+<li><a href="#Motivation">Motivation</a></li>
+<li><a href="#Syntax">Syntax</a></li>
+<li><a href="#FulltextIndex">Creating and utilizing a Full-text index</a></li>
+</ul></div>
+<div class="section">
+<h2><a name="Motivation_.5BBack_to_TOC.5D"></a><a name="Motivation" 
id="Motivation">Motivation</a> <font size="4"><a href="#toc">[Back to 
TOC]</a></font></h2>
+<p>Full-Text Search (FTS) queries are widely used in applications where users 
need to find records that satisfy an FTS predicate, i.e., where simple 
string-based matching is not sufficient. These queries are important when 
finding documents that contain a certain keyword is crucial. FTS queries are 
different from substring matching queries in that FTS queries find their query 
predicates as exact keywords in the given string, rather than treating a query 
predicate as a sequence of characters. For example, an FTS query that finds 
&#x201c;rain&#x201d; correctly returns a document when it contains 
&#x201c;rain&#x201d; as a word. However, a substring-matching query returns a 
document whenever it contains &#x201c;rain&#x201d; as a substring, for 
instance, a document with &#x201c;brain&#x201d; or &#x201c;training&#x201d; 
would be returned as well.</p></div>
+<div class="section">
+<h2><a name="Syntax_.5BBack_to_TOC.5D"></a><a name="Syntax" 
id="Syntax">Syntax</a> <font size="4"><a href="#toc">[Back to 
TOC]</a></font></h2>
+<p>The syntax of AsterixDB FTS follows a portion of the XQuery FullText Search 
syntax. Two basic forms are as follows:</p>
+
+<div>
+<div>
+<pre class="source">    ftcontains(Expression1, Expression2, {FullTextOption})
+    ftcontains(Expression1, Expression2)
+</pre></div></div>
+
+<p>For example, we can execute the following query to find tweet messages 
where the <tt>message-text</tt> field includes &#x201c;voice&#x201d; as a word. 
Please note that an FTS search is case-insensitive. Thus, &#x201c;Voice&#x201d; 
or &#x201c;voice&#x201d; will be evaluated as the same word.</p>
+
+<div>
+<div>
+<pre class="source">    use dataverse TinySocial;
+
+    for $msg in dataset TweetMessages
+    where ftcontains($msg.message-text, &quot;voice&quot;, 
{&quot;mode&quot;:&quot;any&quot;})
+    return {&quot;id&quot;: $msg.id}
+</pre></div></div>
+
+<p>The DDL and DML of TinySocial can be found in <a 
href="primer.html#ADM:_Modeling_Semistructed_Data_in_AsterixDB">ADM: Modeling 
Semistructed Data in AsterixDB</a>.</p>
+<p>The same query can be also expressed in the SQL++.</p>
+
+<div>
+<div>
+<pre class="source">    use TinySocial;
+
+    select element {&quot;id&quot;:msg.id}
+    from TweetMessages as msg
+    where TinySocial.ftcontains(msg.`message-text`, &quot;voice&quot;, 
{&quot;mode&quot;:&quot;any&quot;})
+</pre></div></div>
+
+<p>The <tt>Expression1</tt> is an expression that should be evaluable as a 
string at runtime as in the above example where <tt>$msg.message-text</tt> is a 
string field. The <tt>Expression2</tt> can be a string, an (un)ordered list of 
string value(s), or an expression. In the last case, the given expression 
should be evaluable into one of the first two types, i.e., into a string value 
or an (un)ordered list of string value(s).</p>
+<p>The following examples are all valid expressions.</p>
+
+<div>
+<div>
+<pre class="source">   ... where ftcontains($msg.message-text, 
&quot;sound&quot;)
+   ... where ftcontains($msg.message-text, &quot;sound&quot;, 
{&quot;mode&quot;:&quot;any&quot;})
+   ... where ftcontains($msg.message-text, [&quot;sound&quot;, 
&quot;system&quot;], {&quot;mode&quot;:&quot;any&quot;})
+   ... where ftcontains($msg.message-text, {{&quot;speed&quot;, 
&quot;stand&quot;, &quot;customization&quot;}}, 
{&quot;mode&quot;:&quot;all&quot;})
+   ... where ftcontains($msg.message-text, let $keyword_list := 
[&quot;voice&quot;, &quot;system&quot;] return $keyword_list, 
{&quot;mode&quot;:&quot;all&quot;})
+   ... where ftcontains($msg.message-text, $keyword_list, 
{&quot;mode&quot;:&quot;any&quot;})
+</pre></div></div>
+
+<p>In the last example above, <tt>$keyword_list</tt> should evaluate to a 
string or an (un)ordered list of string value(s).</p>
+<p>The last <tt>FullTextOption</tt> parameter clarifies the given FTS request. 
If you omit the <tt>FullTextOption</tt> parameter, then the default value will 
be set for each possible option. Currently, we only have one option named 
<tt>mode</tt>. And as we extend the FTS feature, more options will be added. 
Please note that the format of <tt>FullTextOption</tt> is a record, thus you 
need to put the option(s) in a record <tt>{}</tt>. The <tt>mode</tt> option 
indicates whether the given FTS query is a conjunctive (AND) or disjunctive 
(OR) search request. This option can be either <tt>&#x201c;any&#x201d;</tt> or 
<tt>&#x201c;all&#x201d;</tt>. The default value for <tt>mode</tt> is 
<tt>&#x201c;all&#x201d;</tt>. If one specifies <tt>&#x201c;any&#x201d;</tt>, a 
disjunctive search will be conducted. For example, the following query will 
find documents whose <tt>message-text</tt> field contains &#x201c;sound&#x201d; 
or &#x201c;system&#x201d;, so a document will be returned if it contains eit
 her &#x201c;sound&#x201d;, &#x201c;system&#x201d;, or both of the keywords.</p>
+
+<div>
+<div>
+<pre class="source">   ... where ftcontains($msg.message-text, 
[&quot;sound&quot;, &quot;system&quot;], {&quot;mode&quot;:&quot;any&quot;})
+</pre></div></div>
+
+<p>The other option parameter,<tt>&#x201c;all&#x201d;</tt>, specifies a 
conjunctive search. The following examples will find the documents whose 
<tt>message-text</tt> field contains both &#x201c;sound&#x201d; and 
&#x201c;system&#x201d;. If a document contains only &#x201c;sound&#x201d; or 
&#x201c;system&#x201d; but not both, it will not be returned.</p>
+
+<div>
+<div>
+<pre class="source">   ... where ftcontains($msg.message-text, 
[&quot;sound&quot;, &quot;system&quot;], {&quot;mode&quot;:&quot;all&quot;})
+   ... where ftcontains($msg.message-text, [&quot;sound&quot;, 
&quot;system&quot;])
+</pre></div></div>
+
+<p>Currently AsterixDB doesn&#x2019;t (yet) support phrase searches, so the 
following query will not work.</p>
+
+<div>
+<div>
+<pre class="source">   ... where ftcontains($msg.message-text, &quot;sound 
system&quot;, {&quot;mode&quot;:&quot;any&quot;})
+</pre></div></div>
+
+<p>As a workaround solution, the following query can be used to achieve a 
roughly similar goal. The difference is that the following queries will find 
documents where <tt>$msg.message-text</tt> contains both &#x201c;sound&#x201d; 
and &#x201c;system&#x201d;, but the order and adjacency of 
&#x201c;sound&#x201d; and &#x201c;system&#x201d; are not checked, unlike in a 
phrase search. As a result, the query below would also return documents with 
&#x201c;sound system can be installed.&#x201d;, &#x201c;system sound is 
perfect.&#x201d;, or &#x201c;sound is not clear. You may need to install a new 
system.&#x201d;</p>
+
+<div>
+<div>
+<pre class="source">   ... where ftcontains($msg.message-text, 
[&quot;sound&quot;, &quot;system&quot;], {&quot;mode&quot;:&quot;all&quot;})
+   ... where ftcontains($msg.message-text, [&quot;sound&quot;, 
&quot;system&quot;])
+</pre></div></div>
+</div>
+<div class="section">
+<h2><a 
name="Creating_and_utilizing_a_Full-text_index_.5BBack_to_TOC.5D"></a><a 
name="FulltextIndex" id="FulltextIndex">Creating and utilizing a Full-text 
index</a> <font size="4"><a href="#toc">[Back to TOC]</a></font></h2>
+<p>When there is a full-text index on the field that is being searched, rather 
than scanning all records, AsterixDB can utilize that index to expedite the 
execution of a FTS query. To create a full-text index, you need to specify the 
index type as <tt>fulltext</tt> in your DDL statement. For instance, the 
following DDL statement create a full-text index on the 
TweetMessages.message-text attribute.</p>
+
+<div>
+<div>
+<pre class="source">create index messageFTSIdx on TweetMessages(message-text) 
type fulltext;
+</pre></div></div></div>
+        </div>
+      </div>
+    </div>
+    <hr/>
+    <footer>
+      <div class="container-fluid">
+        <div class="row-fluid">
+<div class="row-fluid">Apache AsterixDB, AsterixDB, Apache, the Apache
+        feather logo, and the Apache AsterixDB project logo are either
+        registered trademarks or trademarks of The Apache Software
+        Foundation in the United States and other countries.
+        All other marks mentioned may be trademarks or registered
+        trademarks of their respective owners.
+      </div>
+        </div>
+      </div>
+    </footer>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/asterixdb-site/blob/d00eca89/docs/0.9.4/aql/js-sdk.html
----------------------------------------------------------------------
diff --git a/docs/0.9.4/aql/js-sdk.html b/docs/0.9.4/aql/js-sdk.html
new file mode 100644
index 0000000..50700e9
--- /dev/null
+++ b/docs/0.9.4/aql/js-sdk.html
@@ -0,0 +1,873 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia Site Renderer 1.8.1 from 
src/site/markdown/aql/js-sdk.md at 2018-10-02
+ | Rendered using Apache Maven Fluido Skin 1.7
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20181002" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>AsterixDB &#x2013; AsterixDB Javascript SDK</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.7.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+    <script type="text/javascript" 
src="../js/apache-maven-fluido-1.7.min.js"></script>
+
+  </head>
+  <body class="topBarDisabled">
+    <div class="container-fluid">
+      <div id="banner">
+        <div class="pull-left"><a href=".././" id="bannerLeft"><img 
src="../images/asterixlogo.png"  alt="AsterixDB"/></a></div>
+        <div class="pull-right"></div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+        <li id="publishDate">Last Published: 2018-10-02</li>
+      <li id="projectVersion" class="pull-right">Version: 0.9.4</li>
+      <li class="pull-right"><a href="../index.html" title="Documentation 
Home">Documentation Home</a></li>
+        </ul>
+      </div>
+      <div class="row-fluid">
+        <div id="leftColumn" class="span2">
+          <div class="well sidebar-nav">
+    <ul class="nav nav-list">
+      <li class="nav-header">Get Started - Installation</li>
+    <li><a href="../ncservice.html" title="Option 1: using NCService"><span 
class="none"></span>Option 1: using NCService</a></li>
+    <li><a href="../ansible.html" title="Option 2: using Ansible"><span 
class="none"></span>Option 2: using Ansible</a></li>
+    <li><a href="../aws.html" title="Option 3: using Amazon Web 
Services"><span class="none"></span>Option 3: using Amazon Web Services</a></li>
+      <li class="nav-header">AsterixDB Primer</li>
+    <li><a href="../sqlpp/primer-sqlpp.html" title="Option 1: using 
SQL++"><span class="none"></span>Option 1: using SQL++</a></li>
+    <li><a href="../aql/primer.html" title="Option 2: using AQL"><span 
class="none"></span>Option 2: using AQL</a></li>
+      <li class="nav-header">Data Model</li>
+    <li><a href="../datamodel.html" title="The Asterix Data Model"><span 
class="none"></span>The Asterix Data Model</a></li>
+      <li class="nav-header">Queries - SQL++</li>
+    <li><a href="../sqlpp/manual.html" title="The SQL++ Query Language"><span 
class="none"></span>The SQL++ Query Language</a></li>
+    <li><a href="../sqlpp/builtins.html" title="Builtin Functions"><span 
class="none"></span>Builtin Functions</a></li>
+      <li class="nav-header">Queries - AQL</li>
+    <li><a href="../aql/manual.html" title="The Asterix Query Language 
(AQL)"><span class="none"></span>The Asterix Query Language (AQL)</a></li>
+    <li><a href="../aql/builtins.html" title="Builtin Functions"><span 
class="none"></span>Builtin Functions</a></li>
+      <li class="nav-header">API/SDK</li>
+    <li><a href="../api.html" title="HTTP API"><span class="none"></span>HTTP 
API</a></li>
+    <li><a href="../csv.html" title="CSV Output"><span class="none"></span>CSV 
Output</a></li>
+      <li class="nav-header">Advanced Features</li>
+    <li><a href="../aql/fulltext.html" title="Support of Full-text 
Queries"><span class="none"></span>Support of Full-text Queries</a></li>
+    <li><a href="../aql/externaldata.html" title="Accessing External 
Data"><span class="none"></span>Accessing External Data</a></li>
+    <li><a href="../feeds/tutorial.html" title="Support for Data 
Ingestion"><span class="none"></span>Support for Data Ingestion</a></li>
+    <li><a href="../udf.html" title="User Defined Functions"><span 
class="none"></span>User Defined Functions</a></li>
+    <li><a href="../aql/filters.html" title="Filter-Based LSM Index 
Acceleration"><span class="none"></span>Filter-Based LSM Index 
Acceleration</a></li>
+    <li><a href="../aql/similarity.html" title="Support of Similarity 
Queries"><span class="none"></span>Support of Similarity Queries</a></li>
+</ul>
+          <hr />
+          <div id="poweredBy">
+            <div class="clear"></div>
+            <div class="clear"></div>
+            <div class="clear"></div>
+            <div class="clear"></div>
+<a href=".././" title="AsterixDB" class="builtBy"><img class="builtBy"  
alt="AsterixDB" src="../images/asterixlogo.png"    /></a>
+            </div>
+          </div>
+        </div>
+        <div id="bodyColumn"  class="span10" >
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements.  See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership.  The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License.  You may obtain a copy of the License at
+ !
+ !   http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing,
+ ! software distributed under the License is distributed on an
+ ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ! KIND, either express or implied.  See the License for the
+ ! specific language governing permissions and limitations
+ ! under the License.
+ !-->
+<h1>AsterixDB Javascript SDK</h1>
+<div class="section">
+<h2><a name="Obtaining_and_Including"></a>Obtaining and Including</h2>
+<p><a class="externalLink" 
href="http://asterixdb.ics.uci.edu/download/bindings/asterix-sdk-stable.js";>Download</a>
 the javascript SDK and include it like any other javascript library by adding 
the following line in the appropriate HTML file:</p>
+
+<div>
+<div>
+<pre class="source">&lt;script 
src=&quot;path/to/asterix-sdk-stable.js&quot;&gt;&lt;/script&gt;
+</pre></div></div>
+</div>
+<div class="section">
+<h2><a name="Interactive_Demos"></a>Interactive Demos</h2>
+<p>There are two interactive demos that are available for download. Both of 
the demos illustrate how the javascript API would be used in an application:</p>
+<ul>
+
+<li><a class="externalLink" 
href="http://asterixdb.ics.uci.edu/download/demos/tweetbook-demo.zip";>Tweetbook 
Demo</a>: a contrived geo-spatial application dealing with artificial Tweets 
allowing spatial, temporal, and keyword-based filtering.</li>
+<li><a class="externalLink" 
href="http://asterixdb.ics.uci.edu/download/demos/admaql101-demo.zip";>ADM/AQL 
101 Demo</a>: an interactive version of all of the examples that are provided 
in the following section.</li>
+</ul></div>
+<div class="section">
+<h2><a name="The_javascript_SDK:_by_example"></a>The javascript SDK: by 
example</h2>
+<p>In this section, we explore how to form AQL queries using the javascript 
SDK. The queries from <a href="primer.html">AsterixDB 101: An ADM and AQL 
Primer</a> are used as examples here. For each AQL statement, the equivalent 
javascript expression is shown below it, followed by the results of executing 
the query.</p>
+<div class="section">
+<h3><a name="Query_0-A_-_Exact-Match_Lookup"></a>Query 0-A - Exact-Match 
Lookup</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+
+<div>
+<div>
+<pre class="source">use dataverse TinySocial;
+
+for $user in dataset FacebookUsers
+where $user.id = 8
+return $user;
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var expression0a = new FLWOGRExpression()
+       .ForClause(&quot;$user&quot;, new AExpression(&quot;dataset 
FacebookUsers&quot;))
+    .WhereClause(new AExpression(&quot;$user.id = 8&quot;))
+    .ReturnClause(&quot;$user&quot;);
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ &quot;id&quot;: { int32: 8 } , &quot;alias&quot;: 
&quot;Nila&quot;, &quot;name&quot;: &quot;NilaMilliron&quot;, 
&quot;user-since&quot;: { datetime: 1199182200000}, &quot;friend-ids&quot;: { 
unorderedlist: [{ int32: 3 } ]}, &quot;employment&quot;: { orderedlist: [{ 
&quot;organization-name&quot;: &quot;Plexlane&quot;, &quot;start-date&quot;: { 
date: 1267315200000}, &quot;end-date&quot;: null } ]} }
+</pre></div></div>
+</div></div></div></div>
+<div class="section">
+<h3><a name="Query_0-B_-_Range_Scan"></a>Query 0-B - Range Scan</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+
+<div>
+<div>
+<pre class="source">use dataverse TinySocial;
+
+for $user in dataset FacebookUsers
+where $user.id &gt;= 2 and $user.id &lt;= 4
+return $user;
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var expression0b = new FLWOGRExpression()
+       .ForClause(&quot;$user&quot;, new AExpression(&quot;dataset 
FacebookUsers&quot;))
+       .WhereClause().and(new AExpression(&quot;$user.id &gt;= 2&quot;), new 
AExpression(&quot;$user.id &lt;= 4&quot;))
+       .ReturnClause(&quot;$user&quot;);
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ &quot;id&quot;: { int32: 2 } , &quot;alias&quot;: 
&quot;Isbel&quot;, &quot;name&quot;: &quot;IsbelDull&quot;, 
&quot;user-since&quot;: { datetime: 1295691000000}, &quot;friend-ids&quot;: { 
unorderedlist: [{ int32: 1 } , { int32: 4 } ]}, &quot;employment&quot;: { 
orderedlist: [{ &quot;organization-name&quot;: &quot;Hexviafind&quot;, 
&quot;start-date&quot;: { date: 1272326400000}, &quot;end-date&quot;: null } ]} 
}
+{ &quot;id&quot;: { int32: 3 } , &quot;alias&quot;: &quot;Emory&quot;, 
&quot;name&quot;: &quot;EmoryUnk&quot;, &quot;user-since&quot;: { datetime: 
1341915000000}, &quot;friend-ids&quot;: { unorderedlist: [{ int32: 1 } , { 
int32: 5 } , { int32: 8 } , { int32: 9 } ]}, &quot;employment&quot;: { 
orderedlist: [{ &quot;organization-name&quot;: &quot;geomedia&quot;, 
&quot;start-date&quot;: { date: 1276732800000}, &quot;end-date&quot;: { date: 
1264464000000} } ]} }
+{ &quot;id&quot;: { int32: 4 } , &quot;alias&quot;: &quot;Nicholas&quot;, 
&quot;name&quot;: &quot;NicholasStroh&quot;, &quot;user-since&quot;: { 
datetime: 1293444600000}, &quot;friend-ids&quot;: { unorderedlist: [{ int32: 2 
} ]}, &quot;employment&quot;: { orderedlist: [{ &quot;organization-name&quot;: 
&quot;Zamcorporation&quot;, &quot;start-date&quot;: { date: 1275955200000}, 
&quot;end-date&quot;: null } ]} }
+</pre></div></div>
+</div></div></div></div>
+<div class="section">
+<h3><a name="Query_1_-_Other_Query_Filters"></a>Query 1 - Other Query 
Filters</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+
+<div>
+<div>
+<pre class="source">use dataverse TinySocial;
+
+for $user in dataset FacebookUsers
+where $user.user-since &gt;= datetime('2010-07-22T00:00:00')
+and $user.user-since &lt;= datetime('2012-07-29T23:59:59')
+return $user;
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var expression1 = new FLWOGRExpression()
+       .ForClause(&quot;$user&quot;, new AExpression(&quot;dataset 
FacebookUsers&quot;))
+    .WhereClause().and(
+               new AExpression(&quot;$user.user-since &gt;= 
datetime('2010-07-22T00:00:00')&quot;),
+               new AExpression(&quot;$user.user-since &lt;= 
datetime('2012-07-29T23:59:59')&quot;)
+    ).ReturnClause(&quot;$user&quot;);
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ &quot;id&quot;: { int32: 2 } , &quot;alias&quot;: 
&quot;Isbel&quot;, &quot;name&quot;: &quot;IsbelDull&quot;, 
&quot;user-since&quot;: { datetime: 1295691000000}, &quot;friend-ids&quot;: { 
unorderedlist: [{ int32: 1 } , { int32: 4 } ]}, &quot;employment&quot;: { 
orderedlist: [{ &quot;organization-name&quot;: &quot;Hexviafind&quot;, 
&quot;start-date&quot;: { date: 1272326400000}, &quot;end-date&quot;: null } ]} 
}
+{ &quot;id&quot;: { int32: 10 } , &quot;alias&quot;: &quot;Bram&quot;, 
&quot;name&quot;: &quot;BramHatch&quot;, &quot;user-since&quot;: { datetime: 
1287223800000}, &quot;friend-ids&quot;: { unorderedlist: [{ int32: 1 } , { 
int32: 5 } , { int32: 9 } ]}, &quot;employment&quot;: { orderedlist: [{ 
&quot;organization-name&quot;: &quot;physcane&quot;, &quot;start-date&quot;: { 
date: 1181001600000}, &quot;end-date&quot;: { date: 1320451200000} } ]} }
+{ &quot;id&quot;: { int32: 3 } , &quot;alias&quot;: &quot;Emory&quot;, 
&quot;name&quot;: &quot;EmoryUnk&quot;, &quot;user-since&quot;: { datetime: 
1341915000000}, &quot;friend-ids&quot;: { unorderedlist: [{ int32: 1 } , { 
int32: 5 } , { int32: 8 } , { int32: 9 } ]}, &quot;employment&quot;: { 
orderedlist: [{ &quot;organization-name&quot;: &quot;geomedia&quot;, 
&quot;start-date&quot;: { date: 1276732800000}, &quot;end-date&quot;: { date: 
1264464000000} } ]} }
+{ &quot;id&quot;: { int32: 4 } , &quot;alias&quot;: &quot;Nicholas&quot;, 
&quot;name&quot;: &quot;NicholasStroh&quot;, &quot;user-since&quot;: { 
datetime: 1293444600000}, &quot;friend-ids&quot;: { unorderedlist: [{ int32: 2 
} ]}, &quot;employment&quot;: { orderedlist: [{ &quot;organization-name&quot;: 
&quot;Zamcorporation&quot;, &quot;start-date&quot;: { date: 1275955200000}, 
&quot;end-date&quot;: null } ]} }
+</pre></div></div>
+</div></div></div></div>
+<div class="section">
+<h3><a name="Query_2-A_-_Equijoin"></a>Query 2-A - Equijoin</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+
+<div>
+<div>
+<pre class="source">use dataverse TinySocial;
+
+for $user in dataset FacebookUsers
+for $message in dataset FacebookMessages
+where $message.author-id = $user.id
+return {
+    &quot;uname&quot;: $user.name,
+    &quot;message&quot;: $message.message
+};
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var expression2a = new FLWOGRExpression()
+       .ForClause (&quot;$user&quot;, new AExpression(&quot;dataset 
FacebookUsers&quot;))
+       .ForClause (&quot;$message&quot;, new AExpression(&quot;dataset 
FacebookMessages&quot;))
+       .WhereClause(new AExpression(&quot;$message.author-id = $user.id&quot;))
+       .ReturnClause({
+               &quot;uname&quot; : &quot;$user.name&quot;,
+               &quot;message&quot; : &quot;$message.message&quot;
+       });
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, 
&quot;message&quot;: &quot; dislike x-phone its touch-screen is horrible&quot; }
+{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: 
&quot; like ccast the 3G is awesome:)&quot; }
+{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: 
&quot; can't stand product-w the touch-screen is terrible&quot; }
+{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: 
&quot; can't stand acast the network is horrible:(&quot; }
+{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: 
&quot; can't stand acast its plan is terrible&quot; }
+{ &quot;uname&quot;: &quot;IsbelDull&quot;, &quot;message&quot;: &quot; like 
product-y the plan is amazing&quot; }
+{ &quot;uname&quot;: &quot;IsbelDull&quot;, &quot;message&quot;: &quot; like 
product-z its platform is mind-blowing&quot; }
+{ &quot;uname&quot;: &quot;WoodrowNehling&quot;, &quot;message&quot;: &quot; 
love acast its 3G is good:)&quot; }
+{ &quot;uname&quot;: &quot;BramHatch&quot;, &quot;message&quot;: &quot; 
dislike x-phone the voice-command is bad:(&quot; }
+{ &quot;uname&quot;: &quot;BramHatch&quot;, &quot;message&quot;: &quot; can't 
stand product-z its voicemail-service is OMG:(&quot; }
+{ &quot;uname&quot;: &quot;EmoryUnk&quot;, &quot;message&quot;: &quot; love 
product-b its shortcut-menu is awesome:)&quot; }
+{ &quot;uname&quot;: &quot;EmoryUnk&quot;, &quot;message&quot;: &quot; love 
ccast its wireless is good&quot; }
+{ &quot;uname&quot;: &quot;WillisWynne&quot;, &quot;message&quot;: &quot; love 
product-b the customization is mind-blowing&quot; }
+{ &quot;uname&quot;: &quot;SuzannaTillson&quot;, &quot;message&quot;: &quot; 
like x-phone the voicemail-service is awesome&quot; }
+{ &quot;uname&quot;: &quot;VonKemble&quot;, &quot;message&quot;: &quot; 
dislike product-b the speed is horrible&quot; }
+</pre></div></div>
+</div></div></div></div>
+<div class="section">
+<h3><a name="Query_2-B_-_Index_join"></a>Query 2-B - Index join</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+
+<div>
+<div>
+<pre class="source">use dataverse TinySocial;
+
+for $user in dataset FacebookUsers
+for $message in dataset FacebookMessages
+where $message.author-id /*+ indexnl */  = $user.id
+return {
+    &quot;uname&quot;: $user.name,
+    &quot;message&quot;: $message.message
+};
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var expression2b = new FLWOGRExpression()
+       .ForClause (&quot;$user&quot;, new AExpression(&quot;dataset 
FacebookUsers&quot;))
+       .ForClause (&quot;$message&quot;, new AExpression(&quot;dataset 
FacebookMessages&quot;))
+       .WhereClause(new AExpression(&quot;$message.author-id /*+ indexnl */  = 
$user.id&quot;))
+       .ReturnClause({
+               &quot;uname&quot; : &quot;$user.name&quot;,
+               &quot;message&quot; : &quot;$message.message&quot;
+       });
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, 
&quot;message&quot;: &quot; dislike x-phone its touch-screen is horrible&quot; }
+{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: 
&quot; like ccast the 3G is awesome:)&quot; }
+{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: 
&quot; can't stand product-w the touch-screen is terrible&quot; }
+{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: 
&quot; can't stand acast the network is horrible:(&quot; }
+{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: 
&quot; can't stand acast its plan is terrible&quot; }
+{ &quot;uname&quot;: &quot;IsbelDull&quot;, &quot;message&quot;: &quot; like 
product-y the plan is amazing&quot; }
+{ &quot;uname&quot;: &quot;IsbelDull&quot;, &quot;message&quot;: &quot; like 
product-z its platform is mind-blowing&quot; }
+{ &quot;uname&quot;: &quot;WoodrowNehling&quot;, &quot;message&quot;: &quot; 
love acast its 3G is good:)&quot; }
+{ &quot;uname&quot;: &quot;BramHatch&quot;, &quot;message&quot;: &quot; 
dislike x-phone the voice-command is bad:(&quot; }
+{ &quot;uname&quot;: &quot;BramHatch&quot;, &quot;message&quot;: &quot; can't 
stand product-z its voicemail-service is OMG:(&quot; }
+{ &quot;uname&quot;: &quot;EmoryUnk&quot;, &quot;message&quot;: &quot; love 
product-b its shortcut-menu is awesome:)&quot; }
+{ &quot;uname&quot;: &quot;EmoryUnk&quot;, &quot;message&quot;: &quot; love 
ccast its wireless is good&quot; }
+{ &quot;uname&quot;: &quot;WillisWynne&quot;, &quot;message&quot;: &quot; love 
product-b the customization is mind-blowing&quot; }
+{ &quot;uname&quot;: &quot;SuzannaTillson&quot;, &quot;message&quot;: &quot; 
like x-phone the voicemail-service is awesome&quot; }
+{ &quot;uname&quot;: &quot;VonKemble&quot;, &quot;message&quot;: &quot; 
dislike product-b the speed is horrible&quot; }
+</pre></div></div>
+</div></div></div></div>
+<div class="section">
+<h3><a name="Query_3_-_Nested_Outer_Join"></a>Query 3 - Nested Outer Join</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+
+<div>
+<div>
+<pre class="source">use dataverse TinySocial;
+
+for $user in dataset FacebookUsers
+return {
+    &quot;uname&quot;: $user.name,
+    &quot;messages&quot;: for $message in dataset FacebookMessages
+                where $message.author-id = $user.id
+                return $message.message
+};
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var expression3messages = new FLWOGRExpression()
+    .ForClause(&quot;$message&quot;, new AExpression(&quot;dataset 
FacebookMessages&quot;))
+    .WhereClause(new AExpression(&quot;$message.author-id = $user.id&quot;))
+    .ReturnClause(&quot;$message.message&quot;);
+
+var expression3 = new FLWOGRExpression()
+    .ForClause (&quot;$user&quot;, new AExpression(&quot;dataset 
FacebookUsers&quot;))
+    .ReturnClause({
+        &quot;uname&quot;: &quot;$user.name&quot;,
+        &quot;messages&quot; : expression3messages
+    });
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, 
&quot;messages&quot;: { orderedlist: [&quot; dislike x-phone its touch-screen 
is horrible&quot;, &quot; like ccast the 3G is awesome:)&quot;, &quot; can't 
stand product-w the touch-screen is terrible&quot;, &quot; can't stand acast 
the network is horrible:(&quot;, &quot; can't stand acast its plan is 
terrible&quot; ]} }
+{ &quot;uname&quot;: &quot;IsbelDull&quot;, &quot;messages&quot;: { 
orderedlist: [&quot; like product-y the plan is amazing&quot;, &quot; like 
product-z its platform is mind-blowing&quot; ]} }
+{ &quot;uname&quot;: &quot;NilaMilliron&quot;, &quot;messages&quot;: { 
orderedlist: [ ]} }
+{ &quot;uname&quot;: &quot;WoodrowNehling&quot;, &quot;messages&quot;: { 
orderedlist: [&quot; love acast its 3G is good:)&quot; ]} }
+{ &quot;uname&quot;: &quot;BramHatch&quot;, &quot;messages&quot;: { 
orderedlist: [&quot; dislike x-phone the voice-command is bad:(&quot;, &quot; 
can't stand product-z its voicemail-service is OMG:(&quot; ]} }
+{ &quot;uname&quot;: &quot;EmoryUnk&quot;, &quot;messages&quot;: { 
orderedlist: [&quot; love product-b its shortcut-menu is awesome:)&quot;, 
&quot; love ccast its wireless is good&quot; ]} }
+{ &quot;uname&quot;: &quot;WillisWynne&quot;, &quot;messages&quot;: { 
orderedlist: [&quot; love product-b the customization is mind-blowing&quot; ]} }
+{ &quot;uname&quot;: &quot;SuzannaTillson&quot;, &quot;messages&quot;: { 
orderedlist: [&quot; like x-phone the voicemail-service is awesome&quot; ]} }
+{ &quot;uname&quot;: &quot;NicholasStroh&quot;, &quot;messages&quot;: { 
orderedlist: [ ]} }
+{ &quot;uname&quot;: &quot;VonKemble&quot;, &quot;messages&quot;: { 
orderedlist: [&quot; dislike product-b the speed is horrible&quot; ]} }
+</pre></div></div>
+</div></div></div></div>
+<div class="section">
+<h3><a name="Query_4_-_Theta_Join"></a>Query 4 - Theta Join</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+
+<div>
+<div>
+<pre class="source">use dataverse TinySocial;
+
+for $t in dataset TweetMessages
+return {
+    &quot;message&quot;: $t.message-text,
+    &quot;nearby-messages&quot;: for $t2 in dataset TweetMessages
+                       where spatial-distance($t.sender-location, 
$t2.sender-location) &lt;= 1
+                       return { &quot;msgtxt&quot;:$t2.message-text}
+};
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var expression4messages = new FLWOGRExpression()
+    .ForClause( &quot;$t2&quot;, new AExpression(&quot;dataset 
TweetMessages&quot;))
+    .WhereClause( new AExpression(&quot;spatial-distance($t.sender-location, 
$t2.sender-location) &lt;= 1&quot;))
+    .ReturnClause({ &quot;msgtxt&quot; : &quot;$t2.message-text&quot; });
+
+var expression4 = new FLWOGRExpression()
+    .ForClause( &quot;$t&quot;, new AExpression(&quot;dataset 
TweetMessages&quot;))
+    .ReturnClause({
+        &quot;message&quot; : &quot;$t.message-text&quot;,
+        &quot;nearby-messages&quot; : expression4messages
+    });
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ &quot;message&quot;: &quot; hate ccast its voice-clarity 
is OMG:(&quot;, &quot;nearby-messages&quot;: { orderedlist: [{ 
&quot;msgtxt&quot;: &quot; hate ccast its voice-clarity is OMG:(&quot; }, { 
&quot;msgtxt&quot;: &quot; like product-w the speed is good:)&quot; } ]} }
+{ &quot;message&quot;: &quot; like x-phone the voice-clarity is good:)&quot;, 
&quot;nearby-messages&quot;: { orderedlist: [{ &quot;msgtxt&quot;: &quot; like 
x-phone the voice-clarity is good:)&quot; } ]} }
+{ &quot;message&quot;: &quot; like product-y the platform is good&quot;, 
&quot;nearby-messages&quot;: { orderedlist: [{ &quot;msgtxt&quot;: &quot; like 
product-y the platform is good&quot; } ]} }
+{ &quot;message&quot;: &quot; love product-z its customization is 
good:)&quot;, &quot;nearby-messages&quot;: { orderedlist: [{ 
&quot;msgtxt&quot;: &quot; love product-z its customization is good:)&quot; } 
]} }
+{ &quot;message&quot;: &quot; like product-y the voice-command is 
amazing:)&quot;, &quot;nearby-messages&quot;: { orderedlist: [{ 
&quot;msgtxt&quot;: &quot; like product-y the voice-command is amazing:)&quot; 
} ]} }
+{ &quot;message&quot;: &quot; like product-w the speed is good:)&quot;, 
&quot;nearby-messages&quot;: { orderedlist: [{ &quot;msgtxt&quot;: &quot; hate 
ccast its voice-clarity is OMG:(&quot; }, { &quot;msgtxt&quot;: &quot; like 
product-w the speed is good:)&quot; } ]} }
+{ &quot;message&quot;: &quot; love ccast its voicemail-service is 
awesome&quot;, &quot;nearby-messages&quot;: { orderedlist: [{ 
&quot;msgtxt&quot;: &quot; love ccast its voicemail-service is awesome&quot; } 
]} }
+{ &quot;message&quot;: &quot; can't stand product-w its speed is 
terrible:(&quot;, &quot;nearby-messages&quot;: { orderedlist: [{ 
&quot;msgtxt&quot;: &quot; can't stand product-w its speed is terrible:(&quot; 
} ]} }
+{ &quot;message&quot;: &quot; like product-z the shortcut-menu is 
awesome:)&quot;, &quot;nearby-messages&quot;: { orderedlist: [{ 
&quot;msgtxt&quot;: &quot; like product-z the shortcut-menu is awesome:)&quot; 
} ]} }
+{ &quot;message&quot;: &quot; can't stand x-phone its platform is 
terrible&quot;, &quot;nearby-messages&quot;: { orderedlist: [{ 
&quot;msgtxt&quot;: &quot; can't stand x-phone its platform is terrible&quot; } 
]} }
+{ &quot;message&quot;: &quot; like ccast its shortcut-menu is awesome:)&quot;, 
&quot;nearby-messages&quot;: { orderedlist: [{ &quot;msgtxt&quot;: &quot; like 
ccast its shortcut-menu is awesome:)&quot; } ]} }
+{ &quot;message&quot;: &quot; like product-b the voice-command is 
mind-blowing:)&quot;, &quot;nearby-messages&quot;: { orderedlist: [{ 
&quot;msgtxt&quot;: &quot; like product-b the voice-command is 
mind-blowing:)&quot; } ]} }
+</pre></div></div>
+</div></div></div></div>
+<div class="section">
+<h3><a name="Query_5_-_Fuzzy_Join"></a>Query 5 - Fuzzy Join</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+<p>use dataverse TinySocial;</p>
+
+<div>
+<div>
+<pre class="source">set simfunction &quot;edit-distance&quot;;
+set simthreshold &quot;3&quot;;
+
+for $fbu in dataset FacebookUsers
+return {
+    &quot;id&quot;: $fbu.id,
+    &quot;name&quot;: $fbu.name,
+    &quot;similar-users&quot;: for $t in dataset TweetMessages
+                     let $tu := $t.user
+                     where $tu.name ~= $fbu.name
+                    return {
+                        &quot;twitter-screenname&quot;: $tu.screen-name,
+                        &quot;twitter-name&quot;: $tu.name
+                    }
+};
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var similarUsersExpression = new FLWOGRExpression()
+    .ForClause(&quot;$t&quot;, new AExpression(&quot;dataset 
TweetMessages&quot;))
+    .LetClause (&quot;$tu&quot;, new AExpression(&quot;$t.user&quot;))
+    .WhereClause(new AExpression(&quot;$tu.name ~= $fbu.name&quot;))
+    .ReturnClause({
+        &quot;twitter-screenname&quot;: &quot;$tu.screen-name&quot;,
+        &quot;twitter-name&quot;: &quot;$tu.name&quot;
+    });
+
+var expression5 = new FLWOGRExpression()
+    .ForClause (&quot;$fbu&quot;, new AExpression(&quot;dataset 
FacebookUsers&quot;))
+    .ReturnClause(
+        {
+            &quot;id&quot; : &quot;$fbu.id&quot;,
+            &quot;name&quot; : &quot;$fbu.name&quot;,
+            &quot;similar-users&quot; : similarUsersExpression
+        }
+    );
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ &quot;id&quot;: { int32: 1 } , &quot;name&quot;: 
&quot;MargaritaStoddard&quot;, &quot;similar-users&quot;: { orderedlist: [ ]} }
+{ &quot;id&quot;: { int32: 2 } , &quot;name&quot;: &quot;IsbelDull&quot;, 
&quot;similar-users&quot;: { orderedlist: [ ]} }
+{ &quot;id&quot;: { int32: 8 } , &quot;name&quot;: &quot;NilaMilliron&quot;, 
&quot;similar-users&quot;: { orderedlist: [{ &quot;twitter-screenname&quot;: 
&quot;NilaMilliron_tw&quot;, &quot;twitter-name&quot;: &quot;Nila 
Milliron&quot; } ]} }
+{ &quot;id&quot;: { int32: 9 } , &quot;name&quot;: &quot;WoodrowNehling&quot;, 
&quot;similar-users&quot;: { orderedlist: [ ]} }
+{ &quot;id&quot;: { int32: 10 } , &quot;name&quot;: &quot;BramHatch&quot;, 
&quot;similar-users&quot;: { orderedlist: [ ]} }
+{ &quot;id&quot;: { int32: 3 } , &quot;name&quot;: &quot;EmoryUnk&quot;, 
&quot;similar-users&quot;: { orderedlist: [ ]} }
+{ &quot;id&quot;: { int32: 6 } , &quot;name&quot;: &quot;WillisWynne&quot;, 
&quot;similar-users&quot;: { orderedlist: [ ]} }
+{ &quot;id&quot;: { int32: 7 } , &quot;name&quot;: &quot;SuzannaTillson&quot;, 
&quot;similar-users&quot;: { orderedlist: [ ]} }
+{ &quot;id&quot;: { int32: 4 } , &quot;name&quot;: &quot;NicholasStroh&quot;, 
&quot;similar-users&quot;: { orderedlist: [ ]} }
+{ &quot;id&quot;: { int32: 5 } , &quot;name&quot;: &quot;VonKemble&quot;, 
&quot;similar-users&quot;: { orderedlist: [ ]} }
+</pre></div></div>
+</div></div></div></div>
+<div class="section">
+<h3><a name="Query_6_-_Existential_Quantification"></a>Query 6 - Existential 
Quantification</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+
+<div>
+<div>
+<pre class="source">use dataverse TinySocial;
+
+for $fbu in dataset FacebookUsers
+where (some $e in $fbu.employment satisfies is-null($e.end-date))
+return $fbu;
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var expression6 = new FLWOGRExpression()
+    .ForClause (&quot;$fbu&quot;, new AQLClause().set(&quot;dataset 
FacebookUsers&quot;))
+    .WhereClause(
+        new QuantifiedExpression (
+            &quot;some&quot; ,
+            {&quot;$e&quot; : new AExpression(&quot;$fbu.employment&quot;) },
+            new FunctionExpression(&quot;is-null&quot;, new 
AExpression(&quot;$e.end-date&quot;))
+        )
+    )
+    .ReturnClause(&quot;$fbu&quot;);
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ &quot;id&quot;: { int32: 1 } , &quot;alias&quot;: 
&quot;Margarita&quot;, &quot;name&quot;: &quot;MargaritaStoddard&quot;, 
&quot;user-since&quot;: { datetime: 1345457400000}, &quot;friend-ids&quot;: { 
unorderedlist: [{ int32: 2 } , { int32: 3 } , { int32: 6 } , { int32: 10 } ]}, 
&quot;employment&quot;: { orderedlist: [{ &quot;organization-name&quot;: 
&quot;Codetechno&quot;, &quot;start-date&quot;: { date: 1154822400000}, 
&quot;end-date&quot;: null } ]} }
+{ &quot;id&quot;: { int32: 2 } , &quot;alias&quot;: &quot;Isbel&quot;, 
&quot;name&quot;: &quot;IsbelDull&quot;, &quot;user-since&quot;: { datetime: 
1295691000000}, &quot;friend-ids&quot;: { unorderedlist: [{ int32: 1 } , { 
int32: 4 } ]}, &quot;employment&quot;: { orderedlist: [{ 
&quot;organization-name&quot;: &quot;Hexviafind&quot;, &quot;start-date&quot;: 
{ date: 1272326400000}, &quot;end-date&quot;: null } ]} }
+{ &quot;id&quot;: { int32: 8 } , &quot;alias&quot;: &quot;Nila&quot;, 
&quot;name&quot;: &quot;NilaMilliron&quot;, &quot;user-since&quot;: { datetime: 
1199182200000}, &quot;friend-ids&quot;: { unorderedlist: [{ int32: 3 } ]}, 
&quot;employment&quot;: { orderedlist: [{ &quot;organization-name&quot;: 
&quot;Plexlane&quot;, &quot;start-date&quot;: { date: 1267315200000}, 
&quot;end-date&quot;: null } ]} }
+{ &quot;id&quot;: { int32: 6 } , &quot;alias&quot;: &quot;Willis&quot;, 
&quot;name&quot;: &quot;WillisWynne&quot;, &quot;user-since&quot;: { datetime: 
1105956600000}, &quot;friend-ids&quot;: { unorderedlist: [{ int32: 1 } , { 
int32: 3 } , { int32: 7 } ]}, &quot;employment&quot;: { orderedlist: [{ 
&quot;organization-name&quot;: &quot;jaydax&quot;, &quot;start-date&quot;: { 
date: 1242345600000}, &quot;end-date&quot;: null } ]} }
+{ &quot;id&quot;: { int32: 7 } , &quot;alias&quot;: &quot;Suzanna&quot;, 
&quot;name&quot;: &quot;SuzannaTillson&quot;, &quot;user-since&quot;: { 
datetime: 1344334200000}, &quot;friend-ids&quot;: { unorderedlist: [{ int32: 6 
} ]}, &quot;employment&quot;: { orderedlist: [{ &quot;organization-name&quot;: 
&quot;Labzatron&quot;, &quot;start-date&quot;: { date: 1303171200000}, 
&quot;end-date&quot;: null } ]} }
+{ &quot;id&quot;: { int32: 4 } , &quot;alias&quot;: &quot;Nicholas&quot;, 
&quot;name&quot;: &quot;NicholasStroh&quot;, &quot;user-since&quot;: { 
datetime: 1293444600000}, &quot;friend-ids&quot;: { unorderedlist: [{ int32: 2 
} ]}, &quot;employment&quot;: { orderedlist: [{ &quot;organization-name&quot;: 
&quot;Zamcorporation&quot;, &quot;start-date&quot;: { date: 1275955200000}, 
&quot;end-date&quot;: null } ]} }
+{ &quot;id&quot;: { int32: 5 } , &quot;alias&quot;: &quot;Von&quot;, 
&quot;name&quot;: &quot;VonKemble&quot;, &quot;user-since&quot;: { datetime: 
1262686200000}, &quot;friend-ids&quot;: { unorderedlist: [{ int32: 3 } , { 
int32: 6 } , { int32: 10 } ]}, &quot;employment&quot;: { orderedlist: [{ 
&quot;organization-name&quot;: &quot;Kongreen&quot;, &quot;start-date&quot;: { 
date: 1290816000000}, &quot;end-date&quot;: null } ]} }
+</pre></div></div>
+</div></div></div></div>
+<div class="section">
+<h3><a name="Query_7_-_Universal_Quantification"></a>Query 7 - Universal 
Quantification</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+
+<div>
+<div>
+<pre class="source">use dataverse TinySocial;
+
+for $fbu in dataset FacebookUsers
+where (every $e in $fbu.employment satisfies not(is-null($e.end-date)))
+return $fbu;
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var expression7 = new FLWOGRExpression()
+    .ForClause(&quot;$fbu&quot;, new AExpression(&quot;dataset 
FacebookUsers&quot;))
+    .WhereClause(
+        new QuantifiedExpression (
+            &quot;every&quot; ,
+            {&quot;$e&quot; : new AExpression(&quot;$fbu.employment&quot;) },
+            new FunctionExpression(&quot;not&quot;, new 
FunctionExpression(&quot;is-null&quot;, new 
AExpression(&quot;$e.end-date&quot;)))
+        )
+    )
+    .ReturnClause(&quot;$fbu&quot;);
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ &quot;id&quot;: { int32: 9 } , &quot;alias&quot;: 
&quot;Woodrow&quot;, &quot;name&quot;: &quot;WoodrowNehling&quot;, 
&quot;user-since&quot;: { datetime: 1127211000000}, &quot;friend-ids&quot;: { 
unorderedlist: [{ int32: 3 } , { int32: 10 } ]}, &quot;employment&quot;: { 
orderedlist: [{ &quot;organization-name&quot;: &quot;Zuncan&quot;, 
&quot;start-date&quot;: { date: 1050969600000}, &quot;end-date&quot;: { date: 
1260662400000} } ]} }
+{ &quot;id&quot;: { int32: 10 } , &quot;alias&quot;: &quot;Bram&quot;, 
&quot;name&quot;: &quot;BramHatch&quot;, &quot;user-since&quot;: { datetime: 
1287223800000}, &quot;friend-ids&quot;: { unorderedlist: [{ int32: 1 } , { 
int32: 5 } , { int32: 9 } ]}, &quot;employment&quot;: { orderedlist: [{ 
&quot;organization-name&quot;: &quot;physcane&quot;, &quot;start-date&quot;: { 
date: 1181001600000}, &quot;end-date&quot;: { date: 1320451200000} } ]} }
+{ &quot;id&quot;: { int32: 3 } , &quot;alias&quot;: &quot;Emory&quot;, 
&quot;name&quot;: &quot;EmoryUnk&quot;, &quot;user-since&quot;: { datetime: 
1341915000000}, &quot;friend-ids&quot;: { unorderedlist: [{ int32: 1 } , { 
int32: 5 } , { int32: 8 } , { int32: 9 } ]}, &quot;employment&quot;: { 
orderedlist: [{ &quot;organization-name&quot;: &quot;geomedia&quot;, 
&quot;start-date&quot;: { date: 1276732800000}, &quot;end-date&quot;: { date: 
1264464000000} } ]} }
+</pre></div></div>
+</div></div></div></div>
+<div class="section">
+<h3><a name="Query_8_-_Simple_Aggregation"></a>Query 8 - Simple 
Aggregation</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+
+<div>
+<div>
+<pre class="source">use dataverse TinySocial;
+
+count(for $fbu in dataset FacebookUsers return $fbu);
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var expression8 = new FunctionExpression(
+    &quot;count&quot;,
+    new FLWOGRExpression()
+        .ForClause(&quot;$fbu&quot;, new AExpression(&quot;dataset 
FacebookUsers&quot;))
+        .ReturnClause(&quot;$fbu&quot;)
+);
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ int64: 10 }
+</pre></div></div>
+</div></div></div></div>
+<div class="section">
+<h3><a name="Query_9-A_-_Grouping_and_Aggregation"></a>Query 9-A - Grouping 
and Aggregation</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+
+<div>
+<div>
+<pre class="source">use dataverse TinySocial;
+
+for $t in dataset TweetMessages
+group by $uid := $t.user.screen-name with $t
+return {
+    &quot;user&quot;: $uid,
+    &quot;count&quot;: count($t)
+};
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var expression9a = new FLWOGRExpression()
+    .ForClause(&quot;$t&quot;, new AExpression(&quot;dataset 
TweetMessages&quot;))
+    .GroupClause(&quot;$uid&quot;, new 
AExpression(&quot;$t.user.screen-name&quot;), &quot;with&quot;, &quot;$t&quot;)
+    .ReturnClause(
+        {
+            &quot;user&quot; : &quot;$uid&quot;,
+            &quot;count&quot; : new FunctionExpression(&quot;count&quot;, new 
AExpression(&quot;$t&quot;))
+        }
+    );
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ &quot;user&quot;: &quot;ColineGeyer@63&quot;, 
&quot;count&quot;: { int64: 3 } }
+{ &quot;user&quot;: &quot;OliJackson_512&quot;, &quot;count&quot;: { int64: 1 
} }
+{ &quot;user&quot;: &quot;NilaMilliron_tw&quot;, &quot;count&quot;: { int64: 1 
} }
+{ &quot;user&quot;: &quot;ChangEwing_573&quot;, &quot;count&quot;: { int64: 1 
} }
+{ &quot;user&quot;: &quot;NathanGiesen@211&quot;, &quot;count&quot;: { int64: 
6 } }
+</pre></div></div>
+</div></div></div></div>
+<div class="section">
+<h3><a name="Query_9-B_-_.28Hash-Based.29_Grouping_and_Aggregation"></a>Query 
9-B - (Hash-Based) Grouping and Aggregation</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+
+<div>
+<div>
+<pre class="source">use dataverse TinySocial;
+
+for $t in dataset TweetMessages
+/*+ hash*/
+group by $uid := $t.user.screen-name with $t
+return {
+    &quot;user&quot;: $uid,
+    &quot;count&quot;: count($t)
+};
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var expression9b = new FLWOGRExpression()
+    .ForClause(&quot;$t&quot;, new AExpression(&quot;dataset 
TweetMessages&quot;))
+    .AQLClause(&quot;/*+ hash*/&quot;)
+    .GroupClause(&quot;$uid&quot;, new 
AExpression(&quot;$t.user.screen-name&quot;), &quot;with&quot;, &quot;$t&quot;)
+    .ReturnClause(
+        {
+            &quot;user&quot; : &quot;$uid&quot;,
+            &quot;count&quot; : new FunctionExpression(&quot;count&quot;, new 
AExpression(&quot;$t&quot;))
+        }
+    );
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ &quot;user&quot;: &quot;ColineGeyer@63&quot;, 
&quot;count&quot;: { int64: 3 } }
+{ &quot;user&quot;: &quot;OliJackson_512&quot;, &quot;count&quot;: { int64: 1 
} }
+{ &quot;user&quot;: &quot;NilaMilliron_tw&quot;, &quot;count&quot;: { int64: 1 
} }
+{ &quot;user&quot;: &quot;ChangEwing_573&quot;, &quot;count&quot;: { int64: 1 
} }
+{ &quot;user&quot;: &quot;NathanGiesen@211&quot;, &quot;count&quot;: { int64: 
6 } }
+</pre></div></div>
+</div></div></div></div>
+<div class="section">
+<h3><a name="Query_10_-_Grouping_and_Limits"></a>Query 10 - Grouping and 
Limits</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+
+<div>
+<div>
+<pre class="source">use dataverse TinySocial;
+
+for $t in dataset TweetMessages
+group by $uid := $t.user.screen-name with $t
+let $c := count($t)
+order by $c desc
+limit 3
+return {
+    &quot;user&quot;: $uid,
+    &quot;count&quot;: $c
+};
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var expression10 = new FLWOGRExpression()
+    .ForClause(&quot;$t&quot;, new AExpression(&quot;dataset 
TweetMessages&quot;))
+    .GroupClause(&quot;$uid&quot;, new 
AExpression(&quot;$t.user.screen-name&quot;), &quot;with&quot;, &quot;$t&quot;)
+    .LetClause(&quot;$c&quot;, new FunctionExpression(&quot;count&quot;, new 
AExpression(&quot;$t&quot;)))
+    .OrderbyClause( new AExpression(&quot;$c&quot;), &quot;desc&quot; )
+    .LimitClause(new AExpression(&quot;3&quot;))
+    .ReturnClause(
+        {
+            &quot;user&quot; : &quot;$uid&quot;,
+            &quot;count&quot; : &quot;$c&quot;
+        }
+    );
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ &quot;user&quot;: &quot;NathanGiesen@211&quot;, 
&quot;count&quot;: { int64: 6 } }
+{ &quot;user&quot;: &quot;ColineGeyer@63&quot;, &quot;count&quot;: { int64: 3 
} }
+{ &quot;user&quot;: &quot;NilaMilliron_tw&quot;, &quot;count&quot;: { int64: 1 
} }
+</pre></div></div>
+</div></div></div></div>
+<div class="section">
+<h3><a name="Query_11_-_Left_Outer_Fuzzy_Join"></a>Query 11 - Left Outer Fuzzy 
Join</h3>
+<div class="section">
+<div class="section">
+<div class="section">
+<h6><a name="AQL"></a>AQL</h6>
+
+<div>
+<div>
+<pre class="source">use dataverse TinySocial;
+
+set simfunction &quot;jaccard&quot;;
+set simthreshold &quot;0.3&quot;;
+
+for $t in dataset TweetMessages
+return {
+    &quot;tweet&quot;: $t,
+    &quot;similar-tweets&quot;: for $t2 in dataset TweetMessages
+    where  $t2.referred-topics ~= $t.referred-topics
+    and $t2.tweetid != $t.tweetid
+    return $t2.referred-topics
+};
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="JS"></a>JS</h6>
+
+<div>
+<div>
+<pre class="source">var expression11 = new FLWOGRExpression()
+    .ForClause( &quot;$t&quot;, new AExpression(&quot;dataset 
TweetMessages&quot;))
+    .ReturnClause({
+        &quot;tweet&quot;         : new AExpression(&quot;$t&quot;),
+        &quot;similar-tweets&quot;: new FLWOGRExpression()
+                            .ForClause( &quot;$t2&quot;, new 
AExpression(&quot;dataset TweetMessages&quot;))
+                            .WhereClause().and(
+                                new AExpression(&quot;$t2.referred-topics ~= 
$t.referred-topics&quot;),
+                                new AExpression(&quot;$t2.tweetid != 
$t.tweetid&quot;)
+                             )
+                            .ReturnClause(&quot;$t2.referred-topics&quot;)
+    });
+</pre></div></div>
+</div>
+<div class="section">
+<h6><a name="Results"></a>Results</h6>
+
+<div>
+<div>
+<pre class="source">{ &quot;tweet&quot;: { &quot;tweetid&quot;: 
&quot;10&quot;, &quot;user&quot;: { &quot;screen-name&quot;: 
&quot;ColineGeyer@63&quot;, &quot;lang&quot;: &quot;en&quot;, 
&quot;friends_count&quot;: { int32: 121 } , &quot;statuses_count&quot;: { 
int32: 362 } , &quot;name&quot;: &quot;Coline Geyer&quot;, 
&quot;followers_count&quot;: { int32: 17159 } }, &quot;sender-location&quot;: { 
point: [29.15, 76.53]}, &quot;send-time&quot;: { datetime: 1201342200000}, 
&quot;referred-topics&quot;: { unorderedlist: [&quot;ccast&quot;, 
&quot;voice-clarity&quot; ]}, &quot;message-text&quot;: &quot; hate ccast its 
voice-clarity is OMG:(&quot; }, &quot;similar-tweets&quot;: { orderedlist: [{ 
unorderedlist: [&quot;x-phone&quot;, &quot;voice-clarity&quot; ]}, { 
unorderedlist: [&quot;ccast&quot;, &quot;shortcut-menu&quot; ]}, { 
unorderedlist: [&quot;ccast&quot;, &quot;voicemail-service&quot; ]} ]} }
+{ &quot;tweet&quot;: { &quot;tweetid&quot;: &quot;6&quot;, &quot;user&quot;: { 
&quot;screen-name&quot;: &quot;ColineGeyer@63&quot;, &quot;lang&quot;: 
&quot;en&quot;, &quot;friends_count&quot;: { int32: 121 } , 
&quot;statuses_count&quot;: { int32: 362 } , &quot;name&quot;: &quot;Coline 
Geyer&quot;, &quot;followers_count&quot;: { int32: 17159 } }, 
&quot;sender-location&quot;: { point: [47.51, 83.99]}, &quot;send-time&quot;: { 
datetime: 1273227000000}, &quot;referred-topics&quot;: { unorderedlist: 
[&quot;x-phone&quot;, &quot;voice-clarity&quot; ]}, &quot;message-text&quot;: 
&quot; like x-phone the voice-clarity is good:)&quot; }, 
&quot;similar-tweets&quot;: { orderedlist: [{ unorderedlist: 
[&quot;ccast&quot;, &quot;voice-clarity&quot; ]}, { unorderedlist: 
[&quot;x-phone&quot;, &quot;platform&quot; ]} ]} }
+{ &quot;tweet&quot;: { &quot;tweetid&quot;: &quot;7&quot;, &quot;user&quot;: { 
&quot;screen-name&quot;: &quot;ChangEwing_573&quot;, &quot;lang&quot;: 
&quot;en&quot;, &quot;friends_count&quot;: { int32: 182 } , 
&quot;statuses_count&quot;: { int32: 394 } , &quot;name&quot;: &quot;Chang 
Ewing&quot;, &quot;followers_count&quot;: { int32: 32136 } }, 
&quot;sender-location&quot;: { point: [36.21, 72.6]}, &quot;send-time&quot;: { 
datetime: 1314267000000}, &quot;referred-topics&quot;: { unorderedlist: 
[&quot;product-y&quot;, &quot;platform&quot; ]}, &quot;message-text&quot;: 
&quot; like product-y the platform is good&quot; }, &quot;similar-tweets&quot;: 
{ orderedlist: [{ unorderedlist: [&quot;x-phone&quot;, &quot;platform&quot; ]}, 
{ unorderedlist: [&quot;product-y&quot;, &quot;voice-command&quot; ]} ]} }
+{ &quot;tweet&quot;: { &quot;tweetid&quot;: &quot;1&quot;, &quot;user&quot;: { 
&quot;screen-name&quot;: &quot;NathanGiesen@211&quot;, &quot;lang&quot;: 
&quot;en&quot;, &quot;friends_count&quot;: { int32: 39339 } , 
&quot;statuses_count&quot;: { int32: 473 } , &quot;name&quot;: &quot;Nathan 
Giesen&quot;, &quot;followers_count&quot;: { int32: 49416 } }, 
&quot;sender-location&quot;: { point: [47.44, 80.65]}, &quot;send-time&quot;: { 
datetime: 1209204600000}, &quot;referred-topics&quot;: { unorderedlist: 
[&quot;product-z&quot;, &quot;customization&quot; ]}, &quot;message-text&quot;: 
&quot; love product-z its customization is good:)&quot; }, 
&quot;similar-tweets&quot;: { orderedlist: [{ unorderedlist: 
[&quot;product-z&quot;, &quot;shortcut-menu&quot; ]} ]} }
+{ &quot;tweet&quot;: { &quot;tweetid&quot;: &quot;12&quot;, &quot;user&quot;: 
{ &quot;screen-name&quot;: &quot;OliJackson_512&quot;, &quot;lang&quot;: 
&quot;en&quot;, &quot;friends_count&quot;: { int32: 445 } , 
&quot;statuses_count&quot;: { int32: 164 } , &quot;name&quot;: &quot;Oli 
Jackson&quot;, &quot;followers_count&quot;: { int32: 22649 } }, 
&quot;sender-location&quot;: { point: [24.82, 94.63]}, &quot;send-time&quot;: { 
datetime: 1266055800000}, &quot;referred-topics&quot;: { unorderedlist: 
[&quot;product-y&quot;, &quot;voice-command&quot; ]}, &quot;message-text&quot;: 
&quot; like product-y the voice-command is amazing:)&quot; }, 
&quot;similar-tweets&quot;: { orderedlist: [{ unorderedlist: 
[&quot;product-y&quot;, &quot;platform&quot; ]}, { unorderedlist: 
[&quot;product-b&quot;, &quot;voice-command&quot; ]} ]} }
+{ &quot;tweet&quot;: { &quot;tweetid&quot;: &quot;3&quot;, &quot;user&quot;: { 
&quot;screen-name&quot;: &quot;NathanGiesen@211&quot;, &quot;lang&quot;: 
&quot;en&quot;, &quot;friends_count&quot;: { int32: 39339 } , 
&quot;statuses_count&quot;: { int32: 473 } , &quot;name&quot;: &quot;Nathan 
Giesen&quot;, &quot;followers_count&quot;: { int32: 49416 } }, 
&quot;sender-location&quot;: { point: [29.72, 75.8]}, &quot;send-time&quot;: { 
datetime: 1162635000000}, &quot;referred-topics&quot;: { unorderedlist: 
[&quot;product-w&quot;, &quot;speed&quot; ]}, &quot;message-text&quot;: &quot; 
like product-w the speed is good:)&quot; }, &quot;similar-tweets&quot;: { 
orderedlist: [{ unorderedlist: [&quot;product-w&quot;, &quot;speed&quot; ]} ]} }
+{ &quot;tweet&quot;: { &quot;tweetid&quot;: &quot;9&quot;, &quot;user&quot;: { 
&quot;screen-name&quot;: &quot;NathanGiesen@211&quot;, &quot;lang&quot;: 
&quot;en&quot;, &quot;friends_count&quot;: { int32: 39339 } , 
&quot;statuses_count&quot;: { int32: 473 } , &quot;name&quot;: &quot;Nathan 
Giesen&quot;, &quot;followers_count&quot;: { int32: 49416 } }, 
&quot;sender-location&quot;: { point: [36.86, 74.62]}, &quot;send-time&quot;: { 
datetime: 1342865400000}, &quot;referred-topics&quot;: { unorderedlist: 
[&quot;ccast&quot;, &quot;voicemail-service&quot; ]}, &quot;message-text&quot;: 
&quot; love ccast its voicemail-service is awesome&quot; }, 
&quot;similar-tweets&quot;: { orderedlist: [{ unorderedlist: 
[&quot;ccast&quot;, &quot;voice-clarity&quot; ]}, { unorderedlist: 
[&quot;ccast&quot;, &quot;shortcut-menu&quot; ]} ]} }
+{ &quot;tweet&quot;: { &quot;tweetid&quot;: &quot;5&quot;, &quot;user&quot;: { 
&quot;screen-name&quot;: &quot;NathanGiesen@211&quot;, &quot;lang&quot;: 
&quot;en&quot;, &quot;friends_count&quot;: { int32: 39339 } , 
&quot;statuses_count&quot;: { int32: 473 } , &quot;name&quot;: &quot;Nathan 
Giesen&quot;, &quot;followers_count&quot;: { int32: 49416 } }, 
&quot;sender-location&quot;: { point: [40.09, 92.69]}, &quot;send-time&quot;: { 
datetime: 1154686200000}, &quot;referred-topics&quot;: { unorderedlist: 
[&quot;product-w&quot;, &quot;speed&quot; ]}, &quot;message-text&quot;: &quot; 
can't stand product-w its speed is terrible:(&quot; }, 
&quot;similar-tweets&quot;: { orderedlist: [{ unorderedlist: 
[&quot;product-w&quot;, &quot;speed&quot; ]} ]} }
+{ &quot;tweet&quot;: { &quot;tweetid&quot;: &quot;8&quot;, &quot;user&quot;: { 
&quot;screen-name&quot;: &quot;NathanGiesen@211&quot;, &quot;lang&quot;: 
&quot;en&quot;, &quot;friends_count&quot;: { int32: 39339 } , 
&quot;statuses_count&quot;: { int32: 473 } , &quot;name&quot;: &quot;Nathan 
Giesen&quot;, &quot;followers_count&quot;: { int32: 49416 } }, 
&quot;sender-location&quot;: { point: [46.05, 93.34]}, &quot;send-time&quot;: { 
datetime: 1129284600000}, &quot;referred-topics&quot;: { unorderedlist: 
[&quot;product-z&quot;, &quot;shortcut-menu&quot; ]}, &quot;message-text&quot;: 
&quot; like product-z the shortcut-menu is awesome:)&quot; }, 
&quot;similar-tweets&quot;: { orderedlist: [{ unorderedlist: 
[&quot;ccast&quot;, &quot;shortcut-menu&quot; ]}, { unorderedlist: 
[&quot;product-z&quot;, &quot;customization&quot; ]} ]} }
+{ &quot;tweet&quot;: { &quot;tweetid&quot;: &quot;11&quot;, &quot;user&quot;: 
{ &quot;screen-name&quot;: &quot;NilaMilliron_tw&quot;, &quot;lang&quot;: 
&quot;en&quot;, &quot;friends_count&quot;: { int32: 445 } , 
&quot;statuses_count&quot;: { int32: 164 } , &quot;name&quot;: &quot;Nila 
Milliron&quot;, &quot;followers_count&quot;: { int32: 22649 } }, 
&quot;sender-location&quot;: { point: [37.59, 68.42]}, &quot;send-time&quot;: { 
datetime: 1205057400000}, &quot;referred-topics&quot;: { unorderedlist: 
[&quot;x-phone&quot;, &quot;platform&quot; ]}, &quot;message-text&quot;: &quot; 
can't stand x-phone its platform is terrible&quot; }, 
&quot;similar-tweets&quot;: { orderedlist: [{ unorderedlist: 
[&quot;x-phone&quot;, &quot;voice-clarity&quot; ]}, { unorderedlist: 
[&quot;product-y&quot;, &quot;platform&quot; ]} ]} }
+{ &quot;tweet&quot;: { &quot;tweetid&quot;: &quot;2&quot;, &quot;user&quot;: { 
&quot;screen-name&quot;: &quot;ColineGeyer@63&quot;, &quot;lang&quot;: 
&quot;en&quot;, &quot;friends_count&quot;: { int32: 121 } , 
&quot;statuses_count&quot;: { int32: 362 } , &quot;name&quot;: &quot;Coline 
Geyer&quot;, &quot;followers_count&quot;: { int32: 17159 } }, 
&quot;sender-location&quot;: { point: [32.84, 67.14]}, &quot;send-time&quot;: { 
datetime: 1273745400000}, &quot;referred-topics&quot;: { unorderedlist: 
[&quot;ccast&quot;, &quot;shortcut-menu&quot; ]}, &quot;message-text&quot;: 
&quot; like ccast its shortcut-menu is awesome:)&quot; }, 
&quot;similar-tweets&quot;: { orderedlist: [{ unorderedlist: 
[&quot;product-z&quot;, &quot;shortcut-menu&quot; ]}, { unorderedlist: 
[&quot;ccast&quot;, &quot;voice-clarity&quot; ]}, { unorderedlist: 
[&quot;ccast&quot;, &quot;voicemail-service&quot; ]} ]} }
+{ &quot;tweet&quot;: { &quot;tweetid&quot;: &quot;4&quot;, &quot;user&quot;: { 
&quot;screen-name&quot;: &quot;NathanGiesen@211&quot;, &quot;lang&quot;: 
&quot;en&quot;, &quot;friends_count&quot;: { int32: 39339 } , 
&quot;statuses_count&quot;: { int32: 473 } , &quot;name&quot;: &quot;Nathan 
Giesen&quot;, &quot;followers_count&quot;: { int32: 49416 } }, 
&quot;sender-location&quot;: { point: [39.28, 70.48]}, &quot;send-time&quot;: { 
datetime: 1324894200000}, &quot;referred-topics&quot;: { unorderedlist: 
[&quot;product-b&quot;, &quot;voice-command&quot; ]}, &quot;message-text&quot;: 
&quot; like product-b the voice-command is mind-blowing:)&quot; }, 
&quot;similar-tweets&quot;: { orderedlist: [{ unorderedlist: 
[&quot;product-y&quot;, &quot;voice-command&quot; ]} ]} }
+</pre></div></div></div></div></div></div></div>
+        </div>
+      </div>
+    </div>
+    <hr/>
+    <footer>
+      <div class="container-fluid">
+        <div class="row-fluid">
+<div class="row-fluid">Apache AsterixDB, AsterixDB, Apache, the Apache
+        feather logo, and the Apache AsterixDB project logo are either
+        registered trademarks or trademarks of The Apache Software
+        Foundation in the United States and other countries.
+        All other marks mentioned may be trademarks or registered
+        trademarks of their respective owners.
+      </div>
+        </div>
+      </div>
+    </footer>
+  </body>
+</html>

Reply via email to