Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Extensions of Operators

The tables provided below provide the definitions of the comparison and arithmetic operations that are implemented by Tentris. The type numeric captures the XSD numeric types. The results of arithmetic operations on numeric types are defined here,

Explicit Casts/Constructor Functions

Tentris supports using any recognized datatype as an explicit cast operator or type constructor.

For example, the expression xsd:int(?arg) produces an xsd:int value when provided with a string or typed literal. If ?arg is bound to a string literal such as "1", the constructor creates a new xsd:int value. If ?arg is bound to a typed literal like "1"^^xsd:short, the expression performs a cast to xsd:int. If the cast/constructor fails to produce a valid literal of the given type, the function produces the error/null/UNDEF value. Note that this example assumes the xsd prefix has been declared in the query.

This feature extends the SPARQL standard, which only includes a limited set of such casts and constructors, namely xsd:boolean(?arg), xsd:string(?arg), xsd:integer(?arg), xsd:decimal(?arg), xsd:double(?arg), xsd:float(?arg), and xsd:dateTime(?arg). For details on xsd datatype construction and casting, refer to XPath 3.1 Constructor functions and Casting respectively.

Comparison Operations

Operation
(=, !=, >, >=, <, <=)
Type(A)Type(B)Result Type
A op Bnumericnumericxsd:boolean
A op Bowl:rationalowl:rationalxsd:boolean
A op Bowl:realowl:realxsd:boolean
A op Bxsd:stringxsd:anyURIxsd:boolean
A op Bxsd:stringxsd:stringxsd:boolean
A op Brdf:langStringrdf:langStringxsd:boolean
A op Bxsd:anyURIxsd:anyURIxsd:boolean
A op Bxsd:anyURIxsd:stringxsd:boolean
A op Bxsd:booleanxsd:booleanxsd:boolean
A op Bxsd:datexsd:datexsd:boolean
A op Bxsd:datexsd:dateTimexsd:boolean
A op Bxsd:datexsd:dateTimeStampxsd:boolean
A op Bxsd:datexsd:gDayxsd:boolean1
A op Bxsd:datexsd:gMonthxsd:boolean1
A op Bxsd:datexsd:gMonthDayxsd:boolean1
A op Bxsd:datexsd:gYearxsd:boolean1
A op Bxsd:datexsd:gYearMonthxsd:boolean1
A op Bxsd:dateTimexsd:datexsd:boolean
A op Bxsd:dateTimexsd:dateTimexsd:boolean
A op Bxsd:dateTimexsd:dateTimeStampxsd:boolean
A op Bxsd:dateTimexsd:gDayxsd:boolean1
A op Bxsd:dateTimexsd:gMonthxsd:boolean1
A op Bxsd:dateTimexsd:gMonthDayxsd:boolean1
A op Bxsd:dateTimexsd:gYearxsd:boolean1
A op Bxsd:dateTimexsd:gYearMonthxsd:boolean1
A op Bxsd:dateTimexsd:timexsd:boolean1
A op Bxsd:dateTimeStampxsd:datexsd:boolean
A op Bxsd:dateTimeStampxsd:dateTimexsd:boolean
A op Bxsd:dateTimeStampxsd:dateTimeStampxsd:boolean
A op Bxsd:dateTimeStampxsd:gDayxsd:boolean1
A op Bxsd:dateTimeStampxsd:gMonthxsd:boolean1
A op Bxsd:dateTimeStampxsd:gMonthDayxsd:boolean1
A op Bxsd:dateTimeStampxsd:gYearxsd:boolean1
A op Bxsd:dateTimeStampxsd:gYearMonthxsd:boolean1
A op Bxsd:dateTimeStampxsd:timexsd:boolean1
A op Bxsd:dayTimeDurationxsd:dayTimeDurationxsd:boolean
A op Bxsd:dayTimeDurationxsd:durationxsd:boolean
A op Bxsd:dayTimeDurationxsd:yearMonthDurationxsd:boolean
A op Bxsd:durationxsd:dayTimeDurationxsd:boolean
A op Bxsd:durationxsd:durationxsd:boolean
A op Bxsd:durationxsd:yearMonthDurationxsd:boolean
A op Bxsd:gDayxsd:datexsd:boolean1
A op Bxsd:gDayxsd:dateTimexsd:boolean1
A op Bxsd:gDayxsd:dateTimeStampxsd:boolean1
A op Bxsd:gDayxsd:gDayxsd:boolean
A op Bxsd:gMonthxsd:datexsd:boolean1
A op Bxsd:gMonthxsd:dateTimexsd:boolean1
A op Bxsd:gMonthxsd:dateTimeStampxsd:boolean1
A op Bxsd:gMonthxsd:gMonthxsd:boolean
A op Bxsd:gMonthDayxsd:datexsd:boolean1
A op Bxsd:gMonthDayxsd:dateTimexsd:boolean1
A op Bxsd:gMonthDayxsd:dateTimeStampxsd:boolean1
A op Bxsd:gMonthDayxsd:gMonthDayxsd:boolean
A op Bxsd:gYearxsd:datexsd:boolean1
A op Bxsd:gYearxsd:dateTimexsd:boolean1
A op Bxsd:gYearxsd:dateTimeStampxsd:boolean1
A op Bxsd:gYearxsd:gYearxsd:boolean
A op Bxsd:gYearMonthxsd:datexsd:boolean1
A op Bxsd:gYearMonthxsd:dateTimexsd:boolean1
A op Bxsd:gYearMonthxsd:dateTimeStampxsd:boolean1
A op Bxsd:gYearMonthxsd:gYearMonthxsd:boolean
A op Bxsd:timexsd:dateTimexsd:boolean1
A op Bxsd:timexsd:dateTimeStampxsd:boolean1
A op Bxsd:timexsd:timexsd:boolean
A op Bxsd:yearMonthDurationxsd:dayTimeDurationxsd:boolean
A op Bxsd:yearMonthDurationxsd:durationxsd:boolean
A op Bxsd:yearMonthDurationxsd:yearMonthDurationxsd:boolean
A op Bxsd:hexBinaryxsd:hexBinaryxsd:boolean
A op Bxsd:base64Binaryxsd:base64Binaryxsd:boolean

