特許第6621474号(P6621474)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
特許6621474パブリッシュ/サブスクライブ・メッセージングのための方法およびシステムならびにコンピュータ・プログラム(メッセージ構造を使用したパブリッシュ/サブスクライブ・メッセージング)
<>
  • 特許6621474-パブリッシュ/サブスクライブ・メッセージングのための方法およびシステムならびにコンピュータ・プログラム(メッセージ構造を使用したパブリッシュ/サブスクライブ・メッセージング) 図000002
  • 特許6621474-パブリッシュ/サブスクライブ・メッセージングのための方法およびシステムならびにコンピュータ・プログラム(メッセージ構造を使用したパブリッシュ/サブスクライブ・メッセージング) 図000003
  • 特許6621474-パブリッシュ/サブスクライブ・メッセージングのための方法およびシステムならびにコンピュータ・プログラム(メッセージ構造を使用したパブリッシュ/サブスクライブ・メッセージング) 図000004
  • 特許6621474-パブリッシュ/サブスクライブ・メッセージングのための方法およびシステムならびにコンピュータ・プログラム(メッセージ構造を使用したパブリッシュ/サブスクライブ・メッセージング) 図000005
  • 特許6621474-パブリッシュ/サブスクライブ・メッセージングのための方法およびシステムならびにコンピュータ・プログラム(メッセージ構造を使用したパブリッシュ/サブスクライブ・メッセージング) 図000006
  • 特許6621474-パブリッシュ/サブスクライブ・メッセージングのための方法およびシステムならびにコンピュータ・プログラム(メッセージ構造を使用したパブリッシュ/サブスクライブ・メッセージング) 図000007
  • 特許6621474-パブリッシュ/サブスクライブ・メッセージングのための方法およびシステムならびにコンピュータ・プログラム(メッセージ構造を使用したパブリッシュ/サブスクライブ・メッセージング) 図000008
  • 特許6621474-パブリッシュ/サブスクライブ・メッセージングのための方法およびシステムならびにコンピュータ・プログラム(メッセージ構造を使用したパブリッシュ/サブスクライブ・メッセージング) 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6621474
(24)【登録日】2019年11月29日
(45)【発行日】2019年12月18日
(54)【発明の名称】パブリッシュ/サブスクライブ・メッセージングのための方法およびシステムならびにコンピュータ・プログラム(メッセージ構造を使用したパブリッシュ/サブスクライブ・メッセージング)
(51)【国際特許分類】
   G06F 13/00 20060101AFI20191209BHJP
【FI】
   G06F13/00 610A
   G06F13/00 540C
