blob: 0c64eef18e8690f289c71310ecef2526dbde6474 [file] [log] [blame]
genia.likes.science@gmail.com512454d2013-05-28 03:32:20 -07001<!DOCTYPE html>
2
3<html>
4<head>
5 <title>AsterixDB TinySocial Demo</title>
6
7 <style>
8 .pretty-printed {
9 background-color: #eeeeee;
10 margin-bottom: 1em;
11 }
12
13 .how-to-run {
14 background-color: #c8c8c8;
15 margin-bottom: 1em;
16 }
17
18 .result-output {
19 background-color: #BED8E5;
20 margin-bottom: 1em;
21 }
22
23 body {
24 font-family : "Helvetica";
25 margin-bottom: 1em;
26 }
27 </style>
28
29 <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
30 <script src="../js/asterix-sdk-stable.js"></script>
31 <script src="js/demo.js"></script>
32</head>
33<body>
34 <h1>AQL: Querying TinySocial AsterixDB</h1>
35
36 <h2>Query 0-A - Exact-Match Lookup</h2>
37 <div class="sample-query">
38
39 <div class="pretty-printed">
40 use dataverse TinySocial;<br/><br/>
41
42 for $user in dataset FacebookUsers<br/>
43 where $user.id = 8<br/>
44 return $user;<br/>
45 </div>
46
47 <div class="how-to-run">
genia.likes.science@gmail.comb4cb6b32013-05-29 04:30:38 -070048 var expression0a = new FLWOGRExpression({ <br/>
49 "dataverse" : "TinySocial",<br/>
50 "success" : function(res) {<br/>
51 $('#result0a').html(res["results"]);<br/>
52 } <br/>
53 })<br/>
54 .bind( new ForClause("user", null, new AsterixExpression().set(["dataset FacebookUsers"])) )<br/>
55 .bind( new WhereClause(new BooleanExpression("$user.id = 8")) )<br/>
genia.likes.science@gmail.com512454d2013-05-28 03:32:20 -070056 </div>
57
genia.likes.science@gmail.com38612632013-05-28 13:11:52 -070058 <div class="result-output" id="result0a">
genia.likes.science@gmail.com512454d2013-05-28 03:32:20 -070059 </div>
60
61 <button id="run0a">Run #0-A</button>
62 </div>
63 <hr/>
64 <h2>Query 0-B - Range Scan</h2>
65 <div class="sample-query">
66
67 <div class="pretty-printed">
68 use dataverse TinySocial;<br/><br/>
69
70 for $user in dataset FacebookUsers<br/>
71 where $user.id >= 2 and $user.id <= 4<br/>
72 return $user;<br/>
73 </div>
74
75 <div class="how-to-run">
76 </div>
77
genia.likes.science@gmail.com38612632013-05-28 13:11:52 -070078 <div class="result-output" id="result0b">
genia.likes.science@gmail.com512454d2013-05-28 03:32:20 -070079 </div>
80
81 <button id="run0b">Run #0-B</button>
82 </div>
83 <hr/>
84
85 <h2>Query 1 - Other Query Filters</h2>
86 <div class="sample-query">
87 <div class="pretty-printed">
88 use dataverse TinySocial;<br/><br/>
89
90 for $user in dataset FacebookUsers<br/>
91 where $user.user-since >= datetime('2010-07-22T00:00:00')<br/>
92 and $user.user-since <= datetime('2012-07-29T23:59:59')<br/>
93 return $user;<br/>
94 </div>
95
96 <div class="how-to-run">
97 </div>
98
99 <div class="result-output" id="result1">
100 </div>
101
102 <button id="run1">Run #1</button>
103 </div>
104 <hr/>
105
106 <h2>Query 2-A - Equijoin</h2>
107 <div class="sample-query">
108 <div class="pretty-printed">
109 use dataverse TinySocial;<br/><br/>
110
111 for $user in dataset FacebookUsers<br/>
112 for $message in dataset FacebookMessages<br/>
113 where $message.author-id = $user.id<br/>
114 return {<br/>
115 "uname": $user.name,<br/>
116 "message": $message.message<br/>
117 };<br/>
118 </div>
119
120 <div class="how-to-run">
121 </div>
122
123 <div class="result-output" id="result2a">
124 </div>
125
126 <button id="run2a">Run #2-A</button>
127 </div>
128 <hr/>
129
130 <h2>Query 2-B - Index join</h2>
131 <div class="sample-query">
132 <div class="pretty-printed">
133 use dataverse TinySocial;<br/><br/>
134
135 for $user in dataset FacebookUsers<br/>
136 for $message in dataset FacebookMessages<br/>
137 where $message.author-id /*+ indexnl */ = $user.id<br/>
138 return {<br/>
139 "uname": $user.name,<br/>
140 "message": $message.message<br/>
141 };<br/>
142 </div>
143
144 <div class="how-to-run">
145 </div>
146
147 <div class="result-output" id="result2b">
148 </div>
149
150 <button id="run2b">Run #2-B</button>
151 </div>
152 <hr/>
153
154 <h2>Query 3 - Nested Outer Join</h2>
155 <div class="sample-query">
156 <div class="pretty-printed">
157 use dataverse TinySocial;<br/><br/>
158
159 for $user in dataset FacebookUsers<br/>
160 return {<br/>
161 "uname": $user.name,<br/>
162 "messages": for $message in dataset FacebookMessages<br/>
163 where $message.author-id = $user.id<br/>
164 return $message.message<br/>
165 };<br/>
166 </div>
167
168 <div class="how-to-run">
169 </div>
170
171 <div class="result-output" id="result3">
172 </div>
173
174 <button id="run3">Run #3</button>
175 </div>
176 <hr/>
177
178 <h2>Query 4 - Theta Join</h2>
179 <div class="sample-query">
180 <div class="pretty-printed">
181 use dataverse TinySocial;<br/><br/>
182
183 for $t in dataset TweetMessages<br/>
184 return {<br/>
185 "message": $t.message-text,<br/>
186 "nearby-messages": for $t2 in dataset TweetMessages<br/>
187 where spatial-distance($t.sender-location, $t2.sender-location) <= 1<br/>
188 return { "msgtxt":$t2.message-text}<br/>
189 };<br/>
190 </div>
191
192 <div class="how-to-run">
193 </div>
194
195 <div class="result-output" id="result4">
196 </div>
197
198 <button id="run4">Run #4</button>
199 </div>
200 <hr/>
201
202 <h2>Query 5 - Fuzzy Join</h2>
203 <div class="sample-query">
204 <div class="pretty-printed">
205 use dataverse TinySocial;<br/><br/>
206
207 set simfunction "edit-distance";<br/>
208 set simthreshold "3";<br/><br/>
209
210 for $fbu in dataset FacebookUsers<br/>
211 return {<br/>
212 "id": $fbu.id,<br/>
213 "name": $fbu.name,<br/>
214 "similar-users": for $t in dataset TweetMessages<br/>
215 let $tu := $t.user<br/>
216 where $tu.name ~= $fbu.name<br/>
217 return {<br/>
218 "twitter-screenname": $tu.screen-name,<br/>
219 "twitter-name": $tu.name<br/>
220 }<br/>
221 };<br/>
222 </div>
223
224 <div class="how-to-run">
225 </div>
226
227 <div class="result-output" id="result5">
228 </div>
229
230 <button id="run5">Run #5</button>
231 </div>
232 <hr/>
233
234 <h2>Query 6 - Existential Quantification</h2>
235 <div class="sample-query">
236 <div class="pretty-printed">
237 use dataverse TinySocial;<br/><br/>
238
239 for $fbu in dataset FacebookUsers<br/>
240 where (some $e in $fbu.employment satisfies is-null($e.end-date))<br/>
241 return $fbu;<br/>
242 </div>
243
244 <div class="how-to-run">
245 </div>
246
247 <div class="result-output" id="result6">
248 </div>
249
250 <button id="run6">Run #6</button>
251 </div>
252 <hr/>
253
254 <h2>Query 7 - Universal Quantification</h2>
255 <div class="sample-query">
256 <div class="pretty-printed">
257 use dataverse TinySocial;<br/><br/>
258
259 for $fbu in dataset FacebookUsers<br/>
260 where (every $e in $fbu.employment satisfies not(is-null($e.end-date))) <br/>
261 return $fbu;<br/>
262 </div>
263
264 <div class="how-to-run">
265 </div>
266
267 <div class="result-output" id="result7">
268 </div>
269
270 <button id="run7">Run #7</button>
271 </div>
272 <hr/>
273
274 <h2>Query 8 - Simple Aggregation</h2>
275 <div class="sample-query">
276 <div class="pretty-printed">
277 use dataverse TinySocial;<br/><br/>
278
279 count(for $fbu in dataset FacebookUsers return $fbu);<br/>
280 </div>
281
282 <div class="how-to-run">
283 var expression8 = new FunctionExpression({<br/>
284 "function" : "count",<br/>
genia.likes.science@gmail.com2e713492013-05-28 04:53:58 -0700285 "expression" : new ForClause(<br/>
286 "fbu", null, new AsterixExpression().set(["dataset FacebookUsers"])<br/>
287 ).bind(<br/>
288 {"return" : new AsterixExpression().set(["$fbu"])}<br/>
289 ),<br/>
290 "dataverse" : "TinySocial",<br/>
291 "success" : function(res) {<br/>
292 $('#result8').html(res["results"]);<br/>
293 }<br/>
294 }).run();<br/>
genia.likes.science@gmail.com512454d2013-05-28 03:32:20 -0700295 </div>
296
297 <div class="result-output" id="result8">
298 </div>
299
300 <button id="run8">Run #8</button>
301 </div>
302 <hr/>
303
304 <h2>Query 9-A - Grouping and Aggregation</h2>
305 <div class="sample-query">
306 <div class="pretty-printed">
307 use dataverse TinySocial;<br/><br/>
308
309 for $t in dataset TweetMessages<br/>
310 group by $uid := $t.user.screen-name with $t<br/>
311 return {<br/>
312 "user": $uid,<br/>
313 "count": count($t)<br/>
314 };<br/>
315 </div>
316
317 <div class="how-to-run">
318 </div>
319
320 <div class="result-output" id="result9">
321 </div>
322
323 <button id="run9a">Run #9-A</button>
324 </div>
325 <hr/>
326
327 <h2>Query 9-B - (Hash-Based) Grouping and Aggregation</h2>
328 <div class="sample-query">
329 <div class="pretty-printed">
330 use dataverse TinySocial;<br/><br/>
331
332 for $t in dataset TweetMessages<br/>
333 /*+ hash*/<br/>
334 group by $uid := $t.user.screen-name with $t<br/>
335 return {<br/>
336 "user": $uid,<br/>
337 "count": count($t)<br/>
338 };<br/>
339 </div>
340
341 <div class="how-to-run">
342 </div>
343
344 <div class="result-output" id="result10">
345 </div>
346
347 <button id="run9b">Run #9-B</button>
348 </div>
349 <hr/>
350
351 <h2>Query 10 - Grouping and Limits</h2>
352 <div class="sample-query">
353 <div class="pretty-printed">
354 use dataverse TinySocial;<br/><br/>
355
356 for $t in dataset TweetMessages<br/>
357 group by $uid := $t.user.screen-name with $t<br/>
358 let $c := count($t)<br/>
359 order by $c desc<br/>
360 limit 3<br/>
361 return {<br/>
362 "user": $uid,<br/>
363 "count": $c<br/>
364 };<br/>
365 </div>
366
367 <div class="how-to-run">
368 </div>
369
370 <div class="result-output" id="result11">
371 </div>
372
373 <button id="run10">Run #10</button>
374 </div>
375 <hr/>
376
377 <h2>Query 11 - Left Outer Fuzzy Join</h2>
378 <div class="sample-query">
379 <div class="pretty-printed">
380 use dataverse TinySocial;<br/><br/>
381
382 set simfunction "jaccard";<br/>
383 set simthreshold "0.3";<br/><br/>
384
385 for $t in dataset TweetMessages<br/>
386 return {<br/>
387 "tweet": $t,<br/>
388 "similar-tweets": for $t2 in dataset TweetMessages<br/>
389 where $t2.referred-topics ~= $t.referred-topics<br/>
390 and $t2.tweetid != $t.tweetid<br/>
391 return $t2.referred-topics<br/>
392 };<br/>
393 </div>
394
395 <div class="how-to-run">
396 </div>
397
398 <div class="result-output" id="result11">
399 </div>
400
401 <button id="run11">Run #11</button>
402 </div>
403
404</body>
405</html>