Qexo Implementation Status

Note: This (incompletely) describes the status of the Kawa/Qexo 1.8 release.

Type specifiers

Qexo only implements part of the XQuery types system. There is no support validation or Schema handling, and only some of the predefined types are recognized.

Atomic types

Expressions

Path expression

All path expressions are believed to work correctly. All axes (including optional ones, except the namespace axis) are implemented.

Node construction

All direct and computed node constructors are believed to work correctly.

Other expressions

FLWOR expressions should work correctly.

No support for validation, and incomplete support for type testing. typeswitch works to the extent that Qexo understands the types.

The ordered and unordered expressions are not implemented.

Except as noted, other expressions should work.

Prologue declarations

Standard functions and operators

2 Accessors

  1. fn:node-name: Ok.
  2. fn:nilled: Not implemented.
  3. fn:string: Ok.
  4. fn:data: Not implemented.
  5. fn:base-uri: Only the 1-argument version is implemented.
  6. fn:static-base-uri: Not implemented.
  7. fn:document-uri: Not implemented.

3 The Error Function

Not implemented.

4 The Trace Function

Ok.

5 Constructor Functions

  1. Constructor Functions for XML Schema Built-in Types
    Only xs:QName implemented so far.
  2. A Special Constructor Function for xs:dateTime: Not implemented.
  3. Constructor Functions for User-Defined Types: Not applicable.

6 Functions and Operators on Numerics

  1. Numeric Types
  2. Operators on Numeric Values
    Arithmetic on numeric values should work Ok.
    1. op:numeric-add: Ok.
    2. op:numeric-subtract: Ok.
    3. op:numeric-multiply: Ok.
    4. op:numeric-divide: Implements the div operator. The div operator on integer values returns an exact fraction, which isn't as expected. Output may look different, but arithmetic should work ok (if slower).
    5. op:numeric-integer-divide: Not implemented.
    6. op:numeric-mod: Ok.
    7. op:numeric-unary-plus: Ok.
    8. op:numeric-unary-plus: Ok.
  3. Comparison of Numeric Values
    1. op:numeric-equal: Ok.
    2. op:numeric-less-than: Ok.
    3. op:numeric-greater-than: Ok.
  4. Operators on Numeric Values
    1. fn:abs: Not implemented.
    2. fn:ceiling: Not implemented.
    3. fn:floor: Not implemented.
    4. fn:round: Not implemented.
    5. fn:round-half-to-even: Not implemented.

7 Functions on Strings

  1. String Types
  2. Functions to Assemble and Disassemble Strings
    1. fn:codepoints-to-string: Not implemented.
    2. fn:string-to-codepoints: Not implemented.
  3. Equality and Comparison of Strings
    1. Collations
    2. fn:compare: Not implemented.
  4. Functions on String Values
    1. fn:concat: Ok.
    2. fn:string-join: Ok.
    3. fn:substring: Ok.
    4. fn:string-length: Ok.
    5. fn:normalize-space: Not implemented.
    6. fn:normalize-unicode: Not implemented.
    7. fn:upper-case: Ok.
    8. fn:lower-case: Ok.
    9. fn:translate: Ok.
    10. fn:escape-uri: Not implemented.
  5. Functions Based on Substring Matching
    1. fn:contains: Ok.
    2. fn:starts-with: Ok.
    3. fn:ends-with: Ok.
    4. fn:substring-before: Ok.
    5. fn:substring-after: Ok.
  6. String Functions that Use Pattern Matching
    None of these have been implemented yet.

8 Functions and Operators for anyURI

  1. fn:resolve-uri: Not implemented.
  2. op:anyURI-equal: Not implemented.

9 Functions and Operators on Boolean Values

  1. Additional Boolean Constructor Functions
    1. fn:true: Ok.
    2. fn:false: Ok.
  2. Operators on Boolean Values
    1. op:boolean-equal: Ok.
    2. op:boolean-less-than: Ok.
    3. op:boolean-greater-than: Ok.
  3. Functions on Boolean Values
    1. fn:not: Ok.

