跳转到主要内容

rdf_fdw

Foreign data wrapper for RDF triplestores over SPARQL endpoints

rdf_fdw : Foreign data wrapper for RDF triplestores over SPARQL endpoints

Overview

ID Extension Package Version Category License Language
8760 rdf_fdw rdf_fdw 2.7.0 FDW MIT C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s-d-r No Yes No Yes yes no
PIGSTY RPM and DEB packages are aligned at 2.7.0 for PostgreSQL 14 through 18.

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT PIGSTY 2.7.0 18 17 16 15 14 rdf_fdw -
RPM PIGSTY 2.7.0 18 17 16 15 14 rdf_fdw_$v -
DEB PIGSTY 2.7.0 18 17 16 15 14 postgresql-$v-rdf-fdw -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
el8.aarch64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
el9.x86_64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
el9.aarch64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
el10.x86_64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
el10.aarch64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
d12.x86_64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
d12.aarch64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
d13.x86_64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
d13.aarch64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
u22.x86_64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
u22.aarch64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
u24.x86_64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
u24.aarch64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
u26.x86_64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
u26.aarch64 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0 PIGSTY 2.7.0
Package Version OS ORG SIZE File URL
rdf_fdw_18 2.7.0 el8.x86_64 pigsty 151.6 KiB rdf_fdw_18-2.7.0-1PIGSTY.el8.x86_64.rpm
rdf_fdw_18 2.7.0 el8.aarch64 pigsty 142.3 KiB rdf_fdw_18-2.7.0-1PIGSTY.el8.aarch64.rpm
rdf_fdw_18 2.7.0 el9.x86_64 pigsty 146.0 KiB rdf_fdw_18-2.7.0-1PIGSTY.el9.x86_64.rpm
rdf_fdw_18 2.7.0 el9.aarch64 pigsty 141.1 KiB rdf_fdw_18-2.7.0-1PIGSTY.el9.aarch64.rpm
rdf_fdw_18 2.7.0 el10.x86_64 pigsty 146.6 KiB rdf_fdw_18-2.7.0-1PIGSTY.el10.x86_64.rpm
rdf_fdw_18 2.7.0 el10.aarch64 pigsty 142.9 KiB rdf_fdw_18-2.7.0-1PIGSTY.el10.aarch64.rpm
postgresql-18-rdf-fdw 2.7.0 d12.x86_64 pigsty 350.9 KiB postgresql-18-rdf-fdw_2.7.0-1PIGSTY~bookworm_amd64.deb
postgresql-18-rdf-fdw 2.7.0 d12.aarch64 pigsty 342.1 KiB postgresql-18-rdf-fdw_2.7.0-1PIGSTY~bookworm_arm64.deb
postgresql-18-rdf-fdw 2.7.0 d13.x86_64 pigsty 350.5 KiB postgresql-18-rdf-fdw_2.7.0-1PIGSTY~trixie_amd64.deb
postgresql-18-rdf-fdw 2.7.0 d13.aarch64 pigsty 341.9 KiB postgresql-18-rdf-fdw_2.7.0-1PIGSTY~trixie_arm64.deb
postgresql-18-rdf-fdw 2.7.0 u22.x86_64 pigsty 369.4 KiB postgresql-18-rdf-fdw_2.7.0-1PIGSTY~jammy_amd64.deb
postgresql-18-rdf-fdw 2.7.0 u22.aarch64 pigsty 363.5 KiB postgresql-18-rdf-fdw_2.7.0-1PIGSTY~jammy_arm64.deb
postgresql-18-rdf-fdw 2.7.0 u24.x86_64 pigsty 355.0 KiB postgresql-18-rdf-fdw_2.7.0-1PIGSTY~noble_amd64.deb
postgresql-18-rdf-fdw 2.7.0 u24.aarch64 pigsty 351.1 KiB postgresql-18-rdf-fdw_2.7.0-1PIGSTY~noble_arm64.deb
postgresql-18-rdf-fdw 2.7.0 u26.x86_64 pigsty 353.7 KiB postgresql-18-rdf-fdw_2.7.0-1PIGSTY~resolute_amd64.deb
postgresql-18-rdf-fdw 2.7.0 u26.aarch64 pigsty 349.0 KiB postgresql-18-rdf-fdw_2.7.0-1PIGSTY~resolute_arm64.deb
Package Version OS ORG SIZE File URL
rdf_fdw_17 2.7.0 el8.x86_64 pigsty 151.7 KiB rdf_fdw_17-2.7.0-1PIGSTY.el8.x86_64.rpm
rdf_fdw_17 2.7.0 el8.aarch64 pigsty 142.4 KiB rdf_fdw_17-2.7.0-1PIGSTY.el8.aarch64.rpm
rdf_fdw_17 2.7.0 el9.x86_64 pigsty 145.6 KiB rdf_fdw_17-2.7.0-1PIGSTY.el9.x86_64.rpm
rdf_fdw_17 2.7.0 el9.aarch64 pigsty 140.9 KiB rdf_fdw_17-2.7.0-1PIGSTY.el9.aarch64.rpm
rdf_fdw_17 2.7.0 el10.x86_64 pigsty 146.7 KiB rdf_fdw_17-2.7.0-1PIGSTY.el10.x86_64.rpm
rdf_fdw_17 2.7.0 el10.aarch64 pigsty 142.8 KiB rdf_fdw_17-2.7.0-1PIGSTY.el10.aarch64.rpm
postgresql-17-rdf-fdw 2.7.0 d12.x86_64 pigsty 350.7 KiB postgresql-17-rdf-fdw_2.7.0-1PIGSTY~bookworm_amd64.deb
postgresql-17-rdf-fdw 2.7.0 d12.aarch64 pigsty 341.1 KiB postgresql-17-rdf-fdw_2.7.0-1PIGSTY~bookworm_arm64.deb
postgresql-17-rdf-fdw 2.7.0 d13.x86_64 pigsty 350.3 KiB postgresql-17-rdf-fdw_2.7.0-1PIGSTY~trixie_amd64.deb
postgresql-17-rdf-fdw 2.7.0 d13.aarch64 pigsty 342.0 KiB postgresql-17-rdf-fdw_2.7.0-1PIGSTY~trixie_arm64.deb
postgresql-17-rdf-fdw 2.7.0 u22.x86_64 pigsty 390.0 KiB postgresql-17-rdf-fdw_2.7.0-1PIGSTY~jammy_amd64.deb
postgresql-17-rdf-fdw 2.7.0 u22.aarch64 pigsty 384.8 KiB postgresql-17-rdf-fdw_2.7.0-1PIGSTY~jammy_arm64.deb
postgresql-17-rdf-fdw 2.7.0 u24.x86_64 pigsty 354.6 KiB postgresql-17-rdf-fdw_2.7.0-1PIGSTY~noble_amd64.deb
postgresql-17-rdf-fdw 2.7.0 u24.aarch64 pigsty 350.6 KiB postgresql-17-rdf-fdw_2.7.0-1PIGSTY~noble_arm64.deb
postgresql-17-rdf-fdw 2.7.0 u26.x86_64 pigsty 352.7 KiB postgresql-17-rdf-fdw_2.7.0-1PIGSTY~resolute_amd64.deb
postgresql-17-rdf-fdw 2.7.0 u26.aarch64 pigsty 347.9 KiB postgresql-17-rdf-fdw_2.7.0-1PIGSTY~resolute_arm64.deb
Package Version OS ORG SIZE File URL
rdf_fdw_16 2.7.0 el8.x86_64 pigsty 151.6 KiB rdf_fdw_16-2.7.0-1PIGSTY.el8.x86_64.rpm
rdf_fdw_16 2.7.0 el8.aarch64 pigsty 142.4 KiB rdf_fdw_16-2.7.0-1PIGSTY.el8.aarch64.rpm
rdf_fdw_16 2.7.0 el9.x86_64 pigsty 146.1 KiB rdf_fdw_16-2.7.0-1PIGSTY.el9.x86_64.rpm
rdf_fdw_16 2.7.0 el9.aarch64 pigsty 141.1 KiB rdf_fdw_16-2.7.0-1PIGSTY.el9.aarch64.rpm
rdf_fdw_16 2.7.0 el10.x86_64 pigsty 146.7 KiB rdf_fdw_16-2.7.0-1PIGSTY.el10.x86_64.rpm
rdf_fdw_16 2.7.0 el10.aarch64 pigsty 142.8 KiB rdf_fdw_16-2.7.0-1PIGSTY.el10.aarch64.rpm
postgresql-16-rdf-fdw 2.7.0 d12.x86_64 pigsty 350.7 KiB postgresql-16-rdf-fdw_2.7.0-1PIGSTY~bookworm_amd64.deb
postgresql-16-rdf-fdw 2.7.0 d12.aarch64 pigsty 341.7 KiB postgresql-16-rdf-fdw_2.7.0-1PIGSTY~bookworm_arm64.deb
postgresql-16-rdf-fdw 2.7.0 d13.x86_64 pigsty 350.7 KiB postgresql-16-rdf-fdw_2.7.0-1PIGSTY~trixie_amd64.deb
postgresql-16-rdf-fdw 2.7.0 d13.aarch64 pigsty 341.8 KiB postgresql-16-rdf-fdw_2.7.0-1PIGSTY~trixie_arm64.deb
postgresql-16-rdf-fdw 2.7.0 u22.x86_64 pigsty 388.2 KiB postgresql-16-rdf-fdw_2.7.0-1PIGSTY~jammy_amd64.deb
postgresql-16-rdf-fdw 2.7.0 u22.aarch64 pigsty 382.9 KiB postgresql-16-rdf-fdw_2.7.0-1PIGSTY~jammy_arm64.deb
postgresql-16-rdf-fdw 2.7.0 u24.x86_64 pigsty 354.3 KiB postgresql-16-rdf-fdw_2.7.0-1PIGSTY~noble_amd64.deb
postgresql-16-rdf-fdw 2.7.0 u24.aarch64 pigsty 350.6 KiB postgresql-16-rdf-fdw_2.7.0-1PIGSTY~noble_arm64.deb
postgresql-16-rdf-fdw 2.7.0 u26.x86_64 pigsty 352.6 KiB postgresql-16-rdf-fdw_2.7.0-1PIGSTY~resolute_amd64.deb
postgresql-16-rdf-fdw 2.7.0 u26.aarch64 pigsty 347.9 KiB postgresql-16-rdf-fdw_2.7.0-1PIGSTY~resolute_arm64.deb
Package Version OS ORG SIZE File URL
rdf_fdw_15 2.7.0 el8.x86_64 pigsty 152.8 KiB rdf_fdw_15-2.7.0-1PIGSTY.el8.x86_64.rpm
rdf_fdw_15 2.7.0 el8.aarch64 pigsty 143.7 KiB rdf_fdw_15-2.7.0-1PIGSTY.el8.aarch64.rpm
rdf_fdw_15 2.7.0 el9.x86_64 pigsty 147.9 KiB rdf_fdw_15-2.7.0-1PIGSTY.el9.x86_64.rpm
rdf_fdw_15 2.7.0 el9.aarch64 pigsty 143.3 KiB rdf_fdw_15-2.7.0-1PIGSTY.el9.aarch64.rpm
rdf_fdw_15 2.7.0 el10.x86_64 pigsty 148.7 KiB rdf_fdw_15-2.7.0-1PIGSTY.el10.x86_64.rpm
rdf_fdw_15 2.7.0 el10.aarch64 pigsty 144.7 KiB rdf_fdw_15-2.7.0-1PIGSTY.el10.aarch64.rpm
postgresql-15-rdf-fdw 2.7.0 d12.x86_64 pigsty 352.2 KiB postgresql-15-rdf-fdw_2.7.0-1PIGSTY~bookworm_amd64.deb
postgresql-15-rdf-fdw 2.7.0 d12.aarch64 pigsty 341.9 KiB postgresql-15-rdf-fdw_2.7.0-1PIGSTY~bookworm_arm64.deb
postgresql-15-rdf-fdw 2.7.0 d13.x86_64 pigsty 351.9 KiB postgresql-15-rdf-fdw_2.7.0-1PIGSTY~trixie_amd64.deb
postgresql-15-rdf-fdw 2.7.0 d13.aarch64 pigsty 342.9 KiB postgresql-15-rdf-fdw_2.7.0-1PIGSTY~trixie_arm64.deb
postgresql-15-rdf-fdw 2.7.0 u22.x86_64 pigsty 389.6 KiB postgresql-15-rdf-fdw_2.7.0-1PIGSTY~jammy_amd64.deb
postgresql-15-rdf-fdw 2.7.0 u22.aarch64 pigsty 384.2 KiB postgresql-15-rdf-fdw_2.7.0-1PIGSTY~jammy_arm64.deb
postgresql-15-rdf-fdw 2.7.0 u24.x86_64 pigsty 355.6 KiB postgresql-15-rdf-fdw_2.7.0-1PIGSTY~noble_amd64.deb
postgresql-15-rdf-fdw 2.7.0 u24.aarch64 pigsty 351.6 KiB postgresql-15-rdf-fdw_2.7.0-1PIGSTY~noble_arm64.deb
postgresql-15-rdf-fdw 2.7.0 u26.x86_64 pigsty 353.7 KiB postgresql-15-rdf-fdw_2.7.0-1PIGSTY~resolute_amd64.deb
postgresql-15-rdf-fdw 2.7.0 u26.aarch64 pigsty 348.9 KiB postgresql-15-rdf-fdw_2.7.0-1PIGSTY~resolute_arm64.deb
Package Version OS ORG SIZE File URL
rdf_fdw_14 2.7.0 el8.x86_64 pigsty 152.9 KiB rdf_fdw_14-2.7.0-1PIGSTY.el8.x86_64.rpm
rdf_fdw_14 2.7.0 el8.aarch64 pigsty 143.7 KiB rdf_fdw_14-2.7.0-1PIGSTY.el8.aarch64.rpm
rdf_fdw_14 2.7.0 el9.x86_64 pigsty 148.0 KiB rdf_fdw_14-2.7.0-1PIGSTY.el9.x86_64.rpm
rdf_fdw_14 2.7.0 el9.aarch64 pigsty 143.2 KiB rdf_fdw_14-2.7.0-1PIGSTY.el9.aarch64.rpm
rdf_fdw_14 2.7.0 el10.x86_64 pigsty 148.6 KiB rdf_fdw_14-2.7.0-1PIGSTY.el10.x86_64.rpm
rdf_fdw_14 2.7.0 el10.aarch64 pigsty 144.8 KiB rdf_fdw_14-2.7.0-1PIGSTY.el10.aarch64.rpm
postgresql-14-rdf-fdw 2.7.0 d12.x86_64 pigsty 351.6 KiB postgresql-14-rdf-fdw_2.7.0-1PIGSTY~bookworm_amd64.deb
postgresql-14-rdf-fdw 2.7.0 d12.aarch64 pigsty 342.0 KiB postgresql-14-rdf-fdw_2.7.0-1PIGSTY~bookworm_arm64.deb
postgresql-14-rdf-fdw 2.7.0 d13.x86_64 pigsty 351.8 KiB postgresql-14-rdf-fdw_2.7.0-1PIGSTY~trixie_amd64.deb
postgresql-14-rdf-fdw 2.7.0 d13.aarch64 pigsty 343.0 KiB postgresql-14-rdf-fdw_2.7.0-1PIGSTY~trixie_arm64.deb
postgresql-14-rdf-fdw 2.7.0 u22.x86_64 pigsty 389.7 KiB postgresql-14-rdf-fdw_2.7.0-1PIGSTY~jammy_amd64.deb
postgresql-14-rdf-fdw 2.7.0 u22.aarch64 pigsty 384.2 KiB postgresql-14-rdf-fdw_2.7.0-1PIGSTY~jammy_arm64.deb
postgresql-14-rdf-fdw 2.7.0 u24.x86_64 pigsty 355.5 KiB postgresql-14-rdf-fdw_2.7.0-1PIGSTY~noble_amd64.deb
postgresql-14-rdf-fdw 2.7.0 u24.aarch64 pigsty 351.5 KiB postgresql-14-rdf-fdw_2.7.0-1PIGSTY~noble_arm64.deb
postgresql-14-rdf-fdw 2.7.0 u26.x86_64 pigsty 353.6 KiB postgresql-14-rdf-fdw_2.7.0-1PIGSTY~resolute_amd64.deb
postgresql-14-rdf-fdw 2.7.0 u26.aarch64 pigsty 348.7 KiB postgresql-14-rdf-fdw_2.7.0-1PIGSTY~resolute_arm64.deb

