You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by bu...@apache.org on 2017/03/27 20:17:09 UTC

[3/3] asterixdb git commit: Address Don's comments on the SQL++ reference doc.

Address Don's comments on the SQL++ reference doc.

Change-Id: I667789c6fa88994c8be94117c2abb6e469eec744
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1612
Sonar-Qube: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
BAD: Jenkins <je...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Till Westmann <ti...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/cbd5def7
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/cbd5def7
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/cbd5def7

Branch: refs/heads/master
Commit: cbd5def7af7e913c40a2c8012f204c07e4a81398
Parents: 9163e20
Author: Yingyi Bu <yi...@couchbase.com>
Authored: Thu Mar 23 15:41:01 2017 -0700
Committer: Yingyi Bu <bu...@gmail.com>
Committed: Mon Mar 27 13:16:24 2017 -0700

----------------------------------------------------------------------
 .../src/main/markdown/builtins/2_string.md      |  26 +--
 .../src/main/markdown/sqlpp/2_expr.md           |  25 ++-
 .../src/main/markdown/sqlpp/3_query.md          | 149 ++++++-------
 .../asterix-doc/src/site/markdown/aql/js-sdk.md | 124 +++++------
 .../asterix-doc/src/site/markdown/aql/primer.md | 178 ++++++++--------
 .../src/site/markdown/aql/similarity.md         |   2 +-
 .../src/site/markdown/sqlpp/primer-sqlpp.md     | 208 +++++++++----------
 .../asterix-doc/src/site/resources/data/chm.adm |  24 +--
 .../asterix-doc/src/site/resources/data/fbm.adm |  30 +--
 .../asterix-doc/src/site/resources/data/gbm.adm |  30 +--
 .../asterix-doc/src/site/resources/data/twm.adm |  24 +--
 11 files changed, 417 insertions(+), 403 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/cbd5def7/asterixdb/asterix-doc/src/main/markdown/builtins/2_string.md
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-doc/src/main/markdown/builtins/2_string.md b/asterixdb/asterix-doc/src/main/markdown/builtins/2_string.md
index e7d0d5c..605fd8d 100644
--- a/asterixdb/asterix-doc/src/main/markdown/builtins/2_string.md
+++ b/asterixdb/asterix-doc/src/main/markdown/builtins/2_string.md
@@ -63,7 +63,7 @@
  * Note: an [n_gram index](similarity.html#UsingIndexesToSupportSimilarityQueries) can be utilized for this function.
  * Example:
 
-        { "v1": contains("I like iphone", "phone"), "v2": contains("one", "phone") };
+        { "v1": contains("I like x-phone", "phone"), "v2": contains("one", "phone") };
 
 
  * The expected result is:
@@ -90,7 +90,7 @@
  * Example:
 
         {
-          "v1": ends_with(" love sprint its shortcut_menu is awesome:)", ":)"),
+          "v1": ends_with(" love product-b its shortcut_menu is awesome:)", ":)"),
           "v2": ends_with(" awsome:)", ":-)")
         };
 
@@ -193,12 +193,12 @@
 
  * Example:
 
-        ltrim("me like iphone", "eml");
+        ltrim("me like x-phone", "eml");
 
 
  * The expected result is:
 
-        " like iphone"
+        " like x-phone"
 
 
 ### position ###
@@ -284,8 +284,8 @@
  * Example:
 
         {
-          "v1": regexp_like(" can't stand at&t the network is horrible:(", ".*at&t.*"),
-          "v2": regexp_like("at&t", ".*att.*")
+          "v1": regexp_like(" can't stand acast the network is horrible:(", ".*acast.*"),
+          "v2": regexp_like("acast", ".*acst.*")
         };
 
  * The expected result is:
@@ -347,12 +347,12 @@
 
  * Example:
 
-        regexp_replace(" like iphone the voicemail_service is awesome", " like iphone", "like android")
+        regexp_replace(" like x-phone the voicemail_service is awesome", " like x-phone", "like product-a")
 
 
  * The expected result is:
 
-        "like android the voicemail_service is awesome"
+        "like product-a the voicemail_service is awesome"
 
 
 ### repeat ###
@@ -402,8 +402,8 @@
  * Example:
 
         {
-          "v1": rtrim("i like iphone", "iphone"),
-          "v2": rtrim("i like iphone", "oneiph")
+          "v1": rtrim("i like x-phone", "x-phone"),
+          "v2": rtrim("i like x-phone", "onexph")
         };
 
  * The expected result is:
@@ -615,7 +615,7 @@
 
  * Example:
 
-        substring_before(" like iphone", "iphone");
+        substring_before(" like x-phone", "x-phone");
 
 
  * The expected result is:
@@ -641,7 +641,7 @@
 
  * Example:
 
-        substring_after(" like iphone", "iph");
+        substring_after(" like x-phone", "xph");
 
 
  * The expected result is:
@@ -668,7 +668,7 @@
 
  * Example:
 
-        trim("i like iphone", "iphoen");
+        trim("i like x-phone", "xphoen");
 
 
  * The expected result is:

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/cbd5def7/asterixdb/asterix-doc/src/main/markdown/sqlpp/2_expr.md
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-doc/src/main/markdown/sqlpp/2_expr.md b/asterixdb/asterix-doc/src/main/markdown/sqlpp/2_expr.md
index 41e8c97..281eb18 100644
--- a/asterixdb/asterix-doc/src/main/markdown/sqlpp/2_expr.md
+++ b/asterixdb/asterix-doc/src/main/markdown/sqlpp/2_expr.md
@@ -55,14 +55,14 @@ The following table summarizes the precedence order (from higher to lower) of th
 | &#124;&#124;                                                                          |  String concatenation |
 | IS NULL, IS NOT NULL, IS MISSING, IS NOT MISSING, <br/>IS UNKNOWN, IS NOT UNKNOWN| Unknown value comparison |
 | BETWEEN, NOT BETWEEN                                                        | Range comparison (inclusive on both sides) |
-| =, !=, <, >, <=, >=, LIKE, NOT LIKE, IN, NOT IN                             | Comparison  |
+| =, !=, <>, <, >, <=, >=, LIKE, NOT LIKE, IN, NOT IN                             | Comparison  |
 | NOT                                                                         | Logical negation |
 | AND                                                                         | Conjunction |
 | OR                                                                          | Disjunction |
 
 In general, if any operand evaluates to a `MISSING` value, the enclosing operator will return `MISSING`;
 if none of operands evaluates to a `MISSING` value but there is an operand evaluates to a `NULL` value,
-the encolosing operator will return `NULL`. However, there are a few exceptions listed in
+the enclosing operator will return `NULL`. However, there are a few exceptions listed in
 [comparison operators](#Comparison_operators) and [logical operators](#Logical_operators).
 
 ### <a id="Arithmetic_operators">Arithmetic Operators</a>
@@ -72,7 +72,7 @@ Arithmetic operators are used to exponentiate, add, subtract, multiply, and divi
 |--------------|-------------------------------------------------------------------------|------------|
 | +, -         |  As unary operators, they denote a <br/>positive or negative expression | SELECT VALUE -1; |
 | +, -         |  As binary operators, they add or subtract                              | SELECT VALUE 1 + 2; |
-| *, /         |  Multiply, divide                                                       | SELECT VALUE 4 / 2.0; |
+| *, /, %      |  Multiply, divide, modulo                                               | SELECT VALUE 4 / 2.0; |
 | ^            |  Exponentiation                                                         | SELECT VALUE 2^3;       |
 | &#124;&#124; |  String concatenation                                                   | SELECT VALUE "ab"&#124;&#124;"c"&#124;&#124;"d";       |
 
@@ -87,7 +87,12 @@ Collection operators are used for membership tests (IN, NOT IN) or empty collect
 | NOT EXISTS |  Check whether a collection is empty         | SELECT * FROM ChirpMessages cm <br/>WHERE NOT EXISTS cm.referredTopics; |
 
 ### <a id="Comparison_operators">Comparison Operators</a>
-Comparison operators are used to compare values. The comparison operators fall into one of two sub-categories: missing value comparisons and regular value comparisons. SQL++ (and JSON) has two ways of representing missing information in a object - the presence of the field with a NULL for its value (as in SQL), and the absence of the field (which JSON permits). For example, the first of the following objects represents Jack, whose friend is Jill. In the other examples, Jake is friendless a la SQL, with a friend field that is NULL, while Joe is friendless in a more natural (for JSON) way, i.e., by not having a friend field.
+Comparison operators are used to compare values. The comparison operators fall into one of two sub-categories: missing
+value comparisons and regular value comparisons. SQL++ (and JSON) has two ways of representing missing information in
+a object - the presence of the field with a NULL for its value (as in SQL), and the absence of the field (which
+JSON permits). For example, the first of the following objects represents Jack, whose friend is Jill. In the other
+examples, Jake is friendless a la SQL, with a friend field that is NULL, while Joe is friendless in a more natural
+(for JSON) way, i.e., by not having a friend field.
 
 ##### Examples
 {"name": "Jack", "friend": "Jill"}
@@ -109,6 +114,7 @@ The following table enumerates all of SQL++'s comparison operators.
 | BETWEEN        |  Test if a value is between a start value and <br/>a end value. The comparison is inclusive <br/>to both start and end values. |  SELECT * FROM ChirpMessages cm <br/>WHERE cm.chirpId BETWEEN 10 AND 20;|
 | =              |  Equality test                                 | SELECT * FROM ChirpMessages cm <br/>WHERE cm.chirpId=10; |
 | !=             |  Inequality test                               | SELECT * FROM ChirpMessages cm <br/>WHERE cm.chirpId!=10;|
+| <>             |  Inequality test                               | SELECT * FROM ChirpMessages cm <br/>WHERE cm.chirpId<>10;|
 | <              |  Less than                                     | SELECT * FROM ChirpMessages cm <br/>WHERE cm.chirpId<10; |
 | >              |  Greater than                                  | SELECT * FROM ChirpMessages cm <br/>WHERE cm.chirpId>10; |
 | <=             |  Less than or equal to                         | SELECT * FROM ChirpMessages cm <br/>WHERE cm.chirpId<=10; |
@@ -365,20 +371,21 @@ its constructors for each of the model's complex object structures, namely array
 Arrays are like JSON arrays, while multisets have bag semantics.
 Objects are built from fields that are field-name/field-value pairs, again like JSON.
 
-The following examples illustrate how to construct a new array with 4 items, a new object with 2 fields,
-and a new multiset with 5 items, respectively. Array elements or multiset elements can be homogeneous (as in
-the first example),
-which is the common case, or they may be heterogeneous (as in the third example). The data values and field name values
+The following examples illustrate how to construct a new array with 4 items and a new object with 2 fields respectively.
+Array elements can be homogeneous (as in the first example),
+which is the common case, or they may be heterogeneous (as in the second example). The data values and field name values
 used to construct arrays, multisets, and objects in constructors are all simply SQL++ expressions. Thus, the collection
 elements, field names, and field values used in constructors can be simple literals or they can come from query variable
 references or even arbitrarily complex SQL++ expressions (subqueries).
-Type errors will be raised if the field names in a record must be strings, and
+Type errors will be raised if the field names in an object are not strings, and
 duplicate field errors will be raised if they are not distinct.
 
 ##### Examples
 
     [ 'a', 'b', 'c', 'c' ]
 
+    [ 42, "forty-two!", { "rank" : "Captain", "name": "America" }, 3.14159 ]
+
     {
       'project name': 'Hyracks',
       'project members': [ 'vinayakb', 'dtabass', 'chenli', 'tsotras', 'tillw' ]

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/cbd5def7/asterixdb/asterix-doc/src/main/markdown/sqlpp/3_query.md
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-doc/src/main/markdown/sqlpp/3_query.md b/asterixdb/asterix-doc/src/main/markdown/sqlpp/3_query.md
index 3156129..78620a4 100644
--- a/asterixdb/asterix-doc/src/main/markdown/sqlpp/3_query.md
+++ b/asterixdb/asterix-doc/src/main/markdown/sqlpp/3_query.md
@@ -124,65 +124,69 @@ In this section, we will make use of two stored collections of objects (datasets
       "authorId":1,
       "inResponseTo":4,
       "senderLocation":[41.66,80.87],
-      "message":" dislike iphone its touch-screen is horrible"
+      "message":" dislike x-phone its touch-screen is horrible"
     },
     {
       "messageId":3,
       "authorId":2,
       "inResponseTo":4,
       "senderLocation":[48.09,81.01],
-      "message":" like samsung the plan is amazing"
+      "message":" like product-y the plan is amazing"
     },
     {
       "messageId":4,
       "authorId":1,
       "inResponseTo":2,
       "senderLocation":[37.73,97.04],
-      "message":" can't stand at&t the network is horrible:("
+      "message":" can't stand acast the network is horrible:("
     },
     {
       "messageId":6,
       "authorId":2,
       "inResponseTo":1,
       "senderLocation":[31.5,75.56],
-      "message":" like t-mobile its platform is mind-blowing"
+      "message":" like product-z its platform is mind-blowing"
     }
     {
       "messageId":8,
       "authorId":1,
       "inResponseTo":11,
       "senderLocation":[40.33,80.87],
-      "message":" like verizon the 3G is awesome:)"
+      "message":" like ccast the 3G is awesome:)"
     },
     {
       "messageId":10,
       "authorId":1,
       "inResponseTo":12,
       "senderLocation":[42.5,70.01],
-      "message":" can't stand motorola the touch-screen is terrible"
+      "message":" can't stand product-w the touch-screen is terrible"
     },
     {
       "messageId":11,
       "authorId":1,
       "inResponseTo":1,
       "senderLocation":[38.97,77.49],
-      "message":" can't stand at&t its plan is terrible"
+      "message":" can't stand acast its plan is terrible"
     } ]
 
 ## <a id="Select_clauses">SELECT Clause</a>
 The SQL++ `SELECT` clause always returns a collection value as its result (even if the result is empty or a singleton).
 
 ### <a id="Select_element">Select Element/Value/Raw</a>
-The `SELECT VALUE` clause in SQL++ returns a collection that contains the results of evaluating the `VALUE` expression, with one evaluation being performed per "binding tuple" (i.e., per `FROM` clause item) satisfying the statement's selection criteria.
-For historical reasons SQL++ also allows the keywords `ELEMENT` or `RAW` to be used in place of `VALUE` (not recommended).
+The `SELECT VALUE` clause in SQL++ returns an array or multiset that contains the results of evaluating the `VALUE`
+expression, with one evaluation being performed per "binding tuple" (i.e., per `FROM` clause item) satisfying
+the statement's selection criteria.
+For historical reasons SQL++ also allows the keywords `ELEMENT` or `RAW` to be used in place of `VALUE`
+(not recommended).
 
-The following example shows a standard-alone `SELECT VALUE`, which wraps a value into an array.
+If there is no FROM clause, the expression after `VALUE` is evaluated once with no binding tuples
+(except those inherited from an outer environment).
 
 ##### Example
 
     SELECT VALUE 1;
 
-This query return:
+This query returns:
 
     [
       1
@@ -247,6 +251,8 @@ In SQL++, `SELECT *` returns a object with a nested field for each input tuple.
 Each field has as its field name the name of a binding variable generated by either the `FROM` clause or `GROUP BY`
 clause in the current enclosing `SELECT` statement, and its field value is the value of that binding variable.
 
+Note that the result of `SELECT *` is different from the result of query that selects all the fields of an object.
+
 ##### Example
 
     SELECT *
@@ -328,7 +334,7 @@ Since `user` is the only binding variable generated in the `FROM` clause, this q
     WHERE m.authorId = u.id and u.id = 2;
 
 This query does an inner join that we will discuss in [multiple from terms](#Multiple_from_terms).
-Since both `u` and `m` are binding variable generated in the `FROM` clause, this query returns:
+Since both `u` and `m` are binding variables generated in the `FROM` clause, this query returns:
 
     [ {
         "u": {
@@ -356,7 +362,7 @@ Since both `u` and `m` are binding variable generated in the `FROM` clause, this
             "inResponseTo": 1,
             "messageId": 6,
             "authorId": 2,
-            "message": " like t-mobile its platform is mind-blowing"
+            "message": " like product-z its platform is mind-blowing"
         }
     }, {
         "u": {
@@ -384,7 +390,7 @@ Since both `u` and `m` are binding variable generated in the `FROM` clause, this
             "inResponseTo": 4,
             "messageId": 3,
             "authorId": 2,
-            "message": " like samsung the plan is amazing"
+            "message": " like product-y the plan is amazing"
         }
     } ]
 
@@ -514,25 +520,25 @@ This returns:
 
     [ {
         "uname": "MargaritaStoddard",
-        "message": " can't stand at&t its plan is terrible"
+        "message": " can't stand acast its plan is terrible"
     }, {
         "uname": "MargaritaStoddard",
-        "message": " dislike iphone its touch-screen is horrible"
+        "message": " dislike x-phone its touch-screen is horrible"
     }, {
         "uname": "MargaritaStoddard",
-        "message": " can't stand at&t the network is horrible:("
+        "message": " can't stand acast the network is horrible:("
     }, {
         "uname": "MargaritaStoddard",
-        "message": " like verizon the 3G is awesome:)"
+        "message": " like ccast the 3G is awesome:)"
     }, {
         "uname": "MargaritaStoddard",
-        "message": " can't stand motorola the touch-screen is terrible"
+        "message": " can't stand product-w the touch-screen is terrible"
     }, {
         "uname": "IsbelDull",
-        "message": " like t-mobile its platform is mind-blowing"
+        "message": " like product-z its platform is mind-blowing"
     }, {
         "uname": "IsbelDull",
-        "message": " like samsung the plan is amazing"
+        "message": " like product-y the plan is amazing"
     } ]
 
 Similarly, the above query can also be expressed as the `UNNEST`ing of a correlated SQL++ subquery:
@@ -618,25 +624,25 @@ Returns:
 
     [ {
         "name": "MargaritaStoddard",
-        "message": " like verizon the 3G is awesome:)"
+        "message": " like ccast the 3G is awesome:)"
     }, {
         "name": "MargaritaStoddard",
-        "message": " can't stand motorola the touch-screen is terrible"
+        "message": " can't stand product-w the touch-screen is terrible"
     }, {
         "name": "MargaritaStoddard",
-        "message": " can't stand at&t its plan is terrible"
+        "message": " can't stand acast its plan is terrible"
     }, {
         "name": "MargaritaStoddard",
-        "message": " dislike iphone its touch-screen is horrible"
+        "message": " dislike x-phone its touch-screen is horrible"
     }, {
         "name": "MargaritaStoddard",
-        "message": " can't stand at&t the network is horrible:("
+        "message": " can't stand acast the network is horrible:("
     }, {
         "name": "IsbelDull",
-        "message": " like samsung the plan is amazing"
+        "message": " like product-y the plan is amazing"
     }, {
         "name": "IsbelDull",
-        "message": " like t-mobile its platform is mind-blowing"
+        "message": " like product-z its platform is mind-blowing"
     } ]
 
 ##### Example
@@ -675,25 +681,25 @@ Returns:
 
     [ {
         "uname": "MargaritaStoddard",
-        "message": " like verizon the 3G is awesome:)"
+        "message": " like ccast the 3G is awesome:)"
     }, {
         "uname": "MargaritaStoddard",
-        "message": " can't stand motorola the touch-screen is terrible"
+        "message": " can't stand product-w the touch-screen is terrible"
     }, {
         "uname": "MargaritaStoddard",
-        "message": " can't stand at&t its plan is terrible"
+        "message": " can't stand acast its plan is terrible"
     }, {
         "uname": "MargaritaStoddard",
-        "message": " dislike iphone its touch-screen is horrible"
+        "message": " dislike x-phone its touch-screen is horrible"
     }, {
         "uname": "MargaritaStoddard",
-        "message": " can't stand at&t the network is horrible:("
+        "message": " can't stand acast the network is horrible:("
     }, {
         "uname": "IsbelDull",
-        "message": " like samsung the plan is amazing"
+        "message": " like product-y the plan is amazing"
     }, {
         "uname": "IsbelDull",
-        "message": " like t-mobile its platform is mind-blowing"
+        "message": " like product-z its platform is mind-blowing"
     }, {
         "uname": "EmoryUnk"
     } ]
@@ -740,7 +746,7 @@ This first example query returns:
                     "inResponseTo": 1,
                     "messageId": 11,
                     "authorId": 1,
-                    "message": " can't stand at&t its plan is terrible"
+                    "message": " can't stand acast its plan is terrible"
                 }
             },
             {
@@ -752,7 +758,7 @@ This first example query returns:
                     "inResponseTo": 4,
                     "messageId": 2,
                     "authorId": 1,
-                    "message": " dislike iphone its touch-screen is horrible"
+                    "message": " dislike x-phone its touch-screen is horrible"
                 }
             },
             {
@@ -764,7 +770,7 @@ This first example query returns:
                     "inResponseTo": 2,
                     "messageId": 4,
                     "authorId": 1,
-                    "message": " can't stand at&t the network is horrible:("
+                    "message": " can't stand acast the network is horrible:("
                 }
             },
             {
@@ -776,7 +782,7 @@ This first example query returns:
                     "inResponseTo": 11,
                     "messageId": 8,
                     "authorId": 1,
-                    "message": " like verizon the 3G is awesome:)"
+                    "message": " like ccast the 3G is awesome:)"
                 }
             },
             {
@@ -788,7 +794,7 @@ This first example query returns:
                     "inResponseTo": 12,
                     "messageId": 10,
                     "authorId": 1,
-                    "message": " can't stand motorola the touch-screen is terrible"
+                    "message": " can't stand product-w the touch-screen is terrible"
                 }
             }
         ],
