(57)【要約】  システムの開示であって、システムはネットワーク上で装置と通信するサーバを備える。サーバはコンプレッサ／デコンプレッサを有し、ｗｅｂサービス記述を介してシンプル・オブジェクト・アクセス・プロトコル（ＳＯＡＰ）メッセージを識別する。サーバにおけるコンプレッサ／デコンプレッサはさらにｗｅｂサービス記述に従いＳＯＡＰメッセージを圧縮し、圧縮したＳＯＡＰメッセージを装置に送信可能とする。サーバはデータ・シンクロナイザーを有し、圧縮したＳＯＡＰメッセージを装置に送信する。
2009518755.tif 000002
【特許請求の範囲】
【請求項１】
サーバとデータを通信する装置と、
ネットワーク上で前記装置と通信する前記サーバであって、
ｗｅｂサービス記述を介してシンプル・オブジェクト・アクセス・プロトコル（ＳＯＡＰ）メッセージを識別するコンプレッサ／デコンプレッサであって、前記ｗｅｂサービス記述に従い前記ＳＯＡＰメッセージを圧縮し、圧縮した前記ＳＯＡＰメッセージを前記装置に送信可能とする前記コンプレッサ／デコンプレッサと、
圧縮した前記ＳＯＡＰメッセージを前記装置に送信するデータ・シンクロナイザーを有する前記サーバと、
を備えるシステム。
【請求項２】
ｗｅｂサービス定義言語（ＷＳＤＬ）を用いた前記ｗｅｂサービス記述であって、
前記ＷＳＤＬは
前記ｗｅｂサービス記述を有するメタデータ・ファイルと、
前記データに関する記述情報を含む前記ｗｅｂサービス記述と、
ｗｅｂサービス操作に関する情報を含む前記記述情報と、
を含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記コンプレッサ／デコンプレッサは一又は二以上のアプリケーション定義ファイルを介して前記ＳＯＡＰメッセージをさらに識別することを特徴とする請求項１に記載のシステム。
【請求項４】
圧縮した前記ＳＯＡＰメッセージは、前記装置に無線で送信するバイト・ストリームを含むことを特徴とする請求項１に記載のシステム。
【請求項５】
前記サーバは前記ＷＳＤＬを介して辞書を生成する辞書生成機能を備えることを特徴とする請求項１に記載のシステム。
【請求項６】
前記コンプレッサ／デコンプレッサはさらに、前記辞書をトラバースすることと、出力バイト・ストリームを生成する受信ＸＭＬメッセージをトラバースすることによって前記ＳＯＡＰメッセージを圧縮することを特徴とする請求項５に記載のシステム。
【請求項７】
前記コンプレッサ／デコンプレッサはさらに、前記辞書をトラバースすることと、出力ＸＭＬメッセージを生成する受信バイト・ストリームをトラバースすることによって前記ＳＯＡＰメッセージを解凍することを特徴とする請求項５に記載のシステム。
【請求項８】
前記ＷＳＤＬを備えるｗｅｂサービス・サーバであって、ネットワーク上で前記サーバと接続することを特徴とする請求項１に記載のシステム。
【請求項９】
前記ｗｅｂサービス記述は前記ＳＯＡＰメッセージの識別に関連する情報を含むことを特徴とする請求項１に記載のシステム。
【請求項１０】
ｗｅｂサービス記述を介してＳＯＡＰメッセージを識別する段階と、
前記ｗｅｂサービス記述に従い前記ＳＯＡＰメッセージを圧縮し、圧縮した前記ＳＯＡＰメッセージをサーバから装置に送信可能とする前記ＳＯＡＰメッセージを圧縮する段階と、
圧縮した前記ＳＯＡＰメッセージを前記装置に送信する段階と、
を含む方法。
【請求項１１】
ＷＳＤＬを用いた前記ｗｅｂサービス記述であって、
前記ＷＳＤＬは
前記ｗｅｂサービス記述を有するメタデータ・ファイルと、
前記データに関する記述情報を含む前記ｗｅｂサービス記述と、
ｗｅｂサービス操作に関する情報を含む前記記述情報と、
を含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記ＳＯＡＰメッセージの識別は一又は二以上のアプリケーション定義ファイルを介してＳＯＡＰメッセージを識別することをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
前記ＷＳＤＬを介して辞書を生成することを含む請求項１０に記載の方法。
【請求項１４】
前記辞書をトラバースすることと、出力バイト・ストリームを生成する受信ＸＭＬメッセージをトラバースすることによって前記ＳＯＡＰメッセージを圧縮することを特徴とする請求項１３に記載の方法。
【請求項１５】
前記辞書をトラバースすることと、出力ＸＭＬメッセージを生成する受信バイト・ストリームをトラバースすることによって前記ＳＯＡＰメッセージを解凍することを特徴とする請求項１３に記載の方法。
【請求項１６】
機械が
ｗｅｂサービス記述を介してＳＯＡＰメッセージを識別することと、
前記ｗｅｂサービス記述に従い前記ＳＯＡＰメッセージを圧縮し、圧縮した前記ＳＯＡＰメッセージをサーバから装置に送信可能とすることと、
圧縮した前記ＳＯＡＰメッセージを前記装置に送信することと、
を実行する指示のセットであって、前記指示のセットを表すデータを記憶する機械が読み取り可能な媒体。
【請求項１７】
ＷＳＤＬを用いた前記ｗｅｂサービス記述であって、
前記ＷＳＤＬは
前記ｗｅｂサービス記述を有するメタデータ・ファイルと、
前記データに関する記述情報を含む前記ｗｅｂサービス記述と、
ｗｅｂサービス操作に関する情報を含む前記記述情報と、
を含むことを特徴とする請求項１６に記載の機械が読み取り可能な媒体。
【請求項１８】
前記機械が前記ＷＳＤＬを介して辞書を生成するよう前記機械が実行する指示のセットを含むことを特徴とする請求項１６に記載の機械が読み取り可能な媒体。
【請求項１９】
前記辞書をトラバースすることと、出力バイト・ストリームを生成する受信ＸＭＬメッセージをトラバースすることによって前記機械が前記ＳＯＡＰメッセージを圧縮するよう前記機械が実行する指示のセットを含むことを特徴とする請求項１８に記載の機械が読み取り可能な媒体。
【請求項２０】
前記辞書をトラバースすることと、出力ＸＭＬメッセージを生成する受信バイト・ストリームをトラバースすることによって前記機械が前記ＳＯＡＰメッセージを解凍するよう前記機械が実行する指示のセットを含むことを特徴とする請求項１８に記載の機械が読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にネットワークデータサービスの分野に関する。より詳細には、本発明は無線装置と通信するためにデータを圧縮及び解凍するための方法及び装置に関する。
【背景技術】
【０００２】
ここ数年、さまざまな無線データ処理装置が紹介されている。これらにはハンドヘルド・コンピュータＴｒｅｏ６５０のような携帯情報端末（ＰＤＡｓ）やデータ処理機能を備えた携帯電話（例えば、ワイヤレス・アプリケーション・プロトコル（ＷＡＰ）をサポートするような機器）、最近では、無線メッセージング装置などが含まれる。
【０００３】
無線装置の使用の増加によって、無線装置へデータ送受信することの重要性は増加しており、さらに扱いにくくなっている。例えば、無線／携帯装置が低帯域であること、多い待ち時間、低い処理能力のプロセッサ、小さいメモリ、そして、小さい画面などを有していることが知られている。従来、無線装置へデータ送受信するためにデータを圧縮／解凍するための方法は、かかる携帯装置に限定しては考えられていなかった。そこで、無線装置へ高圧縮データを送受信することが必要となっている。ここで、ＸＭＬ（Extensible Markup Language）を基礎としたプロトコルを用いた時にさらに問題となる。例えば、従来の圧縮／解凍方法を用いた場合、ＸＭＬの構文解析（parsing）は、デスクトップ・パソコンのようなより大きいシステムでは比較的容易に実行することができるが、無線／携帯装置では、かかる装置の制限により十分には機能しないからである。
【発明の開示】
【課題を解決するための手段】
【０００４】
本発明の概要
一つの実施例では、システムが無線装置のための最新のデータを維持するために開示される。システムはネットワーク上で装置と通信するサーバを備える。サーバはコンプレッサ／デコンプレッサ（コーデック）を有し、ｗｅｂサービス記述を介してシンプル・オブジェクト・アクセス・プロトコル（ＳＯＡＰ）メッセージを識別する。サーバにおいてコーデックはｗｅｂサービス記述に従いＳＯＡＰメッセージをさらに圧縮し、圧縮したＳＯＡＰメッセージを装置に送信することができる。サーバはデータ・シンクロナイザー（data synchronizer）を有し、圧縮したＳＯＡＰメッセージを装置に送信する。サーバは圧縮したＳＯＡＰメッセージをさらに解凍する。
【０００５】
他の実施例では、方法が開示される。該方法はｗｅｂサービス記述を介してＳＯＡＰメッセージを識別することを含む。この方法はｗｅｂサービス記述に従ってＳＯＡＰメッセージを圧縮することをさらに含み、これによって圧縮したＳＯＡＰメッセージを本装置に送信することができる。次に、圧縮したメッセージを本装置に送信する。この方法は圧縮したＳＯＡＰメッセージを解凍することをさらに含む。
【０００６】
以下の図面に関連した詳細な説明から、本発明のさらなる理解を得ることができる。
【発明を実施するための最良の形態】
【０００７】
無線装置と通信するためにデータを圧縮、解凍するためのメカニズムである一つの実施例に従い、以下の説明において、本発明を完全に理解するために種々の詳細な説明が説明される。しかし、具体的な詳細の一部が無くても、当業者であれば本発明を実施できることは明白であろう。他の例では、本発明の基本原理が曖昧にならないよう、既知の構造及び装置をブロック図に示す。
【０００８】
実施例に関連する特定の特徴や構造または特徴的な説明は少なくとも一つの実施例を含み、「一つの実施例」及び「実施例」によって、詳細な説明を行う。詳細な説明の多くで「一つの実施例」という用語が記載されているが、必ずしも同じ実施例を参照するものではない。
【０００９】
図１はネットワーク構成の一つの実施例を示す。「カスタマー・サイト」１２０は図１に示され、ローカル・エリア・ネットワークまたはワイド・エリア・ネットワークを用いることができ、そのネットワーク上で複数のサーバ１０３やクライアント１１０が通信する。例えば、カスタマー・サイト１２０は単一の会社が維持する全てのサーバやクライアントを含むことができる。
【００１０】
サーバ１０３はネットワークの利用者に対して、さまざまなメッセージング、グループウェアサービス１０２を備える（例えば、ｅメール、インスタント・メッセージング、カレンダーなど）。しかし、本発明の基本原理は特定のメッセージング／グループウェアのプラットフォームに限定するものではない。
【００１１】
一つの実施例では、インターフェース１００は、サービス１０２が保持するデータ・オブジェクト（例えば、ｅメールのメッセージ、インスタント・メッセージ、カレンダー・データなど）を複数の無線データ処理装置（図１では装置１３０）に転送し、その転送は外部データネットワーク１７０及び／または無線サービス提供者のネットワーク１７１を介して行われる。例えば、サーバ１０３はｗｅｂサービスの代用としての機能を果たし、そのサーバは無線ネットワークの様々な携帯装置１３０にデータを送信する。
【００１２】
一つの実施例では、インターフェース１００はソフトウエア・モジュールであって、特定のサービス１０２によって機能する。ここで、注意すべきは、インターフェース１００は、単一または複数構成のハードウエアやソフトウエアに実装することができる。そして、それらは本発明の基本原理と整合する。
【００１３】
一つの実施例では、外部データネットワーク１７０には、インターフェース１００と装置１３０間にデータを送信するために複数の機器などが含まれる。その機器はデータベースやサーバ／クライアント（図示せず）そして、他のネットワーク・ハードウエア（例えば、ルーター、ハブなど）などである。一つの実施例では、インターフェース１００はデータを一つまたはそれより多いパケットにカプセル化する。そのパケットには装置１３０を識別するアドレスが含まれる（例えば、３２ビット・モビテックス・アクセス番号（ＭＡＮ＃））。
【００１４】
外部データネットワーク１７０はパケットを無線サービス提供者のネットワーク１７１に送信する。それは言い換えると、パケット（又はこの時点で含んでいるデータ）を無線通信リンク上で装置１３０に送信する。一つの実施例では、無線サービス提供者のネットワークはＣＤＭＡ２０００ネットワークである。また一方、さまざまなネットワークタイプを採用することができる（例えば、モビテックス、ＧＰＲＳ、ＰＣＳなどである）。そして、それらは本発明の基本原理と整合する。
【００１５】
ここで注意すべきは、ネットワーク・サービス提供者のネットワーク１７１及び外部データネットワーク１７０（かつインターフェース１００と通信する）は同一の組織による所有、運営または、無線サービス提供者のネットワークから無線サービスを借りた所有者、運営者の一方による所有、運営とすることもできる。本発明の基本原理は特定のサービス構成には限定しない。
【００１６】
図２はサーバ２０４と装置２０２間で送信するデータを圧縮及び解凍するためのアーキテクチャーの実施例を示す。クライアント側２０６とサーバ側２２０の実施例を説明する。クライアント側２０６は無線処理クライアントまたは無線処理装置２０２を備え、それらはサーバ２０４と接続し、通信する。装置２０２はモバイル・コンピュータ・システムまたはモバイル・コンピュータ装置を含む。それらは、例えば、ノート型コンピュータ、携帯電話（例えば、スマートホンなど）、携帯情報端末（ＰＤＡ）、ポケット・コンピュータなどである。サーバ２０４はｗｅｂサービス・エンタープライズ・サーバ（エンタープライズ・サーバ）とさらに通信する。そのエンタープライズ・サーバはｗｅｂサービスとｗｅｂサービスに基づくエンタープライズ・アプリケーション２３４を提供する。サーバ２０４及びエンタープライズ・サーバ２２０はネットワークを介して互いに通信することを目的とする。装置２０２及びサーバ２０４はエンタープライズ・サーバのバックエンドと通信し、その通信は公開されたｗｅｂサービス及びｗｅｂサービス・アプリケーション２３４を介して行われる。ネットワークの例としてはローカル・エリア・ネットワーク（ＬＡＮ）やワイド・エリア・ネットワーク（ＷＡＮ）、都市規模ネットワーク（ＭＡＮ）、インターネット、そしてそれらと同様なネットワークとすることができる。さらに、ネットワークは無線ネットワークと接続し、通信する。サーバ２０４はＧｏｏｄｌｉｎｋ（商標）サーバ、Ｇｏｏｄ  Ａｃｃｅｓｓ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ（ＧＡＷＳ）サーバなどとすることができる。それらは、米国カリフォルニア州、サンタクララ、Ｇｏｏｄ Ｔｅｃｈｎｏｌｏｇｙ社が提供する。ｗｅｂサービス・エンタープライズ・サーバの例は、ドイツ、ヴァルドルフ、ＳＡＰ  ＡＧ社のＷｅｂアプリケーション・サーバ、や米国ニューヨーク州、アーモンクのＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ社（ＩＢＭ（商標））のＷｅｂＳｐｈｅｒｅアプリケーション・サーバなどである。
【００１７】
一つの実施例では、装置２０２とサーバ２０４間のデータ通信はｎｅｗ  ＳＯＡＰ２１８を介して実行される。ｎｅｗ  ＳＯＡＰ２１８は携帯装置２０２へのデータ送受信のために圧縮したデータを表す。ｎｅｗ  ＳＯＡＰ２１８はまた圧縮したＸＭＬを含む。データ圧縮はＳＯＡＰコンプレッサ／デコンプレッサ２２２を用いてサーバ２０４で実行される。その実行にはｗｅｂサービス定義言語（ＷＳＤＬ）２３８を用いる。ＷＳＤＬ２３８は関連情報を得るのに用いられ、その関連情報はＷＳＤＬ２３８がメタデータ・ファイルとなるようなデータである。そして、標準ＸＭＬを用いた場合、実行可能なそれぞれのＳＯＡＰメッセージがどのように表されるか、そのメタデータ・ファイルに記述されている。言い換えれば、ＷＳＤＬ２３８はさまざまな操作を意味し、その操作はｗｅｂサービスや既知のそれらの使用法によってもたらされる。一つの実施例では、ＳＯＡＰコーデック２２２のＳＯＡＰエンコーダーはＳＯＡＰメッセージや、いくつかの情報をＷＳＤＬ２３８から取得でき、バイト・ストリーム（stream of bytes）を生成することができる。そのバイト・ストリームは無線でｎｅｗ  ＳＯＡＰ２１８を介して装置２０２に送信することを目的としており、その送信には、サーバ・データ・シンクロナイザー２２４（サーバ・データ・シンク）及び装置のデータ・シンクロザイザー２１０（装置データ・シンク）、そして、サーバ及び装置における高信頼性メッセージング２２６、２１２を用いる。その後、ＳＯＡＰコーデック２２２のＳＯＡＰデコーダーまたはデコンプレッサは、ＷＳＤＬ２３８からのバイト・ストリーム及びいくつかの情報を取得することができ、基のＳＯＡＰメッセージ２３２を再生成する。
【００１８】
一つの実施例では、サーバ２０４はＳＯＡＰコーデック２２２、サーバ・データ・シンク２２４、ｎｅｗ  ＳＯＡＰ圧縮又はＳＯＡＰコーデック辞書（辞書）２２８、ｎｅｗ  ＳＯＡＰ圧縮生成機能又はＳＯＡＰコーデック辞書生成機能（辞書生成機能）２３０及び、サーバにおける高信頼性メッセージング２１８を含む。サーバ２０４はアプリケーション定義ファイル（ＡＤＦ）記憶装置２４０に接続し、ＡＤＦｓ２４２と通信する。クライアント２０２はサーバ２０４を介して通信するＡＤＦ２１４、サーバ・フォーム・レンダー２１６、装置のデータ・シンク２１０及び、装置における高信頼性メッセージング２１２を含む。効果的なネットワーク通信のために、ＳＯＡＰ２３２はサーバ２０４及びエンタープライズ・アプリケーション２３４（ＷＥＢサービス及びＷＥＢサービス・エンタープライズ・サーバを介して）がコモン・データ・トランスファー・プトロコル（common data transfer protocol）をサポートするようにする。クライアント２０２もまたｎａｍｅ  ｖａｌｕｅ−ＳＯＡＰコーデック（name value-SOAP codec）２０８を備え、サーバ２０４のＳＯＡＰコーデックと通信する。サーバ２０４及びエンタープライズ・サーバはＸＭＬ文書の送信元及び受信先となる。
【００１９】
ＳＯＡＰは、ＸＭＬアプリケーション・プログラムのインターフェース（ＡＰＩ）としての機能を果たす標準ＸＭＬベースのプロトコルを参照する。ＳＯＡＰは高い規則性、人による判読可能、柔軟性、詳細であるとされている。ＳＯＡＰはしばしば、ハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）を用いて、ＸＭＬメッセージングの使用を容易にする。例えば、ハイパーテキスト・マークアップ・ランゲージ（ＨＴＭＬ）ページをブラウザにダウンロードや表示をするようリクエストするためにＨＴＴＰを使う代わりに、ＳＯＡＰはＨＴＴＰリクエストを介してＸＭＬメッセージを送信し、リプライがある場合はＨＴＴＰレスポンスを介して受信する。通常、ＳＯＡＰの相互関係はＳＯＡＰノード間で発生する。そのＳＯＡＰノードはＳＯＡＰメッセージの送信元と受信先またはその両方とすることができる。さらに、ＳＯＡＰメッセージはエンベローブ、ヘッダー、ボディのような３つのブロックを有する。エンベローブは通信の単位として用いられる。ヘッダーは通信の属性又は品質を含む。一方、ボディは引数又は文書中にｍｅｓｓａｇｅ  ｎａｍｅｓを有するメッセージを含む。
【００２０】
実施例の説明では、ＳＯＡＰ２３２はＳＯＡＰコーデック２２２を介して使用し、その使用はサーバ２０４及びエンタープライズ・アプリケーション・ｗｅｂサービスのＳＯＡＰエンドポイント２３６において行われる。装置における高信頼性メッセージング２１２及びサーバにおける高信頼性メッセージング２２６はそれぞれ装置２０２及びサーバ２０４に存在し、それらの間でｎｅｗ  ＳＯＡＰメッセージ２１８を送信する。ＷＳＤＬ２３８はメタデータ・ファイルを提供し、標準ＸＭＬを用いた場合、ＳＯＡＰメッセージ２１８、２３２がどのようなに表されるか、そのメタデータ・ファイルに記述されている。これは、ＷＳＤＬ２３８がさらに他のメタデータを含むことを意図する。ＷＳＤＬ２３８のメタデータの使用は、ｗｅｂサービスで用いる様々な操作として既知であり、それら操作の使用法も既知である。
【００２１】
コーデック２２２のＳＯＡＰエンコーダー又はコンプレッサはＳＯＡＰメッセージ２３２及びＳＯＡＰコーデック辞書（例えば、ＷＳＤＬ（ＷＳＤＬ定義２３８）からの要約情報）を受信し、無線で送信する目的のバイト・ストリームを生成する。バイト・ストリームは装置２０２に送信され、その送信はｎｅｗ  ＳＯＡＰ２１８として、データ・シンク２２４を介して装置における高信頼性メッセージング２１２や、サーバ２０４における高信頼性メッセージング２２６に対して行われる。一つの実施例では、ＳＯＡＰコーデック２２２は辞書２２８を用いる。サーバ２０４の辞書生成機能２３０はＷＳＤＬ２３８を用いて辞書２２８を生成する。辞書２２８はＸＭＬメッセージ内の要求要素を特定する。要求要素は、データ種類やその他有用情報である。ＷＳＤＬ２３８の内容が低い頻度ではあるが変化した場合、辞書２２８も変化する。圧縮メッセージとは別に辞書２２８を一度に送信する。メッセージを圧縮する際に使った辞書２２８と同一のものを後の復元又は解凍の時に用いる。一つの実施例では、圧縮に有限状態機械（ＦＳＭ）ＳＯＡＰメソッドを用いて実行すると、高い圧縮率を実現する。他の実施例では、圧縮はパックＳＯＡＰメソッドを用いて実行すると、高い圧縮率を実現するだけではなく、予期しないデータも容易に扱える。
【００２２】
一つの実施例では、パックＳＯＡＰメソッドを用いて、要素及び属性のエンコーディングを実行する。ＷＳＤＬを用いて、メッセージ内の要素名が何になるか決定することができる。コーデック２２２では、その要素名を集め、およその出現頻度を得る。例えば、「Ｃｕｓｔｏｍｅｒｓ」要素は一度出現し、「Ｃｕｓｔｏｍｅｒ」要素は繰り返し要素であるとする。すると、「Ｃｕｓｔｏｍｅｒｓ」の出現頻度は１で、「Ｃｕｓｔｏｍｅｒ」の出現頻度はＡＶＥＲＡＧＥ＿ＡＲＲＡＹ＿ＳＩＺＥ（例えば、数字の８など）で表される。Ｃｕｓｔｏｍｅｒの子（「Ｎａｍｅ」とする）は親の出現頻度を継承する。よって、「Ｎａｍｅ」の出現頻度もＡＶＥＲＡＧＥ＿ＡＲＲＡＹ＿ＳＩＺＥとなる。要素がオプションである場合、要求する値のちょうど２分の１を加える。統計による期待値は発生する最小値及び最大値に基づいて計算することができる。
【００２３】
デコーディングにおいて、ＳＯＡＰコーデック２２２は、次の最終要素は何であるか記憶することができ、最終要素を単一のＥＮＤ＿ＥＬＥＭＥＮＴトークンに統合する。ＵＮＫＮＯＷＮ＿ＥＬＥＭＥＮＴやＵＮＫＮＯＷＮ＿ＡＴＴＲＩＢＵＴＥのような予期せぬＸＭＬのために、他の特別なトークンを追加する。これは、デコーディングの際、テーブル内に存在しない要素が基のＸＭＬに出現した場合、ＵＮＫＮＯＷＮ＿ＥＬＥＭＥＮＴを生成するのに十分な情報を用いて、ＸＭＬを再構成することを示す。未知の要素及び属性が出現すると、圧縮率は多少低くなる可能性があるが、データは保護される。ＷＳＤＬ２３８に含まれる様々なメッセージ及び操作から出現頻度を計算する。ハフマン・ビット・コードを計算することや割当てることができる。このように、最も使われ得るトークンは最小数のビットを占める。ハフマン・ビット・コードはハフマン・エンコーディングの一部であって、劣化のないファイル圧縮のためのアルゴリズムである。そのアルゴリズムは圧縮ファイル内のシンボルの出現頻度に基づいて圧縮する。
【００２４】
さらに、ＤＥＦＩＮＥ＿ＮＡＭＥＳＰＡＣＥやＣＨＡＮＧＥ＿ＤＥＦＡＵＬＴ＿ＮＡＭＥＳＰＡＣＥのような２つの追加のトークンを加える。ＸＭＬが名前空間(ｘｍｌｎｓ：ｐｒｅｆｉｘ＝‘ｕｒｎ：ｗｓ’)を定義するとき又はデフォルトの名前空間(ｘｍｌｎｓ＝‘ｕｒｎ：ｆｏｏ’)を変更するときはこれらトークンを使用する。これらもまた、低い頻度で発生するので、出現頻度は０とする。加えて、ＷＳＤＬ２３８で特定されない場合でも、サーバ２０４からＳＯＡＰフォルトを返すことができる。よって、以下の一又は二以上の要素に低い出現頻度（０．１）を加える。その要素はＳＯＡＰフォルトや、フォルトコード、フォルトストリングなどである。それらはＳＯＡＰフォルトの標準要素である。
【００２５】
データ内容のエンコーディングに関して、ＷＳＤＬ２３８内のＸＭＬスキーマのプロパティの一つは既知の要素と関連付くデータ型を可能にする。例えば、「Ｎａｍｅ」は文字列、「Ａｇｅ」は３２ビット整数、「Ａｌｉｖｅ」はブーリアン、「Ｃｕｓｔｏｍｅｒ」は要素コンテナなどと定義する。型が分かることによって、異なるメソッドを使用することができ、異なるデータを圧縮する。例えば、ブーリアンは１ビットであることから、０は偽を意味し、１は真を意味する。よって、隣り合う８つのブーリアンは８ビットであるのに対して、基のデータは３２から４０バイトである（「ｔｒｕｅ」の文字数の８倍から「ｆａｌｓｅ」の文字数の８倍）。さらに、以下の一又は二以上を用いてエンコードが行われる。（１）ｘｓｄ：ｂｏｏｌｅａｎ（２）正整数型（３）整数型（例えば ｘｓｄ：ｉｎｔ、ｘｓｄ：ｌｏｎｇ、ｘｓｄ：shortなど）（４）ｘｓｄ：ｆｌｏａｔ、ｘｓｄ：ｄｏｕｂｌｅ（５）ｘｓｄ：ｂｙｔｅ（６）ｘｓｄ：ｂａｓｅ６４Ｂｉｎａｒｙ（７）ｘｓｄ：ｈｅｘＢｉｎａｒｙ（８）ｘｓｄ：ｄａｔｅ（９）ｘｓｄ：ｔｉｍｅ（１０）ｘｓｄ：ｄａｔｅＴｉｍｅ（１１）ｘｓｄ：ｄｕｒａｔｉｏｎ、ｘｓｄ：ｓｔｒｉｎｇ（１２）ｘｓｄ：ＱＮａｍｅなど。
【００２６】
また、ＸＭＬスキーマは列挙した中から要素のデータ内容を特定することができる。例えば、「ｃｏｌｏｒ」と名付けた要素は３つの候補値ｒｅｄ、ｇｒｅｅｎ、又はｂｌｕｅを有することができる。接頭文字列長と３、４又は５バイトの文字列長を用いてｃｏｌｏｒ要素のデータ内容を生成する代わりに、ｒｅｄは００、ｇｒｅｅｎは０１、ｂｌｕｅは１０のように用いることで２ビットのみを必要とする。辞書２２８に、これらビット・コードを記憶する。万が一、列挙以外の値が用いられると、予期せぬ値のためにビット・コードを記憶する。よって、ｙｅｌｌｏｗが見つからない場合、エンコーディングはその型のために１１を生成する。ハフマン・エンコーディングを用いて、実際のビット・コードを計算することができる。その場合は、予期せぬ値が単により低いハフマンの出現頻度を有する。
【００２７】
いくつかのＸＭＬデータは文字列の繰り返しを有する。アプリケーション定義（例えばＡＡＣファイル）は良い例である。コンプレッサはＸＭＬ内の文字列型データのテーブルを構築するよう使用することができる。さらに、出現頻度はカウントされ、ハフマン・エンコーディングを計算する。例えば、文字列「Ａｃｃｏｕｎｔ」にビット（例えば、０１０１のような）を割り振ることができ、文字列「Ｘｙｚｚｙ」にビットを割り振ることができる。出力ストリームの最初の部分に文字列テーブルを生成する。文字列が列挙されている場合は、単純にそのビット・コードを用いる。ＸＭＬスキーマはまた、型について追加のメタデータを有することができ、追加のメタデータは書式又は値についての追加の情報を含む。それらは既知である。例えば、最小値１０００及び最大値１０１５として特定することができるとすると、一般に、最小値に近づくにつれ値は０になり、少数のビットを利用する。よって、最小値を差し引くと、０から１５の範囲を動くので、表現するには４ビットが必要となる。
【００２８】
一つの実施例では、ＦＳＭ  ＳＯＡＰメソッドを用いるとき、装置２０２へ送受信するデータを圧縮及び解凍するためにＦＳＭエンコーディングを使用することができる。ＦＳＭエンコーディングを考慮してＷＳＤＬ２３８を用いると、データを登録する重要なパターンを観測及び理解することができる。例えば、そのパターンはデータ内容の型を含むだけでなく、データの構造も含む。その構造は要素がどのように配置しているかなどである。例えば、最初にＳＯＡＰエンベローブ、その次にＳＯＡＰボディそして、ＱｕｅｒｙＦｏｒＣｕｓｔｏｍｅｒｓあるいはＥｘａｍｐｌｅ要素が到達する。ＱｕｅｒｙＦｏｒＣｕｓｔｏｍｅｒｓである場合、Ｎａｍｅｓ要素が続く。Ｅｘａｍｐｌｅ要素の場合、Ｃｕｓｔｏｍｅｒｓ要素が続く。選択によって、圧縮した出力ストリーム内の情報のエンコーディングを実行する。
【００２９】
一つの実施例では、データのパターン構造から決定する登録情報の様々な要素はＦＳＭを形成するようＳＯＡＰメッセージ内に表される。オートマトンは遷移（矢印）によって状態から状態に移動する。辞書２２８のＦＳＭ辞書内にデータ型情報と一緒にＦＳＭグラフを記憶する。ＳＯＡＰヘッダー及びＳＯＡＰフォルトを自動で加え、それらを指示するＷＳＤＬ２３８を伴うことなくメッセージの一部とすることができる。ＳＯＡＰコーデック２２２のエンコーダーはＳＯＡＰエンベローブを見つけ、要求通りに出力ストリームには何も生成しない。エンコーダーがＳＯＡＰボディを見つけたとき、１ビットを生成する。Ｅｘａｍｐｌｅ要素が次である場合、ビットを生成しない。Ｅｘａｍｐｌｅ要素からＣｕｓｔｏｍｅｒｓ要素の次を見つける。選択されていないので、ビットを生成しない。Ｃｕｓｔｏｍｅｒｓ要素から、Ｃｕｓｔｏｍｅｒ要素の次に達しても要求されていないのでビットを生成しない。ＣｕｓｔｏｍｅｒｓからＮａｍｅに移動してもビットを生成しない。この時点で、Ｎａｍｅは文字列型なので、文字列内容を生成する。パックＳＯＡＰメソッドを用いた場合、ＳＯＡＰコーデック２２２のパック・コーデックのために、データ内容を生成するための同一のルールを維持する。
【００３０】
ＦＳＭグラフにおいて、Ａｌｉｖｅ要素及びＣｈｉｌｄ要素が選択可能である。例えば、Ａｇｅの後、選択はＡｌｉｖｅの最終要素、Ｃｈｉｌｄの最終要素及びＣｕｓｔｏｍｅｒの最終要素のいずれか一つに移動することができる。また、ループすることもできる。Ｃｈｉｌｄ要素は繰り返すことができ、その他のＣｈｉｌｄ要素又はＣｕｓｔｏｍｅｒの最終要素にヒットする２つの選択が存在する。同様に、Ｃｕｓｔｏｍｅｒの最終要素から、その他のＣｕｓｔｏｍｅｒ要素又はＣｕｓｔｏｍｅｒｓの最終要素にヒットすることができる。２つの間から選択が可能であるとき、一方では０を割当てることができ、他方では１を割当てることができる。ビット・コードの割当てはハフマン・エンコーディングを用いて実行できる。以下の一又は二以上のパラメータを用いて、出現頻度を計算する。パラメータは、重みを有さない選択要素（恐らく存在しない）、重みを有する繰り返し要素（要求値より大きい、すなわち、要素を０から５倍に表すことができることが知られている。この場合、平均は３倍であることが分かる。また、ヒットする次の要素は定義内の次になる可能性が大きい。）である。
【００３１】
一つの実施例では、ＸＭＬの大部分のデータ構造はもはや必要ではないので、より高い圧縮が行われる。しかしながら、ＳＯＡＰコーデック２２２におけるＦＳＭコーデックは予期せぬ要素を扱うことはできない。それは、遷移を予期せぬ要素に加えるための余地が無いからである。この場合の一つの実施例では、予期せぬ要素が発見された場合、ＦＳＭコーデックは中止することができ、ＳＯＡＰコーデック２２２のパック・コーデックに予期せぬ要素を扱うようにすることができる。
【００３２】
一つの実施例では、ＸＭＬスキーマ内の各パスに従うことによって、ＦＳＭを生成する。多くの場面で、多数かつ完全な異なるパスは、共通の構造を含む。例えば、販売のｗｅｂサービスでは、ＸＭＬスキーマ内に表されたＡｃｃｏｕｎｔ  ｂｕｓｉｎｅｓｓオブジェクトを有することができ、そのスキーマにはアカウントｉｄ、名前、主要連絡先、住所、ＵＲＬ、電話番号などのための下位要素を有するＡｃｃｏｕｎｔ要素がある。Ａｃｃｏｕｎｔオブジェクトはかなり大きくすることができる。ｗｅｂサービスはＡｃｃｏｕｎｔオブジェクトを扱う様々な操作を有することができる。様々な操作の例はアカウントの更新、アカウントの生成、全てのアカウントのための検索要求、名前による全てのアカウントのための検索要求などを含む。販売のｗｅｂサービス例を続けると、Ａｃｃｏｕｎｔオブジェクトがｍ状態であり、ＷＳＤＬ２３８をｎ回使用した場合、この単一のＡｃｃｏｕｎｔ型によってｍ×ｎ数分の状態を利用するとみなされる。そのＡｃｃｏｕｎｔオブジェクトは辞書内の大きな空間を占める。この範囲外から下位ＦＳＭに到達し、サブルーチンとみなされる。下位ＦＳＭはそれ自体でＦＳＭであるが、親のＦＳＭからは下位ＦＳＭとされる。Ａｃｃｏｕｎｔ型はｎ状態を利用し、ｍ回参照される。スキーマ内の全ての型ではないが、下位ＦＳＭに引き抜かれる。単にそれらの型は一回以上参照され、ｍ×ｎ（それらを利用する状態数）は所定の閾値を超える。
【００３３】
辞書２２８の計算済みＦＳＭ辞書を用いることは、従来のテキストベースの圧縮アルゴリズムとは異なる。従来のアルゴリズムにはＬＺＷなどが有り、ｇｚｉｐに見ることができる。ＬＺＷは単にバイトのスライド窓（例えば３２Ｋバイト）内でパターンを探す。ＳＯＡＰ  ＦＳＭはＷＳＤＬ２３８から構造及び内容のパターンを知るのに活用し、その活用はＦＳＭを生成し、辞書２２８内に記憶することによって用いられ、圧縮及び解凍のために利用する。
【００３４】
図３はサーバ２０４内のＳＯＡＰ構成要素３０２乃至３２８の前後関係の実施例を示す。配置時構成要素はアプリケーション定義（ＡｐｐＤｅｆ）ウエブスウエル・ブローカー（ＷＢ）（ＡｐｐＤｅｆＷＢ）３０２、ＡｐｐＤｅｆコンソールのユーザ・インターフェース（ＡｐｐＤｅｆ  ｃｏｎｓｏｌｅ  ＵＩ）３０４、ＡｐｐＤｅｆ 管理機能３０６及びＳＯＡＰコーデック辞書生成機能３０８を含む。実行時構成要素は再検索要求コンソールのユーザ・インターフェース３１６、ｗｅｂサービス（ＷＳ）実行機能３１８、通知登録管理機能３２０、ＷＳリクエスト／レスポンス・メッセージ・プロセッサ３２２、ＳＯＡＰエンコーダー／デコーダー又はコンプレッサ／デコンプレッサ３２４、アクセス・メッセージ・プロセッサ３２６及び高信頼性メッセージング（セッション）３２８を含む。他の構成要素は配置時構成要素及び実行時構成要素の両方に含まれるＳＯＡＰコーデック辞書管理機能３１０、データ・シンク３１２及びデータベース３１４である。
【００３５】
図４はｗｅｂサービス定義言語及びシンプル・オブジェクト・アクセス・プロトコルの圧縮／解凍辞書を用いたデータの圧縮及び解凍プロセスの実施例を示す。処理ブロック４０２では、ＳＯＡＰコーデック辞書をＷＳＤＬから生成する。一つの実施例では、データ又はＳＯＡＰメッセージの圧縮では、処理ブロック４０４で新たに生成した辞書及び受信ＸＭＬメッセージをトラバース（traverse）する。最終的に、処理ブロック４０４で出力バイト・ストリームを生成する。ＷＳＤＬによって表されるように、ｗｅｂサービスからのＸＭＬメッセージ毎に辞書を再利用することができる。一つの実施例では、処理ブロック４０６において、データ又はＳＯＡＰメッセージの復元又は解凍では、辞書及び入力バイト・ストリーム又は受信バイト・ストリームをトラバースする。最終的に、出力ＸＭＬメッセージを生成する。
【００３６】
図５は辞書生成のためのプロセスの実施例を示す。処理ブロック５０２において、ＷＳＤＬを読み取る。一つの実施例では、処理ブロック５０４において、ＷＳＤＬの操作を分析する。判断ブロック５０６において、ＷＳＤＬ内で追加の操作があるか否かを決定する。操作が無い場合は、プロセスは終点ブロック５１４で終了する。追加の操作が有る場合は、処理ブロック５０８において、ＳＯＡＰエンベローブ及びＳＯＡＰボディのためのＦＳＭ辞書の状態を生成する。
【００３７】
一つの実施例では、処理ブロック５１０において、ＳＯＡＰボディの操作要素名のための状態を生成する。さらに、インプット・パラメータに従い、要素及びそれら下位要素毎の状態を生成する。処理ブロック５１２において、ＳＯＡＰボディからの操作レスポンス要素名のための状態を生成する。出力パラメータに従い、要素及びそれら下位要素毎の状態を生成する。フォルト・パラメータが有る場合、要素及びそれら下位要素毎の状態を生成する。判断ブロック５０６において、さらに操作があるか否か決定する。操作が有る場合、プロセスは処理ブロック５０８を続け、無い場合、プロセスは終点ブロック５１４で終了する。
【００３８】
図６は有限状態機械のデータ圧縮を実行するためのプロセスの実施例を示す。一つの実施例では、処理ブロック６０２において、事前に生成したＦＳＭ（図４及び５の説明のように）の開始状態を決定する。開始状態は現在の状態とされる。処理ブロック６０４において、読み取りのために圧縮したビット・ストリームをオープンする。
【００３９】
判断ブロック６０６において、現在の状態が最終要素であるか否か決定する。一つの実施例では、現在の状態が最終要素であると、処理ブロック６０８において、プロセスはＸＭＬの最終要素の出力を続ける。判断ブロック６１０において、次のステップが一つしか無いか決定する。次のステップが一つしか無い場合、処理ブロック６１６において、現在のステップは次の状態に進む。判断ブロック６１８において、現在の状態が最終状態である場合、プロセスは終点ブロック６２４で終了する。現在の状態が最終状態でない場合、プロセスは判断ブロック６０６に続き、現在の状態が最終要素であるか決定する。
【００４０】
判断ブロック６１０を参照すると、次の状態が複数である場合、処理ブロック６１２において、次の実行可能状態への各遷移は、その状態に関連するビット・コードを有する。遷移が適合するまで、それらビットを読み取る。処理ブロック６１４において、現在の状態は、遷移が適合することによって次の状態に進む。判断ブロック６１８において、現在の状態が最終状態である場合、処理は遷移ブロック６２４で終了する。最終状態では無い場合、プロセスは判断ブロック６０６に続く。
【００４１】
判断ブロック６０６を参照すると、一つの実施例では、現在の状態が最終要素では無い場合、処理ブロック６２０において、プロセスは現在の状態の名前からＸＭＬの開始要素の出力を続ける。判断ブロック６２２において、現在の状態が終端の状態（データ内容は有する）である場合、処理ブロック６２４において、プロセスはビット・ストリーム及びＸＭＬの出力データからデータ内容の読み取りを続ける。処理ブロック６０８において、プロセスはＸＭＬの最終要素の出力を続ける。一方で、現在の状態が終端の状態では無い場合、判断ブロック６１０において、プロセスは次の状態が一つしか無いか判断する。
【００４２】
図７は有限状態機械のデータ解凍を実行するためのプロセスの実施例を示す。ＦＳＭに基づくデータの復元又は解凍を実行するため、処理ブロック７０２において、ＦＳＭの開始状態を決定する。処理ブロック７０４において、ＸＭＬを解析する。処理ブロック７０６において、次の要素を解析済みＸＭＬから取り出す。判断ブロック７０８において、要素名が適合するかによって、現在の状態から次の状態への遷移を決定する。遷移が見つからない場合、プロセスは終点ブロック７２０で終了する（エラーとなる）。遷移が見つかった場合、判断ブロック７１０において、遷移はビット・コードを有するか否かを決定する。
【００４３】
遷移と関連するビット・コードが見つかった場合、処理ブロック７１６において、ビット・コードを生成する。ビット・コードが見つからない又はビット・コードを以前に生成していた場合、判断ブロック７１２において、プロセスは現在の状態がデータ内容を有するか否かを決定する。データ内容が有る場合、処理ブロック７１８において、ＸＭＬからデータ内容を生成する。データ内容が見つからない又はＸＭＬからデータ内容を以前に生成していた場合、判断ブロック７１４において、プロセスはＸＭＬがさらに解析済みであるか判断する。さらに解析するＸＭＬが存在しない場合、プロセスは終点ブロック７２２で終了する。さらに解析するＸＭＬが存在する場合、処理ブロック７０６において、プロセスは解析済みＸＭＬから次の要素の取り出しを続ける。
【００４４】
図８は装置１３０及び／又はサーバ１３０を実装するコンピュータ・システム８００を示す。コンピュータ・システム８００は情報通信のためシステム・バス８２０を備え、情報処理のためバス８２０に接続するプロセッサ８１０も備える。一つの実施例によると、多数のプロセッサの一つを用いて、プロセッサ８１０を実装する。そのプロセッサはマイクロプロセッサであるモトローラＡＲＭファミリーのプロセッサとすることができる。他のプロセッサを用いることが可能であることは、当業者であれば容易に理解できる。
【００４５】
コンピュータ・システム８００はさらに、ランダム・アクセス・メモリ（ＲＡＭ）又は動的記憶装置８２５（ここではメイン・メモリとして示す）を備え、そのメモリはバス８２０に接続され、プロセッサ８１０が実行する情報及び指示を記憶する。プロセッサ８１０が処理を実行する間、メイン・メモリ８２５は一時的な変更情報又は他の中間情報を保存するためにも用いることができる。コンピュータ・システム８００はまた、読み出し専用メモリ（ＲＯＭ）及び／又は他の静的記憶装置８２６を備えることができる。そのメモリはバス８２０に接続され、プロセッサ８１０が用いる静的情報及び指示を記憶する。
【００４６】
データ記憶装置８２５はコンピュータ・システム８００に接続することができ、情報及び指示を記憶する。そのデータ記憶装置８２５は磁気ディスクや光学ディスクそして、それらに相当するドライブとすることができる。コンピュータ・システム８００は、Ｉ／Ｏインターフェース８３０を介して、第２のＩ／Ｏバス８５０に接続することができる。複数のＩ／Ｏ装置はＩ／Ｏバス８５０に接続することができ、表示装置８２４や入力装置（英数字入力装置８２３及び／又はカーソル制御装置８２２）を備える。
【００４７】
通信装置８２１はネットワーク１７０を介して他のコンピュータ（サーバ又はクライアント）にアクセスする。通信装置８２１はモデム、ネットワーク・インターフェース・カード又は他の既知のインターフェース装置を備えることができ、イーサネット（登録商標）、トークン・リングやその他のネットワークに接続する。
【００４８】
本発明の実施例は上記で説明したような様々なステップを備えることができる。そのステップは指示を実行可能な機械で用いることができる。汎用目的のプロセッサや特定の目的のプロセッサが特定のステップを処理するよう、その指示を用いることができる。そして、特定のハードウエア構成要素によって、それらステップを実行することができ、そのハードウエア構成要素はステップを実行するためのハードウエア・ロジックやプログラム済みコンピュータ構成要素の組み合わせ、カスタマイズしたハードウエア構成要素を含む。
【００４９】
本発明の要素は機械が読み取り可能な媒体によって提供することができ、その媒体は機械が実行可能な指示を記憶する。機械が読み取り可能な媒体にはフロッピー（登録商標）・ディスクや光学ディスク、ＣＤ−ＲＯＭ、磁気光学ディスク、ロム、ラム、ＥＰＲＯＭ、ＥＥＰＲＯＭ，磁気または光学カード、伝播メディア、その他電子的な指示を記憶するのに適したメディア／媒体を含み、これらに制限もしない。例えば、本発明はコンピュータ・プログラムによってダウンロードすることができ、そのコンピュータ・プログラムはリモート・コンピュータ（サーバ）からリクエストしたコンピュータ（クライアント）に送信することができる。その送信は通信リンク（モデム、ネットワーク接続など）を介して通信搬送波又は他の伝播メディアを用いたデータ信号を通じて行われる。
【００５０】
上記説明を通して、説明の目的のために、本発明を理解する目的のために、多くの特定の説明を用いた。しかし、当業者であれば、いくつかの特定の説明を用いることなく実施することは可能である。例えば、サーバ１０３で実行するサービス１０２にインターフェース１００を説明したが（図１参照）、本発明の原理の理解では、クライアントがネットワーク上にデータを送信し、単一クライアント上に実装できることが分かる。そして、本発明の範囲及び思想は請求項の用語で判断すべきである。
【図面の簡単な説明】
【００５１】
【図１】本発明の要素を実装するネットワークの実施例を示す。
【図２】サーバと装置の間で送信するデータを圧縮及び解凍するためのアーキテクチャーの実施例を示す。
【図３】サーバ内のシンプル・オブジェクト・アクセス・プロトコル構成要素の前後関係の実施例を示す。
【図４】ｗｅｂサービス定義言語及びシンプル・オブジェクト・アクセス・プロトコルの圧縮／解凍辞書を用いたデータの圧縮及び解凍プロセスの実施例を示す。
【図５】辞書生成のためのプロセスの実施例を示す。
【図６】有限状態機械のデータ圧縮を実行するためのプロセスの実施例を示す。
【図７】有限状態機械のデータ解凍を実行するためのプロセスの実施例を示す。
【図８】装置及び／又はサーバを実装するコンピュータ・システムを示す。
【図１】
2009518755.tif 000003
【図２】
2009518755.tif 000004
【図３】
2009518755.tif 000005
【図４】
2009518755.tif 000006
【図５】
2009518755.tif 000007
【図６】
2009518755.tif 000008
【図７】
2009518755.tif 000009
【図８】
2009518755.tif 000010
【国際調査報告】
2009518755.tif 000011