10 Functions and Operators on Durations, Dates and Times

None of these have been implemented yet.

11 Functions Related to QNames

  1. Additional Constructor Functions for QNames
    1. fn:resolve-QName: Not implemented.
    2. fn:QName: Ok.
  2. Operators and Functions Related to QNames
    1. op:QName-equal: Ok.
    2. fn:prefix-from-QName: Ok.
    3. fn:local-name-from-QName: Ok.
    4. fn:namespace-uri-from-QName: Ok.
    5. fn:namespace-uri-for-prefix: Ok.
    6. fn:in-scope-prefixes: Not implemented.

12 Functions and Operators on base64Binary and hexBinary

None of these have been implemented yet.

13 Functions and Operators on NOTATION

None of these have been implemented yet.

14 Functions and Operators on Nodes

  1. fn:name: Not implemented.
    (Workaround: fn:string(fn:node-name(node)).)
  2. fn:local-name: Ok.
  3. fn:namespace-uri: Ok.
  4. fn:number: Only 1-argument version is implemented.
  5. fn:lang: Not implemented.
  6. op:is-same-node (is operator on nodes): Ok.
  7. op:node-before (<< operator on nodes): Ok.
  8. op:node-after(>> operator on nodes): Ok.
  9. fn:root: Ok.

15 Functions and Operators on Sequences

  1. General Functions and Operators on Sequences
    1. fn:boolean: Not implemented.
    2. fn:index-of: Ok.
    3. fn:empty: Ok.
    4. fn:exists: Ok.
    5. fn:distinct-values: Ok.
    6. fn:insert-before: Not implemented.
    7. fn:remove: Not implemented.
    8. fn:reverse: Ok.
    9. fn:subsequence: Not implemented.
    10. fn:unordered: Not implemented.
  2. Functions That Test the Cardinality of Sequences
    1. fn:zero-or-one: Not implemented.
    2. fn:one-or-more: Not implemented.
    3. fn:exactly-one: Not implemented.
  3. Equals, Union, Intersection and Except
    1. fn:deep-equal: Not implemented.
    2. op:union: Ok.
    3. op:intersect: Ok.
    4. op:except: Ok.
  4. Aggregate Functions
    1. fn:count: Ok.
    2. fn:avg: Ok.
    3. fn:max: Ok.
    4. fn:min: Ok.
    5. fn:sum: Ok.
  5. Functions and Operators that Generate Sequences
    1. op:to (implemnt to operation): Ok.
    2. fn:id: Not implemented.
    3. fn:idref: Not implemented.
    4. fn:doc: Ok.
    5. fn:doc-available: Ok.
    6. fn:collection: Not implemented.

16 Context Functions

  1. fn:position: Ok.
  2. fn:last: Ok.
  3. fn:current-dateTime: Not implemented.
  4. fn:current-date: Not implemented.
  5. fn:current-time: Not implemented.
  6. fn:default-collation: Not implemented.
  7. fn:implicit-timezone: Not implemented.

17 Casting

  1. Casting from primitive types to primitive types
  2. Casting to derived types
  3. Casting from derived types to parent types
  4. Casting within a branch of the type hierarchy
  5. Casting across the type hierarchy
  6. Casting from xs:string and xdt:untypedAtomic
  7. Casting to xs:string and xdt:untypedAtomic
  8. Casting to numeric types
    1. Casting to xs:float
    2. Casting to xs:double
    3. Casting to xs:decimal
    4. Casting to xs:integer and its subtypes
  9. Casting to duration types
  10. Casting to date and time types
  11. Casting to xs:boolean
  12. Casting to xs:base64Binary and xs:hexBinary
  13. Casting to xs:anyURI

Per Bothner
Last modified: Wed Dec 22 22:17:37 PST 2004