@@ -804,7 +810,7 @@ This first example query returns:
                     "inResponseTo": 1,
                     "messageId": 6,
                     "authorId": 2,
-                    "message": " like t-mobile its platform is mind-blowing"
+                    "message": " like product-z its platform is mind-blowing"
                 }
             },
             {
@@ -816,7 +822,7 @@ This first example query returns:
                     "inResponseTo": 4,
                     "messageId": 3,
                     "authorId": 2,
-                    "message": " like samsung the plan is amazing"
+                    "message": " like product-y the plan is amazing"
                 }
             }
         ],
@@ -854,7 +860,7 @@ This variant of the example query returns:
                    "inResponseTo": 1,
                    "messageId": 11,
                    "authorId": 1,
-                   "message": " can't stand at&t its plan is terrible"
+                   "message": " can't stand acast its plan is terrible"
                },
                {
                    "senderLocation": [
@@ -864,7 +870,7 @@ This variant of the example query returns:
                    "inResponseTo": 4,
                    "messageId": 2,
                    "authorId": 1,
-                   "message": " dislike iphone its touch-screen is horrible"
+                   "message": " dislike x-phone its touch-screen is horrible"
                },
                {
                    "senderLocation": [
@@ -874,7 +880,7 @@ This variant of the example query returns:
                    "inResponseTo": 2,
                    "messageId": 4,
                    "authorId": 1,
-                   "message": " can't stand at&t the network is horrible:("
+                   "message": " can't stand acast the network is horrible:("
                },
                {
                    "senderLocation": [
@@ -884,7 +890,7 @@ This variant of the example query returns:
                    "inResponseTo": 11,
                    "messageId": 8,
                    "authorId": 1,
-                   "message": " like verizon the 3G is awesome:)"
+                   "message": " like ccast the 3G is awesome:)"
                },
                {
                    "senderLocation": [
@@ -894,7 +900,7 @@ This variant of the example query returns:
                    "inResponseTo": 12,
                    "messageId": 10,
                    "authorId": 1,
-                   "message": " can't stand motorola the touch-screen is terrible"
+                   "message": " can't stand product-w the touch-screen is terrible"
                }
            ],
            "uid": 1
@@ -908,7 +914,7 @@ This variant of the example query returns:
                    "inResponseTo": 1,
                    "messageId": 6,
                    "authorId": 2,
-                   "message": " like t-mobile its platform is mind-blowing"
+                   "message": " like product-z its platform is mind-blowing"
                },
                {
                    "senderLocation": [
@@ -918,7 +924,7 @@ This variant of the example query returns:
                    "inResponseTo": 4,
                    "messageId": 3,
                    "authorId": 2,
-                   "message": " like samsung the plan is amazing"
+                   "message": " like product-y the plan is amazing"
                }
            ],
            "uid": 2
@@ -964,7 +970,7 @@ This example query returns:
                 "inResponseTo": 11,
                 "messageId": 8,
                 "authorId": 1,
-                "message": " like verizon the 3G is awesome:)"
+                "message": " like ccast the 3G is awesome:)"
             }
         ],
         "uid": 1
