http://git-wip-us.apache.org/repos/asf/vxquery/blob/47442458/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml b/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml index c367725..cb1bf7d 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml +++ b/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-operators.xml @@ -1,1023 +1,1148 @@ <?xml version="1.0"?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> +<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor + license agreements. See the NOTICE file distributed with this work for additional + information regarding copyright ownership. The ASF licenses this file to + You under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of + the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required + by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + OF ANY KIND, either express or implied. See the License for the specific + language governing permissions and limitations under the License. --> <operators> - <!-- op:add-dayTimeDuration-to-date( $arg1 as xs:date, $arg2 as xs:dayTimeDuration) as xs:date --> - <operator name="op:add-dayTimeDuration-to-date"> - <param name="arg1" type="xs:date"/> - <param name="arg2" type="xs:dayTimeDuration"/> - <return type="xs:date"/> - </operator> - - <!-- op:add-dayTimeDuration-to-dateTime( $arg1 as xs:dateTime, $arg2 as xs:dayTimeDuration) as xs:dateTime --> - <operator name="op:add-dayTimeDuration-to-dateTime"> - <param name="arg1" type="xs:dateTime"/> - <param name="arg2" type="xs:dayTimeDuration"/> - <return type="xs:dateTime"/> - </operator> - - <!-- op:add-dayTimeDuration-to-time( $arg1 as xs:time, $arg2 as xs:dayTimeDuration) as xs:time --> - <operator name="op:add-dayTimeDuration-to-time"> - <param name="arg1" type="xs:time"/> - <param name="arg2" type="xs:dayTimeDuration"/> - <return type="xs:time"/> - </operator> - - <!-- op:add-dayTimeDurations( $arg1 as xs:dayTimeDuration, $arg2 as xs:dayTimeDuration) as xs:dayTimeDuration --> - <operator name="op:add-dayTimeDurations"> - <param name="arg1" type="xs:dayTimeDuration"/> - <param name="arg2" type="xs:dayTimeDuration"/> - <return type="xs:dayTimeDuration"/> - </operator> - - <!-- op:add-yearMonthDuration-to-date( $arg1 as xs:date, $arg2 as xs:yearMonthDuration) as xs:date --> - <operator name="op:add-yearMonthDuration-to-date"> - <param name="arg1" type="xs:date"/> - <param name="arg2" type="xs:yearMonthDuration"/> - <return type="xs:date"/> - </operator> - - <!-- op:add-yearMonthDuration-to-dateTime( $arg1 as xs:dateTime, $arg2 as xs:yearMonthDuration) as xs:dateTime --> - <operator name="op:add-yearMonthDuration-to-dateTime"> - <param name="arg1" type="xs:dateTime"/> - <param name="arg2" type="xs:yearMonthDuration"/> - <return type="xs:dateTime"/> - </operator> - - <!-- op:add-yearMonthDurations( $arg1 as xs:yearMonthDuration, $arg2 as xs:yearMonthDuration) as xs:yearMonthDuration --> - <operator name="op:add-yearMonthDurations"> - <param name="arg1" type="xs:yearMonthDuration"/> - <param name="arg2" type="xs:yearMonthDuration"/> - <return type="xs:yearMonthDuration"/> - </operator> - - <!-- op:base64Binary-equal( $value1 as xs:base64Binary, $value2 as xs:base64Binary) as xs:boolean --> - <operator name="op:base64Binary-equal"> - <param name="value1" type="xs:base64Binary"/> - <param name="value2" type="xs:base64Binary"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:boolean-equal($value1 as xs:boolean, $value2 as xs:boolean) as xs:boolean --> - <operator name="op:boolean-equal"> - <param name="value1" type="xs:boolean"/> - <param name="value2" type="xs:boolean"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:boolean-greater-than( $arg1 as xs:boolean, $arg2 as xs:boolean) as xs:boolean --> - <operator name="op:boolean-greater-than"> - <param name="value1" type="xs:boolean"/> - <param name="value2" type="xs:boolean"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:boolean-less-than( $arg1 as xs:boolean, $arg2 as xs:boolean) as xs:boolean --> - <operator name="op:boolean-less-than"> - <param name="value1" type="xs:boolean"/> - <param name="value2" type="xs:boolean"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:concatenate($arg as item()*) as item()* --> - <operator name="op:concatenate" varargs="true"> - <param name="arg" type="item()*"/> - <return type="item()*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.sequence.ConcatenateScalarEvaluatorFactory"/> - </operator> - - <!-- op:date-equal($arg1 as xs:date, $arg2 as xs:date) as xs:boolean --> - <operator name="op:date-equal"> - <param name="arg1" type="xs:date"/> - <param name="arg2" type="xs:date"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:date-greater-than( $arg1 as xs:date, $arg2 as xs:date) as xs:boolean --> - <operator name="op:date-greater-than"> - <param name="arg1" type="xs:date"/> - <param name="arg2" type="xs:date"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:date-less-than($arg1 as xs:date, $arg2 as xs:date) as xs:boolean --> - <operator name="op:date-less-than"> - <param name="arg1" type="xs:date"/> - <param name="arg2" type="xs:date"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:dateTime-equal($arg1 as xs:dateTime, $arg2 as xs:dateTime) as xs:boolean --> - <operator name="op:dateTime-equal"> - <param name="arg1" type="xs:dateTime"/> - <param name="arg2" type="xs:dateTime"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:dateTime-greater-than( $arg1 as xs:dateTime, $arg2 as xs:dateTime) as xs:boolean --> - <operator name="op:dateTime-greater-than"> - <param name="arg1" type="xs:dateTime"/> - <param name="arg2" type="xs:dateTime"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:dateTime-less-than( $arg1 as xs:dateTime, $arg2 as xs:dateTime) as xs:boolean --> - <operator name="op:dateTime-less-than"> - <param name="arg1" type="xs:dateTime"/> - <param name="arg2" type="xs:dateTime"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:dayTimeDuration-greater-than( $arg1 as xs:dayTimeDuration, $arg2 as xs:dayTimeDuration) as xs:boolean --> - <operator name="op:dayTimeDuration-greater-than"> - <param name="arg1" type="xs:dayTimeDuration"/> - <param name="arg2" type="xs:dayTimeDuration"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:dayTimeDuration-less-than( $arg1 as xs:dayTimeDuration, $arg2 as xs:dayTimeDuration) as xs:boolean --> - <operator name="op:dayTimeDuration-less-than"> - <param name="arg1" type="xs:dayTimeDuration"/> - <param name="arg2" type="xs:dayTimeDuration"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:divide-dayTimeDuration( $arg1 as xs:dayTimeDuration, $arg2 as xs:double) as xs:dayTimeDuration --> - <operator name="op:divide-dayTimeDuration"> - <param name="arg1" type="xs:dayTimeDuration"/> - <param name="arg2" type="xs:double"/> - <return type="xs:dayTimeDuration"/> - </operator> - - <!-- op:divide-dayTimeDuration-by-dayTimeDuration( $arg1 as xs:dayTimeDuration, $arg2 as xs:dayTimeDuration) as xs:decimal --> - <operator name="op:divide-dayTimeDuration-by-dayTimeDuration"> - <param name="arg1" type="xs:dayTimeDuration"/> - <param name="arg2" type="xs:dayTimeDuration"/> - <return type="xs:decimal"/> - </operator> - - <!-- op:divide-yearMonthDuration( $arg1 as xs:yearMonthDuration, $arg2 as xs:double) as xs:yearMonthDuration --> - <operator name="op:divide-yearMonthDuration"> - <param name="arg1" type="xs:yearMonthDuration"/> - <param name="arg2" type="xs:double"/> - <return type="xs:yearMonthDuration"/> - </operator> - - <!-- op:divide-yearMonthDuration-by-yearMonthDuration( $arg1 as xs:yearMonthDuration, $arg2 as xs:yearMonthDuration) as xs:decimal --> - <operator name="op:divide-yearMonthDuration-by-yearMonthDuration"> - <param name="arg1" type="xs:yearMonthDuration"/> - <param name="arg2" type="xs:yearMonthDuration"/> - <return type="xs:decimal"/> - </operator> - - <!-- op:duration-equal($arg1 as xs:duration, $arg2 as xs:duration) as xs:boolean --> - <operator name="op:duration-equal"> - <param name="arg1" type="xs:duration"/> - <param name="arg2" type="xs:duration"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:except($parameter1 as node()*, $parameter2 as node()*) as node()* --> - <operator name="op:except"> - <param name="parameter1" type="node()*"/> - <param name="parameter2" type="node()*"/> - <return type="node()*"/> - <!-- implementation assumes input in document order --> - <property type="DocumentOrder" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - <property type="UniqueNodes" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - </operator> - - <!-- op:gDay-equal($arg1 as xs:gDay, $arg2 as xs:gDay) as xs:boolean --> - <operator name="op:gDay-equal"> - <param name="arg1" type="xs:gDay"/> - <param name="arg2" type="xs:gDay"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:gMonth-equal($arg1 as xs:gMonth, $arg2 as xs:gMonth) as xs:boolean --> - <operator name="op:gMonth-equal"> - <param name="arg1" type="xs:gMonth"/> - <param name="arg2" type="xs:gMonth"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:gMonthDay-equal($arg1 as xs:gMonthDay, $arg2 as xs:gMonthDay) as xs:boolean --> - <operator name="op:gMonthDay-equal"> - <param name="arg1" type="xs:gMonthDay"/> - <param name="arg2" type="xs:gMonthDay"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:gYear-equal($arg1 as xs:gYear, $arg2 as xs:gYear) as xs:boolean --> - <operator name="op:gYear-equal"> - <param name="arg1" type="xs:gYear"/> - <param name="arg2" type="xs:gYear"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:gYearMonth-equal( $arg1 as xs:gYearMonth, $arg2 as xs:gYearMonth) as xs:boolean --> - <operator name="op:gYearMonth-equal"> - <param name="arg1" type="xs:gYearMonth"/> - <param name="arg2" type="xs:gYearMonth"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:hexBinary-equal($value1 as xs:hexBinary, $value2 as xs:hexBinary) as xs:boolean --> - <operator name="op:hexBinary-equal"> - <param name="arg1" type="xs:hexBinary"/> - <param name="arg2" type="xs:hexBinary"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:intersect($parameter1 as node()*, $parameter2 as node()*) as node()* --> - <operator name="op:intersect"> - <param name="parameter1" type="node()*"/> - <param name="parameter2" type="node()*"/> - <return type="node()*"/> - <!-- implementation assumes input in document order --> - <property type="DocumentOrder" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - <property type="UniqueNodes" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - </operator> - - <!-- op:is-same-node($parameter1 as node(), $parameter2 as node()) as xs:boolean --> - <operator name="op:is-same-node"> - <param name="parameter1" type="node()"/> - <param name="parameter2" type="node()"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:multiply-dayTimeDuration( $arg1 as xs:dayTimeDuration, $arg2 as xs:double) as xs:dayTimeDuration --> - <operator name="op:multiply-dayTimeDuration"> - <param name="arg1" type="xs:dayTimeDuration"/> - <param name="arg2" type="xs:double"/> - <return type="xs:dayTimeDuration"/> - </operator> - - <!-- op:multiply-yearMonthDuration( $arg1 as xs:yearMonthDuration, $arg2 as xs:double) as xs:yearMonthDuration --> - <operator name="op:multiply-yearMonthDuration"> - <param name="arg1" type="xs:yearMonthDuration"/> - <param name="arg2" type="xs:double"/> - <return type="xs:yearMonthDuration"/> - </operator> - - <!-- op:node-after($parameter1 as node(), $parameter2 as node()) as xs:boolean --> - <operator name="op:node-after"> - <param name="parameter1" type="node()"/> - <param name="parameter2" type="node()"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.node.OpNodeAfterEvaluatorFactory"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:node-before($parameter1 as node(), $parameter2 as node()) as xs:boolean --> - <operator name="op:node-before"> - <param name="parameter1" type="node()"/> - <param name="parameter2" type="node()"/> - <return type="xs:boolean"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.node.OpNodeBeforeEvaluatorFactory"/> - </operator> - - <!-- op:NOTATION-equal($arg1 as xs:NOTATION, $arg2 as xs:NOTATION) as xs:boolean --> - <operator name="op:NOTATION-equal"> - <param name="arg1" type="xs:NOTATION"/> - <param name="arg2" type="xs:NOTATION"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:numeric-add($arg1 as numeric, $arg2 as numeric) as numeric --> - <operator name="op:numeric-add"> - <param name="arg1" type="xsext:numeric"/> - <param name="arg2" type="xsext:numeric"/> - <return type="xsext:numeric"/> - </operator> - - <!-- op:numeric-divide($arg1 as numeric, $arg2 as numeric) as numeric --> - <operator name="op:numeric-divide"> - <param name="arg1" type="xsext:numeric"/> - <param name="arg2" type="xsext:numeric"/> - <return type="xsext:numeric"/> - </operator> - - <!-- op:numeric-equal($arg1 as numeric, $arg2 as numeric) as xs:boolean --> - <operator name="op:numeric-equal"> - <param name="arg1" type="xsext:numeric"/> - <param name="arg2" type="xsext:numeric"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:numeric-greater-than( $arg1 as numeric, $arg2 as numeric) as xs:boolean --> - <operator name="op:numeric-greater-than"> - <param name="arg1" type="xsext:numeric"/> - <param name="arg2" type="xsext:numeric"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:numeric-integer-divide( $arg1 as numeric, $arg2 as numeric) as xs:integer --> - <operator name="op:numeric-integer-divide"> - <param name="arg1" type="xsext:numeric"/> - <param name="arg2" type="xsext:numeric"/> - <return type="xs:integer"/> - </operator> - - <!-- op:numeric-less-than( $arg1 as numeric, $arg2 as numeric) as xs:boolean --> - <operator name="op:numeric-less-than"> - <param name="arg1" type="xsext:numeric"/> - <param name="arg2" type="xsext:numeric"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:numeric-mod($arg1 as numeric, $arg2 as numeric) as numeric --> - <operator name="op:numeric-mod"> - <param name="arg1" type="xsext:numeric"/> - <param name="arg2" type="xsext:numeric"/> - <return type="xsext:numeric"/> - </operator> - - <!-- op:numeric-multiply( $arg1 as numeric, $arg2 as numeric) as numeric --> - <operator name="op:numeric-multiply"> - <param name="arg1" type="xsext:numeric"/> - <param name="arg2" type="xsext:numeric"/> - <return type="xsext:numeric"/> - </operator> - - <!-- op:numeric-subtract( $arg1 as numeric, $arg2 as numeric) as numeric --> - <operator name="op:numeric-subtract"> - <param name="arg1" type="xsext:numeric"/> - <param name="arg2" type="xsext:numeric"/> - <return type="xsext:numeric"/> - </operator> - - <!-- op:numeric-unary-minus( $arg as numeric) as numeric --> - <operator name="op:numeric-unary-minus"> - <param name="arg1" type="xsext:numeric"/> - <return type="xsext:numeric"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.unary.NumericUnaryMinusScalarEvaluatorFactory"/> - </operator> - - <!-- op:numeric-unary-plus( $arg as numeric) as numeric --> - <operator name="op:numeric-unary-plus"> - <param name="arg1" type="xsext:numeric"/> - <return type="xsext:numeric"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.unary.NumericUnaryPlusScalarEvaluatorFactory"/> - </operator> - - <!-- op:QName-equal($arg1 as xs:QName, $arg2 as xs:QName) as xs:boolean --> - <operator name="op:QName-equal"> - <param name="arg1" type="xs:QName"/> - <param name="arg2" type="xs:QName"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:subtract-dates($arg1 as xs:date, $arg2 as xs:date) as xs:dayTimeDuration? --> - <operator name="op:subtract-dates"> - <param name="arg1" type="xs:date"/> - <param name="arg2" type="xs:date"/> - <return type="xs:dayTimeDuration?"/> - </operator> - - <!-- op:subtract-dateTimes( $arg1 as xs:dateTime, $arg2 as xs:dateTime) as xs:dayTimeDuration? --> - <operator name="op:subtract-dateTimes"> - <param name="arg1" type="xs:dateTime"/> - <param name="arg2" type="xs:dateTime"/> - <return type="xs:dayTimeDuration?"/> - </operator> - - <!-- op:subtract-dayTimeDuration-from-date( $arg1 as xs:date, $arg2 as xs:dayTimeDuration) as xs:date --> - <operator name="op:subtract-dayTimeDuration-from-date"> - <param name="arg1" type="xs:date"/> - <param name="arg2" type="xs:dayTimeDuration"/> - <return type="xs:date"/> - </operator> - - <!-- op:subtract-dayTimeDuration-from-dateTime( $arg1 as xs:dateTime, $arg2 as xs:dayTimeDuration) as xs:dateTime --> - <operator name="op:subtract-dayTimeDuration-from-dateTime"> - <param name="arg1" type="xs:dateTime"/> - <param name="arg2" type="xs:dayTimeDuration"/> - <return type="xs:dateTime"/> - </operator> - - <!-- op:subtract-dayTimeDuration-from-time( $arg1 as xs:time, $arg2 as xs:dayTimeDuration) as xs:time --> - <operator name="op:subtract-dayTimeDuration-from-time"> - <param name="arg1" type="xs:time"/> - <param name="arg2" type="xs:dayTimeDuration"/> - <return type="xs:time"/> - </operator> - - <!-- op:subtract-dayTimeDurations( $arg1 as xs:dayTimeDuration, $arg2 as xs:dayTimeDuration) as xs:dayTimeDuration --> - <operator name="op:subtract-dayTimeDurations"> - <param name="arg1" type="xs:dayTimeDuration"/> - <param name="arg2" type="xs:dayTimeDuration"/> - <return type="xs:dayTimeDuration"/> - </operator> - - <!-- op:subtract-times($arg1 as xs:time, $arg2 as xs:time) as xs:dayTimeDuration --> - <operator name="op:subtract-times"> - <param name="arg1" type="xs:time"/> - <param name="arg2" type="xs:time"/> - <return type="xs:dayTimeDuration"/> - </operator> - - <!-- op:subtract-yearMonthDuration-from-date( $arg1 as xs:date, $arg2 as xs:yearMonthDuration) as xs:date --> - <operator name="op:subtract-yearMonthDuration-from-date"> - <param name="arg1" type="xs:date"/> - <param name="arg2" type="xs:yearMonthDuration"/> - <return type="xs:date"/> - </operator> - - <!-- op:subtract-yearMonthDuration-from-dateTime( $arg1 as xs:dateTime, $arg2 as xs:yearMonthDuration) as xs:dateTime --> - <operator name="op:subtract-yearMonthDuration-from-dateTime"> - <param name="arg1" type="xs:dateTime"/> - <param name="arg2" type="xs:yearMonthDuration"/> - <return type="xs:dateTime"/> - </operator> - - <!-- op:subtract-yearMonthDurations( $arg1 as xs:yearMonthDuration, $arg2 as xs:yearMonthDuration) as xs:yearMonthDuration --> - <operator name="op:subtract-yearMonthDurations"> - <param name="arg1" type="xs:yearMonthDuration"/> - <param name="arg2" type="xs:yearMonthDuration"/> - <return type="xs:yearMonthDuration"/> - </operator> - - <!-- op:time-equal($arg1 as xs:time, $arg2 as xs:time) as xs:boolean --> - <operator name="op:time-equal"> - <param name="arg1" type="xs:time"/> - <param name="arg2" type="xs:time"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:time-greater-than( $arg1 as xs:time, $arg2 as xs:time) as xs:boolean --> - <operator name="op:time-greater-than"> - <param name="arg1" type="xs:time"/> - <param name="arg2" type="xs:time"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:time-less-than($arg1 as xs:time, $arg2 as xs:time) as xs:boolean --> - <operator name="op:time-less-than"> - <param name="arg1" type="xs:time"/> - <param name="arg2" type="xs:time"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:to($firstval as xs:integer, $lastval as xs:integer) as xs:integer* --> - <operator name="op:to"> - <param name="firstval" type="xs:integer"/> - <param name="lastval" type="xs:integer"/> - <return type="xs:integer*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.sequence.OpToScalarEvaluatorFactory"/> - </operator> - - <!-- op:union($parameter1 as node()*, $parameter2 as node()*) as node()* --> - <operator name="op:union"> - <param name="parameter1" type="node()*"/> - <param name="parameter2" type="node()*"/> - <return type="node()*"/> - <!-- as we do the doc-order-sort and the duplicate elimination --> - <!-- after the concatenation, we can reuse the concat iterator --> - <property type="DocumentOrder" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - <property type="UniqueNodes" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - </operator> - - <!-- op:yearMonthDuration-greater-than( $arg1 as xs:yearMonthDuration, $arg2 as xs:yearMonthDuration) as xs:boolean --> - <operator name="op:yearMonthDuration-greater-than"> - <param name="arg1" type="xs:yearMonthDuration"/> - <param name="arg2" type="xs:yearMonthDuration"/> - <return type="xs:boolean"/> - </operator> - - <!-- op:yearMonthDuration-less-than( $arg1 as xs:yearMonthDuration, $arg2 as xs:yearMonthDuration) as xs:boolean --> - <operator name="op:yearMonthDuration-less-than"> - <param name="arg1" type="xs:yearMonthDuration"/> - <param name="arg2" type="xs:yearMonthDuration"/> - <return type="xs:boolean"/> - </operator> - - <!-- fn:avg-local($arg as xs:anyAtomicType*) as xs:anyAtomicType? --> - <operator name="opext:avg-local"> - <param name="arg" type="xs:anyAtomicType*"/> - <return type="xs:anyAtomicType?"/> - <runtime type="aggregate" class="org.apache.vxquery.runtime.functions.aggregate.AvgLocalAggregateEvaluatorFactory"/> - </operator> - - <!-- fn:avg-global($arg as xs:anyAtomicType*) as xs:anyAtomicType? --> - <operator name="opext:avg-global"> - <param name="arg" type="xs:anyAtomicType*"/> - <return type="xs:anyAtomicType?"/> - <runtime type="aggregate" class="org.apache.vxquery.runtime.functions.aggregate.AvgGlobalAggregateEvaluatorFactory"/> - </operator> - - <!-- opext:ordered($arg as item()*) as item()* --> - <operator name="opext:ordered"> - <param name="arg" type="item()*"/> - <return type="item()*"/> - </operator> - - <!-- opext:unordered($arg as item()*) as item()* --> - <operator name="opext:unordered"> - <param name="arg" type="item()*"/> - <return type="item()*"/> - </operator> - - <!-- opext:value-eq($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:boolean? --> - <operator name="opext:value-eq"> - <param name="arg1" type="xs:anyAtomicType?"/> - <param name="arg2" type="xs:anyAtomicType?"/> - <return type="xs:boolean?"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.comparison.ValueEqComparisonScalarEvaluatorFactory"/> - </operator> - - <!-- opext:value-ne($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:boolean? --> - <operator name="opext:value-ne"> - <param name="arg1" type="xs:anyAtomicType?"/> - <param name="arg2" type="xs:anyAtomicType?"/> - <return type="xs:boolean?"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.comparison.ValueNeComparisonScalarEvaluatorFactory"/> - </operator> - - <!-- opext:value-lt($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:boolean? --> - <operator name="opext:value-lt"> - <param name="arg1" type="xs:anyAtomicType?"/> - <param name="arg2" type="xs:anyAtomicType?"/> - <return type="xs:boolean?"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.comparison.ValueLtComparisonScalarEvaluatorFactory"/> - </operator> - - <!-- opext:value-le($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:boolean? --> - <operator name="opext:value-le"> - <param name="arg1" type="xs:anyAtomicType?"/> - <param name="arg2" type="xs:anyAtomicType?"/> - <return type="xs:boolean?"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.comparison.ValueLeComparisonScalarEvaluatorFactory"/> - </operator> - - <!-- opext:value-gt($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:boolean? --> - <operator name="opext:value-gt"> - <param name="arg1" type="xs:anyAtomicType?"/> - <param name="arg2" type="xs:anyAtomicType?"/> - <return type="xs:boolean?"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.comparison.ValueGtComparisonScalarEvaluatorFactory"/> - </operator> - - <!-- opext:value-ge($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:boolean? --> - <operator name="opext:value-ge"> - <param name="arg1" type="xs:anyAtomicType?"/> - <param name="arg2" type="xs:anyAtomicType?"/> - <return type="xs:boolean?"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.comparison.ValueGeComparisonScalarEvaluatorFactory"/> - </operator> - - <!-- opext:general-eq($arg1 as item()*, $arg2 as item()*) as xs:boolean --> - <operator name="opext:general-eq"> - <param name="arg1" type="item()*"/> - <param name="arg2" type="item()*"/> - <return type="xs:boolean"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.comparison.general.GeneralEqComparisonScalarEvaluatorFactory"/> - </operator> - - <!-- opext:general-ne($arg1 as item()*, $arg2 as item()*) as xs:boolean --> - <operator name="opext:general-ne"> - <param name="arg1" type="item()*"/> - <param name="arg2" type="item()*"/> - <return type="xs:boolean"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.comparison.general.GeneralNeComparisonScalarEvaluatorFactory"/> - </operator> - - <!-- opext:general-lt($arg1 as item()*, $arg2 as item()*) as xs:boolean --> - <operator name="opext:general-lt"> - <param name="arg1" type="item()*"/> - <param name="arg2" type="item()*"/> - <return type="xs:boolean"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.comparison.general.GeneralLtComparisonScalarEvaluatorFactory"/> - </operator> - - <!-- opext:general-le($arg1 as item()*, $arg2 as item()*) as xs:boolean --> - <operator name="opext:general-le"> - <param name="arg1" type="item()*"/> - <param name="arg2" type="item()*"/> - <return type="xs:boolean"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.comparison.general.GeneralLeComparisonScalarEvaluatorFactory"/> - </operator> - - <!-- opext:general-gt($arg1 as item()*, $arg2 as item()*) as xs:boolean --> - <operator name="opext:general-gt"> - <param name="arg1" type="item()*"/> - <param name="arg2" type="item()*"/> - <return type="xs:boolean"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.comparison.general.GeneralGtComparisonScalarEvaluatorFactory"/> - </operator> - - <!-- opext:general-ge($arg1 as item()*, $arg2 as item()*) as xs:boolean --> - <operator name="opext:general-ge"> - <param name="arg1" type="item()*"/> - <param name="arg2" type="item()*"/> - <return type="xs:boolean"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.comparison.general.GeneralGeComparisonScalarEvaluatorFactory"/> - </operator> - - <!-- opext:add($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:anyAtomicType? --> - <operator name="opext:add"> - <param name="arg1" type="xs:anyAtomicType?"/> - <param name="arg2" type="xs:anyAtomicType?"/> - <return type="xs:anyAtomicType?"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.arithmetic.AddScalarEvaluatorFactory"/> - </operator> - - <!-- opext:subtract($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:anyAtomicType? --> - <operator name="opext:subtract"> - <param name="arg1" type="xs:anyAtomicType?"/> - <param name="arg2" type="xs:anyAtomicType?"/> - <return type="xs:anyAtomicType?"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.arithmetic.SubtractScalarEvaluatorFactory"/> - </operator> - - <!-- opext:multiply($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:anyAtomicType? --> - <operator name="opext:multiply"> - <param name="arg1" type="xs:anyAtomicType?"/> - <param name="arg2" type="xs:anyAtomicType?"/> - <return type="xs:anyAtomicType?"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.arithmetic.MultiplyScalarEvaluatorFactory"/> - </operator> - - <!-- opext:divide($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:anyAtomicType? --> - <operator name="opext:divide"> - <param name="arg1" type="xs:anyAtomicType?"/> - <param name="arg2" type="xs:anyAtomicType?"/> - <return type="xs:anyAtomicType?"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.arithmetic.DivideScalarEvaluatorFactory"/> - </operator> - - <!-- opext:idiv($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:anyAtomicType? --> - <operator name="opext:idiv"> - <param name="arg1" type="xsext:numeric?"/> - <param name="arg2" type="xsext:numeric?"/> - <return type="xs:integer?"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.arithmetic.IntegerDivideScalarEvaluatorFactory"/> - </operator> - - <!-- opext:mod($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:anyAtomicType? --> - <operator name="opext:mod"> - <param name="arg1" type="xsext:numeric?"/> - <param name="arg2" type="xsext:numeric?"/> - <return type="xs:integer?"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.arithmetic.ModScalarEvaluatorFactory"/> - </operator> - - <!-- opext:and($arg1 as xs:boolean?, $arg2 as xs:boolean?) as xs:boolean? --> - <operator name="opext:and"> - <param name="arg1" type="xs:boolean?"/> - <param name="arg2" type="xs:boolean?"/> - <return type="xs:boolean?"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.bool.AndScalarEvaluatorFactory"/> - </operator> - - <!-- opext:or($arg1 as xs:boolean?, $arg2 as xs:boolean?) as xs:boolean? --> - <operator name="opext:or"> - <param name="arg1" type="xs:boolean?"/> - <param name="arg2" type="xs:boolean?"/> - <return type="xs:boolean?"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.bool.OrScalarEvaluatorFactory"/> - </operator> - - <!-- opext:sort-nodes-asc($arg as node()*) as node()* --> - <operator name="opext:sort-nodes-asc"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.nodeid.SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory"/> - <property type="UniqueNodes" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - </operator> - - <!-- opext:sort-nodes-asc-or-atomics($arg as item()*) as item()* --> - <operator name="opext:sort-nodes-asc-or-atomics"> - <param name="arg" type="item()*"/> - <return type="item()*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.nodeid.SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory"/> - <property type="UniqueNodes" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - </operator> - - <!-- opext:sort-distinct-nodes-asc($arg as node()*) as node()* --> - <operator name="opext:sort-distinct-nodes-asc"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - <property type="UniqueNodes" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - </operator> - - <!-- opext:sort-distinct-nodes-asc-or-atomics($arg as item()*) as item()* --> - <operator name="opext:sort-distinct-nodes-asc-or-atomics"> - <param name="arg" type="item()*"/> - <return type="item()*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.nodeid.SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory"/> - </operator> - - <!-- opext:distinct-nodes-or-atomics($arg as item()*) as item()* --> - <operator name="opext:distinct-nodes-or-atomics"> - <param name="arg" type="item()*"/> - <return type="item()*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.nodeid.SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory"/> - </operator> - - <!-- opext:sort-nodes-desc($arg as node()*) as node()* --> - <operator name="opext:sort-nodes-desc"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - <property type="UniqueNodes" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - </operator> - - <!-- opext:sort-nodes-desc-or-atomics($arg as item()*) as item()* --> - <operator name="opext:sort-nodes-desc-or-atomics"> - <param name="arg" type="item()*"/> - <return type="item()*"/> - <property type="UniqueNodes" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - </operator> - - <!-- opext:sort-distinct-nodes-desc($arg as node()*) as node()* --> - <operator name="opext:sort-distinct-nodes-desc"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - </operator> - - <!-- opext:sort-distinct-nodes-desc-or-atomics($arg as item()*) as item()* --> - <operator name="opext:sort-distinct-nodes-desc-or-atomics"> - <param name="arg" type="item()*"/> - <return type="item()*"/> - </operator> - - <!-- opext:id-from-node($arg as item()) as xs:integer --> - <operator name="opext:id-from-node"> - <param name="arg" type="item()"/> - <return type="xs:integer"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.node.IdFromNodeScalarEvaluatorFactory"/> - </operator> - - <!-- opext:local-id-from-node($arg as item()) as xs:int --> - <operator name="opext:local-id-from-node"> - <param name="arg" type="item()"/> - <return type="xs:int"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.node.LocalIdFromNodeScalarEvaluatorFactory"/> - </operator> - - <!-- opext:tree-id-from-node($arg as item()) as xs:int --> - <operator name="opext:tree-id-from-node"> - <param name="arg" type="item()"/> - <return type="xs:int"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.node.TreeIdFromNodeScalarEvaluatorFactory"/> - </operator> - - <!-- opext:deflate-sequences($arg as item()*) as item()* --> - <operator name="opext:deflate-sequences"> - <param name="arg" type="item()*"/> - <return type="item()*"/> - <property type="DocumentOrder" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - <property type="UniqueNodes" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - </operator> - - <!-- opext:pi-constructor($target as xs:sring, $content as xs:string) as node() --> - <operator name="opext:pi-constructor"> - <param name="target" type="xs:string"/> - <param name="content" type="xs:string"/> - <return type="node()"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.node.PINodeConstructorScalarEvaluatorFactory"/> - </operator> - - <!-- opext:comment-constructor($content as xs:string) as node() --> - <operator name="opext:comment-constructor"> - <param name="content" type="xs:string"/> - <return type="node()"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.node.CommentNodeConstructorScalarEvaluatorFactory"/> - </operator> - - <!-- opext:element-constructor($name as xs:QName, $content as item()*) as node() --> - <operator name="opext:element-constructor"> - <param name="name" type="xs:QName"/> - <param name="content" type="item()*"/> - <return type="node()"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.node.ElementNodeConstructorScalarEvaluatorFactory"/> - </operator> - - <!-- opext:attribute-constructor($name as xs:QName, $content as xs:anyAtomicType*) as node() --> - <operator name="opext:attribute-constructor"> - <param name="name" type="xs:QName"/> - <param name="content" type="xs:anyAtomicType*"/> - <return type="node()"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.node.AttributeNodeConstructorScalarEvaluatorFactory"/> - </operator> - - <!-- opext:text-constructor($content as xs:anyAtomicType*) as node() --> - <operator name="opext:text-constructor"> - <param name="content" type="xs:anyAtomicType*"/> - <return type="node()"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.node.TextNodeConstructorScalarEvaluatorFactory"/> - </operator> - - <!-- opext:document-constructor($content as node()) as node() --> - <operator name="opext:document-constructor"> - <param name="content" type="node()"/> - <return type="node()"/> - </operator> - - <!-- opext:if-then-else($condition as xs:boolean, $then as item()*, $else as item()*) as item()* --> - <operator name="opext:if-then-else"> - <param name="condition" type="xs:boolean"/> - <param name="then" type="item()*"/> - <param name="else" type="item()*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.conditional.IfThenElseScalarEvaluatorFactory"/> - <return type="item()*"/> - </operator> - - <!-- opext:ancestor($arg as node()*) as node()* --> - <operator name="opext:ancestor"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - </operator> - - <!-- opext:ancestor-or-self($arg as node()*) as node()* --> - <operator name="opext:ancestor-or-self"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - </operator> - - <!-- opext:attribute($arg as node()*) as node()* --> - <operator name="opext:attribute"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.step.AttributePathStepScalarEvaluatorFactory"/> - </operator> - - <!-- opext:child($arg as node()*) as node()* --> - <operator name="opext:child"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.step.ChildPathStepScalarEvaluatorFactory"/> - <runtime type="unnesting" class="org.apache.vxquery.runtime.functions.step.ChildPathStepUnnestingEvaluatorFactory"/> - <property type="DocumentOrder" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - <property type="UniqueNodes" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - </operator> - - <!-- opext:descendant($arg as node()*) as node()* --> - <operator name="opext:descendant"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.step.DescendantPathStepScalarEvaluatorFactory"/> - <property type="UniqueNodes" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.uniquenodes.UniqueNodesNOPropagationPolicy"/> - </operator> - - <!-- opext:descendant-or-self($arg as node()*) as node()* --> - <operator name="opext:descendant-or-self"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.step.DescendantOrSelfPathStepScalarEvaluatorFactory"/> - <runtime type="unnesting" class="org.apache.vxquery.runtime.functions.step.DescendantOrSelfPathStepUnnestingEvaluatorFactory"/> - <property type="UniqueNodes" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.uniquenodes.UniqueNodesNOPropagationPolicy"/> - </operator> - - <!-- opext:following($arg as node()*) as node()* --> - <operator name="opext:following"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - </operator> - - <!-- opext:following-sibling($arg as node()*) as node()* --> - <operator name="opext:following-sibling"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - </operator> - - <!-- opext:parent($arg as node()*) as node()* --> - <operator name="opext:parent"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - </operator> - - <!-- opext:preceding($arg as node()*) as node()* --> - <operator name="opext:preceding"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - </operator> - - <!-- opext:preceding-sibling($arg as node()*) as node()* --> - <operator name="opext:preceding-sibling"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - </operator> - - <!-- opext:self($arg as node()*) as node()* --> - <operator name="opext:self"> - <param name="arg" type="node()*"/> - <return type="node()*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.step.SelfPathStepScalarEvaluatorFactory"/> - </operator> - - <!-- opext:sequence($arg as item()*) as item()* --> - <operator name="opext:sequence"> - <param name="arg" type="item()*"/> - <return type="item()*"/> - <runtime type="aggregate" class="org.apache.vxquery.runtime.functions.sequence.SequenceAggregateEvaluatorFactory"/> - </operator> - - <!-- opext:iterate($arg as item()*) as item() --> - <operator name="opext:iterate"> - <param name="arg" type="item()*"/> - <return type="item()"/> - <runtime type="unnesting" class="org.apache.vxquery.runtime.functions.sequence.IterateUnnestingEvaluatorFactory"/> - <property type="DocumentOrder" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - <property type="UniqueNodes" class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> - <argument value="0"/> - </property> - </operator> - - <!-- opext:validate-lax($arg as item()*) as item()* --> - <operator name="opext:validate-lax"> - <param name="arg" type="item()*"/> - <return type="item()*"/> - </operator> - - <!-- opext:validate-strict($arg as item()*) as item()* --> - <operator name="opext:validate-strict"> - <param name="arg" type="item()*"/> - <return type="item()*"/> - </operator> - - <!-- opext:promote($arg as item()*, $type as xsext:type) as item()* --> - <operator name="opext:promote"> - <param name="arg" type="item()*"/> - <param name="type" type="xs:int"/> - <return type="item()*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.type.PromoteScalarEvaluatorFactory"/> - </operator> - - <!-- opext:treat($arg as item()*, $type as xsext:type) as item()* --> - <operator name="opext:treat"> - <param name="arg" type="item()*"/> - <param name="type" type="xs:int"/> - <return type="item()*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.type.TreatScalarEvaluatorFactory"/> - </operator> - - <!-- opext:cast($arg as item()*, $type as xsext:type) as item()* --> - <operator name="opext:cast"> - <param name="arg" type="item()*"/> - <param name="type" type="xs:int"/> - <return type="item()*"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.cast.CastScalarEvaluatorFactory"/> - </operator> - - <!-- opext:castable($arg as item()*, $type as xsext:type) as xs:boolean --> - <operator name="opext:castable"> - <param name="arg" type="item()*"/> - <param name="type" type="xs:int"/> - <return type="xs:boolean"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.castable.CastableScalarEvaluatorFactory"/> - </operator> - - <!-- opext:instance-of($arg as item()*, $type as xsext:type) as xs:boolean --> - <operator name="opext:instance-of"> - <param name="arg" type="item()*"/> - <param name="type" type="xs:int"/> - <return type="xs:boolean"/> - <runtime type="scalar" class="org.apache.vxquery.runtime.functions.type.InstanceOfScalarEvaluatorFactory"/> - </operator> + <!-- op:add-dayTimeDuration-to-date( $arg1 as xs:date, $arg2 as xs:dayTimeDuration) + as xs:date --> + <operator name="op:add-dayTimeDuration-to-date"> + <param name="arg1" type="xs:date" /> + <param name="arg2" type="xs:dayTimeDuration" /> + <return type="xs:date" /> + </operator> + + <!-- op:add-dayTimeDuration-to-dateTime( $arg1 as xs:dateTime, $arg2 as + xs:dayTimeDuration) as xs:dateTime --> + <operator name="op:add-dayTimeDuration-to-dateTime"> + <param name="arg1" type="xs:dateTime" /> + <param name="arg2" type="xs:dayTimeDuration" /> + <return type="xs:dateTime" /> + </operator> + + <!-- op:add-dayTimeDuration-to-time( $arg1 as xs:time, $arg2 as xs:dayTimeDuration) + as xs:time --> + <operator name="op:add-dayTimeDuration-to-time"> + <param name="arg1" type="xs:time" /> + <param name="arg2" type="xs:dayTimeDuration" /> + <return type="xs:time" /> + </operator> + + <!-- op:add-dayTimeDurations( $arg1 as xs:dayTimeDuration, $arg2 as xs:dayTimeDuration) + as xs:dayTimeDuration --> + <operator name="op:add-dayTimeDurations"> + <param name="arg1" type="xs:dayTimeDuration" /> + <param name="arg2" type="xs:dayTimeDuration" /> + <return type="xs:dayTimeDuration" /> + </operator> + + <!-- op:add-yearMonthDuration-to-date( $arg1 as xs:date, $arg2 as xs:yearMonthDuration) + as xs:date --> + <operator name="op:add-yearMonthDuration-to-date"> + <param name="arg1" type="xs:date" /> + <param name="arg2" type="xs:yearMonthDuration" /> + <return type="xs:date" /> + </operator> + + <!-- op:add-yearMonthDuration-to-dateTime( $arg1 as xs:dateTime, $arg2 as + xs:yearMonthDuration) as xs:dateTime --> + <operator name="op:add-yearMonthDuration-to-dateTime"> + <param name="arg1" type="xs:dateTime" /> + <param name="arg2" type="xs:yearMonthDuration" /> + <return type="xs:dateTime" /> + </operator> + + <!-- op:add-yearMonthDurations( $arg1 as xs:yearMonthDuration, $arg2 as + xs:yearMonthDuration) as xs:yearMonthDuration --> + <operator name="op:add-yearMonthDurations"> + <param name="arg1" type="xs:yearMonthDuration" /> + <param name="arg2" type="xs:yearMonthDuration" /> + <return type="xs:yearMonthDuration" /> + </operator> + + <!-- op:base64Binary-equal( $value1 as xs:base64Binary, $value2 as xs:base64Binary) + as xs:boolean --> + <operator name="op:base64Binary-equal"> + <param name="value1" type="xs:base64Binary" /> + <param name="value2" type="xs:base64Binary" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:boolean-equal($value1 as xs:boolean, $value2 as xs:boolean) as xs:boolean --> + <operator name="op:boolean-equal"> + <param name="value1" type="xs:boolean" /> + <param name="value2" type="xs:boolean" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:boolean-greater-than( $arg1 as xs:boolean, $arg2 as xs:boolean) + as xs:boolean --> + <operator name="op:boolean-greater-than"> + <param name="value1" type="xs:boolean" /> + <param name="value2" type="xs:boolean" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:boolean-less-than( $arg1 as xs:boolean, $arg2 as xs:boolean) as + xs:boolean --> + <operator name="op:boolean-less-than"> + <param name="value1" type="xs:boolean" /> + <param name="value2" type="xs:boolean" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:concatenate($arg as item()*) as item()* --> + <operator name="op:concatenate" varargs="true"> + <param name="arg" type="item()*" /> + <return type="item()*" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.sequence.ConcatenateScalarEvaluatorFactory" /> + </operator> + + <!-- op:date-equal($arg1 as xs:date, $arg2 as xs:date) as xs:boolean --> + <operator name="op:date-equal"> + <param name="arg1" type="xs:date" /> + <param name="arg2" type="xs:date" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:date-greater-than( $arg1 as xs:date, $arg2 as xs:date) as xs:boolean --> + <operator name="op:date-greater-than"> + <param name="arg1" type="xs:date" /> + <param name="arg2" type="xs:date" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:date-less-than($arg1 as xs:date, $arg2 as xs:date) as xs:boolean --> + <operator name="op:date-less-than"> + <param name="arg1" type="xs:date" /> + <param name="arg2" type="xs:date" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:dateTime-equal($arg1 as xs:dateTime, $arg2 as xs:dateTime) as xs:boolean --> + <operator name="op:dateTime-equal"> + <param name="arg1" type="xs:dateTime" /> + <param name="arg2" type="xs:dateTime" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:dateTime-greater-than( $arg1 as xs:dateTime, $arg2 as xs:dateTime) + as xs:boolean --> + <operator name="op:dateTime-greater-than"> + <param name="arg1" type="xs:dateTime" /> + <param name="arg2" type="xs:dateTime" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:dateTime-less-than( $arg1 as xs:dateTime, $arg2 as xs:dateTime) + as xs:boolean --> + <operator name="op:dateTime-less-than"> + <param name="arg1" type="xs:dateTime" /> + <param name="arg2" type="xs:dateTime" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:dayTimeDuration-greater-than( $arg1 as xs:dayTimeDuration, $arg2 + as xs:dayTimeDuration) as xs:boolean --> + <operator name="op:dayTimeDuration-greater-than"> + <param name="arg1" type="xs:dayTimeDuration" /> + <param name="arg2" type="xs:dayTimeDuration" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:dayTimeDuration-less-than( $arg1 as xs:dayTimeDuration, $arg2 as + xs:dayTimeDuration) as xs:boolean --> + <operator name="op:dayTimeDuration-less-than"> + <param name="arg1" type="xs:dayTimeDuration" /> + <param name="arg2" type="xs:dayTimeDuration" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:divide-dayTimeDuration( $arg1 as xs:dayTimeDuration, $arg2 as xs:double) + as xs:dayTimeDuration --> + <operator name="op:divide-dayTimeDuration"> + <param name="arg1" type="xs:dayTimeDuration" /> + <param name="arg2" type="xs:double" /> + <return type="xs:dayTimeDuration" /> + </operator> + + <!-- op:divide-dayTimeDuration-by-dayTimeDuration( $arg1 as xs:dayTimeDuration, + $arg2 as xs:dayTimeDuration) as xs:decimal --> + <operator name="op:divide-dayTimeDuration-by-dayTimeDuration"> + <param name="arg1" type="xs:dayTimeDuration" /> + <param name="arg2" type="xs:dayTimeDuration" /> + <return type="xs:decimal" /> + </operator> + + <!-- op:divide-yearMonthDuration( $arg1 as xs:yearMonthDuration, $arg2 as + xs:double) as xs:yearMonthDuration --> + <operator name="op:divide-yearMonthDuration"> + <param name="arg1" type="xs:yearMonthDuration" /> + <param name="arg2" type="xs:double" /> + <return type="xs:yearMonthDuration" /> + </operator> + + <!-- op:divide-yearMonthDuration-by-yearMonthDuration( $arg1 as xs:yearMonthDuration, + $arg2 as xs:yearMonthDuration) as xs:decimal --> + <operator name="op:divide-yearMonthDuration-by-yearMonthDuration"> + <param name="arg1" type="xs:yearMonthDuration" /> + <param name="arg2" type="xs:yearMonthDuration" /> + <return type="xs:decimal" /> + </operator> + + <!-- op:duration-equal($arg1 as xs:duration, $arg2 as xs:duration) as xs:boolean --> + <operator name="op:duration-equal"> + <param name="arg1" type="xs:duration" /> + <param name="arg2" type="xs:duration" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:except($parameter1 as node()*, $parameter2 as node()*) as node()* --> + <operator name="op:except"> + <param name="parameter1" type="node()*" /> + <param name="parameter2" type="node()*" /> + <return type="node()*" /> + <!-- implementation assumes input in document order --> + <property type="DocumentOrder" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + <property type="UniqueNodes" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + </operator> + + <!-- op:gDay-equal($arg1 as xs:gDay, $arg2 as xs:gDay) as xs:boolean --> + <operator name="op:gDay-equal"> + <param name="arg1" type="xs:gDay" /> + <param name="arg2" type="xs:gDay" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:gMonth-equal($arg1 as xs:gMonth, $arg2 as xs:gMonth) as xs:boolean --> + <operator name="op:gMonth-equal"> + <param name="arg1" type="xs:gMonth" /> + <param name="arg2" type="xs:gMonth" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:gMonthDay-equal($arg1 as xs:gMonthDay, $arg2 as xs:gMonthDay) as + xs:boolean --> + <operator name="op:gMonthDay-equal"> + <param name="arg1" type="xs:gMonthDay" /> + <param name="arg2" type="xs:gMonthDay" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:gYear-equal($arg1 as xs:gYear, $arg2 as xs:gYear) as xs:boolean --> + <operator name="op:gYear-equal"> + <param name="arg1" type="xs:gYear" /> + <param name="arg2" type="xs:gYear" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:gYearMonth-equal( $arg1 as xs:gYearMonth, $arg2 as xs:gYearMonth) + as xs:boolean --> + <operator name="op:gYearMonth-equal"> + <param name="arg1" type="xs:gYearMonth" /> + <param name="arg2" type="xs:gYearMonth" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:hexBinary-equal($value1 as xs:hexBinary, $value2 as xs:hexBinary) + as xs:boolean --> + <operator name="op:hexBinary-equal"> + <param name="arg1" type="xs:hexBinary" /> + <param name="arg2" type="xs:hexBinary" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:intersect($parameter1 as node()*, $parameter2 as node()*) as node()* --> + <operator name="op:intersect"> + <param name="parameter1" type="node()*" /> + <param name="parameter2" type="node()*" /> + <return type="node()*" /> + <!-- implementation assumes input in document order --> + <property type="DocumentOrder" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + <property type="UniqueNodes" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + </operator> + + <!-- op:is-same-node($parameter1 as node(), $parameter2 as node()) as xs:boolean --> + <operator name="op:is-same-node"> + <param name="parameter1" type="node()" /> + <param name="parameter2" type="node()" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:multiply-dayTimeDuration( $arg1 as xs:dayTimeDuration, $arg2 as + xs:double) as xs:dayTimeDuration --> + <operator name="op:multiply-dayTimeDuration"> + <param name="arg1" type="xs:dayTimeDuration" /> + <param name="arg2" type="xs:double" /> + <return type="xs:dayTimeDuration" /> + </operator> + + <!-- op:multiply-yearMonthDuration( $arg1 as xs:yearMonthDuration, $arg2 + as xs:double) as xs:yearMonthDuration --> + <operator name="op:multiply-yearMonthDuration"> + <param name="arg1" type="xs:yearMonthDuration" /> + <param name="arg2" type="xs:double" /> + <return type="xs:yearMonthDuration" /> + </operator> + + <!-- op:node-after($parameter1 as node(), $parameter2 as node()) as xs:boolean --> + <operator name="op:node-after"> + <param name="parameter1" type="node()" /> + <param name="parameter2" type="node()" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.node.OpNodeAfterEvaluatorFactory" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:node-before($parameter1 as node(), $parameter2 as node()) as xs:boolean --> + <operator name="op:node-before"> + <param name="parameter1" type="node()" /> + <param name="parameter2" type="node()" /> + <return type="xs:boolean" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.node.OpNodeBeforeEvaluatorFactory" /> + </operator> + + <!-- op:NOTATION-equal($arg1 as xs:NOTATION, $arg2 as xs:NOTATION) as xs:boolean --> + <operator name="op:NOTATION-equal"> + <param name="arg1" type="xs:NOTATION" /> + <param name="arg2" type="xs:NOTATION" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:numeric-add($arg1 as numeric, $arg2 as numeric) as numeric --> + <operator name="op:numeric-add"> + <param name="arg1" type="xsext:numeric" /> + <param name="arg2" type="xsext:numeric" /> + <return type="xsext:numeric" /> + </operator> + + <!-- op:numeric-divide($arg1 as numeric, $arg2 as numeric) as numeric --> + <operator name="op:numeric-divide"> + <param name="arg1" type="xsext:numeric" /> + <param name="arg2" type="xsext:numeric" /> + <return type="xsext:numeric" /> + </operator> + + <!-- op:numeric-equal($arg1 as numeric, $arg2 as numeric) as xs:boolean --> + <operator name="op:numeric-equal"> + <param name="arg1" type="xsext:numeric" /> + <param name="arg2" type="xsext:numeric" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:numeric-greater-than( $arg1 as numeric, $arg2 as numeric) as xs:boolean --> + <operator name="op:numeric-greater-than"> + <param name="arg1" type="xsext:numeric" /> + <param name="arg2" type="xsext:numeric" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:numeric-integer-divide( $arg1 as numeric, $arg2 as numeric) as xs:integer --> + <operator name="op:numeric-integer-divide"> + <param name="arg1" type="xsext:numeric" /> + <param name="arg2" type="xsext:numeric" /> + <return type="xs:integer" /> + </operator> + + <!-- op:numeric-less-than( $arg1 as numeric, $arg2 as numeric) as xs:boolean --> + <operator name="op:numeric-less-than"> + <param name="arg1" type="xsext:numeric" /> + <param name="arg2" type="xsext:numeric" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:numeric-mod($arg1 as numeric, $arg2 as numeric) as numeric --> + <operator name="op:numeric-mod"> + <param name="arg1" type="xsext:numeric" /> + <param name="arg2" type="xsext:numeric" /> + <return type="xsext:numeric" /> + </operator> + + <!-- op:numeric-multiply( $arg1 as numeric, $arg2 as numeric) as numeric --> + <operator name="op:numeric-multiply"> + <param name="arg1" type="xsext:numeric" /> + <param name="arg2" type="xsext:numeric" /> + <return type="xsext:numeric" /> + </operator> + + <!-- op:numeric-subtract( $arg1 as numeric, $arg2 as numeric) as numeric --> + <operator name="op:numeric-subtract"> + <param name="arg1" type="xsext:numeric" /> + <param name="arg2" type="xsext:numeric" /> + <return type="xsext:numeric" /> + </operator> + + <!-- op:numeric-unary-minus( $arg as numeric) as numeric --> + <operator name="op:numeric-unary-minus"> + <param name="arg1" type="xsext:numeric" /> + <return type="xsext:numeric" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.unary.NumericUnaryMinusScalarEvaluatorFactory" /> + </operator> + + <!-- op:numeric-unary-plus( $arg as numeric) as numeric --> + <operator name="op:numeric-unary-plus"> + <param name="arg1" type="xsext:numeric" /> + <return type="xsext:numeric" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.unary.NumericUnaryPlusScalarEvaluatorFactory" /> + </operator> + + <!-- op:QName-equal($arg1 as xs:QName, $arg2 as xs:QName) as xs:boolean --> + <operator name="op:QName-equal"> + <param name="arg1" type="xs:QName" /> + <param name="arg2" type="xs:QName" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:subtract-dates($arg1 as xs:date, $arg2 as xs:date) as xs:dayTimeDuration? --> + <operator name="op:subtract-dates"> + <param name="arg1" type="xs:date" /> + <param name="arg2" type="xs:date" /> + <return type="xs:dayTimeDuration?" /> + </operator> + + <!-- op:subtract-dateTimes( $arg1 as xs:dateTime, $arg2 as xs:dateTime) + as xs:dayTimeDuration? --> + <operator name="op:subtract-dateTimes"> + <param name="arg1" type="xs:dateTime" /> + <param name="arg2" type="xs:dateTime" /> + <return type="xs:dayTimeDuration?" /> + </operator> + + <!-- op:subtract-dayTimeDuration-from-date( $arg1 as xs:date, $arg2 as xs:dayTimeDuration) + as xs:date --> + <operator name="op:subtract-dayTimeDuration-from-date"> + <param name="arg1" type="xs:date" /> + <param name="arg2" type="xs:dayTimeDuration" /> + <return type="xs:date" /> + </operator> + + <!-- op:subtract-dayTimeDuration-from-dateTime( $arg1 as xs:dateTime, $arg2 + as xs:dayTimeDuration) as xs:dateTime --> + <operator name="op:subtract-dayTimeDuration-from-dateTime"> + <param name="arg1" type="xs:dateTime" /> + <param name="arg2" type="xs:dayTimeDuration" /> + <return type="xs:dateTime" /> + </operator> + + <!-- op:subtract-dayTimeDuration-from-time( $arg1 as xs:time, $arg2 as xs:dayTimeDuration) + as xs:time --> + <operator name="op:subtract-dayTimeDuration-from-time"> + <param name="arg1" type="xs:time" /> + <param name="arg2" type="xs:dayTimeDuration" /> + <return type="xs:time" /> + </operator> + + <!-- op:subtract-dayTimeDurations( $arg1 as xs:dayTimeDuration, $arg2 as + xs:dayTimeDuration) as xs:dayTimeDuration --> + <operator name="op:subtract-dayTimeDurations"> + <param name="arg1" type="xs:dayTimeDuration" /> + <param name="arg2" type="xs:dayTimeDuration" /> + <return type="xs:dayTimeDuration" /> + </operator> + + <!-- op:subtract-times($arg1 as xs:time, $arg2 as xs:time) as xs:dayTimeDuration --> + <operator name="op:subtract-times"> + <param name="arg1" type="xs:time" /> + <param name="arg2" type="xs:time" /> + <return type="xs:dayTimeDuration" /> + </operator> + + <!-- op:subtract-yearMonthDuration-from-date( $arg1 as xs:date, $arg2 as + xs:yearMonthDuration) as xs:date --> + <operator name="op:subtract-yearMonthDuration-from-date"> + <param name="arg1" type="xs:date" /> + <param name="arg2" type="xs:yearMonthDuration" /> + <return type="xs:date" /> + </operator> + + <!-- op:subtract-yearMonthDuration-from-dateTime( $arg1 as xs:dateTime, + $arg2 as xs:yearMonthDuration) as xs:dateTime --> + <operator name="op:subtract-yearMonthDuration-from-dateTime"> + <param name="arg1" type="xs:dateTime" /> + <param name="arg2" type="xs:yearMonthDuration" /> + <return type="xs:dateTime" /> + </operator> + + <!-- op:subtract-yearMonthDurations( $arg1 as xs:yearMonthDuration, $arg2 + as xs:yearMonthDuration) as xs:yearMonthDuration --> + <operator name="op:subtract-yearMonthDurations"> + <param name="arg1" type="xs:yearMonthDuration" /> + <param name="arg2" type="xs:yearMonthDuration" /> + <return type="xs:yearMonthDuration" /> + </operator> + + <!-- op:time-equal($arg1 as xs:time, $arg2 as xs:time) as xs:boolean --> + <operator name="op:time-equal"> + <param name="arg1" type="xs:time" /> + <param name="arg2" type="xs:time" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:time-greater-than( $arg1 as xs:time, $arg2 as xs:time) as xs:boolean --> + <operator name="op:time-greater-than"> + <param name="arg1" type="xs:time" /> + <param name="arg2" type="xs:time" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:time-less-than($arg1 as xs:time, $arg2 as xs:time) as xs:boolean --> + <operator name="op:time-less-than"> + <param name="arg1" type="xs:time" /> + <param name="arg2" type="xs:time" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:to($firstval as xs:integer, $lastval as xs:integer) as xs:integer* --> + <operator name="op:to"> + <param name="firstval" type="xs:integer" /> + <param name="lastval" type="xs:integer" /> + <return type="xs:integer*" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.sequence.OpToScalarEvaluatorFactory" /> + </operator> + + <!-- op:union($parameter1 as node()*, $parameter2 as node()*) as node()* --> + <operator name="op:union"> + <param name="parameter1" type="node()*" /> + <param name="parameter2" type="node()*" /> + <return type="node()*" /> + <!-- as we do the doc-order-sort and the duplicate elimination --> + <!-- after the concatenation, we can reuse the concat iterator --> + <property type="DocumentOrder" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + <property type="UniqueNodes" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + </operator> + + <!-- op:yearMonthDuration-greater-than( $arg1 as xs:yearMonthDuration, $arg2 + as xs:yearMonthDuration) as xs:boolean --> + <operator name="op:yearMonthDuration-greater-than"> + <param name="arg1" type="xs:yearMonthDuration" /> + <param name="arg2" type="xs:yearMonthDuration" /> + <return type="xs:boolean" /> + </operator> + + <!-- op:yearMonthDuration-less-than( $arg1 as xs:yearMonthDuration, $arg2 + as xs:yearMonthDuration) as xs:boolean --> + <operator name="op:yearMonthDuration-less-than"> + <param name="arg1" type="xs:yearMonthDuration" /> + <param name="arg2" type="xs:yearMonthDuration" /> + <return type="xs:boolean" /> + </operator> + + <!-- fn:avg-local($arg as xs:anyAtomicType*) as xs:anyAtomicType? --> + <operator name="opext:avg-local"> + <param name="arg" type="xs:anyAtomicType*" /> + <return type="xs:anyAtomicType?" /> + <runtime type="aggregate" + class="org.apache.vxquery.runtime.functions.aggregate.AvgLocalAggregateEvaluatorFactory" /> + </operator> + + <!-- fn:avg-global($arg as xs:anyAtomicType*) as xs:anyAtomicType? --> + <operator name="opext:avg-global"> + <param name="arg" type="xs:anyAtomicType*" /> + <return type="xs:anyAtomicType?" /> + <runtime type="aggregate" + class="org.apache.vxquery.runtime.functions.aggregate.AvgGlobalAggregateEvaluatorFactory" /> + </operator> + + <!-- opext:ordered($arg as item()*) as item()* --> + <operator name="opext:ordered"> + <param name="arg" type="item()*" /> + <return type="item()*" /> + </operator> + + <!-- opext:unordered($arg as item()*) as item()* --> + <operator name="opext:unordered"> + <param name="arg" type="item()*" /> + <return type="item()*" /> + </operator> + + <!-- opext:value-eq($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) + as xs:boolean? --> + <operator name="opext:value-eq"> + <param name="arg1" type="xs:anyAtomicType?" /> + <param name="arg2" type="xs:anyAtomicType?" /> + <return type="xs:boolean?" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.comparison.ValueEqComparisonScalarEvaluatorFactory" /> + </operator> + + <!-- opext:value-ne($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) + as xs:boolean? --> + <operator name="opext:value-ne"> + <param name="arg1" type="xs:anyAtomicType?" /> + <param name="arg2" type="xs:anyAtomicType?" /> + <return type="xs:boolean?" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.comparison.ValueNeComparisonScalarEvaluatorFactory" /> + </operator> + + <!-- opext:value-lt($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) + as xs:boolean? --> + <operator name="opext:value-lt"> + <param name="arg1" type="xs:anyAtomicType?" /> + <param name="arg2" type="xs:anyAtomicType?" /> + <return type="xs:boolean?" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.comparison.ValueLtComparisonScalarEvaluatorFactory" /> + </operator> + + <!-- opext:value-le($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) + as xs:boolean? --> + <operator name="opext:value-le"> + <param name="arg1" type="xs:anyAtomicType?" /> + <param name="arg2" type="xs:anyAtomicType?" /> + <return type="xs:boolean?" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.comparison.ValueLeComparisonScalarEvaluatorFactory" /> + </operator> + + <!-- opext:value-gt($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) + as xs:boolean? --> + <operator name="opext:value-gt"> + <param name="arg1" type="xs:anyAtomicType?" /> + <param name="arg2" type="xs:anyAtomicType?" /> + <return type="xs:boolean?" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.comparison.ValueGtComparisonScalarEvaluatorFactory" /> + </operator> + + <!-- opext:value-ge($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) + as xs:boolean? --> + <operator name="opext:value-ge"> + <param name="arg1" type="xs:anyAtomicType?" /> + <param name="arg2" type="xs:anyAtomicType?" /> + <return type="xs:boolean?" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.comparison.ValueGeComparisonScalarEvaluatorFactory" /> + </operator> + + <!-- opext:general-eq($arg1 as item()*, $arg2 as item()*) as xs:boolean --> + <operator name="opext:general-eq"> + <param name="arg1" type="item()*" /> + <param name="arg2" type="item()*" /> + <return type="xs:boolean" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.comparison.general.GeneralEqComparisonScalarEvaluatorFactory" /> + </operator> + + <!-- opext:general-ne($arg1 as item()*, $arg2 as item()*) as xs:boolean --> + <operator name="opext:general-ne"> + <param name="arg1" type="item()*" /> + <param name="arg2" type="item()*" /> + <return type="xs:boolean" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.comparison.general.GeneralNeComparisonScalarEvaluatorFactory" /> + </operator> + + <!-- opext:general-lt($arg1 as item()*, $arg2 as item()*) as xs:boolean --> + <operator name="opext:general-lt"> + <param name="arg1" type="item()*" /> + <param name="arg2" type="item()*" /> + <return type="xs:boolean" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.comparison.general.GeneralLtComparisonScalarEvaluatorFactory" /> + </operator> + + <!-- opext:general-le($arg1 as item()*, $arg2 as item()*) as xs:boolean --> + <operator name="opext:general-le"> + <param name="arg1" type="item()*" /> + <param name="arg2" type="item()*" /> + <return type="xs:boolean" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.comparison.general.GeneralLeComparisonScalarEvaluatorFactory" /> + </operator> + + <!-- opext:general-gt($arg1 as item()*, $arg2 as item()*) as xs:boolean --> + <operator name="opext:general-gt"> + <param name="arg1" type="item()*" /> + <param name="arg2" type="item()*" /> + <return type="xs:boolean" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.comparison.general.GeneralGtComparisonScalarEvaluatorFactory" /> + </operator> + + <!-- opext:general-ge($arg1 as item()*, $arg2 as item()*) as xs:boolean --> + <operator name="opext:general-ge"> + <param name="arg1" type="item()*" /> + <param name="arg2" type="item()*" /> + <return type="xs:boolean" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.comparison.general.GeneralGeComparisonScalarEvaluatorFactory" /> + </operator> + + <!-- opext:add($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as + xs:anyAtomicType? --> + <operator name="opext:add"> + <param name="arg1" type="xs:anyAtomicType?" /> + <param name="arg2" type="xs:anyAtomicType?" /> + <return type="xs:anyAtomicType?" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.arithmetic.AddScalarEvaluatorFactory" /> + </operator> + + <!-- opext:subtract($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) + as xs:anyAtomicType? --> + <operator name="opext:subtract"> + <param name="arg1" type="xs:anyAtomicType?" /> + <param name="arg2" type="xs:anyAtomicType?" /> + <return type="xs:anyAtomicType?" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.arithmetic.SubtractScalarEvaluatorFactory" /> + </operator> + + <!-- opext:multiply($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) + as xs:anyAtomicType? --> + <operator name="opext:multiply"> + <param name="arg1" type="xs:anyAtomicType?" /> + <param name="arg2" type="xs:anyAtomicType?" /> + <return type="xs:anyAtomicType?" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.arithmetic.MultiplyScalarEvaluatorFactory" /> + </operator> + + <!-- opext:divide($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) + as xs:anyAtomicType? --> + <operator name="opext:divide"> + <param name="arg1" type="xs:anyAtomicType?" /> + <param name="arg2" type="xs:anyAtomicType?" /> + <return type="xs:anyAtomicType?" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.arithmetic.DivideScalarEvaluatorFactory" /> + </operator> + + <!-- opext:idiv($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) + as xs:anyAtomicType? --> + <operator name="opext:idiv"> + <param name="arg1" type="xsext:numeric?" /> + <param name="arg2" type="xsext:numeric?" /> + <return type="xs:integer?" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.arithmetic.IntegerDivideScalarEvaluatorFactory" /> + </operator> + + <!-- opext:mod($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as + xs:anyAtomicType? --> + <operator name="opext:mod"> + <param name="arg1" type="xsext:numeric?" /> + <param name="arg2" type="xsext:numeric?" /> + <return type="xs:integer?" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.arithmetic.ModScalarEvaluatorFactory" /> + </operator> + + <!-- opext:and($arg1 as xs:boolean?, $arg2 as xs:boolean?) as xs:boolean? --> + <operator name="opext:and"> + <param name="arg1" type="xs:boolean?" /> + <param name="arg2" type="xs:boolean?" /> + <return type="xs:boolean?" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.bool.AndScalarEvaluatorFactory" /> + </operator> + + <!-- opext:or($arg1 as xs:boolean?, $arg2 as xs:boolean?) as xs:boolean? --> + <operator name="opext:or"> + <param name="arg1" type="xs:boolean?" /> + <param name="arg2" type="xs:boolean?" /> + <return type="xs:boolean?" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.bool.OrScalarEvaluatorFactory" /> + </operator> + + <!-- opext:sort-nodes-asc($arg as node()*) as node()* --> + <operator name="opext:sort-nodes-asc"> + <param name="arg" type="node()*" /> + <return type="node()*" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.nodeid.SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory" /> + <property type="UniqueNodes" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + </operator> + + <!-- opext:sort-nodes-asc-or-atomics($arg as item()*) as item()* --> + <operator name="opext:sort-nodes-asc-or-atomics"> + <param name="arg" type="item()*" /> + <return type="item()*" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.nodeid.SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory" /> + <property type="UniqueNodes" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + </operator> + + <!-- opext:sort-distinct-nodes-asc($arg as node()*) as node()* --> + <operator name="opext:sort-distinct-nodes-asc"> + <param name="arg" type="node()*" /> + <return type="node()*" /> + <property type="UniqueNodes" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + </operator> + + <!-- opext:sort-distinct-nodes-asc-or-atomics($arg as item()*) as item()* --> + <operator name="opext:sort-distinct-nodes-asc-or-atomics"> + <param name="arg" type="item()*" /> + <return type="item()*" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.nodeid.SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory" /> + </operator> + + <!-- opext:distinct-nodes-or-atomics($arg as item()*) as item()* --> + <operator name="opext:distinct-nodes-or-atomics"> + <param name="arg" type="item()*" /> + <return type="item()*" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.nodeid.SortDistinctNodesAscOrAtomicsScalarEvaluatorFactory" /> + </operator> + + <!-- opext:sort-nodes-desc($arg as node()*) as node()* --> + <operator name="opext:sort-nodes-desc"> + <param name="arg" type="node()*" /> + <return type="node()*" /> + <property type="UniqueNodes" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + </operator> + + <!-- opext:sort-nodes-desc-or-atomics($arg as item()*) as item()* --> + <operator name="opext:sort-nodes-desc-or-atomics"> + <param name="arg" type="item()*" /> + <return type="item()*" /> + <property type="UniqueNodes" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + </operator> + + <!-- opext:sort-distinct-nodes-desc($arg as node()*) as node()* --> + <operator name="opext:sort-distinct-nodes-desc"> + <param name="arg" type="node()*" /> + <return type="node()*" /> + </operator> + + <!-- opext:sort-distinct-nodes-desc-or-atomics($arg as item()*) as item()* --> + <operator name="opext:sort-distinct-nodes-desc-or-atomics"> + <param name="arg" type="item()*" /> + <return type="item()*" /> + </operator> + + <!-- opext:id-from-node($arg as item()) as xs:integer --> + <operator name="opext:id-from-node"> + <param name="arg" type="item()" /> + <return type="xs:integer" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.node.IdFromNodeScalarEvaluatorFactory" /> + </operator> + + <!-- opext:local-id-from-node($arg as item()) as xs:int --> + <operator name="opext:local-id-from-node"> + <param name="arg" type="item()" /> + <return type="xs:int" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.node.LocalIdFromNodeScalarEvaluatorFactory" /> + </operator> + + <!-- opext:tree-id-from-node($arg as item()) as xs:int --> + <operator name="opext:tree-id-from-node"> + <param name="arg" type="item()" /> + <return type="xs:int" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.node.TreeIdFromNodeScalarEvaluatorFactory" /> + </operator> + + <!-- opext:deflate-sequences($arg as item()*) as item()* --> + <operator name="opext:deflate-sequences"> + <param name="arg" type="item()*" /> + <return type="item()*" /> + <property type="DocumentOrder" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + <property type="UniqueNodes" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + </operator> + + <!-- opext:pi-constructor($target as xs:sring, $content as xs:string) as + node() --> + <operator name="opext:pi-constructor"> + <param name="target" type="xs:string" /> + <param name="content" type="xs:string" /> + <return type="node()" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.node.PINodeConstructorScalarEvaluatorFactory" /> + </operator> + + <!-- opext:comment-constructor($content as xs:string) as node() --> + <operator name="opext:comment-constructor"> + <param name="content" type="xs:string" /> + <return type="node()" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.node.CommentNodeConstructorScalarEvaluatorFactory" /> + </operator> + + <!-- opext:element-constructor($name as xs:QName, $content as item()*) as + node() --> + <operator name="opext:element-constructor"> + <param name="name" type="xs:QName" /> + <param name="content" type="item()*" /> + <return type="node()" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.node.ElementNodeConstructorScalarEvaluatorFactory" /> + </operator> + + <!-- opext:array-constructor($expression as node()) as node() --> + <operator name="opext:array-constructor"> + <param name="expession" type="node()" /> + <return type="node()" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.node.ArrayNodeConstructorScalarEvaluatorFactory" /> + </operator> + + <!-- opext:attribute-constructor($name as xs:QName, $content as xs:anyAtomicType*) + as node() --> + <operator name="opext:attribute-constructor"> + <param name="name" type="xs:QName" /> + <param name="content" type="xs:anyAtomicType*" /> + <return type="node()" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.node.AttributeNodeConstructorScalarEvaluatorFactory" /> + </operator> + + <!-- opext:text-constructor($content as xs:anyAtomicType*) as node() --> + <operator name="opext:text-constructor"> + <param name="content" type="xs:anyAtomicType*" /> + <return type="node()" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.node.TextNodeConstructorScalarEvaluatorFactory" /> + </operator> + + <!-- opext:document-constructor($content as node()) as node() --> + <operator name="opext:document-constructor"> + <param name="content" type="node()" /> + <return type="node()" /> + </operator> + + <!-- opext:if-then-else($condition as xs:boolean, $then as item()*, $else + as item()*) as item()* --> + <operator name="opext:if-then-else"> + <param name="condition" type="xs:boolean" /> + <param name="then" type="item()*" /> + <param name="else" type="item()*" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.conditional.IfThenElseScalarEvaluatorFactory" /> + <return type="item()*" /> + </operator> + + <!-- opext:ancestor($arg as node()*) as node()* --> + <operator name="opext:ancestor"> + <param name="arg" type="node()*" /> + <return type="node()*" /> + </operator> + + <!-- opext:ancestor-or-self($arg as node()*) as node()* --> + <operator name="opext:ancestor-or-self"> + <param name="arg" type="node()*" /> + <return type="node()*" /> + </operator> + + <!-- opext:attribute($arg as node()*) as node()* --> + <operator name="opext:attribute"> + <param name="arg" type="node()*" /> + <return type="node()*" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.step.AttributePathStepScalarEvaluatorFactory" /> + </operator> + + <!-- opext:child($arg as node()*) as node()* --> + <operator name="opext:child"> + <param name="arg" type="node()*" /> + <return type="node()*" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.step.ChildPathStepScalarEvaluatorFactory" /> + <runtime type="unnesting" + class="org.apache.vxquery.runtime.functions.step.ChildPathStepUnnestingEvaluatorFactory" /> + <property type="DocumentOrder" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + <property type="UniqueNodes" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.InputPropertyPropagationPolicy"> + <argument value="0" /> + </property> + </operator> + + <!-- opext:descendant($arg as node()*) as node()* --> + <operator name="opext:descendant"> + <param name="arg" type="node()*" /> + <return type="node()*" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.step.DescendantPathStepScalarEvaluatorFactory" /> + <property type="UniqueNodes" + class="org.apache.vxquery.compiler.rewriter.rules.propagationpolicies.uniquenodes.UniqueNodesNOPropagationPolicy" /> + </operator> + + <!-- opext:descendant-or-self($arg as node()*) as node()* --> + <operator name="opext:descendant-or-self"> + <param name="arg" type="node()*" /> + <return type="node()*" /> + <runtime type="scalar" + class="org.apache.vxquery.runtime.functions.step.DescendantOrSelfPathStepScalarEvaluatorFactory" /> + <runtime type="unnesting" + class="org.apache.vxquery.runtime.functions.step.DescendantOrSelfPathStepUnnestingEvaluatorFactory" /> + <property type="UniqueNodes" + class="org.apache.vxquery.compiler.rewri
<TRUNCATED>
