WAQL-PP: Preprocessor for a Data Aggregation Query Language

This week I started to design and implement a preprocessor for the Web-service Aggregation Query Language (WAQL) which is an extension of XQuery. This language is used as part of the WS-Aggregation framework developed at the Distributed Systems Group of the Vienna University of Technology. With this text I want to explain the motivation behind WAQL and how the preprocessor will be designed. The motivation is nicely stated as part of my task description.

The key idea of WAQL is that it provides a convenience syntax for XQuery, which otherwise tends to become complex and hardly comprehensible in bigger scenarios. WAQL queries are transformed into valid XQuery expressions, which are finally executed by a (third-party) XQuery engine.

First of all we need to get a grasp of what the WAQL extensions to the XQuery language are. Since WAQL is still in its experimental stages, there is no exact specification of the language and it may change or grow over time. At the moment WAQL consists of two language constructs:

  • Template Lists: This extension tries to simplify the specification of generated inputs. It basically is syntactical sugar representing a XQuery for-loop construct and as such can be transformed easily.
  • Data Dependencies: This second extension is the interesting one, it can express dependencies between several different queries. The framework has to identify these dependencies and execute the queries in a valid order, so that all dependencies can be resolved.

The above two constructs should explain why the actual transformation has to be split into several phases which can be triggered by the framework at different points in time. The separate steps the preprocessor has to perform are as follows:

  1. Parsing: The textual WAQL query is parsed and an intermediate representation is constructed. Since WAQL is an extension which enhances the set of expressions for the XQuery language, the actual parser has to understand the full XQuery grammar. This may sound like a lot of work, but the XQuery specification provides a detailed description of the grammar in about 140 EBNF rules. So defining a valid parser is a doable job.
  2. Resolving of data dependencies: At this point the preprocessor has generated a list of all unresolved data dependencies. However the preprocessor has no idea which other queries are linked to the one currently being processed. So the actual resolving has to be done by the framework, the preprocessor just adapts the intermediate representation to the data provided by the framework.
  3. Transformation: Once all dependencies have been resolved the intermediate representation can be transformed back into a textual XQuery (without any WAQL extensions), which can then be passed on to a third-party XQuery engine.

Now that the basic operations are defined, we are able to give a rough description of the WAQL preprocessor and how it can be embedded into the existing framework. The two basic modules are a generated parser (obviously performing the parsing step) and a driving engine (performing the resolving and transformation steps). The parser will most certainly be generated using the JavaCC parser generator. The below graphic should explain the architecture.

Architecture of the WAQL preprocessor

Note that the above explanation is written from the compiler-constructor point of view, it just covers the preprocessor as part of the framework. All the other nasty details of WS-Aggregation are beyond the scope of this text. If you are interested you should read the paper or contact Waldemar Hummer who was kind enough to explain it to me. Also I will continue to write about the ongoing development of the preprocessor, so stay tuned.

Update: This text was crossposted to the DSG Praktika Blog as well.

hello!,I love your writing

hello!,I love your writing very much! percentage we keep in touch more approximately your post on AOL?
I require an expert in this area to solve my problem.

Maybe that's you! Having a look ahead to see you.

Fine way of explaining, and

Fine way of explaining, and pleasant article to get
facts about my presentation subject matter,
which i am going to convey in college.

Great post! We will be

Great post! We will be linking to this particularly great
content on our site. Keep up the good writing.

Good way of telling, and good

Good way of telling, and good piece of writing to take facts on the
topic of my presentation subject matter, which
i am going to deliver in university.

Hi, I think your website

Hi, I think your website might be having browser
compatibility issues. When I look at your website in Firefox,
it looks fine but when opening in Internet Explorer,
it has some overlapping. I just wanted to give you a quick
heads up! Other then that, excellent blog!

Starting your very own eBay

Starting your very own eBay business isn't hard if
you put your heart and soul into it. Use some
of the many website optimization tools nowadays on marketplace. http://www.etnzn.com/comment/html/?523.html