@@ -978,7 +984,7 @@ This example query returns:
                 "inResponseTo": 4,
                 "messageId": 3,
                 "authorId": 2,
-                "message": " like samsung the plan is amazing"
+                "message": " like product-y the plan is amazing"
             },
             {
                 "senderLocation": [
@@ -988,7 +994,7 @@ This example query returns:
                 "inResponseTo": 1,
                 "messageId": 6,
                 "authorId": 2,
-                "message": " like t-mobile its platform is mind-blowing"
+                "message": " like product-z its platform is mind-blowing"
             }
         ],
         "uid": 2
@@ -1029,7 +1035,7 @@ This query returns:
                 "inResponseTo": 11,
                 "messageId": 8,
                 "authorId": 1,
-                "message": " like verizon the 3G is awesome:)"
+                "message": " like ccast the 3G is awesome:)"
             }
         ],
         "authorId": 1
@@ -1043,7 +1049,7 @@ This query returns:
                 "inResponseTo": 4,
                 "messageId": 3,
                 "authorId": 2,
-                "message": " like samsung the plan is amazing"
+                "message": " like product-y the plan is amazing"
             },
             {
                 "senderLocation": [
@@ -1053,7 +1059,7 @@ This query returns:
                 "inResponseTo": 1,
                 "messageId": 6,
                 "authorId": 2,
-                "message": " like t-mobile its platform is mind-blowing"
+                "message": " like product-z its platform is mind-blowing"
             }
         ],
         "authorId": 2
