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.

Hi, all is going sound here

Hi, all is going sound here and ofcourse every one
is sharing data, that's in fact excellent, keep up writing.

Hey terrific blog! Does

Hey terrific blog! Does running a blog similar to this take a lot of work?
I have very little knowledge of computer programming however I was hoping to start my own blog in the near
future. Anyway, should you have any recommendations
or techniques for new blog owners please share. I understand this is off subject nevertheless I simply needed to ask.

Thank you!

This post will help the

This post will help the internet visitors for creating new
webpage or even a weblog from start to end.

Right away I am going to do

Right away I am going to do my breakfast, later than having my breakfast
coming over again to read more news.

It's really a great and

It's really a great and useful piece of information. I'm happy
that you just shared this useful info with us. Please stay us informed like this.
Thank you for sharing.

You really make it appear so

You really make it appear so easy together with your presentation but I to find
this topic to be really something which I believe I'd by no means understand.
It kind of feels too complicated and extremely wide for
me. I am looking forward to your next put up, I will attempt to get the cling
of it!

Hello, juist wɑnted to

Hello, juist wɑnted to mention, Ӏ loved ths post.
Ιt was helpful. Keeep оn posting!

I do trust all the concepts

I do trust all the concepts you've presented in your
post. They are really convincing and can certainly work.
Still, the posts are too brief for beginners. May
you please prolong them a bit from next time?
Thanks for the post.

That is really fascinating,

That is really fascinating, You're an excessively professional blogger.
I've joined your feed and look forward to searching for more
of your fantastic post. Additionally, I have shared your site in my social networks

Hi there it's me, I am also

Hi there it's me, I am also visiting this site daily, this site is
really fastidious and the viewers are actually sharing good thoughts.

wonderful issues altogether,

wonderful issues altogether, you simply gained a logo new reader.
What might you suggest about your put up that you made a few days in the past?
Any positive?

If some one desires expert

If some one desires expert view concerning running a
blog afterward i propose him/her to pay a quick visit this blog, Keep
up the good job.

I used to be recommended this

I used to be recommended this website via my cousin. I am no longer sure whether this submit is written by means
of him as no one else recognize such specific about my trouble.
You are amazing! Thank you!

Another purpose is that you

Another purpose is that you are giving incentives for many other players to remain in the hand.
Poker is the high yielding senior member of card games.

Is bluffing useful when all the other players verify or should you try to snare your competitors as soon as you are dealt a
hand? You can turn many games into writing video games
for kids. And if you are addicted to poker, find help immediately.

Unquestionably believe that

Unquestionably believe that which you said. Your favorite reason appeared to be on the internet the easiest thing to be aware of.
I say to you, I definitely get annoyed while
people think about worries that they plainly don't know about.
You managed to hit the nail upon the top and also defined out
the whole thing without having side effect
, people could take a signal. Will likely be back to get more.

Thanks

Great article.

Great article.

This site was... how do I say

This site was... how do I say it? Relevant!! Finally I have found something which helped
me. Cheers!

It's going to be ending of

It's going to be ending of mine day, but
before ending I am reading this impressive piece of writing to increase my knowledge.

For latest information you

For latest information you have to pay a visit world-wide-web and on the web I
found this website as a best web page for most recent updates.

Wonderful beat ! I would like

Wonderful beat ! I would like to apprentice while you amend your
site, how could i subscribe for a blog site?
The account helped me a acceptable deal. I were tiny bit acquainted of this your broadcast provided vibrant clear concept

I feel that is one of the

I feel that is one of the such a lot significant info for
me. And i'm glad reading your article. But should commentary on few common things, The web site style is great, the articles
is in reality great : D. Excellent activity, cheers

I am in fact happy to read

I am in fact happy to read this webpage posts
which consists of plenty of helpful data, thanks for providing
these kinds of data.

Every weekend i used to go to

Every weekend i used to go to see this site, for the reason that i
want enjoyment, since this this web page conations genuinely good funny material too.

Right away I am ready to do

Right away I am ready to do my breakfast, after having my breakfast coming again to read
additional news.

Awesome things here. I am

Awesome things here. I am very glad to look your post. Thanks so much and I'm taking a look forward to contact you.
Will you please drop me a e-mail?

Thank you a bunch for sharing

Thank you a bunch for sharing this with all folks you actually
know what you are talking about! Bookmarked.

Kindly additionally discuss with my website =). We may have a link trade agreement between us

