JSON-LDを正規化形式に変換 — Numio
jsonld.normalize とそのデフォルトの URDNA2015 アルゴリズムで、JSON-LD をソート済みの N-Quads に正規化します。空白ノードには決定的なラベル(_:c14n0、_:c14n1)が付くので、等しいグラフからは同一のテキストが得られます。
Verifiable Credentials や Linked Data Proofs でハッシュ化・署名される正規形を作る。
こんなときに使えます
- Verifiable Credentials や Linked Data Proofs でハッシュ化・署名される正規形を作る。
- レイアウトや context の異なる 2 つの JSON-LD ドキュメントが同じグラフを表しているかを確認する。
使い方
- JSON-LD ドキュメントを JSON-LD エディターに貼り付けます。
- 正規化された N-Quads を確認します。1 行に 1 トリプルでソートされ、空白ノードは _: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 のようなラベルをそのまま使います。
どの正規化アルゴリズムを使っていますか?
jsonld.js のデフォルトである URDNA2015 です。W3C により RDF Dataset Canonicalization(RDFC-1.0)として標準化されています。
出力にプロパティがないのはなぜですか?
@context で定義されていないキーは IRI に展開されず、quad への変換前に削除されます。