]> matita.cs.unibo.it Git - helm.git/blob - helm/ocaml/mathql_interpreter_galax/pervasive.xqp
No more useful
[helm.git] / helm / ocaml / mathql_interpreter_galax / pervasive.xqp
1 #######################
2 # Standard namespaces #
3 #######################
4
5 namespace xsd = "%%XSDURI%%"
6 namespace xs = "%%XSURI%%"
7 namespace xml = "%%XMLURI%%"
8
9 #############################
10 # XML Schema wildcard types #
11 #############################
12
13 define type xs:AnyNumeric     { xsd:decimal | xsd:integer | xsd:int | xsd:double | xsd:float } 
14
15 define type xs:AnyScalar      { xsd:boolean |
16                                 xsd:string |
17                                 type xs:AnyNumeric |
18                                 xsd:UnknownSimpleType }
19
20 define type xs:AnySimpleType   { type xs:AnyScalar* }
21 define type xs:AnyAttribute    { attribute * { type xs:AnySimpleType } }
22 define type xs:AnyElement      { element * { type xs:AnyContentModel } }
23 define type xs:AnyContentModel { (type xs:AnyAttribute*, (type xs:AnySimpleType | (type xs:AnyElement |
24 text)*)) }
25 define type xs:AnyDocument    { document { type xs:AnyElement } }
26
27 #########################
28 # XQuery Wildcard types #
29 #########################
30 define type xs:AnyNode        { type xs:AnyElement | type xs:AnyAttribute | text }
31
32 define type xs:AnyItem        { type xs:AnyNode | type xs:AnyScalar }
33 define type xs:AnyType        { type xs:AnyItem* }
34
35
36 ######################
37 # Standard functions #
38 ######################
39
40 # data-model accessors. 
41 # F&O doc. Section 2
42
43 define function signature  local-name(type xs:AnyNode)       returns (xsd:string)
44 define function signature  name(type xs:AnyNode)             returns (xsd:string?)
45 define function signature  children(type xs:AnyNode)         returns (type xs:AnyNode*)
46 define function signature  attributes(type xs:AnyElement)    returns (type xs:AnyAttribute*)
47 define function signature  parent(type xs:AnyNode)           returns (type xs:AnyElement?)
48 define function signature  data(type xs:AnyNode)             returns (type xs:AnySimpleType)
49
50 # F&O doc. Section 3.2
51 define function signature  decimal(xsd:string)               returns (xsd:int)
52 define function signature  integer(xsd:string)               returns (xsd:int)
53 define function signature  long(xsd:string)                  returns (xsd:int)
54 define function signature  int(xsd:string)                   returns (xsd:int)
55 define function signature  short(xsd:string)                 returns (xsd:int)
56 define function signature  byte(xsd:string)                  returns (xsd:int)
57 define function signature  float(xsd:string)                 returns (xsd:double)
58 define function signature  double(xsd:string)                returns (xsd:double)
59
60 # polymorphic arithmetic operations #
61 # F&O doc, Section 3.3
62
63 define function signature  numeric-add(numeric, numeric)      returns (numeric)
64 define function signature  numeric-subtract(numeric, numeric) returns (numeric)
65 define function signature  numeric-multiply(numeric, numeric) returns (numeric)
66 define function signature  numeric-divide(numeric, numeric)   returns (numeric)
67 define function signature  numeric-mod(numeric, numeric)      returns (numeric)
68
69 define function signature  numeric-unary-plus(numeric)        returns (numeric)
70 define function signature  numeric-unary-minus(numeric)       returns (numeric)
71
72 # Galax's monomorphic arithmetic operations #
73
74 # Caml's int
75 define function signature  int-add(xsd:int, xsd:int)      returns (xsd:int)
76 define function signature  int-subtract(xsd:int, xsd:int) returns (xsd:int)
77 define function signature  int-multiply(xsd:int, xsd:int) returns (xsd:int)
78 define function signature  int-divide(xsd:int, xsd:int)   returns (xsd:int)
79 define function signature  int-mod(xsd:int, xsd:int)      returns (xsd:int)
80
81 define function signature  int-unary-plus(xsd:int)    returns (xsd:int)
82 define function signature  int-unary-minus(xsd:int)   returns (xsd:int)
83
84 # xsd:decimal
85 define function signature  decimal-add(xsd:decimal, xsd:decimal)      returns (xsd:decimal)
86 define function signature  decimal-subtract(xsd:decimal, xsd:decimal) returns (xsd:decimal)
87 define function signature  decimal-multiply(xsd:decimal, xsd:decimal) returns (xsd:decimal)
88 define function signature  decimal-divide(xsd:decimal, xsd:decimal)   returns (xsd:decimal)
89 define function signature  decimal-mod(xsd:decimal, xsd:decimal)      returns (xsd:decimal)
90
91 define function signature  decimal-unary-plus(xsd:decimal)    returns (xsd:decimal)
92 define function signature  decimal-unary-minus(xsd:decimal)   returns (xsd:decimal)
93
94 # xsd:float
95 define function signature  float-add(xsd:float, xsd:float)      returns (xsd:float)
96 define function signature  float-subtract(xsd:float, xsd:float) returns (xsd:float)
97 define function signature  float-multiply(xsd:float, xsd:float) returns (xsd:float)
98 define function signature  float-divide(xsd:float, xsd:float)   returns (xsd:float)
99 define function signature  float-mod(xsd:float, xsd:float)      returns (xsd:float)
100
101 define function signature  float-unary-plus(xsd:float)    returns (xsd:float)
102 define function signature  float-unary-minus(xsd:float)   returns (xsd:float)
103
104 # xsd:double
105 define function signature  double-add(xsd:double, xsd:double)      returns (xsd:double)
106 define function signature  double-subtract(xsd:double, xsd:double) returns (xsd:double)
107 define function signature  double-multiply(xsd:double, xsd:double) returns (xsd:double)
108 define function signature  double-divide(xsd:double, xsd:double)   returns (xsd:double)
109 define function signature  double-mod(xsd:double, xsd:double)      returns (xsd:double)
110
111 define function signature  double-unary-plus(xsd:double)    returns (xsd:double)
112 define function signature  double-unary-minus(xsd:double)   returns (xsd:double)
113
114 # comparators #
115 # F&O doc, Section 3.4
116 define function signature  nodeeq(type xs:AnyNode, type xs:AnyNode)     returns (xsd:boolean)
117 define function signature  equal(type xs:AnyScalar, type xs:AnyScalar)  returns (xsd:boolean)
118 define function signature  nequal(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean)
119 define function signature  ge(type xs:AnyScalar, type xs:AnyScalar)     returns (xsd:boolean)
120 define function signature  le(type xs:AnyScalar, type xs:AnyScalar)     returns (xsd:boolean)
121 define function signature  gt(type xs:AnyScalar, type xs:AnyScalar)     returns (xsd:boolean)
122 define function signature  lt(type xs:AnyScalar, type xs:AnyScalar)     returns (xsd:boolean)
123
124 # F&O doc. Section 3.5
125 define function signature  floor(xsd:double)                   returns (xsd:int)
126 define function signature  ceiling(xsd:double)                 returns (xsd:int)
127 define function signature  round(xsd:double)                   returns (xsd:int)
128
129 # functions on strings
130 # F&O doc. Section 4.4 
131 define function signature  concat(xsd:string, xsd:string)                      returns (xsd:string)
132 define function signature  starts-with(xsd:string, xsd:string)                 returns (xsd:boolean)
133 define function signature  ends-with(xsd:string, xsd:string)                   returns (xsd:boolean)
134 define function signature  contains(xsd:string, xsd:string)                    returns (xsd:boolean)
135 define function signature  substring(xsd:string, xsd:int, xsd:int)             returns (xsd:string)
136 define function signature  string-length(xsd:string)                           returns (xsd:int)
137 define function signature  substring-before(xsd:string, xsd:string)            returns (xsd:string)
138 define function signature  substring-after(xsd:string, xsd:string)             returns (xsd:string)
139 define function signature  normalize-space(xsd:string)                         returns (xsd:string)
140 define function signature  normalize-unicode(xsd:string)                       returns (xsd:string)
141 define function signature  upper-case(xsd:string)                              returns (xsd:string)
142 define function signature  lower-case(xsd:string)                              returns (xsd:string)
143 define function signature  translate(xsd:string, xsd:string, xsd:string)       returns (xsd:string)
144 define function signature  string-pad(xsd:string, xsd:int, xsd:string)         returns (xsd:string)
145 define function signature  match(xsd:string, xsd:string)                       returns (xsd:int*)
146 define function signature  replace(xsd:string, xsd:string, xsd:string)         returns (xsd:string)
147
148 define function signature  codepoint-contains(xsd:string, xsd:string)          returns (xsd:boolean)
149 define function signature  codepoint-substring-before(xsd:string, xsd:string)  returns (xsd:string)
150 define function signature  codepoint-substring-after(xsd:string, xsd:string)   returns (xsd:string)
151
152 # boolean operations #
153 # F&O doc, Section 6.1
154 define function signature  true()                             returns (xsd:boolean)
155 define function signature  false()                            returns (xsd:boolean)
156
157 # F&O doc, Section 6.2
158 define function signature  or(xsd:boolean, xsd:boolean)       returns (xsd:boolean)
159 define function signature  and(xsd:boolean, xsd:boolean)      returns (xsd:boolean)
160 define function signature  not(xsd:boolean)                   returns (xsd:boolean)
161
162 # functions on sequences #
163 # F&O doc, Section 13.2
164 define function signature  index-of(type xs:AnyNode*,  type xs:AnyNode)  returns (xsd:int)
165 define function signature  length(type xs:AnyType)           returns (xsd:int)
166 define function signature  empty(type xs:AnyType)            returns (xsd:boolean)
167 define function signature  distinct-values(type xs:AnyType)  returns (type xs:AnyType)
168
169 # aggregate functions #
170 # F&O doc, Section 13.4
171 define function signature  avg-int(xsd:int*)                  returns (xsd:int)
172 define function signature  max-int(xsd:int*)                  returns (xsd:int?)
173 define function signature  min-int(xsd:int*)                  returns (xsd:int?)
174 define function signature  sum-int(xsd:int*)                  returns (xsd:int)
175
176 define function signature  avg-float(xsd:double*)             returns (xsd:double)
177 define function signature  max-float(xsd:double*)             returns (xsd:double?)
178 define function signature  min-float(xsd:double*)             returns (xsd:double?)
179 define function signature  sum-float(xsd:double*)             returns (xsd:double)
180
181 define function signature  count(type xs:AnyType)            returns (xsd:int)
182
183 # input-output operations #
184
185 # The signature below is a hack : The output of document is declared
186 # as the empty choice to avoid the need for explicit cast by the user
187 # when loading the document - JS #
188
189 # F&O doc, Section 13.5 
190 define function signature  document(xsd:string)                       returns (type xs:AnyDocument)
191 define function signature  document-validate(xsd:string, xsd:string)  returns (type xs:AnyDocument)
192