数据规范化:JSON-LD To 标准化形式 — Numio
使用 jsonld.normalize 及其默认的 URDNA2015 算法,将 JSON-LD 规范化为排好序的 N-Quads。空白节点获得确定的标签(_:c14n0、_:c14n1),因此相同的图会得到完全相同的文本。
生成 Verifiable Credentials 和 Linked Data Proofs 中用于哈希或签名的规范形式。
适用场景
- 生成 Verifiable Credentials 和 Linked Data Proofs 中用于哈希或签名的规范形式。
- 检查布局或 context 不同的两个 JSON-LD 文档是否描述同一个图。
使用方法
- 将 JSON-LD 文档粘贴到 JSON-LD 编辑器。
- 查看规范化的 N-Quads:每行一个三元组,已排序,空白节点重命名为 _:c14nN。
- 对输出文本做 diff 或哈希来比较图。
JSON-LD
{
"@context": {"@vocab": "http://schema.org/"},
"@type": "Person",
"name": "Jane Doe",
"address": {
"@type": "PostalAddress",
"addressLocality": "Seattle"
}
}规范化 N-Quads
_:c14n0 <http://schema.org/addressLocality> "Seattle" . _:c14n0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/PostalAddress> . _:c14n1 <http://schema.org/address> _:c14n0 . _:c14n1 <http://schema.org/name> "Jane Doe" . _:c14n1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person> .
功能与限制
页面调用 normalize 时不传选项,因此 jsonld.js 使用 URDNA2015 并输出 N-Quads。
空白节点标签取决于图的内容,而不是 JSON 中键的顺序。
在浏览器中运行;远程 @context URL 由浏览器获取。下载失败时,页面会显示包含该 context URL 的错误。
FAQ
这与 JSON-LD to N-Quads 页面有什么区别?
两者都输出 N-Quads。本页面会以规范方式重新标记空白节点(_:c14n0)并对行排序;N-Quads 页面保留处理器分配的 _:b0 这类标签。
使用的是哪种规范化算法?
URDNA2015,即 jsonld.js 的默认算法,已由 W3C 标准化为 RDF Dataset Canonicalization(RDFC-1.0)。
为什么输出中缺少某个属性?
未在 @context 中定义的键无法展开为 IRI,在转换为 quad 之前就被丢弃了。