本文へスキップ

JSON-LDを正規化形式に変換 — Numio

jsonld.normalize とそのデフォルトの URDNA2015 アルゴリズムで、JSON-LD をソート済みの N-Quads に正規化します。空白ノードには決定的なラベル(_:c14n0、_:c14n1)が付くので、等しいグラフからは同一のテキストが得られます。

Verifiable Credentials や Linked Data Proofs でハッシュ化・署名される正規形を作る。

JSON-LD

Normalized

こんなときに使えます

  • Verifiable Credentials や Linked Data Proofs でハッシュ化・署名される正規形を作る。
  • レイアウトや context の異なる 2 つの JSON-LD ドキュメントが同じグラフを表しているかを確認する。

使い方

  1. JSON-LD ドキュメントを JSON-LD エディターに貼り付けます。
  2. 正規化された N-Quads を確認します。1 行に 1 トリプルでソートされ、空白ノードは _:c14nN にリネームされています。
  3. 出力テキストを 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 への変換前に削除されます。

仕様を確認する