public interface OPERATORNAMES
The OPERATORNAMES interface defines the names of all system-defined relational operators used in SIRA_PRISE, and the names of the system-defined interval operators used in SIRA_PRISE. The names of the system-provided scalar operators will have to be incorporated here too, but that is a work in progress. Until that work is finished, the following appendix to the former "managing the database" website page is included here and will have to make do.
The formally correct list of system-provided operators is in the "known implementing classes" overview of the OperatorImplementation_V0105
interface.
Some of the relational operators defined and documented here are subject to SIRA_PRISE's "using quirk". This quirk is explained here, the impacted operators are documented with a reference to this paragraph. The quirk is that if the arguments of a relational operator involve interval-typed attributes, then that operator will expose not exactly the behaviour as documented/specified in these documents, but rather the behaviour of a corresponding "USING" version of that operator. The reason this quirk exists is the combination of all of the following :
So the quirky situation is as follows (illustrated for the case of INTERSECT) :
Below is an informal overview of the system-provided scalar operators.
Operator name and argument types | Comments |
---|---|
EQ(...,...) | Provided for all types |
GT(...,...) LT(...,...) GE(...,...) LE(...,...) | Provided for types INT, LONG, FLOAT, DECIMAL, DATE and TIMEOFDAY. |
XOR(boolean,boolean) | |
AND(boolean,boolean) | |
OR(boolean,boolean) | |
NOT(boolean) | |
ABS(...) | Returns the absolute value of its argument. Provided for the types INT, LONG, FLOAT. |
MAX(...,...) | Returns the greater of its two arguments. Provided for the types INT, LONG, FLOAT, DATE and TIMEOFDAY. |
MIN(...,...) | Returns the lower of its two arguments. Provided for the types INT, LONG, FLOAT, DATE and TIMEOFDAY. |
PLUS(...,...) | Returns the sum of its two arguments. Provided for the types INT, LONG, FLOAT, DECIMAL and TIMEOFDAY. |
SUB(...,...) | Returns the difference of its two arguments. Provided for the types INT, LONG, FLOAT and TIMEOFDAY. |
MULT(...,...) | Returns the product of its two arguments. Provided for the types INT, LONG, and FLOAT. |
DIV(...,...) | Returns the result of the division of the first argument by the second. Provided for the types INT, LONG, and FLOAT. |
ROUND(float,float) | Out of the set of whole multiples of the second argument, returns the value that is closest to the first argument. |
EXP(float,float) | Returns the result of the first argument raised to the power of the second. |
EXP(float) | Returns the result of e raised to the power of the argument. |
LN(float) | Returns the natural logarithm of the argument. |
SQRT(float) | Returns the square root of the argument. |
CEIL(...,...) | Returns the smallest number that is an exact multiple of the second argument and greater than or equal to the first. Provided for types INT and LONG. |
FLOOR(...,...) | Returns the largest number that is an exact multiple of the second argument and smaller than or equal to the first. Provided for types INT and LONG. |
MOD(...,...) | Returns the number c such that if c = mod(a,b), then a = (a / b) + c. Provided for types INT and LONG. |
COS(angle) | Returns the cosine of the argument |
COSEC(angle) | Returns the cosecant of the argument |
COTAN(angle) | Returns the cotangent of the argument |
SEC(angle) | Returns the secant of the argument |
SIN(angle) | Returns the sine of the argument |
TAN(angle) | Returns the tangent of the argument |
ACOS(float) | Returns the arc cosine of the argument |
ACOSEC(float) | Returns the arc cosecant of the argument |
ACOTAN(float) | Returns the arc cotangent of the argument |
ASEC(float) | Returns the arc secant of the argument |
ASIN(float) | Returns the arc sine of the argument |
ATAN(float) | Returns the arc tangent of the argument |
LENGTH(longinterval) | |
LENGTH(intinterval) | |
LENGTH(string) | Returns the number of tokens that appear in the string argument. |
CONCAT(string, string) | Returns the result of concatenating the two string arguments. |
UPPERCASE(string) | Returns the result of converting the string argument to uppercase. Note that this can be dependent on locale of the machine where the server is running. |
LOWERCASE(string) | Returns the result of converting the string argument to lowercase. Note that this can be dependent on locale of the machine where the server is running. |
SUBSTR(string, start) | Returns the string that consists of the same series of tokens that appear in the string argument starting at the position designated by the integer argument start. The first position is position 1 (i.e. positions are not offsets). If the start value is less than 1, then the entire string argument is returned. If the start value is larger than the given string's actual length, then the empty string is returned. |
SUBSTR(string, start, end) | Returns the string that consists of the same series of tokens that appear in the string argument starting at the position designated by the integer argument 'start', and before the position designated by the integer argument 'end' (i.e. the token at position 'end' is not included in the result). The first position is position 1 (i.e. positions are not offsets). If the 'start' value is outside the range [1-actual length of the string], then it is adjusted to fall within that range. After that, if the 'end' argument is outside the range [start-actual length of the string], then it is also adjusted to fall within that range. If, after adjustment, 'end' is equal to 'start', then the empty string is returned. |
MATCHES(string, regex) | Returns true if the first argument "matches" the second, false otherwise. The second argument must be a valid Java Regular Expression. |
BEGINSWITH(..., ...) | Returns true if the first argument "begins with" the second, false otherwise. Provided for types STRING and NAME. |
ENDSWITH(..., ...) | Returns true if the first argument "ends with" the second, false otherwise. Provided for types STRING and NAME. |
DATESHIFT(date,years,months,days) | Years, months and days are all integer arguments. Only one is allowed to be nonzero. Returns the date that is obtained by adding that nonzero value to the given date. |
FIRST...() | Returns the lowest value of the type whose name follows 'FIRST' in the operator name. Provided for types INT, LONG and DATE. |
LAST...() | Returns the lowest value of the type whose name follows 'FIRST' in the operator name. Provided for types INT, LONG and DATE. |
NEXT...(...) | Returns the value that is next-higher to the given argument. Provided for types INT, LONG and DATE. |
PRIOR...(...) | Returns the value that is next-lower to the given argument. Provided for types INT, LONG and DATE. |
The interval family of operators | These operators are discussed in the section on the interval operators |
SIRA_PRISE supports the inclusion in a type definition of 'possible representations' (possreps for short). Each type obviously must have at least one such possrep, for otherwise the values of the type simply would not be externally representible. That possrep is the type's "default" possrep.
All possreps can have 'possrep components'. For each component of a possrep, SIRA_PRISE automatically defines a THE_ operator whose argument is a value of the possrep's type, and whose return value is the value for that particular component in that particular possrep's representation of the argument.
E.g. a date value can be represented as a single 10-character string, or it can be represented using three integer values denoting the day, month and year respectively. The latter gives rise to a possrep with three components named DAY, MONTH and YEAR respectively, and to the automatic availability of three operators THE_DAY, THE_MONTH and THE_YEAR respectively (the argument to each of these operators is a value of type DATE, of course). Values of type date can then be selected using either one of DATE(yyyy-mm-dd), DATE(ISO(yyyy-mm-dd)), or DATE(DAY(dd)MONTH(mm)YEAR(yyyy)).
The possreps (and thus, which THE_ operators are available) for the system-provided types are included in the type documentation.
Please observe that the component names of a possrep must be unique across all the possreps of the same type (otherwise there would have to be multiple distinct THE_ operators that share the same name and have the same argument type, making their signature completely equal, and thus rendering the operators indistinguishible from the engine's perspective). So it is therefore not possible to define, say, a possrep MDY for type DATE that also has a component named DAY, MONTH or YEAR.
Also observe that type STRING does not seem to have a possrep. If it had one, it should also have a component, and that component would (in practice) have to be of type STRING as well, breaking the rule that no type can have a component that is of the very same type. The absence of a possrep for type STRING obviously does not prohibit writing value selectors for the type. The absence of a possrep for type STRING only reflects the fact that STRING is the actual root type of the system, as far as "representation of values" is concerned.
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
AFTER
"AFTER" is the Allen AFTER operator for intervals.
|
static NameIdentifier |
AFTER_I |
static java.lang.String |
AGGREGATE
"AGGREGATE" is the generic aggregation operator as supported by SIRA_PRISE.
|
static java.lang.String |
BEFORE
"BEFORE" is the Allen BEFORE operator for intervals.
|
static NameIdentifier |
BEFORE_I |
static java.lang.String |
BEGINS
"BEGINS" is the Allen BEGINS operator for intervals.
|
static NameIdentifier |
BEGINS_I |
static java.lang.String |
CHOOSE |
static NameIdentifier |
CHOOSE_I |
static java.lang.String |
CONTAINS
"CONTAINS" is the Allen CONTAINS operator for intervals.
|
static NameIdentifier |
CONTAINS_I |
static java.lang.String |
CONTAINSPOINT
"CONTAINSPOINT" is the CONTAINSPOINT operator for intervals.
|
static NameIdentifier |
CONTAINSPOINT_I |
static java.lang.String |
CONTAINSR |
static NameIdentifier |
CONTAINSR_I |
static java.lang.String |
CONTAINSRUSING |
static NameIdentifier |
CONTAINSRUSING_I |
static java.lang.String |
CONTAINST |
static NameIdentifier |
CONTAINST_I |
static java.lang.String |
CONTAINSTUSING |
static NameIdentifier |
CONTAINSTUSING_I |
static java.lang.String |
DELETES |
static java.lang.String |
DELETESBAC |
static java.lang.String |
DELETESSAC |
static java.lang.String |
DIVIDEBYPER |
static java.lang.String |
ENDPOINTOF
"ENDPOINTOF" is the operator for getting the ENDPOINT of an interval.
|
static NameIdentifier |
ENDPOINTOF_I |
static java.lang.String |
ENDS
"ENDS" is the Allen ENDS operator for intervals.
|
static NameIdentifier |
ENDS_I |
static java.lang.String |
EQ |
static NameIdentifier |
EQ_I |
static java.lang.String |
EXTEND
"EXTEND" is the EXTEND operator of the relational algebra defined in TTM.
|
static java.lang.String |
FIRST |
static java.lang.String |
GAPBETWEEN
"GAPBETWEEN" is the GAPBETWEEN operator for intervals.
|
static NameIdentifier |
GAPBETWEEN_I |
static java.lang.String |
GE |
static NameIdentifier |
GE_I |
static java.lang.String |
GROUP
"GROUP" is the GROUPing operator as supported by SIRA_PRISE.
|
static java.lang.String |
GT |
static NameIdentifier |
GT_I |
static java.lang.String |
GTCLOSE
"GTCLOSE" is the generalized transitive closure operator as supported by SIRA_PRISE.
|
static java.lang.String |
IINTERSECT
"IINTERSECT" is the INTERSECT operator for intervals.
|
static NameIdentifier |
IINTERSECT_I |
static java.lang.String |
IMINUS
"IMINUS" is the MINUS operator for intervals.
|
static NameIdentifier |
IMINUS_I |
static java.lang.String |
INSERTS |
static java.lang.String |
INSERTSBAC |
static java.lang.String |
INSERTSSAC |
static java.lang.String |
INTERSECT
"INTERSECT" is the intersection operator of the relational algebra.
|
static java.lang.String |
INTERSECTUSING |
static java.lang.String |
ISEMPTYINTERVAL
"ISEMPTYINTERVAL" is the operator for testing emptiness of an interval.
|
static NameIdentifier |
ISEMPTYINTERVAL_I |
static java.lang.String |
ISINFINITEINTERVAL
Deprecated.
- replace invocations of this operator with the (negation of) the new ISUPPERBOUNDED() operator
|
static NameIdentifier |
ISINFINITEINTERVAL_I
Deprecated.
- replace invocations of this operator with the (negation of) the new ISUPPERBOUNDED() operator
|
static java.lang.String |
ISLOWERBOUNDED |
static NameIdentifier |
ISLOWERBOUNDED_I |
static java.lang.String |
ISUPPERBOUNDED |
static NameIdentifier |
ISUPPERBOUNDED_I |
static java.lang.String |
IUNION
"IUNION" is the UNION operator for intervals.
|
static NameIdentifier |
IUNION_I |
static java.lang.String |
JOIN
"JOIN" is the natural-join operator of the relational algebra.
|
static java.lang.String |
JOINUSING |
static java.lang.String |
LAST |
static java.lang.String |
LE |
static NameIdentifier |
LE_I |
static java.lang.String |
LEFTJOIN
"LEFTJOIN" is a "left join" of the relational algebra supported by SIRA_PRISE.
|
static java.lang.String |
LEFTJOINUSING |
static java.lang.String |
LENGTH |
static NameIdentifier |
LENGTH_I |
static java.lang.String |
LT |
static NameIdentifier |
LT_I |
static java.lang.String |
MAX |
static NameIdentifier |
MAX_I |
static java.lang.String |
MEETS
"MEETS" is the operator for the Allen MEETS interval operator.
|
static NameIdentifier |
MEETS_I |
static java.lang.String |
MERGES
"MERGES" is the operator for the Allen MERGESTS interval operator.
|
static NameIdentifier |
MERGES_I |
static java.lang.String |
MIN |
static NameIdentifier |
MIN_I |
static java.lang.String |
MINUS
"MINUS" is the difference operator of the relational algebra.
|
static java.lang.String |
MINUSUSING |
static java.lang.String |
NEXT |
static java.lang.String |
OVERLAPS
"OVERLAPS" is the operator for the Allen OVERLAPS interval operator.
|
static NameIdentifier |
OVERLAPS_I |
static java.lang.String |
PACK
"PACK" is the PACK operator of the relational algebra defined in TDATRM/TaRT and my paper.
|
static java.lang.String |
PRIOR |
static java.lang.String |
PROJECT
"PROJECT" is the projection operator of the relational algebra defined in TTM.
|
static java.lang.String |
RENAME
"RENAME" is the RENAME operator of the relational algebra defined in TTM.
|
static java.lang.String |
RESTRICT
"RESTRICT" is the restriction operator of the relational algebra defined in TTM.
|
static java.lang.String |
SEMIJOIN
"SEMIJOIN" is the MATCHING operator of the relational algebra defined in TTM.
|
static java.lang.String |
SEMIJOINUSING |
static java.lang.String |
SEMIMINUS
"SEMIMINUS" is the NOT MATCHING operator of the relational algebra defined in TTM.
|
static java.lang.String |
SEMIMINUSUSING |
static java.lang.String |
SPAN
"SPAN" is the SPAN interval operator.
|
static NameIdentifier |
SPAN_I |
static java.lang.String |
SPLITBY
"SPLITBY" is the SPLITBY interval operator.
|
static NameIdentifier |
SPLITBY_I |
static java.lang.String |
SPLITS
"SPLITS" is the operator for the SPLITS interval operator.
|
static NameIdentifier |
SPLITS_I |
static java.lang.String |
STARTPOINTOF
"STARTPOINTOF" is the operator for the STARTPOINTOF interval operator.
|
static NameIdentifier |
STARTPOINTOF_I |
static java.lang.String |
SUMMARIZEBY
"SUMMARIZEBY" is the generic summarization operator as supported by SIRA_PRISE.
|
static java.lang.String |
TCLOSE
"TCLOSE" is the transitive closure operator as supported by SIRA_PRISE.
|
static java.lang.String |
TRANSACTION
Deprecated.
deprecated
|
static java.lang.String |
TRANSFORM
|
static java.lang.String |
UNGROUP
"UNGROUP" is the UNGROUPing operator as supported by SIRA_PRISE.
|
static java.lang.String |
UNION
"UNION"
is the union operator of the relational algebra.
|
static java.lang.String |
UNIONUSING |
static java.lang.String |
UNPACK |
static java.lang.String |
WITHIN
"WITHIN" is an interval operator that is equivalent to, in Allen terms, STARTS or DURING or FINISHES or EQUAL.
|
static NameIdentifier |
WITHIN_I |
static java.lang.String |
XMINUS
"XMINUS" is the symmetric difference operator of the relational algebra.
|
static java.lang.String |
XMINUSUSING |
static final java.lang.String AFTER
IntervalAfterOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier AFTER_I
static final java.lang.String AGGREGATE
"AGGREGATE" is the generic aggregation operator as supported by SIRA_PRISE. This operator is defined as follows :
The following rules for "AGGREGATE" derive from this definition :
static final java.lang.String BEFORE
IntervalBeforeOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier BEFORE_I
static final java.lang.String BEGINS
IntervalBeginsOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier BEGINS_I
static final java.lang.String CHOOSE
static final NameIdentifier CHOOSE_I
static final java.lang.String CONTAINS
IntervalContainsOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier CONTAINS_I
static final java.lang.String CONTAINSPOINT
IntervalContainsPointOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier CONTAINSPOINT_I
static final java.lang.String CONTAINSR
static final NameIdentifier CONTAINSR_I
static final java.lang.String CONTAINSRUSING
static final NameIdentifier CONTAINSRUSING_I
static final java.lang.String CONTAINST
static final NameIdentifier CONTAINST_I
static final java.lang.String CONTAINSTUSING
static final NameIdentifier CONTAINSTUSING_I
static final java.lang.String DELETES
static final java.lang.String DELETESBAC
static final java.lang.String DELETESSAC
static final java.lang.String DIVIDEBYPER
static final java.lang.String ENDPOINTOF
IntervalEndPointOfOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier ENDPOINTOF_I
static final java.lang.String ENDS
IntervalEndsOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier ENDS_I
static final java.lang.String EQ
static final NameIdentifier EQ_I
static final java.lang.String EXTEND
"EXTEND" is the EXTEND operator of the relational algebra defined in TTM. This operator is defined as follows :
static final java.lang.String FIRST
static final java.lang.String GAPBETWEEN
IntervalGapBetweenOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier GAPBETWEEN_I
static final java.lang.String GE
static final NameIdentifier GE_I
static final java.lang.String GROUP
"GROUP" is the GROUPing operator as supported by SIRA_PRISE. The operator is defined as follows :
The following rules for "GROUP" derive from this definition :
static final java.lang.String GT
static final NameIdentifier GT_I
static final java.lang.String GTCLOSE
"GTCLOSE" is the generalized transitive closure operator as supported by SIRA_PRISE. The same remark applies as with TCLOSE
about the degree of the relations it applies to.
The SIRA_PRISE version is defined as follows :
TCLOSE
The following rules for "GTCLOSE" derive from this definition :
static final java.lang.String IINTERSECT
IntervalIntersectOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier IINTERSECT_I
static final java.lang.String IMINUS
IntervalMinusOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier IMINUS_I
static final java.lang.String INSERTS
static final java.lang.String INSERTSBAC
static final java.lang.String INSERTSSAC
static final java.lang.String INTERSECT
"INTERSECT" is the intersection operator of the relational algebra. This operator is defined as follows :
The following rules for "INTERSECT" derive from this definition :
"INTERSECT" is associative, so n-adic intersections are possible.
Also observe that this operator is a special case of JOIN, namely that special case where there are neither 'a' attributes nor 'b' attributes, i.e. all attributes are common.
Please note that "INTERSECT" exposes the USING quirk
static final java.lang.String INTERSECTUSING
static final java.lang.String ISEMPTYINTERVAL
IntervalIsEmptyOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier ISEMPTYINTERVAL_I
@Deprecated static final java.lang.String ISINFINITEINTERVAL
IntervalIsEmptyOperatorImplementation.executeOperator(java.util.LinkedList)
@Deprecated static final NameIdentifier ISINFINITEINTERVAL_I
static final java.lang.String ISLOWERBOUNDED
static final NameIdentifier ISLOWERBOUNDED_I
static final java.lang.String ISUPPERBOUNDED
static final NameIdentifier ISUPPERBOUNDED_I
static final java.lang.String IUNION
IntervalUnionOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier IUNION_I
static final java.lang.String JOIN
"JOIN" is the natural-join operator of the relational algebra. This operator is defined as follows :
The following rules for "JOIN" derive from this definition :
"JOIN" is associative, so n-adic joins are possible.
Please note that "JOIN" exposes the USING quirk
static final java.lang.String JOINUSING
static final java.lang.String LAST
static final java.lang.String LE
static final NameIdentifier LE_I
static final java.lang.String LEFTJOIN
"LEFTJOIN" is a "left join" of the relational algebra supported by SIRA_PRISE. This operator is defined as follows :
Note that "LEFTJOIN"(RA,RB,expressions) is equivalent to the following :
The following rules for "LEFTJOIN" derive from this definition :
Please note that "LEFTJOIN" exposes the USING quirk
static final java.lang.String LEFTJOINUSING
static final java.lang.String LENGTH
static final NameIdentifier LENGTH_I
static final java.lang.String LT
static final NameIdentifier LT_I
static final java.lang.String MAX
static final NameIdentifier MAX_I
static final java.lang.String MEETS
IntervalMeetsOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier MEETS_I
static final java.lang.String MERGES
IntervalMergesOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier MERGES_I
static final java.lang.String MIN
static final NameIdentifier MIN_I
static final java.lang.String MINUS
"MINUS" is the difference operator of the relational algebra. This operator is defined as follows :
The following rules for "MINUS" apply :
Please note that "MINUS" exposes the USING quirk
static final java.lang.String MINUSUSING
static final java.lang.String NEXT
static final java.lang.String OVERLAPS
IntervalOverlapsOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier OVERLAPS_I
static final java.lang.String PACK
"PACK" is the PACK operator of the relational algebra defined in TDATRM/TaRT and my paper. This operator is defined as follows :
The following rules for "PACK" derive from this definition :
static final java.lang.String PRIOR
static final java.lang.String PROJECT
"PROJECT" is the projection operator of the relational algebra defined in TTM. This operator is defined as follows :
The following rules for "PROJECT" derive from this definition :
Note that due to automatic PACK
ing of the result, if an intervaltyped attribute is among the the 'O' attributes, a specific flavour of the USING quirk may show.
static final java.lang.String RENAME
"RENAME" is the RENAME operator of the relational algebra defined in TTM. This operator is defined as follows :
The following rules for "RENAME" derive from this definition :
static final java.lang.String RESTRICT
"RESTRICT" is the restriction operator of the relational algebra defined in TTM. This operator is defined as follows :
Note that while the "original" definition of restriction limited the expression to contain no other references than references to attributes of RA, SIRA_PRISE imposes no such restriction. That is, references to database relvars etc. are allowed, and will be evaluated if necessary and as appropriate for each tuple in RA.
static final java.lang.String SEMIJOIN
"SEMIJOIN" is the MATCHING operator of the relational algebra defined in TTM. This operator is defined as follows :
Note that "SEMIJOIN"(RA,RB) is always equivalent to the following two expressions :
The following rules for "SEMIJOIN" derive from this definition :
Please note that "SEMIJOIN" exposes the USING quirk
static final java.lang.String SEMIJOINUSING
static final java.lang.String SEMIMINUS
"SEMIMINUS" is the NOT MATCHING operator of the relational algebra defined in TTM. This operator is defined as follows :
Note that SEMIMINUS(RA,RB) is always equivalent to the following expression :
MINUS
(RA,SEMIJOIN
(RA,RB))The following rules for "SEMIMINUS" derive from this definition :
Please note that "SEMIMINUS" exposes the USING quirk
static final java.lang.String SEMIMINUSUSING
static final java.lang.String SPAN
IntervalSpanOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier SPAN_I
static final java.lang.String SPLITBY
IntervalSplitByOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier SPLITBY_I
static final java.lang.String SPLITS
IntervalSplitsOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier SPLITS_I
static final java.lang.String STARTPOINTOF
IntervalStartPointOfOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier STARTPOINTOF_I
static final java.lang.String SUMMARIZEBY
"SUMMARIZEBY" is the generic summarization operator as supported by SIRA_PRISE. Summarization is more complex than AGGREGATE
, in that it allows to compute aggregations for groups of tuples within a relation, whereas AGGREGATE
always aggregates whole relations. This operator is defined as follows :
AGGREGATE
GROUP
ed such that all the attributes in S are kept, and the remaining attributes are moved inside an RVA named AGGRBASE (this name isn't hardcoded in the system, it's just for explanation purposes. SIRA_PRISE will search a name that's available.).EXTEND
ed with another RVA named AGGR, which is itself the result of applying the aggregations specified in A to the relation-valued attribute AGGRBASE.UNGROUP
ed over the AGGR RVA. Remember that, being the result of an AGGREGATE
invcotion, this RVA is guaranteed to be singleton.The following rules for "SUMMARIZEBY" derive from this definition :
static final java.lang.String TCLOSE
"TCLOSE" is the transitive closure operator as supported by SIRA_PRISE. It deviates slightly from the transitive closure operation defined in TTM, in that :
The SIRA_PRISE version is defined as follows :
The following rules for "TCLOSE" derive from this definition :
@Deprecated static final java.lang.String TRANSACTION
static final java.lang.String TRANSFORM
"TRANSFORM" combines the functionality of the EXTEND
, PROJECT
and RENAME
operators into one. This operator is defined as follows :
EXTEND
list is specified). In this case the attribute name must not appear in R.The following rules for "TRANSFORM" derive from this definition :
static final java.lang.String UNGROUP
"UNGROUP" is the UNGROUPing operator as supported by SIRA_PRISE. The operator is defined as follows :
Observe how the definition implies that if the RVA value in ta is the empty relation, there will be no tuple tr in the result, corresponding to ta.
The following rules for "UNGROUP" derive from this definition :
static final java.lang.String UNION
"UNION" is the union operator of the relational algebra. This operator is defined as follows :
"UNION" is associative, so n-adic unions are possible.
The following rules for "UNION" apply :
Please note that "UNION" exposes the USING quirk
static final java.lang.String UNIONUSING
static final java.lang.String UNPACK
static final java.lang.String WITHIN
IntervalWithinOperatorImplementation.executeOperator(java.util.LinkedList)
static final NameIdentifier WITHIN_I
static final java.lang.String XMINUS
"XMINUS" is the symmetric difference operator of the relational algebra. This operator is defined as follows :
"XMINUS" is associative, so n-adic symmetric difference is possible.
Also note that XMINUS(RA,RB) is semantically equivalent to UNION
(MINUS
(RA,RB),MINUS
(RB,RA)), or alternatively, to MINUS
(UNION
(RA,RB),INTERSECT
(RA,RB)),and can thus be considered a syntactic shorthand for this longer expression.
Consequently, the following rules for "XMINUS" apply :
Please note that "XMINUS" exposes the USING quirk
static final java.lang.String XMINUSUSING