rdf_fdw
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
rdf_fdw | 2.5.0 | FDW | MIT | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 8760 | rdf_fdw | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | wrappers multicorn postgres_fdw sparql |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 2.5.0 | 1817161514 | rdf_fdw | - |
| RPM | PIGSTY | 2.5.0 | 1817161514 | rdf_fdw_$v | - |
| DEB | PIGSTY | 2.5.0 | 1817161514 | postgresql-$v-rdf-fdw | - |
构建
您可以使用 pig build 命令构建 rdf_fdw 扩展的 RPM / DEB 包:
pig build pkg rdf_fdw # 构建 RPM / DEB 包
安装
您可以直接安装 rdf_fdw 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
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_sizeenable_pushdownformathttp_proxyconnect_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 与辅助函数
上游文档明确点名支持这些下推:
WHERELIMITORDER BYDISTINCT
它也记录了数据修改支持:
INSERTUPDATEDELETE
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+。