(57)【要約】【課題】２進形式のJavaScript  Object  Notation（ＪＳＯＮ）の使用なしでＪＳＯＮドキュメントを表すようEfficient  XML  Interchange（ＥＸＩ）ドキュメントを符号化する方法等を提供する。【解決手段】方法は、ＪＳＯＮドキュメントに関連するトークンの組をフェッチすることを有してよい。方法は、トークンの組に関連する１つ以上の終端タイプを決定することを更に有してよい。方法は、組に含まれるトークンの終端タイプに部分的に基づき、トークンの組に関連する１つ以上の現在の名称及び１つ以上の現在の距離を決定することを更に有してよい。方法は、ＪＳＯＮドキュメントに関連するトークンの組についての１つ以上の現在の名称及び１つ以上の現在の距離に基づき、ＪＳＯＮドキュメントを表すＥＸＩドキュメントを符号化することを更に有してよい。【選択図】図１Ｂ
2016085731.tif 000002
【特許請求の範囲】
【請求項１】
２進形式のJavaScript  Object  Notation（ＪＳＯＮ）の使用なしでＪＳＯＮドキュメントを表すようEfficient  XML  Interchange（ＥＸＩ）ドキュメントを符号化する方法であって、
ＪＳＯＮドキュメントに関連するトークンの組をフェッチし、
前記トークンの組に関連する１つ以上の終端タイプを決定し、
前記組に含まれるトークンの終端タイプに部分的に基づき、前記トークンの組に関連する１つ以上の現在の名称及び１つ以上の現在の距離を決定し、
前記符号化を実行するようプログラムされたプロセッサベースのコンピュータ装置によって、前記ＪＳＯＮドキュメントに関連する前記トークンの組についての前記１つ以上の現在の名称及び前記１つ以上の現在の距離に基づき、前記ＪＳＯＮドキュメントを表すＥＸＩドキュメントを符号化する
ことを有する方法。
【請求項２】
前記組に含まれるあるトークンについての終端タイプがＳＶであると決定することに応答して、当該方法は、当該トークンが所与の名称に関連するかどうかを判断することを更に有する、
請求項１に記載の方法。
【請求項３】
前記トークンが前記所与の名称に関連しないと決定することに応答して、当該方法は、
前記トークンについての有効な名称が前記トークンに関連する現在の名称であると決定し、
前記トークンについての有効な距離が前記トークンに関連する現在の距離であると決定し、
前記有効な名称及び前記有効な距離をハッシングすることによって文字列値パーティション及び値チャネルを決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記文字列値パーティション及び前記値チャネルを用いて符号化される、
請求項２に記載の方法。
【請求項４】
前記トークンが前記所与の名称に関連すると決定することに応答して、当該方法は、
前記トークンに関連する現在の名称が前記所与の名称であると決定し、
前記トークンについての有効な名称が前記現在の名称であると決定し、
前記トークンに関連する現在の距離を零に設定し、
前記トークンについての有効な距離が前記現在の距離であると決定し、
前記有効な名称及び前記有効な距離をハッシングすることによって文字列値パーティション及び値チャネルを決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記文字列値パーティション及び前記値チャネルを用いて符号化される、
請求項２に記載の方法。
【請求項５】
前記組に含まれるあるトークンについての終端タイプがＳＯであると決定することに応答して、当該方法は、
当該トークンについての有効な名称が当該トークンに関連する現在の名称であると決定し、
当該トークンについての有効な距離が当該トークンに関連する現在の距離であると決定し、
前記有効な名称及び前記有効な距離のハッシュに基づきオブジェクト文法を決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記オブジェクト文法を用いて符号化される、
請求項１に記載の方法。
【請求項６】
前記組に含まれるあるトークンについての終端タイプがＳＡであると決定することに応答して、当該方法は、
当該トークンについての有効な名称が当該トークンに関連する現在の名称であると決定し、
当該トークンについての有効な距離が当該トークンに関連する現在の距離であると決定し、
前記有効な名称及び前記有効な距離のハッシュに基づきアレイ文法を決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記アレイ文法を用いて符号化される、
請求項１に記載の方法。
【請求項７】
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、オブジェクト文法、アレイ文法及びドキュメント文法を含むＥＸＩ文法を用いて符号化される、
請求項１に記載の方法。
【請求項８】
前記オブジェクト文法は、前記ＥＸＩドキュメントによって表される前記ＪＳＯＮドキュメントに含まれる１つ以上のオブジェクトを記述する動的な文法を有する、
請求項７に記載の方法。
【請求項９】
前記アレイ文法は、前記ＥＸＩドキュメントによって表される前記ＪＳＯＮドキュメントに含まれる１つ以上のアレイを記述する動的な文法を有する、
請求項７に記載の方法。
【請求項１０】
前記ドキュメント文法は、前記ＥＸＩドキュメントによって表される前記ＪＳＯＮドキュメントのコンテンツを記述する静的な文法を有する、
請求項７に記載の方法。
【請求項１１】
JavaScript  Object  Notation（ＪＳＯＮ）ドキュメントに関連するトークンの組をフェッチし、
前記トークンの組に関連する１つ以上の終端タイプを決定し、
前記組に含まれるトークンの終端タイプに部分的に基づき、前記トークンの組に関連する１つ以上の現在の名称及び１つ以上の現在の距離を決定し、
符号化を実行するようプログラムされたプロセッサベースのコンピュータ装置によって、前記ＪＳＯＮドキュメントに関連する前記トークンの組についての前記１つ以上の現在の名称及び前記１つ以上の現在の距離に基づき、前記ＪＳＯＮドキュメントを表すEfficient  XML  Interchange（ＥＸＩ）ドキュメントを符号化する
動作を実行するか又は該動作の実行を制御するようプロセッシング装置によって実行可能なコンピュータ命令を記憶している非一時的なコンピュータ可読媒体。
【請求項１２】
前記組に含まれる前記トークンのうちの１つについての終端タイプがＳＶであると決定することに応答して、前記動作は、当該トークンが所与の名称に関連するかどうかを判断することを更に有する、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１３】
前記トークンが前記所与の名称に関連しないと決定することに応答して、前記動作は、
前記トークンについての有効な名称が前記トークンに関連する現在の名称であると決定し、
前記トークンについての有効な距離が前記トークンに関連する現在の距離であると決定し、
前記有効な名称及び前記有効な距離をハッシングすることによって文字列値パーティション及び値チャネルを決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記文字列値パーティション及び前記値チャネルを用いて符号化される、
請求項１２に記載の非一時的なコンピュータ可読媒体。
【請求項１４】
前記トークンが前記所与の名称に関連すると決定することに応答して、前記動作は、
前記トークンについての有効な名称が前記所与の名称であると決定し、
前記トークンについての有効な距離が零であると決定し、
前記有効な名称及び前記有効な距離をハッシングすることによって文字列値パーティション及び値チャネルを決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記文字列値パーティション及び前記値チャネルを用いて符号化される、
請求項１２に記載の非一時的なコンピュータ可読媒体。
【請求項１５】
前記組に含まれるあるトークンについての終端タイプがＳＯであると決定することに応答して、前記動作は、
当該トークンについての有効な名称が当該トークンに関連する現在の名称であると決定し、
当該トークンについての有効な距離が当該トークンに関連する現在の距離であると決定し、
前記有効な名称及び前記有効な距離のハッシュに基づきオブジェクト文法を決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記オブジェクト文法を用いて符号化される、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１６】
前記組に含まれるあるトークンについての終端タイプがＳＡであると決定することに応答して、前記動作は、
当該トークンについての有効な名称が当該トークンに関連する現在の名称であると決定し、
当該トークンについての有効な距離が当該トークンに関連する現在の距離であると決定し、
前記有効な名称及び前記有効な距離のハッシュに基づきアレイ文法を決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記アレイ文法を用いて符号化される、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１７】
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、オブジェクト文法、アレイ文法及びドキュメント文法を含むＥＸＩ文法を用いて符号化される、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１８】
前記オブジェクト文法は、前記ＥＸＩドキュメントによって表される前記ＪＳＯＮドキュメントに含まれる１つ以上のオブジェクトを記述する動的な文法を有する、
請求項１７に記載の非一時的なコンピュータ可読媒体。
【請求項１９】
前記アレイ文法は、前記ＥＸＩドキュメントによって表される前記ＪＳＯＮドキュメントに含まれる１つ以上のアレイを記述する動的な文法を有する、
請求項１７に記載の非一時的なコンピュータ可読媒体。
【請求項２０】
前記ドキュメント文法は、前記ＥＸＩドキュメントによって表される前記ＪＳＯＮドキュメントのコンテンツを記述する静的な文法を有する、
請求項１７に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
ここで論じられる実施形態は、JavaScript（登録商標）  Object  Notation（ＪＳＯＮ）ドキュメントを表すためのEfficient  XML  Interchange（ＥＸＩ）フォーマットに関する。
【背景技術】
【０００２】
Extensible  Markup  Language（ＸＭＬ）は、人間及び機械の両方が読むことができる平文フォーマットにおいてドキュメントを符号化するための規則の組を定義するマークアップ言語である。ＸＭＬの１つのバージョンは、２００８年１１月２６日付けでWorld  Wide  Web  Consortium（Ｗ３Ｃ）によって作成されたＸＭＬ１．０規格において定義される。この規格は、その全文を参照により本願に援用される。ＸＭＬ１．０規格は、適格且つ妥当であるテキストとしてＸＭＬドキュメントを定義する。
【０００３】
ＸＭＬスキーマは、ＸＭＬ１．０規格自体によって課されている基本的な構文制約に加えて、そのようなドキュメントの構造及びコンテンツに対する制約に関して通常は表現されるＸＭＬドキュメントの１タイプの記述である。それらの制約は、一般に、要素の順序を支配する文法規則と、コンテンツに関連するブーリンアン述語と、要素及び属性の中身を支配するデータタイプと、例えば一意性及び参照整合性制約などのより特別な規則との何らかの組み合わせを用いて表現される。ＸＭＬドキュメントがＸＭＬスキーマに従うかどうかを確認するようチェックするプロセスは、バリデーションと呼ばれており、統語的適格性についてのＸＭＬの中核概念とは別である。全てのＸＭＬドキュメントは、適格であるものとして定義されるが、あるＸＭＬドキュメントは、ＸＭＬプロセッサが“バリデーション”の最中であるところの妥当性のチェックにあり、その場合に、ＸＭＬドキュメントは、その関連するスキーマとの一致をチェックされる。
【０００４】
ＸＭＬドキュメントの平文の人間が読むことができる態様は、多くの状況において有益であり得るが、このような人間が読むことができる態様はまた、サイズが大きく、従って、メモリ又は記憶容量が限られた装置と互換性がないＸＭＬドキュメントを生じさせることがある。ＸＭＬドキュメントのサイズを低減する努力は、従って、よりコンパクトな２進表現を支持して、この平文の人間が読むことができる態様をしばしば排してきた。
【０００５】
ＥＸＩは、ＸＭＬドキュメントが平文よりむしろ２進データフォーマットにおいて符号化される２進ＸＭＬフォーマットである。一般に、２進ＸＭＬフォーマットを用いることは、ＸＭＬドキュメントのサイズ及び冗長を低減し、ＸＭＬドキュメントをパースすることに伴う時間及び努力に関してコストを減らすことができる。ＥＸＩは、２０１１年３月１０日付けでＷ３Ｃによって作成されたＥＸＩフォーマット１．０規格において公式に定義されている。この規格は、その全文を参照により本願に援用される。ＸＭＬドキュメントは、別個のＥＸＩストリームとしてＥＸＩフォーマットにおいて符号化されてよい。
【０００６】
スキーマ情報が利用可能でない場合に、又は利用可能なスキーマ情報がＥＸＩストリームの部分しか記述しない場合に、ＥＸＩは組み込み要素文法を用いる。組み込み要素文法は動的であり、ＥＸＩストリームを処理する間に学習された知識を反映するよう絶え間なく進化する。新しい組み込み要素文法は、新たに直面した要素のコンテンツを記述するために生成され、新しい文法プロダクションは、既存の組み込み文法を精緻化するために付加される。新たに学習された文法及びプロダクションは、ＥＸＩストリームにおける後続の要素をより有効に表すために使用される。
【０００７】
ＪＳＯＮは、軽量なデータ交換フォーマットである。ＪＳＯＮは、１つには人が読み書きするのが容易であると考えられることから、人気が高まりつつある。ＪＳＯＮは、如何なる言語にも依存しないテキストフォーマットであるが、例えばＣ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｐｅｒｌ（登録商標）、Ｐｙｔｈｏｎ（登録商標）、及び他などの、Ｃの流れをくむ言語になじみがあると考えられ得る仕様を使用する。ＪＳＯＮは、１つにはＣの流れをくむ言語との仕様の重なりのために、データ交換言語と見なされ得る。
【０００８】
ここで請求される対象は、上記のもののような環境においてしか動作しないか、あるいはあらゆる欠点を解決する実施形態に制限されない。むしろ、この背景は、ここで記載される幾つかの実施形態が実施され得る一例となる技術を説明するためにのみ与えられている。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記の背景技術を鑑み、本発明は、２進形式のJavaScript  Object  Notation（ＪＳＯＮ）の使用なしでＪＳＯＮドキュメントを表すようEfficient  XML  Interchange（ＥＸＩ）ドキュメントを符号化する方法及び非一時的なコンピュータ可読媒体を提供することを目的とする。
【課題を解決するための手段】
【００１０】
実施形態の態様に従って、２進形式のJavaScript  Object  Notation（ＪＳＯＮ）の使用なしでＪＳＯＮドキュメントを表すようEfficient  XML  Interchange（ＥＸＩ）ドキュメントを符号化する方法は、ＪＳＯＮドキュメントに関連するトークンの組をフェッチすることを有してよい。方法は、前記トークンの組に関連する１つ以上の終端タイプを決定することを更に有してよい。方法は、前記組に含まれるトークンの終端タイプに部分的に基づき、前記トークンの組に関連する１つ以上の現在の名称及び１つ以上の現在の距離を決定することを更に有してよい。方法は、前記ＪＳＯＮドキュメントに関連する前記トークンの組についての前記１つ以上の現在の名称及び前記１つ以上の現在の距離に基づき、前記ＪＳＯＮドキュメントを表すＥＸＩドキュメントを符号化することを更に有してよい。
【発明の効果】
【００１１】
本発明の実施形態によれば、２進形式のJavaScript  Object  Notation（ＪＳＯＮ）の使用なしでＪＳＯＮドキュメントを表すようEfficient  XML  Interchange（ＥＸＩ）ドキュメントを符号化することが可能となる。
【図面の簡単な説明】
【００１２】
例となる実施形態は、添付の図面の仕様を通じて、更なる特定及び詳細を持って記載され説明される。
【００１３】
【図１Ａ】例となるJavaScript  Object  Notation（ＪＳＯＮ）表現システムのブロック図である。
【図１Ｂ】例となるJavaScript  Object  Notation（ＪＳＯＮ）表現システムのブロック図である。
【００１４】
【図２】Efficient  XML  Interchange（ＥＸＩ）のための例となる組み込み要素文法を表す。
【００１５】
【図３】呼び出し前後のＥＸＩのための例となる組み込み要素文法を表す。
【００１６】
【図４】ＥＸＩ文法の一例のブロック図である。
【００１７】
【図５】ＥＸＩにおいてＪＳＯＮオブジェクトを表すためのオブジェクト文法の一例のブロック図である。
【００１８】
【図６】ＥＸＩにおいてＪＳＯＮアレイを表すためのアレイ文法の一例のブロック図である。
【００１９】
【図７】ＥＸＩにおいてＪＳＯＮドキュメントを表すためのドキュメント文法の一例のブロック図である。
【００２０】
【図８Ａ】現在の名称及び現在の距離を決定する例となる方法のブロック図である。
【図８Ｂ】現在の名称及び現在の距離を決定する例となる方法のブロック図である。
【図８Ｃ】現在の名称及び現在の距離を決定する例となる方法のブロック図である。
【００２１】
【図９Ａ】文字列値パーティション及び値チャネルを決定する例となる方法のブロック図である。
【図９Ｂ】文字列値パーティション及び値チャネルを決定する例となるシステムのブロック図である。
【００２２】
【図１０Ａ】有効な名称及び有効な距離を決定する例となる方法のブロック図である。
【図１０Ｂ】オブジェクト文法及びアレイ文法を決定する例となるシステムのブロック図である。
【００２３】
【図１１】オブジェクト文法の自己較正を提供する例となる方法のブロック図である。
【００２４】
【図１２】アレイ文法の自己較正を提供する例となる方法のブロック図である。
【発明を実施するための形態】
【００２５】
実施形態の目的及び利点は、特許請求の範囲において特に指し示される要素、特徴、及び組み合わせによって少なくとも実現され達成される。
【００２６】
前述の概要及び以下の詳細な説明はいずれも例示及び説明であり、請求される発明の限定でない点が理解されるべきである。
【００２７】
ここで論じられる実施形態は、JavaScript  Object  Notation（ＪＳＯＮ）ドキュメントを表すためのEfficient  XML  Interchange（ＥＸＩ）フォーマットに関する。ＥＸＩフォーマットは、構造化されたドキュメントを効率的に表すよう設計されてよい。ＥＸＩフォーマットは、２０１４年２月１１日付けでＷ３Ｃによって作成されたEfficient  XML  Interchange（ＥＸＩ）フォーマット１．０（セカンドエディション）によって記載されてよい。この仕様は、その全文を参照により本願に援用される。１つ以上のＥＸＩプロセッサは、ここで記載される技術に従って変更され、如何なるJavaScript  Object  Notation（ＪＳＯＮ）ドキュメントも表すようＥＸＩドキュメントを符号化するために使用されてよく、結果的に、数あるメトリクスの中でも、コンパクトさ及び処理効率の両方に関して、２進形式のＪＳＯＮ表現法を用いてＪＳＯＮドキュメントを表すことに対する改善をもたらす。例となる２進形式のＪＳＯＮ表現法には、Concise  Binary  Object  Representation（ＣＢＯＲ）がある。
【００２８】
本発明の実施形態は、添付の図面を参照して説明される。
【００２９】
図１Ａは、ここで記載される少なくとも幾つかの実施形態に従って配置される、例となるＪＳＯＮ表現システム１００のブロック図である。ＪＳＯＮ表現システム１００は、プロセッサベースのコンピュータ装置のコンポーネントとして実装されてよい。例えば、ＪＳＯＮ表現システム１００は、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、又はあらゆる他のプロセッサベースのコンピュータ装置の１つ以上のコンポーネントを含んでよい。
【００３０】
ＪＳＯＮ表現システム１００は、ＪＳＯＮドキュメント１０５と、ＪＳＯＮのためのＥＸＩ文法１１０（ここでは“ＥＸＩ文法１１０”と呼ばれる。）と、ＥＸＩプロセッサ１２５と、ＪＳＯＮドキュメント１０５を表すＥＸＩドキュメント１３０とを含んでよい。ＥＸＩプロセッサ１２５はパーティションモジュール１１５を含んでよい。
【００３１】
ＪＳＯＮドキュメント１０５は、ＪＳＯＮフォーマットにおいて記述又は符号化されたあらゆるドキュメントを含んでよい。ＥＸＩドキュメント１３０は、ＪＳＯＮドキュメント１０５を表す、ＥＸＩフォーマットにおいて記述又は符号化されたあらゆるドキュメントを含んでよい。ＥＸＩドキュメント１３０は、ＥＸＩストリームであるか、あるいは、それを含んでよい。ＥＸＩプロセッサ１２５は、ＪＳＯＮドキュメントを解析し、そのＪＳＯＮドキュメントを表すＥＸＩドキュメントを符号化するよう構成されたコード及びルーチンを含んでよい。例えば、ＥＸＩプロセッサ１２５は、入力としてＪＳＯＮドキュメント１０５を受け取り、ＪＳＯＮドキュメント１０５を表すＥＸＩドキュメント１３０を出力する。代わりに、ＥＸＩプロセッサ１２５は、ハードウェアにおいて実装されてよく、あるいは、ハードウェア並びにコード及び／又はルーチンの組み合わせを含んでよい。
【００３２】
一実施形態において、ＥＸＩプロセッサ１２５は、パーティションモジュール１１５又はＥＸＩ文法１１０を含む。ＥＸＩプロセッサ１２５は、１つ以上のＥＸＩエンコーダ、ＥＸＩデコーダ、又はＥＸＩプロセッサ１２５の機能性を提供するよう構成された他のＥＸＩコード及びルーチンを更に含んでよい。ＥＸＩプロセッサ、ＥＸＩエンコーダ、ＥＸＩデコーダ、並びに他のＥＸＩコード及びルーチンの例は、Efficient  XML  Interchange（ＥＸＩ）フォーマット１．０（セカンドエディション）において記載されてよい。この仕様は、その全文を参照により本願に援用される。
【００３３】
ＥＸＩプロセッサ１２５は、ＪＳＯＮ入力若しくはＪＳＯＮ出力のための、又はＪＳＯＮ入力及びＪＳＯＮ出力の両方ためのサポートを含んでよい。ＥＸＩプロセッサ１２５は、２進形式のＪＳＯＮ表現法の使用なしでＪＳＯＮドキュメント１０５を表すＥＸＩドキュメント１３０を符号化するよう構成されてよい。例えば、ＥＸＩプロセッサ１２５は、ＪＳＯＮドキュメント１０５のコンパクションのためのＧＺｉｐファイルフォーマット又はConcise  Binary  Object  Representation（ＣＢＯＲ）の使用なしでＪＳＯＮドキュメント１０５を表すＥＸＩドキュメント１３０を符号化するよう構成されてよい。パーティションモジュール１１５及びＥＸＩ文法１１０については、これより、幾つかの実施形態に従って記載される。
【００３４】
パーティションモジュール１１５は、ＪＳＯＮドキュメントを解析し、指名されたオブジェクトからの距離に基づきＪＳＯＮドキュメントの１つ以上の要素を区分化するよう構成されたコード及びルーチンを含んでよい。例えば、パーティションモジュール１１５は、図１０Ｂを参照して後述されるようにオブジェクト文法１０１６を決定するために、指名されたオブジェクトからの距離を用いてＪＳＯＮドキュメント１０５の１つ以上のオブジェクトを区分化してよい。パーティションモジュール１１５はまた、図１０Ｂを参照して後述されるようにアレイ文法１０１８を決定するために、指名されたオブジェクトからの距離を用いてＪＳＯＮドキュメント１０５の１つ以上のアレイを区分化してよい。パーティションモジュール１１５はまた、図９Ｂを参照して後述されるように、文字列値パーティション９１６又は値チャネル９１８を決定してよい。幾つかの実施形態において、ＪＳＯＮ表現システム１００は、ＪＳＯＮドキュメント１０５、ＥＸＩ文法１１０、オブジェクト文法１０１６、アレイ文法１０１８、文字列値パーティション９１６、又は値チャネル９１８のうちの１つ以上に基づき、ＪＳＯＮドキュメント１０５を記述するＥＸＩドキュメント１３０を符号化してよい。
【００３５】
一実施形態において、ＥＸＩプロセッサ１２５又はパーティションモジュール１１５は、プロセッサベースのコンピュータ装置（図１Ｂを参照）によって実行される場合に、図８Ａ乃至１２を参照して後述される方法８００、９００、１０００、１１００、１２００の１つ以上のブロックを実施するよう構成されたコード及びルーチンを含んでよい。パーティションモジュール１１５は、図１Ｂ及び８Ａ乃至１２を参照して以下でより詳細に記載される。
【００３６】
ＥＸＩ文法１１０は、ＥＸＩプロセッサ１２５がＪＳＯＮドキュメントを入力として受け取り、そのＪＳＯＮドキュメント１０５を表すＥＸＩドキュメント１３０を出力として符号化することを可能にするよう構成されたＥＸＩ文法を含んでよい。例えば、ＥＸＩプロセッサ１２５は、ＪＳＯＮドキュメント１０５及びＥＸＩ文法１１０を入力として受け取り、ＪＳＯＮドキュメント１０５及びＥＸＩ文法１１０に基づき、ＪＳＯＮドキュメント１０５を表すＥＸＩドキュメント１３０を出力として符号化するよう構成される。ＥＸＩプロセッサ１２５は、ＥＸＩ文法１１０をロードし、ＥＸＩ文法１１０に基づきＪＳＯＮドキュメント１０５を解析してよい。ＥＸＩ文法１１０の例は、図９を参照して以下でより詳細に記載される。
【００３７】
図１Ｂは、ここで記載される少なくとも一実施形態に従って配置される、例となるＪＳＯＮ表現システム１００のブロック図である。図１ＢのＪＳＯＮ表現システム１００は、図１Ａを参照して上述されたＪＳＯＮ表現システム１００の例となる実施形態である。幾つかの実施形態において、ＪＳＯＮ表現システム１００は、プロセッサベースのコンピュータ装置を含んでよい。例えば、ＪＳＯＮ表現システム１００は、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、又はあらゆる他のプロセッサベースのコンピュータ装置を含んでよい。幾つかの実施形態において、ＪＳＯＮ表現システム１００は、図８Ａ乃至１２を参照して後述される方法８００、９００、１０００、１１００、１２００の１つ以上のブロックを実行するよう構成された特殊用途のプロセッサベースのコンピュータ装置を含んでよい。
【００３８】
ＪＳＯＮ表現システム１００は、ＥＸＩプロセッサ１２５と、プロセッシング装置１６０と、メモリ１７０とを含んでよい。ＪＳＯＮ表現システム１００の様々なコンポーネントは、バス１７１を介して互いと通信上結合されてよい。
【００３９】
ＥＸＩプロセッサ１２５は、パーティションモジュール１１５を含んでよい。ＥＸＩプロセッサ１２５及びパーティションモジュール１１５は、図１Ａを参照して上述されており、それらの説明はここで繰り返されない。
【００４０】
プロセッシング装置１６０は、計算を実行し且つ電子表示信号をディスプレイ装置へ供給するよう、算術論理演算ユニット、マイクロプロセッサ、汎用コントローラ、又は何らかの他のプロセッサアレイを含んでよい。プロセッシング装置１６０は、データ信号を処理し、複数命令セットコンピュータ（ＣＩＳＣ；complex  instruction  set  computer）アーキテクチャ、縮小命令セットコンピュータ（ＲＩＳＣ；reduced  instruction  set  computer）アーキテクチャ、又は命令セットの組み合わせを実装するアーキテクチャを含む様々なコンピュータアーキテクチャを含んでよい。図１Ｂは単一のプロセッシング装置１６０を含むが、複数のプロセッシング装置１６０が含まれてよい。他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ、及び物理的構成が可能である。
【００４１】
一実施形態において、ＪＳＯＮ表現システム１００は、プロセッシング装置１６０によって実行される場合に、図８Ａ乃至１２を参照して後述される方法８００、９００、１０００、１１００、１２００の１つ以上のブロックを実行するか又はその実行を制御するよう構成されたコード及びルーチンを含んでよい。
【００４２】
メモリ１７０は、プロセッシング装置１６０によって実行され得る命令及び／又はデータを記憶してよい。命令及び／又はデータは、ここで記載される技術を実行するためのコードを含んでよい。幾つかの実施形態において、命令は、プロセッシング装置１６０に特定の機能又は機能のグループを実行させる命令及びデータを含んでよい。
【００４３】
幾つかの実施形態において、メモリ１７０は、コンピュータ実行可能命令又はデータ構造を搬送するか又は記憶されるコンピュータ可読媒体を含んでよい。そのようなコンピュータ可読媒体は、コンピュータ可読媒体に記憶されているコンピュータ実行可能命令を実行するようプログラムされ得るプロセッシング装置１６０によってアクセスされ得るあらゆる利用可能な媒体であってよい。一例として、制限なしに、そのようなコンピュータ可読媒体は、ランダムアクセスメモリ（ＲＡＭ）、読出専用メモリ（ＲＯＭ）、電気的消去可能なプログラム可能読出専用メモリ（ＥＥＰＲＯＭ）、コンパクトディスク型読出専用メモリ（ＣＤ−ＲＯＭ）若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶装置、フラッシュメモリ装置（例えば、ソリッドステートメモリ装置）、又はコンピュータ実行可能命令若しくはデータ構造の形で所望のプログラムコードを搬送若しくは記憶するのに使用され且つプロセッシング装置１６０によってアクセスされ得るあらゆる他の非一時的な記憶媒体を含む非一時的なコンピュータ可読記憶媒体を含んでよい。メモリ１７０は、プロセッシング装置１６０によってアクセスされて実行され得る実行可能命令を記憶する有形な又は非一時的なコンピュータ可読媒体であってよい。上記のものの組み合わせもコンピュータ可読媒体の適用範囲内に含まれてよい。
【００４４】
描かれている実施形態では、メモリ１７０は、ＥＸＩ文法１１０と、ＪＳＯＮドキュメント１０５と、ＪＳＯＮドキュメント１０５を表すＥＸＩドキュメント１３０と、組み込み要素文法１９７と、区分文字列テーブル１９５と、区分圧縮１９３とを記憶してよい。
【００４５】
任意に、幾つかの実施形態において、メモリ１７０は、パーティションモジュール１１５によってその機能性を提供するために使用され得るあらゆる他のデータを記憶してよい。例えば、メモリ１７０は、標準関数又はカスタム関数の１つ以上のライブラリを記憶してよい。幾つかの実施形態において、メモリ１７０は、１つ以上のハッシュテーブルを記憶してよい。例えば、メモリ１７０は、図９Ｂ及び１０Ｂを参照して後述されるハッシュテーブル９１２、９１４、１０１２、１０１５のうちの１つ以上を記憶してよい。幾つかの実施形態において、ＥＸＩプロセッサ１２５又はパーティションモジュール１１５は、メモリ１７０に記憶されており且つプロセッシング装置１６０によって実行されるコード及びルーチンを含んでよい。
【００４６】
ＥＸＩ文法１１０、ＪＳＯＮドキュメント１０５、及びＥＸＩドキュメント１３０は図１Ａを参照して上述されており、それらの説明はここで繰り返されない。
【００４７】
一実施形態において、組み込み要素文法１９７、区分文字列テーブル１９５、及び区分圧縮１９３は、ＪＳＯＮドキュメント１０５を表すＥＸＩドキュメント１３０の要素である。
【００４８】
組み込み要素文法１９７は、ＥＸＩ組み込み要素文法を含んでよい。組み込み要素文法１９７の例は、図２及び３を参照して後述される。ＥＸＩプロセッサ１２５は、ＪＳＯＮドキュメント１０５を表すＥＸＩドキュメント１３０を符号化するために組み込み要素文法１９７を使用してよい。
【００４９】
区分文字列テーブル１９５は、１つ以上の文字列値の表現を可能にする文字列テーブルを含んでよい。例えば、区分文字列テーブル１９５は、ＪＳＯＮドキュメント１０５に関連する１つ以上の文字列値を表すデータを含む文字列テーブルを含んでよい。
【００５０】
区分圧縮１９３は、値チャネルに区分化された圧縮を含んでよい。例えば、区分圧縮は、図９Ｂを参照して後述される値チャネル９１８に区分化された圧縮を含んでよい。区分圧縮１９３は、ＪＳＯＮドキュメント１０５を表すＥＸＩ圧縮を含んでよい。一実施形態において、区分圧縮１９３は、１つ以上のＥＸＩ圧縮チャネルに区分化された統合冗長に基づくＥＸＩ圧縮を含んでよい。
【００５１】
幾つかの実施形態において、ＪＳＯＮ表現システム１００は、ＥＸＩ文法１１０、組み込み要素文法１９７、区分文字列テーブル１９５、又は区分圧縮１９３のうちの１つ以上を用いて、ＪＳＯＮドキュメント１０５を表すＥＸＩドキュメント１３０を符号化してよい。
【００５２】
幾つかの実施形態において、組み込み要素文法１９７、区分文字列テーブル１９５、及び区分圧縮１９３は、ＪＳＯＮドキュメント１０５に含まれる１つ以上の名称に基づき区分化される。例えば、それらの要素は、ＪＳＯＮドキュメント１０５に含まれる１つ以上の要素名又は属性名に基づき区分化されてよい。幾つかの実施形態において、それらの要素は、パーティションモジュール１１５によって区分化されてよい。区分文字列テーブル１９５又は区分圧縮１９３は、ハッシュ関数を用いて区分化されてよい。区分化のために使用され得る例となるハッシュテーブルは、図９Ｂの要素９１２及び９１４を参照して後述される。
【００５３】
幾つかの実施形態において、ＪＳＯＮドキュメント１０５に含まれる１つ以上の名称に基づき組み込み要素文法１９７、区分文字列テーブル１９５、及び区分圧縮１９３を区分化することは、有利なことには、それらの要素の夫々をより効率的に機能させることができる。例えば、ＪＳＯＮドキュメント１０５に含まれる１つ以上の名称に基づき組み込み要素文法１９７を区分化することは、組み込み要素文法１９７がＪＳＯＮドキュメント１０５の夫々の名称についてのより正確な文法較正を備えることをもたらすことができる。
【００５４】
幾つかの実施形態において、ＪＳＯＮドキュメント１０５に含まれる１つ以上の名称に基づき文字列テーブル１９５を区分化することは、区分化された文字列テーブル１９５について、区分化されていない文字列テーブルよりも小さいインデックス数をもたらし、それによって、ＪＳＯＮドキュメント１０５を表すためのより少ないビット及びより効率的な符号化をもたらすことができる。
【００５５】
幾つかの実施形態において、ＪＳＯＮドキュメント１０５に含まれる１つ以上の名称に基づき圧縮１９３を区分化することは、同じ名称が類似したデータを提供することをもたらし、それによって、ＥＸＩドキュメント１３０をストリーミングするためのより高い圧縮率、より高い処理効率、及びより高い従順性をもたらすことができる。
【００５６】
幾つかの実施形態において、パーティションモジュール１１５は、ＪＳＯＮドキュメント１０５、ＥＸＩドキュメント１３０、又はＪＳＯＮドキュメント１０５若しくはＥＸＩドキュメント１３０の部分を１つ以上の重なり合わないパーティションに分割してよい。ＥＸＩプロセッサ１２５又はパーティションモジュール１１５は、ユーザがＪＳＯＮドキュメント１０５又はＥＸＩドキュメント１３０を編集することを可能にする機能性を含んでよい。例えば、ＥＸＩプロセッサ１２５は、ユーザがメモリ１７０に記憶されているＪＳＯＮドキュメント１０５、ＥＸＩドキュメント１３０、又はあらゆる他のドキュメントを編集することを可能にするよう構成されたコード及びルーチンを含むテキストエディタモジュール（図示せず。）を含んでよい。これは後述される。上述されたように、メモリ１７０は、例えば、関数の１つ以上のライブラリ（図示せず。）を含む、パーティションモジュール１１５によってその機能性を提供するために使用される他のデータを記憶してよい。パーティションモジュール１１５は、あらゆるドキュメントについて１つ以上の明示的なパーティションを定義してよい。パーティションモジュール１１５は、それらを、メモリ１７０のライブラリのうちの１つに記憶されているパーティション関数のインスタンスと関連することによって、ドキュメントを区分化してよい。幾つかの実施形態において、パーティションモジュール１１５は、１つ以上のハッシュ関数又は１つ以上のハッシュテーブルを用いてドキュメントを区分化してよい。パーティション関数は、パーティションモジュール１１５の要素であってよい。
【００５７】
幾つかの実施形態において、パーティションモジュール１１５のパーティション関数は、パーティションスキャナ（図示せず。）を含んでよい。パーティションスキャナは、ＪＳＯＮドキュメント１０５のための１つ以上のパーティションを定義するよう構成されたコード及びルーチンを含んでよい。パーティションスキャナは、ＪＳＯＮドキュメント１０５の範囲を決定し、ＪＳＯＮドキュメント１０５のその範囲についてのパーティションの夫々を記述する１つ以上のトークンの組を特定してよい。パーティションモジュール１１５は、ＪＳＯＮドキュメント１０５を表すようＥＸＩドキュメント１３０を生成し、パーティションスキャナは、ＥＸＩドキュメント１３０がＪＳＯＮドキュメント１０５を表すように、ＪＳＯＮドキュメント１０５において特定されたトークンの組に部分的に基づきＥＸＩドキュメント１３０について１つ以上のトークンを決定してよい。
【００５８】
幾つかの実施形態において、パーティションモジュール１１５は、部分的にＥＸＩ文法１１０に基づき、その機能性を提供してよい。パーティションモジュール１１５のパーティション関数又はパーティションスキャナは、プロセッシング装置１６０によって実行される場合に、図８Ａ乃至１２を参照して後述される方法８００、９００、１０００、１１００、１２００の１つ以上のブロックを実施するよう構成されてよい。
【００５９】
パーティションモジュール１１５は、パーティションモジュール１１５によって特定されるＪＳＯＮドキュメント１０５に含まれている要素の名称によって、組み込み要素文法１９７、区分文字列テーブル１９５、及び区分圧縮１９３のうちの１つ以上を区分化してよい。しかし、ＪＳＯＮを用いて符号化されたデータは、無名の部分を含むことがある。一実施形態において、ＪＳＯＮドキュメント１０５は、“オブジェクト”データタイプが使用され得るたびに“オブジェクト”根の全ての子が名を付けられるように構成されてよい。子は“オブジェクト”タイプ又は“アレイ”タイプを含んでよい。然るに、パーティションモジュール１１５は、（１）最も近いコンテナ（すなわち、最も近い“オブジェクト”又は“アレイ”）の名称と、（２）最も近いコンテナからの距離とを用いて、組み込み要素文法１９７、区分文字列テーブル１９５、及び区分圧縮１９３を区分化するよう構成されてよい。そのような区分化の例は、図９Ｂ及び１０Ｂを参照して後述される。
【００６０】
ここで使用されるように、語「モジュール」又は「コンポーネント」は、ＪＳＯＮ表現システム１００において記憶され及び／又はそれによって実行され得るモジュール若しくはコンポーネント及び／又はソフトウェアオブジェクト若しくはソフトウェアルーチンの動作を実行するよう構成された具体的なハードウェア実装をいう。幾つかの実施形態において、ここで記載される種々のコンポーネント及びモジュールは、コンピュータシステムにおいて（例えば、別々のスレッドとして）実行するオブジェクト又はプロセスとして実装されてよい。ここで記載されるシステム及び方法の幾つかは、概して、ソフトウェア（ＪＳＯＮ表現システム１００において記憶され及び／又はそれによって実行される。）において実装されるものとして記載されるが、特定のハードウェア実装又はソフトウェア及び具体的なハードウェア実装の組み合わせも可能であり、考えられている。本明細書において、「コンピュータエンティティ」は、ここで定義されるあらゆるコンピュータシステム、又は例えばＪＳＯＮ表現システム１００などのコンピュータシステムにおいて実行されるあらゆるモジュール若しくはモジュールの組み合わせを含んでよい。
【００６１】
図２は、ＥＸＩのための例となる組み込み要素文法２００を表す。組み込み要素文法２００は、例えば、ＪＳＯＮドキュメント１０５を復号するか又はＪＳＯＮドキュメント１０５を表すＥＸＩドキュメント１３０を符号化する場合にＥＸＩプロセッサ１２５によって用いられてよい。組み込み要素文法２００は、１つ以上のトークンを含んでよい。トークンはＥＸＩ文法表記であってよい。トークンは、異なったイベントを記述してよい。例えば、組み込み要素文法２００は、次のトークン：EE、AT(*)、SE(*)、及びCHのうちの１つ以上を含んでよい。EEトークンは、終了要素（End  Element）ＥＸＩイベントタイプに対応してよい。AT(*)トークンは、属性（Attribute）ＥＸＩイベントタイプに対応してよい。SE(*)トークンは、開始要素（Start  Element）ＥＸＩイベントタイプに対応してよい。CHトークンは、文字（Characters）イベントタイプに対応してよい。
【００６２】
図３は、組み込み要素文法２００の例となる呼び出しを表す。例となる組み込み要素文法２００は、図２を参照して上述されており、その説明はここで繰り返されない。要素３００は、組み込み要素文法２００に含まれるSE(*)トークンの呼び出し３０５の後の組み込み要素文法２００の例を表す。この例において、SE(*)トークンは、要素SE(A)により呼び出し３０５されてよい。SE(*)トークンは、SE(*)トークンの呼び出し３０５を示すよう組み込み要素文法２００において太字により表されてよい。要素３００を参照すると、新しいプロダクションSE(A)は、呼び出し３０５の結果として、スタックの一番上に挿入されてよい。SE(A)トークンは、SE(*)の呼び出し３０５により生じた新しいプロダクションをSE(A)により示すよう要素３００において太字により表されてよい。新しいプロダクションSE(A)は、次にＥＸＩプロセッサ１２５がSE(A)のインスタンスを特定するときに呼び出される。SE(A)プロダクションの呼び出しは、有利なことには、SEトークンを表すビットの削減をもたらすことができる。然るに、図３の記載は、如何にしてＥＸＩプロセッサが組み込み要素文法２００を動的に拡張することができるかの例を説明する。
【００６３】
図４は、ＥＸＩプロセッサ１２５がＪＳＯＮドキュメント１０５を表すＥＸＩドキュメント１３０を符号化することを可能にするための図１Ａ及び１ＢのＥＸＩ文法１１０のブロック図を含む。ＥＸＩ文法１１０は、図１を参照して上述されており。この説明はここで繰り返されない。この例では、ＥＸＩ文法１１０は、オブジェクト文法４０５、アレイ文法４１０、及びドキュメント文法４１５を含んでよい。
【００６４】
図１Ａ、１Ｂ、及び４を組み合わせて参照して、オブジェクト文法４０５は、ＥＸＩプロセッサ１２５に入力され得るＪＳＯＮドキュメント１０５に含まれる１つ以上のＪＳＯＮオブジェクトを記述する動的な文法を含んでよい。ＪＳＯＮドキュメント１０５において特定される夫々の名称について１つのオブジェクト文法４０５が存在してよい。例えば、ＥＸＩ文法１１０は、ＪＳＯＮドキュメント１０５に含まれる夫々の名称について１つのオブジェクト文法４０５を含む。オブジェクト文法４０５は、図５を参照して以下でより詳細に記載される。
【００６５】
アレイ文法４１０は、ＥＸＩプロセッサ１２５に入力され得るＪＳＯＮドキュメント１０５に含まれる１つ以上のＪＳＯＮアレイを記述する動的な文法を含んでよい。ＪＳＯＮドキュメント１０５において特定される夫々の名称について１つのアレイ文法４１０が存在してよい。例えば、ＥＸＩ文法１１０は、ＪＳＯＮドキュメント１０５に含まれる夫々の名称について１つのアレイ文法４１０を含む。アレイ文法４１０は、図６を参照して以下でより詳細に記載される。
【００６６】
ドキュメント文法４１５は、ＥＸＩプロセッサ１２５に入力され得るＪＳＯＮドキュメント１０５を記述する静的な文法を含んでよい。ドキュメント文法４１５は、ＪＳＯＮドキュメント１０５を表すよう構成された不変の文法を含んでよい。ドキュメント文法４１５は、図１２を参照して以下でより詳細に記載される。
【００６７】
図５は、図４のオブジェクト文法４０５の実施形態を表す。図５で表されているオブジェクト文法４０５の実施形態は、次のようなオブジェクト要素：EO、SV(*)Object、NV(*)Object、BV(*)Object、SO(*)Object、SA(*)Object、及びNL(*)Objectを含んでよい。オブジェクト文法キー５０５は、オブジェクト文法４０５に含まれる異なる終端タイプを記述してよい。“(*)”表記は、あらゆるオブジェクト名に適合するワイルドカードを表してよい。
【００６８】
オブジェクト文法４０５における夫々のオブジェクトは、対応するイベントコードを有してよい。オブジェクトとイベントコードとの組み合わせは、プロダクションと呼ばれてよい。例えば、EOオブジェクト及び対応するイベントコード“0”はEOプロダクションを形成し、SV(*)Object及び対応するイベントコード“1.0”はSVプロダクションを形成する。
【００６９】
オブジェクト文法４０５のプロダクションのためのイベントコード長は、割り当てられているイベントコードに含まれる数字の個数によって決定されてよい。例えば、オブジェクト文法４０５において表されているEOプロダクションのイベントコード長は“１”であってよく、SV、NV、及びBVプロダクションのイベントコード長は“２”であってよい。同様に、SO、SA、及びNLプロダクションのイベントコード長は“３”であってよい。図１及び１Ｂを参照して上述されたＥＸＩプロセッサ１２５又はパーティションモジュール１１５は、オブジェクト文法４０５に含まれるプロダクションのうちの１つ以上を呼び出してよい。
【００７０】
一実施形態において、“１”よりも長いイベントコード長を持ったオブジェクト文法４０５に含まれるプロダクション（図５に表されるEO以外の全てのプロダクション）の呼び出しは、次のステップのうちの１つ以上が実行されることを生じさせ得る：（１）具体的な名称を持った新しいプロダクションは、“0”に設定されたイベントコードを伴ってスタックの一番上に挿入されてよい；そして、（２）オブジェクト文法４０５における残りのイベントコードは1だけシフトされる。例えば、SO(*)は、要素SO(A)により呼び出され得るとする。SO(A)は、“0”に設定されたイベントコードを伴ってスタックの一番上に移動されてよい。EOは、これより、“1”に設定されたイベントコードを有してよく、SV(*)は、これより、“2.0”に設定されたイベントコードを有してよく、スタックにおける他のプロダクションは、NL(*)が“2.3.2”に設定され得るように、同様に1ずつシフトされてよい。
【００７１】
図６は、図４のアレイ文法４１０の実施形態を表す。図６で表されているアレイ文法４１０の実施形態は、次のようなアレイ要素：EA、SO、SA、SV、NV、BV、及びNLを含む。アレイ文法キー６０５は、アレイ文法４１０に含まれる終端タイプを記述してよい。
【００７２】
アレイ文法４１０における夫々のアレイは、対応するイベントコードを有してよい。アレイとイベントコードとの組み合わせは、プロダクションと呼ばれてよい。例えば、EOアレイ及び対応するイベントコード“0”はEAプロダクションを形成し、SOアレイ及び対応するイベントコード“1.0”はSOプロダクションを形成する。
【００７３】
アレイ文法４１０のプロダクションのためのイベントコード長は、割り当てられているイベントコードに含まれる数字の個数によって決定されてよい。例えば、アレイ文法４１０において表されているEAプロダクションのイベントコード長は“１”であってよく、SO及びSAプロダクションのイベントコード長は“２”であってよい。同様に、SV、NV、BV、及びNLプロダクションのイベントコード長は“３”であってよい。図１及び１Ｂを参照して上述されたＥＸＩプロセッサ１２５又はパーティションモジュール１１５は、アレイ文法４１０に含まれるプロダクションのうちの１つ以上を呼び出してよい。
【００７４】
一実施形態において、“１”よりも長いイベントコード長を持ったアレイ文法４１０に含まれるプロダクション（図６に表されるEA以外の全てのプロダクション）の呼び出しは、次のステップのうちの１つ以上が実行されることを生じさせ得る：（１）同じプロダクションは、“0”に設定されたイベントコードを伴ってスタックの一番上に挿入されてよい；そして、（２）アレイ文法４１０における残りのイベントコードは1だけシフトされる。例えば、SAが呼び出され得るとする。SAは、“0”に設定されたイベントコードを伴ってスタックの一番上に移動されてよい。EAは、これより、“1”に設定されたイベントコードを有してよく、SO)は、これより、“2.0”に設定されたイベントコードを有してよく、スタックにおける他のプロダクションは、NL(*)が“2.2.3”に設定され得るように、同様に1ずつシフトされてよい。
【００７５】
図７は、図４のドキュメント文法４１５の実施形態を表す。図7で表されているドキュメント文法４１５の実施形態は、次のようなドキュメント要素：SO、SA、SV、NV、BV、及びNLを含んでよい。ドキュメント文法キー７０５は、ドキュメント文法４１５に含まれる終端タイプを記述してよい。
【００７６】
ドキュメント文法４１５はＪＳＯＮドキュメント１０５を表してよい。一実施形態において、ドキュメント文法４１５は静的且つ不変であってよい。例えば、ドキュメント文法４１５は変更不可能であってよい。
【００７７】
図８Ａ乃至８Ｃは、ここで記載される少なくとも一実施形態に従って配置される、ＪＳＯＮドキュメント１０５に含まれるトークンについて現在の名称及び現在の距離を決定する方法８００の例となるフロー図を示す。たとえ個別的なブロックとして表されているとしても、様々なブロックは、所望の実施に依存して、更なるブロックに分けられても、より少ないブロックにまとめられても、あるいは、削除されてもよい。方法８００は、図１Ａ乃至７を参照して後述されてよい。
【００７８】
幾つかの実施形態において、方法８００は、例えば、図１Ａ及び１ＢのＪＳＯＮ表現システム１００などのシステムによって実行されてよい。例えば、図１Ｂのプロセッシング装置１６０は、図８Ａ乃至８Ｃの方法８００のブロックのうちの１つ以上によって表される機能及び動作を実行するために、メモリ１７０に記憶されているコンピュータ命令を実行するよう構成されてよい。
【００７９】
方法８００は、ＪＳＯＮドキュメント１０５の部分に対する現在の名称及び現在の距離を決定するために有利であり得る。
【００８０】
方法８００はブロック８０２から開始してよい。ブロック８０２で、トークンは、ＪＳＯＮ表現システム１００によって決定又は特定されてよい。トークンは、ＥＸＩプロセッサ１２５に入力されてＪＳＯＮ表現システム１００によって解析されるＪＳＯＮドキュメント１０５の部分又は範囲に対応してよい。
【００８１】
ブロック８０４で、ＪＳＯＮ表現システム１００は、ブロック８０２で特定されたトークンがタイプSV、NV、BV、又はNLを有するかどうかを決定してよい。例えば、決定は、トークンの終端タイプがSV、NV、BV、又はNLであるかどうかに関して為されてよい。ブロック８０２で特定されたトークンがタイプSV、NV、BV、又はNLを有する場合は、方法８００はブロック８０５へ進んでよい。
【００８２】
ブロック８０５で、ＪＳＯＮ表現システム１００は、トークンの現在の名称及び距離を決定してよい。例えば、現在の名称及び現在の距離は、夫々、スタックの一番上にある項目に格納されている名称及び距離であってよい。
【００８３】
ブロック８０６で、ＪＳＯＮ表現システム１００は、現在の名称又は現在の距離が不変であることを決定してよい。タイプSVのトークンは、図９Ａを参照して上述される方法９００に従って、ＪＳＯＮ表現システム１００によって更に解析されてよい。
【００８４】
ブロック８０２で特定されたトークンがSV、NV、BV、又はNL以外の他のタイプであるとＪＳＯＮ表現システム１００がブロック８０４で決定する場合は、方法８００はブロック８０８へ進んでよい。ブロック８０８で、ＪＳＯＮ表現システム１００は、ブロック８０２で特定されたトークンがタイプEO又はEAであるかどうかを決定してよい。トークンがタイプEO又はEAである場合は、方法８００は、図８Ｂに表されているブロック８１２へ進んでよい。図８Ｂに示されているブロックは、図８Ｂを参照して以下でより詳細に記載される。
【００８５】
ブロック８０８でトークンがEO又はEA以外の他のタイプである場合は、方法８００はブロック８１０へ進んでよい。ブロック８１０で、ＪＳＯＮ表現システム１００は、トークンの終端タイプがSO又はSAであると決定してよい。方法８００は、図８Ｃに表されているブロック８１８へ進んでよい。これは、以下でより詳細に記載される。
【００８６】
これより図８Ｂを参照すると、ブロック８１２で、決定は、トークンが所与の名称を有するか又は根であるかどうかに関して為されてよい。例えば、ＪＳＯＮ表現システム１００は、トークンが所与の名称に関連するか又は１つ以上の子を有するかどうかを決定してよい。
【００８７】
トークンが所与の名称に関連しておらず且つ根でないとＪＳＯＮ表現システム１００がブロック８１２で決定する場合は、方法８００はブロック８１４へ移動し、ＪＳＯＮ表現システム１００は、現在の距離を１だけ減じてよい。例えば、現在の名称及び現在の距離は、夫々、スタックの一番上にある項目に格納されている名称及び距離であってよい。ブロック８１４で、現在の距離は１だけ減じられてよい。現在の名称は変更されないままであってよく、一方、現在の距離は１だけ減じられてよい。
【００８８】
トークンが所与の名称を有するか又は根であるとＪＳＯＮ表現システム１００がブロック８１２で決定する場合は、方法８００はブロック８１６へ進んでよい。ブロック８１６で、ＪＳＯＮ表現システム１００は、現在の名称及び現在の距離を、スタックからポッピングすることによって置き換えてよい。例えば、現在の名称及び現在の距離は、夫々、スタックの一番上にある項目に格納されている名称及び距離であってよい。ブロック８１６で、ＪＳＯＮ表現システム１００は、新しい現在の名称及び新しい現在の距離がスタックの一番上に格納されるように、スタックからポッピングすることによって現在の名称及び現在の距離を置き換えてよい。
【００８９】
これより図８Ｃを参照すると、ブロック８１８で、決定は、トークンが所与の名称を有するか又は根であるかどうかに関して為されてよい。例えば、ＪＳＯＮ表現システム１００は、トークンがそれと関連する所与の名称を有するか又は１つ以上の子を有するかどうかを決定してよい。
【００９０】
トークンが所与の名称に関連しておらず且つ根でないとＪＳＯＮ表現システム１００がブロック８１８で決定する場合は、方法８００はブロック８２０へ進んでよい。ブロック８２０で、現在の距離は１だけ増やされてよい。例えば、現在の名称及び現在の距離は、夫々、スタックの一番上にある項目に格納されている名称及び距離であってよい。現在の距離は、ブロック８２０１だけ増やされてよい。この例では、現在の名称は変更されないままであってよく、一方、現在の距離は１だけ増やされてよい。
【００９１】
トークンが所与の名称を有するか又は根であるとＪＳＯＮ表現システム１００がブロック８１８で決定する場合は、方法８００はブロック８２２へ進んでよい。ブロック８２２で、ＪＳＯＮ表現システム１００は、現在の名称及び現在の距離をスタックへプッシュするによって、現在の名称及び現在の距離を置き換えてよい。
【００９２】
ブロック８１８でトークンが所与の名称と関連する場合は、ブロック８２２で、所与の名称は、現在の名称を置き換えるようスタックの一番上へプッシュされ、現在の距離は零に設定される。例えば、現在の名称及び現在の距離は、夫々、スタックの一番上にある項目に格納されている名称及び距離であってよい。現在の名称は、ブロック８１８で特定された所与の名称によって置換されてよい。このように、所与の名称は、新しい現在の名称として設定されてよい。スタックの一番上にある距離は零に設定されてよい。このように、新しい現在の距離は零に設定されてよい。
【００９３】
ブロック８１８でトークンが根である場合は、所与の名称がブロック８１８で特定され得ないので、ブロック８２２で、トークンに関連した擬似名称が、所与の名称の代わりにスタックの一番上へプッシュされる。擬似名称は、“_document_”又は同様の擬似名称であってよい。現在の名称は、ブロック８１８で特定された根について擬似名称によって置換されてよい。このように、擬似名称は、新しい現在の名称として設定されてよい。スタックの一番上にある距離は零に設定されてよい。このように、新しい現在の距離は零に設定されてよい。
【００９４】
図９Ａは、ここで記載される少なくとも一実施形態に従って配置される、ＪＳＯＮドキュメント１０５に含まれるトークンについて文字列値パーティション及び値チャネルを決定する方法９００の例となるフロー図を示す。
【００９５】
ブロック９０２で、ＪＳＯＮ表現システム１００は、トークンがタイプSV（“String  Value（文字列値）”）であることを決定してよい。例えば、トークンの終端タイプはSVであってよい。ブロック９０４で、ＪＳＯＮ表現システム１００は、トークンがそれに関連する所与の名称を有するかどうかを決定してよい。
【００９６】
トークンがそれに関連する所与の名称を有する場合は、方法９００はブロック９０５へ進んでよい。ブロック９０５で、ＪＳＯＮ表現システム１００は、有効な名称が、ブロック９０４で特定されたトークンに関連する所与の名称であってよく、且つ、有効な距離が零であってよいことを決定する。例えば、有効な距離は零に設定される。
【００９７】
トークンが所与の名称と関連しない場合は、方法９００はブロック９０６へ進んでよい。ブロック９０６で、ＪＳＯＮ表現システム１００は、現在の名称及び現在の距離を決定し、有効な名称を現在の名称として且つ有効な距離を現在の距離として設定してよい。例えば、現在の名称及び現在の距離は、夫々、スタックの一番上にある項目に格納されている名称及び距離であってよい。現在の名称は、有効な名称として設定されてよく、現在の距離は、有効な距離として設定されてよい。
【００９８】
図９Ｂは、文字列値パーティション及び値チャネルを決定する例となるシステム９９９のブロック図を示す。有効な名称及び有効な距離は、図９Ａを参照して上述されたように決定されてよい。
【００９９】
幾つかの実施形態において、方法９００によって決定された有効な名称及び有効な距離は、文字列値ハッシュテーブル９１２への入力９０８となってよい。文字列値ハッシュテーブル９１２は、有効な名称及び有効な距離を入力９０８として受け取り、文字列値パーティション９１６を出力として供給するよう構成されたハッシュテーブルであってよい。例えば、文字列値パーティション９１６は、方法９００によって決定された有効な名称及び有効な距離をハッシングすることによって決定されてよい。文字列値パーティション９１６は、図１Ｂを参照して上述された区分文字列テーブル１９５を決定するために使用されてよい。
【０１００】
幾つかの実施形態において、方法９００によって決定された有効な名称及び有効な距離は、値チャネルハッシュテーブル９１４への入力９１０となってよい。値チャネルハッシュテーブル９１４は、有効な名称及び有効な距離を入力９１０として受け取り、値チャネル９１８を出力として供給するよう構成されたハッシュテーブルであってよい。例えば、値チャネル９１８は、方法９００によって決定された有効な名称及び有効な距離をハッシングすることによって決定されてよい。値チャネル９１８は、１つ以上の値コンテンツ項目を含んでよい。値チャネル９１８の夫々の値コンテンツ項目は、関連するスキーマデータタイプに基づき符号化されてよい。関連するスキーマデータタイプがない場合は、値コンテンツ項目は文字列として符号化されてよい。値チャネル９１８は、図１Ｂを参照して上述された区分圧縮１９３を決定するために使用されてよい。例えば、区分圧縮１９３は、値チャネル９１８に基づきチャネルに区分化された統合冗長に基づく圧縮を含んでよい。
【０１０１】
幾つかの実施形態において、ＪＳＯＮ表現システム１００は、文字列値パーティション９１６及び値チャネル９１８のうちの１つ以上を用いて、ＪＳＯＮドキュメント１０５を表すＥＸＩドキュメント１３０を符号化してよい。
【０１０２】
図１０Ａは、ここで記載される少なくとも一実施形態に従って配置される、ＪＳＯＮドキュメント１０５に含まれるトークンについて有効な名称及び有効な距離を決定する方法１０００の例となるフロー図を示す。
【０１０３】
ブロック１００２で、ＪＳＯＮ表現システム１００は、トークンがタイプSO（“Start  Object（開始オブジェクト）”）又はSA（“Start  Array（開始アレイ）”）であることを決定してよい。例えば、トークンの終端タイプはSO又はSAであってよい。ブロック１００４で、ＪＳＯＮ表現システム１００は、有効な名称が現在の名称であり且つ有効な距離が現在の距離であることを決定してよい。例えば、現在の名称及び現在の距離は、夫々、スタックの一番上にある項目に格納されている名称及び距離であってよい。現在の名称は有効な名称として設定されてよく、現在の距離は有効な距離として設定されてよい。
【０１０４】
図１０Ｂは、オブジェクト文法及びアレイ文法を決定する例となるシステム１０９９のブロック図を示す。有効な名称及び有効な距離は、図１０Ａを参照して上述されたように決定されてよい。
【０１０５】
終端タイプがSOであると決定され得る幾つかの実施形態において、方法１０００によって決定された有効な名称及び有効な距離は、オブジェクト文法ハッシュテーブル１０１２への入力１００８となってよい。オブジェクト文法ハッシュテーブル１０１２は、有効な名称及び有効な距離を入力１００８として受け取り、オブジェクト文法１０１６を出力として供給するよう構成されたハッシュテーブルを含んでよい。例えば、オブジェクト文法１０１６は、方法１０００によって決定された有効な名称及び有効な距離をハッシングすることによって決定されてよい。オブジェクト文法１０１６は、図４及び５を参照して上述されたオブジェクト文法４０５を含んでよい。このように、オブジェクト文法１０１６は、ＪＳＯＮドキュメント１０５の夫々の名称について決定されてよい。
【０１０６】
終端タイプがSAであると決定され得る幾つかの実施形態において、方法１０００によって決定された有効な名称及び有効な距離は、アレイ文法ハッシュテーブル１０１５への入力１０１０となってよい。アレイ文法ハッシュテーブル１０１５は、有効な名称及び有効な距離を入力１０１０として受け取り、アレイ文法１０１８を出力として供給するよう構成されたハッシュテーブルを含んでよい。例えば、アレイ文法１０１８は、方法１０００によって決定された有効な名称及び有効な距離をハッシングすることによって決定されてよい。アレイ文法１０１８は、図４及び６を参照して上述されたアレイ文法４１０を含んでよい。このように、アレイ文法１０１８は、ＪＳＯＮドキュメント１０５の夫々の名称について決定されてよい。
【０１０７】
幾つかの実施形態において、ＪＳＯＮ表現システム１００は、オブジェクト文法１０１６及びアレイ文法１０１８のうちの１つ以上を用いて、ＪＳＯＮドキュメント１０５を表すＥＸＩドキュメント１３０を符号化してよい。
【０１０８】
図１１は、ここで記載される少なくとも一実施形態に従って配置される、オブジェクト文法の自己較正を提供する方法１１００の例となるフロー図を示す。ブロック１１０２で、トークンがフェッチされてよい。ブロック１１０６で、適合するプロダクションが特定されてよい。ブロック１１０８で、トークン及びその関連するコンテンツ項目が符号化又は復号されてよい。ブロック１１１０で、決定は、適合するプロダクションの終端部分がワイルドカードに関連するかどうかに関して為されてよい。適合するプロダクションの終端部分がブロック１１１０でワイルドカードに関連しない場合は、方法１１００は、既に上述されたブロック１１０２へ進んでよい。適合するプロダクションの終端部分がブロック１１１０でワイルドカードに関連する場合は、方法１１００はブロック１１１２へ進んでよい。ブロック１１１２で、新しいプロダクションは、ワイルドカードを置き換えるよう具体的な名称により生成されてよく且つプロダクションのイベントコードは零に設定されてよく、他のプロダクションは、１だけ増分されたそれらのイベントコードの第１の部分を有してよい。例えば、“1.0”に設定されたイベントコードを有するプロダクションは“2.0”に増分されてよく、あるいは、“1.3.2”に設定されたイベントコードを有するプロダクションは“2.3.2”に増分されてよい。
【０１０９】
図１２は、ここで記載される少なくとも一実施形態に従って配置される、アレイ文法の自己較正を提供する方法１２００の例となるフロー図を示す。ブロック１２０２で、トークンがフェッチされてよい。ブロック１２０６で、適合するプロダクションが特定されてよい。ブロック１２０８で、トークン及びその関連するコンテンツ項目が符号化又は復号されてよい。ブロック１２１０で、決定は、プロダクションに関連するプロダクションが１以上のイベントコード長を有するかどうかに関して為されてよい。プロダクションが１に満たないイベントコードを有する場合は、方法１２００は、既に上述されたブロック１２０２へ進んでよい。そうでない場合は、方法１２００はブロック１２１２へ進んでよい。ブロック１２１２で、決定は、プロダクションが、零であるイベントコードを有して、ブロック１２０２で特定されたトークンと同じ終端シンボルを有するスタックにおいて存在するかどうかに関して為されてよい。そのようなプロダクションがスタックに存在しない場合は、生成されてよい。そのようなプロダクションが存在する場合は、ブロック１２０２で特定されたトークンのイベントコードは１だけ増やされてよい。
【０１１０】
幾つかの実施形態は、２進形式のＪＳＯＮ表現法の使用なしでＪＳＯＮドキュメントを表すようＥＸＩドキュメントを符号化する方法を含んでよい。方法は、ＪＳＯＮドキュメントに関連するトークンの組をフェッチすることを有してよい。方法は、前記トークンの組に関連する１つ以上の終端タイプを決定することを有してよい。方法は、前記トークンの夫々の終端タイプに部分的に基づき前記トークンの組について１つ以上の現在の名称及び１つ以上の現在の距離を決定することを有してよい。方法は、前記符号化を実行するようプログラムされたプロセッサベースのコンピュータ装置によって、前記ＪＳＯＮドキュメントに関連する１つ以上のトークンの組についての前記１つ以上の現在の名称及び前記１つ以上の現在の距離に基づき、前記ＪＳＯＮドキュメントを表すＥＸＩドキュメントを符号化することを有してよい。
【０１１１】
ここで記載される実施形態は、先に詳細に論じられたように、様々なコンピュータハードウェア又はソフトウェアモジュールを含む専用又は汎用のコンピュータの仕様を含んでよい。
【０１１２】
対象は、構造的な特徴及び／又は方法論的な動作に特有の言語において記載されてきたが、添付の特許請求の範囲において定義される対象は、上記の具体的な特徴及び動作に必ずしも制限されない点が理解されるべきである。むしろ、上記の具体的な特徴及び動作は、特許請求の範囲を実施する例となる形態として開示されている。
【０１１３】
ここで挙げられている全ての例及び条件付き言語は、当該技術を促進することに発明者によって寄与される概念及び発明を読者が理解するのを助ける教育的な目的を意図され、そのような具体的に挙げられている例と及び条件に制限されないものとして解釈されるべきである。本発明の実施形態が詳細に記載されてきたが、様々な変形、置換、及び代替は、発明の主旨及び適用範囲から逸脱せずにそれらに対して為されてよいことが理解されてよい。
【０１１４】
上記の実施形態に加えて、以下の付記を開示する。
（付記１）
２進形式のJavaScript  Object  Notation（ＪＳＯＮ）の使用なしでＪＳＯＮドキュメントを表すようEfficient  XML  Interchange（ＥＸＩ）ドキュメントを符号化する方法であって、
ＪＳＯＮドキュメントに関連するトークンの組をフェッチし、
前記トークンの組に関連する１つ以上の終端タイプを決定し、
前記組に含まれるトークンの終端タイプに部分的に基づき、前記トークンの組に関連する１つ以上の現在の名称及び１つ以上の現在の距離を決定し、
前記符号化を実行するようプログラムされたプロセッサベースのコンピュータ装置によって、前記ＪＳＯＮドキュメントに関連する前記トークンの組についての前記１つ以上の現在の名称及び前記１つ以上の現在の距離に基づき、前記ＪＳＯＮドキュメントを表すＥＸＩドキュメントを符号化する
ことを有する方法。
（付記２）
前記組に含まれるあるトークンについての終端タイプがＳＶであると決定することに応答して、当該方法は、当該トークンが所与の名称に関連するかどうかを判断することを更に有する、
付記１に記載の方法。
（付記３）
前記トークンが前記所与の名称に関連しないと決定することに応答して、当該方法は、
前記トークンについての有効な名称が前記トークンに関連する現在の名称であると決定し、
前記トークンについての有効な距離が前記トークンに関連する現在の距離であると決定し、
前記有効な名称及び前記有効な距離をハッシングすることによって文字列値パーティション及び値チャネルを決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記文字列値パーティション及び前記値チャネルを用いて符号化される、
付記２に記載の方法。
（付記４）
前記トークンが前記所与の名称に関連すると決定することに応答して、当該方法は、
前記トークンに関連する現在の名称が前記所与の名称であると決定し、
前記トークンについての有効な名称が前記現在の名称であると決定し、
前記トークンに関連する現在の距離を零に設定し、
前記トークンについての有効な距離が前記現在の距離であると決定し、
前記有効な名称及び前記有効な距離をハッシングすることによって文字列値パーティション及び値チャネルを決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記文字列値パーティション及び前記値チャネルを用いて符号化される、
付記２に記載の方法。
（付記５）
前記組に含まれるあるトークンについての終端タイプがＳＯであると決定することに応答して、当該方法は、
当該トークンについての有効な名称が当該トークンに関連する現在の名称であると決定し、
当該トークンについての有効な距離が当該トークンに関連する現在の距離であると決定し、
前記有効な名称及び前記有効な距離のハッシュに基づきオブジェクト文法を決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記オブジェクト文法を用いて符号化される、
付記１に記載の方法。
（付記６）
前記組に含まれるあるトークンについての終端タイプがＳＡであると決定することに応答して、当該方法は、
当該トークンについての有効な名称が当該トークンに関連する現在の名称であると決定し、
当該トークンについての有効な距離が当該トークンに関連する現在の距離であると決定し、
前記有効な名称及び前記有効な距離のハッシュに基づきアレイ文法を決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記アレイ文法を用いて符号化される、
付記１に記載の方法。
（付記７）
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、オブジェクト文法、アレイ文法及びドキュメント文法を含むＥＸＩ文法を用いて符号化される、
付記１に記載の方法。
（付記８）
前記オブジェクト文法は、前記ＥＸＩドキュメントによって表される前記ＪＳＯＮドキュメントに含まれる１つ以上のオブジェクトを記述する動的な文法を有する、
付記７に記載の方法。
（付記９）
前記アレイ文法は、前記ＥＸＩドキュメントによって表される前記ＪＳＯＮドキュメントに含まれる１つ以上のアレイを記述する動的な文法を有する、
付記７に記載の方法。
（付記１０）
前記ドキュメント文法は、前記ＥＸＩドキュメントによって表される前記ＪＳＯＮドキュメントのコンテンツを記述する静的な文法を有する、
付記７に記載の方法。
（付記１１）
JavaScript  Object  Notation（ＪＳＯＮ）ドキュメントに関連するトークンの組をフェッチし、
前記トークンの組に関連する１つ以上の終端タイプを決定し、
前記組に含まれるトークンの終端タイプに部分的に基づき、前記トークンの組に関連する１つ以上の現在の名称及び１つ以上の現在の距離を決定し、
符号化を実行するようプログラムされたプロセッサベースのコンピュータ装置によって、前記ＪＳＯＮドキュメントに関連する前記トークンの組についての前記１つ以上の現在の名称及び前記１つ以上の現在の距離に基づき、前記ＪＳＯＮドキュメントを表すEfficient  XML  Interchange（ＥＸＩ）ドキュメントを符号化する
動作を実行するか又は該動作の実行を制御するようプロセッシング装置によって実行可能なコンピュータ命令を記憶している非一時的なコンピュータ可読媒体。
（付記１２）
前記組に含まれる前記トークンのうちの１つについての終端タイプがＳＶであると決定することに応答して、前記動作は、当該トークンが所与の名称に関連するかどうかを判断することを更に有する、
付記１１に記載の非一時的なコンピュータ可読媒体。
（付記１３）
前記トークンが前記所与の名称に関連しないと決定することに応答して、前記動作は、
前記トークンについての有効な名称が前記トークンに関連する現在の名称であると決定し、
前記トークンについての有効な距離が前記トークンに関連する現在の距離であると決定し、
前記有効な名称及び前記有効な距離をハッシングすることによって文字列値パーティション及び値チャネルを決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記文字列値パーティション及び前記値チャネルを用いて符号化される、
付記１２に記載の非一時的なコンピュータ可読媒体。
（付記１４）
前記トークンが前記所与の名称に関連すると決定することに応答して、前記動作は、
前記トークンについての有効な名称が前記所与の名称であると決定し、
前記トークンについての有効な距離が零であると決定し、
前記有効な名称及び前記有効な距離をハッシングすることによって文字列値パーティション及び値チャネルを決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記文字列値パーティション及び前記値チャネルを用いて符号化される、
付記１２に記載の非一時的なコンピュータ可読媒体。
（付記１５）
前記組に含まれるあるトークンについての終端タイプがＳＯであると決定することに応答して、前記動作は、
当該トークンについての有効な名称が当該トークンに関連する現在の名称であると決定し、
当該トークンについての有効な距離が当該トークンに関連する現在の距離であると決定し、
前記有効な名称及び前記有効な距離のハッシュに基づきオブジェクト文法を決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記オブジェクト文法を用いて符号化される、
付記１１に記載の非一時的なコンピュータ可読媒体。
（付記１６）
前記組に含まれるあるトークンについての終端タイプがＳＡであると決定することに応答して、前記動作は、
当該トークンについての有効な名称が当該トークンに関連する現在の名称であると決定し、
当該トークンについての有効な距離が当該トークンに関連する現在の距離であると決定し、
前記有効な名称及び前記有効な距離のハッシュに基づきアレイ文法を決定することを更に有し、
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、前記アレイ文法を用いて符号化される、
付記１１に記載の非一時的なコンピュータ可読媒体。
（付記１７）
前記ＪＳＯＮドキュメントを表す前記ＥＸＩドキュメントは、オブジェクト文法、アレイ文法及びドキュメント文法を含むＥＸＩ文法を用いて符号化される、
付記１１に記載の非一時的なコンピュータ可読媒体。
（付記１８）
前記オブジェクト文法は、前記ＥＸＩドキュメントによって表される前記ＪＳＯＮドキュメントに含まれる１つ以上のオブジェクトを記述する動的な文法を有する、
付記１７に記載の非一時的なコンピュータ可読媒体。
（付記１９）
前記アレイ文法は、前記ＥＸＩドキュメントによって表される前記ＪＳＯＮドキュメントに含まれる１つ以上のアレイを記述する動的な文法を有する、
付記１７に記載の非一時的なコンピュータ可読媒体。
（付記２０）
前記ドキュメント文法は、前記ＥＸＩドキュメントによって表される前記ＪＳＯＮドキュメントのコンテンツを記述する静的な文法を有する、
付記１７に記載の非一時的なコンピュータ可読媒体。
【符号の説明】
【０１１５】
１００  ＪＳＯＮ表現システム
１０５  ＪＳＯＮドキュメント
１１０  ＥＸＩ文法
１１５  パーティションモジュール
１２５  ＥＸＩプロセッサ
１３０  ＥＸＩドキュメント
１６０  プロセッシング装置
１７０  メモリ
１９３  区分圧縮
１９５  区分文字列テーブル
１９７，２００  組み込み要素文法
４０５，１０１６  オブジェクト文法
４１０，１０１８  アレイ文法
４１５  ドキュメント文法
９１６    文字列値パーティション
９１８    値チャネル
【図１Ａ】
2016085731.tif 000003
【図１Ｂ】
2016085731.tif 000004
【図２】
2016085731.tif 000005
【図３】
2016085731.tif 000006
【図４】
2016085731.tif 000007
【図５】
2016085731.tif 000008
【図６】
2016085731.tif 000009
【図７】
2016085731.tif 000010
【図８Ａ】
2016085731.tif 000011
【図８Ｂ】
2016085731.tif 000012
【図８Ｃ】
2016085731.tif 000013
【図９Ａ】
2016085731.tif 000014
【図９Ｂ】
2016085731.tif 000015
【図１０Ａ】
2016085731.tif 000016
【図１０Ｂ】
2016085731.tif 000017
【図１１】
2016085731.tif 000018
【図１２】
2016085731.tif 000019