@@ -1085,17 +1091,17 @@ This query returns:
     [ {
         "msgs": [
             {
-                "message": " like verizon the 3G is awesome:)"
+                "message": " like ccast the 3G is awesome:)"
             }
         ],
         "uid": 1
     }, {
         "msgs": [
             {
-                "message": " like samsung the plan is amazing"
+                "message": " like product-y the plan is amazing"
             },
             {
-                "message": " like t-mobile its platform is mind-blowing"
+                "message": " like product-z its platform is mind-blowing"
             }
         ],
         "uid": 2
@@ -1208,7 +1214,7 @@ The following query is such an example:
 
 ##### Example
 
-    SELECT msg.authorId, COUNT(msg)
+    SELECT msg.authorId, COUNT(*)
     FROM GleambookMessages msg
     GROUP BY msg.authorId;
 
@@ -1237,7 +1243,7 @@ SQL++ also allows column aliases to be used as `GROUP BY` keys or `ORDER BY` key
 
 ##### Example
 
-    SELECT msg.authorId AS aid, COUNT(msg)
+    SELECT msg.authorId AS aid, COUNT(*)
     FROM GleambookMessages msg
     GROUP BY aid;
 
@@ -1477,7 +1483,7 @@ This query lists `GleambookUsers` that have posted `GleambookMessages` and shows
                 "inResponseTo": 1,
                 "messageId": 11,
                 "authorId": 1,
-                "message": " can't stand at&t its plan is terrible"
+                "message": " can't stand acast its plan is terrible"
             },
             {
                 "senderLocation": [
@@ -1487,7 +1493,7 @@ This query lists `GleambookUsers` that have posted `GleambookMessages` and shows
                 "inResponseTo": 4,
                 "messageId": 2,
                 "authorId": 1,
-                "message": " dislike iphone its touch-screen is horrible"
+                "message": " dislike x-phone its touch-screen is horrible"
             },
             {
                 "senderLocation": [
@@ -1497,7 +1503,7 @@ This query lists `GleambookUsers` that have posted `GleambookMessages` and shows
                 "inResponseTo": 2,
                 "messageId": 4,
                 "authorId": 1,
-                "message": " can't stand at&t the network is horrible:("
+                "message": " can't stand acast the network is horrible:("
             },
             {
                 "senderLocation": [
@@ -1507,7 +1513,7 @@ This query lists `GleambookUsers` that have posted `GleambookMessages` and shows
                 "inResponseTo": 11,
                 "messageId": 8,
                 "authorId": 1,
-                "message": " like verizon the 3G is awesome:)"
+                "message": " like ccast the 3G is awesome:)"
             },
             {
                 "senderLocation": [
@@ -1517,7 +1523,7 @@ This query lists `GleambookUsers` that have posted `GleambookMessages` and shows
                 "inResponseTo": 12,
                 "messageId": 10,
                 "authorId": 1,
-                "message": " can't stand motorola the touch-screen is terrible"
+                "message": " can't stand product-w the touch-screen is terrible"
             }
         ]
     }, {
@@ -1531,7 +1537,7 @@ This query lists `GleambookUsers` that have posted `GleambookMessages` and shows
                 "inResponseTo": 1,
                 "messageId": 6,
                 "authorId": 2,
-                "message": " like t-mobile its platform is mind-blowing"
+                "message": " like product-z its platform is mind-blowing"
             },
             {
                 "senderLocation": [
@@ -1541,7 +1547,7 @@ This query lists `GleambookUsers` that have posted `GleambookMessages` and shows
                 "inResponseTo": 4,
                 "messageId": 3,
                 "authorId": 2,
-                "message": " like samsung the plan is amazing"
+                "message": " like product-y the plan is amazing"
             }
         ]
     } ]
@@ -1559,7 +1565,8 @@ This query is equivalent to the following query that does not use the `LET` clau
                  );
 
 ## <a id="Union_all">UNION ALL</a>