I know this website gives

I know this website gives quality dependent posts and additional material, is there any other website which provides such things in quality?

Have you ever thought about

Have you ever thought about creating an ebook or guest authoring
on other sites? I have a blog based upon on the same ideas you discuss and would really like to
have you share some stories/information. I know my subscribers would enjoy
your work. If you are even remotely interested, feel
free to send me an e mail.

If some one needs expert view

If some one needs expert view regarding blogging then i propose him/her to
pay a visit this webpage, Keep up the pleasant work.

Hi there colleagues, its

Hi there colleagues, its enormous paragraph on the topic of
teachingand fully explained, keep it up all the time.

This article is really a nice

This article is really a nice one it helps new the web people, who are wishing in favor of blogging.

I blog frequently and I truly

I blog frequently and I truly appreciate your
content. This article has truly peaked my interest. I'm going to take a note of your blog and keep
checking for new details about once per week. I subscribed to your Feed
as well.

kte

I get along really well with

I get along really well with other active dog's.
Yes, you desire to feature your visual careers. I bet realize there are only what I mean! Telling
yourself fight is buried only undermines you. http://Jinyashengg.com/comment/html/?108232.html

It's an awesome paragraph in

It's an awesome paragraph in support of all the online visitors; they will obtain advantage from it I am sure.

Having read this I believed

Having read this I believed it was rather informative. I appreciate you finding
the time and effort to put this informative article together.
I once again find myself spending a lot of time both reading and leaving comments.
But so what, it was still worthwhile!

Thanks for any other

Thanks for any other excellent post. Where else may just anyone
get that type of info in such a perfect approach of writing?
I've a presentation subsequent week, and I'm at the search for such info.

This post will help the

This post will help the internet people for building up new web site or even a blog from start to
end.

Great article.

Great article.

Hey! This is my first comment

Hey! This is my first comment here so I just wanted
to give a quick shout out and tell you I genuinely enjoy reading through your posts.
Can you recommend any other blogs/websites/forums that
go over the same topics? Many thanks!

This is the perfect site for

This is the perfect site for anybody who wants to understand this
topic. You know so much its almost tough to argue with
you (not that I personally would want to…HaHa).
You certainly put a brand new spin on a subject that has been discussed
for decades. Excellent stuff, just excellent!

It's going to be ending of

It's going to be ending of mine day, but before finish I am reading this enormous paragraph to increase my experience.

Pingback

[...] http://www.mdp.state.md.us/msdc/PFA/Resid_Growth/by_County/howa_ParcelAcres1940_2007.xls http://www.antforge.org/blog/2010/10/25/waql-pp-preprocessor-data-aggregation-query-language http://www.flickr.com/groups/inspiration_faith_wisdom [...]

Oh my goodness! Impressive

Oh my goodness! Impressive article dude! Thank you so much, However I am encountering problems with your
RSS. I don't understand the reason why I cannot join it. Is there
anyone else getting similar RSS problems? Anybody who knows the solution can you kindly respond?
Thanks!!

Hey! This is my first comment

Hey! This is my first comment here so I just wanted to give a
quick shout out and tell you I really enjoy reading through your articles.

Can you suggest any other blogs/websites/forums that deal with the same subjects?
Thanks a lot!

Thank you, I've just been

Thank you, I've just been searching for information approximately this topic for
ages and yours is the greatest I have found out so far.
But, what concerning the bottom line? Are you positive in regards to the supply?

I'm no longer positive the

I'm no longer positive the place you're getting your info, but great topic.
I must spend a while finding out much more or understanding more.
Thanks for wonderful information I used to be looking for
this information for my mission.

Wonderful items from you,

Wonderful items from you, man. I've be aware your stuff previous to
and you're simply extremely magnificent. I really like what you have got here, really like what you're saying
and the best way wherein you assert it. You make it enjoyable and you still care for to stay it
wise. I cant wait to read far more from you. This is
actually a wonderful web site.

