Standalone running version of AdmAQL101 demo
diff --git a/asterix-examples/src/main/resources/intro/static/js/demo.js b/asterix-examples/src/main/resources/intro/static/js/demo.js
new file mode 100644
index 0000000..e30297e
--- /dev/null
+++ b/asterix-examples/src/main/resources/intro/static/js/demo.js
@@ -0,0 +1,349 @@
+$(document).ready(function() {
+
+ var A = new AsterixDBConnection().dataverse("TinySocial");
+
+ function addResult(dom, res) {
+ for (i in res) {
+ $(dom).append(res[i] + "<br/>");
+ }
+ }
+
+ // 0A - Exact-Match Lookup
+ $('#run0a').click(function () {
+ $('#result0a').html('');
+
+ var expression0a = new FLWOGRExpression()
+ .ForClause("$user", new AExpression("dataset FacebookUsers"))
+ .WhereClause(new AExpression("$user.id = 8"))
+ .ReturnClause("$user");
+
+ var success0a = function(res) {
+ addResult('#result0a', res["results"]);
+ };
+
+ A.query(expression0a.val(), success0a);
+ });
+
+ // 0B - Range Scan
+ $("#run0b").click(function() {
+ $('#result0b').html('');
+
+ var expression0b = new FLWOGRExpression()
+ .ForClause("$user", new AExpression("dataset FacebookUsers"))
+ .WhereClause().and(new AExpression("$user.id >= 2"), new AExpression("$user.id <= 4"))
+ .ReturnClause("$user");
+
+ var success0b = function(res) {
+ addResult('#result0b', res["results"]);
+ };
+
+ A.query(expression0b.val(), success0b);
+ });
+
+ // 1 - Other Query Filters
+ $("#run1").click(function() {
+ $('#result1').html('');
+
+ 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");
+
+ var success1 = function(res) {
+ addResult('#result1', res["results"]);
+ };
+ A.query(expression1.val(), success1);
+ });
+
+ // 2A - Equijoin
+ $("#run2a").click(function() {
+ $('#result2a').html('');
+
+ 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"
+ });
+
+ var success2a = function(res) {
+ addResult('#result2a', res["results"]);
+ };
+ A.query(expression2a.val(), success2a);
+ });
+
+ // 2B - Index Join
+ $("#run2b").click(function() {
+ $('#result2b').html('');
+
+ 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"
+ });
+
+ var success2b = function(res) {
+ addResult('#result2b', res["results"]);
+ };
+ A.query(expression2b.val(), success2b);
+ });
+
+ // 3 - Nested Outer Join
+ $("#run3").click(function() {
+ $('#result3').html('');
+
+ 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
+ });
+
+ var success3 = function(res) {
+ addResult('#result3', res["results"]);
+ };
+ A.query(expression3.val(), success3);
+ });
+
+ // 4 - Theta Join
+ $("#run4").click(function() {
+ $('#result4').html('');
+
+ 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
+ });
+
+ var success4 = function(res) {
+ addResult('#result4', res["results"]);
+ };
+ A.query(expression4.val(), success4);
+ });
+
+ // 5 - Fuzzy Join
+ $("#run5").click(function() {
+ $('#result5').html('');
+
+ 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
+ }
+ );
+
+ var success5 = function (res) {
+ addResult('#result5', res["results"]);
+ };
+
+ var simfunction = new SetStatement( "simfunction", "edit-distance" );
+ var simthreshold = new SetStatement( "simthreshold", "3");
+
+ A.query(
+ [ simfunction.val() , simthreshold.val() , expression5.val() ],
+ success5
+ );
+ });
+
+ // 6 - Existential Quantification
+ $("#run6").click(function() {
+ $('#result6').html('');
+
+ 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");
+
+ var success6 = function(res) {
+ addResult('#result6',res["results"]);
+ };
+
+ A.query(expression6.val(), success6);
+ });
+
+ // 7 - Universal Quantification
+ $("#run7").click(function() {
+ $('#result7').html('');
+
+ 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");
+
+ var success7 = function(res) {
+ addResult('#result7', res["results"]);
+ };
+ A.query(expression7.val(), success7);
+ });
+
+ // 8 - Simple Aggregation
+ $('#run8').click(function () {
+
+ $('#result8').html('');
+
+ var expression8 = new FunctionExpression(
+ "count",
+ new FLWOGRExpression()
+ .ForClause("$fbu", new AExpression("dataset FacebookUsers"))
+ .ReturnClause("$fbu")
+ );
+
+ var success8 = function(res) {
+ addResult('#result8', res["results"]);
+ };
+ A.query(expression8.val(), success8);
+ });
+
+ // 9a - Grouping & Aggregation
+ $("#run9a").click(function() {
+ $('#result9a').html('');
+
+ 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"))
+ }
+ );
+
+ var success9a = function(res) {
+ addResult('#result9a', res["results"]);
+ };
+ A.query(expression9a.val(), success9a);
+ });
+
+ // 9b - Hash-based Grouping & Aggregation
+ $("#run9b").click(function() {
+ $('#result9b').html('');
+
+ 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"))
+ }
+ );
+
+ var success9b = function(res) {
+ addResult('#result9b', res["results"]);
+ };
+ A.query(expression9b.val(), success9b);
+ });
+
+ // 10 - Grouping and Limits
+ $("#run10").click(function() {
+ $('#result10').html('');
+
+ 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"
+ }
+ );
+
+ var success10 = function(res) {
+ addResult('#result10', res["results"]);
+ };
+ A.query(expression10.val(), success10);
+ });
+
+ // 11 - Left Outer Fuzzy Join
+ $("#run11").click(function() {
+ $('#result11').html('');
+
+ 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")
+ });
+
+ var success11 = function(res) {
+ addResult('#result11', res["results"]);
+ };
+
+ var simfunction = new SetStatement( "simfunction", "jaccard" );
+ var simthreshold = new SetStatement( "simthreshold", "0.3");
+ A.query(
+ [ simfunction.val(), simthreshold.val(), expression11.val()],
+ 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');
+ $('#run6').trigger('click');
+ $('#run7').trigger('click');
+ $('#run8').trigger('click');
+ $('#run9a').trigger('click');
+ $('#run9b').trigger('click');
+ $('#run10').trigger('click');
+ $('#run11').trigger('click');*/
+});