-UNION ALL can be used to combine two input streams into one. As in SQL, there is no ordering guarantee on the contents of the output stream.
+UNION ALL can be used to combine two input arrays or multisets into one. As in SQL, there is no ordering guarantee
+on the contents of the output stream.
 However, unlike SQL, SQL++ does not constrain what the data looks like on the input streams; in particular,
 it allows heterogenity on the input and output streams.
 A type error will be raised if one of the inputs is not a collection.
@@ -1578,10 +1585,10 @@ The following odd but legal query is an example:
 This query returns:
 
     [
-      " like t-mobile its platform is mind-blowing"
+      " like product-z its platform is mind-blowing"
       , {
         "uname": "IsbelDull"
-    }, " like samsung the plan is amazing"
+    }, " like product-y the plan is amazing"
      ]
 
 ## <a id="Subqueries">Subqueries</a>
@@ -1615,7 +1622,7 @@ For our sample data set, this query returns:
                 "inResponseTo": 4,
                 "messageId": 2,
                 "authorId": 1,
-                "message": " dislike iphone its touch-screen is horrible"
+                "message": " dislike x-phone its touch-screen is horrible"
             }
         ],
         "uid": 1

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/cbd5def7/asterixdb/asterix-doc/src/site/markdown/aql/js-sdk.md
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-doc/src/site/markdown/aql/js-sdk.md b/asterixdb/asterix-doc/src/site/markdown/aql/js-sdk.md
index 32a316e..9425d21 100644
--- a/asterixdb/asterix-doc/src/site/markdown/aql/js-sdk.md
+++ b/asterixdb/asterix-doc/src/site/markdown/aql/js-sdk.md
@@ -131,21 +131,21 @@ the equivalent javascript expression is shown below it, followed by the results
 
 ###### Results
 