That is very fascinating,

That is very fascinating, You're a very skilled blogger.

I've joined your rss feed and look forward to in the hunt for extra of your fantastic
post. Additionally, I have shared your web site in my social networks

What's Going down i am new to

What's Going down i am new to this, I stumbled upon this I've discovered It positively helpful
and it has helped me out loads. I am hoping to contribute & help different customers like its
aided me. Good job.

Everything is very open with

Everything is very open with a very clear explanation of the challenges.
It was really informative. Your site is extremely helpful.
Thanks for sharing!

It's a shame you don't have a

It's a shame you don't have a donate button! I'd certainly donate to this excellent blog!
I suppose for now i'll settle for book-marking and adding your RSS feed
to my Google account. I look forward to brand new updates and will talk about this website with my Facebook group.
Chat soon!

Very good info. Lucky me I

Very good info. Lucky me I found your website by
chance (stumbleupon). I have saved it for later!

I quite like looking through

I quite like looking through an article that can make people think.
Also, thanks for allowing for me to comment!

I'm impressed, I must say.

I'm impressed, I must say. Seldom do I encounter a blog that's both equally educative and engaging, and let me tell
you, you've hit the nail on the head. The problem is something
which not enough folks are speaking intelligently about.
I am very happy I stumbled across this in my hunt for something concerning this.

With havin so much content do

With havin so much content do you ever run into any problems of plagorism or copyright violation? My site has
a lot of completely unique content I've either written myself or outsourced but it looks like a lot of it is
popping it up all over the internet without my authorization. Do you know any solutions to help stop
content from being ripped off? I'd certainly appreciate it.

It's impressive that you are

It's impressive that you are getting thoughts from this
article as well as from our discussion made at
this time.

Great post! We are linking to

Great post! We are linking to this great content
on our site. Keep up the great writing.

Asking questions are

Asking questions are genuinely good thing if you are not understanding something fully,
except this post gives good understanding yet.

It's really very complex in

It's really very complex in this full of activity
life to listen news on TV, thus I only use internet for that reason, and get the newest news.

I am regular visitor, how are

I am regular visitor, how are you everybody? This post posted at this website is in fact pleasant.

What's up friends, pleasant

What's up friends, pleasant article and pleasant
arguments commented at this place, I am really enjoying by these.

Definitely consider that that

Definitely consider that that you said. Your favorite reason appeared to be
at the net the easiest factor to remember of. I say to you, I definitely get annoyed even as other people think about worries that
they plainly do not recognise about. You managed to hit the nail upon the top and also defined
out the whole thing with no need side-effects , folks could take a signal.

Will probably be back to get more. Thanks

An impressive share! I've

An impressive share! I've just forwarded this onto a colleague who was doing
a little research on this. And he actually ordered me breakfast because I discovered
it for him... lol. So let me reword this.... Thank YOU for the meal!!
But yeah, thanx for spending time to talk about this issue here on your site.

Right away I am ready to do

Right away I am ready to do my breakfast, later than having my breakfast coming again to read further
news.

Thanks for finally writing

Thanks for finally writing about >Reply to comment | antforge.org <Liked it!

Can I simply say what a

Can I simply say what a comfort to uncover someone that genuinely understands what they are talking
about on the internet. You actually realize how to bring
a problem to light and make it important. A lot more people should look
at this and understand this side of the story.
It's surprising you aren't more popular since you surely
possess the gift.

This is really fascinating,

This is really fascinating, You are an excessively skilled blogger.
I've joined your feed and look forward to searching for extra of your great post.
Additionally, I have shared your website in my social networks

Thanks for another great

Thanks for another great post. The place else may anyone get that
kind of information in such an ideal method of writing?
I have a presentation subsequent week, and I'm on the look for such information.

I have read so many posts

I have read so many posts concerning the blogger lovers however this post is
really a nice paragraph, keep it up.

Wonderful goods from you,

Wonderful goods from you, man. I've consider your stuff previous
to and you're just extremely fantastic. I actually like what you have received here,
really like what you're stating and the way in which during which you assert
it. You make it enjoyable and you still care for to stay it smart.
I cant wait to learn far more from you. This is actually a great
site.

We absolutely love your blog

We absolutely love your blog and find nearly all of your post's to be just what I'm looking for.
Would you offer guest writers to write content for you?
I wouldn't mind producing a post or elaborating on some of the subjects you write regarding here.
Again, awesome web log!