[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Early Draft Review: XQuery for Java (JSR 225)


xquery for b in doc
Michael Kay wrote:

> 
>  
>
>>In Pizza (or Haskell or ocaml or Scala) one would do like this:
>>
>>Var b = Var();
>>Var authors = Var();
>>FLOWR(
>>   For( b, Doc("books.xml").descOrSelf("bib:book"), 
>>         /* for $b in doc("books.xml") // bib:book */
>>   Let( authors, b.descOrSelf("bib:author") ),
>>         /* let $authors = b // bib:author */
>>   _,
>>   _,
>>   Return(
>>       element("result"),
>>       Sequence( b.child("bib:title"), authors )
>>    )  /* return <result>{ $b/bib:title, $authors }</result> */
>>)
>>
>>    
>>
>
>But that's not exactly XQuery, is it? It's a new query language of your own
>  
>
The syntax is different, but I am not sure whether that matters.

Since XQuery has an XML syntax ( http://www.w3.org/TR/xqueryx/ ), one 
can argue that there is a canonical tree representation of each XQuery 
code fragment. Yes, it is a bit bloated, but these things can easily be 
generated by code.

 From trees to algebraic datatypes (or just plain classes whose only 
constructor takes the "right" types) it is only a little step, easy to 
specify and implement. Any XML processing code (be it in Java, XSLT or 
XQuery itself) could construct an XML tree representing a query before 
shipping it to the DBMS via the driver. I don't see why an abstraction 
representation of a program should fail to comply to the language.

>invention. This approach requires a new query language to be designed for
>each host language. You haven't started to address the problems, which range
>  
>
I was mainly concerned with Java, but I think any class-based OO 
language or one with algebraic data-types

>from incompatible syntax for identifiers between the programming language
>and the database, to incompatible semantics for operators like "=".
>
>  
>
The only thing a host language identifier could get bound to is a some 
instance of "XQueryThingie" - they do not interact with database idents. 
It should be database drivers who are responsible for handling these 
things, not application developers!

E.g. in Scala, I could define a function

def $( name:String ):XQueryVariable = Driver.make.XQueryVariable( name );

About operators, you got a point - if I were to use a language that does 
not allow me to redefine operators (such that the construction of 
XQueryThingies gets hidden), then I might run into problems. Like 
$("foo") = $("foo") might compare pointers instead of names.

Again, I did not provide a solution to everything (the string name might 
contain rubbish, which gets processed away or rubbish that makes the 
Driver fail). But these problems are comparably simpler to solve than 
the ones involved in debugging query strings.

>I think this example absolutely demonstrates the difficulties that arise
>with database sublanguages, and the reason they became unpopular.
>
>  
>

What has not changed is that programming languages do not really support 
integration of domain specific languages well.

But I think compiler technology came a long way. In large scale 
projects, one is well aware of advantages of static verification. 
Algebraic datatypes make slowly make their way to the mainstream. I 
think it is only a question of time when also mainstream language will 
come up with things like algebraic types (maybe even Java 1.6 ?).

All this to say, there are better ways today to integrate DSLs like 
XQuery available.

cheers,
Burak

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2007 All Rights Reserved.