Source

pig build pkg rdf_fdw;		# build rpm/deb

Install

Make sure PGDG and PIGSTY repo available:

pig repo add pgsql -u   # add both repo and update cache

Install this extension with pig:

pig install rdf_fdw;		# install via package name, for the active PG version

pig install rdf_fdw -v 18;   # install for PG 18
pig install rdf_fdw -v 17;   # install for PG 17
pig install rdf_fdw -v 16;   # install for PG 16
pig install rdf_fdw -v 15;   # install for PG 15
pig install rdf_fdw -v 14;   # install for PG 14

Create this extension with:

CREATE EXTENSION rdf_fdw;

Usage

Sources:

rdf_fdw is a PostgreSQL foreign data wrapper for querying RDF triplestores over SPARQL endpoints. It exposes SPARQL result variables as foreign-table columns, supports pushdown for common SQL clauses, includes a native rdfnode type for RDF terms, provides SPARQL 1.1 helper functions, and can perform SPARQL INSERT, UPDATE, and DELETE through writable foreign tables.

v2.6.0 adds Bearer-token authentication through USER MAPPING, a max_response_size server option to cap HTTP response bodies, BCE date/timestamp cast handling, and many rdfnode parser/comparison fixes. v2.7 fixes RDF literal escaping for runs of trailing backslashes so literal content cannot break out into generated SPARQL syntax. It also initializes libcurl once per PostgreSQL backend instead of once per request.