Arithmetic Operations

For date and time types, Tentris uses and extends the definitions of XPath.

Addition

OperationType(A)Type(B)Result Type
A + Bnumericnumericnumeric
A + Bxsd:datexsd:dayTimeDurationxsd:date
A + Bxsd:datexsd:durationxsd:date
A + Bxsd:datexsd:yearMonthDurationxsd:date
A + Bxsd:dateTimexsd:dayTimeDurationxsd:dateTime
A + Bxsd:dateTimexsd:durationxsd:dateTime
A + Bxsd:dateTimexsd:yearMonthDurationxsd:dateTime
A + Bxsd:dateTimeStampxsd:dayTimeDurationxsd:dateTimeStamp
A + Bxsd:dateTimeStampxsd:durationxsd:dateTimeStamp
A + Bxsd:dateTimeStampxsd:yearMonthDurationxsd:dateTimeStamp
A + Bxsd:dayTimeDurationxsd:dayTimeDurationxsd:dayTimeDuration
A + Bxsd:dayTimeDurationxsd:durationxsd:duration
A + Bxsd:dayTimeDurationxsd:yearMonthDurationxsd:duration
A + Bxsd:durationxsd:dayTimeDurationxsd:duration
A + Bxsd:durationxsd:durationxsd:duration
A + Bxsd:durationxsd:yearMonthDurationxsd:duration
A + Bxsd:timexsd:dayTimeDurationxsd:time
A + Bxsd:yearMonthDurationxsd:dayTimeDurationxsd:duration
A + Bxsd:yearMonthDurationxsd:durationxsd:duration
A + Bxsd:yearMonthDurationxsd:yearMonthDurationxsd:yearMonthDuration

Subtraction

OperationType(A)Type(B)Result Type
A - Bnumericnumericnumeric
A - Bxsd:datexsd:datexsd:dayTimeDuration
A - Bxsd:datexsd:dateTimexsd:dayTimeDuration
A - Bxsd:datexsd:dateTimeStampxsd:dayTimeDuration
A - Bxsd:datexsd:dayTimeDurationxsd:date
A - Bxsd:datexsd:durationxsd:date
A - Bxsd:datexsd:yearMonthDurationxsd:date
A - Bxsd:dateTimexsd:datexsd:dayTimeDuration
A - Bxsd:dateTimexsd:dateTimexsd:dayTimeDuration
A - Bxsd:dateTimexsd:dateTimeStampxsd:dayTimeDuration
A - Bxsd:dateTimexsd:dayTimeDurationxsd:dateTime
A - Bxsd:dateTimexsd:durationxsd:dateTime
A - Bxsd:dateTimexsd:timexsd:dayTimeDuration
A - Bxsd:dateTimexsd:yearMonthDurationxsd:dateTime
A - Bxsd:dateTimeStampxsd:datexsd:dayTimeDuration
A - Bxsd:dateTimeStampxsd:dateTimexsd:dayTimeDuration
A - Bxsd:dateTimeStampxsd:dateTimeStampxsd:dayTimeDuration
A - Bxsd:dateTimeStampxsd:dayTimeDurationxsd:dateTimeStamp
A - Bxsd:dateTimeStampxsd:durationxsd:dateTimeStamp
A - Bxsd:dateTimeStampxsd:timexsd:dayTimeDuration
A - Bxsd:dateTimeStampxsd:yearMonthDurationxsd:dateTimeStamp
A - Bxsd:dayTimeDurationxsd:dayTimeDurationxsd:dayTimeDuration
A - Bxsd:dayTimeDurationxsd:durationxsd:duration
A - Bxsd:durationxsd:dayTimeDurationxsd:duration
A - Bxsd:durationxsd:durationxsd:duration
A - Bxsd:durationxsd:yearMonthDurationxsd:duration
A - Bxsd:timexsd:dateTimexsd:dayTimeDuration
A - Bxsd:timexsd:dateTimeStampxsd:dayTimeDuration
A - Bxsd:timexsd:dayTimeDurationxsd:time
A - Bxsd:timexsd:timexsd:dayTimeDuration
A - Bxsd:yearMonthDurationxsd:durationxsd:duration
A - Bxsd:yearMonthDurationxsd:yearMonthDurationxsd:yearMonthDuration

Multiplication

OperationType(A)Type(B)Result Type
A * Bnumericnumericnumeric
A * Bxsd:dayTimeDurationnumericxsd:dayTimeDuration
A * Bxsd:durationnumericxsd:duration
A * Bxsd:yearMonthDurationnumericxsd:yearMonthDuration

Division

OperationType(A)Type(B)Result Type
A/Bnumericnumericnumeric
A/Bxsd:dayTimeDurationnumericxsd:dayTimeDuration
A/Bxsd:dayTimeDurationxsd:dayTimeDurationxsd:decimal
A/Bxsd:yearMonthDurationnumericxsd:yearMonthDuration
A/Bxsd:yearMonthDurationxsd:yearMonthDurationxsd:decimal

  1. These comparisons will be removed in next releases to follow the XPath specification. ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21 ↩22 ↩23 ↩24 ↩25 ↩26 ↩27 ↩28 ↩29 ↩30 ↩31 ↩32 ↩33 ↩34