[xquery-talk] XQuery and Item Orientation

Michael Kay mike at saxonica.com
Tue Jan 20 18:19:39 PST 2009


In my research group, we are actually working on a project about object
orientation in XQuery, called Unity. We did not go into dynamic binding or
polymorphism, but basically, we simply tried to introduce code in the schema
to allow constructs like, following your idea:


where the context item is passed as a hidden parameter to the method rotate.
The method rotate is defined in the schema for the static type of $triangle.

I don't think static polymorphism (overloading based on the static type of
the arguments - here the implicit first argument) - is a particularly useful
step forwards. It gives a minor syntactic convenience for the kind of highly
structured data where static typing works, but the real need is for
something more dynamic.

I'm all in favour of allowing a function to declare that it takes the
context item as an implicit parameter, but that's just a bit of syntactic

We have implemented a cross-compiler which compiles Unity code to XQuery+XML
Schema, and could test the output successfully with Saxon SA on several
examples. We did not encounter any major issues during the implementation.
One issue could be a name collision between a method and a function, which
can be solved by looking at methods for the static type of the context item
first, and then at functions.

I think that if you are despatching different methods based on the results
of static type inferencing, then the static type rules need to be visible
to, and comprehensible to, the users of the language. That isn't the case
with Saxon's current static typing, which is designed for optimization and
diagnostics only - it shouldn't affect the result of the query, so it's done
as intelligently as Saxon considers appropriate. I would be very concerned
about "freezing" the static typing rules in such a way that a change to make
it more clever could affect the results of user queries.
Michael Kay

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://x-query.com/pipermail/talk/attachments/20090120/c6c5b70e/attachment-0001.htm

More information about the talk mailing list