Create the Extension

CREATE EXTENSION IF NOT EXISTS rdf_fdw;

SELECT rdf_fdw_version();
SELECT * FROM rdf_fdw_settings();

To install or update to the exact SQL version:

CREATE EXTENSION rdf_fdw WITH VERSION '2.7';
ALTER EXTENSION rdf_fdw UPDATE TO '2.7';

Register a SPARQL Endpoint

CREATE SERVER dbpedia
FOREIGN DATA WRAPPER rdf_fdw
OPTIONS (
  endpoint          'https://dbpedia.org/sparql',
  enable_pushdown   'true',
  request_timeout   '60',
  max_response_size '104857600',
  readonly          'true'
);

Useful server options include:

  • endpoint: SPARQL endpoint URL; required.
  • batch_size: number of rows per SPARQL UPDATE batch.
  • enable_pushdown: enables SQL-to-SPARQL pushdown.
  • format: expected SPARQL result MIME type.
  • http_proxy: proxy URL; proxy credentials belong in USER MAPPING.
  • connect_timeout: connection timeout.
  • request_timeout: complete HTTP request timeout.
  • max_response_size: maximum response body size in bytes; 0 means unlimited.
  • readonly: prevents INSERT, UPDATE, and DELETE before requests reach the endpoint.
  • request_redirect and request_max_redirect: redirect behavior.