-	{ "uname": "MargaritaStoddard", "message": " dislike iphone its touch-screen is horrible" }
-	{ "uname": "MargaritaStoddard", "message": " like verizon the 3G is awesome:)" }
-	{ "uname": "MargaritaStoddard", "message": " can't stand motorola the touch-screen is terrible" }
-	{ "uname": "MargaritaStoddard", "message": " can't stand at&t the network is horrible:(" }
-	{ "uname": "MargaritaStoddard", "message": " can't stand at&t its plan is terrible" }
-	{ "uname": "IsbelDull", "message": " like samsung the plan is amazing" }
-	{ "uname": "IsbelDull", "message": " like t-mobile its platform is mind-blowing" }
-	{ "uname": "WoodrowNehling", "message": " love at&t its 3G is good:)" }
-	{ "uname": "BramHatch", "message": " dislike iphone the voice-command is bad:(" }
-	{ "uname": "BramHatch", "message": " can't stand t-mobile its voicemail-service is OMG:(" }
-	{ "uname": "EmoryUnk", "message": " love sprint its shortcut-menu is awesome:)" }
-	{ "uname": "EmoryUnk", "message": " love verizon its wireless is good" }
-	{ "uname": "WillisWynne", "message": " love sprint the customization is mind-blowing" }
-	{ "uname": "SuzannaTillson", "message": " like iphone the voicemail-service is awesome" }
-	{ "uname": "VonKemble", "message": " dislike sprint the speed is horrible" }
+	{ "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" }
 
 ### Query 2-B - Index join ###
 ###### AQL
