CREATE SERVER fuseki FOREIGN DATA WRAPPER rdf_fdw OPTIONS ( endpoint 'http://fuseki:3030/dt/sparql', update_url 'http://fuseki:3030/dt/update', http_proxy 'http://172.19.42.100:3128', connect_timeout '1'); CREATE FOREIGN TABLE ft ( subject rdfnode OPTIONS (variable '?s'), predicate rdfnode OPTIONS (variable '?p'), object rdfnode OPTIONS (variable '?o') ) SERVER fuseki OPTIONS ( log_sparql 'true', sparql 'SELECT * WHERE {?s ?p ?o}', sparql_update_pattern '?s ?p ?o .' ); CREATE USER MAPPING FOR postgres SERVER fuseki OPTIONS (user 'admin', password 'secret'); /* Correct proxy settings */ INSERT INTO ft (subject, predicate, object) VALUES ('', '', '"Westfälische Wilhelms-Universität Münster"@de'); INFO: SPARQL query sent to 'fuseki': INSERT DATA { "Westfälische Wilhelms-Universität Münster"@de }; SELECT * FROM ft; INFO: SPARQL query sent to 'fuseki': SELECT ?s ?p ?o {?s ?p ?o} INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de (1 row) SELECT * FROM sparql.describe('fuseki', 'DESCRIBE '); subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de (1 row) CALL rdf_fdw_clone_table( create_table => true, foreign_table => 'public.ft', target_table => 'public.t1' ); INFO: SPARQL query sent to 'fuseki': SELECT ?s ?p ?o {?s ?p ?o} ORDER BY ASC(?s) OFFSET 0 LIMIT 100 INFO: SPARQL returned 1 record. INFO: SPARQL query sent to 'fuseki': SELECT ?s ?p ?o {?s ?p ?o} ORDER BY ASC(?s) OFFSET 100 LIMIT 100 INFO: SPARQL returned 0 records. SELECT * FROM public.t1; subject | predicate | object -------------------------------+------------------------------------+------------------------------------------------ | | "Westfälische Wilhelms-Universität Münster"@de (1 row) UPDATE ft SET object = '"University of Münster"@en' WHERE subject = ''; INFO: SPARQL query sent to 'fuseki': SELECT ?s ?p ?o {?s ?p ?o ## rdf_fdw pushdown conditions ## FILTER(?s = ) } INFO: SPARQL returned 1 record. INFO: SPARQL query sent to 'fuseki': DELETE DATA { "Westfälische Wilhelms-Universität Münster"@de }; INSERT DATA { "University of Münster"@en }; SELECT * FROM ft; INFO: SPARQL query sent to 'fuseki': SELECT ?s ?p ?o {?s ?p ?o} INFO: SPARQL returned 1 record. subject | predicate | object -------------------------------+------------------------------------+---------------------------- | | "University of Münster"@en (1 row) DELETE FROM ft; INFO: SPARQL query sent to 'fuseki': SELECT ?s ?p ?o {?s ?p ?o} INFO: SPARQL returned 1 record. INFO: SPARQL query sent to 'fuseki': DELETE DATA { "University of Münster"@en }; SELECT * FROM ft; INFO: SPARQL query sent to 'fuseki': SELECT ?s ?p ?o {?s ?p ?o} INFO: SPARQL returned 0 records. subject | predicate | object ---------+-----------+-------- (0 rows) /* Wrong proxy url - must fail */ ALTER SERVER fuseki OPTIONS (SET http_proxy 'http://172.19.42.100:250'); SELECT * FROM ft; INFO: SPARQL query sent to 'fuseki': SELECT ?s ?p ?o {?s ?p ?o} WARNING: ExecuteSPARQL: request to 'fuseki' failed (1) WARNING: ExecuteSPARQL: request to 'fuseki' failed (2) WARNING: ExecuteSPARQL: request to 'fuseki' failed (3) ERROR: unable to connect to 'fuseki' DETAIL: Could not connect to server (curl error code 7) SELECT * FROM sparql.describe('fuseki', 'DESCRIBE '); WARNING: ExecuteSPARQL: request to 'fuseki' failed (1) WARNING: ExecuteSPARQL: request to 'fuseki' failed (2) WARNING: ExecuteSPARQL: request to 'fuseki' failed (3) ERROR: unable to connect to 'fuseki' DETAIL: Could not connect to server (curl error code 7) CALL rdf_fdw_clone_table( foreign_table => 'public.ft', target_table => 'public.t1' ); INFO: SPARQL query sent to 'fuseki': SELECT ?s ?p ?o {?s ?p ?o} ORDER BY ASC(?s) OFFSET 0 LIMIT 100 WARNING: ExecuteSPARQL: request to 'fuseki' failed (1) WARNING: ExecuteSPARQL: request to 'fuseki' failed (2) WARNING: ExecuteSPARQL: request to 'fuseki' failed (3) ERROR: unable to connect to 'fuseki' DETAIL: Could not connect to server (curl error code 7) /* Cleanup */ DROP TABLE public.t1; DROP SERVER fuseki CASCADE; NOTICE: drop cascades to 2 other objects DETAIL: drop cascades to foreign table ft drop cascades to user mapping for postgres on server fuseki