rdf_fdw

通过 SPARQL 端点访问 RDF 三元组存储的 FDW

概览

扩展包名版本分类许可证语言
rdf_fdw2.5.0FDWMITC
ID扩展名BinLibLoadCreateTrustReloc模式
8760rdf_fdw-
相关扩展wrappers multicorn postgres_fdw sparql

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY2.5.01817161514rdf_fdw-
RPMPIGSTY2.5.01817161514rdf_fdw_$v-
DEBPIGSTY2.5.01817161514postgresql-$v-rdf-fdw-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
u22.x86_64
u22.aarch64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
u24.x86_64
u24.aarch64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
u26.x86_64
u26.aarch64

构建

您可以使用 pig build 命令构建 rdf_fdw 扩展的 RPM / DEB 包:

pig build pkg rdf_fdw         # 构建 RPM / DEB 包

安装

您可以直接安装 rdf_fdw 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install rdf_fdw;          # 当前活跃 PG 版本安装
pig ext install -y rdf_fdw -v 18  # PG 18
pig ext install -y rdf_fdw -v 17  # PG 17
pig ext install -y rdf_fdw -v 16  # PG 16
pig ext install -y rdf_fdw -v 15  # PG 15
pig ext install -y rdf_fdw -v 14  # PG 14
dnf install -y rdf_fdw_18       # PG 18
dnf install -y rdf_fdw_17       # PG 17
dnf install -y rdf_fdw_16       # PG 16
dnf install -y rdf_fdw_15       # PG 15
dnf install -y rdf_fdw_14       # PG 14
apt install -y postgresql-18-rdf-fdw   # PG 18
apt install -y postgresql-17-rdf-fdw   # PG 17
apt install -y postgresql-16-rdf-fdw   # PG 16
apt install -y postgresql-15-rdf-fdw   # PG 15
apt install -y postgresql-14-rdf-fdw   # PG 14

创建扩展

CREATE EXTENSION rdf_fdw;

用法

来源:README, v2.4 release

rdf_fdw 是面向 RDF triplestore 的 foreign data wrapper,通过 SPARQL endpoint 暴露数据。它允许 PostgreSQL 用 SQL 查询 RDF 数据,支持 SQL 子句下推,提供用于 RDF term 的 rdfnode 类型,并包含 SPARQL 1.1 函数支持。

注册 SPARQL Endpoint

使用 CREATE SERVER 注册一个 SPARQL endpoint:

CREATE SERVER dbpedia
FOREIGN DATA WRAPPER rdf_fdw
OPTIONS (endpoint 'https://dbpedia.org/sparql');

README 记录的 server options 包括:

  • endpoint(必需)
  • batch_size
  • enable_pushdown
  • format
  • http_proxy
  • connect_timeout

v2.4 把代理凭据从 SERVER options 挪到了 USER MAPPING,以降低凭据暴露风险。

用户映射与外部表

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

rdf_fdw 通过声明外部表来嵌入 SPARQL 查询,并把结果变量映射到 PostgreSQL 列。README 也特别强调了通过自定义 rdfnode 类型对 RDF node 的原生处理。

CREATE FOREIGN TABLE film (
  film_id text OPTIONS (variable '?film', nodetype 'iri'),
  name text OPTIONS (variable '?name', nodetype 'literal', literal_type 'xsd:string')
)
SERVER dbpedia
OPTIONS (sparql 'SELECT ?film ?name WHERE { ?film dbp:name ?name }');

下推、DML 与辅助函数

上游文档明确点名支持这些下推:

  • WHERE
  • LIMIT
  • ORDER BY
  • DISTINCT

它也记录了数据修改支持:

  • INSERT
  • UPDATE
  • DELETE

SPARQL UPDATE 的批处理粒度由 batch_size 控制。

README 列出的工具函数包括:

  • rdf_fdw_version()
  • rdf_fdw_settings()
  • rdf_fdw_clone_table()

它还说明扩展覆盖了更广泛的 SPARQL 函数,包括 aggregates、string functions、numeric functions、date/time functions、hash functions 和 custom functions。

注意事项

当前 README 警告:检索到的 RDF 数据会先完整载入内存,再转换为 PostgreSQL 表示,因此大结果集需要足够的 PostgreSQL 内存。文档声明的最低支持版本是 PostgreSQL 9.5+。


最后修改 2026-05-01: update extension data (e399d22)