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