@@ -172,21 +172,21 @@ the equivalent javascript expression is shown below it, followed by the results
 
 ###### Results
 
-	{ "uname": "MargaritaStoddard", "message": " dislike iphone its touch-screen is horrible" }
-	{ "uname": "MargaritaStoddard", "message": " like verizon the 3G is awesome:)" }
-	{ "uname": "MargaritaStoddard", "message": " can't stand motorola the touch-screen is terrible" }
-	{ "uname": "MargaritaStoddard", "message": " can't stand at&t the network is horrible:(" }
-	{ "uname": "MargaritaStoddard", "message": " can't stand at&t its plan is terrible" }
-	{ "uname": "IsbelDull", "message": " like samsung the plan is amazing" }
-	{ "uname": "IsbelDull", "message": " like t-mobile its platform is mind-blowing" }
-	{ "uname": "WoodrowNehling", "message": " love at&t its 3G is good:)" }
-	{ "uname": "BramHatch", "message": " dislike iphone the voice-command is bad:(" }
-	{ "uname": "BramHatch", "message": " can't stand t-mobile its voicemail-service is OMG:(" }
-	{ "uname": "EmoryUnk", "message": " love sprint its shortcut-menu is awesome:)" }
-	{ "uname": "EmoryUnk", "message": " love verizon its wireless is good" }
-	{ "uname": "WillisWynne", "message": " love sprint the customization is mind-blowing" }
-	{ "uname": "SuzannaTillson", "message": " like iphone the voicemail-service is awesome" }
-	{ "uname": "VonKemble", "message": " dislike sprint the speed is horrible" }
+	{ "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" }
 
 ### Query 3 - Nested Outer Join ###
 ###### AQL
@@ -216,16 +216,16 @@ the equivalent javascript expression is shown below it, followed by the results
 
 ###### Results
 
-	{ "uname": "MargaritaStoddard", "messages": { orderedlist: [" dislike iphone its touch-screen is horrible", " like verizon the 3G is awesome:)", " can't stand motorola the touch-screen is terrible", " can't stand at&t the network is horrible:(", " can't stand at&t its plan is terrible" ]} }
-	{ "uname": "IsbelDull", "messages": { orderedlist: [" like samsung the plan is amazing", " like t-mobile its platform is mind-blowing" ]} }
+	{ "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 at&t its 3G is good:)" ]} }
-	{ "uname": "BramHatch", "messages": { orderedlist: [" dislike iphone the voice-command is bad:(", " can't stand t-mobile its voicemail-service is OMG:(" ]} }
-	{ "uname": "EmoryUnk", "messages": { orderedlist: [" love sprint its shortcut-menu is awesome:)", " love verizon its wireless is good" ]} }
-	{ "uname": "WillisWynne", "messages": { orderedlist: [" love sprint the customization is mind-blowing" ]} }
-	{ "uname": "SuzannaTillson", "messages": { orderedlist: [" like iphone the voicemail-service is awesome" ]} }
+	{ "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 sprint the speed is horrible" ]} }
+	{ "uname": "VonKemble", "messages": { orderedlist: [" dislike product-b the speed is horrible" ]} }
 
 ### Query 4 - Theta Join ###
 ###### AQL
@@ -255,18 +255,18 @@ the equivalent javascript expression is shown below it, followed by the results
 
 ###### Results
 
