blob: 42a828153bf8f65feecc5422d6698bce36c10e70 [file] [log] [blame]
Ian Maxon9c40a662018-02-09 12:42:56 -08001<!DOCTYPE html>
2<!--
3 | Generated by Apache Maven Doxia at 2018-02-09
4 | Rendered using Apache Maven Fluido Skin 1.3.0
5-->
6<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7 <head>
8 <meta charset="UTF-8" />
9 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
10 <meta name="Date-Revision-yyyymmdd" content="20180209" />
11 <meta http-equiv="Content-Language" content="en" />
12 <title>AsterixDB &#x2013; AsterixDB Javascript SDK</title>
13 <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.0.min.css" />
14 <link rel="stylesheet" href="../css/site.css" />
15 <link rel="stylesheet" href="../css/print.css" media="print" />
16
17
18 <script type="text/javascript" src="../js/apache-maven-fluido-1.3.0.min.js"></script>
19
20
21
Ian Maxon9c40a662018-02-09 12:42:56 -080022
Ian Maxon9c40a662018-02-09 12:42:56 -080023
24 </head>
25 <body class="topBarDisabled">
26
27
28
29
30 <div class="container-fluid">
31 <div id="banner">
32 <div class="pull-left">
33 <a href=".././" id="bannerLeft">
34 <img src="../images/asterixlogo.png" alt="AsterixDB"/>
35 </a>
36 </div>
37 <div class="pull-right"> </div>
38 <div class="clear"><hr/></div>
39 </div>
40
41 <div id="breadcrumbs">
42 <ul class="breadcrumb">
43
44
45 <li id="publishDate">Last Published: 2018-02-09</li>
46
47
48
49 <li id="projectVersion" class="pull-right">Version: 0.9.3</li>
50
51 <li class="divider pull-right">|</li>
52
53 <li class="pull-right"> <a href="../index.html" title="Documentation Home">
54 Documentation Home</a>
55 </li>
56
57 </ul>
58 </div>
59
60
61 <div class="row-fluid">
62 <div id="leftColumn" class="span3">
63 <div class="well sidebar-nav">
64
65
66 <ul class="nav nav-list">
67 <li class="nav-header">Get Started - Installation</li>
68
69 <li>
70
71 <a href="../ncservice.html" title="Option 1: using NCService">
72 <i class="none"></i>
73 Option 1: using NCService</a>
74 </li>
75
76 <li>
77
78 <a href="../ansible.html" title="Option 2: using Ansible">
79 <i class="none"></i>
80 Option 2: using Ansible</a>
81 </li>
82
83 <li>
84
85 <a href="../aws.html" title="Option 3: using Amazon Web Services">
86 <i class="none"></i>
87 Option 3: using Amazon Web Services</a>
88 </li>
89
90 <li>
91
92 <a href="../yarn.html" title="Option 4: using YARN">
93 <i class="none"></i>
94 Option 4: using YARN</a>
95 </li>
96
97 <li>
98
99 <a href="../install.html" title="Option 5: using Managix (deprecated)">
100 <i class="none"></i>
101 Option 5: using Managix (deprecated)</a>
102 </li>
103 <li class="nav-header">AsterixDB Primer</li>
104
105 <li>
106
107 <a href="../sqlpp/primer-sqlpp.html" title="Option 1: using SQL++">
108 <i class="none"></i>
109 Option 1: using SQL++</a>
110 </li>
111
112 <li>
113
114 <a href="../aql/primer.html" title="Option 2: using AQL">
115 <i class="none"></i>
116 Option 2: using AQL</a>
117 </li>
118 <li class="nav-header">Data Model</li>
119
120 <li>
121
122 <a href="../datamodel.html" title="The Asterix Data Model">
123 <i class="none"></i>
124 The Asterix Data Model</a>
125 </li>
126 <li class="nav-header">Queries - SQL++</li>
127
128 <li>
129
130 <a href="../sqlpp/manual.html" title="The SQL++ Query Language">
131 <i class="none"></i>
132 The SQL++ Query Language</a>
133 </li>
134
135 <li>
136
137 <a href="../sqlpp/builtins.html" title="Builtin Functions">
138 <i class="none"></i>
139 Builtin Functions</a>
140 </li>
141 <li class="nav-header">Queries - AQL</li>
142
143 <li>
144
145 <a href="../aql/manual.html" title="The Asterix Query Language (AQL)">
146 <i class="none"></i>
147 The Asterix Query Language (AQL)</a>
148 </li>
149
150 <li>
151
152 <a href="../aql/builtins.html" title="Builtin Functions">
153 <i class="none"></i>
154 Builtin Functions</a>
155 </li>
156 <li class="nav-header">API/SDK</li>
157
158 <li>
159
160 <a href="../api.html" title="HTTP API">
161 <i class="none"></i>
162 HTTP API</a>
163 </li>
164
165 <li>
166
167 <a href="../csv.html" title="CSV Output">
168 <i class="none"></i>
169 CSV Output</a>
170 </li>
171 <li class="nav-header">Advanced Features</li>
172
173 <li>
174
175 <a href="../aql/fulltext.html" title="Support of Full-text Queries">
176 <i class="none"></i>
177 Support of Full-text Queries</a>
178 </li>
179
180 <li>
181
182 <a href="../aql/externaldata.html" title="Accessing External Data">
183 <i class="none"></i>
184 Accessing External Data</a>
185 </li>
186
187 <li>
188
189 <a href="../feeds/tutorial.html" title="Support for Data Ingestion">
190 <i class="none"></i>
191 Support for Data Ingestion</a>
192 </li>
193
194 <li>
195
196 <a href="../udf.html" title="User Defined Functions">
197 <i class="none"></i>
198 User Defined Functions</a>
199 </li>
200
201 <li>
202
203 <a href="../aql/filters.html" title="Filter-Based LSM Index Acceleration">
204 <i class="none"></i>
205 Filter-Based LSM Index Acceleration</a>
206 </li>
207
208 <li>
209
210 <a href="../aql/similarity.html" title="Support of Similarity Queries">
211 <i class="none"></i>
212 Support of Similarity Queries</a>
213 </li>
214 </ul>
215
216
217
218 <hr class="divider" />
219
220 <div id="poweredBy">
221 <div class="clear"></div>
222 <div class="clear"></div>
223 <div class="clear"></div>
224 <a href=".././" title="AsterixDB" class="builtBy">
225 <img class="builtBy" alt="AsterixDB" src="../images/asterixlogo.png" />
226 </a>
227 </div>
228 </div>
229 </div>
230
231
232 <div id="bodyColumn" class="span9" >
233
234 <!-- ! Licensed to the Apache Software Foundation (ASF) under one
235 ! or more contributor license agreements. See the NOTICE file
236 ! distributed with this work for additional information
237 ! regarding copyright ownership. The ASF licenses this file
238 ! to you under the Apache License, Version 2.0 (the
239 ! "License"); you may not use this file except in compliance
240 ! with the License. You may obtain a copy of the License at
241 !
242 ! http://www.apache.org/licenses/LICENSE-2.0
243 !
244 ! Unless required by applicable law or agreed to in writing,
245 ! software distributed under the License is distributed on an
246 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
247 ! KIND, either express or implied. See the License for the
248 ! specific language governing permissions and limitations
249 ! under the License.
250 ! --><h1>AsterixDB Javascript SDK</h1>
251<div class="section">
252<h2><a name="Obtaining_and_Including"></a>Obtaining and Including</h2>
253<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>
254
255<div class="source">
256<div class="source">
257<pre>&lt;script src=&quot;path/to/asterix-sdk-stable.js&quot;&gt;&lt;/script&gt;
258</pre></div></div></div>
259<div class="section">
260<h2><a name="Interactive_Demos"></a>Interactive Demos</h2>
261<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>
262
263<ul>
264
265<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>
266
267<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>
268</ul></div>
269<div class="section">
270<h2><a name="The_javascript_SDK:_by_example"></a>The javascript SDK: by example</h2>
271<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>
272<div class="section">
273<h3><a name="Query_0-A_-_Exact-Match_Lookup"></a>Query 0-A - Exact-Match Lookup</h3>
274<div class="section">
275<div class="section">
276<div class="section">
277<h6><a name="AQL"></a>AQL</h6>
278
279<div class="source">
280<div class="source">
281<pre>use dataverse TinySocial;
282
283for $user in dataset FacebookUsers
284where $user.id = 8
285return $user;
286</pre></div></div></div>
287<div class="section">
288<h6><a name="JS"></a>JS</h6>
289
290<div class="source">
291<div class="source">
292<pre>var expression0a = new FLWOGRExpression()
293 .ForClause(&quot;$user&quot;, new AExpression(&quot;dataset FacebookUsers&quot;))
294 .WhereClause(new AExpression(&quot;$user.id = 8&quot;))
295 .ReturnClause(&quot;$user&quot;);
296</pre></div></div></div>
297<div class="section">
298<h6><a name="Results"></a>Results</h6>
299
300<div class="source">
301<div class="source">
302<pre>{ &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 } ]} }
303</pre></div></div></div></div></div></div>
304<div class="section">
305<h3><a name="Query_0-B_-_Range_Scan"></a>Query 0-B - Range Scan</h3>
306<div class="section">
307<div class="section">
308<div class="section">
309<h6><a name="AQL"></a>AQL</h6>
310
311<div class="source">
312<div class="source">
313<pre>use dataverse TinySocial;
314
315for $user in dataset FacebookUsers
316where $user.id &gt;= 2 and $user.id &lt;= 4
317return $user;
318</pre></div></div></div>
319<div class="section">
320<h6><a name="JS"></a>JS</h6>
321
322<div class="source">
323<div class="source">
324<pre>var expression0b = new FLWOGRExpression()
325 .ForClause(&quot;$user&quot;, new AExpression(&quot;dataset FacebookUsers&quot;))
326 .WhereClause().and(new AExpression(&quot;$user.id &gt;= 2&quot;), new AExpression(&quot;$user.id &lt;= 4&quot;))
327 .ReturnClause(&quot;$user&quot;);
328</pre></div></div></div>
329<div class="section">
330<h6><a name="Results"></a>Results</h6>
331
332<div class="source">
333<div class="source">
334<pre>{ &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 } ]} }
335{ &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} } ]} }
336{ &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 } ]} }
337</pre></div></div></div></div></div></div>
338<div class="section">
339<h3><a name="Query_1_-_Other_Query_Filters"></a>Query 1 - Other Query Filters</h3>
340<div class="section">
341<div class="section">
342<div class="section">
343<h6><a name="AQL"></a>AQL</h6>
344
345<div class="source">
346<div class="source">
347<pre>use dataverse TinySocial;
348
349for $user in dataset FacebookUsers
350where $user.user-since &gt;= datetime('2010-07-22T00:00:00')
351and $user.user-since &lt;= datetime('2012-07-29T23:59:59')
352return $user;
353</pre></div></div></div>
354<div class="section">
355<h6><a name="JS"></a>JS</h6>
356
357<div class="source">
358<div class="source">
359<pre>var expression1 = new FLWOGRExpression()
360 .ForClause(&quot;$user&quot;, new AExpression(&quot;dataset FacebookUsers&quot;))
361 .WhereClause().and(
362 new AExpression(&quot;$user.user-since &gt;= datetime('2010-07-22T00:00:00')&quot;),
363 new AExpression(&quot;$user.user-since &lt;= datetime('2012-07-29T23:59:59')&quot;)
364 ).ReturnClause(&quot;$user&quot;);
365</pre></div></div></div>
366<div class="section">
367<h6><a name="Results"></a>Results</h6>
368
369<div class="source">
370<div class="source">
371<pre>{ &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 } ]} }
372{ &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} } ]} }
373{ &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} } ]} }
374{ &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 } ]} }
375</pre></div></div></div></div></div></div>
376<div class="section">
377<h3><a name="Query_2-A_-_Equijoin"></a>Query 2-A - Equijoin</h3>
378<div class="section">
379<div class="section">
380<div class="section">
381<h6><a name="AQL"></a>AQL</h6>
382
383<div class="source">
384<div class="source">
385<pre>use dataverse TinySocial;
386
387for $user in dataset FacebookUsers
388for $message in dataset FacebookMessages
389where $message.author-id = $user.id
390return {
391 &quot;uname&quot;: $user.name,
392 &quot;message&quot;: $message.message
393};
394</pre></div></div></div>
395<div class="section">
396<h6><a name="JS"></a>JS</h6>
397
398<div class="source">
399<div class="source">
400<pre>var expression2a = new FLWOGRExpression()
401 .ForClause (&quot;$user&quot;, new AExpression(&quot;dataset FacebookUsers&quot;))
402 .ForClause (&quot;$message&quot;, new AExpression(&quot;dataset FacebookMessages&quot;))
403 .WhereClause(new AExpression(&quot;$message.author-id = $user.id&quot;))
404 .ReturnClause({
405 &quot;uname&quot; : &quot;$user.name&quot;,
406 &quot;message&quot; : &quot;$message.message&quot;
407 });
408</pre></div></div></div>
409<div class="section">
410<h6><a name="Results"></a>Results</h6>
411
412<div class="source">
413<div class="source">
414<pre>{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: &quot; dislike x-phone its touch-screen is horrible&quot; }
415{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: &quot; like ccast the 3G is awesome:)&quot; }
416{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: &quot; can't stand product-w the touch-screen is terrible&quot; }
417{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: &quot; can't stand acast the network is horrible:(&quot; }
418{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: &quot; can't stand acast its plan is terrible&quot; }
419{ &quot;uname&quot;: &quot;IsbelDull&quot;, &quot;message&quot;: &quot; like product-y the plan is amazing&quot; }
420{ &quot;uname&quot;: &quot;IsbelDull&quot;, &quot;message&quot;: &quot; like product-z its platform is mind-blowing&quot; }
421{ &quot;uname&quot;: &quot;WoodrowNehling&quot;, &quot;message&quot;: &quot; love acast its 3G is good:)&quot; }
422{ &quot;uname&quot;: &quot;BramHatch&quot;, &quot;message&quot;: &quot; dislike x-phone the voice-command is bad:(&quot; }
423{ &quot;uname&quot;: &quot;BramHatch&quot;, &quot;message&quot;: &quot; can't stand product-z its voicemail-service is OMG:(&quot; }
424{ &quot;uname&quot;: &quot;EmoryUnk&quot;, &quot;message&quot;: &quot; love product-b its shortcut-menu is awesome:)&quot; }
425{ &quot;uname&quot;: &quot;EmoryUnk&quot;, &quot;message&quot;: &quot; love ccast its wireless is good&quot; }
426{ &quot;uname&quot;: &quot;WillisWynne&quot;, &quot;message&quot;: &quot; love product-b the customization is mind-blowing&quot; }
427{ &quot;uname&quot;: &quot;SuzannaTillson&quot;, &quot;message&quot;: &quot; like x-phone the voicemail-service is awesome&quot; }
428{ &quot;uname&quot;: &quot;VonKemble&quot;, &quot;message&quot;: &quot; dislike product-b the speed is horrible&quot; }
429</pre></div></div></div></div></div></div>
430<div class="section">
431<h3><a name="Query_2-B_-_Index_join"></a>Query 2-B - Index join</h3>
432<div class="section">
433<div class="section">
434<div class="section">
435<h6><a name="AQL"></a>AQL</h6>
436
437<div class="source">
438<div class="source">
439<pre>use dataverse TinySocial;
440
441for $user in dataset FacebookUsers
442for $message in dataset FacebookMessages
443where $message.author-id /*+ indexnl */ = $user.id
444return {
445 &quot;uname&quot;: $user.name,
446 &quot;message&quot;: $message.message
447};
448</pre></div></div></div>
449<div class="section">
450<h6><a name="JS"></a>JS</h6>
451
452<div class="source">
453<div class="source">
454<pre>var expression2b = new FLWOGRExpression()
455 .ForClause (&quot;$user&quot;, new AExpression(&quot;dataset FacebookUsers&quot;))
456 .ForClause (&quot;$message&quot;, new AExpression(&quot;dataset FacebookMessages&quot;))
457 .WhereClause(new AExpression(&quot;$message.author-id /*+ indexnl */ = $user.id&quot;))
458 .ReturnClause({
459 &quot;uname&quot; : &quot;$user.name&quot;,
460 &quot;message&quot; : &quot;$message.message&quot;
461 });
462</pre></div></div></div>
463<div class="section">
464<h6><a name="Results"></a>Results</h6>
465
466<div class="source">
467<div class="source">
468<pre>{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: &quot; dislike x-phone its touch-screen is horrible&quot; }
469{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: &quot; like ccast the 3G is awesome:)&quot; }
470{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: &quot; can't stand product-w the touch-screen is terrible&quot; }
471{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: &quot; can't stand acast the network is horrible:(&quot; }
472{ &quot;uname&quot;: &quot;MargaritaStoddard&quot;, &quot;message&quot;: &quot; can't stand acast its plan is terrible&quot; }
473{ &quot;uname&quot;: &quot;IsbelDull&quot;, &quot;message&quot;: &quot; like product-y the plan is amazing&quot; }
474{ &quot;uname&quot;: &quot;IsbelDull&quot;, &quot;message&quot;: &quot; like product-z its platform is mind-blowing&quot; }
475{ &quot;uname&quot;: &quot;WoodrowNehling&quot;, &quot;message&quot;: &quot; love acast its 3G is good:)&quot; }
476{ &quot;uname&quot;: &quot;BramHatch&quot;, &quot;message&quot;: &quot; dislike x-phone the voice-command is bad:(&quot; }
477{ &quot;uname&quot;: &quot;BramHatch&quot;, &quot;message&quot;: &quot; can't stand product-z its voicemail-service is OMG:(&quot; }
478{ &quot;uname&quot;: &quot;EmoryUnk&quot;, &quot;message&quot;: &quot; love product-b its shortcut-menu is awesome:)&quot; }
479{ &quot;uname&quot;: &quot;EmoryUnk&quot;, &quot;message&quot;: &quot; love ccast its wireless is good&quot; }
480{ &quot;uname&quot;: &quot;WillisWynne&quot;, &quot;message&quot;: &quot; love product-b the customization is mind-blowing&quot; }
481{ &quot;uname&quot;: &quot;SuzannaTillson&quot;, &quot;message&quot;: &quot; like x-phone the voicemail-service is awesome&quot; }
482{ &quot;uname&quot;: &quot;VonKemble&quot;, &quot;message&quot;: &quot; dislike product-b the speed is horrible&quot; }
483</pre></div></div></div></div></div></div>
484<div class="section">
485<h3><a name="Query_3_-_Nested_Outer_Join"></a>Query 3 - Nested Outer Join</h3>
486<div class="section">
487<div class="section">
488<div class="section">
489<h6><a name="AQL"></a>AQL</h6>
490
491<div class="source">
492<div class="source">
493<pre>use dataverse TinySocial;
494
495for $user in dataset FacebookUsers
496return {
497 &quot;uname&quot;: $user.name,
498 &quot;messages&quot;: for $message in dataset FacebookMessages
499 where $message.author-id = $user.id
500 return $message.message
501};
502</pre></div></div></div>
503<div class="section">
504<h6><a name="JS"></a>JS</h6>
505
506<div class="source">
507<div class="source">
508<pre>var expression3messages = new FLWOGRExpression()
509 .ForClause(&quot;$message&quot;, new AExpression(&quot;dataset FacebookMessages&quot;))
510 .WhereClause(new AExpression(&quot;$message.author-id = $user.id&quot;))
511 .ReturnClause(&quot;$message.message&quot;);
512
513var expression3 = new FLWOGRExpression()
514 .ForClause (&quot;$user&quot;, new AExpression(&quot;dataset FacebookUsers&quot;))
515 .ReturnClause({
516 &quot;uname&quot;: &quot;$user.name&quot;,
517 &quot;messages&quot; : expression3messages
518 });
519</pre></div></div></div>
520<div class="section">
521<h6><a name="Results"></a>Results</h6>
522
523<div class="source">
524<div class="source">
525<pre>{ &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; ]} }
526{ &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; ]} }
527{ &quot;uname&quot;: &quot;NilaMilliron&quot;, &quot;messages&quot;: { orderedlist: [ ]} }
528{ &quot;uname&quot;: &quot;WoodrowNehling&quot;, &quot;messages&quot;: { orderedlist: [&quot; love acast its 3G is good:)&quot; ]} }
529{ &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; ]} }
530{ &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; ]} }
531{ &quot;uname&quot;: &quot;WillisWynne&quot;, &quot;messages&quot;: { orderedlist: [&quot; love product-b the customization is mind-blowing&quot; ]} }
532{ &quot;uname&quot;: &quot;SuzannaTillson&quot;, &quot;messages&quot;: { orderedlist: [&quot; like x-phone the voicemail-service is awesome&quot; ]} }
533{ &quot;uname&quot;: &quot;NicholasStroh&quot;, &quot;messages&quot;: { orderedlist: [ ]} }
534{ &quot;uname&quot;: &quot;VonKemble&quot;, &quot;messages&quot;: { orderedlist: [&quot; dislike product-b the speed is horrible&quot; ]} }
535</pre></div></div></div></div></div></div>
536<div class="section">
537<h3><a name="Query_4_-_Theta_Join"></a>Query 4 - Theta Join</h3>
538<div class="section">
539<div class="section">
540<div class="section">
541<h6><a name="AQL"></a>AQL</h6>
542
543<div class="source">
544<div class="source">
545<pre>use dataverse TinySocial;
546
547for $t in dataset TweetMessages
548return {
549 &quot;message&quot;: $t.message-text,
550 &quot;nearby-messages&quot;: for $t2 in dataset TweetMessages
551 where spatial-distance($t.sender-location, $t2.sender-location) &lt;= 1
552 return { &quot;msgtxt&quot;:$t2.message-text}
553};
554</pre></div></div></div>
555<div class="section">
556<h6><a name="JS"></a>JS</h6>
557
558<div class="source">
559<div class="source">
560<pre>var expression4messages = new FLWOGRExpression()
561 .ForClause( &quot;$t2&quot;, new AExpression(&quot;dataset TweetMessages&quot;))
562 .WhereClause( new AExpression(&quot;spatial-distance($t.sender-location, $t2.sender-location) &lt;= 1&quot;))
563 .ReturnClause({ &quot;msgtxt&quot; : &quot;$t2.message-text&quot; });
564
565var expression4 = new FLWOGRExpression()
566 .ForClause( &quot;$t&quot;, new AExpression(&quot;dataset TweetMessages&quot;))
567 .ReturnClause({
568 &quot;message&quot; : &quot;$t.message-text&quot;,
569 &quot;nearby-messages&quot; : expression4messages
570 });
571</pre></div></div></div>
572<div class="section">
573<h6><a name="Results"></a>Results</h6>
574
575<div class="source">
576<div class="source">
577<pre>{ &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; } ]} }
578{ &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; } ]} }
579{ &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; } ]} }
580{ &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; } ]} }
581{ &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; } ]} }
582{ &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; } ]} }
583{ &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; } ]} }
584{ &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; } ]} }
585{ &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; } ]} }
586{ &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; } ]} }
587{ &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; } ]} }
588{ &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; } ]} }
589</pre></div></div></div></div></div></div>
590<div class="section">
591<h3><a name="Query_5_-_Fuzzy_Join"></a>Query 5 - Fuzzy Join</h3>
592<div class="section">
593<div class="section">
594<div class="section">
595<h6><a name="AQL"></a>AQL</h6>
596<p>use dataverse TinySocial;</p>
597
598<div class="source">
599<div class="source">
600<pre>set simfunction &quot;edit-distance&quot;;
601set simthreshold &quot;3&quot;;
602
603for $fbu in dataset FacebookUsers
604return {
605 &quot;id&quot;: $fbu.id,
606 &quot;name&quot;: $fbu.name,
607 &quot;similar-users&quot;: for $t in dataset TweetMessages
608 let $tu := $t.user
609 where $tu.name ~= $fbu.name
610 return {
611 &quot;twitter-screenname&quot;: $tu.screen-name,
612 &quot;twitter-name&quot;: $tu.name
613 }
614};
615</pre></div></div></div>
616<div class="section">
617<h6><a name="JS"></a>JS</h6>
618
619<div class="source">
620<div class="source">
621<pre>var similarUsersExpression = new FLWOGRExpression()
622 .ForClause(&quot;$t&quot;, new AExpression(&quot;dataset TweetMessages&quot;))
623 .LetClause (&quot;$tu&quot;, new AExpression(&quot;$t.user&quot;))
624 .WhereClause(new AExpression(&quot;$tu.name ~= $fbu.name&quot;))
625 .ReturnClause({
626 &quot;twitter-screenname&quot;: &quot;$tu.screen-name&quot;,
627 &quot;twitter-name&quot;: &quot;$tu.name&quot;
628 });
629
630var expression5 = new FLWOGRExpression()
631 .ForClause (&quot;$fbu&quot;, new AExpression(&quot;dataset FacebookUsers&quot;))
632 .ReturnClause(
633 {
634 &quot;id&quot; : &quot;$fbu.id&quot;,
635 &quot;name&quot; : &quot;$fbu.name&quot;,
636 &quot;similar-users&quot; : similarUsersExpression
637 }
638 );
639</pre></div></div></div>
640<div class="section">
641<h6><a name="Results"></a>Results</h6>
642
643<div class="source">
644<div class="source">
645<pre>{ &quot;id&quot;: { int32: 1 } , &quot;name&quot;: &quot;MargaritaStoddard&quot;, &quot;similar-users&quot;: { orderedlist: [ ]} }
646{ &quot;id&quot;: { int32: 2 } , &quot;name&quot;: &quot;IsbelDull&quot;, &quot;similar-users&quot;: { orderedlist: [ ]} }
647{ &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; } ]} }
648{ &quot;id&quot;: { int32: 9 } , &quot;name&quot;: &quot;WoodrowNehling&quot;, &quot;similar-users&quot;: { orderedlist: [ ]} }
649{ &quot;id&quot;: { int32: 10 } , &quot;name&quot;: &quot;BramHatch&quot;, &quot;similar-users&quot;: { orderedlist: [ ]} }
650{ &quot;id&quot;: { int32: 3 } , &quot;name&quot;: &quot;EmoryUnk&quot;, &quot;similar-users&quot;: { orderedlist: [ ]} }
651{ &quot;id&quot;: { int32: 6 } , &quot;name&quot;: &quot;WillisWynne&quot;, &quot;similar-users&quot;: { orderedlist: [ ]} }
652{ &quot;id&quot;: { int32: 7 } , &quot;name&quot;: &quot;SuzannaTillson&quot;, &quot;similar-users&quot;: { orderedlist: [ ]} }
653{ &quot;id&quot;: { int32: 4 } , &quot;name&quot;: &quot;NicholasStroh&quot;, &quot;similar-users&quot;: { orderedlist: [ ]} }
654{ &quot;id&quot;: { int32: 5 } , &quot;name&quot;: &quot;VonKemble&quot;, &quot;similar-users&quot;: { orderedlist: [ ]} }
655</pre></div></div></div></div></div></div>
656<div class="section">
657<h3><a name="Query_6_-_Existential_Quantification"></a>Query 6 - Existential Quantification</h3>
658<div class="section">
659<div class="section">
660<div class="section">
661<h6><a name="AQL"></a>AQL</h6>
662
663<div class="source">
664<div class="source">
665<pre>use dataverse TinySocial;
666
667for $fbu in dataset FacebookUsers
668where (some $e in $fbu.employment satisfies is-null($e.end-date))
669return $fbu;
670</pre></div></div></div>
671<div class="section">
672<h6><a name="JS"></a>JS</h6>
673
674<div class="source">
675<div class="source">
676<pre>var expression6 = new FLWOGRExpression()
677 .ForClause (&quot;$fbu&quot;, new AQLClause().set(&quot;dataset FacebookUsers&quot;))
678 .WhereClause(
679 new QuantifiedExpression (
680 &quot;some&quot; ,
681 {&quot;$e&quot; : new AExpression(&quot;$fbu.employment&quot;) },
682 new FunctionExpression(&quot;is-null&quot;, new AExpression(&quot;$e.end-date&quot;))
683 )
684 )
685 .ReturnClause(&quot;$fbu&quot;);
686</pre></div></div></div>
687<div class="section">
688<h6><a name="Results"></a>Results</h6>
689
690<div class="source">
691<div class="source">
692<pre>{ &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 } ]} }
693{ &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 } ]} }
694{ &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 } ]} }
695{ &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 } ]} }
696{ &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 } ]} }
697{ &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 } ]} }
698{ &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 } ]} }
699</pre></div></div></div></div></div></div>
700<div class="section">
701<h3><a name="Query_7_-_Universal_Quantification"></a>Query 7 - Universal Quantification</h3>
702<div class="section">
703<div class="section">
704<div class="section">
705<h6><a name="AQL"></a>AQL</h6>
706
707<div class="source">
708<div class="source">
709<pre>use dataverse TinySocial;
710
711for $fbu in dataset FacebookUsers
712where (every $e in $fbu.employment satisfies not(is-null($e.end-date)))
713return $fbu;
714</pre></div></div></div>
715<div class="section">
716<h6><a name="JS"></a>JS</h6>
717
718<div class="source">
719<div class="source">
720<pre>var expression7 = new FLWOGRExpression()
721 .ForClause(&quot;$fbu&quot;, new AExpression(&quot;dataset FacebookUsers&quot;))
722 .WhereClause(
723 new QuantifiedExpression (
724 &quot;every&quot; ,
725 {&quot;$e&quot; : new AExpression(&quot;$fbu.employment&quot;) },
726 new FunctionExpression(&quot;not&quot;, new FunctionExpression(&quot;is-null&quot;, new AExpression(&quot;$e.end-date&quot;)))
727 )
728 )
729 .ReturnClause(&quot;$fbu&quot;);
730</pre></div></div></div>
731<div class="section">
732<h6><a name="Results"></a>Results</h6>
733
734<div class="source">
735<div class="source">
736<pre>{ &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} } ]} }
737{ &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} } ]} }
738{ &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} } ]} }
739</pre></div></div></div></div></div></div>
740<div class="section">
741<h3><a name="Query_8_-_Simple_Aggregation"></a>Query 8 - Simple Aggregation</h3>
742<div class="section">
743<div class="section">
744<div class="section">
745<h6><a name="AQL"></a>AQL</h6>
746
747<div class="source">
748<div class="source">
749<pre>use dataverse TinySocial;
750
751count(for $fbu in dataset FacebookUsers return $fbu);
752</pre></div></div></div>
753<div class="section">
754<h6><a name="JS"></a>JS</h6>
755
756<div class="source">
757<div class="source">
758<pre>var expression8 = new FunctionExpression(
759 &quot;count&quot;,
760 new FLWOGRExpression()
761 .ForClause(&quot;$fbu&quot;, new AExpression(&quot;dataset FacebookUsers&quot;))
762 .ReturnClause(&quot;$fbu&quot;)
763);
764</pre></div></div></div>
765<div class="section">
766<h6><a name="Results"></a>Results</h6>
767
768<div class="source">
769<div class="source">
770<pre>{ int64: 10 }
771</pre></div></div></div></div></div></div>
772<div class="section">
773<h3><a name="Query_9-A_-_Grouping_and_Aggregation"></a>Query 9-A - Grouping and Aggregation</h3>
774<div class="section">
775<div class="section">
776<div class="section">
777<h6><a name="AQL"></a>AQL</h6>
778
779<div class="source">
780<div class="source">
781<pre>use dataverse TinySocial;
782
783for $t in dataset TweetMessages
784group by $uid := $t.user.screen-name with $t
785return {
786 &quot;user&quot;: $uid,
787 &quot;count&quot;: count($t)
788};
789</pre></div></div></div>
790<div class="section">
791<h6><a name="JS"></a>JS</h6>
792
793<div class="source">
794<div class="source">
795<pre>var expression9a = new FLWOGRExpression()
796 .ForClause(&quot;$t&quot;, new AExpression(&quot;dataset TweetMessages&quot;))
797 .GroupClause(&quot;$uid&quot;, new AExpression(&quot;$t.user.screen-name&quot;), &quot;with&quot;, &quot;$t&quot;)
798 .ReturnClause(
799 {
800 &quot;user&quot; : &quot;$uid&quot;,
801 &quot;count&quot; : new FunctionExpression(&quot;count&quot;, new AExpression(&quot;$t&quot;))
802 }
803 );
804</pre></div></div></div>
805<div class="section">
806<h6><a name="Results"></a>Results</h6>
807
808<div class="source">
809<div class="source">
810<pre>{ &quot;user&quot;: &quot;ColineGeyer@63&quot;, &quot;count&quot;: { int64: 3 } }
811{ &quot;user&quot;: &quot;OliJackson_512&quot;, &quot;count&quot;: { int64: 1 } }
812{ &quot;user&quot;: &quot;NilaMilliron_tw&quot;, &quot;count&quot;: { int64: 1 } }
813{ &quot;user&quot;: &quot;ChangEwing_573&quot;, &quot;count&quot;: { int64: 1 } }
814{ &quot;user&quot;: &quot;NathanGiesen@211&quot;, &quot;count&quot;: { int64: 6 } }
815</pre></div></div></div></div></div></div>
816<div class="section">
817<h3><a name="Query_9-B_-_Hash-Based_Grouping_and_Aggregation"></a>Query 9-B - (Hash-Based) Grouping and Aggregation</h3>
818<div class="section">
819<div class="section">
820<div class="section">
821<h6><a name="AQL"></a>AQL</h6>
822
823<div class="source">
824<div class="source">
825<pre>use dataverse TinySocial;
826
827for $t in dataset TweetMessages
828/*+ hash*/
829group by $uid := $t.user.screen-name with $t
830return {
831 &quot;user&quot;: $uid,
832 &quot;count&quot;: count($t)
833};
834</pre></div></div></div>
835<div class="section">
836<h6><a name="JS"></a>JS</h6>
837
838<div class="source">
839<div class="source">
840<pre>var expression9b = new FLWOGRExpression()
841 .ForClause(&quot;$t&quot;, new AExpression(&quot;dataset TweetMessages&quot;))
842 .AQLClause(&quot;/*+ hash*/&quot;)
843 .GroupClause(&quot;$uid&quot;, new AExpression(&quot;$t.user.screen-name&quot;), &quot;with&quot;, &quot;$t&quot;)
844 .ReturnClause(
845 {
846 &quot;user&quot; : &quot;$uid&quot;,
847 &quot;count&quot; : new FunctionExpression(&quot;count&quot;, new AExpression(&quot;$t&quot;))
848 }
849 );
850</pre></div></div></div>
851<div class="section">
852<h6><a name="Results"></a>Results</h6>
853
854<div class="source">
855<div class="source">
856<pre>{ &quot;user&quot;: &quot;ColineGeyer@63&quot;, &quot;count&quot;: { int64: 3 } }
857{ &quot;user&quot;: &quot;OliJackson_512&quot;, &quot;count&quot;: { int64: 1 } }
858{ &quot;user&quot;: &quot;NilaMilliron_tw&quot;, &quot;count&quot;: { int64: 1 } }
859{ &quot;user&quot;: &quot;ChangEwing_573&quot;, &quot;count&quot;: { int64: 1 } }
860{ &quot;user&quot;: &quot;NathanGiesen@211&quot;, &quot;count&quot;: { int64: 6 } }
861</pre></div></div></div></div></div></div>
862<div class="section">
863<h3><a name="Query_10_-_Grouping_and_Limits"></a>Query 10 - Grouping and Limits</h3>
864<div class="section">
865<div class="section">
866<div class="section">
867<h6><a name="AQL"></a>AQL</h6>
868
869<div class="source">
870<div class="source">
871<pre>use dataverse TinySocial;
872
873for $t in dataset TweetMessages
874group by $uid := $t.user.screen-name with $t
875let $c := count($t)
876order by $c desc
877limit 3
878return {
879 &quot;user&quot;: $uid,
880 &quot;count&quot;: $c
881};
882</pre></div></div></div>
883<div class="section">
884<h6><a name="JS"></a>JS</h6>
885
886<div class="source">
887<div class="source">
888<pre>var expression10 = new FLWOGRExpression()
889 .ForClause(&quot;$t&quot;, new AExpression(&quot;dataset TweetMessages&quot;))
890 .GroupClause(&quot;$uid&quot;, new AExpression(&quot;$t.user.screen-name&quot;), &quot;with&quot;, &quot;$t&quot;)
891 .LetClause(&quot;$c&quot;, new FunctionExpression(&quot;count&quot;, new AExpression(&quot;$t&quot;)))
892 .OrderbyClause( new AExpression(&quot;$c&quot;), &quot;desc&quot; )
893 .LimitClause(new AExpression(&quot;3&quot;))
894 .ReturnClause(
895 {
896 &quot;user&quot; : &quot;$uid&quot;,
897 &quot;count&quot; : &quot;$c&quot;
898 }
899 );
900</pre></div></div></div>
901<div class="section">
902<h6><a name="Results"></a>Results</h6>
903
904<div class="source">
905<div class="source">
906<pre>{ &quot;user&quot;: &quot;NathanGiesen@211&quot;, &quot;count&quot;: { int64: 6 } }
907{ &quot;user&quot;: &quot;ColineGeyer@63&quot;, &quot;count&quot;: { int64: 3 } }
908{ &quot;user&quot;: &quot;NilaMilliron_tw&quot;, &quot;count&quot;: { int64: 1 } }
909</pre></div></div></div></div></div></div>
910<div class="section">
911<h3><a name="Query_11_-_Left_Outer_Fuzzy_Join"></a>Query 11 - Left Outer Fuzzy Join</h3>
912<div class="section">
913<div class="section">
914<div class="section">
915<h6><a name="AQL"></a>AQL</h6>
916
917<div class="source">
918<div class="source">
919<pre>use dataverse TinySocial;
920
921set simfunction &quot;jaccard&quot;;
922set simthreshold &quot;0.3&quot;;
923
924for $t in dataset TweetMessages
925return {
926 &quot;tweet&quot;: $t,
927 &quot;similar-tweets&quot;: for $t2 in dataset TweetMessages
928 where $t2.referred-topics ~= $t.referred-topics
929 and $t2.tweetid != $t.tweetid
930 return $t2.referred-topics
931};
932</pre></div></div></div>
933<div class="section">
934<h6><a name="JS"></a>JS</h6>
935
936<div class="source">
937<div class="source">
938<pre>var expression11 = new FLWOGRExpression()
939 .ForClause( &quot;$t&quot;, new AExpression(&quot;dataset TweetMessages&quot;))
940 .ReturnClause({
941 &quot;tweet&quot; : new AExpression(&quot;$t&quot;),
942 &quot;similar-tweets&quot;: new FLWOGRExpression()
943 .ForClause( &quot;$t2&quot;, new AExpression(&quot;dataset TweetMessages&quot;))
944 .WhereClause().and(
945 new AExpression(&quot;$t2.referred-topics ~= $t.referred-topics&quot;),
946 new AExpression(&quot;$t2.tweetid != $t.tweetid&quot;)
947 )
948 .ReturnClause(&quot;$t2.referred-topics&quot;)
949 });
950</pre></div></div></div>
951<div class="section">
952<h6><a name="Results"></a>Results</h6>
953
954<div class="source">
955<div class="source">
956<pre>{ &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; ]} ]} }
957{ &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; ]} ]} }
958{ &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; ]} ]} }
959{ &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; ]} ]} }
960{ &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; ]} ]} }
961{ &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; ]} ]} }
962{ &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; ]} ]} }
963{ &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; ]} ]} }
964{ &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; ]} ]} }
965{ &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; ]} ]} }
966{ &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; ]} ]} }
967{ &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; ]} ]} }
968</pre></div></div></div></div></div></div></div>
969 </div>
970 </div>
971 </div>
972
973 <hr/>
974
975 <footer>
976 <div class="container-fluid">
977 <div class="row span12">Copyright &copy; 2018
978 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
979 All Rights Reserved.
980
981 </div>
982
983 <?xml version="1.0" encoding="UTF-8"?>
984<div class="row-fluid">Apache AsterixDB, AsterixDB, Apache, the Apache
985 feather logo, and the Apache AsterixDB project logo are either
986 registered trademarks or trademarks of The Apache Software
987 Foundation in the United States and other countries.
988 All other marks mentioned may be trademarks or registered
989 trademarks of their respective owners.</div>
990
991
992 </div>
993 </footer>
994 </body>
995</html>