![]() テンプレート式のパラメータを使用したメッセージの符号化および復号化
专利摘要:
圧縮されたメッセージをメッセージ・プロセッサ間で通信チャネルを介して通信する。圧縮されたメッセージを、明示的あるいは暗黙的なテンプレート識別、および1つまたは複数のパラメータ値という観点から表現することができる。テンプレート識別に基づいて、1つまたは複数のパラメータの意味を理解することができ、その一方で、テンプレートを知らなければパラメータ(複数可)の意味を理解することはできない。テンプレートは1つまたは複数のパラメータに対して意味論的な文脈を提供する。送信メッセージ・プロセッサが、識別されたテンプレートを使用してメッセージを圧縮しておくことができる。あるいは、または追加として、受信メッセージ・プロセッサが、識別されたテンプレートを使用してメッセージを解凍することができる。テンプレート自体は、送信されるとき、圧縮されたメッセージの一部である必要はない。 公开号:JP2011512730A 申请号:JP2010544986 申请日:2008-12-31 公开日:2011-04-21 发明作者:ケー.ナンダ アルーン;ジー.ケイラー クリストファー;ピー.シューチャック ジョン;オー.ウィルソン ハーヴェイ 申请人:マイクロソフト コーポレーション; IPC主号:H03M7-30
专利说明:
[0001] 本発明は、圧縮されたメッセージをメッセージ・プロセッサ間で通信チャネルを介して通信することに関する。] 背景技術 [0002] 我々の今日の接続された世界は、メッセージをやりとりするメッセージ・プロセッサによって容易化されている。メッセージ・プロセッサは、機能を完全に備えるコンピューティング・システム、またはコンピューティング・システムの集合体のように、非常に複雑であることもある。他方、メッセージ・プロセッサが非常に単純であることもあり、単純な状態機械(例えば、イヤホン)でしかないかもしれない。メッセージ・プロセッサが、これらの2つの極端な場合の間に位置する機能を有することもある。さらに、メッセージ・プロセッサ間のチャネル機能も同様に多様である。チャネルは光ファイバ・バンドルであることがあり、この場合は、毎秒何テラビット(10の12乗ビット)ものオーダの情報が乗る大容量帯域幅を有する。または、チャネルが、例えば赤外線接続やBluetooth接続のように非常に低速であることもある。] 発明が解決しようとする課題 [0003] 特定のチャネルを介してメッセージ・プロセッサの間で送信される情報の量を減らすために、情報が圧縮されることがよくある。典型的な圧縮技術では、記号の辞書が構築され、この場合、各記号で特定のビット行が置き換えられる。ハフマン符号化、算術符号化、およびLZW符号化は、係る辞書ベースの圧縮技術の例である。しかし、係る圧縮技術はビット・レベルでの知識に基づいて圧縮を実施するものであり、圧縮を実施するためにデータの意味論的知識(すなわち、データの意味)は使用しない。] 課題を解決するための手段 [0004] 本明細書に説明する実施形態は、圧縮されたメッセージをメッセージ・プロセッサ間で通信チャネルを介して通信することに関する。] [0005] 送信側から見た一実施形態では、送信メッセージ・プロセッサは、圧縮された形態のメッセージを(明示的または暗黙的に識別された)テンプレート識別、および1つまたは複数のパラメータによって表現することができる。テンプレート識別に基づいて1つまたは複数のパラメータの意味を理解することができ、その一方で、テンプレートを知らなければパラメータ(複数可)の意味を理解することはできない。一実施形態では、送信メッセージ・プロセッサが、最初に、圧縮前のメッセージにアクセスし、そのメッセージを圧縮するために使用するテンプレートを識別し、テンプレート内に存在しない、メッセージの1つまたは複数のパラメータを識別する。次いで、送信メッセージ・プロセッサは、単にテンプレートを(明示的または暗黙的に)識別し次いでパラメータの具体的な値を含めることによって、圧縮されたメッセージを編成することができる。あるいは、送信メッセージ・プロセッサは、単に、識別されたテンプレートの意味を正確に理解できるパラメータ値に対して動作する。] [0006] 受信側の一実施形態では、受信メッセージ・プロセッサは圧縮された形態のメッセージを受信することができる。受信メッセージ・プロセッサは圧縮されたメッセージに対して直接動作することができ、または、最初に、メッセージに対して動作する前にメッセージを解凍するように動作してもよい。いずれの場合でも、テンプレート識別は、圧縮されたメッセージに含まれるパラメータの意味を文脈上意味論的に理解するのに役立つ。受信メッセージ・プロセッサがメッセージを解凍する場合、識別されたテンプレートを解凍されたメッセージに対する構造的基盤として使用することができる。この場合、パラメータ値は、その解凍されたメッセージの部分を埋めるために使用される。] [0007] 本明細書に説明する原理は、どの特定の種類のテンプレートにも限定されない。一例として、テンプレートは、両方のメッセージ・プロセッサによってアクセス可能であり且つ理解される静的なテンプレート・セットの一部であってもよい。例えば、静的なテンプレート・セットは、或る規格の一部であってもよいし、両方のメッセージ・プロセッサが関与する分散アプリケーションの一部であってもよいし、通信の開始時のハンドシェイク・プロセス中に交渉されてもよいし、または、他の何らかの方法で設定されてもよい。あるいは、または追加として、テンプレート・セットは動的、すなわち、静的なテンプレート・セットの上に構築され、メッセージ・プロセッサ間のさらなる通信を基盤とするものであってもよい。] [0008] 本「発明の概要」は、請求項に記載の主題の重要な特徴または本質的な特徴を特定することを意図しておらず、請求項に記載の主題の範囲を限定することを意図しているものでもない。] [0009] 上述した利点および特徴ならびに他の利点および特徴を得ることができる方法を説明するために、様々な実施形態のより具体的な説明を、添付図面を参照して行うこととする。これらの図面は例示的な実施形態を示すにすぎず、したがって、本発明の範囲を限定するものとはみなされないということを理解して、添付の図面を使用して実施形態をさらに具体的且つ詳細に記述し説明することとする。] 図面の簡単な説明 [0010] メッセージ・プロセッサの一例をコンピューティング・システムの形態で示す図である。 メッセージ・プロセッサの別の例を状態機械の形態で示す図である。 送信メッセージ・プロセッサが送信用のメッセージを圧縮するが、受信メッセージ・プロセッサが圧縮された形態のメッセージに対して直接動作する、メッセージング環境を示す図である。 送信メッセージ・プロセッサが圧縮された形態のメッセージに対して動作するが、受信メッセージ・プロセッサがそのメッセージを解凍する、メッセージング環境を示す図である 送信メッセージ・プロセッサが送信用のメッセージを圧縮し、受信メッセージ・プロセッサがメッセージを解凍する、メッセージング環境を示す図である。 1つまたは複数のパラメータで表すことができるメッセージのデータ構造、ならびにメッセージの何らかの意味論的な文脈およびメッセージ内の1つまたは複数のパラメータに対する意味論的な文脈を表現するテンプレートを示す図である。 テンプレート識別子および1つまたは複数のパラメータを含む圧縮されたメッセージのデータ構造を示す図である。 メッセージの意味論的な文脈を表現するために使用できるテンプレートのデータ構造、およびメッセージ内の1つまたは複数のパラメータの意味論的な文脈を概略的に示す図である。 テンプレートを使用してメッセージを圧縮する方法のフロー図である。 テンプレートを使用してメッセージを解凍する方法のフロー図である。 動的にテンプレート・セットを変更する方法のフロー図である。] 実施例 [0011] 本明細書で説明する実施形態によって、メッセージの圧縮および解凍を説明する。圧縮されたメッセージを、明示的また暗黙的なテンプレート識別、および1つまたは複数のパラメータ値という観点から表すことができる。テンプレート識別に基づいて、1つまたは複数のパラメータの意味を理解することができ、その一方で、テンプレートを知らなければパラメータ(複数可)の意味を理解することができないであろう。テンプレートは1つまたは複数のパラメータに対して意味論的な文脈を提供する。送信メッセージ・プロセッサが、識別されたテンプレートを使用してメッセージを圧縮しておくことができる。あるいは、または追加として、受信メッセージ・プロセッサが、識別されたテンプレートを使用してメッセージを解凍することができる。テンプレート自体は、送信されるとき、圧縮されたメッセージの一部である必要はない。] [0012] 先ず、図1Aおよび1Bに関して、メッセージ・プロセッサに関するいくつかの導入的な議論を行う。次いで、図2Aから図7に関して、意味論的テンプレートを使用した圧縮および解凍の様々な実施形態を説明する。最後に、図8に関して、圧縮または解凍に使用できるテンプレート・セットを動的に変更する方法を説明する。] 図1A 図2A 図7 図8 [0013] 本明細書および請求項においては、「メッセージ・プロセッサ」とは、メッセージを処理できる任意の装置またはコンピューティング・システムを含めて非常に広範囲に解釈されるべきである。メッセージの「処理」とは、メッセージからデータにアクセスすること、データをメッセージに提供すること、メッセージを構築すること、メッセージを圧縮すること、メッセージを解凍すること、および/またはメッセージ内のデータを解釈すること、のうち任意の1つまたは複数を含む。] [0014] 図1Aは、メッセージ・プロセッサの一例をコンピューティング・システムの形態で示すものであり、ここで幾分詳細に説明する。その後、別のメッセージ・プロセッサを、図1Bの状態機械に関して説明する。とはいっても、「メッセージ・プロセッサ」という用語は図1Aおよび図1Bに説明する実施形態に限定されず、図1Aおよび図1Bは例示を目的として与えたに過ぎないことは、当業者には理解されよう。メッセージ・プロセッサの可能な実装形態が文字通り無限に多様に存在する。それらのすべてを例示し説明すると、本発明の広範な原理が不要に曖昧となるはずである。] 図1A 図1B [0015] コンピューティング・システムの形態は今日ますます多種多様となっている。コンピューティング・システムは、例えば、ハンドヘルド装置、電化製品、ラップトップ・コンピュータ、デスクトップ・コンピュータ、メインフレーム、分散コンピューティング・システムであることもあれば、従来はコンピューティング・システムとはみなされていなかった装置であることさえもある。本明細書および請求項においては、「コンピューティング・システム」という用語は、少なくとも1台のプロセッサ、および当該プロセッサによって実行できるコンピュータ実行可能命令を搭載できるメモリとを含む任意の装置またはシステム(またはそれらの組合せ)を含むとして広汎に定義される。メモリの形態は任意であってよく、コンピューティング・システムの性質および形態に依存してもよい。コンピューティング・システムをネットワーク環境上で分散させてもよく、コンピューティング・システムは複数構成のコンピューティング・システム(multiple constituent computing system)を含んでもよい。とはいっても、「メッセージ・プロセッサ」は、コンピューティング・システムにおける使用には全く限定されない。] [0016] 図1Aは、メッセージ・プロセッサをコンピューティング・システム100Aの形態で示す。その最も基本的な構成では、コンピューティング・システム100は、一般に、少なくとも1台の処理ユニット102およびメモリ104を含む。メモリ104は物理的なシステム・メモリであることができ、当該システム・メモリは、揮発性、不揮発性、またはその2つの何らかの組合せであることができる。本明細書ではまた、「メモリ」という用語を、物理的な記憶媒体のような不揮発性の大容量記憶を指すように使用してもよい。コンピューティング・システムが分散している場合は、処理機能、メモリ機能、および/または記憶機能も同様に分散させてもよい。] 図1A [0017] 本明細書で使用する場合、「モジュール」または「コンポーネント」という用語は、コンピューティング・システム上で実行されるソフトウェア・オブジェクトまたはルーチンを指すことができる。本明細書で説明する異なるコンポーネント、モジュール、エンジン、およびサービスを、(例えば、別々のスレッドとして)コンピューティング・システム上で実行されるオブジェクトまたはプロセスとして実装してもよい。ソフトウェア・アプリケーションはいくつかの相互に関連する構成モジュールを有することができる。分散アプリケーションでは、異なるアプリケーション・モジュールを異なる物理マシン上に展開することができる。] [0018] 以下の説明では、1つまたは複数のコンピューティング・システムによって実施される動作を参照して実施形態を説明する。係る動作がソフトウェアで実装される場合は、その動作を実施する関連コンピューティング・システムの1つまたは複数のプロセッサが、コンピュータ実行可能命令を実行したことに応じてコンピューティング・システムの動作を指揮する。係る動作の例には、データの操作が含まれる。コンピュータ実行可能命令(および操作されるデータ)をコンピューティング・システム100Aのメモリ104に格納することができる。例えば、コンピューティング・システム100Aが本明細書で説明するようにメッセージを圧縮するメッセージ・プロセッサである場合は、その圧縮(または解凍)を、圧縮(または解凍)を実行させるようにプロセッサに指令するコンピュータ実行可能命令を使用して実現することができるであろう。] [0019] コンピューティング・システム100Aはまた、コンピューティング・システム100Aが他のメッセージ・プロセッサと、例えば、ネットワーク110上で通信できるようにする通信チャネル108を含むことができる。通信チャネル108は通信媒体の例である。通信媒体は、一般に、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを、搬送波または他のトランスポート機構のような変調データ信号で具現化し、任意の情報配信媒体を含む。限定ではなく例として、通信媒体には、有線ネットワークおよび直接配線接続のような有線媒体、および音響、ラジオ、赤外線、および他の無線媒体のような無線媒体が含まれる。本明細書で使用する場合、コンピュータ可読媒体という用語には記憶媒体および通信媒体の両方が含まれる。] [0020] また、本発明の範囲内の実施形態は、コンピュータ実行可能命令またはデータ構造を運搬または格納するためのコンピュータ可読媒体を含む。係るコンピュータ可読媒体は、汎用目的または特殊目的のコンピュータによってアクセスできる任意の利用可能な媒体であることができる。限定ではなく例として、係るコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMもしくは他の光ディスク記憶、磁気ディスク記憶もしくは他の磁気記憶装置、または所望のプログラム・コード手段をコンピュータ実行可能命令もしくはデータ構造の形態で運搬もしくは記憶するために使用でき且つ汎用目的もしくは特殊目的のコンピュータによってアクセスできる他の任意の媒体のような、物理記憶および/またはメモリ媒体を備えることができる。情報を、ネットワークまたは別の通信接続(ハードワイヤード、無線、またはハードワイヤードもしくは無線の組合せのいずれか)を介してコンピュータに転送または提供する場合は、当該コンピュータは当該接続を、適切にコンピュータ可読媒体とみなす。このように、任意の上記の接続を適切にコンピュータ可読媒体と称する。上記の組合せも、コンピュータ可読媒体の範囲に含まれるべきである。] [0021] コンピュータ実行可能命令は、例えば、汎用目的のコンピュータ、特殊目的のコンピュータ、または特殊目的の処理装置にある特定の機能や機能群を実施させる命令およびデータを含む。主題を構造的な特徴および/または方法論的な動作に固有な言葉で説明しているが、当然のことながら添付の請求項で定義する主題は本明細書で説明する特定の特徴または動作に必ずしも限定されない。むしろ、本明細書で説明する特定の特徴および動作は、請求項を実装する形態の例として開示されている。] [0022] 図1Bは、メッセージ・プロセッサを状態機械120の形態で示す。状態機械120を専らハードウェアで実装してもよい。状態機械は、入力信号(複数可)121を受信して、出力信号(複数可)122を決定的に生成する。場合によっては、決定的な機能を1つまたは複数の任意の構成設定123に依存させてもよい。一実施形態では、状態機械120を、論理ゲートを使用して実装してもよいし、おそらくレジスタおよびクロックのような、他の回路コンポーネントを使用して実装してもよい。メッセージ・プロセッサとして実装した場合は、状態機械120は本明細書で説明する圧縮および/または解凍を実施することができる。圧縮の場合は、入力信号(複数可)121は圧縮前のメッセージを表すことができ、出力信号(複数可)122は圧縮されたメッセージを表すことができる。解凍の場合は、入力信号(複数可)121は圧縮されたメッセージを表すことができ、出力信号(複数可)122は解凍されたメッセージを表すことができる。] 図1B [0023] メッセージ・プロセッサの例を説明したので、これより、メッセージ・プロセッサを使用してメッセージに対する意味論的テンプレートを使用してメッセージを圧縮および解凍する様々な実施形態を、図2Aから図7に関して説明する。先ず、図2Aから図2Cは様々なメッセージング環境200A、200B、および200Cを示す。それぞれの場合において、メッセージ環境は送信メッセージ・プロセッサ201(送信メッセージ・プロセッサ201A、201B、および201Cに対応)、および受信メッセージ・プロセッサ202(受信メッセージ・プロセッサ202A、202B、および202Cに対応)を含む。送信メッセージ・プロセッサ201は「送信」メッセージ・プロセッサと呼ばれるが、その理由は単にそれらが本明細書で説明する例においてメッセージを送信するからである。受信メッセージ・プロセッサ202は「受信」メッセージ・プロセッサと呼ばれるが、その理由は単にそれらが本明細書で説明する例においてメッセージを受信するからである。しかし、一般的なメッセージ・プロセッサがメッセージを送受信することがよくある。従って、「送信」および「受信」という用語を、送信メッセージ・プロセッサの場合はメッセージ・プロセッサがメッセージを送信するのみであり、受信メッセージ・プロセッサの場合はメッセージ・プロセッサがメッセージを受信するのみであることを排他的に要求していると解釈すべきではない。] 図2A 図2C 図7 [0024] 図2Aは、送信メッセージ・プロセッサ201Aがメッセージを圧縮するが、受信メッセージ・プロセッサ202Aが圧縮されたメッセージに対して直接動作する、メッセージ環境200Aを示す。具体的には、送信メッセージ・プロセッサは、圧縮前のメッセージ212Aを圧縮コンポーネント213Aへ提供する上層(複数可)211Aを含む。] 図2A [0025] メッセージは様々な段階の圧縮および処理を受けることができる。「圧縮前の」メッセージとは、メッセージがまだ本発明の原理を使用して圧縮されていないことを意味する。メッセージの一部または全てが、本明細書で説明しておらず本発明の範囲内にない他の圧縮技術を使用して他種の圧縮を受けている可能性はあるかもしれない。しかし、その場合でも、メッセージが本明細書で説明した圧縮を受けていないので、メッセージは「圧縮前」といえる。さらに、「コンポーネント」という用語は、メッセージ・プロセッサを参照して使用される場合はソフトウェア・コンポーネント、ハードウェア・コンポーネント、またはそれらの組合せであってもよい。] [0026] 圧縮コンポーネント213Aは、テンプレート214Aを使用してメッセージを圧縮する。具体的には、一実施形態では、圧縮コンポーネント213Aはメッセージ自体の意味論的文脈にマッチするテンプレートを選択する。次いで、テンプレートは、メッセージ全体を送信するのではなく、送信すべきメッセージから1つまたは複数のパラメータを選択するために使用される。複数のテンプレートがある場合は、テンプレート・セット215Aからテンプレート214Aにアクセスする。圧縮コンポーネント213Aは、受信メッセージ・プロセッサ202Aに送信するための圧縮されたメッセージ216Aを、1つまたは複数のパラメータおよびテンプレートの(暗黙的なまたは明示的な)識別の形態で作成する。圧縮されたメッセージは、圧縮コンポーネントから直接送信されず、当該メッセージを物理的に送信する前に他の処理を受けることがよくある。従って、「送信されている」状態のメッセージは、論理チャネル230A上の論理的な送信とみなされるべきである。論理チャネル230Aは物理チャネルを含んでもよいが、送信メッセージ・プロセッサおよび受信メッセージ・プロセッサのいずれかまたは両方の上に低レベルの処理コンポーネントを含んでもよい。] [0027] 受信メッセージ・プロセッサ202Aが論理チャネル230Aからの圧縮されたメッセージ216A(あるいは少なくともその派生物)にアクセスすると、受信メッセージ・プロセッサ202は、メッセージ216Aを最初に解凍することなく、圧縮されたメッセージ216Aに対して直接動作する。] [0028] 対照的に、図2Bは、送信メッセージ・プロセッサ201Bが圧縮されたメッセージ216Bに対して直接動作するメッセージング環境200Bを示す。この意味で、メッセージ216Bを説明するために「圧縮された」という用語を使用することは、これは当該メッセージがより大きいメッセージから以前に圧縮されたことを意味しない。そうではなく、「圧縮された」という用語は、当該メッセージを、意味論的テンプレートを使用して解凍するか、またはより大きい形態に拡張することができることを意味するにすぎない。送信メッセージ・プロセッサ201Bは圧縮されたメッセージ216Bを論理チャネル230Bに送信する。] 図2B [0029] 論理チャネル230Bから圧縮されたメッセージ216Bを受信すると、受信メッセージ・プロセッサ202Bは解凍コンポーネント223Bを使用してメッセージ216Bを解凍する。解凍はテンプレート224Bを使用して達成される。テンプレート224Bを、圧縮されたメッセージ自体の中で暗黙的あるいは明示的に識別することができる。一実施形態では、解凍は、圧縮されたメッセージの中で提供された1つあるいは複数のパラメータ値を圧縮されたメッセージの中で識別されたテンプレートのインスタンスに置いて、拡張されたメッセージを埋めることよって達成される。複数のテンプレートがある場合は、テンプレート224Bをテンプレート・セット225Bから選択する。解凍は、テンプレート224Bを使用して達成することができる。解凍または拡張されたメッセージ222Bを、次いで、上層(複数可)221Bに提供してさらに処理する。] [0030] 図2Cは、送信メッセージ・プロセッサ201Cがメッセージを圧縮し、受信メッセージ・プロセッサ202Cがメッセージを解凍する、メッセージ環境200Cを示す。具体的には、送信メッセージ・プロセッサ201Cは、圧縮前のメッセージ212Cを圧縮コンポーネント213Cに提供する上層(複数可)211Cを含む。] 図2C [0031] 圧縮コンポーネント213Cは、おそらくテンプレート・セット215Cから選択されたテンプレート214Cを使用してメッセージを圧縮する。一実施形態では、圧縮コンポーネント213Cは、受信メッセージ・プロセッサ202Aへ送信するための圧縮されたメッセージ216Cを、テンプレートの(暗黙的または明示的な)識別および1つまたは複数のパラメータの形態で作成する。次いで、圧縮されたメッセージ216Cを論理チャネル230C上で送信することができる。] [0032] 圧縮されたメッセージ216Cを論理チャネル230Cから受信すると、受信メッセージ・プロセッサ202Cは、解凍コンポーネント223Cを使用してメッセージ216Cを解凍する。解凍は、おそらくテンプレート・セット215Cから選択されたテンプレート214Cを使用して達成される。解凍に使用されたテンプレートは、圧縮に使用したテンプレートと同じでもよいが、必ずしもその必要はない。さらに、受信メッセージ・プロセッサ202Cは、送信メッセージ・プロセッサ201Cがアクセスできる同じテンプレート・セットにアクセスすることができるが、必ずしもその必要はない。解凍されたメッセージ212Cを、次いで、上層(複数可)221Cへ提供してさらに処理することができる。] [0033] 以上のように、本明細書で説明する実施形態を使用して、送信側でメッセージを圧縮することができ、且つ/または、受信側でメッセージを解凍することができる。これより、送信プロセスの例を、拡張されたメッセージ、テンプレート、および圧縮されたメッセージ例の具体例に関して説明する。] [0034] 図3は、拡張されたメッセージ300のデータ構造を概略的に示す。必須ではないが、図示した例では、メッセージは幾つかのパラメータの名前と値の組を含む。具体的には、7つの名前と値の組301から307が示されており、それぞれの組は、名前(名前301Aから307Aにそれぞれ対応する)、および値(値301Bから307Bにそれぞれ対応する)を有する。楕円208は、処理されている任意の所与のメッセージにおいて7つより多いかまたは少ない名前と値の組がありうることを表す。さらに具体的な一例では、パラメータの名前と値の組の集合を、XML(eXtensible Markup Language)文書において階層的に構造化してもよく、この場合は、それぞれの名前と値の組はXML階層内で特定のノードを表す。] 図3 [0035] 議論の目的でのみ、以下で、明快さと参照の簡便さのために行番号を付与した具体的なXMLメッセージの例を与える。] [0036] ] [0037] ] [0038] ] [0039] このXMLメッセージの例では、メッセージの正確な内容は、より広く理解するためには重要ではない。おそらく、メッセージ・プロセッサ201および202はこの種のメッセージを非常に頻繁に処理し、メッセージの各インスタンスに対して少数のパラメータ値のみしか変化しない。例えば、行9、20、23、27、30、および33には、これらの値がメッセージごとに変化しうることを記号的に表すためにアスタリスクを付与してある。図3では、例えば、おそらく値302Bおよび305Bが変化するが、その種のメッセージと別のメッセージの間では残りの値は同じ値のままである傾向がある。従って、値302Bおよび305Bにもアスタリスクが付けられている。] 図3 [0040] 図4は、圧縮されたメッセージのデータ構造400を示す。圧縮されたメッセージ400はパラメータ値402およびテンプレート識別子401を含む。テンプレート識別子401は、対応するテンプレートを識別できる十分な情報を含んでいる。幾つかの場合では、これは明示的な識別子であるかもしれない。しかし、他の場合では、テンプレート識別子は暗黙的であってもよい。] 図4 [0041] テンプレートの例を、図5に関して説明する。しかし、ここでは、テンプレート識別子401によって識別されたテンプレートを使用して、より広く拡張されたメッセージの文脈において意味論的文脈をパラメータ402に提供できることを述べれば十分である。換言すれば、テンプレートが、メッセージに含まれる値に対する意味論的な枠組みを定義する。例えば、対応するテンプレートは、メッセージ300に対する意味論的文脈の多くを反映することができ、メッセージ300内の値302Bに対する適切な意味論的文脈(すなわち、値302Bがパラメータ名302Aに対応すること)、およびメッセージ内の値305Bに対する適切な意味論的文脈(すなわち、値305Bがパラメータ名305Aに対応すること)を示すことができる。この意味論的文脈の例を図5に関して説明する。] 図5 [0042] 図5は、メッセージ300に対応するテンプレート例500のデータ構造を概略的に示す。テンプレート500はメッセージ300に対する意味論的文脈の多くを含む。例えば、7つのパラメータの名前と値の組501から507がテンプレート500にあり、それらは、拡張メッセージ300の7つのパラメータの名前と値の組301から307に対応する。さらに、テンプレート500のパラメータの名の組501から507のそれぞれは、メッセージ300の対応する名前の組301から307(すなわち、名前301Aから307A)と同じである。また、この例では、実際のパラメータ値(値301B、303B、304B、306B、および307B)のうち幾つかも、テンプレート500およびメッセージ300において同じである。しかし、そのメッセージの種類のインスタンス間で変化する可能性が高いメッセージ300内の値(すなわち、メッセージ300の値302Bおよび305B)の場合は、テンプレートは抽象的な値(すなわち、対応する抽象的な値502Bおよび505B)を含む。係る抽象的な値は、パラメータ名に対する実際の値は含まず、単に指定されたプレースホルダである。] 図5 [0043] メッセージ300を圧縮するとき、テンプレート500はその密接な意味論的な類似性に基づいて選択されているかもしれない。そうすると、テンプレート500を使用してメッセージ300を圧縮することができる。圧縮されたメッセージ400は、テンプレート全体を含むのではなく、テンプレート500を(暗黙的あるいは明示的に)識別するはずである。テンプレート500の抽象的な値に対応するメッセージ300の具体的な値も、圧縮されたメッセージ400に含まれるはずである。例えば、メッセージ300の値302Bは、テンプレート500の抽象的なプレースホルダの値502Bに対応し、従って、圧縮されたメッセージ400に含まれるはずである。一実施形態では、圧縮されたメッセージ内の値302Bの位置は、値302Bを抽象的な値502Bに関連付ける。さらに、メッセージ300の値305Bはテンプレート500の抽象的なプレースホルダの値505Bに対応し、従って、圧縮されたメッセージ400に含まれるはずである。圧縮されたメッセージ内の値302Bの位置は、値302Bを抽象的な値502Bに関連付ける。従って、圧縮されたメッセージから拡張されたメッセージを再構築する場合に、実際のパラメータ値でテンプレートの対応する抽象的な値を置き換えることにより、テンプレート500を使用して意味論的な枠組みを提供することができる。] [0044] 以下で、明快さのために行番号を付与したテンプレートの例を示す。この例は上述のXMLメッセージの例に対応する。] [0045] ] [0046] ] [0047] このテンプレートの例は、上述したメッセージの例と非常に似ているようにみえる。実際、この例では、メッセージの意味は保たれており、テンプレートの各行(行1〜39)はメッセージの各行(行1〜39)を複製したものである。この例における唯一の例外は、行9、20、23、27、30、および33であり、これらは実際の値に対するプレースホルダを表す。] [0048] 以下で、例示的な39行のテンプレートを使用して例示的な39行のメッセージを圧縮したことから生ずる、圧縮されたメッセージの具体的な例を示す。行番号を明快さのために付与しているが、圧縮されたメッセージは行番号の概念をもたない単なるビット列である。行番号は、ビット列の構造を説明する一助として使用されるにすぎない。] [0049] ] [0050] ] [0051] 各行は16進法を使用して表されている。メッセージは、16進法の0x0001をもつ行1で始まる。16進法の0x0001はビット列0000000000000001と同じである。これは圧縮されたメッセージの開始を示す。] [0052] この基準では、次に表れる情報はテンプレート識別子であろう。しかし、メッセージからテンプレート識別子を適切に解析するために、行2はテンプレート識別子の長さ(0x0032、10進法では50)を含む。従って、解凍コンポーネントは、行2のビット列を読んだ後、次の50バイトがテンプレート識別子を含むであろうことを知る。デフォルトでは、解凍コンポーネントは、文字列において1文字ごとに1バイトを有する文字列としてテンプレート識別子が表現されることを理解することができる。] [0053] 次いで、解凍コンポーネントは、行3で表された次の50バイトのデータを読み込み、以下の文字列を作成する。] [0054] ] [0055] これにより、解凍コンポーネントは、解凍用の正しいテンプレートにアクセスすることができる。例えば、テンプレート500にアクセスしてメッセージ400を解凍することができる。] [0056] 次いで、解凍コンポーネントは、値の長さにその値自体が続くという形態で、実際のパラメータ値を受信すると予測する。例えば、行4は、次のパラメータが8バイトの長さであることを識別する。具体的には、そのパラメータ値は文字列Message1である。行6は、次の値が10バイトの長さであることを識別し、2007年11月30日の日付に対する文字列の値である行7を読み込む。行8は、次の値が10バイトの長さであることを識別し、2008年6月30日の日付に対する文字列の値である行9を読み込む。行10は、次の値が(16進法で表した)0x0000410aバイトの長さであることを識別し、行11において[binary target service x509 certificate]によって記号的に表したバイナリ列を読み込む。行12は、次の値が8バイトの長さであることを識別し、行13を値12345678として読み込む。行14は、次の値が8バイトの長さであることを識別し、行15を値12345678として読み込む。行16は、16進の列0xFFFFFFFFを含み、これはメッセージの終了を示す。必要に応じて、幾つかのオプショナルな値があった場合は、代わりにビット列0xFFFFFFFFEと、それに続いて長さと値の組からなる1つまたは複数の列を使用することができる。] [0057] 次いで、抽出された値を使用することができるが、テンプレートを使用して拡張されたメッセージを再度作成する。例えば、「Message1」をテンプレートの行9に差し込み、「30/11/2007」を行20に差し込み、「30/06/2008」を行23に差し込み、[binary target service x509 certificate]を行27に差し込み、12345678を行30に差し込み、12345678を行33に差し込んで、より大きなメッセージを再構築することができる。] [0058] 図6は、圧縮されたメッセージを圧縮する方法600のフロー図を示す。例えば、図2A(および図2C)では、送信メッセージ・プロセッサ201A(および201C)はメッセージ212A(212C)を圧縮して、圧縮されたメッセージ216A(216C)を作成する。] 図2A 図2C 図6 [0059] 圧縮コンポーネントは、先ず、圧縮前のメッセージにアクセスする(動作601)。例えば、図2Aでは、圧縮コンポーネント213Aがメッセージ212Aにアクセスする。図2Cでは、圧縮コンポーネント213Cがメッセージ212Cにアクセスする。] 図2A 図2C [0060] 圧縮コンポーネントはまた、圧縮されたメッセージに含まれる1つまたは複数のパラメータを識別し(動作602)、そのメッセージに対応するテンプレートを識別する(動作603)。圧縮コンポーネントは、そのテンプレートを使用して、メッセージのどのパラメータを圧縮されたメッセージに含めるべきかを識別するであろう。いずれにせよ、圧縮されたメッセージは、次いで、テンプレートが少なくとも暗黙的に識別されるように構築される(動作604)。次いで、圧縮されたメッセージを、受信メッセージ・プロセッサに送信することができる(動作605)。] [0061] 図7は、圧縮されたメッセージを解凍する方法700のフロー図を示す。受信メッセージ・プロセッサは、例えば、圧縮されたメッセージの少なくとも派生物を送信メッセージ・プロセッサから受信することによって、圧縮されたメッセージにアクセスする(動作701)。例えば、図2B(および2C)では、受信メッセージ・プロセッサ202B(および202C)が圧縮されたメッセージ216B(動作216C)を受信する。] 図2B 図7 [0062] 受信メッセージ・プロセッサの解凍コンポーネントは、次いで、圧縮されたメッセージから1つまたは複数のパラメータ値にアクセスし(動作702)、また、圧縮されたメッセージに関連付けられたテンプレートを識別する(動作703)。例えば、圧縮されたメッセージが図4の圧縮されたメッセージ400に対して説明したように構成された場合、解凍コンポーネントは、テンプレート識別子401を圧縮されたメッセージ400からテンプレートに読み込むことができ、圧縮されたメッセージ400から1つまたは複数のパラメータ値402を読み込むことができる。] 図4 [0063] しかし、前述したように、テンプレート識別子を圧縮されたメッセージに明示的に含めることはできないが、おそらく推論することはできる。例えば、2つのメッセージ・プロセッサ間で通信する場合に使用される単一のテンプレートが存在することができ、または、おそらく、他のテンプレートが指定されない場合に使用されるデフォルトのテンプレートが存在する。] [0064] 解凍コンポーネントは、次いで、圧縮されたメッセージ内に含まれていたパラメータ値を使用して、および前述したように識別されたテンプレートを使用して、圧縮されたメッセージを拡張されたメッセージに解凍または拡張することができる(動作704)。] [0065] テンプレートによって記述される意味情報を、メッセージ・プロセッサ間で最初に通信する時点より相当前に送信メッセージ・プロセッサおよび受信メッセージ・プロセッサによって理解することができる。例えば、異なるコンポーネントを各メッセージ・プロセッサにインストールして、圧縮および解凍を分散アプリケーションの機能に含めることができる。その場合、各メッセージ・プロセッサは、アプリケーションの初期設定に基づいて同じテンプレート・セットを暗黙的に理解することができる。あるいは、メッセージがおそらく初期ハンドシェーク動作として通信されるので、テンプレートの意味情報を、同一の通信セッション内で送信メッセージ・プロセッサおよび受信メッセージ・プロセッサによって交渉することができる。テンプレート・セットは静的および不変であってもよい。あるいは、または追加として、送信メッセージ・プロセッサと受信メッセージ・プロセッサとの間で通信が継続する際に、テンプレート・セットを動的に変更することができる。] [0066] 図8は、2つのメッセージ・プロセッサ間で通信するために使用されるテンプレート・セットを動的に更新する方法800のフロー図を示す。先ず、メッセージ・プロセッサ間の通信において使用するための初期の意味論的テンプレート・セットを識別する(動作801)。次いで、メッセージ・プロセッサ間で通信される少なくとも幾つかのメッセージごとに、テンプレート・セットの特定のテンプレートを使用してメッセージを圧縮および/または解凍することができる(動作802)。さらに、テンプレート・セットを追加するための1つまたは複数の規準を定義することができる(決定ブロック803)。1つまたは複数の規準に合致する場合(決定ブロック803で、はい、の場合)、テンプレート・セットが変更される(動作804)。例えば、特定の意味論的構造を有するメッセージが何らかの頻度で発生すると認識される場合は、係る意味論的構造に対するテンプレートを作成することができる。] 図8 [0067] 以上のように、本明細書で説明する実施形態は、メッセージを、そのメッセージに対する意味論的文脈を使用して圧縮および/または解凍するための効果的な機構を提示する。本発明を、その精神および本質的な特徴から逸脱しない他の特定の形態で具現化してもよい。説明した実施形態は、あらゆる点で、例示的なものに過ぎず、限定的なものではないと考えるべきである。したがって、本発明の範囲は、前述の説明によってではなく添付の特許請求の範囲によって示される。特許請求の範囲の意味および同等の範囲に含まれるあらゆる変更は、その範囲に包含されるべきである。]
权利要求:
請求項1 送信メッセージ・プロセッサ(201A、201C)および受信メッセージ・プロセッサ(202A、202C)を含むメッセージング環境(100A)において、メッセージ(212A、212C、300)を前記受信メッセージ・プロセッサに送信することに備えて、前記送信メッセージ・プロセッサが前記メッセージを圧縮する方法(600)であって、圧縮前のメッセージ(212A、212C、300)にアクセスする動作(601)と、前記メッセージに対応するテンプレート(214A、214C、500)を識別する動作(603)と、圧縮されたメッセージ(216A、216C、400)に含まれるべき前記圧縮前のメッセージの1つまたは複数のパラメータ(302B、305A)を識別する動作(602)であって、前記識別されたテンプレートが前記識別された1つまたは複数のパラメータに対して意味論的な枠組み(502B、505B)を定義する動作と、前記テンプレートは少なくとも暗黙的に識別されるように(401)、且つ前記圧縮されたメッセージは前記識別された1つまたは複数のパラメータの値(402)を含むように、前記圧縮されたメッセージを構築する動作(604)とを含むことを特徴とする方法。 請求項2 前記1つまたは複数のパラメータは、前記圧縮前のメッセージの複数のパラメータであることを特徴とする請求項1に記載の方法。 請求項3 前記テンプレートはパラメータの名前と値のフィールドの組からなる集合を表し、前記組のうち少なくとも1つに対する値のフィールドはリテラル値を含み、且つ前記組のうち少なくとも1つに対する値のフィールドは抽象的な値を含むことを特徴とする請求項1に記載の方法。 請求項4 前記メッセージは前記テンプレートによって表されるが、前記1つまたは複数の識別されたパラメータのそれぞれに対する実際の値で前記テンプレートの対応する抽象的な値を置き換えることを特徴とする請求項3に記載の方法。 請求項5 前記圧縮されたメッセージは、前記1つまたは複数の識別されたパラメータのそれぞれに対する実際の値と前記テンプレートの対応する抽象的な値との間の相関関係が前記圧縮されたメッセージ内における前記実際の値の位置に基づいて表されるように、構築されることを特徴とする請求項4に記載の方法。 請求項6 前記パラメータの名前と値のフィールドからなる集合は、それぞれ階層的に構成したデータ構造におけるノードとして表現されることを特徴とする請求項3に記載の方法。 請求項7 前記識別されたテンプレートは、前記圧縮されたメッセージにおいて明示的に識別されることを特徴とする請求項1に記載の方法。 請求項8 前記圧縮されたメッセージを前記受信メッセージ・プロセッサに送信する動作をさらに含むことを特徴とする請求項1に記載の方法。 請求項9 前記テンプレートに含まれる意味情報は、前記送信メッセージ・プロセッサと前記受信メッセージ・プロセッサとの間の同一の通信セッションの前に、前記送信メッセージ・プロセッサおよび前記受信メッセージ・プロセッサの双方によって理解されたことを特徴とする請求項1に記載の方法。 請求項10 前記テンプレートに含まれる前記意味情報は、前記メッセージが通信される際の同一の通信セッション中に前記送信メッセージ・プロセッサおよび前記受信メッセージ・プロセッサによって交渉されたことを特徴とする請求項1に記載の方法。 請求項11 前記送信メッセージ・プロセッサと前記受信メッセージ・プロセッサとの間で通信が継続する際に、テンプレート・セットは動的に変化することを特徴とする請求項1に記載の方法。 請求項12 送信メッセージ・プロセッサ(201B、201C)および受信メッセージ・プロセッサ(202B、202C)を含むメッセージング環境(100a)において、前記受信メッセージ・プロセッサが、前記送信メッセージ・プロセッサから受信したメッセージ(216A、216C、400)を解凍する方法(700)であって、圧縮されたメッセージ(216A、216C、400)にアクセスする動作(700)と、前記圧縮されたメッセージに対応するテンプレート(224B、214C、500)を識別する動作(703)と、前記圧縮されたメッセージから1つまたは複数のパラメータに対する値(402)にアクセスする動作(702)であって、前記テンプレート(500)が、前記圧縮されたメッセージに対応する解凍されたメッセージ内の識別された1つまたは複数のパラメータ(302B、305B)に対して意味論的な枠組み(502B、505B)を定義する動作と、前記識別されたテンプレートおよび前記圧縮されたメッセージからアクセスされる前記1つまたは複数のパラメータの前記値を使用して、前記圧縮されたメッセージを解凍して前記対応する解凍されたメッセージ(212B、212C)を生成する動作(704)とを含むことを特徴とする方法。 請求項13 前記圧縮されたメッセージにアクセスする前記動作は、前記圧縮されたメッセージの少なくとも派生物を前記送信メッセージ・プロセッサから受信する動作を含むことを特徴とする請求項12に記載の方法。 請求項14 前記識別されたテンプレートおよび前記圧縮されたメッセージからアクセスされる前記1つまたは複数のパラメータの前記値を使用して、前記圧縮されたメッセージを解凍して前記対応する解凍されたメッセージを生成する前記動作は、前記値ごとに、前記圧縮されたメッセージ内の前記値の位置を使用して、前記テンプレート内の前記値の位置を決定する動作を含むことを特徴とする請求項12に記載の方法。 請求項15 前記圧縮されたメッセージに対応するテンプレートを識別する前記動作は、前記圧縮されたメッセージ内のテンプレート識別子を使用して前記テンプレートを識別する動作を含むことを特徴とする請求項12に記載の方法。 請求項16 前記圧縮されたメッセージに対応するテンプレートを識別する前記動作は、デフォルトのテンプレートを前記テンプレートとして識別する動作を含むことを特徴とする請求項12に記載の方法。 請求項17 テンプレートを識別する前記動作は、デフォルトのテンプレートを識別する前記動作の前に、前記圧縮されたメッセージ内にテンプレート識別子がないことを判定する動作をさらに含むことを特徴とする請求項16に記載の方法。 請求項18 テンプレートを識別する前記動作は、少なくとも前記圧縮されたメッセージ内の情報を使用して新しいテンプレートを作成するステップを含むことを特徴とする請求項12に記載の方法。 請求項19 1つまたは複数のプロセッサ(102)によって実行されるとき、メッセージを送信メッセージ・プロセッサから受信メッセージ・プロセッサへ送信するためのプロトコルを規定するコンピュータ実行可能命令をコンピュータ可読媒体上に具備した1つまたは複数のコンピュータ可読媒体(104)であって、前記プロトコルは、メッセージを前記メッセージ・プロセッサ間で通信する際に使用するための初期テンプレート・セットを識別する動作(801)であって、各テンプレートは、共通の意味をもつメッセージに対して意味論的な文脈を提供する動作と、前記メッセージ・プロセッサ間で通信される少なくとも幾つかのメッセージごとに、前記メッセージの圧縮または解凍の際に使用するためのテンプレートを前記テンプレート・セットから識別する動作(802)と、テンプレートを前記テンプレート・セットに追加するための1つまたは複数の基準を定義する動作と、前記1つまたは複数の基準に合致すると判定すると(803)、前記テンプレート・セットを変更する動作(804)とを含むことを特徴とする1つまたは複数のコンピュータ可読媒体。 請求項20 前記1つまたは複数のコンピュータ可読媒体は物理メモリおよび/または記憶媒体であることを特徴とする請求項19に記載の1つまたは複数のコンピュータ可読媒体。
类似技术:
公开号 | 公开日 | 专利标题 EP2668577B1|2019-08-14|Unrolling quantifications to control in-degree and/or out degree of automaton CA2324608C|2007-02-06|Adaptive packet compression apparatus and method US7739586B2|2010-06-15|Encoding of markup language data DE602004009902T2|2008-08-28|System und verfahren für kompakte nachrichtenübermittlung in der netzwerkkommunikation Girardot et al.2000|Millau: an encoding format for efficient representation and exchange of XML over the Web US7957954B2|2011-06-07|System and computer program product for national language support using a multi-language property file CA2334442C|2005-07-26|Method and apparatus for data compression of network packets US7538695B2|2009-05-26|System and method for deflate processing within a compression engine US7358874B2|2008-04-15|Data compression using a stream selector with edit-in-place capability for compressed data KR100271861B1|2000-11-15|데이타압축, 신장방법 및 장치와 이것을 사용한 데이타처리장치 및 네트워크시스템 US4558302A|1985-12-10|High speed data compression and decompression apparatus and method JP3459030B2|2003-10-20|符号化システム JP4559631B2|2010-10-13|可変長から可変長へのエントロピー符号化のためのコードブック構成 US5323155A|1994-06-21|Semi-static data compression/expansion method US7930436B1|2011-04-19|System and method for dynamically adjusting data compression parameters CA2514832C|2011-09-20|System and method for compression of wireless applications expressed in a structured definition language US8010889B2|2011-08-30|Techniques for efficient loading of binary XML data JP3973557B2|2007-09-12|構造化された文書を圧縮/伸長する方法 US8620995B2|2013-12-31|Method, computer program, transcoding server and computer system for modifying a digital document US6636521B1|2003-10-21|Flexible runtime configurable application program interface | that is command independent and reusable US7607007B2|2009-10-20|Method and apparatus for message routing in a computer system US7577900B2|2009-08-18|Mechanism for maintaining data format synchronization between different entities US6356950B1|2002-03-12|Method for encoding and decoding data according to a protocol specification JP2010539606A|2010-12-16|データ依存チャンキングを使用する最適化されたデータストリーム圧縮 US20040088377A1|2004-05-06|Icon marshalling via web services
同族专利:
公开号 | 公开日 US7746250B2|2010-06-29| US20090198761A1|2009-08-06| EP2248310A1|2010-11-10| CN101933297B|2013-03-27| EP2248310A4|2013-06-26| CN101933297A|2010-12-29| WO2009099501A1|2009-08-13|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2011-11-26| A621| Written request for application examination|Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111125 | 2011-11-26| A521| Written amendment|Effective date: 20111125 Free format text: JAPANESE INTERMEDIATE CODE: A523 | 2012-02-17| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120217 | 2012-02-22| A131| Notification of reasons for refusal|Effective date: 20120221 Free format text: JAPANESE INTERMEDIATE CODE: A131 | 2012-05-22| A521| Written amendment|Effective date: 20120521 Free format text: JAPANESE INTERMEDIATE CODE: A523 | 2012-07-02| A02| Decision of refusal|Effective date: 20120629 Free format text: JAPANESE INTERMEDIATE CODE: A02 |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|