---
title: "PurRDF 1.0：一个 RDF 引擎，一套行为，贯通各语言"
date: 2026-09-02
canonical: https://patrickaudley.com/#post-purrdf-1-0
cross-posted-from: https://www.linkedin.com/feed/update/urn:li:activity:7501321819077898240/
source-platform: LinkedIn
tags: [rdf, rdf-1.2, sparql, shacl, shex, semantic-web, knowledge-graphs, linked-data, rust, python, webassembly,
open-source]
mentions: [https://patrickaudley.com/#proj-purrdf]
author: Patrick Colm Audley
author-url: https://patrickaudley.com/
license: Creative Commons BY-NC-SA CAv2.5
lang: zh
---

# PurRDF 1.0：一个 RDF 引擎，一套行为，贯通各语言

> PurRDF 1.0 发布：一套 RDF 1.2 工具包，以 Rust 编写一次，并逐字节移植到
Python、WebAssembly/JavaScript 与
C。带排序的全文检索、空间谓词与向量相似度，均在同一数据集上由 SPARQL
于进程内直接应答——而这三件事，过去往往迫使 RDF 项目在三元组存储旁另设一个
PostgreSQL。

**PurRDF 1.0.0 已发布。**这是一套 RDF 1.2 工具包：以从零编写的 Rust
核心实现一次，再原样移植到 Python、WebAssembly/JavaScript 与 C。

它所针对的问题，是 RDF
工具在两个维度上的割裂。跨语言方面，每个生态都有自己的解析器，各带其缺陷与各自实现的规范子集；于是一张图从
Rust 服务流向 Python 管线、再流向浏览器，其含义已在无声中被改动三次。跨时间方面，RDF
1.2——三元组项、具体化节点、基础方向字面量——是该标准的当前修订版，而既有库几乎无一支持。

因此，引擎只实现一次。每个已发布的 crate 都可编译到 `wasm32-unknown-unknown`
；整个工作区亦刻意不设任何 Cargo feature flag：承载数据者，不应有可选行为。

在实践中我认为最有用的，是它从架构中*移除*了什么。通常迫使人们在三元组存储旁常驻一个
PostgreSQL 实例的三件事——带排序的全文检索、空间谓词与向量相似度——都在 PurRDF
内部作答：同一进程、同一数据集、同一条 SPARQL
查询，无需第二个数据库，也无需同步作业。全文排序采用精确定点 BM25，该 crate
内不含任何浮点运算。GeoSPARQL 1.1 将几何读作精确有理数，并在精确的 DE-9IM
上判定每一种拓扑关系，不依赖 GEOS 与
PROJ。最近邻检索是精确检索，而非近似。三者皆为确定性的：在服务器上与在浏览器标签页中，返回相同的行、相同的顺序——这是
Postgres 技术栈跨机器时并不给出的保证。

此外还包括：九种语法的原生 codec、RDFC-1.0 规范化、支持完整 Update 的 SPARQL 1.1/1.2
及受管控执行（宁可返回经认证的部分结果，也不给出错误答案）、SHACL Core 以及 SHACL-SPARQL
与 SHACL-AF、ShEx 2.1、自 RDFS、OWL 2 RL 直至 OWL 2 直接语义 tableau
的蕴涵机制——每次闭包都附带推理报告，使不完整的答案绝不会被当作完整答案交付——以及
GTS 单文件图传输。

两点实话。其一，1.0.0 并非功能版本：它就是 0.13.0 的代码树，经由 Trusted Publishing 在全部
21 个 crate 上重新发布。改变的是承诺本身。自 1.0.0
起，破坏性变更递增主版本号，次版本号只做增量添加，修订号只修缺陷。其二，C ABI
独立编号并仍处于 0.x；工作区的 1.0.0 对其不作任何承诺。GTS 覆盖 Rust、命令行工具、Python
与 C，但 WebAssembly 包并不暴露它。

每个引擎都由其官方测试套件把关，并已冻结在仓库内：shexTest 校验用例 1,105 / 1,105、W3C
SHACL 129 / 129、SPARQL 求值用例 862 项通过、语法往返 264 / 264，以及冻结的跨语言 GTS 向量。

若想不装任何东西就试用 RDF 1.2，可用浏览器
playground；若想按图索骥，则有配套手册。代码仓库已开放：[PurRDF](https://github.com/Blackcat-Informatics/purrdf)。

欢迎在 [X](https://x.com/paudley/status/2095558962779459703) 与
[r/semanticweb](https://www.reddit.com/r/semanticweb/comments/1w6dpk3/purrdf_100_a_fromscratch_rdf_12_sparql_shacl_shex/)
参与讨论。

---

*初次发布于 2026-09-02 — [LinkedIn](https://www.linkedin.com/feed/update/urn:li:activity:7501321819077898240/).
规范版本位于 <https://patrickaudley.com/#post-purrdf-1-0>. 作者：
[Patrick Colm Audley](https://patrickaudley.com/). *
