- From: Paul Duffin <pduffin@volantis.com>
- Date: Wed, 16 Jul 2003 17:49:08 +0100
- To: Jerome Simeon <simeon@research.bell-labs.com>
- CC: Torsten Grust <grust@inf.uni-konstanz.de>, www-ql@w3.org
Thanks ever so much. I had not come across a reference to it in the parts of the other XPath 2.0 and XQuery 1.0 documents I had read. Jerome Simeon wrote: > Paul, > > The type system of XPath and XQuery is (based on) XML Schema. XML Schema > provides types for sequences of items (or nodes). The connection between > XML Schema and the XPath and XQuery type system is described in the > XQuery 1.0 and XPath 2.0 Formal Semantics, which is what Torsten pointed > you to. > > For instance, the following XML Schema element declaration: > > <xs:element name="a" type="T"/> > <complexType name="T"> > <xs:sequence> > <xs:element name="b" type="xs:string"/> > </xs:element name="c" type="xs:integer" maxOccurs="unbounded"/> > </xs:sequence> > </complexType> > > In the XQuery type system, this is written as: > > define element a of type T > define type T { > element b of type xs:string, > element c of type xs:integer+ > } > > The key point here is that the content model of a complex type > effectively acts as a 'type' for a sequence of items (nodes). > > At the XQuery type system level, that means: > > element b of type xs:string, element c of type xs:integer+ > > is a type of a sequence of one element containing a string, followed by > one or more elements c of type xs:integer. > > Finally, there is a connection with 'SequenceTypes' in XQuery. > SequenceTypes are used to refer to XML Schema types, but can also > indicate a collection (using an occurrence indicator). > > For instance: > > The sequence type: element(a)+ > Corresponds to the type: element a+ in the XQuery type system. > > However, sequence types cannot express all kinds of sequences from > schema (they cannot express choice, all groups, or sequences of > heterogeneous elements). > > Hope this helps, > - Jerome > > On Tue, 2003-07-15 at 12:18, Paul Duffin wrote: > >>Torsten, >> It does a little. >> >>I am more interested in the usage of this within XPath than in XQuery. I >>am not sure whether this mailing list is the right one to use it is just >>it is referred to from the same page that refers to the XPath/XQuery >>model and functions / operators. >> >>I cannot find anything within the XPath specifications that relate to >>this. The closest I found was the SequenceType but that does not appear >>to match what you describe below. >> >>Torsten Grust wrote: >> >>>Paul, >>> >>> does the following help? >>> >>>On July 15 (11:03 +0100), Paul Duffin wrote with possible deletions: >>>| >>>| The section on sequences >>>| (http://www.w3.org/TR/xpath-datamodel/#sequences) states that a sequence >>>| that contains a single item is indistinguishable from the item itself. >>>| Among other things this means that a sequence with one item in it has >>>| the same type as that item. Therefore sequences must have types. >>>| >>>| This raises a couple of questions. >>>| >>>| What is the type of a sequence with two (or more) items in it which are >>>| potentially different ? >>>| >>>| Is it just a generic sequence type, is it the type which is the closest >>>| ancestor of all the item types, or something else ? >>> >>>For two items x and y of types s and t, respectively, the sequence >>>value (x,y) has type s,t. Note that (.,.) (the ``comma'') is used as >>>a binary type constructor in forming the type s,t. >>> >>>As a derivation rule: >>> >>> E |- x:s E |- y:t >>> --------------------- >>> E |- (x,y) : s,t >>> >>> >>>What you refer to above (``closest ancestor'') might be related to >>>approximations of such sequence types: >>> >>>The XQuery Formal Semantics sometimes compute (more or less rough) >>>approximations of these types (e.g., during the typing of a for-bound >>>variable). An approximation of the type s,t is >>> >>> (s | t)+ >>> >>>computed as >>> >>> prime (s,t) quantifier (s,t) >>> \_________/ \______________/ >>> = s | t = + >>> >>>Note that information about the order of s and t in the original type >>>as well as information about the exact number of occurrences of s and >>>t in the original type are lost. We do however have >>> >>> s,t <: (s | t)+ >>> >>>which ensures that typing the rest of program using the approximation >>>is safe. >>> >>>| What is the type of an empty sequence ? >>> >>>The type of the empty sequence is the special type empty. >>> >>> >>>Greetings, >>> --Torsten >>> >>>-- >>> | Dr. Torsten Grust Torsten.Grust@uni-konstanz.de | >>> | http://www.inf.uni-konstanz.de/~grust/ | >>> | Database Research Group, University of Konstanz (Lake Constance/Germany) | >>> | (Please avoid sending me MS Word or PowerPoint attachments.) | >>
Received on Wednesday, 16 July 2003 13:52:27 UTC