-	{ "message": " hate verizon its voice-clarity is OMG:(", "nearby-messages": { orderedlist: [{ "msgtxt": " hate verizon its voice-clarity is OMG:(" }, { "msgtxt": " like motorola the speed is good:)" } ]} }
-	{ "message": " like iphone the voice-clarity is good:)", "nearby-messages": { orderedlist: [{ "msgtxt": " like iphone the voice-clarity is good:)" } ]} }
-	{ "message": " like samsung the platform is good", "nearby-messages": { orderedlist: [{ "msgtxt": " like samsung the platform is good" } ]} }
-	{ "message": " love t-mobile its customization is good:)", "nearby-messages": { orderedlist: [{ "msgtxt": " love t-mobile its customization is good:)" } ]} }
-	{ "message": " like samsung the voice-command is amazing:)", "nearby-messages": { orderedlist: [{ "msgtxt": " like samsung the voice-command is amazing:)" } ]} }
-	{ "message": " like motorola the speed is good:)", "nearby-messages": { orderedlist: [{ "msgtxt": " hate verizon its voice-clarity is OMG:(" }, { "msgtxt": " like motorola the speed is good:)" } ]} }
-	{ "message": " love verizon its voicemail-service is awesome", "nearby-messages": { orderedlist: [{ "msgtxt": " love verizon its voicemail-service is awesome" } ]} }
-	{ "message": " can't stand motorola its speed is terrible:(", "nearby-messages": { orderedlist: [{ "msgtxt": " can't stand motorola its speed is terrible:(" } ]} }
-	{ "message": " like t-mobile the shortcut-menu is awesome:)", "nearby-messages": { orderedlist: [{ "msgtxt": " like t-mobile the shortcut-menu is awesome:)" } ]} }
-	{ "message": " can't stand iphone its platform is terrible", "nearby-messages": { orderedlist: [{ "msgtxt": " can't stand iphone its platform is terrible" } ]} }
-	{ "message": " like verizon its shortcut-menu is awesome:)", "nearby-messages": { orderedlist: [{ "msgtxt": " like verizon its shortcut-menu is awesome:)" } ]} }
-	{ "message": " like sprint the voice-command is mind-blowing:)", "nearby-messages": { orderedlist: [{ "msgtxt": " like sprint the voice-command is mind-blowing:)" } ]} }
+	{ "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:)" } ]} }
 
 ### Query 5 - Fuzzy Join ###
 ###### AQL
@@ -539,15 +539,15 @@ use dataverse TinySocial;
 
 ###### Results
 
-	{ "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: ["verizon", "voice-clarity" ]}, "message-text": " hate verizon its voice-clarity is OMG:(" }, "similar-tweets": { orderedlist: [{ unorderedlist: ["iphone", "voice-clarity" ]}, { unorderedlist: ["verizon", "shortcut-menu" ]}, { unorderedlist: ["verizon", "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: ["iphone", "voice-clarity" ]}, "message-text": " like iphone the voice-clarity is good:)" }, "similar-tweets": { orderedlist: [{ unorderedlist: ["verizon", "voice-clarity" ]}, { unorderedlist: ["iphone", "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: ["samsung", "platform" ]}, "message-text": " like samsung the platform is good" }, "similar-tweets": { orderedlist: [{ unorderedlist: ["iphone", "platform" ]}, { unorderedlist: ["samsung", "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: ["t-mobile", "customization" ]}, "message-text": " love t-mobile its customization is good:)" }, "similar-tweets": { orderedlist: [{ unorderedlist: ["t-mobile", "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: ["samsung", "voice-command" ]}, "message-text": " like samsung the voice-command is amazing:)" }, "similar-tweets": { orderedlist: [{ unorderedlist: ["samsung", "platform" ]}, { unorderedlist: ["sprint", "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: ["motorola", "speed" ]}, "message-text": " like motorola the speed is good:)" }, "similar-tweets": { orderedlist: [{ unorderedlist: ["motorola", "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: ["verizon", "voicemail-service" ]}, "message-text": " love verizon its voicemail-service is awesome" }, "similar-tweets": { orderedlist: [{ unorderedlist: ["verizon", "voice-clarity" ]}, { unorderedlist: ["verizon", "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: ["motorola", "speed" ]}, "message-text": " can't stand motorola its speed is terrible:(" }, "similar-tweets": { orderedlist: [{ unorderedlist: ["motorola", "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: ["t-mobile", "shortcut-menu" ]}, "message-text": " like t-mobile the shortcut-menu is awesome:)" }, "similar-tweets": { orderedlist: [{ unorderedlist: ["verizon", "shortcut-menu" ]}, { unorderedlist: ["t-mobile", "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: ["iphone", "platform" ]}, "message-text": " can't stand iphone its platform is terrible" }, "similar-tweets": { orderedlist: [{ unorderedlist: ["iphone", "voice-clarity" ]}, { unorderedlist: ["samsung", "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: ["verizon", "shortcut-menu" ]}, "message-text": " like verizon its shortcut-menu is awesome:)" }, "similar-tweets": { orderedlist: [{ unorderedlist: ["t-mobile", "shortcut-menu" ]}, { unorderedlist: ["verizon", "voice-clarity" ]}, { unorderedlist: ["verizon", "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: ["sprint", "voice-command" ]}, "message-text": " like sprint the voice-command is mind-blowing:)" }, "similar-tweets": { orderedlist: [{ unorderedlist: ["samsung", "voice-command" ]} ]} }
+	{ "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" ]} ]} }