-- Tests for greater-than-or-equal (>=) operator on rdfnode type \pset null NULL -- Numeric comparisons SELECT '"1"^^xsd:int'::rdfnode >= '"2"^^xsd:int'::rdfnode; ?column? ---------- f (1 row) SELECT '"1"^^xsd:int'::rdfnode >= '"1"^^xsd:int'::rdfnode; ?column? ---------- t (1 row) SELECT '"42.0"^^xsd:decimal'::rdfnode >= '"42.1"^^xsd:decimal'::rdfnode; ?column? ---------- f (1 row) SELECT '"42.0"^^xsd:double'::rdfnode >= '"42.0"^^xsd:decimal'::rdfnode; ?column? ---------- t (1 row) SELECT '"0.0"^^xsd:decimal'::rdfnode >= '"-0.0"^^xsd:decimal'::rdfnode; ?column? ---------- t (1 row) SELECT '"1e308"^^xsd:double'::rdfnode >= '"INF"^^xsd:double'::rdfnode; ?column? ---------- f (1 row) SELECT '"42"^^xsd:int'::rdfnode >= '"43"^^xsd:short'::rdfnode; ?column? ---------- f (1 row) SELECT '"42"^^xsd:byte'::rdfnode >= '"42"^^xsd:int'::rdfnode; ?column? ---------- t (1 row) -- Date SELECT '"2020-01-01"^^xsd:date'::rdfnode >= '"2021-01-01"^^xsd:date'::rdfnode; ?column? ---------- f (1 row) -- Datetime SELECT '"2025-04-25T18:45:00"^^xsd:dateTime'::rdfnode >= '"2025-04-25T18:45:00"^^xsd:dateTime'::rdfnode; ?column? ---------- t (1 row) SELECT '"2025-04-25T14:00:00+02:00"^^xsd:dateTime'::rdfnode >= '"2025-04-25T12:00:00Z"^^xsd:dateTime'::rdfnode; ?column? ---------- t (1 row) SELECT '"2025-04-25T12:00:00"^^xsd:dateTime'::rdfnode >= '"2025-04-25T12:00:00Z"^^xsd:dateTime'::rdfnode; ?column? ---------- f (1 row) -- Time SELECT '"10:00:00"^^xsd:time'::rdfnode >= '"11:00:00"^^xsd:time'::rdfnode; ?column? ---------- f (1 row) SELECT '"11:00:00"^^xsd:time'::rdfnode >= '"10:00:00"^^xsd:time'::rdfnode; ?column? ---------- t (1 row) -- timezone-aware ordering SELECT '"10:00:00+02:00"^^xsd:time'::rdfnode >= '"09:00:00+02:00"^^xsd:time'::rdfnode; ?column? ---------- t (1 row) SELECT '"09:00:00+02:00"^^xsd:time'::rdfnode >= '"10:00:00+02:00"^^xsd:time'::rdfnode; ?column? ---------- f (1 row) -- mixed tz/no-tz SELECT '"10:00:00+02:00"^^xsd:time'::rdfnode >= '"10:00:00"^^xsd:time'::rdfnode; ?column? ---------- f (1 row) SELECT '"10:00:00"^^xsd:time'::rdfnode >= '"10:00:00+02:00"^^xsd:time'::rdfnode; ?column? ---------- f (1 row) -- String and simple literals SELECT '"abc"^^xsd:string'::rdfnode >= '"abd"^^xsd:string'::rdfnode; ?column? ---------- f (1 row) SELECT '"abc"^^xsd:string'::rdfnode >= '"abc"^^xsd:string'::rdfnode; ?column? ---------- t (1 row) SELECT '"a"'::rdfnode >= '"b"'::rdfnode; ?column? ---------- f (1 row) SELECT '""^^xsd:string'::rdfnode >= '"a"^^xsd:string'::rdfnode; ?column? ---------- f (1 row) SELECT '"\u00E9"^^xsd:string'::rdfnode >= '"\u00EA"^^xsd:string'::rdfnode; ?column? ---------- f (1 row) -- Language-tagged literals (cannot be compared) SELECT '"a"@en'::rdfnode >= '"b"@en'::rdfnode; ERROR: cannot compare language-tagged literals SELECT '"chat"@en'::rdfnode >= '"chat"@fr'::rdfnode; ERROR: cannot compare language-tagged literals SELECT '"abc"@de'::rdfnode >= '"abc"@en'::rdfnode; ERROR: cannot compare language-tagged literals SELECT '"abc"@en'::rdfnode >= '"abc"@EN'::rdfnode; ERROR: cannot compare language-tagged literals -- xsd:anyURI comparisons SELECT '"http://a"^^xsd:anyURI'::rdfnode >= '"http://b"^^xsd:anyURI'::rdfnode; ?column? ---------- f (1 row) SELECT '"http://a"^^xsd:anyURI'::rdfnode >= '"http://a"^^xsd:anyURI'::rdfnode; ?column? ---------- t (1 row) SELECT '""^^xsd:anyURI'::rdfnode >= '"http://b"^^xsd:anyURI'::rdfnode; ?column? ---------- f (1 row) SELECT '"http://\u00E9"^^xsd:anyURI'::rdfnode >= '"http://\u00EA"^^xsd:anyURI'::rdfnode; ?column? ---------- f (1 row) -- Incompatible datatype comparisons (cannot be compared) SELECT '"41"'::rdfnode >= '"42"^^xsd:int'::rdfnode; ERROR: cannot compare literals of different datatypes SELECT '"abc"^^xsd:string'::rdfnode >= '"2020-01-01"^^xsd:date'::rdfnode; ERROR: cannot compare literals of different datatypes SELECT '"2020-01-01"^^xsd:date'::rdfnode >= '"abc"^^xsd:string'::rdfnode; ERROR: cannot compare literals of different datatypes SELECT '"41"^^xsd:int'::rdfnode >= '"42"^^ex:customDatatype'::rdfnode; ERROR: cannot compare literals of different datatypes -- NaN and infinities SELECT '"42"^^xsd:double'::rdfnode >= '"NaN"^^xsd:double'::rdfnode; ?column? ---------- f (1 row) SELECT '"NaN"^^xsd:double'::rdfnode >= '"NaN"^^xsd:double'::rdfnode; ?column? ---------- f (1 row) SELECT '"NaN"^^xsd:double'::rdfnode >= '"42"^^xsd:double'::rdfnode; ?column? ---------- f (1 row) SELECT '"999999999"^^xsd:double'::rdfnode >= '"INF"^^xsd:double'::rdfnode; ?column? ---------- f (1 row) SELECT '"-999999999"^^xsd:double'::rdfnode >= '"-INF"^^xsd:double'::rdfnode; ?column? ---------- t (1 row) -- Boolean comparisons SELECT '"true"^^xsd:boolean'::rdfnode >= '"false"^^xsd:boolean'::rdfnode; ?column? ---------- t (1 row) SELECT '"false"^^xsd:boolean'::rdfnode >= '"true"^^xsd:boolean'::rdfnode; ?column? ---------- f (1 row) SELECT '"true"^^xsd:boolean'::rdfnode >= '"true"^^xsd:boolean'::rdfnode; ?column? ---------- t (1 row) SELECT '"false"^^xsd:boolean'::rdfnode >= '"false"^^xsd:boolean'::rdfnode; ?column? ---------- t (1 row) -- Durations SELECT '"P1Y"^^xsd:duration'::rdfnode >= '"-P1Y"^^xsd:duration'::rdfnode; ?column? ---------- t (1 row) SELECT '"-P1Y"^^xsd:duration'::rdfnode >= '"P1Y"^^xsd:duration'::rdfnode; ?column? ---------- f (1 row) SELECT '"-P1Y"^^xsd:duration'::rdfnode >= '"-P1Y"^^xsd:duration'::rdfnode; ?column? ---------- t (1 row) SELECT '"-P1Y"^^xsd:duration'::rdfnode >= '"-P2Y"^^xsd:duration'::rdfnode; ?column? ---------- t (1 row) SELECT '"P7D"^^xsd:duration'::rdfnode >= '"P1W"^^xsd:duration'::rdfnode; ?column? ---------- t (1 row) SELECT '"P1M"^^xsd:duration'::rdfnode >= '"P1M"^^xsd:duration'::rdfnode; ?column? ---------- t (1 row) SELECT '"PT0S"^^xsd:duration'::rdfnode >= '"P0D"^^xsd:duration'::rdfnode; ?column? ---------- t (1 row) SELECT '"PT1H"^^xsd:duration'::rdfnode >= '"P1D"^^xsd:duration'::rdfnode; ?column? ---------- f (1 row)