Completes all TinySocial/AdmAql101 examples with SDK queries
diff --git a/asterix-app/src/main/resources/sdk/static/example/js/demo.js b/asterix-app/src/main/resources/sdk/static/example/js/demo.js
index 12c6e8e..68f7c51 100644
--- a/asterix-app/src/main/resources/sdk/static/example/js/demo.js
+++ b/asterix-app/src/main/resources/sdk/static/example/js/demo.js
@@ -3,33 +3,31 @@
// 0A - Exact-Match Lookup
$('#run0a').click(function () {
$('#result0a').html('');
- var expression0a = new FLWOGRExpression({
- "success" : function(res) {
- $('#result0a').html(res["results"]);
- }
- })
- .bind( new ForClause("user", null, new AExpression().set("dataset FacebookUsers")) )
- .bind( new WhereClause(new BooleanExpression("$user.id = 8")) )
- .bind({ "return" : new AExpression().set("$user") });
- expression0a.run();
+ var expression0a = new FLWOGRExpression()
+ .bind( new ForClause("user", null, new AExpression().set("dataset FacebookUsers")))
+ .bind( new WhereClause(new AExpression().set("$user.id = 8")))
+ .bind( new ReturnClause("$user"));
+
+ var success0a = function(res) {
+ $('#result0a').html(res["results"]);
+ };
+ expression0a.run(success0a);
});
// 0B - Range Scan
$("#run0b").click(function() {
$('#result0b').html('');
- var expression0b = new FLWOGRExpression({
- "success" : function(res) {
- alert(JSON.stringify(res));
- $('#result0b').html(res["results"]);
- },
- })
- .bind( new ForClause("user", null, new AExpression().set("dataset FacebookUsers")) )
- .bind( new WhereClause( new BooleanExpression("AND", new BooleanExpression(">=", "$user.id", 2), new BooleanExpression("<=", "$user.id", 4)) ) )
- .bind( new ReturnClause("$user") );
- alert(expression0b.val());
- expression0b.run();
+ var expression0b = new FLWOGRExpression()
+ .bind( new ForClause("user", null, new AExpression().set("dataset FacebookUsers")))
+ .bind( new WhereClause( new AExpression().set("$user.id >= 2 and $user.id <= 4")))
+ .bind( new ReturnClause("$user"));
+
+ var success0b = function(res) {
+ $('#result0b').html(res["results"]);
+ };
+ expression0b.run(success0b);
});
@@ -37,78 +35,138 @@
$("#run1").click(function() {
$('#result1').html('');
- var expression1 = new FLWOGRExpression({
- "success" : function(res) {
- alert(JSON.stringify(res));
- $('#result1').html(res["results"]);
- }
- });
- alert("EXPRESSION 1 " + expression1.val());
+ var expression1 = new FLWOGRExpression()
+ .bind( new ForClause("user", null, new AExpression().set("dataset FacebookUsers")))
+ .bind( new WhereClause( new AExpression().set("$user.user-since >= datetime('2010-07-22T00:00:00') and $user.user-since <= datetime('2012-07-29T23:59:59')")))
+ .bind( new ReturnClause("$user"));
+
+ var success1 = function(res) {
+ $('#result1').html(res["results"]);
+ };
+ expression1.run(success1);
});
-
+
+ // "similar-tweets": new FLWOGRExpression()
+ // .bind( new ForClause( "t2", null, new AExpression().set("dataset TweetMessages") ))
+ // .bind( new AQLClause().set("where $t2.referred-topics ~= $t.referred-topics and $t2.tweetid != $t.tweetid") )
+ // .bind( new ReturnClause("$t2.referred-topics"))
+ // }));
+
// 2A - Equijoin
$("#run2a").click(function() {
$('#result2a').html('');
- var expression2a = new FLWOGRExpression({
- "success" : function(res) {
- alert(JSON.stringify(res));
- $('#result2a').html(res["results"]);
- }
- });
- alert("EXPRESSION 2a " + expression2a.val());
+ var expression2a = new FLWOGRExpression()
+ .bind( new ForClause ("user", null, new AQLClause().set("dataset FacebookUsers")))
+ .bind( new ForClause ("message", null, new AQLClause().set("dataset FacebookMessages")))
+ .bind( new WhereClause (new AExpression().set("$message.author-id = $user.id")))
+ .bind( new ReturnClause(
+ {
+ "uname" : "$user.name",
+ "message" : "$message.message"
+ }
+ ));
+
+ var success2a = function(res) {
+ $('#result2a').html(res["results"]);
+ };
+ expression2a.run(success2a);
});
// 2B - Index Join
$("#run2b").click(function() {
$('#result2b').html('');
- var expression2b = new FLWOGRExpression({
- "success" : function(res) {
- alert(JSON.stringify(res));
- $('#result2b').html(res["results"]);
- }
- });
- alert("EXPRESSION 2b " + expression2b.val());
+ var expression2b = new FLWOGRExpression()
+ .bind( new ForClause ("user", null, new AQLClause().set("dataset FacebookUsers")))
+ .bind( new ForClause ("message", null, new AQLClause().set("dataset FacebookMessages")))
+ .bind( new WhereClause (new AExpression().set("$message.author-id /*+ indexnl */ = $user.id")))
+ .bind( new ReturnClause(
+ {
+ "uname" : "$user.name",
+ "message" : "$message.message"
+ }
+ ));
+
+ var success2b = function(res) {
+ $('#result2b').html(res["results"]);
+ };
+ expression2b.run(success2b);
});
// 3 - Nested Outer Join
$("#run3").click(function() {
$('#result3').html('');
- var expression3 = new FLWOGRExpression({
- "success" : function(res) {
- alert(JSON.stringify(res));
- $('#result3').html(res["results"]);
- }
- });
- alert("EXPRESSION 3 " + expression3.val());
+ var expression3messages = new FLWOGRExpression()
+ .bind( new ForClause("message", null, new AExpression().set("dataset FacebookMessages")))
+ .bind( new WhereClause(new AExpression().set("$message.author-id = $user.id")))
+ .bind( new ReturnClause("$message.message"));
+
+ var expression3 = new FLWOGRExpression()
+ .bind( new ForClause ("user", null, new AQLClause().set("dataset FacebookUsers")))
+ .bind( new ReturnClause({
+ "uname": "$user.name",
+ "messages" : expression3messages
+ }));
+
+ var success3 = function(res) {
+ $('#result3').html(res["results"]);
+ };
+ expression3.run(success3);
});
// 4 - Theta Join
$("#run4").click(function() {
$('#result4').html('');
- var expression4 = new FLWOGRExpression({
- "success" : function(res) {
- alert(JSON.stringify(res));
- $('#result4').html(res["results"]);
- }
- });
- alert("EXPRESSION 4 " + expression4.val());
+ var expression4messages = new FLWOGRExpression()
+ .bind( new ForClause( "t2", null, new AExpression().set("dataset TweetMessages")))
+ .bind( new WhereClause( new AExpression().set("spatial-distance($t.sender-location, $t2.sender-location) <= 1")))
+ .bind( new ReturnClause({ "msgtxt" : "$t2.message-text" }));
+
+ var expression4 = new FLWOGRExpression()
+ .bind( new ForClause( "t", null, new AExpression().set("dataset TweetMessages") ))
+ .bind( new ReturnClause({
+ "message" : "$t.message-text",
+ "nearby-messages" : expression4messages
+ }));
+
+ var success4 = function(res) {
+ $('#result4').html(res["results"]);
+ };
+ expression4.run(success4);
});
// 5 - Fuzzy Join
$("#run5").click(function() {
$('#result5').html('');
- var expression5 = new FLWOGRExpression({
- "success" : function(res) {
- alert(JSON.stringify(res));
- $('#result5').html(res["results"]);
- }
- });
- alert("EXPRESSION 5 " + expression5.val());
+ var similarUsersExpression = new FLWOGRExpression()
+ .bind( new ForClause ("t", null, new AQLClause().set("dataset TweetMessages")))
+ .bind( new LetClause ("tu", new AExpression().set("$t.user")))
+ .bind( new WhereClause (new AExpression().set("$tu.name ~= $fbu.name")))
+ .bind( new ReturnClause ({
+ "twitter-screenname": "$tu.screen-name",
+ "twitter-name": "$tu.name"
+ }));
+
+ var expression5 = new FLWOGRExpression()
+ .bind( new SetStatement( "simfunction", "edit-distance" ))
+ .bind( new SetStatement( "simthreshold", "3"))
+ .bind( new ForClause ("fbu", null, new AQLClause().set("dataset FacebookUsers")))
+ .bind( new ReturnClause(
+ {
+ "id" : "$fbu.id",
+ "name" : "$fbu.name",
+ "similar-users" : similarUsersExpression
+ }
+ ));
+
+ var success5 = function (res) {
+ $('#result5').html(res["results"]);
+ };
+ expression5.run(success5);
});
// 6 - Existential Quantification
@@ -250,11 +308,7 @@
$("#run11").click(function() {
$('#result11').html('');
- var expression11 = new FLWOGRExpression({
- "success" : function(res) {
- $('#result11').html(res["results"]);
- }
- })
+ var expression11 = new FLWOGRExpression()
.bind( new SetStatement( "simfunction", "jaccard" ))
.bind( new SetStatement( "simthreshold", "0.3"))
.bind( new ForClause( "t", null, new AExpression().set("dataset TweetMessages") ))
@@ -272,14 +326,14 @@
expression11.run(success11);
});
- //$('#run0a').trigger('click');
- //$('#run0b').trigger('click');
- //$('#run1').trigger('click');
- //$('#run2a').trigger('click');
- //$('#run2b').trigger('click');
- //$('#run3').trigger('click');
- //$('#run4').trigger('click');
- //$('#run5').trigger('click');
+ $('#run0a').trigger('click');
+ $('#run0b').trigger('click');
+ $('#run1').trigger('click');
+ $('#run2a').trigger('click');
+ $('#run2b').trigger('click');
+ $('#run3').trigger('click');
+ $('#run4').trigger('click');
+ $('#run5').trigger('click');
$('#run6').trigger('click');
$('#run7').trigger('click');
$('#run8').trigger('click');
diff --git a/asterix-app/src/main/resources/sdk/static/js/asterix-sdk-stable.js b/asterix-app/src/main/resources/sdk/static/js/asterix-sdk-stable.js
index 4584bcc..473919c 100644
--- a/asterix-app/src/main/resources/sdk/static/js/asterix-sdk-stable.js
+++ b/asterix-app/src/main/resources/sdk/static/js/asterix-sdk-stable.js
@@ -296,7 +296,7 @@
}
}
this._properties["clause"] += returnStatements.join(",\n");
- this._properties["clause"] += "}";
+ this._properties["clause"] += "\n}";
} else {
this._properties["clause"] += new AQLClause().set(expression).val();