Hi there, the whole thing is

Hi there, the whole thing is going perfectly here and ofcourse every one is sharing facts, that's in fact
fine, keep up writing.

Hi there Dear, are you

Hi there Dear, are you genuinely visiting this site
daily, if so then you will absolutely take pleasant
know-how.

ROB: Nobody is the most well

ROB: Nobody is the most well organized podcast, though
I think we start a good job of masking that. The Romans only had VHF
and three black and white channels -- all in Latin. The records I've heard to date are unimaginable. https://pruebasatelite.000webhostapp.com/index.php?action=profile;u=18291

Aw, this was an incredibly

Aw, this was an incredibly good post. Finding the time and actual
effort to produce a great article… but what can I say… I procrastinate a lot
and don't manage to get anything done.

Understand these 3 parts you

Understand these 3 parts you may have no trouble at
all bring far more traffic. We could tell the direction belonging to the
sound, but somehow, Received off track again. Forums bring
people together to talk about topics. http://www.kongyaji4s.com.cn/comment/html/?3241.html

An interesting discussion is

An interesting discussion is worth comment. I believe
that you need to publish more about this subject, it might not be a taboo matter but usually people do not discuss these
topics. To the next! Many thanks!!

Thank you, I have just been

Thank you, I have just been searching for information approximately this subject for a while and yours is the greatest
I have discovered till now. However, what concerning the bottom line?

Are you certain about the supply?

Excellent post. I will be

Excellent post. I will be dealing with some of these
issues as well..

I do not know if it's just me

I do not know if it's just me or if perhaps everyone else experiencing
problems with your website. It appears like some of the text within your posts are running off
the screen. Can someone else please comment and let me know if this is happening to them too?
This may be a issue with my browser because I've had this happen before.
Appreciate it

Pingback

[...] of WAQL-PP, a WAQL Preprocessor for Java I was working on for the last two weeks. In one of the former posts I described the motivation behind this little project and how I planned to implement it. I’m [...]

I am regular reader, how are

I am regular reader, how are you everybody? This
article posted at this website is in fact good.

Hi fantastic website! Does

Hi fantastic website! Does running a blog such as this take a massive amount work?

I have very little understanding of programming but I
had been hoping to start my own blog in the
near future. Anyhow, if you have any ideas or tips for new blog owners please share.
I understand this is off subject nevertheless I just needed to
ask. Kudos!

I'm amazed, I must say.

I'm amazed, I must say. Rarely do I come across a blog that's
both equally educative and amusing, and without a doubt, you have hit the nail on the head.
The issue is an issue that too few people are speaking intelligently about.
Now i'm very happy that I found this during my search for something concerning this.

If you would like to grow

If you would like to grow your knowledge only keep visiting this web
page and be updated with the hottest information posted
here.

you're actually a good

you're actually a good webmaster. The site loading speed is amazing.
It seems that you're doing any unique trick. Moreover, The contents are masterpiece.
you have done a excellent activity in this matter!

Very quickly this web page

Very quickly this web page will be famous among all blogging viewers,
due to it's nice content

What's up to every body, it's

What's up to every body, it's my first visit of this weblog; this
web site carries remarkable and genuinely fine data for visitors.

What's up, I desire to

What's up, I desire to subscribe for this web site to take latest updates, therefore where can i do it please help.

Excellent website. Lots of

Excellent website. Lots of helpful info here. I'm sending it to a few friends
ans also sharing in delicious. And naturally, thanks in your effort!

Right here is the perfect

Right here is the perfect site for anyone who really wants to understand
this topic. You realize so much its almost tough to argue with you (not that I actually would want to…HaHa).
You certainly put a brand new spin on a subject that has
been written about for many years. Excellent stuff, just excellent!

Pingback

[...] text was crossposted to my personal blog as well. ShareSave Tagged as: JavaCC, WAQL, WS-Aggregation, XQuery Leave a [...]