1

これは、 JavaScript オブジェクトを確実にハッシュする方法とほぼ同じです。、誰かがJavaScriptオブジェクトを確実にハッシュしたい場合;

json-ld 仕様が検証されたので、json オブジェクトを正規化する潜在的な方法として宣伝されている正規化手順があることがわかりました。

RDF データセットの正規化アルゴリズムを使用してデータを正規化し、出力を正規化された NQuads 形式にダンプします。次に、NQuads を SHA-256 または同様のアルゴリズムで処理して、データセットの内容の決定論的ハッシュを取得できます。

json オブジェクトのハッシュを構築するのは常に苦痛でした。

sha1(JSON.stringify(object))

動作しないか、実装間で同じように動作することが保証されていません (キーの順序は例では定義されていません)。

json-ld は宣伝どおりに機能しますか? オブジェクトをハッシュするためのユニバーサル json 正規化手順として使用しても安全ですか? これらのオブジェクトは標準の json オブジェクトにすることができますか、それとも正規化するために json-ld 装飾 (@context,..) が必要ですか?

4

1 に答える 1

4

はい、正規化は JSON-LD で機能しますが、オブジェクトが RDF を生成するには、(@context プロパティを介して) コンテキストをオブジェクトに与える必要があります。NQuads 形式で決定論的に出力されるのは RDF です (たとえば、ハッシュ化できます)。

JSON-LD ドキュメントのプロパティが @context で定義されていない場合、処理中に削除されます。JSON-LD では、ドキュメント内のプロパティに URL を関連付けることで、グローバルな意味 (セマンティクス) を提供する必要があります。これらの URL は、プロパティ、その範囲、ドメインなどの意味に関する機械可読な情報をさらに提供する場合があります。このようにして、データは「リンク」されます。両方のコンテキストで、1 つの API から JSON ドキュメントの意味を理解できます。また、ドキュメントを (HTTP 経由で) 走査して詳細情報を見つけることができます。

したがって、主な質問に対する簡単な答えは、「はい、JSON-LD 正規化を使用して JSON オブジェクトの一意のハッシュを作成できます」ですが、注意点は、JSON オブジェクトは JSON-LD オブジェクトである必要があるということです。 JSON のサブセット。正規化アルゴリズムが発明された主な理由の 1 つは、比較のためにグラフ (JSON-LD ドキュメント) をハッシュし、デジタル署名するためでした。

于 2014-07-13T20:23:54.657 に答える