(57)【要約】  圧縮されたメッセージをメッセージ・プロセッサ間で通信チャネルを介して通信する。圧縮されたメッセージを、明示的あるいは暗黙的なテンプレート識別、および１つまたは複数のパラメータ値という観点から表現することができる。テンプレート識別に基づいて、１つまたは複数のパラメータの意味を理解することができ、その一方で、テンプレートを知らなければパラメータ（複数可）の意味を理解することはできない。テンプレートは１つまたは複数のパラメータに対して意味論的な文脈を提供する。送信メッセージ・プロセッサが、識別されたテンプレートを使用してメッセージを圧縮しておくことができる。あるいは、または追加として、受信メッセージ・プロセッサが、識別されたテンプレートを使用してメッセージを解凍することができる。テンプレート自体は、送信されるとき、圧縮されたメッセージの一部である必要はない。
2011512730.tif 000002
【特許請求の範囲】
【請求項１】
送信メッセージ・プロセッサ（２０１Ａ、２０１Ｃ）および受信メッセージ・プロセッサ（２０２Ａ、２０２Ｃ）を含むメッセージング環境（１００Ａ）において、メッセージ（２１２Ａ、２１２Ｃ、３００）を前記受信メッセージ・プロセッサに送信することに備えて、前記送信メッセージ・プロセッサが前記メッセージを圧縮する方法（６００）であって、
圧縮前のメッセージ（２１２Ａ、２１２Ｃ、３００）にアクセスする動作（６０１）と、
前記メッセージに対応するテンプレート（２１４Ａ、２１４Ｃ、５００）を識別する動作（６０３）と、
圧縮されたメッセージ（２１６Ａ、２１６Ｃ、４００）に含まれるべき前記圧縮前のメッセージの１つまたは複数のパラメータ（３０２Ｂ、３０５Ａ）を識別する動作（６０２）であって、前記識別されたテンプレートが前記識別された１つまたは複数のパラメータに対して意味論的な枠組み（５０２Ｂ、５０５Ｂ）を定義する動作と、
前記テンプレートは少なくとも暗黙的に識別されるように（４０１）、且つ前記圧縮されたメッセージは前記識別された１つまたは複数のパラメータの値（４０２）を含むように、前記圧縮されたメッセージを構築する動作（６０４）と
を含むことを特徴とする方法。
【請求項２】
前記１つまたは複数のパラメータは、前記圧縮前のメッセージの複数のパラメータであることを特徴とする請求項１に記載の方法。
【請求項３】
前記テンプレートはパラメータの名前と値のフィールドの組からなる集合を表し、前記組のうち少なくとも１つに対する値のフィールドはリテラル値を含み、且つ前記組のうち少なくとも１つに対する値のフィールドは抽象的な値を含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記メッセージは前記テンプレートによって表されるが、前記１つまたは複数の識別されたパラメータのそれぞれに対する実際の値で前記テンプレートの対応する抽象的な値を置き換えることを特徴とする請求項３に記載の方法。
【請求項５】
前記圧縮されたメッセージは、前記１つまたは複数の識別されたパラメータのそれぞれに対する実際の値と前記テンプレートの対応する抽象的な値との間の相関関係が前記圧縮されたメッセージ内における前記実際の値の位置に基づいて表されるように、構築されることを特徴とする請求項４に記載の方法。
【請求項６】
前記パラメータの名前と値のフィールドからなる集合は、それぞれ階層的に構成したデータ構造におけるノードとして表現されることを特徴とする請求項３に記載の方法。
【請求項７】
前記識別されたテンプレートは、前記圧縮されたメッセージにおいて明示的に識別されることを特徴とする請求項１に記載の方法。
【請求項８】
前記圧縮されたメッセージを前記受信メッセージ・プロセッサに送信する動作をさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記テンプレートに含まれる意味情報は、前記送信メッセージ・プロセッサと前記受信メッセージ・プロセッサとの間の同一の通信セッションの前に、前記送信メッセージ・プロセッサおよび前記受信メッセージ・プロセッサの双方によって理解されたことを特徴とする請求項１に記載の方法。
【請求項１０】
前記テンプレートに含まれる前記意味情報は、前記メッセージが通信される際の同一の通信セッション中に前記送信メッセージ・プロセッサおよび前記受信メッセージ・プロセッサによって交渉されたことを特徴とする請求項１に記載の方法。
【請求項１１】
前記送信メッセージ・プロセッサと前記受信メッセージ・プロセッサとの間で通信が継続する際に、テンプレート・セットは動的に変化することを特徴とする請求項１に記載の方法。
【請求項１２】
送信メッセージ・プロセッサ（２０１Ｂ、２０１Ｃ）および受信メッセージ・プロセッサ（２０２Ｂ、２０２Ｃ）を含むメッセージング環境（１００ａ）において、前記受信メッセージ・プロセッサが、前記送信メッセージ・プロセッサから受信したメッセージ（２１６Ａ、２１６Ｃ、４００）を解凍する方法（７００）であって、
圧縮されたメッセージ（２１６Ａ、２１６Ｃ、４００）にアクセスする動作（７００）と、
前記圧縮されたメッセージに対応するテンプレート（２２４Ｂ、２１４Ｃ、５００）を識別する動作（７０３）と、
前記圧縮されたメッセージから１つまたは複数のパラメータに対する値（４０２）にアクセスする動作（７０２）であって、前記テンプレート（５００）が、前記圧縮されたメッセージに対応する解凍されたメッセージ内の識別された１つまたは複数のパラメータ（３０２Ｂ、３０５Ｂ）に対して意味論的な枠組み（５０２Ｂ、５０５Ｂ）を定義する動作と、
前記識別されたテンプレートおよび前記圧縮されたメッセージからアクセスされる前記１つまたは複数のパラメータの前記値を使用して、前記圧縮されたメッセージを解凍して前記対応する解凍されたメッセージ（２１２Ｂ、２１２Ｃ）を生成する動作（７０４）と
を含むことを特徴とする方法。
【請求項１３】
前記圧縮されたメッセージにアクセスする前記動作は、前記圧縮されたメッセージの少なくとも派生物を前記送信メッセージ・プロセッサから受信する動作を含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記識別されたテンプレートおよび前記圧縮されたメッセージからアクセスされる前記１つまたは複数のパラメータの前記値を使用して、前記圧縮されたメッセージを解凍して前記対応する解凍されたメッセージを生成する前記動作は、
前記値ごとに、前記圧縮されたメッセージ内の前記値の位置を使用して、前記テンプレート内の前記値の位置を決定する動作
を含むことを特徴とする請求項１２に記載の方法。
【請求項１５】
前記圧縮されたメッセージに対応するテンプレートを識別する前記動作は、
前記圧縮されたメッセージ内のテンプレート識別子を使用して前記テンプレートを識別する動作
を含むことを特徴とする請求項１２に記載の方法。
【請求項１６】
前記圧縮されたメッセージに対応するテンプレートを識別する前記動作は、
デフォルトのテンプレートを前記テンプレートとして識別する動作
を含むことを特徴とする請求項１２に記載の方法。
【請求項１７】
テンプレートを識別する前記動作は、デフォルトのテンプレートを識別する前記動作の前に、
前記圧縮されたメッセージ内にテンプレート識別子がないことを判定する動作
をさらに含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
テンプレートを識別する前記動作は、少なくとも前記圧縮されたメッセージ内の情報を使用して新しいテンプレートを作成するステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１９】
１つまたは複数のプロセッサ（１０２）によって実行されるとき、メッセージを送信メッセージ・プロセッサから受信メッセージ・プロセッサへ送信するためのプロトコルを規定するコンピュータ実行可能命令をコンピュータ可読媒体上に具備した１つまたは複数のコンピュータ可読媒体（１０４）であって、前記プロトコルは、
メッセージを前記メッセージ・プロセッサ間で通信する際に使用するための初期テンプレート・セットを識別する動作（８０１）であって、各テンプレートは、共通の意味をもつメッセージに対して意味論的な文脈を提供する動作と、
前記メッセージ・プロセッサ間で通信される少なくとも幾つかのメッセージごとに、前記メッセージの圧縮または解凍の際に使用するためのテンプレートを前記テンプレート・セットから識別する動作（８０２）と、
テンプレートを前記テンプレート・セットに追加するための１つまたは複数の基準を定義する動作と、
前記１つまたは複数の基準に合致すると判定すると（８０３）、前記テンプレート・セットを変更する動作（８０４）と
を含むことを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項２０】
前記１つまたは複数のコンピュータ可読媒体は物理メモリおよび／または記憶媒体であることを特徴とする請求項１９に記載の１つまたは複数のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、圧縮されたメッセージをメッセージ・プロセッサ間で通信チャネルを介して通信することに関する。
【背景技術】
【０００２】
我々の今日の接続された世界は、メッセージをやりとりするメッセージ・プロセッサによって容易化されている。メッセージ・プロセッサは、機能を完全に備えるコンピューティング・システム、またはコンピューティング・システムの集合体のように、非常に複雑であることもある。他方、メッセージ・プロセッサが非常に単純であることもあり、単純な状態機械（例えば、イヤホン）でしかないかもしれない。メッセージ・プロセッサが、これらの２つの極端な場合の間に位置する機能を有することもある。さらに、メッセージ・プロセッサ間のチャネル機能も同様に多様である。チャネルは光ファイバ・バンドルであることがあり、この場合は、毎秒何テラビット（１０の１２乗ビット）ものオーダの情報が乗る大容量帯域幅を有する。または、チャネルが、例えば赤外線接続やＢｌｕｅｔｏｏｔｈ接続のように非常に低速であることもある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
特定のチャネルを介してメッセージ・プロセッサの間で送信される情報の量を減らすために、情報が圧縮されることがよくある。典型的な圧縮技術では、記号の辞書が構築され、この場合、各記号で特定のビット行が置き換えられる。ハフマン符号化、算術符号化、およびＬＺＷ符号化は、係る辞書ベースの圧縮技術の例である。しかし、係る圧縮技術はビット・レベルでの知識に基づいて圧縮を実施するものであり、圧縮を実施するためにデータの意味論的知識（すなわち、データの意味）は使用しない。
【課題を解決するための手段】
【０００４】
本明細書に説明する実施形態は、圧縮されたメッセージをメッセージ・プロセッサ間で通信チャネルを介して通信することに関する。
【０００５】
送信側から見た一実施形態では、送信メッセージ・プロセッサは、圧縮された形態のメッセージを（明示的または暗黙的に識別された）テンプレート識別、および１つまたは複数のパラメータによって表現することができる。テンプレート識別に基づいて１つまたは複数のパラメータの意味を理解することができ、その一方で、テンプレートを知らなければパラメータ（複数可）の意味を理解することはできない。一実施形態では、送信メッセージ・プロセッサが、最初に、圧縮前のメッセージにアクセスし、そのメッセージを圧縮するために使用するテンプレートを識別し、テンプレート内に存在しない、メッセージの１つまたは複数のパラメータを識別する。次いで、送信メッセージ・プロセッサは、単にテンプレートを（明示的または暗黙的に）識別し次いでパラメータの具体的な値を含めることによって、圧縮されたメッセージを編成することができる。あるいは、送信メッセージ・プロセッサは、単に、識別されたテンプレートの意味を正確に理解できるパラメータ値に対して動作する。
【０００６】
受信側の一実施形態では、受信メッセージ・プロセッサは圧縮された形態のメッセージを受信することができる。受信メッセージ・プロセッサは圧縮されたメッセージに対して直接動作することができ、または、最初に、メッセージに対して動作する前にメッセージを解凍するように動作してもよい。いずれの場合でも、テンプレート識別は、圧縮されたメッセージに含まれるパラメータの意味を文脈上意味論的に理解するのに役立つ。受信メッセージ・プロセッサがメッセージを解凍する場合、識別されたテンプレートを解凍されたメッセージに対する構造的基盤として使用することができる。この場合、パラメータ値は、その解凍されたメッセージの部分を埋めるために使用される。
【０００７】
本明細書に説明する原理は、どの特定の種類のテンプレートにも限定されない。一例として、テンプレートは、両方のメッセージ・プロセッサによってアクセス可能であり且つ理解される静的なテンプレート・セットの一部であってもよい。例えば、静的なテンプレート・セットは、或る規格の一部であってもよいし、両方のメッセージ・プロセッサが関与する分散アプリケーションの一部であってもよいし、通信の開始時のハンドシェイク・プロセス中に交渉されてもよいし、または、他の何らかの方法で設定されてもよい。あるいは、または追加として、テンプレート・セットは動的、すなわち、静的なテンプレート・セットの上に構築され、メッセージ・プロセッサ間のさらなる通信を基盤とするものであってもよい。
【０００８】
本「発明の概要」は、請求項に記載の主題の重要な特徴または本質的な特徴を特定することを意図しておらず、請求項に記載の主題の範囲を限定することを意図しているものでもない。
【０００９】
上述した利点および特徴ならびに他の利点および特徴を得ることができる方法を説明するために、様々な実施形態のより具体的な説明を、添付図面を参照して行うこととする。これらの図面は例示的な実施形態を示すにすぎず、したがって、本発明の範囲を限定するものとはみなされないということを理解して、添付の図面を使用して実施形態をさらに具体的且つ詳細に記述し説明することとする。
【図面の簡単な説明】
【００１０】
【図１Ａ】メッセージ・プロセッサの一例をコンピューティング・システムの形態で示す図である。
【図１Ｂ】メッセージ・プロセッサの別の例を状態機械の形態で示す図である。
【図２Ａ】送信メッセージ・プロセッサが送信用のメッセージを圧縮するが、受信メッセージ・プロセッサが圧縮された形態のメッセージに対して直接動作する、メッセージング環境を示す図である。
【図２Ｂ】送信メッセージ・プロセッサが圧縮された形態のメッセージに対して動作するが、受信メッセージ・プロセッサがそのメッセージを解凍する、メッセージング環境を示す図である
【図２Ｃ】送信メッセージ・プロセッサが送信用のメッセージを圧縮し、受信メッセージ・プロセッサがメッセージを解凍する、メッセージング環境を示す図である。
【図３】１つまたは複数のパラメータで表すことができるメッセージのデータ構造、ならびにメッセージの何らかの意味論的な文脈およびメッセージ内の１つまたは複数のパラメータに対する意味論的な文脈を表現するテンプレートを示す図である。
【図４】テンプレート識別子および１つまたは複数のパラメータを含む圧縮されたメッセージのデータ構造を示す図である。
【図５】メッセージの意味論的な文脈を表現するために使用できるテンプレートのデータ構造、およびメッセージ内の１つまたは複数のパラメータの意味論的な文脈を概略的に示す図である。
【図６】テンプレートを使用してメッセージを圧縮する方法のフロー図である。
【図７】テンプレートを使用してメッセージを解凍する方法のフロー図である。
【図８】動的にテンプレート・セットを変更する方法のフロー図である。
【発明を実施するための形態】
【００１１】
本明細書で説明する実施形態によって、メッセージの圧縮および解凍を説明する。圧縮されたメッセージを、明示的また暗黙的なテンプレート識別、および１つまたは複数のパラメータ値という観点から表すことができる。テンプレート識別に基づいて、１つまたは複数のパラメータの意味を理解することができ、その一方で、テンプレートを知らなければパラメータ（複数可）の意味を理解することができないであろう。テンプレートは１つまたは複数のパラメータに対して意味論的な文脈を提供する。送信メッセージ・プロセッサが、識別されたテンプレートを使用してメッセージを圧縮しておくことができる。あるいは、または追加として、受信メッセージ・プロセッサが、識別されたテンプレートを使用してメッセージを解凍することができる。テンプレート自体は、送信されるとき、圧縮されたメッセージの一部である必要はない。
【００１２】
先ず、図１Ａおよび１Ｂに関して、メッセージ・プロセッサに関するいくつかの導入的な議論を行う。次いで、図２Ａから図７に関して、意味論的テンプレートを使用した圧縮および解凍の様々な実施形態を説明する。最後に、図８に関して、圧縮または解凍に使用できるテンプレート・セットを動的に変更する方法を説明する。
【００１３】
本明細書および請求項においては、「メッセージ・プロセッサ」とは、メッセージを処理できる任意の装置またはコンピューティング・システムを含めて非常に広範囲に解釈されるべきである。メッセージの「処理」とは、メッセージからデータにアクセスすること、データをメッセージに提供すること、メッセージを構築すること、メッセージを圧縮すること、メッセージを解凍すること、および／またはメッセージ内のデータを解釈すること、のうち任意の１つまたは複数を含む。
【００１４】
図１Ａは、メッセージ・プロセッサの一例をコンピューティング・システムの形態で示すものであり、ここで幾分詳細に説明する。その後、別のメッセージ・プロセッサを、図１Ｂの状態機械に関して説明する。とはいっても、「メッセージ・プロセッサ」という用語は図１Ａおよび図１Ｂに説明する実施形態に限定されず、図１Ａおよび図１Ｂは例示を目的として与えたに過ぎないことは、当業者には理解されよう。メッセージ・プロセッサの可能な実装形態が文字通り無限に多様に存在する。それらのすべてを例示し説明すると、本発明の広範な原理が不要に曖昧となるはずである。
【００１５】
コンピューティング・システムの形態は今日ますます多種多様となっている。コンピューティング・システムは、例えば、ハンドヘルド装置、電化製品、ラップトップ・コンピュータ、デスクトップ・コンピュータ、メインフレーム、分散コンピューティング・システムであることもあれば、従来はコンピューティング・システムとはみなされていなかった装置であることさえもある。本明細書および請求項においては、「コンピューティング・システム」という用語は、少なくとも１台のプロセッサ、および当該プロセッサによって実行できるコンピュータ実行可能命令を搭載できるメモリとを含む任意の装置またはシステム（またはそれらの組合せ）を含むとして広汎に定義される。メモリの形態は任意であってよく、コンピューティング・システムの性質および形態に依存してもよい。コンピューティング・システムをネットワーク環境上で分散させてもよく、コンピューティング・システムは複数構成のコンピューティング・システム（ｍｕｌｔｉｐｌｅ  ｃｏｎｓｔｉｔｕｅｎｔ  ｃｏｍｐｕｔｉｎｇ  ｓｙｓｔｅｍ）を含んでもよい。とはいっても、「メッセージ・プロセッサ」は、コンピューティング・システムにおける使用には全く限定されない。
【００１６】
図１Ａは、メッセージ・プロセッサをコンピューティング・システム１００Ａの形態で示す。その最も基本的な構成では、コンピューティング・システム１００は、一般に、少なくとも１台の処理ユニット１０２およびメモリ１０４を含む。メモリ１０４は物理的なシステム・メモリであることができ、当該システム・メモリは、揮発性、不揮発性、またはその２つの何らかの組合せであることができる。本明細書ではまた、「メモリ」という用語を、物理的な記憶媒体のような不揮発性の大容量記憶を指すように使用してもよい。コンピューティング・システムが分散している場合は、処理機能、メモリ機能、および／または記憶機能も同様に分散させてもよい。
【００１７】
本明細書で使用する場合、「モジュール」または「コンポーネント」という用語は、コンピューティング・システム上で実行されるソフトウェア・オブジェクトまたはルーチンを指すことができる。本明細書で説明する異なるコンポーネント、モジュール、エンジン、およびサービスを、（例えば、別々のスレッドとして）コンピューティング・システム上で実行されるオブジェクトまたはプロセスとして実装してもよい。ソフトウェア・アプリケーションはいくつかの相互に関連する構成モジュールを有することができる。分散アプリケーションでは、異なるアプリケーション・モジュールを異なる物理マシン上に展開することができる。
【００１８】
以下の説明では、１つまたは複数のコンピューティング・システムによって実施される動作を参照して実施形態を説明する。係る動作がソフトウェアで実装される場合は、その動作を実施する関連コンピューティング・システムの１つまたは複数のプロセッサが、コンピュータ実行可能命令を実行したことに応じてコンピューティング・システムの動作を指揮する。係る動作の例には、データの操作が含まれる。コンピュータ実行可能命令（および操作されるデータ）をコンピューティング・システム１００Ａのメモリ１０４に格納することができる。例えば、コンピューティング・システム１００Ａが本明細書で説明するようにメッセージを圧縮するメッセージ・プロセッサである場合は、その圧縮（または解凍）を、圧縮（または解凍）を実行させるようにプロセッサに指令するコンピュータ実行可能命令を使用して実現することができるであろう。
【００１９】
コンピューティング・システム１００Ａはまた、コンピューティング・システム１００Ａが他のメッセージ・プロセッサと、例えば、ネットワーク１１０上で通信できるようにする通信チャネル１０８を含むことができる。通信チャネル１０８は通信媒体の例である。通信媒体は、一般に、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを、搬送波または他のトランスポート機構のような変調データ信号で具現化し、任意の情報配信媒体を含む。限定ではなく例として、通信媒体には、有線ネットワークおよび直接配線接続のような有線媒体、および音響、ラジオ、赤外線、および他の無線媒体のような無線媒体が含まれる。本明細書で使用する場合、コンピュータ可読媒体という用語には記憶媒体および通信媒体の両方が含まれる。
【００２０】
また、本発明の範囲内の実施形態は、コンピュータ実行可能命令またはデータ構造を運搬または格納するためのコンピュータ可読媒体を含む。係るコンピュータ可読媒体は、汎用目的または特殊目的のコンピュータによってアクセスできる任意の利用可能な媒体であることができる。限定ではなく例として、係るコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光ディスク記憶、磁気ディスク記憶もしくは他の磁気記憶装置、または所望のプログラム・コード手段をコンピュータ実行可能命令もしくはデータ構造の形態で運搬もしくは記憶するために使用でき且つ汎用目的もしくは特殊目的のコンピュータによってアクセスできる他の任意の媒体のような、物理記憶および／またはメモリ媒体を備えることができる。情報を、ネットワークまたは別の通信接続（ハードワイヤード、無線、またはハードワイヤードもしくは無線の組合せのいずれか）を介してコンピュータに転送または提供する場合は、当該コンピュータは当該接続を、適切にコンピュータ可読媒体とみなす。このように、任意の上記の接続を適切にコンピュータ可読媒体と称する。上記の組合せも、コンピュータ可読媒体の範囲に含まれるべきである。
【００２１】
コンピュータ実行可能命令は、例えば、汎用目的のコンピュータ、特殊目的のコンピュータ、または特殊目的の処理装置にある特定の機能や機能群を実施させる命令およびデータを含む。主題を構造的な特徴および／または方法論的な動作に固有な言葉で説明しているが、当然のことながら添付の請求項で定義する主題は本明細書で説明する特定の特徴または動作に必ずしも限定されない。むしろ、本明細書で説明する特定の特徴および動作は、請求項を実装する形態の例として開示されている。
【００２２】
図１Ｂは、メッセージ・プロセッサを状態機械１２０の形態で示す。状態機械１２０を専らハードウェアで実装してもよい。状態機械は、入力信号（複数可）１２１を受信して、出力信号（複数可）１２２を決定的に生成する。場合によっては、決定的な機能を１つまたは複数の任意の構成設定１２３に依存させてもよい。一実施形態では、状態機械１２０を、論理ゲートを使用して実装してもよいし、おそらくレジスタおよびクロックのような、他の回路コンポーネントを使用して実装してもよい。メッセージ・プロセッサとして実装した場合は、状態機械１２０は本明細書で説明する圧縮および／または解凍を実施することができる。圧縮の場合は、入力信号（複数可）１２１は圧縮前のメッセージを表すことができ、出力信号（複数可）１２２は圧縮されたメッセージを表すことができる。解凍の場合は、入力信号（複数可）１２１は圧縮されたメッセージを表すことができ、出力信号（複数可）１２２は解凍されたメッセージを表すことができる。
【００２３】
メッセージ・プロセッサの例を説明したので、これより、メッセージ・プロセッサを使用してメッセージに対する意味論的テンプレートを使用してメッセージを圧縮および解凍する様々な実施形態を、図２Ａから図７に関して説明する。先ず、図２Ａから図２Ｃは様々なメッセージング環境２００Ａ、２００Ｂ、および２００Ｃを示す。それぞれの場合において、メッセージ環境は送信メッセージ・プロセッサ２０１（送信メッセージ・プロセッサ２０１Ａ、２０１Ｂ、および２０１Ｃに対応）、および受信メッセージ・プロセッサ２０２（受信メッセージ・プロセッサ２０２Ａ、２０２Ｂ、および２０２Ｃに対応）を含む。送信メッセージ・プロセッサ２０１は「送信」メッセージ・プロセッサと呼ばれるが、その理由は単にそれらが本明細書で説明する例においてメッセージを送信するからである。受信メッセージ・プロセッサ２０２は「受信」メッセージ・プロセッサと呼ばれるが、その理由は単にそれらが本明細書で説明する例においてメッセージを受信するからである。しかし、一般的なメッセージ・プロセッサがメッセージを送受信することがよくある。従って、「送信」および「受信」という用語を、送信メッセージ・プロセッサの場合はメッセージ・プロセッサがメッセージを送信するのみであり、受信メッセージ・プロセッサの場合はメッセージ・プロセッサがメッセージを受信するのみであることを排他的に要求していると解釈すべきではない。
【００２４】
図２Ａは、送信メッセージ・プロセッサ２０１Ａがメッセージを圧縮するが、受信メッセージ・プロセッサ２０２Ａが圧縮されたメッセージに対して直接動作する、メッセージ環境２００Ａを示す。具体的には、送信メッセージ・プロセッサは、圧縮前のメッセージ２１２Ａを圧縮コンポーネント２１３Ａへ提供する上層（複数可）２１１Ａを含む。
【００２５】
メッセージは様々な段階の圧縮および処理を受けることができる。「圧縮前の」メッセージとは、メッセージがまだ本発明の原理を使用して圧縮されていないことを意味する。メッセージの一部または全てが、本明細書で説明しておらず本発明の範囲内にない他の圧縮技術を使用して他種の圧縮を受けている可能性はあるかもしれない。しかし、その場合でも、メッセージが本明細書で説明した圧縮を受けていないので、メッセージは「圧縮前」といえる。さらに、「コンポーネント」という用語は、メッセージ・プロセッサを参照して使用される場合はソフトウェア・コンポーネント、ハードウェア・コンポーネント、またはそれらの組合せであってもよい。
【００２６】
圧縮コンポーネント２１３Ａは、テンプレート２１４Ａを使用してメッセージを圧縮する。具体的には、一実施形態では、圧縮コンポーネント２１３Ａはメッセージ自体の意味論的文脈にマッチするテンプレートを選択する。次いで、テンプレートは、メッセージ全体を送信するのではなく、送信すべきメッセージから１つまたは複数のパラメータを選択するために使用される。複数のテンプレートがある場合は、テンプレート・セット２１５Ａからテンプレート２１４Ａにアクセスする。圧縮コンポーネント２１３Ａは、受信メッセージ・プロセッサ２０２Ａに送信するための圧縮されたメッセージ２１６Ａを、１つまたは複数のパラメータおよびテンプレートの（暗黙的なまたは明示的な）識別の形態で作成する。圧縮されたメッセージは、圧縮コンポーネントから直接送信されず、当該メッセージを物理的に送信する前に他の処理を受けることがよくある。従って、「送信されている」状態のメッセージは、論理チャネル２３０Ａ上の論理的な送信とみなされるべきである。論理チャネル２３０Ａは物理チャネルを含んでもよいが、送信メッセージ・プロセッサおよび受信メッセージ・プロセッサのいずれかまたは両方の上に低レベルの処理コンポーネントを含んでもよい。
【００２７】
受信メッセージ・プロセッサ２０２Ａが論理チャネル２３０Ａからの圧縮されたメッセージ２１６Ａ（あるいは少なくともその派生物）にアクセスすると、受信メッセージ・プロセッサ２０２は、メッセージ２１６Ａを最初に解凍することなく、圧縮されたメッセージ２１６Ａに対して直接動作する。
【００２８】
対照的に、図２Ｂは、送信メッセージ・プロセッサ２０１Ｂが圧縮されたメッセージ２１６Ｂに対して直接動作するメッセージング環境２００Ｂを示す。この意味で、メッセージ２１６Ｂを説明するために「圧縮された」という用語を使用することは、これは当該メッセージがより大きいメッセージから以前に圧縮されたことを意味しない。そうではなく、「圧縮された」という用語は、当該メッセージを、意味論的テンプレートを使用して解凍するか、またはより大きい形態に拡張することができることを意味するにすぎない。送信メッセージ・プロセッサ２０１Ｂは圧縮されたメッセージ２１６Ｂを論理チャネル２３０Ｂに送信する。
【００２９】
論理チャネル２３０Ｂから圧縮されたメッセージ２１６Ｂを受信すると、受信メッセージ・プロセッサ２０２Ｂは解凍コンポーネント２２３Ｂを使用してメッセージ２１６Ｂを解凍する。解凍はテンプレート２２４Ｂを使用して達成される。テンプレート２２４Ｂを、圧縮されたメッセージ自体の中で暗黙的あるいは明示的に識別することができる。一実施形態では、解凍は、圧縮されたメッセージの中で提供された１つあるいは複数のパラメータ値を圧縮されたメッセージの中で識別されたテンプレートのインスタンスに置いて、拡張されたメッセージを埋めることよって達成される。複数のテンプレートがある場合は、テンプレート２２４Ｂをテンプレート・セット２２５Ｂから選択する。解凍は、テンプレート２２４Ｂを使用して達成することができる。解凍または拡張されたメッセージ２２２Ｂを、次いで、上層（複数可）２２１Ｂに提供してさらに処理する。
【００３０】
図２Ｃは、送信メッセージ・プロセッサ２０１Ｃがメッセージを圧縮し、受信メッセージ・プロセッサ２０２Ｃがメッセージを解凍する、メッセージ環境２００Ｃを示す。具体的には、送信メッセージ・プロセッサ２０１Ｃは、圧縮前のメッセージ２１２Ｃを圧縮コンポーネント２１３Ｃに提供する上層（複数可）２１１Ｃを含む。
【００３１】
圧縮コンポーネント２１３Ｃは、おそらくテンプレート・セット２１５Ｃから選択されたテンプレート２１４Ｃを使用してメッセージを圧縮する。一実施形態では、圧縮コンポーネント２１３Ｃは、受信メッセージ・プロセッサ２０２Ａへ送信するための圧縮されたメッセージ２１６Ｃを、テンプレートの（暗黙的または明示的な）識別および１つまたは複数のパラメータの形態で作成する。次いで、圧縮されたメッセージ２１６Ｃを論理チャネル２３０Ｃ上で送信することができる。
【００３２】
圧縮されたメッセージ２１６Ｃを論理チャネル２３０Ｃから受信すると、受信メッセージ・プロセッサ２０２Ｃは、解凍コンポーネント２２３Ｃを使用してメッセージ２１６Ｃを解凍する。解凍は、おそらくテンプレート・セット２１５Ｃから選択されたテンプレート２１４Ｃを使用して達成される。解凍に使用されたテンプレートは、圧縮に使用したテンプレートと同じでもよいが、必ずしもその必要はない。さらに、受信メッセージ・プロセッサ２０２Ｃは、送信メッセージ・プロセッサ２０１Ｃがアクセスできる同じテンプレート・セットにアクセスすることができるが、必ずしもその必要はない。解凍されたメッセージ２１２Ｃを、次いで、上層（複数可）２２１Ｃへ提供してさらに処理することができる。
【００３３】
以上のように、本明細書で説明する実施形態を使用して、送信側でメッセージを圧縮することができ、且つ／または、受信側でメッセージを解凍することができる。これより、送信プロセスの例を、拡張されたメッセージ、テンプレート、および圧縮されたメッセージ例の具体例に関して説明する。
【００３４】
図３は、拡張されたメッセージ３００のデータ構造を概略的に示す。必須ではないが、図示した例では、メッセージは幾つかのパラメータの名前と値の組を含む。具体的には、７つの名前と値の組３０１から３０７が示されており、それぞれの組は、名前（名前３０１Ａから３０７Ａにそれぞれ対応する）、および値（値３０１Ｂから３０７Ｂにそれぞれ対応する）を有する。楕円２０８は、処理されている任意の所与のメッセージにおいて７つより多いかまたは少ない名前と値の組がありうることを表す。さらに具体的な一例では、パラメータの名前と値の組の集合を、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）文書において階層的に構造化してもよく、この場合は、それぞれの名前と値の組はＸＭＬ階層内で特定のノードを表す。
【００３５】
議論の目的でのみ、以下で、明快さと参照の簡便さのために行番号を付与した具体的なＸＭＬメッセージの例を与える。
【００３６】
【表１】
2011512730.tif 000003
【００３７】
【表２】
2011512730.tif 000004
【００３８】
【表３】
2011512730.tif 000005
【００３９】
このＸＭＬメッセージの例では、メッセージの正確な内容は、より広く理解するためには重要ではない。おそらく、メッセージ・プロセッサ２０１および２０２はこの種のメッセージを非常に頻繁に処理し、メッセージの各インスタンスに対して少数のパラメータ値のみしか変化しない。例えば、行９、２０、２３、２７、３０、および３３には、これらの値がメッセージごとに変化しうることを記号的に表すためにアスタリスクを付与してある。図３では、例えば、おそらく値３０２Ｂおよび３０５Ｂが変化するが、その種のメッセージと別のメッセージの間では残りの値は同じ値のままである傾向がある。従って、値３０２Ｂおよび３０５Ｂにもアスタリスクが付けられている。
【００４０】
図４は、圧縮されたメッセージのデータ構造４００を示す。圧縮されたメッセージ４００はパラメータ値４０２およびテンプレート識別子４０１を含む。テンプレート識別子４０１は、対応するテンプレートを識別できる十分な情報を含んでいる。幾つかの場合では、これは明示的な識別子であるかもしれない。しかし、他の場合では、テンプレート識別子は暗黙的であってもよい。
【００４１】
テンプレートの例を、図５に関して説明する。しかし、ここでは、テンプレート識別子４０１によって識別されたテンプレートを使用して、より広く拡張されたメッセージの文脈において意味論的文脈をパラメータ４０２に提供できることを述べれば十分である。換言すれば、テンプレートが、メッセージに含まれる値に対する意味論的な枠組みを定義する。例えば、対応するテンプレートは、メッセージ３００に対する意味論的文脈の多くを反映することができ、メッセージ３００内の値３０２Ｂに対する適切な意味論的文脈（すなわち、値３０２Ｂがパラメータ名３０２Ａに対応すること）、およびメッセージ内の値３０５Ｂに対する適切な意味論的文脈（すなわち、値３０５Ｂがパラメータ名３０５Ａに対応すること）を示すことができる。この意味論的文脈の例を図５に関して説明する。
【００４２】
図５は、メッセージ３００に対応するテンプレート例５００のデータ構造を概略的に示す。テンプレート５００はメッセージ３００に対する意味論的文脈の多くを含む。例えば、７つのパラメータの名前と値の組５０１から５０７がテンプレート５００にあり、それらは、拡張メッセージ３００の７つのパラメータの名前と値の組３０１から３０７に対応する。さらに、テンプレート５００のパラメータの名の組５０１から５０７のそれぞれは、メッセージ３００の対応する名前の組３０１から３０７（すなわち、名前３０１Ａから３０７Ａ）と同じである。また、この例では、実際のパラメータ値（値３０１Ｂ、３０３Ｂ、３０４Ｂ、３０６Ｂ、および３０７Ｂ）のうち幾つかも、テンプレート５００およびメッセージ３００において同じである。しかし、そのメッセージの種類のインスタンス間で変化する可能性が高いメッセージ３００内の値（すなわち、メッセージ３００の値３０２Ｂおよび３０５Ｂ）の場合は、テンプレートは抽象的な値（すなわち、対応する抽象的な値５０２Ｂおよび５０５Ｂ）を含む。係る抽象的な値は、パラメータ名に対する実際の値は含まず、単に指定されたプレースホルダである。
【００４３】
メッセージ３００を圧縮するとき、テンプレート５００はその密接な意味論的な類似性に基づいて選択されているかもしれない。そうすると、テンプレート５００を使用してメッセージ３００を圧縮することができる。圧縮されたメッセージ４００は、テンプレート全体を含むのではなく、テンプレート５００を（暗黙的あるいは明示的に）識別するはずである。テンプレート５００の抽象的な値に対応するメッセージ３００の具体的な値も、圧縮されたメッセージ４００に含まれるはずである。例えば、メッセージ３００の値３０２Ｂは、テンプレート５００の抽象的なプレースホルダの値５０２Ｂに対応し、従って、圧縮されたメッセージ４００に含まれるはずである。一実施形態では、圧縮されたメッセージ内の値３０２Ｂの位置は、値３０２Ｂを抽象的な値５０２Ｂに関連付ける。さらに、メッセージ３００の値３０５Ｂはテンプレート５００の抽象的なプレースホルダの値５０５Ｂに対応し、従って、圧縮されたメッセージ４００に含まれるはずである。圧縮されたメッセージ内の値３０２Ｂの位置は、値３０２Ｂを抽象的な値５０２Ｂに関連付ける。従って、圧縮されたメッセージから拡張されたメッセージを再構築する場合に、実際のパラメータ値でテンプレートの対応する抽象的な値を置き換えることにより、テンプレート５００を使用して意味論的な枠組みを提供することができる。
【００４４】
以下で、明快さのために行番号を付与したテンプレートの例を示す。この例は上述のＸＭＬメッセージの例に対応する。
【００４５】
【表４】
2011512730.tif 000006
2011512730.tif 000007
【００４６】
【表５】
2011512730.tif 000008
【００４７】
このテンプレートの例は、上述したメッセージの例と非常に似ているようにみえる。実際、この例では、メッセージの意味は保たれており、テンプレートの各行（行１〜３９）はメッセージの各行（行１〜３９）を複製したものである。この例における唯一の例外は、行９、２０、２３、２７、３０、および３３であり、これらは実際の値に対するプレースホルダを表す。
【００４８】
以下で、例示的な３９行のテンプレートを使用して例示的な３９行のメッセージを圧縮したことから生ずる、圧縮されたメッセージの具体的な例を示す。行番号を明快さのために付与しているが、圧縮されたメッセージは行番号の概念をもたない単なるビット列である。行番号は、ビット列の構造を説明する一助として使用されるにすぎない。
【００４９】
【表６】
2011512730.tif 000009
【００５０】
【表７】
2011512730.tif 000010
【００５１】
各行は１６進法を使用して表されている。メッセージは、１６進法の０ｘ０００１をもつ行１で始まる。１６進法の０ｘ０００１はビット列０００００００００００００００１と同じである。これは圧縮されたメッセージの開始を示す。
【００５２】
この基準では、次に表れる情報はテンプレート識別子であろう。しかし、メッセージからテンプレート識別子を適切に解析するために、行２はテンプレート識別子の長さ（０ｘ００３２、１０進法では５０）を含む。従って、解凍コンポーネントは、行２のビット列を読んだ後、次の５０バイトがテンプレート識別子を含むであろうことを知る。デフォルトでは、解凍コンポーネントは、文字列において１文字ごとに１バイトを有する文字列としてテンプレート識別子が表現されることを理解することができる。
【００５３】
次いで、解凍コンポーネントは、行３で表された次の５０バイトのデータを読み込み、以下の文字列を作成する。
【００５４】
【表８】
2011512730.tif 000011
【００５５】
これにより、解凍コンポーネントは、解凍用の正しいテンプレートにアクセスすることができる。例えば、テンプレート５００にアクセスしてメッセージ４００を解凍することができる。
【００５６】
次いで、解凍コンポーネントは、値の長さにその値自体が続くという形態で、実際のパラメータ値を受信すると予測する。例えば、行４は、次のパラメータが８バイトの長さであることを識別する。具体的には、そのパラメータ値は文字列Ｍｅｓｓａｇｅ１である。行６は、次の値が１０バイトの長さであることを識別し、２００７年１１月３０日の日付に対する文字列の値である行７を読み込む。行８は、次の値が１０バイトの長さであることを識別し、２００８年６月３０日の日付に対する文字列の値である行９を読み込む。行１０は、次の値が（１６進法で表した）０ｘ００００４１０ａバイトの長さであることを識別し、行１１において［ｂｉｎａｒｙ  ｔａｒｇｅｔ  ｓｅｒｖｉｃｅ  ｘ５０９  ｃｅｒｔｉｆｉｃａｔｅ］によって記号的に表したバイナリ列を読み込む。行１２は、次の値が８バイトの長さであることを識別し、行１３を値１２３４５６７８として読み込む。行１４は、次の値が８バイトの長さであることを識別し、行１５を値１２３４５６７８として読み込む。行１６は、１６進の列０ｘＦＦＦＦＦＦＦＦを含み、これはメッセージの終了を示す。必要に応じて、幾つかのオプショナルな値があった場合は、代わりにビット列０ｘＦＦＦＦＦＦＦＦＥと、それに続いて長さと値の組からなる１つまたは複数の列を使用することができる。
【００５７】
次いで、抽出された値を使用することができるが、テンプレートを使用して拡張されたメッセージを再度作成する。例えば、「Ｍｅｓｓａｇｅ１」をテンプレートの行９に差し込み、「３０／１１／２００７」を行２０に差し込み、「３０／０６／２００８」を行２３に差し込み、［ｂｉｎａｒｙ  ｔａｒｇｅｔ  ｓｅｒｖｉｃｅ  ｘ５０９  ｃｅｒｔｉｆｉｃａｔｅ］を行２７に差し込み、１２３４５６７８を行３０に差し込み、１２３４５６７８を行３３に差し込んで、より大きなメッセージを再構築することができる。
【００５８】
図６は、圧縮されたメッセージを圧縮する方法６００のフロー図を示す。例えば、図２Ａ（および図２Ｃ）では、送信メッセージ・プロセッサ２０１Ａ（および２０１Ｃ）はメッセージ２１２Ａ（２１２Ｃ）を圧縮して、圧縮されたメッセージ２１６Ａ（２１６Ｃ）を作成する。
【００５９】
圧縮コンポーネントは、先ず、圧縮前のメッセージにアクセスする（動作６０１）。例えば、図２Ａでは、圧縮コンポーネント２１３Ａがメッセージ２１２Ａにアクセスする。図２Ｃでは、圧縮コンポーネント２１３Ｃがメッセージ２１２Ｃにアクセスする。
【００６０】
圧縮コンポーネントはまた、圧縮されたメッセージに含まれる１つまたは複数のパラメータを識別し（動作６０２）、そのメッセージに対応するテンプレートを識別する（動作６０３）。圧縮コンポーネントは、そのテンプレートを使用して、メッセージのどのパラメータを圧縮されたメッセージに含めるべきかを識別するであろう。いずれにせよ、圧縮されたメッセージは、次いで、テンプレートが少なくとも暗黙的に識別されるように構築される（動作６０４）。次いで、圧縮されたメッセージを、受信メッセージ・プロセッサに送信することができる（動作６０５）。
【００６１】
図７は、圧縮されたメッセージを解凍する方法７００のフロー図を示す。受信メッセージ・プロセッサは、例えば、圧縮されたメッセージの少なくとも派生物を送信メッセージ・プロセッサから受信することによって、圧縮されたメッセージにアクセスする（動作７０１）。例えば、図２Ｂ（および２Ｃ）では、受信メッセージ・プロセッサ２０２Ｂ（および２０２Ｃ）が圧縮されたメッセージ２１６Ｂ（動作２１６Ｃ）を受信する。
【００６２】
受信メッセージ・プロセッサの解凍コンポーネントは、次いで、圧縮されたメッセージから１つまたは複数のパラメータ値にアクセスし（動作７０２）、また、圧縮されたメッセージに関連付けられたテンプレートを識別する（動作７０３）。例えば、圧縮されたメッセージが図４の圧縮されたメッセージ４００に対して説明したように構成された場合、解凍コンポーネントは、テンプレート識別子４０１を圧縮されたメッセージ４００からテンプレートに読み込むことができ、圧縮されたメッセージ４００から１つまたは複数のパラメータ値４０２を読み込むことができる。
【００６３】
しかし、前述したように、テンプレート識別子を圧縮されたメッセージに明示的に含めることはできないが、おそらく推論することはできる。例えば、２つのメッセージ・プロセッサ間で通信する場合に使用される単一のテンプレートが存在することができ、または、おそらく、他のテンプレートが指定されない場合に使用されるデフォルトのテンプレートが存在する。
【００６４】
解凍コンポーネントは、次いで、圧縮されたメッセージ内に含まれていたパラメータ値を使用して、および前述したように識別されたテンプレートを使用して、圧縮されたメッセージを拡張されたメッセージに解凍または拡張することができる（動作７０４）。
【００６５】
テンプレートによって記述される意味情報を、メッセージ・プロセッサ間で最初に通信する時点より相当前に送信メッセージ・プロセッサおよび受信メッセージ・プロセッサによって理解することができる。例えば、異なるコンポーネントを各メッセージ・プロセッサにインストールして、圧縮および解凍を分散アプリケーションの機能に含めることができる。その場合、各メッセージ・プロセッサは、アプリケーションの初期設定に基づいて同じテンプレート・セットを暗黙的に理解することができる。あるいは、メッセージがおそらく初期ハンドシェーク動作として通信されるので、テンプレートの意味情報を、同一の通信セッション内で送信メッセージ・プロセッサおよび受信メッセージ・プロセッサによって交渉することができる。テンプレート・セットは静的および不変であってもよい。あるいは、または追加として、送信メッセージ・プロセッサと受信メッセージ・プロセッサとの間で通信が継続する際に、テンプレート・セットを動的に変更することができる。
【００６６】
図８は、２つのメッセージ・プロセッサ間で通信するために使用されるテンプレート・セットを動的に更新する方法８００のフロー図を示す。先ず、メッセージ・プロセッサ間の通信において使用するための初期の意味論的テンプレート・セットを識別する（動作８０１）。次いで、メッセージ・プロセッサ間で通信される少なくとも幾つかのメッセージごとに、テンプレート・セットの特定のテンプレートを使用してメッセージを圧縮および／または解凍することができる（動作８０２）。さらに、テンプレート・セットを追加するための１つまたは複数の規準を定義することができる（決定ブロック８０３）。１つまたは複数の規準に合致する場合（決定ブロック８０３で、はい、の場合）、テンプレート・セットが変更される（動作８０４）。例えば、特定の意味論的構造を有するメッセージが何らかの頻度で発生すると認識される場合は、係る意味論的構造に対するテンプレートを作成することができる。
【００６７】
以上のように、本明細書で説明する実施形態は、メッセージを、そのメッセージに対する意味論的文脈を使用して圧縮および／または解凍するための効果的な機構を提示する。本発明を、その精神および本質的な特徴から逸脱しない他の特定の形態で具現化してもよい。説明した実施形態は、あらゆる点で、例示的なものに過ぎず、限定的なものではないと考えるべきである。したがって、本発明の範囲は、前述の説明によってではなく添付の特許請求の範囲によって示される。特許請求の範囲の意味および同等の範囲に含まれるあらゆる変更は、その範囲に包含されるべきである。
【図１Ａ】
2011512730.tif 000012
【図１Ｂ】
2011512730.tif 000013
【図２Ａ】
2011512730.tif 000014
【図２Ｂ】
2011512730.tif 000015
【図２Ｃ】
2011512730.tif 000016
【図３】
2011512730.tif 000017
【図４】
2011512730.tif 000018
【図５】
2011512730.tif 000019
【図６】
2011512730.tif 000020
【図７】
2011512730.tif 000021
【図８】
2011512730.tif 000022
【国際調査報告】
2011512730.tif 000023
2011512730.tif 000024