【請求項の数】14
【全頁数】23
(21)【出願番号】特願2017-525615(P2017-525615)
(86)(22)【出願日】2015年10月22日
(65)【公表番号】特表2018-501548(P2018-501548A)
(43)【公表日】2018年1月18日
(86)【国際出願番号】IB2015058154
(87)【国際公開番号】WO2016079619
(87)【国際公開日】20160526
【審査請求日】2018年6月27日
(31)【優先権主張番号】1420708.8
(32)【優先日】2014年11月21日
(33)【優先権主張国】GB
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】プール、クリストファー、ジョン
(72)【発明者】
【氏名】スターリング、クレイグ、ハワード
(72)【発明者】
【氏名】クラウザー、フィオナ、マーガレット
(72)【発明者】
【氏名】ゲレージ、ゲザ
(72)【発明者】
【氏名】ロス、マーティン、アンドリュー
【審査官】 安藤 一道
(56)【参考文献】
【文献】 特表2009−519509(JP,A)
【文献】 米国特許出願公開第2010/0281154(US,A1)
【文献】 米国特許出願公開第2011/0307603(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/00
(57)【特許請求の範囲】
【請求項1】
メッセージ仲介システムにおいて実行されるメッセージ構造を使用したパブリッシュ/サブスクライブ・メッセージングのための方法であって、
パブリッシュ側エンティティがメッセージをパブリッシュすることができ、かつ、サブスクライブ側エンティティがメッセージにサブスクライブすることができる複数のリストを保持するステップと、
共通のメッセージ構造に少なくとも部分的に従うメッセージのためのリストを1以上、前記複数のリストから提供するステップと、
パブリッシュ側エンティティまたはサブスクライブ側エンティティからの要求を、1以上のメッセージのメッセージ構造を定義する抽象表現と前記1以上のリストとを比較することによって、リストとマッチさせるステップと、
前記共通のメッセージ構造に少なくとも部分的に従うメッセージを、前記マッチしたリストを介して前記パブリッシュ側エンティティと前記サブスクライブ側エンティティとの間で共有させるステップと
を含む、方法。
【請求項2】
前記1以上のリストはそれぞれ、前記共通のメッセージ構造に少なくとも部分的に従うメッセージを複数含み、当該メッセージ構造を定義する抽象表現をメタデータとして有する、請求項に記載の方法。
【請求項3】
前記マッチしたリストを参照するために、前記パブリッシュ側エンティティまたは前記サブスクライブ側エンティティは、識別子で当該リストを識別する、請求項又はに記載の方法。
【請求項4】
マッチさせる前記ステップは、前記1以上のメッセージのメッセージ構造を定義する抽象表現を、前記1以上のリストそれぞれの前記メタデータと比較する、請求項に記載の方法。
【請求項5】
マッチさせる前記ステップは、前記要求に係るメッセージ構造を有するメッセージを、前記1以上のリスト中の各メッセージとそれぞれ比較する、請求項ないしのいずれか一項に記載の方法。
【請求項6】
メッセージ構造を有するメッセージをパブリッシュすることを求める要求をパブリッシュ側エンティティから受信するステップをさらに含み、
前記マッチさせるステップにおいて、前記受信した要求に係るメッセージ構造を定義する抽象表現を、前記リストが含むメッセージのメッセージ構造とマッチさせることによって、前記要求に係るメッセージ構造を有するリストが存在するかどうかを判定し、
前記リストが存在すると判定した場合、当該リストにメッセージをパブリッシュするために当該リストに関するリスト識別子を前記パブリッシュ側エンティティに提供するステップと
を含む、請求項に記載の方法。
【請求項7】
前記リストが存在しないと判定した場合、前記要求に係るメッセージ構造に関して新たなリストを作成するステップを含む、請求項に記載の方法。
【請求項8】
メッセージ構造を有するメッセージにサブスクライブする要求をサブスクライブ側エンティティから受信するステップをさらに含み、
前記マッチさせるステップにおいて、前記受信した要求に係るメッセージ構造を定義する抽象表現を、前記リストが含むメッセージのメッセージ構造とマッチさせることによって、前記要求に係るメッセージ構造を有するリストが存在するかどうかを判定し、
前記リストが存在すると判定した場合、当該リストからメッセージをサブスクライブするために当該リストに関するリスト識別子を前記サブスクライブ側エンティティに提供するステップと
を含む、請求項に記載の方法。
【請求項9】
前記マッチさせるステップにおいてさらに、
前記抽象表現により定義されるメッセージ構造と、前記リストが含むメッセージのメッセージ構造とが部分的にマッチするか比較するステップを含む、請求項ないしのいずれか一項に記載の方法。
【請求項10】
マッチする要求の統計分析に基づいてリストを分割するステップを含む、請求項ないしのいずれか一項に記載の方法。
【請求項11】
異なるリストそれぞれに共通のメッセージ構造のメッセージがある場合、前記異なるリスト同士を単一のリストにマージするステップを含む、請求項ないし10のいずれか一項に記載の方法。
【請求項12】
メッセージ構造を使用したパブリッシュ/サブスクライブ・メッセージングのためのメッセージ仲介システムであって、
パブリッシュ側エンティティがメッセージをパブリッシュすることができ、かつ、サブスクライブ側エンティティがメッセージにサブスクライブすることができる複数のリストを保持するリスト保持構成要素と、
共通のメッセージ構造に少なくとも部分的に従うメッセージのためのリストを1以上、前記複数のリストから提供するリスト提供構成要素と、
パブリッシュ側エンティティまたはサブスクライブ側エンティティからの要求を、1以上のメッセージのメッセージ構造を定義する抽象表現と前記1以上のリストとを比較することによって、リストとマッチさせる処理構成要素と、
前記共通のメッセージ構造に少なくとも部分的に従うメッセージを、前記マッチしたリストを介して前記パブリッシュ側エンティティと前記サブスクライブ側エンティティとの間で共有させるパブリッシュ/サブスクライブ構成要素と
を備える、メッセージ仲介システム。
【請求項13】
請求項1ないし1のいずれか一項に記載の各ステップを実行するための手段を備えたメッセージ仲介システム。
【請求項14】
デジタル・コンピュータの内部メモリにロード可能であるコンピュータ・プログラムであって、前記コンピュータ・プログラムが前記デジタル・コンピュータ上で実行されるとき、当該デジタル・コンピュータに請求項1ないし1のいずれかに一項に記載の各ステップを実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パブリッシュ/サブスクライブ・メッセージングの分野に関する。特に、本発明は、メッセージ構造を使用したパブリッシュ/サブスクライブ・メッセージングに関する。
【背景技術】
【0002】
コンピュータ・システムのユーザが、1つのアプリケーションまたはシステムが別のアプリケーションまたはシステムとある情報を共有することを所望し得る多くの状況が存在する。これは、例えば、Notes(Notesは、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標である)などのクライアントにおいて新たな電子メールを作成しているとき、クライアントが、他のアプリケーションにおいて画面上で見られた電子メール・アドレスを収集することが可能であり、例えば、同僚が、Sametime(Sametimeは、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標である)において誰かのアドレスを送信したばかりである可能性がある場合に、役に立つ。現在、ユーザは、このアドレスをSametimeからNotesにコピー・アンド・ペーストしなければならない。
【0003】
2つのアプリケーションの間の1対1リンクの単純な事例の場合、または多対1リンクの場合さえ、これは、プロセス間通信を使用して、または受信側アプリケーションに、何らかの種類のアプリケーション・プログラミング・インターフェース(API)を開示させ、それが、ある事前定義された形態の入力をリッスンすることができるようにすることで、容易に実現され得る。しかし、このシステムは、多対多リンクが存在する場合、かつ要求される情報の形態に関して厳密な事前に合意された標準が存在しない場合、管理不能になる。例えば、電子メール・アドレスを検証する多くの正規表現が存在する。
【0004】
この問題を解決するのに、かつ潜在的に他の問題も解決するのに、パブリッシュ・メッセージング・システムまたはサブスクライブ・メッセージング・システムあるいはその両方、およびキュー・ベースのメッセージング・システムが使用され得る。パブリッシュ・メッセージング・システムまたはサブスクライブ・メッセージング・システムあるいはその両方は、非常に普及しているが、1つの要件は、メッセージをパブリッシュするため、およびメッセージにサブスクライブするためにトピック名が知られていることである。
【0005】
2つのアプリケーションは、合意されたトピックをパブリッシュすること、および次に、そのトピックにサブスクライブすることによって通信することが可能であるが、このことは、2つのアプリケーションの開発者がトピック名に関して合意することを要求する。しばしば、命名スキームおよび命名規約は、標準において合意されるが、時として、アドホックのトピックをパブリッシュすること、またはそのようなトピックにサブスクライブすることを所望することがあり得る。
【発明の概要】
【発明が解決しようとする課題】
【0006】
したがって、前述した問題に対処する必要性が、当技術分野に存在する。
【課題を解決するための手段】
【0007】
本発明の第1の態様によれば、メッセージング仲介システムにおいて実行されるメッセージ構造を使用したパブリッシュ/サブスクライブ・メッセージングのための方法であって、パブリッシュ側エンティティがメッセージをパブリッシュすることができ、かつサブスクライブ側エンティティがメッセージにサブスクライブすることができる複数のリストを保持するステップと、共通のメッセージ構造に少なくとも部分的に準拠するメッセージに関するリストを提供するステップと、メッセージ構造を有するメッセージ、または1つまたは複数のメッセージの抽象表現を、提供された1つまたは複数のリストと比較することによって、パブリッシュ側エンティティまたはサブスクライブ側エンティティからの要求を、提供されたリストとマッチさせるステップと、共通のメッセージ構造に少なくとも部分的に準拠するメッセージを、リストを介して共有するステップとを含む方法が提供される。
【0008】
方法は、共通のメッセージ構造の抽象表現のメタデータによってリストを定義することを含み得る。方法は、リストを参照するのに使用される、パブリッシュ側エンティティまたはサブスクライブ側エンティティに対する識別子でリストを識別することをさらに含み得る。
【0009】
マッチさせるステップは、メッセージ構造を有するメッセージ、または1つまたは複数のメッセージの抽象表現を、提供されたリストの共通のメッセージ構造の抽象表現のメタデータと比較することが可能である。
【0010】
マッチさせるステップは、メッセージ構造を有するメッセージ、または1つまたは複数のメッセージの抽象表現を、提供されたリストのそれぞれにおけるメッセージ・インスタンスと比較することが可能である。
【0011】
方法は、メッセージ構造を有するメッセージをパブリッシュすることを求める要求をパブリッシュ側エンティティから受信するステップと、提供されたリストのメッセージ構造とマッチさせることによって、そのメッセージ構造に関する1つまたは複数のリストが存在するかどうかを判定するステップと、そのメッセージ構造が準拠し、かつそのメッセージ構造を有するメッセージがパブリッシュされ得る1つまたは複数のリストに関するリスト識別子をパブリッシュ側エンティティに提供するステップとをさらに含み得る。方法は、提供されたリストのメッセージ構造とマッチしないメッセージ構造に関して新たなリストを作成するステップを含み得る。
【0012】
方法は、メッセージ構造を有するメッセージにサブスクライブする要求をサブスクライブ側エンティティから受信するステップと、提供されたリストのメッセージ構造とマッチさせることによって、そのメッセージ構造に関する1つまたは複数のリストが存在するかどうかを判定するステップと、そのメッセージ構造を有するメッセージがサブスクライブされるべき1つまたは複数のリストに関するリスト識別子をサブスクライブ側エンティティに提供するステップとを含み得る。
【0013】
メッセージ構造を有するメッセージ、または1つまたは複数のメッセージの抽象表現を、提供されたリストと比較することによって、パブリッシュ側エンティティまたはサブスクライブ側エンティティからの要求を、提供された1つまたは複数のリストとマッチさせるステップは、部分的マッチを有する要求を、提供された1つまたは複数のリストとマッチさせるステップを含み得る。
【0014】
方法は、マッチする要求の統計分析に基づいてリストを適切に分割するステップを含み得る。
【0015】
また、方法は、パブリッシュすることに関するリストを、単一のリストにパブリッシュされた共通のデータとマージするステップも含み得る。
【0016】
本発明の第2の態様によれば、メッセージング仲介システムを含む、メッセージ表現フォーマットを使用したパブリッシュ/サブスクライブ・メッセージングのためのシステムであって、パブリッシュ側エンティティがメッセージをパブリッシュすることができ、かつサブスクライブ側エンティティがメッセージにサブスクライブすることができる複数のリストを保持するためのリスト保持構成要素と、共通のメッセージ構造に少なくとも部分的に準拠するメッセージに関するリストを提供するためのリスト提供構成要素と、メッセージ構造を有するメッセージ、または1つまたは複数のメッセージの抽象表現を、提供された1つまたは複数のリストと比較することによって、パブリッシュ側エンティティまたはサブスクライブ側エンティティからの要求を、提供されたリストとマッチさせるための処理構成要素と、共通のメッセージ構造に少なくとも部分的に準拠するメッセージを、リストを介して共有するためのパブリッシュ/サブスクライブ構成要素とを備える、システムが提供される。
【0017】
システムは、共通のメッセージ構造の抽象表現のメタデータによってリストを定義するためのメタデータ構成要素を含み得る。
【0018】
システムは、リストを参照するのに使用される識別子を有するリストをパブリッシュ側エンティティまたはサブスクライブ側エンティティに提供するための識別子構成要素をさらに含み得る。
【0019】
処理構成要素は、メッセージ構造を有するメッセージ、または1つまたは複数のメッセージの抽象表現を、提供されたリストの共通のメッセージ構造の抽象表現のメタデータと比較することが可能である。
【0020】
処理構成要素は、メッセージ構造を有するメッセージ、または1つまたは複数のメッセージの抽象表現を、提供されたリストのそれぞれにおけるメッセージ・インスタンスと比較することが可能である。
【0021】
システムは、メッセージ構造を有するメッセージをパブリッシュすることを求める要求をパブリッシュ側エンティティから受信するためのパブリッシュ側エンティティ要求構成要素を含むことが可能であり、パブリッシュ側エンティティ要求構成要素は、提供されたリストのメッセージ構造とマッチさせることによって、そのメッセージ構造に関する1つまたは複数のリストが存在するかどうかを判定するために処理構成要素を使用すること、およびパブリッシュ側エンティティ要求構成要素が、そのメッセージ構造が準拠し、かつそのメッセージ構造を有するメッセージがパブリッシュされ得る1つまたは複数のリストに関するリスト識別子をパブリッシュ側エンティティに提供することを含む。
【0022】
システムは、提供されたリストのメッセージ構造とマッチしないメッセージ構造に関して新たなリストを作成するための作成構成要素を含み得る。
【0023】
システムは、メッセージ構造を有するメッセージにサブスクライブする要求をサブスクライブ側エンティティから受信するためのサブスクライブ側エンティティ要求構成要素を含むことが可能であり、サブスクライブ側エンティティ要求構成要素は、提供されたリストのメッセージ構造とマッチさせることによって、そのメッセージ構造に関する1つまたは複数のリストが存在するかどうかを判定するために処理構成要素を使用すること、およびサブスクライブ側エンティティ要求構成要素が、そのメッセージ構造を有するメッセージがサブスクライブされるべき1つまたは複数のリストに関するリスト識別子をサブスクライブ側エンティティに提供することを含む。
【0024】
メッセージ構造を有するメッセージ、または1つまたは複数のメッセージの抽象表現を、提供された1つまたは複数のリストと比較することによって、パブリッシュ側エンティティまたはサブスクライブ側エンティティからの要求を、提供されたリストとマッチさせるための処理構成要素は、部分的マッチを有する要求を、提供された1つまたは複数のリストとマッチさせることを含み得る。
【0025】
システムは、マッチする要求の統計分析に基づいてリストを適切に分割するための分割構成要素を含み得る。
【0026】
システムは、パブリッシュすることに関するリストを、単一のリストにパブリッシュされた共通のデータとマージするためのマージ構成要素を含み得る。
【0027】
本発明の第3の態様によれば、コンピュータ可読媒体に記憶され、かつ本発明の第1の態様の方法ステップを実行するためにコンピュータ上で実行されるとき、ソフトウェア・コード部分を備えるデジタル・コンピュータの内部メモリにロード可能であるコンピュータ・プログラムが提供される。
【0028】
本発明の第4の態様によれば、図を参照して実質的に説明される方法が提供される。
【0029】
本発明の第5の態様によれば、図を参照して実質的に説明されるシステムが提供される。
【0030】
本発明の説明される態様は、共有されるデータの構造に基づいてデータを共有することを可能にする利点をもたらす。
【0031】
本発明と見なされる主題は、本明細書の結論部分において特に指摘され、明確に主張される。本発明は、動作の編成と方法の両方に関して、それらの目的、特徴、および利点とともに、添付の図面と一緒に読まれる場合、後段の詳細な説明を参照して最もよく理解され得る。
【0032】
次に、本発明の好ましい実施形態が、以下の図面を参照して、単に例として説明される。
【図面の簡単な説明】
【0033】
図1】本発明によるシステムの例示的な実施形態を示す概略図である。
図2】本発明による方法の態様の例示的な実施形態を示す流れ図である。
図3】本発明による方法の態様の例示的な実施形態を示す流れ図である。
図4】本発明による方法の態様の例示的な実施形態を示す流れ図である。
図5】本発明によるシステムの例示的な実施形態を示すブロック図である。
図6】本発明が実施され得るコンピュータ・システムの実施形態を示すブロック図である。
図7】本発明の例示的な実施形態を示す概略図である。
図8】本発明の例示的な実施形態を示す概略図である。
【発明を実施するための形態】
【0034】
例示の簡明性および明瞭性のため、図に示される要素は、必ずしも一律の縮尺に従わずに描かれていることを認識されたい。例えば、要素のうちのいくつかの寸法は、明瞭性のために他の要素と比べて誇張され得る。さらに、適切と考えられる場合、対応する特徴、または類似した特徴を示すように図の間で参照符号が繰り返され得る。
【0035】
後段の詳細な説明において、本発明の徹底的な理解をもたらすために多数の特定の詳細が提示される。しかし、本発明は、これらの特定の詳細なしに実施されてもよいことが当業者によって理解されよう。その他の場合において、本発明を不明瞭にしないように、よく知られた方法、手順、および構成要素は、詳細には説明されていない。
【0036】
説明される方法およびシステムは、アプリケーションまたはシステムが情報を共有することを、データに関するトピック名ではなく、このデータの構造を知っているに過ぎないことによって可能にする。2つのアプリケーションまたはシステムの場合、命名スキームが合意されることは、比較的容易である。しかし、すべてが同一のデータ型を共有する多くのアプリケーションに関して、前もってすべてが名前について合意することは困難である。したがって、概念は、より多くのシステムがデータ型またはデータ構造に基づいてトピックにサブスクライブする、またはパブリッシュするにつれ、ますます強力になる。
【0037】
説明される方法およびシステムは、特定の構造の情報の共有のために使用するようにランタイムにおけるパブリッシュ・トピックまたはサブスクライブ・トピックあるいはその両方のネゴシエーションを可能にする。
【0038】
パブリッシュ側エンティティとサブスクライブ側エンティティの間の仲介システムが、サブスクライバに配信するためにパブリッシャからアイテムを受信することが可能なキュー・マネージャ、メッセージング・ミドルウェア・システム、または他のシステムの形態で設けられることが可能である。仲介システムは、アイテムがパブリッシュ側エンティティによってパブリッシュされ、サブスクライブ側エンティティによるサブスクリプションによって獲得されるアイテムの(メッセージなどの)リストを保持する。例えば、リストは、メッセージの共通のトピックに基づくメッセージのキューであり得る。
【0039】
説明されるパブリッシュ・メッセージング・システムまたはサブスクライブ・メッセージング・システムあるいはその両方において、アイテムは、異なる構造を有するデータから形成されたメッセージであり得る。説明される方法およびシステムにおいて、リスト・トピックは、メッセージにおけるデータの構造に基づき、共通の、または重なり合うメッセージ構造を有するアイテムを含むリストをもたらす。
【0040】
説明される方法およびシステムにおいて、リストは、名前または識別子(ID)、ならびにそれが包含するデータの抽象表現(abstract representation)であるいくらかのさらなるメタデータを有することが可能である。一実施形態において、この抽象表現は、名前自体またはID自体あるいはその両方であることも可能であるが、名前またはIDあるいはその両方が単にランダムなハッシュまたは数であることも同様に可能である。
【0041】
抽象表現は、パブリッシュされ、かつサブスクライブされるべきアイテムのデータの構造を定義する。抽象表現は、正規表現、探索パターン、またはクエリ言語表現であることが可能である。ブール応答型クエリである、はいまたはいいえあるいはその両方を記述することが可能な異なる多くの言語が使用され得る。クエリ言語は、XPath、XQuery、SQL、および以上の変種、XSLTその他を含み得るが、以上には限定されない。抽象表現は、テキストの文字列、他のシンタックス、またはXMLなどのデータ表現をマッチするのに使用され得る。
【0042】
パブリッシュ側エンティティが、仲介システムにクエリを行って、仲介システムが、メッセージ構造とマッチする、または部分的にマッチするリストを有するかどうかを確かめることが可能である。答えが肯定的である場合、そのパブリッシュ側エンティティは、そのリストにメッセージをパブリッシュすることを開始することができる。答えが否定的である場合、そのパブリッシュ側エンティティがこの構造のメッセージをパブリッシュすることを開始するように新たなリストが作成され得る。一実施形態において、各リストのメタデータを調べて、マッチするリストを返す代わりに、仲介システムは、各リストにおける各アイテムを調べて、パブリッシュ側エンティティが供給するメッセージの構造とマッチするリストを見出してもよい。
【0043】
サブスクライブ側エンティティは、仲介システムにクエリを行って、仲介システムが、メッセージ構造とマッチする、または部分的にマッチするリストを有するかどうかを確かめることが可能である。次に、仲介システムは、各リストのアイテム(すなわち、リストのメタデータだけでなく)を調べて、サブスクライブ側エンティティによって与えられるメッセージ構造とマッチするアイテムを有するリストを見出すことが可能である。次に、サブスクライブ側エンティティが、マッチする、または部分的にマッチするアイテムを有するリストにサブスクライブすることが可能である。
【0044】
説明される方法およびシステムの様々な実施形態が提供される。
【0045】
一実施形態において、データ構造の抽象表現が、データ構造を定義し、パブリッシュ要求またはサブスクライブ要求を既存のリストとマッチさせるのに使用される。リストは、リストのメタデータとして、例えば、リストの属性として与えられるデータ構造の抽象表現を有することが可能である。1つの事例において、抽象表現は、リストの名前として与えられることが可能である。
【0046】
パブリッシュ要求またはサブスクライブ要求は、リストの名前、リストのメタデータ、またはリスト内のメッセージのうちのいずれか1つまたは複数と比較される抽象表現(メタデータまたは属性の抽象表現とは異なる形態のものであり得る)を定義することが可能である。
【0047】
別の実施形態において、パブリッシュ要求またはサブスクライブ要求は、メッセージ自体を供給することによってメッセージ構造を定義することが可能である。そのメッセージが、リストのメッセージの構造の抽象表現と、またはリスト内のメッセージと比較され得る。
【0048】
メッセージの共通のデータ構造に関するリストは、データ構造の形態をよりよく扱うようにリストを分割すること、およびマージすることを含め、パブリッシュ要求およびサブスクライブ要求がマッチされるにつれ、進化することが可能である。
【0049】
図1を参照すると、概略図100が、複数のパブリッシュ側エンティティ111〜113、および複数のサブスクライブ側エンティティ121〜123から形成されるパブリッシュ・アーキテクチャまたはサブスクライブ・アーキテクチャあるいはその両方を、パブリッシュ処理またはサブスクライブ処理あるいはその両方を管理するための仲介システム130と一緒に示す。パブリッシュ側エンティティが、サブスクライブ側エンティティであることも可能であり、サブスクライブ側エンティティがパブリッシュ側エンティティであることも可能であること、およびこれらのタイプのエンティティは、簡単のために別々に示されることを理解されたい。
【0050】
仲介システム130は、複数のアイテムまたはアイテムに対するリファレンス141が与えられ得る少なくとも1つのトピック・リスト131を含む。トピック・リスト131は、リストにおけるアイテムが少なくとも部分的に準拠するメッセージ構造を定義する抽象表現133のメタデータを含む属性132を有することが可能である。
【0051】
また、仲介システム130は、パブリッシュ要求またはサブスクライブ要求を処理するため、およびアイテムの与えられた構造に関して適切なリスト131にマッチさせるための処理構成要素150を含むことも可能である。特に、処理構成要素150は、アイテムを、アイテムの構造の抽象表現とマッチさせることが可能である。処理構成要素150のさらなる詳細は、後段で与えられる。
【0052】
図2を参照すると、流れ図200が、パブリッシュ側エンティティ111および仲介システム130において実行される方法の例示的な実施形態を示す。
【0053】
パブリッシュ側エンティティ111が、エンティティ111がパブリッシュすることを所望するメッセージの構造を指定する要求を仲介システム130に送信する201。メッセージ構造は、メッセージ構造の抽象表現として与えられることが可能であり、またはメッセージ構造形態のメッセージのサンプルであることが可能である。
【0054】
要求は、仲介システム130において受信され202、マッチング探索が実行されて203、アイテムの同一の、または類似したメッセージ構造を有する1つまたは複数の既存のリストと要求がマッチされる、または部分的にマッチされる。これは、トピック・リストの名前、リストにおけるアイテムの抽象表現と関係するメタデータ、またはリストにおけるアイテム自体によってマッチされることが可能である。
【0055】
1つまたは複数のリストが、要求において定義されたメッセージ構造とマッチする、または部分的にマッチするメッセージ構造に関して存在するかどうかが判定される204。リストが存在しないと判定された場合、仲介システム130においてリストが作成され205得る。
【0056】
メッセージ構造形態のメッセージのサンプルが、仲介システム130が既存のリストとマッチする203ことができる簡単なメッセージのためにパブリッシュ側エンティティによって送信される201ことが可能である。しかし、メッセージのサンプルに関してマッチするトピックが存在しない場合、仲介システム130が、リストを作成し、意図されるパブリッシュ側エンティティ111に抽象表現を求めることが可能である。このことは、仲介システム130とパブリッシュ側エンティティ111の間のオープニング・ハンドシェーク(opening handshake)において実行され得る。
【0057】
1つまたは複数のリストが既に存在する、または新たなリストが作成されている205と判定された場合、リスト名または他の識別子がパブリッシュ側エンティティ111に送信され206得る。
【0058】
パブリッシュ側エンティティ111が、リスト名を受信する207ことが可能である。パブリッシュ側エンティティ111が、例えば、メッセージ構造の抽象表現または名前を使用して、メッセージ構造に関するリスト名のリファレンスを記憶する208ことが可能である。パブリッシュ側エンティティ111が、その後、このメッセージ構造のアイテムを、アイテムが生じるにつれ、このリストにパブリッシュする209ことが可能である。
【0059】
図3を参照すると、流れ図250が、サブスクライブ側エンティティ121および仲介システム130において実行される方法の例示的な実施形態を示す。
【0060】
サブスクライブ側エンティティ121が、メッセージ構造に対するリファレンスを、例えば、抽象表現、メッセージ構造の名前、またはメッセージ構造の形態のサンプル・アイテムとして含む要求を仲介システム130に送信する251ことが可能である。要求は、メッセージ構造とマッチする、または部分的にマッチするリストを要求することが可能である。
【0061】
仲介システム130が、要求を受信し252、仲介システム130におけるリストのマッチ探索を実行して253、アイテムの同一の、または類似したメッセージ構造を有する1つまたは複数の既存のリストと要求をマッチさせる、または部分的にマッチさせることが可能である。これは、トピック・リストの名前、リストにおけるアイテムの抽象表現と関係するメタデータ、またはリストにおけるアイテム自体によってマッチされることが可能である。
【0062】
要求において定義されるメッセージ構造とマッチする、または部分的にマッチするメッセージ構造に関する1つまたは複数のリストが存在するかどうかが判定され254得る。
【0063】
以下、すなわち、各リストのすべてのアイテムを調べて、リストにおけるすべてのアイテムがサブスクライブ側エンティティによって与えられる表現とマッチすることを確実にすること、マッチが見出されるまでリストにおけるすべてのアイテムを調べること、および(パフォーマンスのために)リストにおける最初のアイテムだけを調べることを含め、実施され得る様々な可能な「マッチの品質」実施形態が存在する。
【0064】
要求のメッセージ構造と実質的にマッチするリストが存在しないと判定された254場合、このことをサブスクライブ側エンティティに知らせる通知がサブスクライブ側エンティティに送信される255ことが可能である。メッセージ構造とマッチするリストが存在すると判定された254場合、リスト名がサブスクライブ側エンティティ121に送信される256。
【0065】
サブスクライブ側エンティティ121が、リスト名を使用してリストのうちの1つまたは複数にサブスクライブする257ことが可能である。
【0066】
サブスクライブ側エンティティ121がサブスクライブしているリストに新たなアイテムがパブリッシュされた場合、そのアイテムは、仲介システム130によってサブスクライブ側エンティティ121にプッシュされる。オプションとして、新たなアイテムがサブスクライブ側エンティティにプッシュされる場合、サブスクライブ側エンティティは、それ独自のフィルタリングを行って、正しさを確実にすることができる。
【0067】
図4を参照すると、流れ図300が、仲介システム130によって実行される、説明される方法の例示的な実施形態を示す。
【0068】
仲介システム130は、パブリッシュ側エンティティがメッセージをパブリッシュすることができ、サブスクライブ側エンティティがメッセージにサブスクライブすることができる複数のリストを保持する301ことが可能であり、これは、共通のメッセージ構造に少なくとも部分的に従うメッセージのためにリストを提供すること302を含み得る。リストを提供すること302は、リストに関する名前またはIDを定義することを含むことが可能であり、リストが与えられるメッセージ構造の抽象表現の形態でリストに関するメタデータを定義することも含むことが可能である。抽象表現は、様々な形態、例えば、正規表現、探索パターン、XPath表現などのクエリ言語表現その他の形態をとることが可能である。抽象表現は、パターン、データのタイプ、フォーマット、型その他の点でメッセージの構造を定義することが可能である。
【0069】
正規表現の例において、文字は、特殊な意味を有するメタ文字、または文字通りの意味を有する通常の文字であると理解される。それらの文字は一緒に、所与のパターンまたは構造のテキスト材料を識別するのに使用され得る。クエリ言語表現の別の例において、データ項を見てまわるのにシンタックスが使用される。
【0070】
パブリッシュ側エンティティまたはサブスクライブ側エンティティから、要求において指定されるメッセージ構造のメッセージに関するパブリッシュされるべき、またはサブスクライブされるべきリストの詳細を要求する要求が、受信され303得る。要求は、メッセージ構造の抽象表現を含むことが可能であり、メッセージ構造の形態のメッセージのサンプルを含むことが可能であり、またはメッセージ構造の名前を含むことが可能である。
【0071】
要求のメッセージ構造をメッセージ構造に関する既存のリストとマッチすること304が実行される。このマッチングは、様々な様態で実行され得る。一実施形態において、要求において指定されるメッセージ構造をマッチすることは、リストにおける個々のアイテムとマッチすることが可能である。別の実施形態において、要求において指定されるメッセージ構造の抽象表現をマッチすることは、リストのメタデータとして与えられるリストのメッセージ構造の抽象表現とマッチすることが可能である。
【0072】
マッチングは、リストに対する要求の部分的マッチングを含み得る。一実施形態において、仲介システム130が、リスト・アイテムをブラウズして、「部分的マッチ」においてマッチするデータの割合を獲得することが可能である。さらに、または代替として、部分的マッチから適切でないデータをフィルタリングするためのフィルタが設けられてもよい。
【0073】
パブリッシュ側エンティティの要求がマッチするリスト、または部分的にマッチするリストをもたらさない場合、要求のメッセージ構造に関する新たなリストが作成され305得る。
【0074】
仲介システム130は、パブリッシュ側エンティティおよびサブスクライブ側エンティティに、要求されるメッセージ構造に関してそれらがパブリッシュすべき、またはサブスクライブすべきリストの名前またはIDを提供することが可能である。
【0075】
サブスクライブ側エンティティに、パターンに厳密に、またはサブセットにマッチする複数のトピックに対するサブスクリプションが返されることが可能である。これは、サブスクライバにトランスペアレントに行われて、仲介システム130において管理されることが可能である。
【0076】
メッセージは、メッセージ構造に関する識別された1つまたは複数のリストにメッセージをパブリッシュすること、および識別された1つまたは複数のリストにサブスクライブすることによって共有され306得る。
【0077】
リストは、パブリッシュ側エンティティおよびサブスクライブ側エンティティによって要求において定義されるメッセージ構造に適応するようにマージすること、および分割することによって進化することが可能である。
【0078】
トピックが定義された閾値に達しない(すなわち、データの<50%がマッチする)と判定された場合、サブスクリプションは、除去されることが可能である。代替として、仲介システムは、パターン・マッチの統計分析に基づいてトピックを適切に分割するロジックを有することも可能である。
【0079】
パブリッシュされると、「部分的マッチ」が識別されることが可能であり、共通のデータとの重なり合うパターンが、同一のトピックを使用するようにマージされることが可能である。
【0080】
図5を参照すると、ブロック図が、仲介システム130の例示的な実施形態を示す。図1に示される仲介システム130は、パブリッシュ側エンティティとサブスクライブ側エンティティの間でパブリッシュ処理またはサブスクライブ処理あるいはその両方を管理する。
【0081】
仲介システム130は、複数のアイテム、またはアイテム141に対するリファレンスが与えられ得る少なくとも1つのトピック・リスト131を含む。トピック・リスト131は、抽象表現133のメタデータを含む属性132を有することが可能である。その抽象表現は、リストにおけるアイテムが少なくとも部分的に従うメッセージ構造を定義する。
【0082】
仲介システム130は、パブリッシュ側エンティティがメッセージをパブリッシュすることができ、サブスクライブ側エンティティがメッセージにサブスクライブすることができる複数のリストを保持するためのリスト保持構成要素401を含む。リスト提供構成要素402が、共通のメッセージ構造に少なくとも部分的に従う複数のメッセージのためのリストを1以上、複数のリストから提供する。リスト提供構成要素402は、リストに関する名前または識別子を提供するための識別子構成要素404と、共通のメッセージ構造の抽象表現のリストに関するメタデータを提供するためのメタデータ構成要素403とを含み得る。
【0083】
仲介構成要素130は、パブリッシュ側エンティティまたはサブスクライブ側エンティティからの要求を、提供された1つまたは複数のリストとマッチさせるための処理構成要素150を含み得る。処理構成要素150は、メッセージ構造を有するメッセージ、または1つまたは複数のメッセージの抽象表現を、提供されたリストと比較するため、およびマッチさせるためのマッチング構成要素413を含み得る。
【0084】
処理構成要素150は、パブリッシュ側エンティティからの要求を処理するためのパブリッシュ側エンティティ要求構成要素411を含む。また、処理構成要素150は、サブスクライブ側エンティティからの要求を処理するためのサブスクライブ側エンティティ要求構成要素412を含むことも可能である。
【0085】
また、処理構成要素150は、パブリッシュ側エンティティおよびサブスクライブ側エンティティからの要求のメッセージ構造に基づいてリストを進化させるための分割構成要素414およびマージ構成要素415を含むことも可能である。
【0086】
パブリッシュ構成要素410またはサブスクライブ構成要素410あるいはその両方410が、リストを介して共通のメッセージ構造に少なくとも部分的に準拠するメッセージを共有する。
【0087】
図6を参照すると、本発明の態様を実施するための例示的なシステムが、バス・システム503を介してメモリ要素に直接に、または間接的に結合された少なくとも1つのプロセッサ501を含むプログラム・コードを記憶することに、または実行することに、あるいはその両方に適したデータ処理システム500を含む。メモリ要素は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量ストレージ、ならびにコードが実行中に大容量ストレージから取り出されなければならない回数を減らすために少なくともいくらかのプログラム・コードの一時的ストレージを可能にするキャッシュ・メモリを含み得る。
【0088】
メモリ要素は、読取り専用メモリ(ROM)504およびランダム・アクセス・メモリ(RAM)505の形態でシステム・メモリ502を含み得る。基本入出力システム(BIOS)506が、ROM504に記憶され得る。オペレーティング・システム・ソフトウェア509などのシステム・ソフトウェア508を含め、ソフトウェア507がRAM505に記憶され得る。また、ソフトウェア・アプリケーション510がRAM505に記憶されることも可能である。
【0089】
システム500は、磁気ハードディスク・ドライブなどの一次ストレージ手段511と、磁気ディスク・ドライブおよび光ディスク・ドライブなどの二次ストレージ手段512とを含むことも可能である。これらのドライブ、およびこれらのドライブに関連するコンピュータ可読媒体は、システム500のためのコンピュータ実行可能命令、データ構造、プログラム・モジュール、および他のデータの不揮発性ストレージを提供する。ソフトウェア・アプリケーションは、一次ストレージ手段511および二次ストレージ手段512、ならびにシステム・メモリ502に記憶され得る。
【0090】
コンピューティング・システム500は、ネットワーク・アダプタ516を介した1つまたは複数の遠隔コンピュータに対する論理接続を使用するネットワーク化された環境において動作することが可能である。
【0091】
入出力デバイス513が、システムに直接に、または介在する入出力コントローラを介して結合され得る。ユーザは、キーボード、ポインティング・デバイス、または他の入力デバイス(例えば、マイクロフォン、ジョイスティック、ゲームパッド、サテライト・ディッシュ、スキャナ、または類似したもの)などの入力デバイスを介してシステム500にコマンドおよび情報を入力することが可能である。出力デバイスは、スピーカ、プリンタその他を含み得る。また、ディスプレイ・デバイス514も、ビデオ・アダプタ515などのインターフェースを介してシステム・バス503に接続される。
【0092】
図7を参照すると、概略図600が、メッセージ構造が電子メール・アドレスの正規表現の形態における抽象表現によって定義される、説明される方法を示す第1の例示的な実施形態を示す。
【0093】
パブリッシュ側エンティティ111が、「[^@]+@[^@]+」という形態の電子メール・アドレスに関する正規表現によって定義されるメッセージ構造を有するメッセージをパブリッシュすることを要求する601。
【0094】
仲介システム130が、リスト「トピックC」を、「[^@]+@[^@]+」というパブリッシュ側エンティティ111によって与えられる正規表現のメタデータで定義する602ことが可能である。仲介システム130は、それらのメッセージをパブリッシュすべきリスト「トピックC」の名前またはIDあるいはその両方を返す603ことが可能である。
【0095】
例えば、Sametimeアプリケーションなどのアプリケーションが、そのアプリケーションがそのアプリケーションのウインドウにおいて読み取ることができる電子メール・アドレスをパブリッシュすることを所望している場合、そのアプリケーションは、電子メール・アドレスにマッチするこの形態のリストにパブリッシュすることを所望し得る。リストが既に存在する(おそらく、Sametimeの別のインスタンスが実行されている)場合、リスト名が返されるが、さもなければ、リストが作成され、そのリストのIDがSametimeアプリケーションに返される。
【0096】
次に、パブリッシュ側エンティティ111が、エンティティ111の、このメッセージ構造のメッセージを、識別されたリスト、「トピックC」にパブリッシュする604ことが可能である。
【0097】
Notesアプリケーションなどのサブスクライブ側エンティティ121が、システムにおける他のアプリケーションから電子メール・アドレスをプルすることを所望することが可能である。
【0098】
サブスクライブ側エンティティ121は、仲介システム130に、仲介システム130が、Notes開発者が電子メール・アドレスとマッチするように書いた「.+?@[^.]+\.(com|net|org)」という正規表現とマッチするアイテムを有するリストを有するかどうかを尋ねる611。これは、パブリッシュ側エンティティの要求において使用される前述の正規表現とは異なることに留意されたい。
【0099】
仲介システム130は、仲介システム130が所有するリストと比較することによってマッチ612し、パブリッシュ側エンティティ111が電子メール・アドレスをパブリッシュしている「トピックC」に関するリストを見出す602。このリストにおける少なくとも1つのアイテムが、サブスクライブ側エンティティの開発者が提供した表現とマッチする。
【0100】
仲介システム130が、マッチするアイテムを有するリストが存在することを確認し613、仲介システム130は、サブスクライブ側エンティティ121をそのリストにサブスクライブする。
【0101】
いくらか後になって、パブリッシュ側エンティティ(例えば、Sametimeアプリケーション)が、電子メールを「トピックC」に関するリストにパブリッシュし、これにより、電子メールは、仲介システムによってサブスクライブ側エンティティ(例えば、Notesアプリケーション)にプッシュされる。今や、サブスクライブ側エンティティは、この電子メール・アドレス情報を、例えば、電子メールを作成するときに「TO」フィールドにおいて電子メール・アドレスをタイプ入力することをユーザが開始する場合に使用されるアドレスのサブスクライブ側エンティティの内部スタックにその情報をプッシュすることによって、サブスクライブ側エンティティが所望するとおりに使用することができる。オプションとして、サブスクライブ側エンティティは、この時点で追加のフィルタリング検査を実行して、整合性を確実にすることも可能である。
【0102】
図8を参照すると、概略図650が、XPath表現の形態の抽象表現によってメッセージ構造が定義される、説明される方法の第2の例示的な実施形態を示す。
【0103】
パブリッシュ側エンティティ111が、「/body/status=success」という形態のXPath表現によって定義されるメッセージ構造を有するメッセージをパブリッシュすることを要求する651。
【0104】
仲介システム130が、「/body/status=success」のパブリッシュ側エンティティ111によって提供されるXPath表現のメタデータでリスト「トピックA」を見出す、または定義する652ことが可能である。「/body/severity=severe」というXPath表現のメタデータを有する「トピックB」などの他のリスト653が定義されることも可能である。仲介システム130は、それらのメッセージをパブリッシュすべきリスト「トピックA」の名前またはIDあるいはその両方を返す653ことが可能である。
【0105】
次に、パブリッシュ側エンティティ111が、パブリッシュ側エンティティ111の、このメッセージ構造のメッセージを、識別されたリスト、「トピックA」にパブリッシュすることが可能である。
【0106】
サブスクライブ側エンティティ121が、「/body/status=success」という形態のメッセージをプルすることを所望することが可能である。
【0107】
サブスクライブ側エンティティ121が、仲介システム130に、仲介システム130が「/body/status=success」というXPath表現とマッチするアイテムを有するリストを有するかどうかを尋ねる661。
【0108】
仲介システム130が、XPath表現を、仲介システム130が所有するリストと比較することによってマッチさせ、パブリッシュ側エンティティ111がパブリッシュしている「トピックA」に関するリストを見出す652。
【0109】
仲介システム130が、マッチするアイテムを有するリストが存在することを確認し663、仲介システム130は、サブスクライブ側エンティティ121をそのリストにサブスクライブする。
【0110】
仲介システム130は、厳密にマッチする(フルセット)トピックだけでなく、部分的マッチを含むトピックも探索することが可能である。例えば、「/body/status=[success|failure]」に関するデータを包含するトピックが、例えば、「/body/status=success」を含む、すべての成功メッセージおよび失敗メッセージとマッチするデータを包含する。
【0111】
次に、説明される方法およびシステムのさらなる態様および変形が与えられる。
【0112】
パブリッシュ側エンティティおよびサブスクライブ側エンティティは、内部キューまたはトピックまたは命名規約その他あるいはその組合せをまったく認識していなくてもよい。パブリッシュ側エンティティおよびサブスクライブ側エンティティは単に、それらがどのようタイプのデータをパブリッシュしているか、およびどのようなタイプのデータにそれらが関心があるかを詳述する。残りのことは、仲介システムによってパブリッシュ側エンティティおよびサブスクライブ側エンティティにはトランスペアレントに実施され得る。
【0113】
一態様において、サブスクライブ側エンティティに、提供されたパターンと厳密に、またはサブセットとしてマッチする複数のトピックに対するサブスクリプションが返され得る。このことは、サブスクライブ側エンティティにはトランスペアレントに実行され得る。
【0114】
サブスクライバが何かを要求した場合、仲介システムは、リストにおけるすべてのアイテムを調べて、すべてのアイテムがマッチした場合に限り、サブスクライブされたリストとしてそれを返すことが可能であり、または各リストにおける最初のアイテムだけを調べて、それがマッチした場合、そのリストにサブスクライブすることが可能であり、またはリスト全体を調べるが、マッチが見出されるとすぐに停止して、それにサブスクライブすることが可能である。
【0115】
さらに、仲介システムは、サブスクリプションを抽象化することが可能であり、すなわち、前述のステップを行った後、仲介システムは、3つのトピックが、サブスクライバが求めているものとマッチすることを見出すことが可能である。この時点で、新たな「仮想トピック」が、サブスクライバが求めたメタデータにおける抽象表現を伴い、見出された3つのトピックに対するマッピングを伴って、作成されることが可能である。サブスクライブ側エンティティには、1つのトピックがマッチすることだけについて告げられるが、その装いの下で、3つのトピックがマッチされており、仲介システムが、この変換を扱っている。
【0116】
さらなる態様において、仲介システムが、リスト・データをブラウズして、リスト・データのどれだけの割合が「部分的マッチ」においてマッチするかを確かめることが可能である。
【0117】
サブスクライブ側エンティティが、「私は、パターンXに関心がある...」と述べることが可能である。仲介システムが、「私は、パターンXとマッチするトピックを有するが、パターンXがマッチするデータの共通集合(intersection)とマッチする、パターンYとマッチするトピックも有する...」と述べて応答することが可能である。
【0118】
仲介システムは、パターンYとマッチするデータをサンプリングして、サブスクライバのパターンとマッチするそのデータの尤度を評価することが可能であり、そのデータが所与の閾値を満たす場合、エンティティをそのデータにもサブスクライブするか否かの判定を行うことが可能である。
【0119】
サブスクリプションは(この事例において)、これら2つのトピックの合併(joining)である。フィルタ(後段で説明される)が、正確にマッチしないデータをフィルタリングして除くことが可能である。後の時点で、仲介システムが、このサブスクライバの関心対象であるすべてのアイテムがパターンXからであり、パターンYトピックからではないことを知ると、仲介システムは、仲介システムのサブスクリプション・トピックからパターンYを破棄することが可能である。
【0120】
さらなる態様において、フィルタが、仲介システム上、またはサブスクライブ側エンティティ上のメッセージ・データを処理して、マッチしないデータを「部分的マッチ」からフィルタリングして除くことが可能である。
【0121】
サブスクライブ側エンティティが、トピックAを求めるが、部分的マッチを許す場合、サブスクライブ側エンティティは、2000年より前の年にだけ関心がある可能性があるが、一般的な(年)トピックAにサブスクライブしている。この時点で、サブスクライブ側エンティティまたは仲介システム自体が、サブスクライブ側エンティティが関心がある特定のアイテムとマッチするこのトピックからのアイテムだけをプッシュするようにさらなるフィルタを実施することが可能である。
【0122】
例えば、サブスクライブ側エンティティが、「年<2000」とマッチするアイテムを求める。仲介システムは、年を包含するトピックについて知っており、したがって、前にフィルタを追加して(この特定のサブスクライブ側エンティティの場合に限って)、サブスクライブ側エンティティをこのトピックにサブスクライブする。そのトピックから、そのトピックのすべてのサブスクライブ側エンティティにアイテムがプッシュされるたびに、この特定の事例に関してフィルタがまず呼び出され、プッシュされているアイテムが「<2000」とマッチしない場合、そのアイテムは、この特定のサブスクライブ側エンティティに送られない。
【0123】
代替として、フィルタに関する処理は、仲介システムから受信するものすべてを信頼することは所望しない可能性があるサブスクライブ側エンティティ自体の側で行われてもよい。
【0124】
さらなる態様において、トピックが、部分的マッチの定義された閾値に達しない(すなわち、データの<50%がマッチする)と判定された場合、サブスクリプションは、除去され得る。
【0125】
サブスクライブ側エンティティがトピックAにサブスクライブするものと想定されたい。後の時点で、ますます多くのものがパブリッシュ側エンティティからそのトピック上にプッシュされた後、このトピックにおけるアイテムのうちの20%だけが、サブスクライブ側エンティティが実際に知りたいと意図していたものに実際に関与していることが見出される。サブスクライブ側エンティティは、オプションとして、会話のサブスクライブ側エンティティ側においてフィルタを追加して、サブスクライブ側エンティティの処理を実行する前に最終検査を行ってもよい。しかし、サブスクライブ側エンティティのいくらかの時間を節約するのに、それがサブスクライブ側エンティティにそれほど関心のないもの(例えば、50%という定義された閾値未満...)となるので、仲介システムが、このトピックからサブスクライブ側エンティティのサブスクリプションを単に除去してもよい。
【0126】
代替として、仲介システムは、パターン・マッチの統計分析に基づいて、トピックを適切に分割するロジックを有してもよい。
【0127】
仲介システムは、サブスクライバが、アイテムの何らかのサブセットにだけ関心があることを知っていることが可能であり、仲介システムは、このトピックからサブスクライバを単にアンサブスクライブする(unsubscriing)代わりに、トピックを2つに分割して、サブスクライバを、サブスクライバが実際に関心がある半分にサブスクライブすることも可能である。この場合も、このことはすべて、サブスクライバにはトランスペアレントに実行され得る。
【0128】
さらなる態様において、パブリッシュされると、「部分的マッチ」が識別されることが可能であり、共通のデータと重なり合うパターンが、同一のトピックを使用するようにマージされることが可能である。
【0129】
パブリッシュ側エンティティAが、トピックAにパブリッシュしており、パブリッシュ側エンティティBが、トピックBにパブリッシュしているものと想定されたい。
トピックA 1991 1992 1993
トピックB 2012 2045 1934 1249
【0130】
4桁の年の形態のデータの同一のセットであるらしいものに関して別々の2つのトピックが存在する。パブリッシュ側エンティティAが、トピックAとマッチするが、トピックBとはマッチしない(またはそのためにトピックAが作成された)[1〜9]{4}だけを求めることがあり得る。しかし、パブリッシュ側エンティティAは、トピックBも部分的にマッチする(0の数字を有する年だけはマッチしない)。この事例において、仲介システムは、仲介システムが4桁の年を探す周期的ジョブ実行を有することが可能であり、仲介システムが、これらの年だけを包含するトピックを見出した場合、仲介システムは、それらのトピックを一緒にマージして、新たなマージされたトピックCに代わりにパブリッシュするようパブリッシュ側エンティティAおよびBに告げながら、ストレージ・スペースを節約することが可能である。
【0131】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する1つのコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0132】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるように命令を保持すること、および記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または前述したものの任意の適切な組合せであり得るが、以上には限定されない。コンピュータ可読記憶媒体のより具体的な例の網羅的でないリストは、以下、すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能なプログラマブル読取り専用メモリ(EPROMもしくはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD−ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されているパンチ・カードもしくは溝の中の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適切な組合せを含む。本明細書で使用されるコンピュータ可読記憶媒体は、電波、または他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、または配線を介して伝送される電気信号などの一時的な信号そのものであると解釈されるべきではない。
【0133】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング・デバイスもしくは処理デバイスまたはその両方に、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレスネットワーク、あるいはその組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは、伝送銅ケーブル、伝送光ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいは以上の組合せを備えることが可能である。各コンピューティング・デバイスまたは各処理デバイスあるいはその両方におけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング・デバイスまたは処理デバイスあるいはその両方の内部のコンピュータ可読記憶媒体に記憶されるようにコンピュータ可読プログラム命令を転送する。
【0134】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似したプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せにおいて書かれたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、全部がユーザのコンピュータ上で実行されること、部分的にユーザのコンピュータ上で実行されること、スタンドアロンのソフトウェア・パッケージとして実行されること、部分的にユーザのコンピュータ上で、かつ部分的に遠隔コンピュータ上で実行されること、あるいは全部が遠隔コンピュータ上で、または遠隔サーバ上で実行されることが可能である。全部が遠隔コンピュータ上で、または遠隔サーバ上で実行されるシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されることが可能であり、あるいは接続は、外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)行われることが可能である。いくつかの実施形態において、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、本発明の態様を実行するために電子回路をパーソナライズすることが可能である。
【0135】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照して本明細書で説明される。流れ図またはブロック図あるいはその両方の各ブロック、ならびに流れ図またはブロック図あるいはその両方のブロックの組合せが、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。
【0136】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実行するための手段を生成するように、汎用プロセッサ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに供給されて、マシンを作り出すものであってよい。また、これらのコンピュータ可読プログラム命令は、命令を記憶しているコンピュータ可読記憶媒体が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実行する命令を含む製造品を備えるように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに特定の様態で機能するように指示することができるものであってもよい。
【0137】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実行するように、コンピュータ実装プロセスをもたらすべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル処理装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0138】
図における流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施様態のアーキテクチャ、機能、および動作を示す。これに関して、流れ図またはブロック図における各ブロックは、指定される論理機能を実施するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表すことが可能である。いくつかの代替の実施様態において、ブロックに記載される機能は、図に記載される順序を外れて行われてもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、または関与する機能に依存して、それらのブロックが、時として、逆の順序で実行されてもよい。また、ブロック図または流れ図あるいはその両方の各ブロック、ならびにブロック図または流れ図あるいはその両方のブロックの組合せは、指定される機能もしくは動作を実行する、または専用ハードウェアとコンピュータ命令の組合せを実行する専用のハードウェア・ベースのシステムによって実施され得ることも注目されよう。
【0139】
本発明の範囲を逸脱することなく、以上のことに改良および変更が行われることが可能である。
図1
図2
図3
図4
図5
図6
図7
図8