\pset null '(null)' CREATE SERVER virtuoso FOREIGN DATA WRAPPER rdf_fdw OPTIONS ( endpoint 'http://virtuoso:8890/sparql-auth'); CREATE FOREIGN TABLE ft ( subject rdfnode OPTIONS (variable '?s'), predicate rdfnode OPTIONS (variable '?p'), object rdfnode OPTIONS (variable '?o') ) SERVER virtuoso OPTIONS ( log_sparql 'true', sparql 'SELECT * { GRAPH {?s ?p ?o} }', sparql_update_pattern 'GRAPH { ?s ?p ?o . }' ); CREATE USER MAPPING FOR postgres SERVER virtuoso OPTIONS (user 'dba', password 'secret'); INSERT INTO ft (subject, predicate, object) VALUES ('', '', '"Westfälische Wilhelms-Universität Münster"@de'), ('', '', '"University of Münster"@en'), ('', '', '"Univerrrsity of Münsterrr"@en-US'), ('', '', '"Univêrsity of Münsta"@en-GB'), ('', '', '"1780-04-16"^^'), ('', '', '"2025-12-24T18:30:42"^^'), ('', '', '"2025-12-24T13:00:42Z"^^'), ('', '', '"51.9636"^^'), ('', '', '"7.6136"^^'), ('', '', '"Johannes Wessels"'), ('', '', ''), ('', '', ''), ('', '', '"Hello 👋 PostgreSQL 🐘"@en'), ('', '', '"unknown literal type"^^'), ('', '', '"explicit string literal"^^'), ('', '', '""'), ('', '', '". <= pontos => ."@pt'), ('', '', '"\n <= salto de línea => \n"@es'), ('', '', '"\" <= double-quotes => \""@en'), ('', '', '"\t <= Tabulatorzeichen => \t"@de'), ('', '', '"日本"@jp'), ('', '', '"ישראל"@il'), ('', '', '"1924"^^'), ('', '', '"49098"^^'), ('', '', '"4956"^^'), ('', '', '"803600000"^^'), ('', '', '"1500.00"^^'), ('', '', '"9999999999999999999"^^'), ('', '', '"0.000000000000001"^^'), ('', '', '"2024-02-29"^^'), ('', '', '"true"^^'); INFO: SPARQL query sent to 'virtuoso': INSERT DATA { GRAPH { "Westfälische Wilhelms-Universität Münster"@de . } }; INSERT DATA { GRAPH { "University of Münster"@en . } }; INSERT DATA { GRAPH { "Univerrrsity of Münsterrr"@en-US . } }; INSERT DATA { GRAPH { "Univêrsity of Münsta"@en-GB . } }; INSERT DATA { GRAPH { "1780-04-16"^^ . } }; INSERT DATA { GRAPH { "2025-12-24T18:30:42"^^ . } }; INSERT DATA { GRAPH { "2025-12-24T13:00:42Z"^^ . } }; INSERT DATA { GRAPH { "51.9636"^^ . } }; INSERT DATA { GRAPH { "7.6136"^^ . } }; INSERT DATA { GRAPH { "Johannes Wessels" . } }; INSERT DATA { GRAPH { . } }; INSERT DATA { GRAPH { . } }; INSERT DATA { GRAPH { "Hello 👋 PostgreSQL 🐘"@en . } }; INSERT DATA { GRAPH { "unknown literal type"^^ . } }; INSERT DATA { GRAPH { "explicit string literal"^^ . } }; INSERT DATA { GRAPH { "" . } }; INSERT DATA { GRAPH { ". <= pontos => ."@pt . } }; INSERT DATA { GRAPH { "\n <= salto de línea => \n"@es . } }; INSERT DATA { GRAPH { "\" <= double-quotes => \""@en . } }; INSERT DATA { GRAPH { "\t <= Tabulatorzeichen => \t"@de . } }; INSERT DATA { GRAPH { "日本"@jp . } }; INSERT DATA { GRAPH { "ישראל"@il . } }; INSERT DATA { GRAPH { "1924"^^ . } }; INSERT DATA { GRAPH { "49098"^^ . } }; INSERT DATA { GRAPH { "4956"^^ . } }; INSERT DATA { GRAPH { "803600000"^^ . } }; INSERT DATA { GRAPH { "1500.00"^^ . } }; INSERT DATA { GRAPH { "9999999999999999999"^^ . } }; INSERT DATA { GRAPH { "0.000000000000001"^^ . } }; INSERT DATA { GRAPH { "2024-02-29"^^ . } }; INSERT DATA { GRAPH { "true"^^ . } }; SELECT * FROM ft WHERE subject = '' ORDER BY predicate; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } ORDER BY ASC (?p) INFO: SPARQL returned 31 records. subject | predicate | object -------------------------------+---------------------------------------------------+---------------------------------------------------------------------- | | "true"^^ | | "2024-02-29"^^ | | "2025-12-24T13:00:42Z"^^ | | "4956"^^ | | "1924"^^ | | "803600000"^^ | | | | "1780-04-16"^^ | | "2025-12-24T18:30:42"^^ | | "Westfälische Wilhelms-Universität Münster"@de | | "University of Münster"@en | | "Univerrrsity of Münsterrr"@en-us | | "Univêrsity of Münsta"@en-gb | | "Johannes Wessels" | | | | "49098"^^ | | "1500.0"^^ | | "9999999999999999999"^^ | | "0.000000000000001"^^ | | "" | | "Hello 👋 PostgreSQL 🐘"@en | | "unknown literal type"^^ | | "explicit string literal"^^ | | ". <= pontos => ."@pt | | " + | | <= salto de línea => + | | "@es | | "\" <= double-quotes => \""@en | | " <= Tabulatorzeichen => "@de | | "日本"@jp | | "ישראל"@il | | "51.9636"^^ | | "7.6136"^^ (31 rows) /* SPARQL 17.4.1.7 - RDFterm-equal */ SELECT * FROM ft WHERE sparql.sameterm(object, sparql.iri('http://dbpedia.org/resource/North_Rhine-Westphalia')); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(SAMETERM(?o, )) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-------------------------------------+------------------------------------------------------ | | (1 row) /* SPARQL 17.4.1.9 - IN */ SELECT * FROM ft WHERE object IN (sparql.iri('http://dbpedia.org/resource/North_Rhine-Westphalia'), sparql.iri('http://dbpedia.org/resource/Münster')); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o IN (, )) } INFO: SPARQL returned 2 records. subject | predicate | object -------------------------------+-------------------------------------+------------------------------------------------------ | | | | (2 rows) SELECT * FROM ft WHERE object IN (sparql.strlang('日本','jp'), sparql.strlang('ישראל','il')); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o IN ("日本"@jp, "ישראל"@il)) } INFO: SPARQL returned 2 records. subject | predicate | object -------------------------------+------------------------------------------------+------------ | | "日本"@jp | | "ישראל"@il (2 rows) CREATE TEMPORARY TABLE tmp (c rdfnode, o rdfnode); INSERT INTO tmp (c, o) VALUES (8036::rdfnode,''); SELECT * FROM ft WHERE object IN (SELECT o FROM tmp); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} } INFO: SPARQL returned 31 records. subject | predicate | object -------------------------------+-------------------------------------+------------------------------------------------------ | | (1 row) SELECT ft.* FROM ft, tmp WHERE object IN (tmp.o, 'Some Other Literal'::rdfnode, sparql.strdt(sparql.concat(tmp.c, '00000'::rdfnode), 'http://www.w3.org/2001/XMLSchema#long')) AND subject = ''; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } INFO: SPARQL returned 31 records. subject | predicate | object -------------------------------+--------------------------------------+--------------------------------------------------------- | | | | "803600000"^^ (2 rows) /* SPARQL 17.4.1.10 - NOT IN */ SELECT * FROM ft WHERE subject = '' AND predicate NOT IN ('', ''); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) FILTER(?p NOT IN (, )) } INFO: SPARQL returned 17 records. subject | predicate | object -------------------------------+---------------------------------------------------+--------------------------------------------------------------------- | | "1780-04-16"^^ | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ | | "51.9636"^^ | | "7.6136"^^ | | "Johannes Wessels" | | | | | | "1924"^^ | | "49098"^^ | | "4956"^^ | | "803600000"^^ | | "1500.0"^^ | | "9999999999999999999"^^ | | "0.000000000000001"^^ | | "2024-02-29"^^ | | "true"^^ (17 rows) /* SPARQL 18.2.5.3 - DISTINCT */ SELECT DISTINCT predicate FROM ft ORDER BY predicate; INFO: SPARQL query sent to 'virtuoso': SELECT DISTINCT ?p { GRAPH {?s ?p ?o} } ORDER BY ASC (?p) INFO: SPARQL returned 19 records. predicate --------------------------------------------------- (19 rows) SELECT DISTINCT object FROM ft WHERE sparql.lang(object) = 'de'; INFO: SPARQL query sent to 'virtuoso': SELECT DISTINCT ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(LANG(?o) = "de") } ORDER BY ASC (?o) INFO: SPARQL returned 2 records. object ------------------------------------------------ " <= Tabulatorzeichen => "@de "Westfälische Wilhelms-Universität Münster"@de (2 rows) /* SPARQL 15.5 - LIMIT */ SELECT * FROM ft WHERE subject = '' FETCH FIRST ROW ONLY; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } LIMIT 1 INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------------------+-------- | | "" (1 row) SELECT * FROM ft WHERE subject = '' FETCH FIRST 3 ROWS ONLY; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } LIMIT 3 INFO: SPARQL returned 3 records. subject | predicate | object -------------------------------+------------------------------------------------+-------------------------------------------------------------------- | | "" | | "Hello 👋 PostgreSQL 🐘"@en | | "unknown literal type"^^ (3 rows) SELECT * FROM ft WHERE subject = '' LIMIT 3; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } LIMIT 3 INFO: SPARQL returned 3 records. subject | predicate | object -------------------------------+------------------------------------------------+-------------------------------------------------------------------- | | "" | | "Hello 👋 PostgreSQL 🐘"@en | | "unknown literal type"^^ (3 rows) /* SPARQL 15.4 - OFFSET */ SELECT * FROM ft WHERE subject = '' OFFSET 2 FETCH FIRST 3 ROWS ONLY; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } LIMIT 5 INFO: SPARQL returned 5 records. subject | predicate | object -------------------------------+------------------------------------------------+---------------------------------------------------------------------- | | "unknown literal type"^^ | | "explicit string literal"^^ | | ". <= pontos => ."@pt (3 rows) SELECT * FROM ft WHERE subject = '' OFFSET 2 LIMIT 3; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } LIMIT 5 INFO: SPARQL returned 5 records. subject | predicate | object -------------------------------+------------------------------------------------+---------------------------------------------------------------------- | | "unknown literal type"^^ | | "explicit string literal"^^ | | ". <= pontos => ."@pt (3 rows) /* SPARQL 15.1 - ORDER BY */ SELECT * FROM ft WHERE subject = '' ORDER BY object ASC FETCH FIRST 3 ROWS ONLY; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } ORDER BY ASC (?o) LIMIT 3 INFO: SPARQL returned 3 records. subject | predicate | object -------------------------------+------------------------------------------------+----------------------------------------------------------------- | | "" | | "0.000000000000001"^^ | | "Johannes Wessels" (3 rows) SELECT * FROM ft WHERE subject = '' ORDER BY object DESC FETCH FIRST 3 ROWS ONLY; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } ORDER BY DESC (?o) LIMIT 3 INFO: SPARQL returned 3 records. subject | predicate | object -------------------------------+-----------------------------------------------+------------------------------------------------------------------- | | "9999999999999999999"^^ | | "803600000"^^ | | "2024-02-29"^^ (3 rows) SELECT * FROM ft WHERE subject = '' ORDER BY object, predicate FETCH FIRST 3 ROWS ONLY; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } ORDER BY ASC (?o) ASC (?p) LIMIT 3 INFO: SPARQL returned 3 records. subject | predicate | object -------------------------------+------------------------------------------------+----------------------------------------------------------------- | | "" | | "0.000000000000001"^^ | | "Johannes Wessels" (3 rows) SELECT * FROM ft WHERE subject = '' ORDER BY object DESC, predicate ASC FETCH FIRST 3 ROWS ONLY; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } ORDER BY DESC (?o) ASC (?p) LIMIT 3 INFO: SPARQL returned 3 records. subject | predicate | object -------------------------------+-----------------------------------------------+------------------------------------------------------------------- | | "9999999999999999999"^^ | | "803600000"^^ | | "2024-02-29"^^ (3 rows) /* SPARQL 18.2.5.3 - DISTINCT */ SELECT DISTINCT subject FROM ft WHERE subject = sparql.iri('https://www.uni-muenster.de'); INFO: SPARQL query sent to 'virtuoso': SELECT DISTINCT ?s { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } ORDER BY ASC (?s) INFO: SPARQL returned 1 record. subject ------------------------------- (1 row) SELECT DISTINCT ON (predicate) predicate, object -- DISTINCT ON not supported in SPARQL FROM ft WHERE subject = sparql.iri('https://www.uni-muenster.de'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } ORDER BY ASC (?p) INFO: SPARQL returned 31 records. predicate | object ---------------------------------------------------+--------------------------------------------------------------------- | "true"^^ | "2024-02-29"^^ | "2025-12-24T13:00:42Z"^^ | "4956"^^ | "1924"^^ | "803600000"^^ | | "1780-04-16"^^ | "2025-12-24T18:30:42"^^ | "Westfälische Wilhelms-Universität Münster"@de | "Johannes Wessels" | | "49098"^^ | "1500.0"^^ | "9999999999999999999"^^ | "0.000000000000001"^^ | "" | "51.9636"^^ | "7.6136"^^ (19 rows) /* SPARQL - 17.3 Operator Mapping (text) */ SELECT * FROM ft WHERE predicate = '' AND sparql.str(object) >= 'Westfälische' AND sparql.str(object) <= 'Westfälische ZZZ' AND sparql.str(object) BETWEEN 'Westfälische' AND 'Westfälische ZZZ'; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) FILTER(STR(?o) >= "Westfälische") FILTER(STR(?o) <= "Westfälische ZZZ") FILTER(STR(?o) >= "Westfälische") FILTER(STR(?o) <= "Westfälische ZZZ") } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de (1 row) /* SPARQL - 17.3 Operator Mapping (rdfnode) */ SELECT * FROM ft WHERE predicate = ''::rdfnode AND sparql.str(object) >= 'Westfälische'::rdfnode AND sparql.str(object) <= 'Westfälische ZZZ'::rdfnode AND sparql.str(object) BETWEEN 'Westfälische'::rdfnode AND 'Westfälische ZZZ'::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) FILTER(STR(?o) >= "Westfälische") FILTER(STR(?o) <= "Westfälische ZZZ") FILTER(STR(?o) >= "Westfälische") FILTER(STR(?o) <= "Westfälische ZZZ") } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de (1 row) /* SPARQL - 17.3 Operator Mapping (rdfnode, plain literal) */ SELECT * FROM ft WHERE object = 'Johannes Wessels'::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = "Johannes Wessels") } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+--------------------------------------+-------------------- | | "Johannes Wessels" (1 row) /* SPARQL - 17.3 Operator Mapping (rdfnode, typed literal) */ SELECT * FROM ft WHERE object = sparql.strdt('Johannes Wessels', 'http://www.w3.org/2001/XMLSchema#string'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = "Johannes Wessels"^^) } INFO: SPARQL returned 0 records. subject | predicate | object ---------+-----------+-------- (0 rows) /* SPARQL - 17.3 Operator Mapping (smallint) */ SELECT * FROM ft WHERE object = 1924::smallint; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = 1924) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+---------------------------------------------------+---------------------------------------------------- | | "1924"^^ (1 row) SELECT * FROM ft WHERE object > 1900::smallint; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o > 1900) } INFO: SPARQL returned 26 records. subject | predicate | object -------------------------------+---------------------------------------------------+---------------------------------------------------------------------- | | "" | | "Hello 👋 PostgreSQL 🐘"@en | | "unknown literal type"^^ | | "explicit string literal"^^ | | ". <= pontos => ."@pt | | " + | | <= salto de línea => + | | "@es | | "\" <= double-quotes => \""@en | | " <= Tabulatorzeichen => "@de | | "日本"@jp | | "ישראל"@il | | "Westfälische Wilhelms-Universität Münster"@de | | "University of Münster"@en | | "Univerrrsity of Münsterrr"@en-us | | "Univêrsity of Münsta"@en-gb | | "1780-04-16"^^ | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ | | "Johannes Wessels" | | | | | | "1924"^^ | | "49098"^^ | | "4956"^^ | | "803600000"^^ | | "9999999999999999999"^^ | | "2024-02-29"^^ (26 rows) SELECT * FROM ft WHERE object < 2000::smallint; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o < 2000) } INFO: SPARQL returned 6 records. subject | predicate | object -------------------------------+---------------------------------------------------+----------------------------------------------------------------- | | "51.9636"^^ | | "7.6136"^^ | | "1924"^^ | | "1500.0"^^ | | "0.000000000000001"^^ | | "true"^^ (6 rows) SELECT * FROM ft WHERE object BETWEEN 1900::smallint AND 2000::smallint; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o >= 1900) FILTER(?o <= 2000) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+---------------------------------------------------+-------------------------------------------------- | | "1924"^^ (1 row) /* SPARQL - 17.3 Operator Mapping (int) */ SELECT * FROM ft WHERE object = 49098::int; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = 49098) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+----------------------------------------+----------------------------------------------------- | | "49098"^^ (1 row) SELECT * FROM ft WHERE object > 40000::int; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o > 40000) } INFO: SPARQL returned 24 records. subject | predicate | object -------------------------------+-------------------------------------------------+---------------------------------------------------------------------- | | "" | | "Hello 👋 PostgreSQL 🐘"@en | | "unknown literal type"^^ | | "explicit string literal"^^ | | ". <= pontos => ."@pt | | " + | | <= salto de línea => + | | "@es | | "\" <= double-quotes => \""@en | | " <= Tabulatorzeichen => "@de | | "日本"@jp | | "ישראל"@il | | "Westfälische Wilhelms-Universität Münster"@de | | "University of Münster"@en | | "Univerrrsity of Münsterrr"@en-us | | "Univêrsity of Münsta"@en-gb | | "1780-04-16"^^ | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ | | "Johannes Wessels" | | | | | | "49098"^^ | | "803600000"^^ | | "9999999999999999999"^^ | | "2024-02-29"^^ (24 rows) SELECT * FROM ft WHERE object < 60000::int; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o < 60000) } INFO: SPARQL returned 8 records. subject | predicate | object -------------------------------+---------------------------------------------------+----------------------------------------------------------------- | | "51.9636"^^ | | "7.6136"^^ | | "1924"^^ | | "49098"^^ | | "4956"^^ | | "1500.0"^^ | | "0.000000000000001"^^ | | "true"^^ (8 rows) SELECT * FROM ft WHERE object BETWEEN 40000::int AND 60000::int; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o >= 40000) FILTER(?o <= 60000) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+----------------------------------------+------------------------------------------------- | | "49098"^^ (1 row) /* SPARQL - 17.3 Operator Mapping (bigint) */ SELECT * FROM ft WHERE object = 803600000::bigint; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = 803600000) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+--------------------------------------+--------------------------------------------------------- | | "803600000"^^ (1 row) SELECT * FROM ft WHERE object > 800000000::bigint; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o > 800000000) } INFO: SPARQL returned 23 records. subject | predicate | object -------------------------------+-------------------------------------------------+---------------------------------------------------------------------- | | "" | | "Hello 👋 PostgreSQL 🐘"@en | | "unknown literal type"^^ | | "explicit string literal"^^ | | ". <= pontos => ."@pt | | " + | | <= salto de línea => + | | "@es | | "\" <= double-quotes => \""@en | | " <= Tabulatorzeichen => "@de | | "日本"@jp | | "ישראל"@il | | "Westfälische Wilhelms-Universität Münster"@de | | "University of Münster"@en | | "Univerrrsity of Münsterrr"@en-us | | "Univêrsity of Münsta"@en-gb | | "1780-04-16"^^ | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ | | "Johannes Wessels" | | | | | | "803600000"^^ | | "9999999999999999999"^^ | | "2024-02-29"^^ (23 rows) SELECT * FROM ft WHERE object < 900000000::bigint; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o < 900000000) } INFO: SPARQL returned 9 records. subject | predicate | object -------------------------------+---------------------------------------------------+----------------------------------------------------------------- | | "51.9636"^^ | | "7.6136"^^ | | "1924"^^ | | "49098"^^ | | "4956"^^ | | "803600000"^^ | | "1500.0"^^ | | "0.000000000000001"^^ | | "true"^^ (9 rows) SELECT * FROM ft WHERE object BETWEEN 800000000::bigint AND 900000000::bigint; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o >= 800000000) FILTER(?o <= 900000000) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+--------------------------------------+--------------------------------------------------------- | | "803600000"^^ (1 row) /* SPARQL - 17.3 Operator Mapping (real) */ SELECT * FROM ft WHERE object = 51.9636::real; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = 51.9636) } INFO: SPARQL returned 0 records. subject | predicate | object ---------+-----------+-------- (0 rows) SELECT * FROM ft WHERE object > 50.0::real; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o > 50) } INFO: SPARQL returned 28 records. subject | predicate | object -------------------------------+---------------------------------------------------+---------------------------------------------------------------------- | | "" | | "Hello 👋 PostgreSQL 🐘"@en | | "unknown literal type"^^ | | "explicit string literal"^^ | | ". <= pontos => ."@pt | | " + | | <= salto de línea => + | | "@es | | "\" <= double-quotes => \""@en | | " <= Tabulatorzeichen => "@de | | "日本"@jp | | "ישראל"@il | | "Westfälische Wilhelms-Universität Münster"@de | | "University of Münster"@en | | "Univerrrsity of Münsterrr"@en-us | | "Univêrsity of Münsta"@en-gb | | "1780-04-16"^^ | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ | | "51.9636"^^ | | "Johannes Wessels" | | | | | | "1924"^^ | | "49098"^^ | | "4956"^^ | | "803600000"^^ | | "1500.0"^^ | | "9999999999999999999"^^ | | "2024-02-29"^^ (28 rows) SELECT * FROM ft WHERE object < 52.0::real; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o < 52) } INFO: SPARQL returned 4 records. subject | predicate | object -------------------------------+------------------------------------------------+----------------------------------------------------------------- | | "51.9636"^^ | | "7.6136"^^ | | "0.000000000000001"^^ | | "true"^^ (4 rows) SELECT * FROM ft WHERE object BETWEEN 50.0::real AND 52.0::real; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o >= 50) FILTER(?o <= 52) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-----------------------------------------------+----------------------------------------------------- | | "51.9636"^^ (1 row) /* SPARQL - 17.3 Operator Mapping (double precision) */ SELECT * FROM ft WHERE object = 51.9636::double precision; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = 51.9636) } INFO: SPARQL returned 0 records. subject | predicate | object ---------+-----------+-------- (0 rows) SELECT * FROM ft WHERE object > 50.0::double precision; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o > 50) } INFO: SPARQL returned 28 records. subject | predicate | object -------------------------------+---------------------------------------------------+---------------------------------------------------------------------- | | "" | | "Hello 👋 PostgreSQL 🐘"@en | | "unknown literal type"^^ | | "explicit string literal"^^ | | ". <= pontos => ."@pt | | " + | | <= salto de línea => + | | "@es | | "\" <= double-quotes => \""@en | | " <= Tabulatorzeichen => "@de | | "日本"@jp | | "ישראל"@il | | "Westfälische Wilhelms-Universität Münster"@de | | "University of Münster"@en | | "Univerrrsity of Münsterrr"@en-us | | "Univêrsity of Münsta"@en-gb | | "1780-04-16"^^ | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ | | "51.9636"^^ | | "Johannes Wessels" | | | | | | "1924"^^ | | "49098"^^ | | "4956"^^ | | "803600000"^^ | | "1500.0"^^ | | "9999999999999999999"^^ | | "2024-02-29"^^ (28 rows) SELECT * FROM ft WHERE object < 52.0::double precision; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o < 52) } INFO: SPARQL returned 4 records. subject | predicate | object -------------------------------+------------------------------------------------+----------------------------------------------------------------- | | "51.9636"^^ | | "7.6136"^^ | | "0.000000000000001"^^ | | "true"^^ (4 rows) SELECT * FROM ft WHERE object BETWEEN 50.0::double precision AND 52.0::double precision; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o >= 50) FILTER(?o <= 52) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-----------------------------------------------+----------------------------------------------------- | | "51.9636"^^ (1 row) /* SPARQL - 17.3 Operator Mapping (numeric) */ SELECT * FROM ft WHERE object = 51.9636::numeric::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = "51.9636"^^) } INFO: SPARQL returned 0 records. subject | predicate | object ---------+-----------+-------- (0 rows) SELECT * FROM ft WHERE object > 50.0::numeric::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o > "50.0"^^) } INFO: SPARQL returned 28 records. subject | predicate | object -------------------------------+---------------------------------------------------+---------------------------------------------------------------------- | | "" | | "Hello 👋 PostgreSQL 🐘"@en | | "unknown literal type"^^ | | "explicit string literal"^^ | | ". <= pontos => ."@pt | | " + | | <= salto de línea => + | | "@es | | "\" <= double-quotes => \""@en | | " <= Tabulatorzeichen => "@de | | "日本"@jp | | "ישראל"@il | | "Westfälische Wilhelms-Universität Münster"@de | | "University of Münster"@en | | "Univerrrsity of Münsterrr"@en-us | | "Univêrsity of Münsta"@en-gb | | "1780-04-16"^^ | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ | | "51.9636"^^ | | "Johannes Wessels" | | | | | | "1924"^^ | | "49098"^^ | | "4956"^^ | | "803600000"^^ | | "1500.0"^^ | | "9999999999999999999"^^ | | "2024-02-29"^^ (28 rows) SELECT * FROM ft WHERE object < 52.0::numeric::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o < "52.0"^^) } INFO: SPARQL returned 4 records. subject | predicate | object -------------------------------+------------------------------------------------+----------------------------------------------------------------- | | "51.9636"^^ | | "7.6136"^^ | | "0.000000000000001"^^ | | "true"^^ (4 rows) SELECT * FROM ft WHERE object BETWEEN 50.0::numeric::rdfnode AND 52.0::numeric::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o >= "50.0"^^) FILTER(?o <= "52.0"^^) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-----------------------------------------------+----------------------------------------------------- | | "51.9636"^^ (1 row) /* SPARQL - 17.3 Operator Mapping (timestamp) */ SELECT * FROM ft WHERE object = '2025-12-24 18:30:42'::timestamp; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = "2025-12-24T18:30:42"^^) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+----------------------------------------+-------------------------------------------------------------------- | | "2025-12-24T18:30:42"^^ (1 row) SELECT * FROM ft WHERE object > '2025-01-01 00:00:00'::timestamp; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o > "2025-01-01T00:00:00"^^) } INFO: SPARQL returned 19 records. subject | predicate | object -------------------------------+-------------------------------------------------+---------------------------------------------------------------------- | | "" | | "Hello 👋 PostgreSQL 🐘"@en | | "unknown literal type"^^ | | "explicit string literal"^^ | | ". <= pontos => ."@pt | | " + | | <= salto de línea => + | | "@es | | "\" <= double-quotes => \""@en | | " <= Tabulatorzeichen => "@de | | "日本"@jp | | "ישראל"@il | | "Westfälische Wilhelms-Universität Münster"@de | | "University of Münster"@en | | "Univerrrsity of Münsterrr"@en-us | | "Univêrsity of Münsta"@en-gb | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ | | "Johannes Wessels" | | | | (19 rows) SELECT * FROM ft WHERE object < '2025-12-31 23:59:59'::timestamp; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o < "2025-12-31T23:59:59"^^) } INFO: SPARQL returned 14 records. subject | predicate | object -------------------------------+---------------------------------------------------+--------------------------------------------------------------------- | | "1780-04-16"^^ | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ | | "51.9636"^^ | | "7.6136"^^ | | "1924"^^ | | "49098"^^ | | "4956"^^ | | "803600000"^^ | | "1500.0"^^ | | "9999999999999999999"^^ | | "0.000000000000001"^^ | | "2024-02-29"^^ | | "true"^^ (14 rows) SELECT * FROM ft WHERE object BETWEEN '2025-01-01 00:00:00'::timestamp AND '2025-12-31 23:59:59'::timestamp; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o >= "2025-01-01T00:00:00"^^) FILTER(?o <= "2025-12-31T23:59:59"^^) } INFO: SPARQL returned 2 records. subject | predicate | object -------------------------------+-------------------------------------------------+--------------------------------------------------------------------- | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ (2 rows) /* SPARQL - 17.3 Operator Mapping (timestamptz) */ SELECT * FROM ft WHERE object = '"2025-12-24T13:00:42+00:00"^^'::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = "2025-12-24T13:00:42+00:00"^^) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-------------------------------------------------+--------------------------------------------------------------------- | | "2025-12-24T13:00:42Z"^^ (1 row) SELECT * FROM ft WHERE object > '"2025-01-01T00:00:00+00:00"^^'::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o > "2025-01-01T00:00:00+00:00"^^) } INFO: SPARQL returned 19 records. subject | predicate | object -------------------------------+-------------------------------------------------+---------------------------------------------------------------------- | | "" | | "Hello 👋 PostgreSQL 🐘"@en | | "unknown literal type"^^ | | "explicit string literal"^^ | | ". <= pontos => ."@pt | | " + | | <= salto de línea => + | | "@es | | "\" <= double-quotes => \""@en | | " <= Tabulatorzeichen => "@de | | "日本"@jp | | "ישראל"@il | | "Westfälische Wilhelms-Universität Münster"@de | | "University of Münster"@en | | "Univerrrsity of Münsterrr"@en-us | | "Univêrsity of Münsta"@en-gb | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ | | "Johannes Wessels" | | | | (19 rows) SELECT * FROM ft WHERE object < '"2025-12-31T23:59:59+00:00"^^'::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o < "2025-12-31T23:59:59+00:00"^^) } INFO: SPARQL returned 14 records. subject | predicate | object -------------------------------+---------------------------------------------------+--------------------------------------------------------------------- | | "1780-04-16"^^ | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ | | "51.9636"^^ | | "7.6136"^^ | | "1924"^^ | | "49098"^^ | | "4956"^^ | | "803600000"^^ | | "1500.0"^^ | | "9999999999999999999"^^ | | "0.000000000000001"^^ | | "2024-02-29"^^ | | "true"^^ (14 rows) SELECT * FROM ft WHERE object BETWEEN '"2025-01-01T00:00:00+00:00"^^'::rdfnode AND '"2025-12-31T23:59:59+00:00"^^'::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o >= "2025-01-01T00:00:00+00:00"^^) FILTER(?o <= "2025-12-31T23:59:59+00:00"^^) } INFO: SPARQL returned 2 records. subject | predicate | object -------------------------------+-------------------------------------------------+--------------------------------------------------------------------- | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ (2 rows) /* SPARQL - 17.3 Operator Mapping (date) */ SELECT * FROM ft WHERE object = '1780-04-16'::date; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = "1780-04-16"^^) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-------------------------------------------+------------------------------------------------------- | | "1780-04-16"^^ (1 row) SELECT * FROM ft WHERE object > '1780-01-01'::date; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o > "1780-01-01"^^) } INFO: SPARQL returned 21 records. subject | predicate | object -------------------------------+-------------------------------------------------+---------------------------------------------------------------------- | | "" | | "Hello 👋 PostgreSQL 🐘"@en | | "unknown literal type"^^ | | "explicit string literal"^^ | | ". <= pontos => ."@pt | | " + | | <= salto de línea => + | | "@es | | "\" <= double-quotes => \""@en | | " <= Tabulatorzeichen => "@de | | "日本"@jp | | "ישראל"@il | | "Westfälische Wilhelms-Universität Münster"@de | | "University of Münster"@en | | "Univerrrsity of Münsterrr"@en-us | | "Univêrsity of Münsta"@en-gb | | "1780-04-16"^^ | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ | | "Johannes Wessels" | | | | | | "2024-02-29"^^ (21 rows) SELECT * FROM ft WHERE object < '1780-12-31'::date; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o < "1780-12-31"^^) } INFO: SPARQL returned 11 records. subject | predicate | object -------------------------------+---------------------------------------------------+------------------------------------------------------------------- | | "1780-04-16"^^ | | "51.9636"^^ | | "7.6136"^^ | | "1924"^^ | | "49098"^^ | | "4956"^^ | | "803600000"^^ | | "1500.0"^^ | | "9999999999999999999"^^ | | "0.000000000000001"^^ | | "true"^^ (11 rows) SELECT * FROM ft WHERE object BETWEEN '1780-01-01'::date AND '1780-12-31'::date; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o >= "1780-01-01"^^) FILTER(?o <= "1780-12-31"^^) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-------------------------------------------+------------------------------------------------------- | | "1780-04-16"^^ (1 row) /* SPARQL - 17.3 Operator Mapping (time) */ SELECT * FROM ft WHERE object = '18:18:42'::time; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = "18:18:42"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22007 Error DT011: Cannot convert T18:18:42 to time : Incorrect hour field length SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = "18:18:42"^^) } SELECT * FROM ft WHERE object > '12:00:00'::time; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o > "12:00:00"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22007 Error DT011: Cannot convert T12:00:00 to time : Incorrect hour field length SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o > "12:00:00"^^) } SELECT * FROM ft WHERE object < '23:59:59'::time; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o < "23:59:59"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22007 Error DT011: Cannot convert T23:59:59 to time : Incorrect hour field length SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o < "23:59:59"^^) } SELECT * FROM ft WHERE object BETWEEN '12:00:00'::time AND '23:59:59'::time; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o >= "12:00:00"^^) FILTER(?o <= "23:59:59"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22007 Error DT011: Cannot convert T23:59:59 to time : Incorrect hour field length SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o >= "12:00:00"^^) FILTER(?o <= "23:59:59"^^) } /* SPARQL - 17.3 Operator Mapping (timetz) */ /* SPARQL - 17.3 Operator Mapping (boolean) */ SELECT * FROM ft WHERE predicate = '' AND object = '"true"^^'::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) FILTER(?o = "true"^^) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-----------------------------------------------+------------------------------------------------- | | "1"^^ (1 row) SELECT * FROM ft WHERE predicate = '' AND object <> '"false"^^'::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) FILTER(?o != "false"^^) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-----------------------------------------------+---------------------------------------------------- | | "true"^^ (1 row) SELECT * FROM ft WHERE predicate = '' AND object = true; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) FILTER(?o = "true"^^) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-----------------------------------------------+------------------------------------------------- | | "1"^^ (1 row) SELECT * FROM ft WHERE predicate = '' AND object <> false; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) FILTER(?o != "false"^^) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-----------------------------------------------+---------------------------------------------------- | | "true"^^ (1 row) --===================================================================================-- /* SPARQL 17.4.1.1 - BOUND */ /* Note: Testing NOT BOUND requires OPTIONAL patterns, skipping for simple triple pattern */ -- SELECT * FROM ft -- WHERE NOT sparql.bound(object); /* SPARQL 17.4.1.3 - COALESCE */ SELECT * FROM ft WHERE sparql.coalesce(object, '"Default Value"') = '"Westfälische Wilhelms-Universität Münster"@de'; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(COALESCE(?o, "Default Value") = "Westfälische Wilhelms-Universität Münster"@de) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de (1 row) /* SPARQL 17.4.1.8 - sameTerm */ SELECT * FROM ft WHERE sparql.sameterm(object, '1780-04-16'::date::rdfnode); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(SAMETERM(?o, "1780-04-16"^^)) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-------------------------------------------+------------------------------------------------------- | | "1780-04-16"^^ (1 row) /* SPARQL 17.4.2.1 - isIRI */ SELECT * FROM ft WHERE sparql.isiri(object) AND predicate = ''; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(isIRI(?o)) FILTER(?p = ) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-------------------------------------+------------------------------------------------------ | | (1 row) /* SPARQL 17.4.2.2 - isBlank */ SELECT * FROM ft WHERE sparql.isblank(subject); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(isBLANK(?s)) } INFO: SPARQL returned 0 records. subject | predicate | object ---------+-----------+-------- (0 rows) /* SPARQL 17.4.2.3 - isLiteral */ SELECT * FROM ft WHERE sparql.isliteral(object) ORDER BY predicate; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(isLITERAL(?o)) } ORDER BY ASC (?p) INFO: SPARQL returned 29 records. subject | predicate | object -------------------------------+---------------------------------------------------+---------------------------------------------------------------------- | | "true"^^ | | "2024-02-29"^^ | | "2025-12-24T13:00:42Z"^^ | | "4956"^^ | | "1924"^^ | | "803600000"^^ | | "1780-04-16"^^ | | "2025-12-24T18:30:42"^^ | | "Westfälische Wilhelms-Universität Münster"@de | | "University of Münster"@en | | "Univerrrsity of Münsterrr"@en-us | | "Univêrsity of Münsta"@en-gb | | "Johannes Wessels" | | "49098"^^ | | "1500.0"^^ | | "9999999999999999999"^^ | | "0.000000000000001"^^ | | "" | | "Hello 👋 PostgreSQL 🐘"@en | | "unknown literal type"^^ | | "explicit string literal"^^ | | ". <= pontos => ."@pt | | " + | | <= salto de línea => + | | "@es | | "\" <= double-quotes => \""@en | | " <= Tabulatorzeichen => "@de | | "日本"@jp | | "ישראל"@il | | "51.9636"^^ | | "7.6136"^^ (29 rows) /* SPARQL 17.4.2.4 - isNumeric */ SELECT * FROM ft WHERE sparql.isnumeric(object); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(ISNUMERIC(?o)) } INFO: SPARQL returned 10 records. subject | predicate | object -------------------------------+---------------------------------------------------+------------------------------------------------------------------- | | "51.9636"^^ | | "7.6136"^^ | | "1924"^^ | | "49098"^^ | | "4956"^^ | | "803600000"^^ | | "1500.0"^^ | | "9999999999999999999"^^ | | "0.000000000000001"^^ | | "true"^^ (10 rows) /* SPARQL 17.4.2.5 - str */ SELECT * FROM ft WHERE sparql.str(object) = 'Westfälische Wilhelms-Universität Münster'; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(STR(?o) = "Westfälische Wilhelms-Universität Münster") } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de (1 row) /* SPARQL 17.4.2.6 - lang */ SELECT * FROM ft WHERE sparql.lang(object) = 'de'; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(LANG(?o) = "de") } INFO: SPARQL returned 2 records. subject | predicate | object -------------------------------+------------------------------------------------+------------------------------------------------ | | " <= Tabulatorzeichen => "@de | | "Westfälische Wilhelms-Universität Münster"@de (2 rows) /* SPARQL 17.4.2.7 - datatype */ SELECT * FROM ft WHERE sparql.datatype(object) = ''; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(DATATYPE(?o) = ) } INFO: SPARQL returned 2 records. subject | predicate | object -------------------------------+-------------------------------------------+------------------------------------------------------- | | "1780-04-16"^^ | | "2024-02-29"^^ (2 rows) /* SPARQL 17.4.2.8 - IRI */ SELECT * FROM ft WHERE sparql.iri('http://dbpedia.org/resource/Münster') = object; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER( = ?o) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+--------------------------------------- | | (1 row) /* SPARQL 17.4.2.9 - BNODE */ SELECT * FROM ft WHERE sparql.bnode('_:bnode1') != subject LIMIT 1; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(_:bnode1 != ?s) } LIMIT 1 INFO: SPARQL returned 0 records. subject | predicate | object ---------+-----------+-------- (0 rows) /* SPARQL 17.4.2.10 - STRDT */ SELECT * FROM ft WHERE sparql.strdt('1780-04-16', 'http://www.w3.org/2001/XMLSchema#date') = object; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER("1780-04-16"^^ = ?o) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-------------------------------------------+------------------------------------------------------- | | "1780-04-16"^^ (1 row) /* SPARQL 17.4.2.11 - STRLANG */ SELECT * FROM ft WHERE sparql.strlang('Westfälische Wilhelms-Universität Münster', 'de') = object; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER("Westfälische Wilhelms-Universität Münster"@de = ?o) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de (1 row) /* SPARQL 17.4.3.2 - STRLEN */ SELECT * FROM ft WHERE predicate = '' AND sparql.strlen(sparql.str(object)) >= 25; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) FILTER(STRLEN(STR(?o)) >= 25) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------------------+---------------------------------------------- | | " <= Tabulatorzeichen => "@de (1 row) SELECT * FROM ft WHERE predicate = '' AND sparql.strlen(object) = 20; -- emoji counts as 1 char each INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) FILTER(STRLEN(?o) = 20) } INFO: SPARQL returned 2 records. subject | predicate | object -------------------------------+------------------------------------------------+-------------------------------------------------------------------- | | "Hello 👋 PostgreSQL 🐘"@en | | "unknown literal type"^^ (2 rows) /* SPARQL 17.4.3.3 - SUBSTR */ SELECT * FROM ft WHERE sparql.substr(sparql.str(object), 1, 9) = 'Westfälis'; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(SUBSTR(STR(?o), 1, 9) = "Westfälis") } INFO: SPARQL returned 0 records. subject | predicate | object ---------+-----------+-------- (0 rows) SELECT * FROM ft WHERE sparql.substr(object, 7, 2) = sparql.strlang('👋 ','en'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(SUBSTR(?o, 7, 2) = "👋 "@en) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22023 Error SL001: The SPARQL 1.1 function substr() needs a string value as 1st argument SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(SUBSTR(?o, 7, 2) = "👋 "@en) } /* SPARQL 17.4.3.4 - UCASE */ SELECT * FROM ft WHERE sparql.ucase(object) = sparql.strlang('WESTFÄLISCHE WILHELMS-UNIVERSITÄT MÜNSTER', 'de'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(UCASE(?o) = "WESTFÄLISCHE WILHELMS-UNIVERSITÄT MÜNSTER"@de) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22023 Error SL001: The SPARQL 1.1 UCASE() function needs a string value as 1st argument SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(UCASE(?o) = "WESTFÄLISCHE WILHELMS-UNIVERSITÄT MÜNSTER"@de) } /* SPARQL 17.4.3.5 - LCASE */ SELECT * FROM ft WHERE sparql.lcase(object) = sparql.strlang('westfälische wilhelms-universität münster', 'de'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(LCASE(?o) = "westfälische wilhelms-universität münster"@de) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22023 Error SL001: The SPARQL 1.1 LCASE() function needs a string value as 1st argument SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(LCASE(?o) = "westfälische wilhelms-universität münster"@de) } /* SPARQL 17.4.3.6 - STRSTARTS */ SELECT * FROM ft WHERE sparql.strstarts(sparql.str(object), 'Westfäl'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(STRSTARTS(STR(?o), "Westfäl")) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de (1 row) /* SPARQL 17.4.3.7 - STRENDS */ SELECT * FROM ft WHERE sparql.strends(sparql.str(object), 'Münster'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(STRENDS(STR(?o), "Münster")) } INFO: SPARQL returned 3 records. subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de | | "University of Münster"@en | | (3 rows) /* SPARQL 17.4.3.8 - CONTAINS */ SELECT * FROM ft WHERE sparql.contains(object, '"Wilhelms"@de'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(CONTAINS(?o, "Wilhelms"@de)) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22023 Error SL001: The SPARQL 1.1 function CONTAINS() needs a string value as first argument SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(CONTAINS(?o, "Wilhelms"@de)) } SELECT * FROM ft WHERE sparql.contains(object, E'"\t <= Tabulator"@de'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(CONTAINS(?o, "\t <= Tabulator"@de)) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22023 Error SL001: The SPARQL 1.1 function CONTAINS() needs a string value as first argument SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(CONTAINS(?o, "\t <= Tabulator"@de)) } SELECT * FROM ft WHERE sparql.contains(object, '". <= pontos"@pt'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(CONTAINS(?o, ". <= pontos"@pt)) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22023 Error SL001: The SPARQL 1.1 function CONTAINS() needs a string value as first argument SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(CONTAINS(?o, ". <= pontos"@pt)) } SELECT * FROM ft WHERE sparql.contains(object, E'"\n <= salto"@es'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(CONTAINS(?o, "\n <= salto"@es)) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22023 Error SL001: The SPARQL 1.1 function CONTAINS() needs a string value as first argument SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(CONTAINS(?o, "\n <= salto"@es)) } SELECT * FROM ft WHERE sparql.contains(object, '"\" <= double"@en'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(CONTAINS(?o, "\" <= double"@en)) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22023 Error SL001: The SPARQL 1.1 function CONTAINS() needs a string value as first argument SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(CONTAINS(?o, "\" <= double"@en)) } /* SPARQL 17.4.3.9 - STRBEFORE */ SELECT * FROM ft WHERE sparql.strbefore(sparql.str(object), ' Wilhelms') = 'Westfälische'; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(STRBEFORE(STR(?o), " Wilhelms") = "Westfälische") } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de (1 row) SELECT * FROM ft WHERE predicate = '' AND sparql.strbefore(object, 'NOTFOUND') = '""'::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) FILTER(STRBEFORE(?o, "NOTFOUND") = "") } INFO: SPARQL returned 3 records. subject | predicate | object -------------------------------+------------------------------------------------+---------------------------------------------------------------------- | | "" | | "unknown literal type"^^ | | "explicit string literal"^^ (3 rows) /* SPARQL 17.4.3.10 - STRAFTER */ SELECT * FROM ft WHERE sparql.strafter(sparql.str(object), 'Westfälische ') = 'Wilhelms-Universität Münster'; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(STRAFTER(STR(?o), "Westfälische ") = "Wilhelms-Universität Münster") } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de (1 row) SELECT * FROM ft WHERE predicate = '' AND sparql.strafter(object, 'NOTFOUND') = '""'::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) FILTER(STRAFTER(?o, "NOTFOUND") = "") } INFO: SPARQL returned 3 records. subject | predicate | object -------------------------------+------------------------------------------------+---------------------------------------------------------------------- | | "" | | "unknown literal type"^^ | | "explicit string literal"^^ (3 rows) /* SPARQL 17.4.3.11 - ENCODE_FOR_URI */ SELECT * FROM ft WHERE sparql.encode_for_uri(sparql.str(object)) = 'Westf%C3%A4lische%20Wilhelms-Universit%C3%A4t%20M%C3%BCnster'; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(ENCODE_FOR_URI(STR(?o)) = "Westf%C3%A4lische%20Wilhelms-Universit%C3%A4t%20M%C3%BCnster") } INFO: SPARQL returned 0 records. subject | predicate | object ---------+-----------+-------- (0 rows) /* SPARQL 17.4.3.12 - CONCAT */ SELECT * FROM ft WHERE sparql.concat(sparql.str(object), ', Deutschland') = 'Westfälische Wilhelms-Universität Münster, Deutschland'; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(CONCAT(STR(?o), ", Deutschland") = "Westfälische Wilhelms-Universität Münster, Deutschland") } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de (1 row) SELECT *, sparql.concat(object, ', ', '"Cześć"@pl') FROM ft WHERE predicate = '' AND sparql.concat(object, ', ', '"Cześć"@pl'::rdfnode) = '"Hello 👋 PostgreSQL 🐘, Cześć"'; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) FILTER(CONCAT(?o, ", ", "Cześć"@pl) = "Hello 👋 PostgreSQL 🐘, Cześć") } INFO: SPARQL returned 1 record. subject | predicate | object | concat -------------------------------+------------------------------------------------+-----------------------------+--------------------------------- | | "Hello 👋 PostgreSQL 🐘"@en | "Hello 👋 PostgreSQL 🐘, Cześć" (1 row) /* Note: CONCAT on unknown datatype doesn't preserve the datatype in SPARQL */ SELECT sparql.concat(object, ', ', 'after concat'::rdfnode) FROM ft WHERE predicate = '' AND sparql.datatype(object) = ''; INFO: SPARQL query sent to 'virtuoso': SELECT ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) FILTER(DATATYPE(?o) = ) } INFO: SPARQL returned 1 record. concat -------------------------------------- "unknown literal type, after concat" (1 row) SELECT *, sparql.concat(object, ', ', 'after concat'::rdfnode) FROM ft WHERE predicate = '' AND sparql.datatype(object) = ''; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) FILTER(DATATYPE(?o) = ) } INFO: SPARQL returned 2 records. subject | predicate | object | concat -------------------------------+------------------------------------------------+----------------------------------------------------------------------+----------------------------------------- | | "" | ", after concat" | | "explicit string literal"^^ | "explicit string literal, after concat" (2 rows) SELECT object, sparql.datatype(object) FROM ft WHERE predicate = ''; INFO: SPARQL query sent to 'virtuoso': SELECT ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) } INFO: SPARQL returned 10 records. object | datatype ----------------------------------------------------------------------+--------------------------------------------------------- "" | "Hello 👋 PostgreSQL 🐘"@en | "unknown literal type"^^ | "explicit string literal"^^ | ". <= pontos => ."@pt | " +| <= salto de línea => +| "@es | "\" <= double-quotes => \""@en | " <= Tabulatorzeichen => "@de | "日本"@jp | "ישראל"@il | (10 rows) /* SPARQL 17.4.3.13 - langMatches */ SELECT * FROM ft WHERE sparql.langmatches(sparql.lang(object), 'de'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(LANGMATCHES(LANG(?o), "de")) } INFO: SPARQL returned 2 records. subject | predicate | object -------------------------------+------------------------------------------------+------------------------------------------------ | | " <= Tabulatorzeichen => "@de | | "Westfälische Wilhelms-Universität Münster"@de (2 rows) SELECT * FROM ft WHERE sparql.langmatches(sparql.lang(object), 'en'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(LANGMATCHES(LANG(?o), "en")) } INFO: SPARQL returned 5 records. subject | predicate | object -------------------------------+------------------------------------------------+----------------------------------- | | "Hello 👋 PostgreSQL 🐘"@en | | "\" <= double-quotes => \""@en | | "University of Münster"@en | | "Univerrrsity of Münsterrr"@en-us | | "Univêrsity of Münsta"@en-gb (5 rows) SELECT * FROM ft WHERE sparql.langmatches(sparql.lang(object), 'en-US'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(LANGMATCHES(LANG(?o), "en-US")) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+----------------------------------- | | "Univerrrsity of Münsterrr"@en-us (1 row) SELECT * FROM ft WHERE sparql.langmatches(sparql.lang(object), 'en-*'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(LANGMATCHES(LANG(?o), "en-*")) } INFO: SPARQL returned 0 records. subject | predicate | object ---------+-----------+-------- (0 rows) /* SPARQL 17.4.3.15 - REPLACE */ SELECT * FROM ft WHERE sparql.replace(sparql.str(object), 'Westfälische Wilhelms-Universität', 'WWU') = 'WWU Münster'; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(REPLACE(STR(?o), "Westfälische Wilhelms-Universität", "WWU") = "WWU Münster") } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de (1 row) /* SPARQL 17.4.4.1 - abs */ SELECT * FROM ft WHERE sparql.abs(object) = 51.9636::numeric::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(ABS(?o) = "51.9636"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for abs(). SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(ABS(?o) = "51.9636"^^) } /* SPARQL 17.4.4.2 - round */ SELECT * FROM ft WHERE sparql.round(object) = 52::numeric::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(ROUND(?o) = "52"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for rdf_round_impl(). SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(ROUND(?o) = "52"^^) } /* SPARQL 17.4.4.3 - ceil */ SELECT * FROM ft WHERE sparql.ceil(object) = 52::numeric::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(CEIL(?o) = "52"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for rdf_ceil_impl(). SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(CEIL(?o) = "52"^^) } /* SPARQL 17.4.4.4 - floor */ SELECT * FROM ft WHERE sparql.floor(object) = 51::numeric::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(FLOOR(?o) = "51"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for rdf_floor_impl(). SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(FLOOR(?o) = "51"^^) } /* SPARQL 17.4.4.5 - RAND */ SELECT setseed(0.42); setseed --------- (1 row) SELECT sparql.lex(sparql.rand())::numeric BETWEEN 0.0 AND 1.0, sparql.datatype(sparql.rand()) = ''; ?column? | ?column? ----------+---------- t | t (1 row) /* SPARQL 17.4.5.2 - year*/ SELECT * FROM ft WHERE sparql.year(object) = 1780::numeric::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(YEAR(?o) = "1780"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for year(). SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(YEAR(?o) = "1780"^^) } SELECT * FROM ft WHERE sparql.year(object) + 1 = 2026; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(YEAR(?o) + 1 = 2026) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for year(). SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(YEAR(?o) + 1 = 2026) } /* SPARQL 17.4.5.3 - month */ SELECT * FROM ft WHERE sparql.month(object) = 4::numeric::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(MONTH(?o) = "4"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for month(). SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(MONTH(?o) = "4"^^) } /* SPARQL 17.4.5.4 - day */ SELECT * FROM ft WHERE sparql.day(object) = 16::numeric::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(DAY(?o) = "16"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for day(). SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(DAY(?o) = "16"^^) } /* SPARQL 7.4.5.5 - hours */ SELECT * FROM ft WHERE sparql.hours(object) = 18::numeric::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(HOURS(?o) = "18"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for hour(). SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(HOURS(?o) = "18"^^) } /* SPARQL 17.4.5.6 - minutes */ SELECT * FROM ft WHERE sparql.minutes(object) = 30::numeric::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(MINUTES(?o) = "30"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for minute(). SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(MINUTES(?o) = "30"^^) } /* SPARQL 17.4.5.7 - seconds */ SELECT * FROM ft WHERE sparql.seconds(object) = 42::numeric::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(SECONDS(?o) = "42"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for rdf_seconds_impl(). SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(SECONDS(?o) = "42"^^) } /* SPARQL 17.4.5.8 - timezone */ SELECT * FROM ft WHERE sparql.timezone(object) = '"PT0S"^^'; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(TIMEZONE(?o) = "PT0S"^^) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for timezone(). SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(TIMEZONE(?o) = "PT0S"^^) } /* SPARQL 17.4.5.9 - tz */ SELECT * FROM ft WHERE sparql.tz(object) = 'Z'::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(TZ(?o) = "Z") } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for timezone(). SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(TZ(?o) = "Z") } /* SPARQL 17.4.6.1 - MD5 */ SELECT * FROM ft WHERE sparql.md5(sparql.str(object)) = '6c0bdbd38fc0772abda6fa1c98b74990'::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(MD5(STR(?o)) = "6c0bdbd38fc0772abda6fa1c98b74990") } INFO: SPARQL returned 0 records. subject | predicate | object ---------+-----------+-------- (0 rows) /* SPARQL Aggregate SUM */ SELECT sparql.sum(object) AS obj_count FROM ft WHERE sparql.isnumeric(object); INFO: SPARQL query sent to 'virtuoso': SELECT ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(ISNUMERIC(?o)) } INFO: SPARQL returned 10 records. obj_count ----------- (null) (1 row) /* SPARQL Aggregate AVG */ SELECT sparql.avg(object) AS obj_avg FROM ft WHERE sparql.isnumeric(object); INFO: SPARQL query sent to 'virtuoso': SELECT ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(ISNUMERIC(?o)) } INFO: SPARQL returned 10 records. obj_avg --------- (null) (1 row) /* SPARQL Aggregate MIN */ SELECT sparql.min(object) AS obj_min FROM ft WHERE sparql.isnumeric(object); INFO: SPARQL query sent to 'virtuoso': SELECT ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(ISNUMERIC(?o)) } INFO: SPARQL returned 10 records. obj_min ----------------------------------------------------------------- "0.000000000000001"^^ (1 row) /* SPARQL Aggregate MAX */ SELECT sparql.max(object) AS obj_max FROM ft WHERE sparql.isnumeric(object); INFO: SPARQL query sent to 'virtuoso': SELECT ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(ISNUMERIC(?o)) } INFO: SPARQL returned 10 records. obj_max ---------------------------------------------------- "true"^^ (1 row) /* SPARQL Aggregate GROUP_CONCAT */ SELECT sparql.group_concat(object, ' | ') AS obj_list FROM ft WHERE sparql.isliteral(object); INFO: SPARQL query sent to 'virtuoso': SELECT ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(isLITERAL(?o)) } INFO: SPARQL returned 29 records. obj_list ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ " | Hello 👋 PostgreSQL 🐘 | unknown literal type | explicit string literal | . <= pontos => . | + <= salto de línea => + | \" <= double-quotes => \" | <= Tabulatorzeichen => | 日本 | ישראל | Westfälische Wilhelms-Universität Münster | University of Münster | Univerrrsity of Münsterrr | Univêrsity of Münsta | 1780-04-16 | 2025-12-24T18:30:42 | 2025-12-24T13:00:42Z | 51.9636 | 7.6136 | Johannes Wessels | 1924 | 49098 | 4956 | 803600000 | 1500.0 | 9999999999999999999 | 0.000000000000001 | 2024-02-29 | true" (1 row) SELECT sparql.group_concat(object, '') AS obj_list FROM ft WHERE sparql.isliteral(object); INFO: SPARQL query sent to 'virtuoso': SELECT ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(isLITERAL(?o)) } INFO: SPARQL returned 29 records. obj_list --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- "Hello 👋 PostgreSQL 🐘unknown literal typeexplicit string literal. <= pontos => . + <= salto de línea => + \" <= double-quotes => \" <= Tabulatorzeichen => 日本ישראלWestfälische Wilhelms-Universität MünsterUniversity of MünsterUniverrrsity of MünsterrrUnivêrsity of Münsta1780-04-162025-12-24T18:30:422025-12-24T13:00:42Z51.96367.6136Johannes Wessels19244909849568036000001500.099999999999999999990.0000000000000012024-02-29true" (1 row) /* SPARQL Aggregate SAMPLE */ SELECT sparql.sample(object) AS obj_sample FROM ft WHERE sparql.isliteral(object); INFO: SPARQL query sent to 'virtuoso': SELECT ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(isLITERAL(?o)) } INFO: SPARQL returned 29 records. obj_sample ------------ "" (1 row) /* Custom Function LEX */ SELECT subject, predicate, sparql.lex(object) FROM ft WHERE sparql.isliteral(object) ORDER BY predicate; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(isLITERAL(?o)) } ORDER BY ASC (?p) INFO: SPARQL returned 29 records. subject | predicate | lex -------------------------------+---------------------------------------------------+------------------------------------------- | | true | | 2024-02-29 | | 2025-12-24T13:00:42Z | | 4956 | | 1924 | | 803600000 | | 1780-04-16 | | 2025-12-24T18:30:42 | | Westfälische Wilhelms-Universität Münster | | University of Münster | | Univerrrsity of Münsterrr | | Univêrsity of Münsta | | Johannes Wessels | | 49098 | | 1500.0 | | 9999999999999999999 | | 0.000000000000001 | | | | Hello 👋 PostgreSQL 🐘 | | unknown literal type | | explicit string literal | | . <= pontos => . | | + | | <= salto de línea => + | | | | \" <= double-quotes => \" | | <= Tabulatorzeichen => | | 日本 | | ישראל | | 51.9636 | | 7.6136 (29 rows) -- Empty literals in various contexts SELECT * FROM ft WHERE object = '""'::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = "") } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------------------+-------- | | "" (1 row) SELECT * FROM ft WHERE sparql.strlen(object) = 0; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(STRLEN(?o) = 0) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22023 Error SL001: The SPARQL 1.1 function strlen() needs a string value as an argument SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(STRLEN(?o) = 0) } SELECT * FROM ft WHERE sparql.substr(object, 1, 0) = '""'::rdfnode; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(SUBSTR(?o, 1, 0) = "") } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22023 Error SL001: The SPARQL 1.1 function substr() needs a string value as 1st argument SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(SUBSTR(?o, 1, 0) = "") } -- Very large/small decimals SELECT * FROM ft WHERE object = 9999999999999999999::numeric::rdfnode ORDER BY predicate; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = "9999999999999999999"^^) } ORDER BY ASC (?p) ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR128: Numeric value out of range for (0, 0) SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = "9999999999999999999"^^) } ORDER BY ASC (?p) SELECT * FROM ft WHERE object = 0.000000000000001::numeric::rdfnode ORDER BY predicate; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o = "0.000000000000001"^^) } ORDER BY ASC (?p) INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+-----------------------------------------------+----------------------------------------------------------------- | | "0.000000000000001"^^ (1 row) SELECT * FROM ft WHERE object BETWEEN 0.000000000000001::numeric::rdfnode AND 1000000000000000000::numeric::rdfnode ORDER BY predicate; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?o >= "0.000000000000001"^^) FILTER(?o <= "1000000000000000000"^^) } ORDER BY ASC (?p) INFO: SPARQL returned 9 records. subject | predicate | object -------------------------------+---------------------------------------------------+----------------------------------------------------------------- | | "true"^^ | | "4956"^^ | | "1924"^^ | | "803600000"^^ | | "49098"^^ | | "1500.0"^^ | | "0.000000000000001"^^ | | "51.9636"^^ | | "7.6136"^^ (9 rows) -- Leap year dates SELECT * FROM ft WHERE sparql.month(object) = 2 AND sparql.day(object) = 29; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(MONTH(?o) = 2) FILTER(DAY(?o) = 29) } ERROR: internal error on server "virtuoso" (HTTP 500) DETAIL: Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for day(). SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(MONTH(?o) = 2) FILTER(DAY(?o) = 29) } -- NOT conditions SELECT * FROM ft WHERE NOT sparql.isiri(object) AND NOT sparql.isblank(object) AND NOT sparql.isnumeric(object) AND NOT sparql.langmatches(sparql.lang(object), 'en'); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER((!isIRI(?o))) FILTER((!isBLANK(?o))) FILTER((!ISNUMERIC(?o))) FILTER((!LANGMATCHES(LANG(?o), "en"))) } INFO: SPARQL returned 14 records. subject | predicate | object -------------------------------+-------------------------------------------------+---------------------------------------------------------------------- | | "" | | "unknown literal type"^^ | | "explicit string literal"^^ | | ". <= pontos => ."@pt | | " + | | <= salto de línea => + | | "@es | | " <= Tabulatorzeichen => "@de | | "日本"@jp | | "ישראל"@il | | "Westfälische Wilhelms-Universität Münster"@de | | "1780-04-16"^^ | | "2025-12-24T18:30:42"^^ | | "2025-12-24T13:00:42Z"^^ | | "Johannes Wessels" | | "2024-02-29"^^ (14 rows) -- SELECT ... INTO TEMPORARY TABLE SELECT subject, predicate, object INTO TEMPORARY TABLE tmp2 FROM ft WHERE subject = ''; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } INFO: SPARQL returned 31 records. SELECT count(*) FROM tmp2; count ------- 31 (1 row) -- SELECT ... INTO TABLE SELECT subject, predicate, object INTO TABLE t2 FROM ft WHERE subject = ''; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?s = ) } INFO: SPARQL returned 31 records. SELECT count(*) FROM t2; count ------- 31 (1 row) DROP TABLE t2; -- Nested function calls SELECT * FROM ft WHERE predicate = '' AND object = '"Westfälische Wilhelms-Universität Münster"@de' AND sparql.isnumeric( sparql.round( sparql.strlen( sparql.substr( sparql.str(object), 1, 9)))); INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} ## rdf_fdw pushdown conditions ## FILTER(?p = ) FILTER(?o = "Westfälische Wilhelms-Universität Münster"@de) FILTER(ISNUMERIC(ROUND(STRLEN(SUBSTR(STR(?o), 1, 9))))) } INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de (1 row) -- EXPLAIN of a query EXPLAIN (COSTS OFF) SELECT * FROM ft WHERE predicate = '' AND object = '"Westfälische Wilhelms-Universität Münster"@de' AND subject::text = ''; QUERY PLAN ----------------------------------------------------------------------------------------------------------------------- Foreign Scan on ft Filter: ((subject)::text = ''::text) Foreign Server: virtuoso Pushdown: enabled Remote Select: ?s ?p ?o Remote Filter: ((?p = ) && (?o = "Westfälische Wilhelms-Universität Münster"@de)) (6 rows) /* Invalid SPARQL query test */ CREATE FOREIGN TABLE ft_invalid_sparql ( s rdfnode OPTIONS (variable '?s'), p rdfnode OPTIONS (variable '?p'), o rdfnode OPTIONS (variable '?o') ) SERVER virtuoso OPTIONS ( sparql 'SELECT * WHERE {?s ?p }' -- missing object in triple pattern ); SELECT * FROM ft_invalid_sparql; ERROR: bad request on server "virtuoso" (HTTP 400) DETAIL: Virtuoso 37000 Error SP030: SPARQL compiler, line 4: syntax error at '}' before '}' SPARQL query: define sql:big-data-const 0 SELECT ?s ?p ?o {?s ?p } HINT: Check the SPARQL query syntax. /* invalid SERVER url */ CREATE SERVER server_invalid_url FOREIGN DATA WRAPPER rdf_fdw OPTIONS ( endpoint 'http://10.10.70.80:9999/repositories/test', update_url 'http://10.10.70.80:9999/repositories/test/statements', connect_timeout '1' ); CREATE FOREIGN TABLE ft_server_invalid_url ( s rdfnode OPTIONS (variable '?s'), p rdfnode OPTIONS (variable '?p'), o rdfnode OPTIONS (variable '?o') ) SERVER server_invalid_url OPTIONS ( sparql 'SELECT * WHERE {?s ?p ?o}' ); SELECT * FROM ft_server_invalid_url; WARNING: ExecuteSPARQL: request to 'server_invalid_url' failed (1) WARNING: ExecuteSPARQL: request to 'server_invalid_url' failed (2) WARNING: ExecuteSPARQL: request to 'server_invalid_url' failed (3) ERROR: unable to connect to 'server_invalid_url' DETAIL: Timeout was reached (curl error code 28). /* Test max_response_size option - this sets it to 10 bytes */ ALTER SERVER virtuoso OPTIONS (ADD max_response_size '10'); SELECT * FROM ft; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} } ERROR: SPARQL response exceeds max_response_size limit of 10 bytes HINT: Increase max_response_size in CREATE SERVER or refine your SPARQL query to return fewer results. ALTER SERVER virtuoso OPTIONS (SET max_response_size '0'); /* cleanup */ DELETE FROM ft; INFO: SPARQL query sent to 'virtuoso': SELECT ?s ?p ?o { GRAPH {?s ?p ?o} } INFO: SPARQL returned 31 records. INFO: SPARQL query sent to 'virtuoso': DELETE DATA { GRAPH { "" . } }; DELETE DATA { GRAPH { "Hello 👋 PostgreSQL 🐘"@en . } }; DELETE DATA { GRAPH { "unknown literal type"^^ . } }; DELETE DATA { GRAPH { "explicit string literal"^^ . } }; DELETE DATA { GRAPH { ". <= pontos => ."@pt . } }; DELETE DATA { GRAPH { "\n <= salto de línea => \n"@es . } }; DELETE DATA { GRAPH { "\" <= double-quotes => \""@en . } }; DELETE DATA { GRAPH { "\t <= Tabulatorzeichen => \t"@de . } }; DELETE DATA { GRAPH { "日本"@jp . } }; DELETE DATA { GRAPH { "ישראל"@il . } }; DELETE DATA { GRAPH { "Westfälische Wilhelms-Universität Münster"@de . } }; DELETE DATA { GRAPH { "University of Münster"@en . } }; DELETE DATA { GRAPH { "Univerrrsity of Münsterrr"@en-us . } }; DELETE DATA { GRAPH { "Univêrsity of Münsta"@en-gb . } }; DELETE DATA { GRAPH { "1780-04-16"^^ . } }; DELETE DATA { GRAPH { "2025-12-24T18:30:42"^^ . } }; DELETE DATA { GRAPH { "2025-12-24T13:00:42Z"^^ . } }; DELETE DATA { GRAPH { "51.9636"^^ . } }; DELETE DATA { GRAPH { "7.6136"^^ . } }; DELETE DATA { GRAPH { "Johannes Wessels" . } }; DELETE DATA { GRAPH { . } }; DELETE DATA { GRAPH { . } }; DELETE DATA { GRAPH { "1924"^^ . } }; DELETE DATA { GRAPH { "49098"^^ . } }; DELETE DATA { GRAPH { "4956"^^ . } }; DELETE DATA { GRAPH { "803600000"^^ . } }; DELETE DATA { GRAPH { "1500.0"^^ . } }; DELETE DATA { GRAPH { "9999999999999999999"^^ . } }; DELETE DATA { GRAPH { "0.000000000000001"^^ . } }; DELETE DATA { GRAPH { "2024-02-29"^^ . } }; DELETE DATA { GRAPH { "true"^^ . } }; DROP SERVER server_invalid_url CASCADE; NOTICE: drop cascades to foreign table ft_server_invalid_url DROP SERVER virtuoso CASCADE; NOTICE: drop cascades to 3 other objects DETAIL: drop cascades to foreign table ft drop cascades to user mapping for postgres on server virtuoso drop cascades to foreign table ft_invalid_sparql