Use max_response_size for public or untrusted endpoints because rdf_fdw loads retrieved RDF data into memory before converting it for PostgreSQL.

User Mapping

CREATE USER MAPPING FOR postgres
SERVER dbpedia
OPTIONS (
  user 'sparql_user',
  password 'secret'
);

v2.6.0 adds Bearer-token authentication:

CREATE USER MAPPING FOR postgres
SERVER dbpedia
OPTIONS (
  token 'eyJhbGciOi...'
);

Proxy credentials are also USER MAPPING options:

CREATE USER MAPPING FOR app_user
SERVER dbpedia
OPTIONS (
  proxy_user 'proxy-user',
  proxy_password 'proxy-secret'
);

Foreign Tables with rdfnode Columns

Declare foreign-table columns as rdfnode to preserve RDF terms, IRIs, blank nodes, language tags, and XSD datatypes.

CREATE FOREIGN TABLE dbpedia_films (
  film rdfnode OPTIONS (variable '?film'),
  name rdfnode OPTIONS (variable '?name'),
  year rdfnode OPTIONS (variable '?year')
)
SERVER dbpedia
OPTIONS (
  sparql $$
    SELECT ?film ?name ?year
    WHERE {
      ?film a dbo:Film ;
            rdfs:label ?name ;
            dbo:releaseDate ?year .
      FILTER (lang(?name) = 'en')
    }
  $$
);

