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