(57)【特許請求の範囲】
【請求項１】
メッセージ仲介システムにおいて実行されるメッセージ構造を使用したパブリッシュ／サブスクライブ・メッセージングのための方法であって、
パブリッシュ側エンティティがメッセージをパブリッシュすることができ、かつ、サブスクライブ側エンティティがメッセージにサブスクライブすることができる複数のリストを保持するステップと、
共通のメッセージ構造に少なくとも部分的に従うメッセージのためのリストを１以上、前記複数のリストから提供するステップと、
パブリッシュ側エンティティまたはサブスクライブ側エンティティからの要求を、１以上のメッセージのメッセージ構造を定義する抽象表現と前記１以上のリストとを比較することによって、リストとマッチさせるステップと、
前記共通のメッセージ構造に少なくとも部分的に従うメッセージを、前記マッチしたリストを介して前記パブリッシュ側エンティティと前記サブスクライブ側エンティティとの間で共有させるステップと
を含む、方法。
【請求項２】
前記１以上のリストはそれぞれ、前記共通のメッセージ構造に少なくとも部分的に従うメッセージを複数含み、当該メッセージ構造を定義する抽象表現をメタデータとして有する、請求項１に記載の方法。
【請求項３】
前記マッチしたリストを参照するために、前記パブリッシュ側エンティティまたは前記サブスクライブ側エンティティは、識別子で当該リストを識別する、請求項１又は２に記載の方法。
【請求項４】
マッチさせる前記ステップは、前記１以上のメッセージのメッセージ構造を定義する抽象表現を、前記１以上のリストそれぞれの前記メタデータと比較する、請求項２に記載の方法。
【請求項５】
マッチさせる前記ステップは、前記要求に係るメッセージ構造を有するメッセージを、前記１以上のリスト中の各メッセージとそれぞれ比較する、請求項１ないし４のいずれか一項に記載の方法。
【請求項６】
メッセージ構造を有するメッセージをパブリッシュすることを求める要求をパブリッシュ側エンティティから受信するステップをさらに含み、
前記マッチさせるステップにおいて、前記受信した要求に係るメッセージ構造を定義する抽象表現を、前記リストが含むメッセージのメッセージ構造とマッチさせることによって、前記要求に係るメッセージ構造を有するリストが存在するかどうかを判定し、
前記リストが存在すると判定した場合、当該リストにメッセージをパブリッシュするために当該リストに関するリスト識別子を前記パブリッシュ側エンティティに提供するステップと
を含む、請求項１に記載の方法。
【請求項７】
前記リストが存在しないと判定した場合、前記要求に係るメッセージ構造に関して新たなリストを作成するステップを含む、請求項６に記載の方法。
【請求項８】
メッセージ構造を有するメッセージにサブスクライブする要求をサブスクライブ側エンティティから受信するステップをさらに含み、
前記マッチさせるステップにおいて、前記受信した要求に係るメッセージ構造を定義する抽象表現を、前記リストが含むメッセージのメッセージ構造とマッチさせることによって、前記要求に係るメッセージ構造を有するリストが存在するかどうかを判定し、
前記リストが存在すると判定した場合、当該リストからメッセージをサブスクライブするために当該リストに関するリスト識別子を前記サブスクライブ側エンティティに提供するステップと
を含む、請求項１に記載の方法。
【請求項９】
前記マッチさせるステップにおいてさらに、
前記抽象表現により定義されるメッセージ構造と、前記リストが含むメッセージのメッセージ構造とが部分的にマッチするか比較するステップを含む、請求項１ないし８のいずれか一項に記載の方法。
【請求項１０】
マッチする要求の統計分析に基づいてリストを分割するステップを含む、請求項１ないし９のいずれか一項に記載の方法。
【請求項１１】
異なるリストそれぞれに共通のメッセージ構造のメッセージがある場合、前記異なるリスト同士を単一のリストにマージするステップを含む、請求項１ないし１０のいずれか一項に記載の方法。
【請求項１２】
メッセージ構造を使用したパブリッシュ／サブスクライブ・メッセージングのためのメッセージ仲介システムであって、
パブリッシュ側エンティティがメッセージをパブリッシュすることができ、かつ、サブスクライブ側エンティティがメッセージにサブスクライブすることができる複数のリストを保持するリスト保持構成要素と、
共通のメッセージ構造に少なくとも部分的に従うメッセージのためのリストを１以上、前記複数のリストから提供するリスト提供構成要素と、
パブリッシュ側エンティティまたはサブスクライブ側エンティティからの要求を、１以上のメッセージのメッセージ構造を定義する抽象表現と前記１以上のリストとを比較することによって、リストとマッチさせる処理構成要素と、
前記共通のメッセージ構造に少なくとも部分的に従うメッセージを、前記マッチしたリストを介して前記パブリッシュ側エンティティと前記サブスクライブ側エンティティとの間で共有させるパブリッシュ／サブスクライブ構成要素と
を備える、メッセージ仲介システム。
【請求項１３】
請求項１ないし１１のいずれか一項に記載の各ステップを実行するための手段を備えたメッセージ仲介システム。
【請求項１４】
デジタル・コンピュータの内部メモリにロード可能であるコンピュータ・プログラムであって、前記コンピュータ・プログラムが前記デジタル・コンピュータ上で実行されるとき、当該デジタル・コンピュータに請求項１ないし１１のいずれかに一項に記載の各ステップを実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パブリッシュ／サブスクライブ・メッセージングの分野に関する。特に、本発明は、メッセージ構造を使用したパブリッシュ／サブスクライブ・メッセージングに関する。
【背景技術】
【０００２】
コンピュータ・システムのユーザが、１つのアプリケーションまたはシステムが別のアプリケーションまたはシステムとある情報を共有することを所望し得る多くの状況が存在する。これは、例えば、Ｎｏｔｅｓ（Ｎｏｔｅｓは、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標である）などのクライアントにおいて新たな電子メールを作成しているとき、クライアントが、他のアプリケーションにおいて画面上で見られた電子メール・アドレスを収集することが可能であり、例えば、同僚が、Ｓａｍｅｔｉｍｅ（Ｓａｍｅｔｉｍｅは、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標である）において誰かのアドレスを送信したばかりである可能性がある場合に、役に立つ。現在、ユーザは、このアドレスをＳａｍｅｔｉｍｅからＮｏｔｅｓにコピー・アンド・ペーストしなければならない。
【０００３】
２つのアプリケーションの間の１対１リンクの単純な事例の場合、または多対１リンクの場合さえ、これは、プロセス間通信を使用して、または受信側アプリケーションに、何らかの種類のアプリケーション・プログラミング・インターフェース（ＡＰＩ）を開示させ、それが、ある事前定義された形態の入力をリッスンすることができるようにすることで、容易に実現され得る。しかし、このシステムは、多対多リンクが存在する場合、かつ要求される情報の形態に関して厳密な事前に合意された標準が存在しない場合、管理不能になる。例えば、電子メール・アドレスを検証する多くの正規表現が存在する。
【０００４】
この問題を解決するのに、かつ潜在的に他の問題も解決するのに、パブリッシュ・メッセージング・システムまたはサブスクライブ・メッセージング・システムあるいはその両方、およびキュー・ベースのメッセージング・システムが使用され得る。パブリッシュ・メッセージング・システムまたはサブスクライブ・メッセージング・システムあるいはその両方は、非常に普及しているが、１つの要件は、メッセージをパブリッシュするため、およびメッセージにサブスクライブするためにトピック名が知られていることである。
【０００５】
２つのアプリケーションは、合意されたトピックをパブリッシュすること、および次に、そのトピックにサブスクライブすることによって通信することが可能であるが、このことは、２つのアプリケーションの開発者がトピック名に関して合意することを要求する。しばしば、命名スキームおよび命名規約は、標準において合意されるが、時として、アドホックのトピックをパブリッシュすること、またはそのようなトピックにサブスクライブすることを所望することがあり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
したがって、前述した問題に対処する必要性が、当技術分野に存在する。
【課題を解決するための手段】
【０００７】
本発明の第１の態様によれば、メッセージング仲介システムにおいて実行されるメッセージ構造を使用したパブリッシュ／サブスクライブ・メッセージングのための方法であって、パブリッシュ側エンティティがメッセージをパブリッシュすることができ、かつサブスクライブ側エンティティがメッセージにサブスクライブすることができる複数のリストを保持するステップと、共通のメッセージ構造に少なくとも部分的に準拠するメッセージに関するリストを提供するステップと、メッセージ構造を有するメッセージ、または１つまたは複数のメッセージの抽象表現を、提供された１つまたは複数のリストと比較することによって、パブリッシュ側エンティティまたはサブスクライブ側エンティティからの要求を、提供されたリストとマッチさせるステップと、共通のメッセージ構造に少なくとも部分的に準拠するメッセージを、リストを介して共有するステップとを含む方法が提供される。
【０００８】
方法は、共通のメッセージ構造の抽象表現のメタデータによってリストを定義することを含み得る。方法は、リストを参照するのに使用される、パブリッシュ側エンティティまたはサブスクライブ側エンティティに対する識別子でリストを識別することをさらに含み得る。
【０００９】
マッチさせるステップは、メッセージ構造を有するメッセージ、または１つまたは複数のメッセージの抽象表現を、提供されたリストの共通のメッセージ構造の抽象表現のメタデータと比較することが可能である。
【００１０】
マッチさせるステップは、メッセージ構造を有するメッセージ、または１つまたは複数のメッセージの抽象表現を、提供されたリストのそれぞれにおけるメッセージ・インスタンスと比較することが可能である。
【００１１】
方法は、メッセージ構造を有するメッセージをパブリッシュすることを求める要求をパブリッシュ側エンティティから受信するステップと、提供されたリストのメッセージ構造とマッチさせることによって、そのメッセージ構造に関する１つまたは複数のリストが存在するかどうかを判定するステップと、そのメッセージ構造が準拠し、かつそのメッセージ構造を有するメッセージがパブリッシュされ得る１つまたは複数のリストに関するリスト識別子をパブリッシュ側エンティティに提供するステップとをさらに含み得る。方法は、提供されたリストのメッセージ構造とマッチしないメッセージ構造に関して新たなリストを作成するステップを含み得る。
【００１２】
方法は、メッセージ構造を有するメッセージにサブスクライブする要求をサブスクライブ側エンティティから受信するステップと、提供されたリストのメッセージ構造とマッチさせることによって、そのメッセージ構造に関する１つまたは複数のリストが存在するかどうかを判定するステップと、そのメッセージ構造を有するメッセージがサブスクライブされるべき１つまたは複数のリストに関するリスト識別子をサブスクライブ側エンティティに提供するステップとを含み得る。
【００１３】
メッセージ構造を有するメッセージ、または１つまたは複数のメッセージの抽象表現を、提供されたリストと比較することによって、パブリッシュ側エンティティまたはサブスクライブ側エンティティからの要求を、提供された１つまたは複数のリストとマッチさせるステップは、部分的マッチを有する要求を、提供された１つまたは複数のリストとマッチさせるステップを含み得る。
【００１４】
方法は、マッチする要求の統計分析に基づいてリストを適切に分割するステップを含み得る。
【００１５】
また、方法は、パブリッシュすることに関するリストを、単一のリストにパブリッシュされた共通のデータとマージするステップも含み得る。
【００１６】
本発明の第２の態様によれば、メッセージング仲介システムを含む、メッセージ表現フォーマットを使用したパブリッシュ／サブスクライブ・メッセージングのためのシステムであって、パブリッシュ側エンティティがメッセージをパブリッシュすることができ、かつサブスクライブ側エンティティがメッセージにサブスクライブすることができる複数のリストを保持するためのリスト保持構成要素と、共通のメッセージ構造に少なくとも部分的に準拠するメッセージに関するリストを提供するためのリスト提供構成要素と、メッセージ構造を有するメッセージ、または１つまたは複数のメッセージの抽象表現を、提供された１つまたは複数のリストと比較することによって、パブリッシュ側エンティティまたはサブスクライブ側エンティティからの要求を、提供されたリストとマッチさせるための処理構成要素と、共通のメッセージ構造に少なくとも部分的に準拠するメッセージを、リストを介して共有するためのパブリッシュ／サブスクライブ構成要素とを備える、システムが提供される。
【００１７】
システムは、共通のメッセージ構造の抽象表現のメタデータによってリストを定義するためのメタデータ構成要素を含み得る。
【００１８】
システムは、リストを参照するのに使用される識別子を有するリストをパブリッシュ側エンティティまたはサブスクライブ側エンティティに提供するための識別子構成要素をさらに含み得る。
【００１９】
処理構成要素は、メッセージ構造を有するメッセージ、または１つまたは複数のメッセージの抽象表現を、提供されたリストの共通のメッセージ構造の抽象表現のメタデータと比較することが可能である。
【００２０】
処理構成要素は、メッセージ構造を有するメッセージ、または１つまたは複数のメッセージの抽象表現を、提供されたリストのそれぞれにおけるメッセージ・インスタンスと比較することが可能である。
【００２１】
システムは、メッセージ構造を有するメッセージをパブリッシュすることを求める要求をパブリッシュ側エンティティから受信するためのパブリッシュ側エンティティ要求構成要素を含むことが可能であり、パブリッシュ側エンティティ要求構成要素は、提供されたリストのメッセージ構造とマッチさせることによって、そのメッセージ構造に関する１つまたは複数のリストが存在するかどうかを判定するために処理構成要素を使用すること、およびパブリッシュ側エンティティ要求構成要素が、そのメッセージ構造が準拠し、かつそのメッセージ構造を有するメッセージがパブリッシュされ得る１つまたは複数のリストに関するリスト識別子をパブリッシュ側エンティティに提供することを含む。
【００２２】
システムは、提供されたリストのメッセージ構造とマッチしないメッセージ構造に関して新たなリストを作成するための作成構成要素を含み得る。
【００２３】
システムは、メッセージ構造を有するメッセージにサブスクライブする要求をサブスクライブ側エンティティから受信するためのサブスクライブ側エンティティ要求構成要素を含むことが可能であり、サブスクライブ側エンティティ要求構成要素は、提供されたリストのメッセージ構造とマッチさせることによって、そのメッセージ構造に関する１つまたは複数のリストが存在するかどうかを判定するために処理構成要素を使用すること、およびサブスクライブ側エンティティ要求構成要素が、そのメッセージ構造を有するメッセージがサブスクライブされるべき１つまたは複数のリストに関するリスト識別子をサブスクライブ側エンティティに提供することを含む。
【００２４】
メッセージ構造を有するメッセージ、または１つまたは複数のメッセージの抽象表現を、提供された１つまたは複数のリストと比較することによって、パブリッシュ側エンティティまたはサブスクライブ側エンティティからの要求を、提供されたリストとマッチさせるための処理構成要素は、部分的マッチを有する要求を、提供された１つまたは複数のリストとマッチさせることを含み得る。
【００２５】
システムは、マッチする要求の統計分析に基づいてリストを適切に分割するための分割構成要素を含み得る。
【００２６】
システムは、パブリッシュすることに関するリストを、単一のリストにパブリッシュされた共通のデータとマージするためのマージ構成要素を含み得る。
【００２７】
本発明の第３の態様によれば、コンピュータ可読媒体に記憶され、かつ本発明の第１の態様の方法ステップを実行するためにコンピュータ上で実行されるとき、ソフトウェア・コード部分を備えるデジタル・コンピュータの内部メモリにロード可能であるコンピュータ・プログラムが提供される。
【００２８】
本発明の第４の態様によれば、図を参照して実質的に説明される方法が提供される。
【００２９】
本発明の第５の態様によれば、図を参照して実質的に説明されるシステムが提供される。
【００３０】
本発明の説明される態様は、共有されるデータの構造に基づいてデータを共有することを可能にする利点をもたらす。
【００３１】
本発明と見なされる主題は、本明細書の結論部分において特に指摘され、明確に主張される。本発明は、動作の編成と方法の両方に関して、それらの目的、特徴、および利点とともに、添付の図面と一緒に読まれる場合、後段の詳細な説明を参照して最もよく理解され得る。
【００３２】
次に、本発明の好ましい実施形態が、以下の図面を参照して、単に例として説明される。
【図面の簡単な説明】
【００３３】
【図１】本発明によるシステムの例示的な実施形態を示す概略図である。
【図２】本発明による方法の態様の例示的な実施形態を示す流れ図である。
【図３】本発明による方法の態様の例示的な実施形態を示す流れ図である。
【図４】本発明による方法の態様の例示的な実施形態を示す流れ図である。
【図５】本発明によるシステムの例示的な実施形態を示すブロック図である。
【図６】本発明が実施され得るコンピュータ・システムの実施形態を示すブロック図である。
【図７】本発明の例示的な実施形態を示す概略図である。
【図８】本発明の例示的な実施形態を示す概略図である。
【発明を実施するための形態】
【００３４】
例示の簡明性および明瞭性のため、図に示される要素は、必ずしも一律の縮尺に従わずに描かれていることを認識されたい。例えば、要素のうちのいくつかの寸法は、明瞭性のために他の要素と比べて誇張され得る。さらに、適切と考えられる場合、対応する特徴、または類似した特徴を示すように図の間で参照符号が繰り返され得る。
【００３５】
後段の詳細な説明において、本発明の徹底的な理解をもたらすために多数の特定の詳細が提示される。しかし、本発明は、これらの特定の詳細なしに実施されてもよいことが当業者によって理解されよう。その他の場合において、本発明を不明瞭にしないように、よく知られた方法、手順、および構成要素は、詳細には説明されていない。
【００３６】
説明される方法およびシステムは、アプリケーションまたはシステムが情報を共有することを、データに関するトピック名ではなく、このデータの構造を知っているに過ぎないことによって可能にする。２つのアプリケーションまたはシステムの場合、命名スキームが合意されることは、比較的容易である。しかし、すべてが同一のデータ型を共有する多くのアプリケーションに関して、前もってすべてが名前について合意することは困難である。したがって、概念は、より多くのシステムがデータ型またはデータ構造に基づいてトピックにサブスクライブする、またはパブリッシュするにつれ、ますます強力になる。
【００３７】
説明される方法およびシステムは、特定の構造の情報の共有のために使用するようにランタイムにおけるパブリッシュ・トピックまたはサブスクライブ・トピックあるいはその両方のネゴシエーションを可能にする。
【００３８】
パブリッシュ側エンティティとサブスクライブ側エンティティの間の仲介システムが、サブスクライバに配信するためにパブリッシャからアイテムを受信することが可能なキュー・マネージャ、メッセージング・ミドルウェア・システム、または他のシステムの形態で設けられることが可能である。仲介システムは、アイテムがパブリッシュ側エンティティによってパブリッシュされ、サブスクライブ側エンティティによるサブスクリプションによって獲得されるアイテムの（メッセージなどの）リストを保持する。例えば、リストは、メッセージの共通のトピックに基づくメッセージのキューであり得る。
【００３９】
説明されるパブリッシュ・メッセージング・システムまたはサブスクライブ・メッセージング・システムあるいはその両方において、アイテムは、異なる構造を有するデータから形成されたメッセージであり得る。説明される方法およびシステムにおいて、リスト・トピックは、メッセージにおけるデータの構造に基づき、共通の、または重なり合うメッセージ構造を有するアイテムを含むリストをもたらす。
【００４０】
説明される方法およびシステムにおいて、リストは、名前または識別子（ＩＤ）、ならびにそれが包含するデータの抽象表現（abstract representation）であるいくらかのさらなるメタデータを有することが可能である。一実施形態において、この抽象表現は、名前自体またはＩＤ自体あるいはその両方であることも可能であるが、名前またはＩＤあるいはその両方が単にランダムなハッシュまたは数であることも同様に可能である。
【００４１】
抽象表現は、パブリッシュされ、かつサブスクライブされるべきアイテムのデータの構造を定義する。抽象表現は、正規表現、探索パターン、またはクエリ言語表現であることが可能である。ブール応答型クエリである、はいまたはいいえあるいはその両方を記述することが可能な異なる多くの言語が使用され得る。クエリ言語は、ＸＰａｔｈ、ＸＱｕｅｒｙ、ＳＱＬ、および以上の変種、ＸＳＬＴその他を含み得るが、以上には限定されない。抽象表現は、テキストの文字列、他のシンタックス、またはＸＭＬなどのデータ表現をマッチするのに使用され得る。
【００４２】
パブリッシュ側エンティティが、仲介システムにクエリを行って、仲介システムが、メッセージ構造とマッチする、または部分的にマッチするリストを有するかどうかを確かめることが可能である。答えが肯定的である場合、そのパブリッシュ側エンティティは、そのリストにメッセージをパブリッシュすることを開始することができる。答えが否定的である場合、そのパブリッシュ側エンティティがこの構造のメッセージをパブリッシュすることを開始するように新たなリストが作成され得る。一実施形態において、各リストのメタデータを調べて、マッチするリストを返す代わりに、仲介システムは、各リストにおける各アイテムを調べて、パブリッシュ側エンティティが供給するメッセージの構造とマッチするリストを見出してもよい。
【００４３】
サブスクライブ側エンティティは、仲介システムにクエリを行って、仲介システムが、メッセージ構造とマッチする、または部分的にマッチするリストを有するかどうかを確かめることが可能である。次に、仲介システムは、各リストのアイテム（すなわち、リストのメタデータだけでなく）を調べて、サブスクライブ側エンティティによって与えられるメッセージ構造とマッチするアイテムを有するリストを見出すことが可能である。次に、サブスクライブ側エンティティが、マッチする、または部分的にマッチするアイテムを有するリストにサブスクライブすることが可能である。
【００４４】
説明される方法およびシステムの様々な実施形態が提供される。
【００４５】
一実施形態において、データ構造の抽象表現が、データ構造を定義し、パブリッシュ要求またはサブスクライブ要求を既存のリストとマッチさせるのに使用される。リストは、リストのメタデータとして、例えば、リストの属性として与えられるデータ構造の抽象表現を有することが可能である。１つの事例において、抽象表現は、リストの名前として与えられることが可能である。
【００４６】
パブリッシュ要求またはサブスクライブ要求は、リストの名前、リストのメタデータ、またはリスト内のメッセージのうちのいずれか１つまたは複数と比較される抽象表現（メタデータまたは属性の抽象表現とは異なる形態のものであり得る）を定義することが可能である。
【００４７】
別の実施形態において、パブリッシュ要求またはサブスクライブ要求は、メッセージ自体を供給することによってメッセージ構造を定義することが可能である。そのメッセージが、リストのメッセージの構造の抽象表現と、またはリスト内のメッセージと比較され得る。
【００４８】
メッセージの共通のデータ構造に関するリストは、データ構造の形態をよりよく扱うようにリストを分割すること、およびマージすることを含め、パブリッシュ要求およびサブスクライブ要求がマッチされるにつれ、進化することが可能である。
【００４９】
図１を参照すると、概略図１００が、複数のパブリッシュ側エンティティ１１１〜１１３、および複数のサブスクライブ側エンティティ１２１〜１２３から形成されるパブリッシュ・アーキテクチャまたはサブスクライブ・アーキテクチャあるいはその両方を、パブリッシュ処理またはサブスクライブ処理あるいはその両方を管理するための仲介システム１３０と一緒に示す。パブリッシュ側エンティティが、サブスクライブ側エンティティであることも可能であり、サブスクライブ側エンティティがパブリッシュ側エンティティであることも可能であること、およびこれらのタイプのエンティティは、簡単のために別々に示されることを理解されたい。
【００５０】
仲介システム１３０は、複数のアイテムまたはアイテムに対するリファレンス１４１が与えられ得る少なくとも１つのトピック・リスト１３１を含む。トピック・リスト１３１は、リストにおけるアイテムが少なくとも部分的に準拠するメッセージ構造を定義する抽象表現１３３のメタデータを含む属性１３２を有することが可能である。
【００５１】
また、仲介システム１３０は、パブリッシュ要求またはサブスクライブ要求を処理するため、およびアイテムの与えられた構造に関して適切なリスト１３１にマッチさせるための処理構成要素１５０を含むことも可能である。特に、処理構成要素１５０は、アイテムを、アイテムの構造の抽象表現とマッチさせることが可能である。処理構成要素１５０のさらなる詳細は、後段で与えられる。
【００５２】
図２を参照すると、流れ図２００が、パブリッシュ側エンティティ１１１および仲介システム１３０において実行される方法の例示的な実施形態を示す。
【００５３】
パブリッシュ側エンティティ１１１が、エンティティ１１１がパブリッシュすることを所望するメッセージの構造を指定する要求を仲介システム１３０に送信する２０１。メッセージ構造は、メッセージ構造の抽象表現として与えられることが可能であり、またはメッセージ構造形態のメッセージのサンプルであることが可能である。
【００５４】
要求は、仲介システム１３０において受信され２０２、マッチング探索が実行されて２０３、アイテムの同一の、または類似したメッセージ構造を有する１つまたは複数の既存のリストと要求がマッチされる、または部分的にマッチされる。これは、トピック・リストの名前、リストにおけるアイテムの抽象表現と関係するメタデータ、またはリストにおけるアイテム自体によってマッチされることが可能である。
【００５５】
１つまたは複数のリストが、要求において定義されたメッセージ構造とマッチする、または部分的にマッチするメッセージ構造に関して存在するかどうかが判定される２０４。リストが存在しないと判定された場合、仲介システム１３０においてリストが作成され２０５得る。
【００５６】
メッセージ構造形態のメッセージのサンプルが、仲介システム１３０が既存のリストとマッチする２０３ことができる簡単なメッセージのためにパブリッシュ側エンティティによって送信される２０１ことが可能である。しかし、メッセージのサンプルに関してマッチするトピックが存在しない場合、仲介システム１３０が、リストを作成し、意図されるパブリッシュ側エンティティ１１１に抽象表現を求めることが可能である。このことは、仲介システム１３０とパブリッシュ側エンティティ１１１の間のオープニング・ハンドシェーク（opening handshake）において実行され得る。
【００５７】
１つまたは複数のリストが既に存在する、または新たなリストが作成されている２０５と判定された場合、リスト名または他の識別子がパブリッシュ側エンティティ１１１に送信され２０６得る。
【００５８】
パブリッシュ側エンティティ１１１が、リスト名を受信する２０７ことが可能である。パブリッシュ側エンティティ１１１が、例えば、メッセージ構造の抽象表現または名前を使用して、メッセージ構造に関するリスト名のリファレンスを記憶する２０８ことが可能である。パブリッシュ側エンティティ１１１が、その後、このメッセージ構造のアイテムを、アイテムが生じるにつれ、このリストにパブリッシュする２０９ことが可能である。
【００５９】
図３を参照すると、流れ図２５０が、サブスクライブ側エンティティ１２１および仲介システム１３０において実行される方法の例示的な実施形態を示す。
【００６０】
サブスクライブ側エンティティ１２１が、メッセージ構造に対するリファレンスを、例えば、抽象表現、メッセージ構造の名前、またはメッセージ構造の形態のサンプル・アイテムとして含む要求を仲介システム１３０に送信する２５１ことが可能である。要求は、メッセージ構造とマッチする、または部分的にマッチするリストを要求することが可能である。
【００６１】
仲介システム１３０が、要求を受信し２５２、仲介システム１３０におけるリストのマッチ探索を実行して２５３、アイテムの同一の、または類似したメッセージ構造を有する１つまたは複数の既存のリストと要求をマッチさせる、または部分的にマッチさせることが可能である。これは、トピック・リストの名前、リストにおけるアイテムの抽象表現と関係するメタデータ、またはリストにおけるアイテム自体によってマッチされることが可能である。
【００６２】
要求において定義されるメッセージ構造とマッチする、または部分的にマッチするメッセージ構造に関する１つまたは複数のリストが存在するかどうかが判定され２５４得る。
【００６３】
以下、すなわち、各リストのすべてのアイテムを調べて、リストにおけるすべてのアイテムがサブスクライブ側エンティティによって与えられる表現とマッチすることを確実にすること、マッチが見出されるまでリストにおけるすべてのアイテムを調べること、および（パフォーマンスのために）リストにおける最初のアイテムだけを調べることを含め、実施され得る様々な可能な「マッチの品質」実施形態が存在する。
【００６４】
要求のメッセージ構造と実質的にマッチするリストが存在しないと判定された２５４場合、このことをサブスクライブ側エンティティに知らせる通知がサブスクライブ側エンティティに送信される２５５ことが可能である。メッセージ構造とマッチするリストが存在すると判定された２５４場合、リスト名がサブスクライブ側エンティティ１２１に送信される２５６。
【００６５】
サブスクライブ側エンティティ１２１が、リスト名を使用してリストのうちの１つまたは複数にサブスクライブする２５７ことが可能である。
【００６６】
サブスクライブ側エンティティ１２１がサブスクライブしているリストに新たなアイテムがパブリッシュされた場合、そのアイテムは、仲介システム１３０によってサブスクライブ側エンティティ１２１にプッシュされる。オプションとして、新たなアイテムがサブスクライブ側エンティティにプッシュされる場合、サブスクライブ側エンティティは、それ独自のフィルタリングを行って、正しさを確実にすることができる。
【００６７】
図４を参照すると、流れ図３００が、仲介システム１３０によって実行される、説明される方法の例示的な実施形態を示す。
【００６８】
仲介システム１３０は、パブリッシュ側エンティティがメッセージをパブリッシュすることができ、サブスクライブ側エンティティがメッセージにサブスクライブすることができる複数のリストを保持する３０１ことが可能であり、これは、共通のメッセージ構造に少なくとも部分的に従うメッセージのためにリストを提供すること３０２を含み得る。リストを提供すること３０２は、リストに関する名前またはＩＤを定義することを含むことが可能であり、リストが与えられるメッセージ構造の抽象表現の形態でリストに関するメタデータを定義することも含むことが可能である。抽象表現は、様々な形態、例えば、正規表現、探索パターン、ＸＰａｔｈ表現などのクエリ言語表現その他の形態をとることが可能である。抽象表現は、パターン、データのタイプ、フォーマット、型その他の点でメッセージの構造を定義することが可能である。
【００６９】
正規表現の例において、文字は、特殊な意味を有するメタ文字、または文字通りの意味を有する通常の文字であると理解される。それらの文字は一緒に、所与のパターンまたは構造のテキスト材料を識別するのに使用され得る。クエリ言語表現の別の例において、データ項を見てまわるのにシンタックスが使用される。
【００７０】
パブリッシュ側エンティティまたはサブスクライブ側エンティティから、要求において指定されるメッセージ構造のメッセージに関するパブリッシュされるべき、またはサブスクライブされるべきリストの詳細を要求する要求が、受信され３０３得る。要求は、メッセージ構造の抽象表現を含むことが可能であり、メッセージ構造の形態のメッセージのサンプルを含むことが可能であり、またはメッセージ構造の名前を含むことが可能である。
【００７１】
要求のメッセージ構造をメッセージ構造に関する既存のリストとマッチすること３０４が実行される。このマッチングは、様々な様態で実行され得る。一実施形態において、要求において指定されるメッセージ構造をマッチすることは、リストにおける個々のアイテムとマッチすることが可能である。別の実施形態において、要求において指定されるメッセージ構造の抽象表現をマッチすることは、リストのメタデータとして与えられるリストのメッセージ構造の抽象表現とマッチすることが可能である。
【００７２】
マッチングは、リストに対する要求の部分的マッチングを含み得る。一実施形態において、仲介システム１３０が、リスト・アイテムをブラウズして、「部分的マッチ」においてマッチするデータの割合を獲得することが可能である。さらに、または代替として、部分的マッチから適切でないデータをフィルタリングするためのフィルタが設けられてもよい。
【００７３】
パブリッシュ側エンティティの要求がマッチするリスト、または部分的にマッチするリストをもたらさない場合、要求のメッセージ構造に関する新たなリストが作成され３０５得る。
【００７４】
仲介システム１３０は、パブリッシュ側エンティティおよびサブスクライブ側エンティティに、要求されるメッセージ構造に関してそれらがパブリッシュすべき、またはサブスクライブすべきリストの名前またはＩＤを提供することが可能である。
【００７５】
サブスクライブ側エンティティに、パターンに厳密に、またはサブセットにマッチする複数のトピックに対するサブスクリプションが返されることが可能である。これは、サブスクライバにトランスペアレントに行われて、仲介システム１３０において管理されることが可能である。
【００７６】
メッセージは、メッセージ構造に関する識別された１つまたは複数のリストにメッセージをパブリッシュすること、および識別された１つまたは複数のリストにサブスクライブすることによって共有され３０６得る。
【００７７】
リストは、パブリッシュ側エンティティおよびサブスクライブ側エンティティによって要求において定義されるメッセージ構造に適応するようにマージすること、および分割することによって進化することが可能である。
【００７８】
トピックが定義された閾値に達しない（すなわち、データの＜５０％がマッチする）と判定された場合、サブスクリプションは、除去されることが可能である。代替として、仲介システムは、パターン・マッチの統計分析に基づいてトピックを適切に分割するロジックを有することも可能である。
【００７９】
パブリッシュされると、「部分的マッチ」が識別されることが可能であり、共通のデータとの重なり合うパターンが、同一のトピックを使用するようにマージされることが可能である。
【００８０】
図５を参照すると、ブロック図が、仲介システム１３０の例示的な実施形態を示す。図１に示される仲介システム１３０は、パブリッシュ側エンティティとサブスクライブ側エンティティの間でパブリッシュ処理またはサブスクライブ処理あるいはその両方を管理する。
【００８１】
仲介システム１３０は、複数のアイテム、またはアイテム１４１に対するリファレンスが与えられ得る少なくとも１つのトピック・リスト１３１を含む。トピック・リスト１３１は、抽象表現１３３のメタデータを含む属性１３２を有することが可能である。その抽象表現は、リストにおけるアイテムが少なくとも部分的に従うメッセージ構造を定義する。
【００８２】
仲介システム１３０は、パブリッシュ側エンティティがメッセージをパブリッシュすることができ、サブスクライブ側エンティティがメッセージにサブスクライブすることができる複数のリストを保持するためのリスト保持構成要素４０１を含む。リスト提供構成要素４０２が、共通のメッセージ構造に少なくとも部分的に従う複数のメッセージのためのリストを１以上、複数のリストから提供する。リスト提供構成要素４０２は、リストに関する名前または識別子を提供するための識別子構成要素４０４と、共通のメッセージ構造の抽象表現のリストに関するメタデータを提供するためのメタデータ構成要素４０３とを含み得る。
【００８３】
仲介構成要素１３０は、パブリッシュ側エンティティまたはサブスクライブ側エンティティからの要求を、提供された１つまたは複数のリストとマッチさせるための処理構成要素１５０を含み得る。処理構成要素１５０は、メッセージ構造を有するメッセージ、または１つまたは複数のメッセージの抽象表現を、提供されたリストと比較するため、およびマッチさせるためのマッチング構成要素４１３を含み得る。
【００８４】
処理構成要素１５０は、パブリッシュ側エンティティからの要求を処理するためのパブリッシュ側エンティティ要求構成要素４１１を含む。また、処理構成要素１５０は、サブスクライブ側エンティティからの要求を処理するためのサブスクライブ側エンティティ要求構成要素４１２を含むことも可能である。
【００８５】
また、処理構成要素１５０は、パブリッシュ側エンティティおよびサブスクライブ側エンティティからの要求のメッセージ構造に基づいてリストを進化させるための分割構成要素４１４およびマージ構成要素４１５を含むことも可能である。
【００８６】
パブリッシュ構成要素４１０またはサブスクライブ構成要素４１０あるいはその両方４１０が、リストを介して共通のメッセージ構造に少なくとも部分的に準拠するメッセージを共有する。
【００８７】
図６を参照すると、本発明の態様を実施するための例示的なシステムが、バス・システム５０３を介してメモリ要素に直接に、または間接的に結合された少なくとも１つのプロセッサ５０１を含むプログラム・コードを記憶することに、または実行することに、あるいはその両方に適したデータ処理システム５００を含む。メモリ要素は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量ストレージ、ならびにコードが実行中に大容量ストレージから取り出されなければならない回数を減らすために少なくともいくらかのプログラム・コードの一時的ストレージを可能にするキャッシュ・メモリを含み得る。
【００８８】
メモリ要素は、読取り専用メモリ（ＲＯＭ）５０４およびランダム・アクセス・メモリ（ＲＡＭ）５０５の形態でシステム・メモリ５０２を含み得る。基本入出力システム（ＢＩＯＳ）５０６が、ＲＯＭ５０４に記憶され得る。オペレーティング・システム・ソフトウェア５０９などのシステム・ソフトウェア５０８を含め、ソフトウェア５０７がＲＡＭ５０５に記憶され得る。また、ソフトウェア・アプリケーション５１０がＲＡＭ５０５に記憶されることも可能である。
【００８９】
システム５００は、磁気ハードディスク・ドライブなどの一次ストレージ手段５１１と、磁気ディスク・ドライブおよび光ディスク・ドライブなどの二次ストレージ手段５１２とを含むことも可能である。これらのドライブ、およびこれらのドライブに関連するコンピュータ可読媒体は、システム５００のためのコンピュータ実行可能命令、データ構造、プログラム・モジュール、および他のデータの不揮発性ストレージを提供する。ソフトウェア・アプリケーションは、一次ストレージ手段５１１および二次ストレージ手段５１２、ならびにシステム・メモリ５０２に記憶され得る。
【００９０】
コンピューティング・システム５００は、ネットワーク・アダプタ５１６を介した１つまたは複数の遠隔コンピュータに対する論理接続を使用するネットワーク化された環境において動作することが可能である。
【００９１】
入出力デバイス５１３が、システムに直接に、または介在する入出力コントローラを介して結合され得る。ユーザは、キーボード、ポインティング・デバイス、または他の入力デバイス（例えば、マイクロフォン、ジョイスティック、ゲームパッド、サテライト・ディッシュ、スキャナ、または類似したもの）などの入力デバイスを介してシステム５００にコマンドおよび情報を入力することが可能である。出力デバイスは、スピーカ、プリンタその他を含み得る。また、ディスプレイ・デバイス５１４も、ビデオ・アダプタ５１５などのインターフェースを介してシステム・バス５０３に接続される。
【００９２】
図７を参照すると、概略図６００が、メッセージ構造が電子メール・アドレスの正規表現の形態における抽象表現によって定義される、説明される方法を示す第１の例示的な実施形態を示す。
【００９３】
パブリッシュ側エンティティ１１１が、「[＾＠］＋＠［＾＠］＋」という形態の電子メール・アドレスに関する正規表現によって定義されるメッセージ構造を有するメッセージをパブリッシュすることを要求する６０１。
【００９４】
仲介システム１３０が、リスト「トピックＣ」を、「[＾＠］＋＠［＾＠］＋」というパブリッシュ側エンティティ１１１によって与えられる正規表現のメタデータで定義する６０２ことが可能である。仲介システム１３０は、それらのメッセージをパブリッシュすべきリスト「トピックＣ」の名前またはＩＤあるいはその両方を返す６０３ことが可能である。
【００９５】
例えば、Ｓａｍｅｔｉｍｅアプリケーションなどのアプリケーションが、そのアプリケーションがそのアプリケーションのウインドウにおいて読み取ることができる電子メール・アドレスをパブリッシュすることを所望している場合、そのアプリケーションは、電子メール・アドレスにマッチするこの形態のリストにパブリッシュすることを所望し得る。リストが既に存在する（おそらく、Ｓａｍｅｔｉｍｅの別のインスタンスが実行されている）場合、リスト名が返されるが、さもなければ、リストが作成され、そのリストのＩＤがＳａｍｅｔｉｍｅアプリケーションに返される。
【００９６】
次に、パブリッシュ側エンティティ１１１が、エンティティ１１１の、このメッセージ構造のメッセージを、識別されたリスト、「トピックＣ」にパブリッシュする６０４ことが可能である。
【００９７】
Ｎｏｔｅｓアプリケーションなどのサブスクライブ側エンティティ１２１が、システムにおける他のアプリケーションから電子メール・アドレスをプルすることを所望することが可能である。
【００９８】
サブスクライブ側エンティティ１２１は、仲介システム１３０に、仲介システム１３０が、Ｎｏｔｅｓ開発者が電子メール・アドレスとマッチするように書いた「．＋？＠［＾．］＋＼．（ｃｏｍ｜ｎｅｔ｜ｏｒｇ）」という正規表現とマッチするアイテムを有するリストを有するかどうかを尋ねる６１１。これは、パブリッシュ側エンティティの要求において使用される前述の正規表現とは異なることに留意されたい。
【００９９】
仲介システム１３０は、仲介システム１３０が所有するリストと比較することによってマッチ６１２し、パブリッシュ側エンティティ１１１が電子メール・アドレスをパブリッシュしている「トピックＣ」に関するリストを見出す６０２。このリストにおける少なくとも１つのアイテムが、サブスクライブ側エンティティの開発者が提供した表現とマッチする。
【０１００】
仲介システム１３０が、マッチするアイテムを有するリストが存在することを確認し６１３、仲介システム１３０は、サブスクライブ側エンティティ１２１をそのリストにサブスクライブする。
【０１０１】
いくらか後になって、パブリッシュ側エンティティ（例えば、Ｓａｍｅｔｉｍｅアプリケーション）が、電子メールを「トピックＣ」に関するリストにパブリッシュし、これにより、電子メールは、仲介システムによってサブスクライブ側エンティティ（例えば、Ｎｏｔｅｓアプリケーション）にプッシュされる。今や、サブスクライブ側エンティティは、この電子メール・アドレス情報を、例えば、電子メールを作成するときに「ＴＯ」フィールドにおいて電子メール・アドレスをタイプ入力することをユーザが開始する場合に使用されるアドレスのサブスクライブ側エンティティの内部スタックにその情報をプッシュすることによって、サブスクライブ側エンティティが所望するとおりに使用することができる。オプションとして、サブスクライブ側エンティティは、この時点で追加のフィルタリング検査を実行して、整合性を確実にすることも可能である。
【０１０２】
図８を参照すると、概略図６５０が、ＸＰａｔｈ表現の形態の抽象表現によってメッセージ構造が定義される、説明される方法の第２の例示的な実施形態を示す。
【０１０３】
パブリッシュ側エンティティ１１１が、「／ｂｏｄｙ／ｓｔａｔｕｓ＝ｓｕｃｃｅｓｓ」という形態のＸＰａｔｈ表現によって定義されるメッセージ構造を有するメッセージをパブリッシュすることを要求する６５１。
【０１０４】
仲介システム１３０が、「／ｂｏｄｙ／ｓｔａｔｕｓ＝ｓｕｃｃｅｓｓ」のパブリッシュ側エンティティ１１１によって提供されるＸＰａｔｈ表現のメタデータでリスト「トピックＡ」を見出す、または定義する６５２ことが可能である。「／ｂｏｄｙ／ｓｅｖｅｒｉｔｙ＝ｓｅｖｅｒｅ」というＸＰａｔｈ表現のメタデータを有する「トピックＢ」などの他のリスト６５３が定義されることも可能である。仲介システム１３０は、それらのメッセージをパブリッシュすべきリスト「トピックＡ」の名前またはＩＤあるいはその両方を返す６５３ことが可能である。
【０１０５】
次に、パブリッシュ側エンティティ１１１が、パブリッシュ側エンティティ１１１の、このメッセージ構造のメッセージを、識別されたリスト、「トピックＡ」にパブリッシュすることが可能である。
【０１０６】
サブスクライブ側エンティティ１２１が、「／ｂｏｄｙ／ｓｔａｔｕｓ＝ｓｕｃｃｅｓｓ」という形態のメッセージをプルすることを所望することが可能である。
【０１０７】
サブスクライブ側エンティティ１２１が、仲介システム１３０に、仲介システム１３０が「／ｂｏｄｙ／ｓｔａｔｕｓ＝ｓｕｃｃｅｓｓ」というＸＰａｔｈ表現とマッチするアイテムを有するリストを有するかどうかを尋ねる６６１。
【０１０８】
仲介システム１３０が、ＸＰａｔｈ表現を、仲介システム１３０が所有するリストと比較することによってマッチさせ、パブリッシュ側エンティティ１１１がパブリッシュしている「トピックＡ」に関するリストを見出す６５２。
【０１０９】
仲介システム１３０が、マッチするアイテムを有するリストが存在することを確認し６６３、仲介システム１３０は、サブスクライブ側エンティティ１２１をそのリストにサブスクライブする。
【０１１０】
仲介システム１３０は、厳密にマッチする（フルセット）トピックだけでなく、部分的マッチを含むトピックも探索することが可能である。例えば、「／ｂｏｄｙ／ｓｔａｔｕｓ＝［ｓｕｃｃｅｓｓ｜ｆａｉｌｕｒｅ］」に関するデータを包含するトピックが、例えば、「／ｂｏｄｙ／ｓｔａｔｕｓ＝ｓｕｃｃｅｓｓ」を含む、すべての成功メッセージおよび失敗メッセージとマッチするデータを包含する。
【０１１１】
次に、説明される方法およびシステムのさらなる態様および変形が与えられる。
【０１１２】
パブリッシュ側エンティティおよびサブスクライブ側エンティティは、内部キューまたはトピックまたは命名規約その他あるいはその組合せをまったく認識していなくてもよい。パブリッシュ側エンティティおよびサブスクライブ側エンティティは単に、それらがどのようタイプのデータをパブリッシュしているか、およびどのようなタイプのデータにそれらが関心があるかを詳述する。残りのことは、仲介システムによってパブリッシュ側エンティティおよびサブスクライブ側エンティティにはトランスペアレントに実施され得る。
【０１１３】
一態様において、サブスクライブ側エンティティに、提供されたパターンと厳密に、またはサブセットとしてマッチする複数のトピックに対するサブスクリプションが返され得る。このことは、サブスクライブ側エンティティにはトランスペアレントに実行され得る。
【０１１４】
サブスクライバが何かを要求した場合、仲介システムは、リストにおけるすべてのアイテムを調べて、すべてのアイテムがマッチした場合に限り、サブスクライブされたリストとしてそれを返すことが可能であり、または各リストにおける最初のアイテムだけを調べて、それがマッチした場合、そのリストにサブスクライブすることが可能であり、またはリスト全体を調べるが、マッチが見出されるとすぐに停止して、それにサブスクライブすることが可能である。
【０１１５】
さらに、仲介システムは、サブスクリプションを抽象化することが可能であり、すなわち、前述のステップを行った後、仲介システムは、３つのトピックが、サブスクライバが求めているものとマッチすることを見出すことが可能である。この時点で、新たな「仮想トピック」が、サブスクライバが求めたメタデータにおける抽象表現を伴い、見出された３つのトピックに対するマッピングを伴って、作成されることが可能である。サブスクライブ側エンティティには、１つのトピックがマッチすることだけについて告げられるが、その装いの下で、３つのトピックがマッチされており、仲介システムが、この変換を扱っている。
【０１１６】
さらなる態様において、仲介システムが、リスト・データをブラウズして、リスト・データのどれだけの割合が「部分的マッチ」においてマッチするかを確かめることが可能である。
【０１１７】
サブスクライブ側エンティティが、「私は、パターンＸに関心がある．．．」と述べることが可能である。仲介システムが、「私は、パターンＸとマッチするトピックを有するが、パターンＸがマッチするデータの共通集合（intersection）とマッチする、パターンＹとマッチするトピックも有する．．．」と述べて応答することが可能である。
【０１１８】
仲介システムは、パターンＹとマッチするデータをサンプリングして、サブスクライバのパターンとマッチするそのデータの尤度を評価することが可能であり、そのデータが所与の閾値を満たす場合、エンティティをそのデータにもサブスクライブするか否かの判定を行うことが可能である。
【０１１９】
サブスクリプションは（この事例において）、これら２つのトピックの合併（joining）である。フィルタ（後段で説明される）が、正確にマッチしないデータをフィルタリングして除くことが可能である。後の時点で、仲介システムが、このサブスクライバの関心対象であるすべてのアイテムがパターンＸからであり、パターンＹトピックからではないことを知ると、仲介システムは、仲介システムのサブスクリプション・トピックからパターンＹを破棄することが可能である。
【０１２０】
さらなる態様において、フィルタが、仲介システム上、またはサブスクライブ側エンティティ上のメッセージ・データを処理して、マッチしないデータを「部分的マッチ」からフィルタリングして除くことが可能である。
【０１２１】
サブスクライブ側エンティティが、トピックＡを求めるが、部分的マッチを許す場合、サブスクライブ側エンティティは、２０００年より前の年にだけ関心がある可能性があるが、一般的な（年）トピックＡにサブスクライブしている。この時点で、サブスクライブ側エンティティまたは仲介システム自体が、サブスクライブ側エンティティが関心がある特定のアイテムとマッチするこのトピックからのアイテムだけをプッシュするようにさらなるフィルタを実施することが可能である。
【０１２２】
例えば、サブスクライブ側エンティティが、「年＜２０００」とマッチするアイテムを求める。仲介システムは、年を包含するトピックについて知っており、したがって、前にフィルタを追加して（この特定のサブスクライブ側エンティティの場合に限って）、サブスクライブ側エンティティをこのトピックにサブスクライブする。そのトピックから、そのトピックのすべてのサブスクライブ側エンティティにアイテムがプッシュされるたびに、この特定の事例に関してフィルタがまず呼び出され、プッシュされているアイテムが「＜２０００」とマッチしない場合、そのアイテムは、この特定のサブスクライブ側エンティティに送られない。
【０１２３】
代替として、フィルタに関する処理は、仲介システムから受信するものすべてを信頼することは所望しない可能性があるサブスクライブ側エンティティ自体の側で行われてもよい。
【０１２４】
さらなる態様において、トピックが、部分的マッチの定義された閾値に達しない（すなわち、データの＜５０％がマッチする）と判定された場合、サブスクリプションは、除去され得る。
【０１２５】
サブスクライブ側エンティティがトピックＡにサブスクライブするものと想定されたい。後の時点で、ますます多くのものがパブリッシュ側エンティティからそのトピック上にプッシュされた後、このトピックにおけるアイテムのうちの２０％だけが、サブスクライブ側エンティティが実際に知りたいと意図していたものに実際に関与していることが見出される。サブスクライブ側エンティティは、オプションとして、会話のサブスクライブ側エンティティ側においてフィルタを追加して、サブスクライブ側エンティティの処理を実行する前に最終検査を行ってもよい。しかし、サブスクライブ側エンティティのいくらかの時間を節約するのに、それがサブスクライブ側エンティティにそれほど関心のないもの（例えば、５０％という定義された閾値未満．．．）となるので、仲介システムが、このトピックからサブスクライブ側エンティティのサブスクリプションを単に除去してもよい。
【０１２６】
代替として、仲介システムは、パターン・マッチの統計分析に基づいて、トピックを適切に分割するロジックを有してもよい。
【０１２７】
仲介システムは、サブスクライバが、アイテムの何らかのサブセットにだけ関心があることを知っていることが可能であり、仲介システムは、このトピックからサブスクライバを単にアンサブスクライブする（unsubscriing）代わりに、トピックを２つに分割して、サブスクライバを、サブスクライバが実際に関心がある半分にサブスクライブすることも可能である。この場合も、このことはすべて、サブスクライバにはトランスペアレントに実行され得る。
【０１２８】
さらなる態様において、パブリッシュされると、「部分的マッチ」が識別されることが可能であり、共通のデータと重なり合うパターンが、同一のトピックを使用するようにマージされることが可能である。
【０１２９】
パブリッシュ側エンティティＡが、トピックＡにパブリッシュしており、パブリッシュ側エンティティＢが、トピックＢにパブリッシュしているものと想定されたい。
トピックＡ  １９９１  １９９２  １９９３
トピックＢ  ２０１２  ２０４５  １９３４  １２４９
【０１３０】
４桁の年の形態のデータの同一のセットであるらしいものに関して別々の２つのトピックが存在する。パブリッシュ側エンティティＡが、トピックＡとマッチするが、トピックＢとはマッチしない（またはそのためにトピックＡが作成された）［１〜９］｛４｝だけを求めることがあり得る。しかし、パブリッシュ側エンティティＡは、トピックＢも部分的にマッチする（０の数字を有する年だけはマッチしない）。この事例において、仲介システムは、仲介システムが４桁の年を探す周期的ジョブ実行を有することが可能であり、仲介システムが、これらの年だけを包含するトピックを見出した場合、仲介システムは、それらのトピックを一緒にマージして、新たなマージされたトピックＣに代わりにパブリッシュするようパブリッシュ側エンティティＡおよびＢに告げながら、ストレージ・スペースを節約することが可能である。
【０１３１】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する１つのコンピュータ可読記憶媒体（または複数の媒体）を含み得る。
【０１３２】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるように命令を保持すること、および記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または前述したものの任意の適切な組合せであり得るが、以上には限定されない。コンピュータ可読記憶媒体のより具体的な例の網羅的でないリストは、以下、すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能なプログラマブル読取り専用メモリ（ＥＰＲＯＭもしくはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル・バーサタイル・ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、命令が記録されているパンチ・カードもしくは溝の中の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適切な組合せを含む。本明細書で使用されるコンピュータ可読記憶媒体は、電波、または他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を介して伝播する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、または配線を介して伝送される電気信号などの一時的な信号そのものであると解釈されるべきではない。
【０１３３】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング・デバイスもしくは処理デバイスまたはその両方に、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレスネットワーク、あるいはその組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは、伝送銅ケーブル、伝送光ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいは以上の組合せを備えることが可能である。各コンピューティング・デバイスまたは各処理デバイスあるいはその両方におけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング・デバイスまたは処理デバイスあるいはその両方の内部のコンピュータ可読記憶媒体に記憶されるようにコンピュータ可読プログラム命令を転送する。
【０１３４】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは類似したプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せにおいて書かれたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、全部がユーザのコンピュータ上で実行されること、部分的にユーザのコンピュータ上で実行されること、スタンドアロンのソフトウェア・パッケージとして実行されること、部分的にユーザのコンピュータ上で、かつ部分的に遠隔コンピュータ上で実行されること、あるいは全部が遠隔コンピュータ上で、または遠隔サーバ上で実行されることが可能である。全部が遠隔コンピュータ上で、または遠隔サーバ上で実行されるシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されることが可能であり、あるいは接続は、外部コンピュータに対して（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）行われることが可能である。いくつかの実施形態において、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、本発明の態様を実行するために電子回路をパーソナライズすることが可能である。
【０１３５】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照して本明細書で説明される。流れ図またはブロック図あるいはその両方の各ブロック、ならびに流れ図またはブロック図あるいはその両方のブロックの組合せが、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。
【０１３６】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、流れ図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定される機能／動作を実行するための手段を生成するように、汎用プロセッサ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに供給されて、マシンを作り出すものであってよい。また、これらのコンピュータ可読プログラム命令は、命令を記憶しているコンピュータ可読記憶媒体が、流れ図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定される機能／動作を実行する命令を含む製造品を備えるように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに特定の様態で機能するように指示することができるものであってもよい。
【０１３７】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、流れ図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定される機能／動作を実行するように、コンピュータ実装プロセスをもたらすべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル処理装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【０１３８】
図における流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施様態のアーキテクチャ、機能、および動作を示す。これに関して、流れ図またはブロック図における各ブロックは、指定される論理機能を実施するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表すことが可能である。いくつかの代替の実施様態において、ブロックに記載される機能は、図に記載される順序を外れて行われてもよい。例えば、連続して示される２つのブロックが、実際には、実質的に同時に実行されてもよく、または関与する機能に依存して、それらのブロックが、時として、逆の順序で実行されてもよい。また、ブロック図または流れ図あるいはその両方の各ブロック、ならびにブロック図または流れ図あるいはその両方のブロックの組合せは、指定される機能もしくは動作を実行する、または専用ハードウェアとコンピュータ命令の組合せを実行する専用のハードウェア・ベースのシステムによって実施され得ることも注目されよう。
【０１３９】
本発明の範囲を逸脱することなく、以上のことに改良および変更が行われることが可能である。
【図１】
0006621474.tif 000002
【図２】
0006621474.tif 000003
【図３】
0006621474.tif 000004
【図４】
0006621474.tif 000005
【図５】
0006621474.tif 000006
【図６】
0006621474.tif 000007
【図７】
0006621474.tif 000008
【図８】
0006621474.tif 000009