Native PostgreSQL column types are deprecated for RDF values in v2.6.0. Existing native-typed tables continue to work, but they emit warnings and lose RDF term details.

Querying and Pushdown

SELECT film, sparql.lex(name) AS title
FROM dbpedia_films
WHERE name = '"The Matrix"@en'::rdfnode
ORDER BY year
LIMIT 10;

EXPLAIN (VERBOSE, COSTS OFF)
SELECT *
FROM dbpedia_films
WHERE film = '<http://dbpedia.org/resource/The_Matrix>'::rdfnode;

rdf_fdw can push down WHERE, LIMIT, ORDER BY, DISTINCT, and supported comparisons/functions. Use EXPLAIN VERBOSE to inspect the generated remote SPARQL.

Prefix Management

rdf_fdw provides catalog tables and helper functions under the sparql schema for reusable SPARQL prefixes:

SELECT sparql.add_context('default', 'Default SPARQL prefix context');
SELECT sparql.add_prefix('default', 'rdf',  'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
SELECT sparql.add_prefix('default', 'rdfs', 'http://www.w3.org/2000/01/rdf-schema#');
SELECT sparql.add_prefix('default', 'xsd',  'http://www.w3.org/2001/XMLSchema#');

Data Modification

Writable foreign tables can translate PostgreSQL INSERT, UPDATE, and DELETE into SPARQL UPDATE requests when the foreign table has the required SPARQL update pattern.

ALTER FOREIGN TABLE dbpedia_films OPTIONS (ADD readonly 'false');

INSERT INTO dbpedia_films(film, name)
VALUES (
  '<http://example.org/film/1>'::rdfnode,
  '"Example Film"@en'::rdfnode
);

Use readonly = true at the server or table level when an endpoint should never receive writes.

Clone a Foreign Table

CALL rdf_fdw_clone_table(
  foreign_table := 'dbpedia_films',
  target_table  := 'dbpedia_films_local',
  fetch_size    := 1000,
  create_table  := true
);

rdf_fdw_clone_table() copies data from a foreign table into a local table in batches. v2.5 fixed several round-trip issues for RDF terms during cloning.

SPARQL Functions

The sparql schema implements many SPARQL 1.1 functions and aggregates, including:

  • aggregates such as sparql.sum, sparql.avg, sparql.min, sparql.max, sparql.group_concat, and sparql.sample
  • RDF term helpers such as sparql.isiri, sparql.isblank, sparql.isliteral, sparql.datatype, sparql.iri, sparql.strdt, and sparql.strlang
  • string functions such as sparql.strlen, sparql.substr, sparql.ucase, sparql.lcase, sparql.contains, and sparql.replace
  • numeric, date/time, hash, and custom convenience functions

Caveats

  • PostgreSQL 9.5 or newer is the upstream baseline.
  • Retrieved RDF data is accumulated in memory before conversion. Set max_response_size, use LIMIT, and keep remote result sets bounded.
  • Prefer rdfnode columns. Native PostgreSQL typed columns are deprecated for RDF terms and will lose IRI/language/datatype information.
  • Store secrets in USER MAPPING; do not put proxy credentials or endpoint tokens into SERVER options.
  • Public SPARQL endpoints can be slow or rate-limited. Use connect_timeout, request_timeout, retries, and local materialization when needed.
  • Upgrade to 2.7 before accepting untrusted literal content in pushed-down filters or writable foreign-table operations; the libcurl lifecycle fix is internal and adds no new SQL configuration.