rdf_fdw
Overview
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 8760 | rdf_fdw | No | Yes | No | Yes | No | No | sparql |
Package 3.0.0; SQL extension 3.0. Upgrades from 2.x require the upstream rdfnode index and dependent-object migration; REINDEX alone is insufficient.
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| EXT | PIGSTY | 3.0 | 1817161514 | rdf_fdw | - |
| RPM | PIGSTY | 3.0.0 | 1817161514 | rdf_fdw_$v | - |
| DEB | PIGSTY | 3.0.0 | 1817161514 | postgresql-$v-rdf-fdw | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY 3.0.0 el8.x86_64.pg18 : rdf_fdw_18 rdf_fdw_18-3.0.0-1PGSTY.el8.x86_64.rpm
| PIGSTY 3.0.0 el8.x86_64.pg17 : rdf_fdw_17 rdf_fdw_17-3.0.0-1PGSTY.el8.x86_64.rpm
| PIGSTY 3.0.0 el8.x86_64.pg16 : rdf_fdw_16 rdf_fdw_16-3.0.0-1PGSTY.el8.x86_64.rpm
| PIGSTY 3.0.0 el8.x86_64.pg15 : rdf_fdw_15 rdf_fdw_15-3.0.0-1PGSTY.el8.x86_64.rpm
| PIGSTY 3.0.0 el8.x86_64.pg14 : rdf_fdw_14 rdf_fdw_14-3.0.0-1PGSTY.el8.x86_64.rpm
|
| el8.aarch64 | PIGSTY 3.0.0 el8.aarch64.pg18 : rdf_fdw_18 rdf_fdw_18-3.0.0-1PGSTY.el8.aarch64.rpm
| PIGSTY 3.0.0 el8.aarch64.pg17 : rdf_fdw_17 rdf_fdw_17-3.0.0-1PGSTY.el8.aarch64.rpm
| PIGSTY 3.0.0 el8.aarch64.pg16 : rdf_fdw_16 rdf_fdw_16-3.0.0-1PGSTY.el8.aarch64.rpm
| PIGSTY 3.0.0 el8.aarch64.pg15 : rdf_fdw_15 rdf_fdw_15-3.0.0-1PGSTY.el8.aarch64.rpm
| PIGSTY 3.0.0 el8.aarch64.pg14 : rdf_fdw_14 rdf_fdw_14-3.0.0-1PGSTY.el8.aarch64.rpm
|
| el9.x86_64 | PIGSTY 3.0.0 el9.x86_64.pg18 : rdf_fdw_18 rdf_fdw_18-3.0.0-1PGSTY.el9.x86_64.rpm
| PIGSTY 3.0.0 el9.x86_64.pg17 : rdf_fdw_17 rdf_fdw_17-3.0.0-1PGSTY.el9.x86_64.rpm
| PIGSTY 3.0.0 el9.x86_64.pg16 : rdf_fdw_16 rdf_fdw_16-3.0.0-1PGSTY.el9.x86_64.rpm
| PIGSTY 3.0.0 el9.x86_64.pg15 : rdf_fdw_15 rdf_fdw_15-3.0.0-1PGSTY.el9.x86_64.rpm
| PIGSTY 3.0.0 el9.x86_64.pg14 : rdf_fdw_14 rdf_fdw_14-3.0.0-1PGSTY.el9.x86_64.rpm
|
| el9.aarch64 | PIGSTY 3.0.0 el9.aarch64.pg18 : rdf_fdw_18 rdf_fdw_18-3.0.0-1PGSTY.el9.aarch64.rpm
| PIGSTY 3.0.0 el9.aarch64.pg17 : rdf_fdw_17 rdf_fdw_17-3.0.0-1PGSTY.el9.aarch64.rpm
| PIGSTY 3.0.0 el9.aarch64.pg16 : rdf_fdw_16 rdf_fdw_16-3.0.0-1PGSTY.el9.aarch64.rpm
| PIGSTY 3.0.0 el9.aarch64.pg15 : rdf_fdw_15 rdf_fdw_15-3.0.0-1PGSTY.el9.aarch64.rpm
| PIGSTY 3.0.0 el9.aarch64.pg14 : rdf_fdw_14 rdf_fdw_14-3.0.0-1PGSTY.el9.aarch64.rpm
|
| el10.x86_64 | PIGSTY 3.0.0 el10.x86_64.pg18 : rdf_fdw_18 rdf_fdw_18-3.0.0-1PGSTY.el10.x86_64.rpm
| PIGSTY 3.0.0 el10.x86_64.pg17 : rdf_fdw_17 rdf_fdw_17-3.0.0-1PGSTY.el10.x86_64.rpm
| PIGSTY 3.0.0 el10.x86_64.pg16 : rdf_fdw_16 rdf_fdw_16-3.0.0-1PGSTY.el10.x86_64.rpm
| PIGSTY 3.0.0 el10.x86_64.pg15 : rdf_fdw_15 rdf_fdw_15-3.0.0-1PGSTY.el10.x86_64.rpm
| PIGSTY 3.0.0 el10.x86_64.pg14 : rdf_fdw_14 rdf_fdw_14-3.0.0-1PGSTY.el10.x86_64.rpm
|
| el10.aarch64 | PIGSTY 3.0.0 el10.aarch64.pg18 : rdf_fdw_18 rdf_fdw_18-3.0.0-1PGSTY.el10.aarch64.rpm
| PIGSTY 3.0.0 el10.aarch64.pg17 : rdf_fdw_17 rdf_fdw_17-3.0.0-1PGSTY.el10.aarch64.rpm
| PIGSTY 3.0.0 el10.aarch64.pg16 : rdf_fdw_16 rdf_fdw_16-3.0.0-1PGSTY.el10.aarch64.rpm
| PIGSTY 3.0.0 el10.aarch64.pg15 : rdf_fdw_15 rdf_fdw_15-3.0.0-1PGSTY.el10.aarch64.rpm
| PIGSTY 3.0.0 el10.aarch64.pg14 : rdf_fdw_14 rdf_fdw_14-3.0.0-1PGSTY.el10.aarch64.rpm
|
| d12.x86_64 | PIGSTY 3.0.0 d12.x86_64.pg18 : postgresql-18-rdf-fdw postgresql-18-rdf-fdw_3.0.0-1PGSTY~bookworm_amd64.deb
| PIGSTY 3.0.0 d12.x86_64.pg17 : postgresql-17-rdf-fdw postgresql-17-rdf-fdw_3.0.0-1PGSTY~bookworm_amd64.deb
| PIGSTY 3.0.0 d12.x86_64.pg16 : postgresql-16-rdf-fdw postgresql-16-rdf-fdw_3.0.0-1PGSTY~bookworm_amd64.deb
| PIGSTY 3.0.0 d12.x86_64.pg15 : postgresql-15-rdf-fdw postgresql-15-rdf-fdw_3.0.0-1PGSTY~bookworm_amd64.deb
| PIGSTY 3.0.0 d12.x86_64.pg14 : postgresql-14-rdf-fdw postgresql-14-rdf-fdw_3.0.0-1PGSTY~bookworm_amd64.deb
|
| d12.aarch64 | PIGSTY 3.0.0 d12.aarch64.pg18 : postgresql-18-rdf-fdw postgresql-18-rdf-fdw_3.0.0-1PGSTY~bookworm_arm64.deb
| PIGSTY 3.0.0 d12.aarch64.pg17 : postgresql-17-rdf-fdw postgresql-17-rdf-fdw_3.0.0-1PGSTY~bookworm_arm64.deb
| PIGSTY 3.0.0 d12.aarch64.pg16 : postgresql-16-rdf-fdw postgresql-16-rdf-fdw_3.0.0-1PGSTY~bookworm_arm64.deb
| PIGSTY 3.0.0 d12.aarch64.pg15 : postgresql-15-rdf-fdw postgresql-15-rdf-fdw_3.0.0-1PGSTY~bookworm_arm64.deb
| PIGSTY 3.0.0 d12.aarch64.pg14 : postgresql-14-rdf-fdw postgresql-14-rdf-fdw_3.0.0-1PGSTY~bookworm_arm64.deb
|
| d13.x86_64 | PIGSTY 3.0.0 d13.x86_64.pg18 : postgresql-18-rdf-fdw postgresql-18-rdf-fdw_3.0.0-1PGSTY~trixie_amd64.deb
| PIGSTY 3.0.0 d13.x86_64.pg17 : postgresql-17-rdf-fdw postgresql-17-rdf-fdw_3.0.0-1PGSTY~trixie_amd64.deb
| PIGSTY 3.0.0 d13.x86_64.pg16 : postgresql-16-rdf-fdw postgresql-16-rdf-fdw_3.0.0-1PGSTY~trixie_amd64.deb
| PIGSTY 3.0.0 d13.x86_64.pg15 : postgresql-15-rdf-fdw postgresql-15-rdf-fdw_3.0.0-1PGSTY~trixie_amd64.deb
| PIGSTY 3.0.0 d13.x86_64.pg14 : postgresql-14-rdf-fdw postgresql-14-rdf-fdw_3.0.0-1PGSTY~trixie_amd64.deb
|
| d13.aarch64 | PIGSTY 3.0.0 d13.aarch64.pg18 : postgresql-18-rdf-fdw postgresql-18-rdf-fdw_3.0.0-1PGSTY~trixie_arm64.deb
| PIGSTY 3.0.0 d13.aarch64.pg17 : postgresql-17-rdf-fdw postgresql-17-rdf-fdw_3.0.0-1PGSTY~trixie_arm64.deb
| PIGSTY 3.0.0 d13.aarch64.pg16 : postgresql-16-rdf-fdw postgresql-16-rdf-fdw_3.0.0-1PGSTY~trixie_arm64.deb
| PIGSTY 3.0.0 d13.aarch64.pg15 : postgresql-15-rdf-fdw postgresql-15-rdf-fdw_3.0.0-1PGSTY~trixie_arm64.deb
| PIGSTY 3.0.0 d13.aarch64.pg14 : postgresql-14-rdf-fdw postgresql-14-rdf-fdw_3.0.0-1PGSTY~trixie_arm64.deb
|
| u22.x86_64 | PIGSTY 3.0.0 u22.x86_64.pg18 : postgresql-18-rdf-fdw postgresql-18-rdf-fdw_3.0.0-1PGSTY~jammy_amd64.deb
| PIGSTY 3.0.0 u22.x86_64.pg17 : postgresql-17-rdf-fdw postgresql-17-rdf-fdw_3.0.0-1PGSTY~jammy_amd64.deb
| PIGSTY 3.0.0 u22.x86_64.pg16 : postgresql-16-rdf-fdw postgresql-16-rdf-fdw_3.0.0-1PGSTY~jammy_amd64.deb
| PIGSTY 3.0.0 u22.x86_64.pg15 : postgresql-15-rdf-fdw postgresql-15-rdf-fdw_3.0.0-1PGSTY~jammy_amd64.deb
| PIGSTY 3.0.0 u22.x86_64.pg14 : postgresql-14-rdf-fdw postgresql-14-rdf-fdw_3.0.0-1PGSTY~jammy_amd64.deb
|
| u22.aarch64 | PIGSTY 3.0.0 u22.aarch64.pg18 : postgresql-18-rdf-fdw postgresql-18-rdf-fdw_3.0.0-1PGSTY~jammy_arm64.deb
| PIGSTY 3.0.0 u22.aarch64.pg17 : postgresql-17-rdf-fdw postgresql-17-rdf-fdw_3.0.0-1PGSTY~jammy_arm64.deb
| PIGSTY 3.0.0 u22.aarch64.pg16 : postgresql-16-rdf-fdw postgresql-16-rdf-fdw_3.0.0-1PGSTY~jammy_arm64.deb
| PIGSTY 3.0.0 u22.aarch64.pg15 : postgresql-15-rdf-fdw postgresql-15-rdf-fdw_3.0.0-1PGSTY~jammy_arm64.deb
| PIGSTY 3.0.0 u22.aarch64.pg14 : postgresql-14-rdf-fdw postgresql-14-rdf-fdw_3.0.0-1PGSTY~jammy_arm64.deb
|
| u24.x86_64 | PIGSTY 3.0.0 u24.x86_64.pg18 : postgresql-18-rdf-fdw postgresql-18-rdf-fdw_3.0.0-1PGSTY~noble_amd64.deb
| PIGSTY 3.0.0 u24.x86_64.pg17 : postgresql-17-rdf-fdw postgresql-17-rdf-fdw_3.0.0-1PGSTY~noble_amd64.deb
| PIGSTY 3.0.0 u24.x86_64.pg16 : postgresql-16-rdf-fdw postgresql-16-rdf-fdw_3.0.0-1PGSTY~noble_amd64.deb
| PIGSTY 3.0.0 u24.x86_64.pg15 : postgresql-15-rdf-fdw postgresql-15-rdf-fdw_3.0.0-1PGSTY~noble_amd64.deb
| PIGSTY 3.0.0 u24.x86_64.pg14 : postgresql-14-rdf-fdw postgresql-14-rdf-fdw_3.0.0-1PGSTY~noble_amd64.deb
|
| u24.aarch64 | PIGSTY 3.0.0 u24.aarch64.pg18 : postgresql-18-rdf-fdw postgresql-18-rdf-fdw_3.0.0-1PGSTY~noble_arm64.deb
| PIGSTY 3.0.0 u24.aarch64.pg17 : postgresql-17-rdf-fdw postgresql-17-rdf-fdw_3.0.0-1PGSTY~noble_arm64.deb
| PIGSTY 3.0.0 u24.aarch64.pg16 : postgresql-16-rdf-fdw postgresql-16-rdf-fdw_3.0.0-1PGSTY~noble_arm64.deb
| PIGSTY 3.0.0 u24.aarch64.pg15 : postgresql-15-rdf-fdw postgresql-15-rdf-fdw_3.0.0-1PGSTY~noble_arm64.deb
| PIGSTY 3.0.0 u24.aarch64.pg14 : postgresql-14-rdf-fdw postgresql-14-rdf-fdw_3.0.0-1PGSTY~noble_arm64.deb
|
| u26.x86_64 | PIGSTY 3.0.0 u26.x86_64.pg18 : postgresql-18-rdf-fdw postgresql-18-rdf-fdw_3.0.0-1PGSTY~resolute_amd64.deb
| PIGSTY 3.0.0 u26.x86_64.pg17 : postgresql-17-rdf-fdw postgresql-17-rdf-fdw_3.0.0-1PGSTY~resolute_amd64.deb
| PIGSTY 3.0.0 u26.x86_64.pg16 : postgresql-16-rdf-fdw postgresql-16-rdf-fdw_3.0.0-1PGSTY~resolute_amd64.deb
| PIGSTY 3.0.0 u26.x86_64.pg15 : postgresql-15-rdf-fdw postgresql-15-rdf-fdw_3.0.0-1PGSTY~resolute_amd64.deb
| PIGSTY 3.0.0 u26.x86_64.pg14 : postgresql-14-rdf-fdw postgresql-14-rdf-fdw_3.0.0-1PGSTY~resolute_amd64.deb
|
| u26.aarch64 | PIGSTY 3.0.0 u26.aarch64.pg18 : postgresql-18-rdf-fdw postgresql-18-rdf-fdw_3.0.0-1PGSTY~resolute_arm64.deb
| PIGSTY 3.0.0 u26.aarch64.pg17 : postgresql-17-rdf-fdw postgresql-17-rdf-fdw_3.0.0-1PGSTY~resolute_arm64.deb
| PIGSTY 3.0.0 u26.aarch64.pg16 : postgresql-16-rdf-fdw postgresql-16-rdf-fdw_3.0.0-1PGSTY~resolute_arm64.deb
| PIGSTY 3.0.0 u26.aarch64.pg15 : postgresql-15-rdf-fdw postgresql-15-rdf-fdw_3.0.0-1PGSTY~resolute_arm64.deb
| PIGSTY 3.0.0 u26.aarch64.pg14 : postgresql-14-rdf-fdw postgresql-14-rdf-fdw_3.0.0-1PGSTY~resolute_arm64.deb
|
Build
You can build the RPM / DEB packages for rdf_fdw using pig build:
Install
You can install rdf_fdw directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:
Install the extension using pig or apt/yum/dnf:
Create Extension:
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.
Distribution 3.0.0 provides SQL extension 3.0. This release repairs RDF comparison, arithmetic and pushdown correctness. GROUP BY, DISTINCT, UNION and unique constraints distinguish RDF term spelling; sparql.uri() now returns rdfnode, so text assignments need an explicit cast. Some unsafe pushdown cases execute locally.
Create the Extension
Before upgrading from 2.x, save and drop indexes on rdfnode columns, and dependent views, materialized views or SQL-body functions that sort, group or deduplicate them. Recreate these objects after the upgrade; REINDEX alone is insufficient. Use the appropriate command for a fresh installation or a prepared upgrade:
Register a SPARQL Endpoint
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 inUSER MAPPING.connect_timeout: connection timeout.request_timeout: complete HTTP request timeout.max_response_size: maximum response body size in bytes;0means unlimited.readonly: preventsINSERT,UPDATE, andDELETEbefore requests reach the endpoint.request_max_redirect:0refuses redirects; a positive value enables and limits them.-1is rejected.request_redirectis deprecated.
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
v2.6.0 adds Bearer-token authentication:
Proxy credentials are also USER MAPPING options:
Foreign Tables with rdfnode Columns
Declare foreign-table columns as rdfnode to preserve RDF terms, IRIs, blank nodes, language tags, and XSD datatypes.
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
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:
Data Modification
Writable foreign tables translate PostgreSQL INSERT, UPDATE, and DELETE into SPARQL UPDATE requests. The example assumes an administrator-created rdf_write server connected to a writable endpoint you control; keep the public DBpedia server read-only. Every update-pattern variable must map to a non-null rdfnode column, and sparql_update_pattern is mandatory.
Use readonly = true to disable writes for a server or table. An explicit table setting of readonly = false overrides a server setting of readonly = true; enforce read-only access at the remote endpoint with its credentials and access controls when writes must be prohibited.
Each remote write is committed immediately by the triplestore. PostgreSQL ROLLBACK does not undo it; plan application-level compensation and do not assume cross-system atomicity.
Clone a Foreign Table
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, andsparql.sample - RDF term helpers such as
sparql.isiri,sparql.isblank,sparql.isliteral,sparql.datatype,sparql.iri,sparql.strdt, andsparql.strlang - string functions such as
sparql.strlen,sparql.substr,sparql.ucase,sparql.lcase,sparql.contains, andsparql.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, useLIMIT, and keep remote result sets bounded. - Prefer
rdfnodecolumns. 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 intoSERVERoptions. - Public SPARQL endpoints can be slow or rate-limited. Use
connect_timeout,request_timeout, retries, and local materialization when needed. - The extension is not relocatable in 3.0 and also creates the fixed
sparqlschema. Review the 3.0 migration requirements before changing existing installations.
Was this page helpful?
Thanks—your feedback helps us improve this page.
What got in the way? (optional)