(57)【要約】パターンマッチング判定を効率よく行うために最適な、イベントパターンマッチングツリーを生成することを可能にするパターンマッチング装置を提供する。その装置は、第１の属性名及び属性値よりなる部分イベントパターンを含むイベントパターンを保持するイベントパターンテーブル保持部と、第２の属性名及び属性値よりなる属性を含むイベントとイベントパターンテーブル保持部に保持されているイベントパターンとに基づいて、第１の属性名に対応する第１のマッチング率を計測する第１のマッチング率計測部と、イベントパターンテーブル保持部に保持されているイベントパターンと第１のマッチング率とに基づいて、対応するマッチング率が低い第１の属性名を含む属性値一致判定インスタンスを上位に配置したイベントパターンマッチングツリーを生成するイベントパターンマッチングツリー生成部とを備える。
2011108619.tif 000002
【特許請求の範囲】
【請求項１】
第１の属性名及び属性値よりなる部分イベントパターンを含む少なくとも１つのイベントパターンを保持するイベントパターンテーブル保持部と、
第２の属性名及び属性値よりなる属性を含むイベントと前記イベントパターンテーブル保持部に保持されているイベントパターンとに基づいて、前記第１の属性名に対応する第１のマッチング率を計測する第１のマッチング率計測部と、
前記イベントパターンテーブル保持部に保持されているイベントパターンと前記第１のマッチング率とに基づいて、対応する前記マッチング率が相対的に低い前記第１の属性名を含む属性値一致判定インスタンスを相対的に上位に配置したイベントパターンマッチングツリーを生成するイベントパターンマッチングツリー生成部とを
含むパターンマッチング装置。
【請求項２】
前記第１のマッチング率計測部は、前記属性と、前記イベントパターンテーブル保持部に保持されている前記イベントパターンに含まれる一部または全ての前記部分イベントパターンとのマッチングを行い、当該マッチングの結果に基づいて前記第１の属性名毎に前記第１のマッチング率を計測する
ことを特徴とする請求項１記載のパターンマッチング装置。
【請求項３】
前記イベントパターンマッチングツリーに基づいて、前記イベントについてイベントマッチングを行うイベントパターンマッチング判定部を更に含み、
前記第１のマッチング率計測部は、前記イベントパターンマッチング判定部のマッチングの結果に基づいて、前記第１の属性名毎の前記第１のマッチング率を計測する
ことを特徴とする請求項１記載のパターンマッチング装置。
【請求項４】
前記第１のマッチング率に基づいて前記第１の属性名の内の少なくとも１つを選択するツリー再構築管理部と、
前記属性と前記ツリー再構築管理部が選択した属性名を含む部分イベントパターンとのマッチングを行い、当該マッチングの結果に基づいて前記第１の属性名毎に第２のマッチング率を計測する第２のマッチング率計測部とを更に含み、
前記イベントパターンマッチングツリー生成部は、前記第２のマッチング率に基づいて、前記イベントパターンマッチングツリーを生成する
ことを特徴とする請求項３記載のパターンマッチング装置。
【請求項５】
前記イベントパターンマッチング判定部と、
前記イベントパターンマッチングツリーのルートノードの属性値一致判定インスタンスに含まれる属性名に対応する第１のマッチング率を計測する前記第１のマッチング率計測部とを含む、複数のイベント処理部と、
複数のイベント処理部の内の１つを予め定められた基準に基づいて選択し、受信したイベントを当該イベント処理部に送信するイベント受信部と、
前記イベントパターンマッチングツリー生成部が生成したイベントパターンマッチングツリーを保持する全イベントパターンマッチングツリー保持部と、
各前記イベント処理部が計測した第１のマッチング率に基づいて、前記イベント処理部それぞれに送信するイベントパターンマッチングツリーを決定するツリー再構築管理部とを更に含む
ことを特徴とする請求項３記載のパターンマッチング装置。
【請求項６】
前記イベントパターンマッチングツリー生成部が生成したイベントマッチングツリーを保持するイベントパターンマッチングツリー保持部を有する
ことを特徴とする請求項１乃至５のいずれかに記載のパターンマッチング装置。
【請求項７】
第２の属性名及び属性値よりなる属性を含むイベントとイベントパターンテーブル保持部に保持されている第１の属性名及び属性値よりなる部分イベントパターンを含むイベントパターンとに基づいて、前記第１の属性名に対応するマッチング率を計測し、
前記イベントパターンテーブル保持部に保持されているイベントパターンと前記第１のマッチング率とに基づいて、対応する前記マッチング率が相対的に低い前記第１の属性名を含む属性値一致判定インスタンスを相対的に上位に配置したイベントパターンマッチングツリーを生成する
パターンマッチング方法。
【請求項８】
前記イベントパターンマッチングツリーに基づいて、前記イベントについてイベントマッチングを行い、
前記第１のマッチング率の計測は、前記イベントマッチングの結果に基づいて、前記第１の属性名毎の前記マッチング率を計測する
ことを特徴とする請求項７記載のパターンマッチング方法。
【請求項９】
第２の属性名及び属性値よりなる属性を含むイベントとイベントパターンテーブル保持部に保持されている第１の属性名及び属性値よりなる部分イベントパターンを含むイベントパターンとに基づいて、前記第１の属性名に対応するマッチング率を計測し、
前記イベントパターンテーブル保持部に保持されているイベントパターンと前記第１のマッチング率とに基づいて、対応する前記マッチング率が相対的に低い前記第１の属性名を含む属性値一致判定インスタンスを相対的に上位に配置したイベントパターンマッチングツリーを生成する、処理をコンピュータに実行させる
パターンマッチングプログラムを記録した媒体。
【請求項１０】
第１の属性名及び属性値よりなる部分イベントパターンを含む少なくとも１つのイベントパターンを保持するイベントパターンテーブル保持部と、
第２の属性名及び属性値よりなる属性を含むイベントと前記イベントパターンテーブル保持部に保持されているイベントパターンとに基づいて、前記第１の属性名に対応するマッチング率を計測する第１のマッチング率計測部と、
前記イベントパターンテーブル保持部に保持されているイベントパターンと前記第１のマッチング率とに基づいて、対応する前記マッチング率が相対的に低い前記第１の属性名を含む属性値一致判定インスタンスを相対的に上位に配置したイベントパターンマッチングツリーを生成するイベントパターンマッチングツリー生成部とを
含むパターンマッチングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パターンマッチング装置、パターンマッチング方法及びパターンマッチングシステムに関し、特にマッチングツリーを生成するパターンマッチング装置、パターンマッチング方法及びパターンマッチングシステムに関する。
【背景技術】
【０００２】
パターンマッチングに関して、さまざまな関連技術が知られている。
関連技術の一例として、イベントを処理する方法及びシステムが特許文献１に記載されている。特許文献１記載のイベントを処理する方法及びシステムは、１つまたは複数のイベントコンシューマから受け取った１つまたは複数のサブスクリプションに基づくフィルターツリーを有する。そして、特許文献１記載のイベントを処理する方法及びシステムは、このフィルターツリーを用いてイベント通知の照合を行い、その結果に基づいてイベント通知を渡すべきイベントコンシューマを絞り込む処理を行う。
関連技術の他の一例として、パブリッシュ／サブスクライブシステムにおけるイベントマッチングアルゴリズムが、非特許文献１に記載されている。非特許文献１に記載のイベントマッチングアルゴリズムは、イベントが発生したときに、それがどのサブスクリプションにマッチするかを判定するためのアルゴリズムである。
このアルゴリズムは、図５０に示すようなツリー構造のシステム９００で実現される。システム９００は、ノード９０１とエッジ９０４とから構成され、イベントがサブスクリプションにマッチするか否かを判断するための条件を表している。ノード９０１の内のリーフノード９０３は、サブスクリプション（ｓｕｂ１〜ｓｕｂ３）９０７を関連付けられている。リーフノード９０３以外の各ノード９０１は、イベントの構成要素である属性名９０５を付与されている。親のノード９０１と子のノード９０１とを結ぶエッジ９０４は、親のノード９０１に付与されている属性名（ａｔｔｒ１〜ａｔｔｒ３）９０５に対応する属性値９０６を付与されている。
あるイベントがシステム９００に入力されると、まず、システム９００はその入力されたイベントを参照し、ルートノード９０２に付与されている属性名９０５に対する属性値９０６を取得する。取得した属性値９０６がルートノード９０２とその子のノード９０１を接続するエッジ９０４に付与されている属性値９０６のいずれかと一致する場合には、システム９００は、その子のノード９０１及び孫のノード９０１をそれぞれ親のノード９０１及び子のノード９０１として、上述の処理を同様に行う。
こうして上述の処理を繰り返して実施することで最終的にリーフノード９０３に到達した場合、システム９００は、リーフノード９０３に関係付けられているサブスクリプション９０７を、該イベントがマッチしたサブスクリプション９０７であると判定する。尚、エッジ９０４に＊が付与されている場合、システム９００は、入力されたイベントの属性値９０６によらず、子ノード９０１へ処理を進める。
具体的な例として、「ＡＴＴＲ１＝Ｖ１’、ＡＴＴＲ２＝Ｖ２、ＡＴＴＲ３＝Ｖ３’」であるイベントが、図５０に示すシステム９００に入力された場合を以下に説明する。
まずシステム９００は、ルートノード９０２の属性名９０５「ＡＴＴＲ１」に対応するイベントの属性値９０６「Ｖ１’」を取得する。次に、システム９００は、属性値９０６「Ｖ１’」がエッジ９０４に付与されている属性値９０６と一致する子のノード９０１（属性名９０５が「ＡＴＴＲ２」）を検出する。
次に、システム９００は、このノード９０１の属性名９０５「ＡＴＴＲ２」に対応するイベントの属性値９０６「Ｖ２」を取得する。次に、システム９００は、属性値９０６「Ｖ２」がエッジ９０４に付与されている属性値９０６と一致する子のノード９０１（属性名９０５が「ＡＴＴＲ３」）を検出する。
次に、システム９００は、このノード９０１の属性名９０５「ＡＴＴＲ３」に対応するイベントの属性値９０６「Ｖ３’」を取得する。次に、システム９００は、属性値９０６「Ｖ３’」がエッジ９０４に付与されている属性値９０６のいずれとも一致しないことを検出する。そして、システム９００は、処理を終了する。
即ち、この例の場合、マッチするサブスクリプション９０７は１つもない。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−３１６６１０号公報
【非特許文献】
【０００４】
【非特許文献１】Ｍ．Ｋ．ＡＧＵＩＬＥＲＡ，Ｒ．Ｅ．ＳＴＲＯＭ，Ｄ．Ｃ．ＳＴＵＲＭＡＮ，Ｍ．ＡＳＴＬＥＹ，  ＡＮＤ  Ｔ．Ｄ．ＣＨＡＮＤＲＡ：“ＭＡＴＣＨＩＮＧ  ＥＶＥＮＴＳ  ＩＮ  Ａ  ＣＯＮＴＥＮＴ−ＢＡＳＥＤＳＵＢＳＣＲＩＰＴＩＯＮ  ＳＹＳＴＥＭ，”ＩＮ  ＰＲＯＣ．１８ＴＨ  ＡＮＮＵＡＬ  ＡＣＭ  ＳＹＭＰＯＳＩＵＭ  ＯＮ  ＰＲＩＮＣＩＰＬＥＳ  ＯＦＤＩＳＴＲＩＢＵＴＥＤ  ＣＯＭＰＵＴＩＮＧ，ＰＰ．５３−６１（１９９９）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した先行技術文献に記載された技術においては、イベント等のマッチング判定に使用するマッチングツリーの構成が最適ではない場合があるという問題点がある。
その理由は、イベントの属性名及び属性値とノード及びエッジとの一致する確率を考慮することなくフィルターツリー或いはツリー構造のシステムが構成されているためである。
即ち、ルートノード付近では属性値が一致するエッジが存在し、リーフノード付近で属性値が一致するエッジが存在しなくなるようにフィルターツリー或いはツリー構造のシステムが構成された場合、ルートノード付近で実行した属性値の一致判定処理は、結果的に無駄になってしまう。また、イベントがサブスクリプションにマッチしないという判定をするために要する時間が長くなってしまう。
本発明の目的は、上述した問題点を解決し、パターンマッチング判定を効率よく行うために最適な、イベントパターンマッチングツリーを生成するパターンマッチング装置、パターンマッチング方法及びパターンマッチングシステムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明のパターンマッチング装置は、第１の属性名及び属性値よりなる部分イベントパターンを含む少なくとも１つのイベントパターンを保持するイベントパターンテーブル保持部と、第２の属性名及び属性値よりなる属性を含むイベントと前記イベントパターンテーブル保持部に保持されているイベントパターンとに基づいて、前記第１の属性名に対応する第１のマッチング率を計測する第１のマッチング率計測部と、前記イベントパターンテーブル保持部に保持されているイベントパターンと前記第１のマッチング率とに基づいて、対応する前記マッチング率が相対的に低い前記第１の属性名を含む属性値一致判定インスタンスを相対的に上位に配置したイベントパターンマッチングツリーを生成するイベントパターンマッチングツリー生成部とを含む。
本発明のパターンマッチング方法は、第２の属性名及び属性値よりなる属性を含むイベントとイベントパターンテーブル保持部に保持されている第１の属性名及び属性値よりなる部分イベントパターンを含むイベントパターンとに基づいて、前記第１の属性名に対応する第１のマッチング率を計測する第１のマッチング率計測ステップと、前記イベントパターンテーブル保持部に保持されているイベントパターンと前記第１のマッチング率とに基づいて、対応する前記マッチング率が相対的に低い前記第１の属性名を含む属性値一致判定インスタンスを相対的に上位に配置したイベントパターンマッチングツリーを生成するステップとを含む。
本発明の媒体に記録されたプログラムは、第２の属性名及び属性値よりなる属性を含むイベントとイベントパターンテーブル保持部に保持されている第１の属性名及び属性値よりなる部分イベントパターンを含むイベントパターンとに基づいて、前記第１の属性名に対応する第１のマッチング率を計測し、前記イベントパターンテーブル保持部に保持されているイベントパターンと前記第１のマッチング率とに基づいて、対応する前記マッチング率が相対的に低い前記第１の属性名を含む属性値一致判定インスタンスを相対的に上位に配置したイベントパターンマッチングツリーを生成する処理をコンピュータに実行させる。
本発明のパターンマッチングシステムは、第１の属性名及び属性値よりなる部分イベントパターンを含む少なくとも１つのイベントパターンを保持するイベントパターンテーブル保持部と、第２の属性名及び属性値よりなる属性を含むイベントと前記イベントパターンテーブル保持部に保持されているイベントパターンとに基づいて、前記第１の属性名に対応する第１のマッチング率を計測する第１のマッチング率計測部と、前記イベントパターンテーブル保持部に保持されているイベントパターンと前記第１のマッチング率とに基づいて、対応する前記マッチング率が相対的に低い前記第１の属性名を含む属性値一致判定インスタンスを相対的に上位に配置したイベントパターンマッチングツリーを生成するイベントパターンマッチングツリー生成部とを含む。
【発明の効果】
【０００７】
本発明は、パターンマッチング判定を効率よく行うために最適な、イベントパターンマッチングツリーを生成することを可能にできるという効果がある。
【図面の簡単な説明】
【０００８】
【図１】本発明の第１の実施形態の構成を示すブロック図である。
【図２】本発明の第１乃至第５の実施形態におけるイベントの構造と内容の例とを示す図である。
【図３】本発明の第１乃至第５の実施形態におけるイベントパターンの構造と内容の例とを示す図である。
【図４】本発明の第１乃至第４の実施形態におけるイベントパターン登録要求の構造と内容の例とを示す図である。
【図５】本発明の第１乃至第４の実施形態におけるイベントパターン登録要求の構造と内容の例とを示す図である。
【図６】本発明の第１乃至第４の実施形態におけるイベントパターン削除要求の構造と内容の例とを示す図である。
【図７】本発明の第１乃至第４の実施形態におけるイベントパターン削除要求の構造と内容の例とを示す図である。
【図８】本発明の第１乃至第５の実施形態におけるイベントパターンマッチングツリーの構成を示す図である。
【図９】本発明の第１乃至第５の実施形態における属性値一致判定インスタンスの構造を示す図である。
【図１０】本発明の第１乃至第５の実施形態におけるハッシュテーブルの構造を示す図である。
【図１１】本発明の第１乃至第５の実施形態におけるイベント通知インスタンスの構造を示す図である。
【図１２】本発明の第１、第３及び第５の実施形態におけるマッチング率計測テーブルの構造を示す図である。
【図１３】本発明の第１乃至第５の実施形態におけるイベントパターンテーブルの構造と内容の例とを示す図である。
【図１４】本発明の第１の実施形態におけるイベントのマッチングの動作を示すフローチャートである。
【図１５】本発明の第１の実施形態におけるイベントのマッチングの動作を示すフローチャートである。
【図１６】本発明の第１の実施形態におけるイベントのマッチングの動作を示すフローチャートである。
【図１７】本発明の第１の実施形態におけるイベントのマッチングの動作を示すフローチャートである。
【図１８】本発明の第１の実施形態におけるイベントのマッチングの動作を示すフローチャートである。
【図１９】本発明の第１の実施形態におけるイベントパターンマッチングツリー１４１の構築及び再構築の動作を示すフローチャートである。
【図２０】本発明の第１の実施形態におけるイベントパターンマッチングツリー１４１の構築及び再構築の動作を示すフローチャートである。
【図２１】本発明の第１の実施形態におけるイベントパターンマッチングツリー１４１の構築及び再構築の動作を示すフローチャートである。
【図２２】本発明の第１乃至第５の実施形態におけるイベントパターンマッチングツリーの例を示す図である。
【図２３】本発明の第１の実施形態におけるマッチング率計測テーブルの例を示す図である。
【図２４】本発明の第１の実施形態におけるマッチング率計測テーブルの例を示す図である。
【図２５】本発明の第１の実施形態におけるイベントパターンマッチングツリーの例を示す図である。
【図２６】本発明の第１の実施形態におけるイベントパターンマッチングツリーの例を示す図である。
【図２７】本発明の第１の実施形態におけるイベントパターンマッチングツリーの例を示す図である。
【図２８】本発明の第１の実施形態におけるイベントパターンマッチングツリーの例を示す図である。
【図２９】本発明の第２の実施形態の構成を示すブロック図である。
【図３０】本発明の第２及び第３の実施形態におけるマッチング率計測テーブルの構造と内容の例を示す図である。
【図３１】本発明の第２及び第３の実施形態におけるマッチング率計測テーブルの例を示す図である。
【図３２】本発明の第２の実施形態におけるイベントパターン登録の動作を示すフローチャートである。
【図３３】本発明の第２の実施形態におけるイベントパターン削除の動作を示すフローチャートである。
【図３４】本発明の第２の実施形態における参照するインスタンスが属性値一致判定インスタンスである場合の属性一致判定の動作を示すフローチャートである。
【図３５】本発明の第２の実施形態における各属性名に対応するマッチング率を更新する動作を示すフローチャートである。
【図３６】本発明の第２の実施形態の効果を説明するための第１の実施形態におけるイベントパターンマッチングツリーと各属性名に対応するマッチング率の例を示す図である。
【図３７】本発明の第２の実施形態の効果を説明するための第１の実施形態におけるイベントパターンマッチングツリーと各属性名に対応するマッチング率の例を示す図である。
【図３８】本発明の第３の実施形態の構成を示すブロック図である。
【図３９】本発明の第３の実施形態におけるイベントパターンマッチングツリーの再構築を要求する動作を示すフローチャートである。
【図４０】本発明の第３の実施形態におけるマッチング率計測部がツリー再構築管理部からマッチング率計測開始要求を受信した場合の動作を示すフローチャートである。
【図４１】本発明の第３の実施形態におけるマッチング率計測部がツリー再構築管理部からマッチング率計測終了要求受信した場合の動作を示すフローチャートである。
【図４２】本発明の第３の実施形態におけるイベント受信部がマッチング率計測部からイベント送信開始要求を受信した場合の動作を示すフローチャートである。
【図４３】本発明の第３の実施形態におけるイベント受信部がマッチング率計測部からイベント送信終了要求を受信した場合の動作を示すフローチャートである。
【図４４】本発明の第３の実施形態におけるイベント受信時の動作を示すフローチャートである。
【図４５】本発明の第３の実施形態におけるマッチング率計測テーブルの例を示す図である。
【図４６】本発明の第４の実施形態の構成を示すブロック図である。
【図４７】本発明の第４の実施形態におけるツリー再構築管理部がイベントパターンマッチングツリーの再構築を要求する動作を示すフローチャートである。
【図４８】本発明の第４の実施形態におけるツリールート属性マッチング率計測部がマッチング率計測テーブル１３１を更新する動作を示すフローチャートである。
【図４９】本発明の第５の実施形態の構成を示すブロック図である。
【図５０】背景技術の非特許文献１のシステムの概念を示す図である。
【図５１】本発明のコンピュータ装置を用いた実施形態の構成を示すブロック図である。
【発明を実施するための形態】
【０００９】
次に、本発明の実施形態について図面を参照して詳細に説明する。
［第１の実施形態］
図１は、本発明の第１の実施形態の構成を示すブロック図である。
図１を参照すると、本実施形態は、イベントパターンマッチング判定システム（パターンマッチングシステムとも呼ばれる）１００、イベント入力者８２０、イベント受信者８３０及びイベントパターン管理者８４０から構成される。
イベントパターンマッチング判定システム１００は、イベントパターンマッチング判定部１１０、イベントパターンマッチングツリー生成部１２０、ツリー依存マッチング率計測部（マッチング率計測部とも呼ばれる）１３０、イベントパターンマッチングツリー保持部１４０、イベントパターンテーブル保持部１５０及びイベントパターン受信部１６０を含む。
イベント入力者８２０、イベント受信者８３０及びイベントパターン管理者８４０は、それぞれ、人（イベント入力者、イベント受信者、イベントパターン管理者）が操作する端末である。また、これらは予め与えられた指示によって動作する端末やサーバなどであってもよい。
図２は、イベント５００の構造と内容の例とを示す図である。イベント５００は、携帯端末、ＲＦ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ）タグ及びセンサなどから発生するデータである。イベント５００は、例えば、携帯端末を識別する端末ＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）と、そのデータが発生した時刻にその携帯端末が存在した場所と、そのデータが発生した時刻とを含むデータである。イベント５００に含まれる端末ＩＤ、場所及び時刻などのデータは、総称して属性５０１と呼ばれる。イベント５００は１つ以上の属性５０１を含む。
属性５０１の名称である「端末ＩＤ」、「場所」、「時刻」などは、属性名５０２と呼ばれる。また、属性５０１の属性名５０２に対する値である「ＩＤ１」、“東京都港区芝５丁目”、“１１００：２５”などは、属性値５０３と呼ばれる。イベント５００において、属性名５０２と対応する属性値５０３とを合わせたものは、上述の通り、属性５０１と呼ばれる。
図３は、イベントパターン５１０の構造と内容の例とを示す図である。イベントパターン５１０は、イベント５００の条件を指定するデータである。このイベントパターン５１０は、イベント５００を構成する属性５０１の属性名５０２の部分集合について、各属性名５０２に対する属性値５０３を有する。イベントパターン５１０において、属性名５０２と対応する属性値５０３とを合わせたものは、部分イベントパターン５１１と呼ばれる。
例えば、図３では、イベントパターン５１０は、イベント５００に含まれる属性名５０２の集合｛端末ＩＤ，場所，時刻｝の部分集合｛端末ＩＤ，場所｝について、部分イベントパターン５１１を有している。その部分イベントパターン５１１は、属性名５０２“端末ＩＤ”とこれに対応する属性値５０３“ＩＤ１”及び、属性名５０２“場所”とこれに対応する属性値５０３“東京都港区芝５丁目”である。
また、例えばイベントパターン５１０「Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都千代田区丸の内１丁目”）」における部分イベントパターン５１１は、「端末ＩＤ＝“ＩＤ１”」と「場所＝“東京都千代田区丸の内１丁目”」とである。
図４は、イベントパターン登録要求５１３の構造と内容の例とを示す図である。イベントパターン登録要求５１３は、引数としてイベントパターン５１０とイベントパターンＩＤ５１２とを含む。
図５は、イベントパターン登録要求５１４の構造と内容の例とを示す図である。イベントパターン登録要求５１４は、引数としてイベントパターン５１０を含む。
図６は、イベントパターン削除要求５１５の構造と内容の例とを示す図である。イベントパターン削除要求５１５は、引数としてイベントパターンＩＤ５１２を含む。
図７は、イベントパターン削除要求５１６の構造と内容の例とを示す図である。イベントパターン削除要求５１６は、引数としてイベントパターン５１０を含む。
イベントパターンマッチング判定部１１０は、イベントパターンマッチングツリー１４１（詳細は後述）を構成する各属性値一致判定インスタンス１４２に基づいて、イベント５００のイベントマッチングを行う。
イベントパターンマッチング判定部１１０は、イベント入力者８２０からイベント５００を受信する。また、イベントパターンマッチング判定部１１０は、イベントパターンマッチングツリー保持部１４０に保持されているイベントパターンマッチングツリー１４１に基づいて、受信したイベント５００のイベントマッチングを行う。更に、イベント５００がイベントパターン５１０にマッチした場合、イベントパターンマッチング判定部１１０は、そのイベント５００をイベント受信者８３０に送信する。
イベント５００がイベントパターン５１０にマッチするとは、このイベントパターン５１０に含まれる全ての属性名５０２に対する属性値５０３が、このイベント５００の同じ属性名５０２に対する属性値５０３と一致することを言う。
例えば、図３のイベントパターン５１０に含まれている属性名５０２“端末ＩＤ”に対する属性値５０３“ＩＤ１”は、図２のイベント５００に含まれている属性名５０２“端末ＩＤ”に対する属性値５０３“ＩＤ１”と一致する。かつ、図３のイベントパターン５１０に含まれている属性名５０２“場所”に対する属性値５０３“東京都港区芝５丁目”は、図２のイベント５００に含まれている属性名５０２“場所”に対する属性値５０３“東京都港区芝５丁目”と一致する。従って、図２のイベント５００は、図３のイベントパターン５１０にマッチする。図３のイベントパターン５１０はイベント５００に含まれている属性名５０２“時刻”に対する属性値５０３を含んでいない。このことは、イベント５００に含まれている属性名５０２“時刻”がどのような値でも、このイベント５００がこのイベントパターン５１０にマッチすることを意味している。
また、イベントパターンマッチング判定部１１０は、イベントマッチングを実行した場合に、その属性値一致判定インスタンス１４２の属性名フィールド１４３に保持している属性名５０２とマッチング結果とをツリー依存マッチング率計測部１３０に送信する。マッチング結果は、例えば、次に参照できるインスタンス５４０がある場合は「１」、ない場合は「０」である。尚、参照できるインスタンス５４０がある場合とは、属性値一致判定インスタンス１４２が受信したイベント５００の属性値５０３と同じ値が属性値一致判定インスタンス１４２のハッシュテーブル１４５のキー１４８に存在する場合、又は＊フィールド１４４がＮＵＬＬではない場合である。また、参照できる属性値一致判定インスタンス１４２がない場合とは、属性値一致判定インスタンス１４２が受信したイベント５００の属性値５０３と同じ値が属性値一致判定インスタンス１４２のハッシュテーブル１４５のキー１４８に存在しない場合で、かつ、＊フィールド１４４がＮＵＬＬの場合である。
イベントパターンマッチングツリー生成部１２０は、マッチング率計測テーブル１３１（詳細は後述）を参照し、マッチング率１３５が相対的に低い属性名１３２と同じ属性名５０２を持つインスタンス５４０を上位に配置したイベントパターンマッチングツリー１４１（詳細は後述）を生成する。続けて、イベントパターンマッチングツリー生成部１２０は、イベントパターンマッチングツリー保持部１４０に、この生成したイベントパターンマッチングツリー１４１を記録する。こうして、イベントパターンマッチングツリー生成部１２０は、イベントパターンマッチングツリー１４１を構築或いは再構築する。
尚、例えば、イベントパターンマッチングツリー生成部１２０がマッチングツリー１４１を再構築するタイミングは、一定時間ごとであってよい。また例えば、イベントパターンマッチングツリー生成部１２０は、ある属性名５０２に対応するマッチング率１３５が、イベントパターンマッチングツリー１４１のルートノード１９２に保持されている属性名５０２に対応するマッチング率１３５よりも低い場合に、イベントパターンマッチングツリー１４１を再構築するようにしてもよい。また例えば、イベントパターンマッチングツリー生成部１２０は、イベントパターンマッチングツリー１４１のルートノード１９２からリーフノード１９３に向かって、マッチング率１３５が低い順に属性名５０２が出現しないことを検知した場合に、イベントパターンマッチングツリー１４１を再構築するようにしてもよい。
イベントパターンマッチングツリー生成部１２０は、イベントパターン受信部１６０からイベントパターン登録要求５１４を受信したことを契機として、動作を開始する。
また、イベントパターンマッチングツリー生成部１２０は、イベントパターン受信部１６０からイベントパターン削除要求５１６を受信したことを契機として、動作を開始する。
ツリー依存マッチング率計測部１３０は、イベントパターン５１０に含まれている全ての属性名５０２の、マッチング率１３５を計測する。
マッチング率１３５の定義は、以下の通りである。イベントパターン５１０「Ｐ」の属性名５０２「Ａ」のマッチング率１３５は、Ｎ／ＮＡＬＬとなる。ＮＡＬＬは、マッチング率１３５を算出するための対象となるイベント５００の数である。Ｎは、対象となるイベント５００の内、イベントパターン５１０「Ｐ」の属性名５０２「Ａ」に対する属性値５０３が、そのイベント５００の属性名５０２「Ａ」に対する属性値５０３と一致したイベント５００の数である。具体例を示して説明する。例えば、マッチング率１３５を算出するための対象となるイベント５００が、「ＥＶＥＮＴ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都港区芝５丁目”、時刻＝“１０：１０：２５”）」、「ＥＶＥＮＴ（端末ＩＤ＝“ＩＤ２”、場所＝“東京都港区芝５丁目”、時刻＝“１０：１０：２５”）」の２つであるとする。この場合、例えば、図３のイベントパターン５１０おいて、属性名５０２「端末ＩＤ」の属性値５０３「ＩＤ１」は、１つ目のイベント５００にマッチして２つ目のイベント５００にマッチしない。従って、マッチング率計測テーブル１３１（詳細は後述）における属性名１３２「端末ＩＤ」のマッチング率１３５は、ＮＡＬＬ＝２、Ｎ＝１より、１／２となる。
ツリー依存マッチング率計測部１３０は、図１２に示すマッチング率計測テーブル１３１を保持する。
図１２は、マッチング率計測テーブル１３１の構造を示す図である。マッチング率計測テーブル１３１は、ツリー依存マッチング率計測部１３０の中の図示しないメモリに保存されている。マッチング率計測テーブル１３１は、属性名１３２、受信イベント数１３３、マッチングイベント数１３４及びマッチング率１３５をそれぞれ格納するカラムを含む任意の数の行からなる。
受信イベント数１３３は、イベントパターンマッチング判定部１１０から受信したマッチング結果の総数が格納される。この総数は、すなわち、属性名１３２と同じ値の属性名５０２を属性名フィールド１４３の値として持つ各属性値一致判定インスタンス１４２において、イベントマッチングを実行したイベント５００の総数である。
マッチングイベント数１３４は、イベントパターンマッチング判定部１１０から受信したマッチング結果が「１」であった場合の総数が格納される。この総数は、すなわち、属性名１３２と同じ値の属性名５０２を属性名フィールド１４３の値として持つ属性値一致判定インスタンス１４２において、イベントマッチングを実行したときに次に参照できるインスタンス５４０が存在した場合の数である。
マッチング率１３５は、マッチングイベント数１３４を受信イベント数１３３で割った値が格納されている。尚、マッチング率１３５は、必ずしもマッチング率計測テーブル１３１に含まれている必要はなく、マッチング率１３５を取得するときに、マッチングイベント数１３４を受信イベント数１３３で割って求められるようにしてもよい。
ツリー依存マッチング率計測部１３０は、イベントパターンマッチング判定部１１０から属性名５０２とマッチング結果とを受信する。また、ツリー依存マッチング率計測部１３０は、マッチング率計測テーブル１３１において、受信した属性名５０２と一致する属性名１３２を持つ行を検出する。続けて、イベントパターンマッチング判定部１１０から受信したマッチング結果が「１」の場合、ツリー依存マッチング率計測部１３０は、検出した行において、受信イベント数１３３とマッチングイベント数１３４の値をインクリメントする。続けて、ツリー依存マッチング率計測部１３０は、受信イベント数１３３とマッチングイベント数１３４の値をインクリメントした結果に対応して、マッチング率１３５を更新する。また、マッチング結果が「０」の場合、検出した行において、ツリー依存マッチング率計測部１３０は、受信イベント数１３３の値のみインクリメントする。続けて、ツリー依存マッチング率計測部１３０は、受信イベント数１３３の値をインクリメントした結果に対応して、マッチング率１３５を更新する。
イベントパターンマッチングツリー保持部１４０は、イベントパターンマッチングツリー１４１を保持する。
図８は、イベントパターンマッチングツリー保持部１４０に保持されるイベントパターンマッチングツリー１４１の構成を示す図である。
図８に示すように、イベントパターンマッチングツリー１４１は、ノード１９１を含むツリー構造を有する。ノード１９１の内のリーフノード１９３以外のノード１９１は、属性値一致判定インスタンス１４２である。また、ノード１９１の内のリーフノード１９３は、イベント通知インスタンス１４６である。イベントパターンマッチングツリー保持部１４０の初期状態は、属性値一致判定インスタンス１４２及びイベント通知インスタンス１４６が１つも存在せず、イベントパターンマッチングツリー１４１が存在しない状態である。以後、属性値一致判定インスタンス１４２とイベント通知インスタンス１４６とを区別しないで表す場合、これらを総称してインスタンス５４０とも呼ぶ。
図９は、属性値一致判定インスタンス１４２の構造を示す図である。属性値一致判定インスタンス１４２は、図９に示すように、属性名フィールド１４３と＊フィールド１４４とハッシュテーブル１４５とを含む。
属性名フィールド１４３は、その属性値一致判定インスタンス１４２が判定の対象とする属性名５０２を保持する。
＊フィールド１４４は、イベント５００のイベントマッチングの処理において、イベント５００に含まれる属性値５０３に係わらず次に参照できるインスタンス５４０へのポインタ１９４を保持する。
尚、イベントマッチングとは、イベント５００を構成する属性５０１が、予め登録されているイベントパターン５１０に含まれる部分イベントパターン５１１と一致するか否かを判定することである。
図１０は、ハッシュテーブル１４５の構造を示す図である。ハッシュテーブル１４５は、図１０に示すように、属性値５０３をキー１４８として、イベント５００の属性値５０３がキー１４８と同じ値だった場合に、次に参照できるインスタンス５４０へのポインタ１９４をバリュー１４９として保持する。
図１１は、イベント通知インスタンス１４６の構造を示す図である。イベント通知インスタンス１４６は、図１１に示すように、後述するイベントパターンＩＤ５１２からなるイベントパターンＩＤリスト１４７を保持する。イベントパターンマッチング判定部１１０は、イベント５００がイベントパターンＩＤ５１２で識別されるイベントパターン５１０にマッチした場合、それらのイベントパターンＩＤ５１２をイベント５００に付与し、イベント受信者８３０に通知する。
イベントパターンテーブル保持部１５０は、イベントパターンマッチング判定システム１００に登録されているイベントパターン５１０とそのイベントパターンＩＤ５１２とをイベントパターンテーブル１５１に保持する。
図１３は、イベントパターンテーブル１５１の構造と内容の例とを示す図である。イベントパターンテーブル１５１は、イベントパターン５１０とこのイベントパターン５１０を識別するイベントパターンＩＤ５１２とを格納するカラムを含む任意の数の行からなる。
図１３に示す例では、イベントパターンテーブル１５１は、以下の３つの行からなっている。第１の行は、イベントパターン５１０「Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都千代田区丸の内１丁目”）」とそのイベントパターンＩＤ５１２「１」とを含む。第２の行は、イベントパターン５１０「Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ２”、場所＝“東京都新宿区新宿３丁目”）」とそのイベントパターンＩＤ５１２「２」とを含む。第３の行は、イベントパターン５１０「Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都港区芝５丁目”）」とそのイベントパターンＩＤ５１２「３」とを含む。即ち、上述の３つのイベントパターン５１０が、イベントパターンマッチング判定システム１００に登録されている。
イベントパターン受信部１６０は、イベントパターン管理者８４０からイベントパターン登録要求５１３を受信したとき、イベントパターン登録要求５１３に含まれるイベントパターン５１０とイベントパターンＩＤ５１２とをイベントパターンテーブル保持部１５０のイベントパターンテーブル１５１に記録する。次に、イベントパターン受信部１６０は、イベントパターンマッチングツリー生成部１２０にイベントパターン登録要求５１４を送信する。
また、イベントパターン受信部１６０は、イベントパターン管理者８４０からイベントパターン削除要求５１５を受信する。このとき、イベントパターン受信部１６０は、イベントパターンテーブル保持部１５０のイベントパターンテーブル１５１を参照し、イベントパターン削除要求５１５に含まれるイベントパターンＩＤ５１２のイベントパターン５１０を取得する。次に、イベントパターン受信部１６０は、イベントパターンマッチングツリー生成部１２０に取得したイベントパターン５１０を含むイベントパターン削除要求５１６を送信する。次に、イベントパターン受信部１６０は、イベントパターンテーブル保持部１５０のイベントパターンテーブル１５１から、イベントパターン削除要求５１５に含まれるイベントパターンＩＤ５１２が記録されている行を削除する。
次に、図面を参照して本実施の形態の全体の動作について詳細に説明する。本実施形態の動作は、大きく２つに分けられる。１つの動作は、イベント５００のイベントマッチングの動作である。もう１つの動作は、イベントパターンマッチングツリー１４１の構築及び再構築の動作である。
まず、イベント５００のイベントマッチングの動作を説明する。
図１４は、イベント５００のイベントマッチングの動作の内、イベント５００がイベントパターンマッチング判定部１１０に入力されたときの動作を示すフローチャートである。
イベントパターンマッチング判定部１１０は、イベント５００が入力されると、イベントパターンマッチングツリー１４１のルートノード１９２のインスタンス５４０の存在を確認する（ステップＦ７０）。そして、ルートノード１９２のインスタンス５４０が存在する場合（ステップＦ７０でＹＥＳ）、イベントパターンマッチング判定部１１０は、ルートノード１９２のインスタンス５４０を参照して属性一致判定を実行する（ステップＦ７１）。また、ルートノード１９２のインスタンス５４０が存在しない場合（ステップＦ７０でＮＯ）、イベントパターンマッチング判定部１１０は、イベントマッチングを終了する。
ステップＦ７１の属性一致判定について詳細に説明する。
図１５及び図１６は、イベント５００のイベントマッチングの動作の内、参照するインスタンス５４０が属性値一致判定インスタンス１４２である場合の属性一致判定の動作を示すフローチャートである。
まず、イベントパターンマッチング判定部１１０は、参照しているインスタンス５４０が、属性値一致判定インスタンス１４２であるかイベント通知インスタンス１４６であるかを判定する（ステップＦ７９）。そして、属性値一致判定インスタンス１４２である場合（ステップＦ７９でＹＥＳ）、処理はステップＦ８０へ進む。また、イベント通知インスタンス１４６である場合（ステップＦ７９でＮＯ）、処理は図１７のステップＦ９０へ進む。
ステップＦ８０において、イベントパターンマッチング判定部１１０は、入力されたイベント５００から、参照している属性値一致判定インスタンス１４２の属性名５０２に対応する属性値５０３を取得する（ステップＦ８０）。
次に、イベントパターンマッチング判定部１１０は、この属性値５０３をキー１４８として、ハッシュテーブル１４５を参照し、バリュー１４９を取得する（ステップＦ８１）。
次に、イベントパターンマッチング判定部１１０は、この属性値５０３に対応するバリュー１４９、即ち次に参照できるインスタンス５４０へのポインタ１９４が存在するか否かを確認する（ステップＦ８２）。そして、そのポインタ１９４が存在する場合には（ステップＦ８２でＹＥＳ）処理はステップＦ８３に進み、そのポインタが存在しない場合には（ステップＦ８２でＮＯ）処理はステップＦ８７に進む。
ステップＦ８３において、イベントパターンマッチング判定部１１０は、ツリー依存マッチング率計測部１３０に属性名フィールド１４３の値とマッチングしたことを示す情報（例えば「１」）とを送信する（ステップＦ８３）。次に、イベントパターンマッチング判定部１１０は、ステップＦ８２で存在を確認したインスタンス５４０を参照して属性一致判定を実行する（ステップＦ８４）。尚、ステップＦ８４は、ステップＦ７９からステップＦ９０の処理を入れ子構造として動作する。
次に、イベントパターンマッチング判定部１１０は、参照している属性値一致判定インスタンス１４２の＊フィールド１４４に参照できるインスタンス５４０へのポインタ１９４が存在するか否かを確認する（ステップＦ８５）。そして、そのポインタ１９４が存在する場合（ステップＦ８５でＹＥＳ）、イベントパターンマッチング判定部１１０は、ステップＦ８５で存在を確認したインスタンス５４０を参照して属性一致判定を実行する（ステップＦ８６）。尚、ステップＦ８６は、ステップＦ７９からステップＦ９０の処理を入れ子構造として動作する。また、そのポインタ１９４が存在しない場合（ステップＦ８５でＮＯ）、処理は終了する。
ステップＦ８７において、イベントパターンマッチング判定部１１０は、＊フィールド１４４に参照できるインスタンス５４０へのポインタ１９４が存在するか否かを確認する（ステップＦ８７）。そして、そのポインタ１９４が存在する場合（ステップＦ８７でＹＥＳ）処理はステップＦ８８へ進み、そのポインタ１９４が存在しない場合には（ステップＦ８７でＮＯ）処理はステップＦ８９に進む。
ステップＦ８８において、イベントパターンマッチング判定部１１０は、ツリー依存マッチング率計測部１３０に属性名フィールド１４３の値とマッチングしたことを示す情報（例えば「１」）とを送信する（ステップＦ８８）。
ステップＦ８９において、イベントパターンマッチング判定部１１０は、ツリー依存マッチング率計測部１３０に属性名フィールド１４３の値とマッチングしなかったことを示す情報（例えば「０」）を送信する（ステップＦ８９）。
次に、イベントパターンマッチング判定部１１０は、ステップＦ８５またはステップＦ８７で存在することを確認したインスタンス５４０を参照して属性一致判定を実行する（ステップＦ８６）。
図１７は、イベント５００のイベントマッチングの動作の内、参照するインスタンス５４０がイベント通知インスタンス１４６である場合の属性一致判定の動作を示すフローチャートである。
ステップＦ９０において、イベントパターンマッチング判定部１１０は、入力されたイベント５００と、参照しているイベント通知インスタンス１４６に記録されているイベントパターンＩＤリスト１４７とのペアをイベント受信者８３０に通知する（ステップＦ９０）。
図１８は、イベント５００のイベントマッチングの動作の内、ツリー依存マッチング率計測部１３０において各属性名５０２に対応するマッチング率１３５を更新する動作を示すフローチャートである。
まず、ツリー依存マッチング率計測部１３０は、イベントパターンマッチング判定部１１０から属性名５０２とマッチング結果とを受信する（ステップＦａ０）。
次に、ツリー依存マッチング率計測部１３０は、マッチング結果を判定する（ステップＦａ１）。そして、マッチング結果が「１」の場合（ステップＦａ１でＹＥＳ）、処理はステップＦａ２へ進み、マッチング結果が「０」の場合（ステップＦａ１でＮＯ）、処理はステップＦａ３へ進む。
ステップＦａ２において、ツリー依存マッチング率計測部１３０は、マッチング率計測テーブル１３１においてインスタンス５４０の属性名５０２と同じ属性名１３２を持つ行の、受信イベント数１３３とマッチングイベント数１３４とをインクリメントし、マッチング率１３５を更新する（ステップＦａ２）。
ステップＦａ３において、ツリー依存マッチング率計測部１３０は、マッチング率計測テーブル１３１においてインスタンス５４０の属性名５０２と同じ属性名１３２を持つ行の、受信イベント数１３３をインクリメントし、マッチング率１３５を更新する（ステップＦａ３）。
次に、イベント５００のイベントマッチングの動作を、具体例を用いて説明する。
前提として、イベントパターンマッチング判定システム１００に、図２２に示すイベントパターンマッチングツリー１４１が登録されているとする。また同じく、ツリー依存マッチング率計測部１３０に、図２３に示すマッチング率計測テーブル１３１が保持されているとする。
また同じく、イベントパターンマッチング判定システム１００は、イベントパターンマッチング判定部１１０に、図２に示すイベント５００「ＥＶＥＮＴ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都港区芝５丁目”、時刻＝“１１００：２５”）」を受信したとする。
まず、図２に示すイベント５００を受信したイベントパターンマッチング判定部１１０は、図２２に示すようにイベントパターンマッチングツリー１４１のルートノード１９２の属性値一致判定インスタンス１４２「ＩＮＳ１」が存在することを確認する（ステップＦ７０）。次に、イベントパターンマッチング判定部１１０は、この属性値一致判定インスタンス１４２「ＩＮＳ１」を参照して属性一致判定を実行する（ステップＦ７１）。
ステップＦ７１において、イベントパターンマッチング判定部１１０は次のように動作する。
まず、イベントパターンマッチング判定部１１０は、インスタンス５４０「ＩＮＳ１」が、属性値一致判定インスタンス１４２であるかイベント通知インスタンス１４６であるかを判定する（ステップＦ７９）。そして、属性値一致判定インスタンス１４２であるので、処理はステップＦ８０へ進む。
次に、イベントパターンマッチング判定部１１０は、属性値一致判定インスタンス１４２「ＩＮＳ１」の属性名フィールド１４３に保持されている属性名５０２が「端末ＩＤ」なので、受信したイベント５００の属性名５０２「端末ＩＤ」の属性値５０３「ＩＤ１」を取得する（ステップＦ８０）。
次に、イベントパターンマッチング判定部１１０は、この属性値５０３「ＩＤ１」をキー１４８として、ハッシュテーブル１４５を参照する（ステップＦ８１）。そして、属性値一致判定インスタンス１４２「ＩＮＳ２」が存在するので（ステップＦ８２でＹＥＳ）、イベントパターンマッチング判定部１１０は、ツリー依存マッチング率計測部１３０に属性名５０２「端末ＩＤ」と「１」を送信する（ステップＦ８３）。
属性名５０２「端末ＩＤ」と「１」を受信したツリー依存マッチング率計測部１３０は、マッチング率計測テーブル１３１において、属性名１３２「端末ＩＤ」である行の受信イベント数１３３の値を「９９９」から「１０００」に、マッチングイベント数１３４の値を「４９９」から「５００」にインクリメントする。続けて、ツリー依存マッチング率計測部１３０は、マッチング率１３５を（５００／１０００＝）０．５に更新する（ステップＦａ２）。
次に、イベントパターンマッチング判定部１１０は、属性値一致判定インスタンス１４２「ＩＮＳ２」を参照して属性一致判定を実行する（ステップＦ８４）。
このステップＦ８４（ステップＦ８４（１）と呼ぶ）において、イベントパターンマッチング判定部１１０は、インスタンス５４０「ＩＮＳ２」が、属性値一致判定インスタンス１４２であるかイベント通知インスタンス１４６であるかを判定する（ステップＦ７９）。そして、インスタンス５４０「ＩＮＳ２」が属性値一致判定インスタンス１４２であるので、処理はステップＦ８０へ進む。
イベントパターンマッチング判定部１１０は、属性値一致判定インスタンス１４２「ＩＮＳ２」の属性名フィールド１４３に保持されている属性名５０２は「場所」なので、受信したイベント５００の属性名５０２「場所」の属性値５０３「東京都港区芝５丁目」を取得する（ステップＦ８０）。
次に、イベントパターンマッチング判定部１１０は、この値「東京都港区芝５丁目」をキー１４８として、ハッシュテーブル１４５を参照する（ステップＦ８１）。そして、イベント通知インスタンス１４６「ＩＮＳ６」が存在するので（ステップＦ８２でＹＥＳ）、イベントパターンマッチング判定部１１０は、ツリー依存マッチング率計測部１３０に属性名５０２「場所」と「１」を送信する（ステップＦ８３）。
属性名５０２「場所」と「１」を受信したツリー依存マッチング率計測部１３０は、マッチング率計測テーブル１３１において、属性名１３２「場所」である行の受信イベント数１３３の値を「４９９」から「５００」に、マッチングイベント数１３４の値を「１９９」から「２００」にインクリメントする。続けて、ツリー依存マッチング率計測部１３０は、マッチング率１３５を（２００／５００＝０．４）に更新する（ステップＦａ２）。
次に、イベントパターンマッチング判定部１１０は、属性値一致判定インスタンス１４２「ＩＮＳ６」を参照して属性一致判定を実行する（ステップＦ８４）。
このステップＦ８４（ステップＦ８４（２）と呼ぶ）において、イベントパターンマッチング判定部１１０は、インスタンス５４０「ＩＮＳ６」が、属性値一致判定インスタンス１４２であるかイベント通知インスタンス１４６であるかを判定する（ステップＦ７９）。そして、インスタンス５４０「ＩＮＳ６」がイベント通知インスタンス１４６であるので、処理はステップＦ９０へ進む。
イベントパターンマッチング判定部１１０は、イベント５００とイベント通知インスタンス１４６「ＩＮＳ６」に保持されているイベントパターンＩＤ５１２「３」をイベント受信者８３０に通知する（ステップＦ９０）。その後、ステップＦ８４（２）の処理は、終了する。
次に、イベントパターンマッチング判定部１１０は、参照している属性値一致判定インスタンス１４２「ＩＮＳ２」の＊フィールド１４４に参照できるインスタンス５４０へのポインタ１９４が存在するか否かを確認する（ステップＦ８５）。そして、そのポインタ１９４が存在しないので（ステップＦ８５でＮＯ）、ステップＦ８４（１）の処理は、終了する。
次に、イベントパターンマッチング判定部１１０は、参照している属性値一致判定インスタンス１４２「ＩＮＳ１」の＊フィールド１４４に参照できるインスタンス５４０が存在するか否かを確認する（ステップＦ８５）。そして、そのポインタ１９４が存在しないので（ステップＦ８５でＮＯ）、ステップＦ７１の処理は終了し、イベントマッチングの処理は終了する。
以上で、イベント５００のイベントマッチングの動作の説明を終了する。
次に、イベントパターンマッチングツリー１４１の構築及び再構築の動作を説明する。
初期状態、即ちイベントパターンマッチングツリー１４１が存在しない場合、イベントパターンマッチングツリー生成部１２０は、例えばイベントパターン登録要求５１３の受信を契機に、以下の動作によりイベントパターンマッチングツリー１４１を構築する。
イベントパターン登録要求５１３を受信した場合、イベントパターンマッチングツリー生成部１２０は、受信したイベントパターン５１０に基づいて属性値一致判定インスタンス１４２生成する。続けて、イベントパターンマッチングツリー生成部１２０は、イベントパターンＩＤリスト１４７に、受信したイベントパターン５１０のイベントパターンＩＤ５１２を含むイベント通知インスタンス１４６を生成する。続けて、イベントパターンマッチングツリー生成部１２０は、これら生成した属性値一致判定インスタンス１４２及びイベント通知インスタンス１４６をそれぞれルートノード１９２及びリーフノード１９３とするイベントパターンマッチングツリー１４１を生成する。
次に、イベントパターンマッチングツリー生成部１２０は、この生成したイベントパターンマッチングツリー１４１をイベントパターンマッチングツリー保持部１４０に記録する。
尚、イベントパターンマッチングツリー生成部１２０は、例えば、予め定められた時刻に到達したこと、予め定められた一定時間が経過したことを契機にイベントパターンマッチングツリー１４１の再構築を実行してもよい。或いは、イベントパターンマッチングツリー生成部１２０は、予め定められた数のイベントパターン５１０がイベントパターンテーブル１５１に登録されたこと等を契機にイベントパターンマッチングツリー１４１の再構築を実行してもよい。また、イベントパターンマッチングツリー生成部１２０は、例えば、イベントパターンマッチング判定システム１００が受信するイベント５００が少ない場合に、イベントパターンマッチングツリー１４１の再構築を実行してもよい。また、イベントパターンマッチングツリー生成部１２０は、例えばイベントパターンマッチングツリー１４１のルートノード１９２の保持する属性名５０２に対応するマッチング率１３５が閾値を越えた場合に、イベントパターンマッチングツリー１４１の再構築を実行してもよい。
これらの契機によりイベントパターンマッチングツリー生成部１２０がイベントパターンマッチングツリー１４１の再構築を実行する場合、その処理は後述する図１９のステップＦ１２から開始される。
既にイベントパターンマッチングツリー１４１が存在する場合、イベントパターンマッチングツリー生成部１２０は、以下の動作によりイベントパターンマッチングツリー１４１を再構築する。
以下、説明の便宜上、再構築前のイベントパターンマッチングツリー１４１を現イベントパターンマッチングツリー１４１と、再構築後のイベントパターンマッチングツリー１４１を新イベントパターンマッチングツリー１４１と呼ぶ。また、同じく説明の便宜上、ＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド、インスタンス５４０等に対して、“第１の”、“第２の”等の接頭語を付加して呼ぶ場合がある。更に、同じく説明の便宜上、マッチング率１３５、ＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド、処理のステップ等に対して、（１）、（２）等の接尾語を付加して呼ぶ場合がある。
図１９は、イベントパターンマッチングツリー生成部１２０がイベントパターンマッチングツリー１４１を再構築する動作の内、前処理とルートノード１９２のインスタンス５４０を生成する動作を示すフローチャートである。
イベントパターンマッチングツリー生成部１２０は、ツリー依存マッチング率計測部１３０のマッチング率計測テーブル１３１を参照し、マッチング率１３５（１）とマッチング率１３５（２）とを取得する。マッチング率１３５（１）は、現イベントパターンマッチングツリー１４１のルートノード１９２の属性値一致判定インスタンス１４２の属性名フィールド１４３に保持されている属性名５０２のマッチング率１３５である。また、マッチング率１３５（２）は、マッチング率計測テーブル１３１に含まれるマッチング率１３５の内の最も低いマッチング率１３５である（ステップＦ１０）。
次に、イベントパターンマッチングツリー生成部１２０は、マッチング率１３５（１）とマッチング率１３５（２）とを比較する（ステップＦ１１）。
そして、マッチング率１３５（１）とマッチング率１３５（２）とが等しい場合（ステップＦ１１でＹＥＳ）、処理は終了する。即ち、マッチング率１３５（１）がマッチング率１３５（２）である場合はイベント処理効率のよいツリー構成となっているため、イベントパターンマッチングツリー生成部１２０は、ツリーの再構築を行わない。
一方、マッチング率１３５（１）とマッチング率１３５（２）とが等しくない場合（ステップＦ１１でＮＯ）、処理は、ステップＦ１２へ進む。即ち、イベントパターンマッチングツリー生成部１２０は、新しいイベントパターンマッチングツリー１４１を再構築する。
ステップＦ１２において、イベントパターンマッチングツリー生成部１２０は、ツリー依存マッチング率計測部１３０のマッチング率計測テーブル１３１を参照し、マッチング率１３５の低い順に属性名１３２を並べて、属性名リスト一時保持フィールドに記録する（ステップＦ１２）。尚、マッチング率１３５が同じ属性名１３２が複数ある場合は、イベントパターンマッチングツリー生成部１２０は、マッチング率１３５を参照した順に属性名１３２を並べる。即ち、属性名リスト一時保持フィールドは、イベントパターンマッチング判定システム１００に登録されているイベントパターン５１０に使用されている属性名１３２即ち属性名５０２を、マッチング率１３５が低い順に保持する。
次に、イベントパターンマッチングツリー生成部１２０は、イベントパターンテーブル保持部１５０に記録されている全てのイベントパターン５１０と、そのイベントパターンＩＤ５１２とを取得する。続けて、イベントパターンマッチングツリー生成部１２０は、取得したイベントパターン５１０と対応するイベントパターンＩＤ５１２とをペアとし、イベントパターンリスト一時保持フィールドに記録する（ステップＦ１３）。即ち、イベントパターンリスト一時保持フィールドは、イベントパターンマッチング判定システム１００に登録されている全てのイベントパターン５１０と、そのイベントパターンＩＤ５１２とのペアを保持する。
次に、イベントパターンマッチングツリー生成部１２０は、イベントパターンテーブル保持部１５０から全てのイベントパターンＩＤ５１２を取得し、第１のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドに記録する（ステップＦ１４）。
尚、ＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドは、インスタンス５４０毎に順次生成され、このインスタンス５４０自身（イベント通知インスタンス１４６の場合）またはその子インスタンス５４０（属性値一致判定インスタンス１４２の場合）に登録されるイベントパターンＩＤ５１２の集合を保持する。
次に、イベントパターンマッチングツリー生成部１２０は、属性名一時保持フィールドを参照し、最もマッチング率１３５が低い属性名５０２を属性名フィールド１４３の値とした属性値一致判定インスタンス１４２である第１のインスタンス５４０を生成する。続けて、イベントパターンマッチングツリー生成部１２０は、生成した属性値一致判定インスタンス１４２を新イベントパターンマッチングツリー１４１にルートノード１９２として記録する（ステップＦ１５）。
次に、イベントパターンマッチングツリー生成部１２０は、第１のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドの値と生成した第１のインスタンス５４０とに基づいて、インスタンス更新を実行する（ステップＦ１６）。
図２０及び図２１は、ステップＦ１６のインスタンス更新処理の詳細動作を示すフローチャートである。
まず、イベントパターンマッチングツリー生成部１２０は、第１のインスタンス５４０が属性値一致判定インスタンス１４２あるか否かを確認する（ステップＦ２０）。そして、第１のインスタンス５４０が属性値一致判定インスタンス１４２である場合（ステップＦ２０でＹＥＳ）、処理はステップＦ２１へ進む。また、第１のインスタンス５４０が属性値一致判定インスタンス１４２ではない場合（ステップＦ２０でＮＯ）、すなわちイベント通知インスタンス１４６である場合、処理はステップＦ２８へ進む。
ステップＦ２１において、イベントパターンマッチングツリー生成部１２０は、第１のインスタンス５４０である属性値一致判定インスタンス１４２の属性名フィールド１４３に登録されている属性名５０２を抽出する。続けて、イベントパターンマッチングツリー生成部１２０は、この抽出した属性名５０２に基づいて、イベントパターンリスト一時保持フィールドに存在する各イベントパターン５１０の属性値５０３を抽出する。更に続けて、イベントパターンマッチングツリー生成部１２０は、抽出した属性値５０３の内の特異な属性値５０３毎に該当するイベントパターンＩＤ５１２を格納した第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドを生成する（ステップＦ２１）。
次に、イベントパターンマッチングツリー生成部１２０は、ＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドそれぞれについて、インスタンス５４０の情報を更新或いは、新しいインスタンス５４０を生成（ステップＦ２２〜ステップＦ２６）する。
次に、イベントパターンマッチングツリー生成部１２０は、生成したインスタンス５４０に対してインスタンス更新を行う（ステップＦ２７）。尚、ステップＦ２７は、図２０及び図２１のフローチャートに示すインスタンス更新処理を入れ子構造として動作する。
次に、イベントパターンマッチングツリー生成部１２０は、ステップＳ２１で生成した第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド全てについて処理を実行済みであるか否かを確認する（ステップＦ２９）。そして、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド全てについて処理を実行済みの場合（ステップＦ２９でＹＥＳ）、処理は、終了する。また、処理を実行済みでない第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドがある場合（ステップＦ２９でＮＯ）、処理は、ステップＦ２２へ戻る。
ステップＦ２８において、イベントパターンマッチングツリー生成部１２０は、第１のインスタンス５４０であるイベント通知インスタンス１４６のイベントパターンＩＤリスト１４７に、指定されたＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドに示されるイベントパターンＩＤ５１２を追加する（ステップＦ２８）。その後、処理は終了する。
次に、ステップＦ２１〜ステップＦ２７の処理を具体例を示して詳細に説明する。
まず、イベントパターンマッチングツリー生成部１２０は、第１のインスタンス５４０である属性値一致判定インスタンス１４２の属性名フィールド１４３に登録されている属性名５０２を抽出する。続けて、イベントパターンマッチングツリー生成部１２０は、この抽出した属性名５０２に対応する、イベントパターンリスト一時保持フィールドに存在する各イベントパターン５１０の属性値５０３を抽出する。更に続けて、イベントパターンマッチングツリー生成部１２０は、抽出した属性値５０３の内の異なる属性値５０３毎に第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドを生成する。そして、イベントパターンマッチングツリー生成部１２０は、生成した第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドに、該当するイベントパターンＩＤ５１２を格納する。尚、イベントパターンマッチングツリー生成部１２０は、イベントパターン５１０内に第１のインスタンス５４０の属性名フィールド１４３の属性名５０２に対応する属性値５０３が存在しないイベントパターン５１０用にも、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドを生成する。そして、イベントパターンマッチングツリー生成部１２０は、生成した第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドに該当するイベントパターンＩＤ５１２を格納する（ステップＦ２１）。
上述のステップＦ２１の動作について具体例を示して説明する。
例えば、イベントパターン一時保持フィールドに以下の４つのイベントパターンが格納されているとする。
｛１、Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都千代田区丸の内１丁目”）｝。
｛２、Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ２”、場所＝“東京都新宿区新宿３丁目”）｝。
｛３、Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都港区芝５丁目”）｝。
｛４、Ｐａｔｔｅｒｎ（場所＝“東京都渋谷区道玄坂１丁目”）｝。
更に、属性値一致判定インスタンス１４２の属性名フィールド１４３に格納されている属性名５０２が「端末ＩＤ」であるとする。
このとき、イベントパターンマッチングツリー生成部１２０は、それぞれ以下の値を持つ、３つの第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドを生成する。
“１，３”（属性名５０２「端末ＩＤ」が“ＩＤ１”であるイベントパターンＩＤ５１２の集合）。
“２”（属性名５０２「端末ＩＤ」が“ＩＤ２”であるイベントパターンＩＤ５１２の集合）。
“４”（属性名５０２「端末ＩＤ」の属性値５０３がないイベントパターンＩＤ５１２の集合）。
次に、イベントパターンマッチングツリー生成部１２０は、生成した第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドそれぞれについて、ステップＦ２２からステップＦ２７の処理を行う。
ステップＦ２２において、イベントパターンマッチングツリー生成部１２０は、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドに含まれるイベントパターンＩＤ５１２に対応するイベントパターン５１０について、属性名リスト一時保持フィールドを参照して、第１のインスタンス５４０に含まれる属性名５０２の次にマッチング率１３５が低い属性名５０２の存在を確認する（ステップＦ２２）。このような属性名５０２が存在する場合（ステップＦ２２でＹＥＳ）、イベントパターンマッチングツリー生成部１２０は、第２のインスタンス５４０として属性値一致判定インスタンス１４２を生成し、ステップＦ２２で存在を確認した属性名５０２を属性名フィールド１４３に格納する（ステップＦ２４）。
また、このような属性名５０２が存在しない場合（ステップＦ２３でＮＯ）、イベントパターンマッチングツリー生成部１２０は、第２のインスタンス５４０としてイベント通知インスタンス１４６を生成する（ステップＦ２５）。
次に、イベントパターンマッチングツリー生成部１２０は、ステップＦ２４或いはステップＦ２５で生成した第２のインスタンス５４０をイベントパターンマッチングツリー１４１に記録する（ステップＦ２６）。
具体的には、この第２のインスタンス５４０にステップＦ２２で存在を確認した属性名５０２が存在する場合、イベントパターンマッチングツリー生成部１２０は、第１の属性値一致判定インスタンス１４２のハッシュテーブル１４５にこの属性名５０２の属性値５０３を値とするキー１４８を生成し、バリュー１４９にこの第２のインスタンス５４０へのポインタ１９４を記録する。また、第２の属性値一致判定インスタンス１４２にステップＦ２２で存在を確認した属性名５０２が存在しない場合、イベントパターンマッチングツリー生成部１２０は、第１の属性値一致判定インスタンス１４２の＊フィールド１４４にこの第２のインスタンス５４０へのポインタ１９４を記録する。
また、この第２のインスタンス５４０がイベント通知インスタンス１４６である場合、イベントパターンマッチングツリー生成部１２０は、このイベント通知インスタンス１４６に対応するＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドを参照する。続けて、イベントパターンマッチングツリー生成部１２０は、このＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドのイベントパターンＩＤ５１２に含まれるイベントパターン５１０を参照する。続けて、イベントパターンマッチングツリー生成部１２０は、このイベントパターン５１０における、ステップＦ２２で存在を確認した属性名５０２の属性値５０３を値とするキー１４８を生成し、バリュー１４９にこの第２のインスタンス５４０へのポインタ１９４を記録する。
次に、イベントパターンマッチングツリー生成部１２０は、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドと第２のインスタンス５４０を指定して、インスタンス更新を実行する（ステップＦ２７）。
次に、上述のイベントパターンマッチングツリー１４１再構築の動作を具体例で説明する。
尚、前提として、イベントパターンマッチングツリー保持部１４０は、図２２に示すイベントパターンマッチングツリー１４１を保持しているとする。
同じく、イベントパターンテーブル保持部１５０が保持するイベントパターンテーブル１５１は図１３に示す状態であるとする。
また同じく、ツリー依存マッチング率計測部１３０が保持するマッチング率計測テーブル１３１は図２４の状態であるとする。
また、イベントパターンマッチングツリー生成部１２０は、例えば一日に１回、イベントパターンマッチングツリー１４１の再構築を行うとする。また例えば、再構築する頻度は一日に１回と限らず、ツリー依存マッチング率計測部１３０のある属性名１３２のマッチング率１３５が閾値に到達したことをトリガーとして再構築を行ったり、イベント入力者８２０からのイベント入力頻度が閾値に到達したことをトリガーとして再構築を行ったりしてもよい。
イベントパターンマッチングツリー生成部１２０は、ツリー依存マッチング率計測部１３０のマッチング率計測テーブル１３１（図２４）を参照し、イベントパターンマッチングツリー１４１のルートノード１９２のインスタンス５４０の属性名フィールド１４３の属性名５０２である「端末ＩＤ」のマッチング率１３５「０．５００」と、マッチング率計測テーブル１３１上で最も低いマッチング率１３５である「０．４００」とを取得する（ステップＦ１０）。
属性名１３２「端末ＩＤ」のマッチング率１３５とマッチング率計測テーブル１３１上で最も低いマッチング率１３５とは等しくないため（ステップＦ１１でＮＯ）、イベントパターンマッチングツリー生成部１２０は、イベントパターンマッチングツリー１４１を再構築する。
まずイベントパターンマッチングツリー生成部１２０は、ツリー依存マッチング率計測部１３０のマッチング率計測テーブル１３１を参照して、マッチング率１３５の低い順に属性名１３２を並べ、属性名リスト一時保持フィールドに記録する（ステップＦ１２）。このとき属性名リスト一時保持フィールドは「｛場所、端末ＩＤ｝」となる。
次に、イベントパターンマッチングツリー生成部１２０は、イベントパターンテーブル保持部１５０からイベントパターン５１０とそのイベントパターンＩＤ５１２とのペアを全て取得する。続けて、イベントパターンマッチングツリー生成部１２０は、取得したペアをイベントパターンリスト一時保持フィールドに記録する（ステップＦ１３）。
本例の前提では、イベントパターンリスト一時保持フィールドは、「｛１、Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都千代田区丸の内１丁目”）｝、｛２、Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ２”、場所＝“東京都新宿区新宿３丁目”）｝、｛３、Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都港区芝５丁目”）｝」となる。
次に、イベントパターンマッチングツリー生成部１２０は、イベントパターンテーブル保持部１５０から全てのイベントパターンＩＤ５１２を取得し、第１のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドを記録する（ステップＦ１４）。本例の前提では、第１のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドは、「｛１，２，３｝」となる。
次に、イベントパターンマッチングツリー生成部１２０は、属性名一時保持フィールドを参照し、最もマッチング率１３５が低い属性名５０２である「場所」を属性名フィールド１４３の値とした第１のインスタンス５４０として、図２５に示すような属性値一致判定インスタンス１４２「ＩＮＳ１」を生成する（ステップＦ１５）。この属性値一致判定インスタンス１４２「ＩＮＳ１」は、新イベントパターンマッチングツリー１４１のルートノード１９２である。
次に、イベントパターンマッチングツリー生成部１２０は、第１のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドの値「｛１，２，３｝」と生成した第１のインスタンス５４０「属性値一致判定インスタンス１４２「ＩＮＳ１」」とに基づいて、インスタンス更新を実行する（ステップＦ１６）。
ステップＦ１６の最初のステップＦ２０において、イベントパターンマッチングツリー生成部１２０は、第１のインスタンス５４０が属性値一致判定インスタンス１４２あるか否かを確認する。そして、第１のインスタンス５４０が属性値一致判定インスタンス１４２「ＩＮＳ１」なので（ステップＦ２０でＹＥＳ）、処理はステップＦ２１へ進む。
ステップＦ２１において、イベントパターンマッチングツリー生成部１２０は、この属性値一致判定インスタンス１４２「ＩＮＳ１」の属性名フィールド１４３に登録されている属性名５０２「場所」について、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドを生成する。
第１のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドに含まれるイベントパターンＩＤ５１２「１」、「２」、「３」に対応する各イベントパターン５１０の属性名５０２「場所」の属性値５０３は、それぞれ異なっている。従って、イベントパターンマッチングツリー生成部１２０は、以下の３つの、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールドを生成する。
属性値５０３“東京都千代田区丸の内１丁目”に対応する第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（１）。
属性値５０３“東京都新宿区新宿３丁目”に対応する第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（２）。
属性値５０３“東京都港区芝５丁目”に対応する第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（３）。
そして、イベントパターンマッチングツリー生成部１２０は、該当するイベントパターンＩＤ５１２をこれらの第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（１）、（２）及び（３）に格納する。具体的には、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（１）、（２）及び（３）と格納されるイベントパターンＩＤ５１２対応は、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（１）＝｛１｝、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（２）＝｛２｝、及び第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（３）＝｛３｝である。（ステップＦ２１）。
次に、イベントパターンマッチングツリー生成部１２０は、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（１）に含まれるイベントパターンＩＤ５１２に対応するイベントパターン５１０について、属性名リスト一時保持フィールドを参照して、属性値一致判定インスタンス１４２「ＩＮＳ１」の属性名５０２「場所」の次にマッチング率１３５が低い属性名５０２の存在を確認する（ステップＦ２２）。
第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（１）に含まれるイベントパターンＩＤ５１２に対応するイベントパターン５１０に属性名５０２「端末ＩＤ」が存在するので（ステップＦ２２でＹＥＳ）、イベントパターンマッチングツリー生成部１２０は、図２６に示す第２のインスタンス５４０である属性値一致判定インスタンス１４２「ＩＮＳ２」を生成する。続けて、イベントパターンマッチングツリー生成部１２０は、ステップＦ２２で存在を確認した属性名５０２「端末ＩＤ」をこの属性値一致判定インスタンス１４２「ＩＮＳ２」の属性名フィールド１４３に格納する（ステップＦ２４）。
次に、イベントパターンマッチングツリー生成部１２０は、属性値一致判定インスタンス１４２（ＩＮＳ１）のハッシュテーブル１４５にキー「東京都千代田区丸の内１丁目」とそのバリュー「ＩＮＳ２」とを記録する（ステップＦ２６）。この時点で、新イベントパターンマッチングツリー１４１は、図２６に示される状態となる。
次に、イベントパターンマッチングツリー生成部１２０は、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（１）と属性値一致判定インスタンス１４２「ＩＮＳ２」に基づいて、インスタンス更新（ステップＦ２７）を実行する。
ステップＦ２７（これをステップＦ２７（１）とする）において、イベントパターンマッチングツリー生成部１２０、は、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（１）及び属性値一致判定インスタンス１４２「ＩＮＳ２」を、それぞれ第１のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド及び第１のインスタンス５４０として、次のように動作する。
指定された第１のインスタンス５４０が属性値一致判定インスタンス１４２「ＩＮＳ２」なので（ステップＦ２０でＹＥＳ）、イベントパターンマッチングツリー生成部１２０は、この属性値一致判定インスタンス１４２「ＩＮＳ２」の属性名フィールド１４３に登録されている属性名５０２「端末ＩＤ」を抽出する。続けて、イベントパターンマッチングツリー生成部１２０は、その属性名５０２「端末ＩＤ」について、第１のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド「｛１｝」に含まれるイベントパターンＩＤ５１２「１」に対応するイベントパターン５１０の属性名５０２「端末ＩＤ」の属性値５０３「ＩＤ１」に対する、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（４）を生成する。続けて、イベントパターンマッチングツリー生成部１２０は、該当するイベントパターンＩＤ５１２「１」をこのＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（４）に格納する。具体的には、それは、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（４）＝｛１｝である。（ステップＥ２１）。
次に、イベントパターンマッチングツリー生成部１２０は、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（４）に含まれるイベントパターンＩＤ５１２に対応するイベントパターン５１０について、属性値一致判定インスタンス１４２「ＩＮＳ２」の属性名５０２「端末ＩＤ」の次にマッチング率１３５が低い属性名５０２は存在を確認する（ステップＦ２２）。
第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（４）に含まれるイベントパターンＩＤ５１２「１」に対応するイベントパターン５１０に、属性名５０２「端末ＩＤ」の次にマッチング率１３５が低い属性名５０２は、存在しない（ステップＦ２２でＮＯ）。そこで、イベントパターンマッチングツリー生成部１２０は、図２７に示す第２のインスタンス５４０であるイベント通知インスタンス１４６「ＩＮＳ３」を生成する（ステップＦ２５）。
次に、イベントパターンマッチングツリー生成部１２０は、属性値一致判定インスタンス１４２（ＩＮＳ２）のハッシュテーブル１４５にキー「ＩＤ１」とそのバリュー「ＩＮＳ３」とを記録する（ステップＦ２６）。この時点で、新イベントパターンマッチングツリー１４１は、図２７に示される状態となる。
次に、イベントパターンマッチングツリー生成部１２０は、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（４）及びイベント通知インスタンス１４６「ＩＮＳ３」に基づいて、インスタンス更新（ステップＦ２７）を実行する。
ステップＦ２７（これをステップＦ２７（２）とする）において、イベントパターンマッチングツリー生成部１２０は、第２のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（４）及びイベント通知インスタンス１４６「ＩＮＳ３」を、それぞれ第１のＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド及び第１のインスタンス５４０として、次のように動作する。
指定された第１のインスタンス５４０がイベント通知インスタンス１４６「ＩＮＳ３」なので（ステップＦ２０でＮＯ）、イベントパターンマッチングツリー生成部１２０は、このイベント通知インスタンス１４６に対応するイベントパターンＩＤリスト１４７に「１」を記録する。そして、ステップＦ２７（２）の処理は、終了する。この時点で、新しいイベントパターンマッチングツリー１４１は、図２７に示される状態となる。
また、以上で、ステップＦ２７（１）が終了する。
また、以上で、ＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（１）に対するステップＦ２２〜ステップＦ２７の処理が終了する。
イベントパターンマッチングツリー生成部１２０は、更に、ＩＮＳ毎イベントパターンＩＤリスト一時保持フィールド（２）、（３）に対しても同様の処理を行う（ステップＦ２９）。
以上で、ステップＦ１６の処理は、終了する。この時点で、新しいイベントパターンマッチングツリー１４１は図２８に示される状態となり、イベントパターンマッチングツリー生成部１２０は、イベントパターンマッチングツリー１４１の再構築を終了する。
上述した本実施形態における効果は、パターンマッチング判定を効率よく行うために最適な、イベントパターンマッチングツリーを生成することが可能になる点である。
その理由は、イベントパターンマッチングツリー生成部１２０が、ツリー依存マッチング率計測部１３０を参照し、マッチング率１３５が低い属性名５０２を持つインスタンス５４０を上位に配置して、イベントパターンマッチングツリー１４１を生成するようにしたからである。これにより、イベントパターンマッチング判定システム１００がイベント５００を受信したときに、イベントパターンマッチング判定部１１０は、イベントパターンマッチングツリー１４１の上位部分での処理で、マッチしないイベント５００を早期に検出し、マッチングを終了することができる。
［第２の実施形態］
次に本発明の第２の実施形態について、図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については省略する。
第１の実施形態においては、イベントパターンマッチング判定部１１０が各属性のマッチングを判定し、この判定を基にツリー依存マッチング率計測部１３０がマッチング率を計測している。これに対して、第２の実施形態においては、マッチング率計測部２７０がイベント受信部２８０からイベントを受信して各属性のマッチング率を計測する。
図２９は、第２の実施形態の構成を示すブロック図である。
図２９を参照すると、第２の実施形態に係るイベントパターンマッチング判定システム２００は、第１の実施形態のイベントパターンマッチング判定システム１００に比べて、イベントパターンマッチング判定部１１０がイベントパターンマッチング判定部２１０に、置き換えられている。同様に、イベントパターンマッチングツリー生成部１２０がイベントパターンマッチングツリー生成部２２０に、置き換えられている。さらに同様に、イベントパターン受信部１６０がイベントパターン受信部２６０に置き換えられている。また、イベントパターンマッチング判定システム２００は、イベントパターンマッチング判定システム１００に比べて、ツリー依存マッチング率計測部１３０が削除され、マッチング率計測部２７０、イベント受信部２８０が追加されている。
イベントパターン受信部２６０は、イベントパターン管理者８４０からイベントパターン登録要求５１３を受信する。このとき、イベントパターン受信部２６０は、イベントパターン登録要求５１３に含まれるイベントパターン５１０とイベントパターンＩＤ５１２とをイベントパターンテーブル保持部１５０に記録する。次に、イベントパターン受信部２６０は、イベントパターン登録要求５１３に含まれるイベントパターン５１０とイベントパターンＩＤ５１２とをマッチング率計測部２７０に送信する。同時に、イベントパターン受信部２６０は、イベントパターン登録要求５１４をイベントパターンマッチングツリー生成部２２０に送信する。
また、イベントパターン受信部２６０は、イベントパターン管理者８４０からイベントパターン削除要求５１５を受信する。このとき、イベントパターン受信部２６０は、イベントパターン削除要求５１５に含まれるイベントパターンＩＤ５１２をマッチング率計測部２７０に送信する。次に、イベントパターン受信部２６０は、イベントパターンテーブル保持部１５０からイベントパターン削除要求５１５に含まれるイベントパターンＩＤ５１２のイベントパターン５１０が記録されている行を削除する。次に、イベントパターン受信部２６０は、イベントパターン削除要求５１６をイベントパターンマッチングツリー生成部２２０に送信する。
イベント受信部２８０は、イベント入力者８２０からイベント５００を受信する。また、イベント受信部２８０は、受信したイベント５００をイベントパターンマッチング判定部２１０とマッチング率計測部２７０に送信する。
イベントパターンマッチング判定部２１０は、イベント受信部２８０からイベント５００を受信する。また、イベントパターンマッチング判定部２１０は、イベントパターンマッチングツリー保持部１４０に保持されているイベントパターンマッチングツリー１４１に基づいて、受信したイベント５００のイベントマッチングを行う。更に、イベントパターンマッチング判定部２１０は、受信したイベント５００がマッチした場合に、そのイベント５００をイベント受信者８３０に送信する。
マッチング率計測部２７０は、イベント受信部２８０からイベント５００を受信する。また、マッチング率計測部２７０は、上述のイベントパターンマッチング判定部２１０の処理と並行して、イベントパターン５１０に含まれる全ての部分イベントパターン５１１に対応するマッチング率２７５を計測する。
また、マッチング率計測部２７０は、マッチング率計測テーブル２７１を保持する。
図３０は、マッチング率計測テーブル２７１の構造と内容の例を示す図である。図３０に示すようにマッチング率計測テーブル２７１は、属性名２７２と部分イベントパターンリスト２７６と受信イベント数２７３とマッチングイベント数２７４とマッチング率２７５とをそれぞれ格納するカラムを含む、任意の数の行からなる。
部分イベントパターンリスト２７６には、属性名２７２と同じ属性名５０２を含む部分イベントパターン５１１とこの部分イベントパターン５１１を含むイベントパターン５１０のイベントパターンＩＤ５１２とをペアとし、任意の数のペアのリストが、登録される。例えば、イベントパターン登録要求５１３が「イベントパターン登録要求  １、Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都千代田区丸の内１丁目”）」である場合、マッチング率計測部２７０は、マッチング率計測テーブル２７１において属性名２７２「端末ＩＤ」である行には部分イベントパターンリスト２７６（１、「端末ＩＤ＝“ＩＤ１”」）を登録する。同様に、マッチング率計測部２７０は、属性名２７２「場所」である行には部分イベントパターンリスト２７６（１、「場所＝“東京都千代田区丸の内１丁目”」）を登録する。
受信イベント数２７３は、イベント受信部２８０から受信したイベント５００の総数が格納されている。
マッチングイベント数２７４は、受信したイベント５００の中で、部分イベントパターンリスト２７６の少なくとも１つの部分イベントパターン５１１にマッチしたイベント５００の総数が格納されている。マッチング率２７５には、マッチングイベント数２７４を受信イベント数２７３で割った値が格納されている。
イベントパターンマッチングツリー生成部２２０は、マッチング率計測テーブル２７１を参照し、マッチング率２７５が低い属性名２７２と同じ属性名５０２を持つインスタンス５４０を上位に配置したイベントパターンマッチングツリー１４１を生成する。
次に、図面を参照して本実施の形態の動作について詳細に説明する。
図３２は、マッチング率計測部２７０における、イベントパターン登録の動作を示すフローチャートである。
マッチング率計測部２７０は、イベントパターン受信部２６０からイベントパターン５１０とイベントパターンＩＤ５１２とを受信する（ステップＦｅ０）。
このとき、マッチング率計測部２７０は、受信したイベントパターン５１０とイベントパターンＩＤ５１２とに基づいて部分イベントパターン５１１を生成し、図示しない部分イベントパターン一時保持部に記録する（ステップＦｅ１）。
次に、マッチング率計測部２７０は、マッチング率計測テーブル２７１の各行について、その行の属性名２７２と同じ値の属性名５０２を持つ部分イベントパターン５１１と、この部分イベントパターン５１１を含むイベントパターン５１０のイベントパターンＩＤ５１２とのペアを、部分イベントパターンリスト２７６に追加する。更に、マッチング率計測部２７０は、この部分イベントパターン５１１を部分イベントパターン一時保持部から削除する（ステップＦｅ２）。
次に、マッチング率計測部２７０は、部分イベントパターン一時保持部が空か否かを確認する（ステップＦｅ３）。そして、部分イベントパターン一時保持部が空の場合（ステップＦｅ３でＹＥＳ）、処理は終了する。また、部分イベントパターン一時保持部が空でない場合（ステップＦｅ３でＮＯ）、処理はステップＦｅ４へ進む。
ステップＦｅ４において、マッチング率計測部２７０は、部分イベントパターン一時保持部の各要素について、マッチング率計測テーブル２７１に新たな行を生成する。続けて、マッチング率計測部２７０は、属性名２７２に部分イベントパターン５１１の属性名５０２を、部分イベントパターンリスト２７６に部分イベントパターン５１１が含まれていたイベントパターン５１０のイベントパターンＩＤ５１２と部分イベントパターン５１１とのペアを記録する。更に続けて、マッチング率計測部２７０は、受信イベント数２７３に「０」を、マッチングイベント数２７４に「０」を及びマッチング率２７５に「０」を記録する。更に続けて、マッチング率計測部２７０は、この部分イベントパターン５１１を部分イベントパターン一時保持部から削除する（ステップＦｅ４）。
マッチング率計測部２７０における、イベントパターン登録の動作について具体例を用いて説明する。
前提として、イベントパターンマッチング判定システム２００に、イベントパターン「Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都千代田区丸の内１丁目”）」と「Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ２”、場所＝“東京都新宿区新宿３丁目”）」とが登録されているとする。また同じく、マッチング率計測テーブル２７１は、図３０に示す状態であるとする。
また同じく、イベントパターンマッチング判定システム２００は、イベントパターン受信部２６０に、イベントパターン登録要求５１３「イベントパターン登録要求  ３  Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都港区芝５丁目”）」を受信したとする。
イベントパターン受信部２６０は、マッチング率計測部２７０に受信したイベントパターン登録要求５１３に含まれるイベントパターン５１０とイベントパターンＩＤ５１２とを送信する。
マッチング率計測部２７０は、イベントパターン５１０「Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都港区芝５丁目”）」とイベントパターンＩＤ５１２「３」とを受信する（ステップＦｅ０）。
このとき、マッチング率計測部２７０は、受信したイベントパターン５１０から部分イベントパターン５１１「端末ＩＤ＝“ＩＤ１”」及び「場所＝“東京都港区芝５丁目”」を抽出し、部分イベントパターン一時保持部に記録する（ステップＦｅ１）。
次に、マッチング率計測部２７０は、マッチング率計測テーブル２７１の各行について、その行の属性名２７２と同じ値の属性名５０２を持つ部分イベントパターン５１１とこの部分イベントパターン５１１が含まれていたイベントパターン５１０のイベントパターンＩＤ５１２とのペアを、部分イベントパターンリスト２７６に追加する（ステップＦｅ２）。
ステップＦｅ２の動作の例をより具体的に説明する。まず、マッチング率計測テーブル２７１の１行目において属性名２７２は「端末ＩＤ」なので、マッチング率計測部２７０は、部分イベントパターンリスト２７６に、イベントパターンＩＤ５１２「３」と部分イベントパターン５１１「端末ＩＤ＝“ＩＤ１”」とのペアを追加する。続けて、マッチング率計測部２７０は、部分イベントパターン一時保持部から「端末ＩＤ＝“ＩＤ１”」を削除し、部分イベントパターン一時保持部の内容を｛「場所＝“東京都港区芝５丁目”」｝とする。次に、マッチング率計測テーブル２７１の２行目において、属性名２７２は「場所」なので、マッチング率計測部２７０は、部分イベントパターンリスト２７６に、イベントパターンＩＤ５１２「３」と部分イベントパターン５１１「場所＝“東京都港区芝５丁目”」とのペアを追加する。続けて、マッチング率計測部２７０は、部分イベントパターン一時保持部から「場所＝“東京都港区芝５丁目”」を削除し、部分イベントパターン一時保持部は空となる。
次に、マッチング率計測部２７０は、部分イベントパターン一時保持部が空か否かを判定する。そして、部分イベントパターン一時保持部は空なので（ステップＦｅ３でＹＥＳ）、処理は終了する。
このとき、マッチング率計測テーブル２７１は、図３１に示される状態になっている。
図３３は、マッチング率計測部２７０における、イベントパターン削除の動作を示すフローチャートである。
イベントパターンマッチング率計測部２７０は、イベントパターン受信部２６０からイベントパターンＩＤ５１２を受信する（ステップＦｆ０）。
次に、マッチング率計測部２７０は、マッチング率計測テーブル２７１の１つの行の部分イベントパターンリスト２７６において、受信したイベントパターンＩＤ５１２と同じ値を持つ、イベントパターンＩＤ５１２と部分イベントパターン５１１とのペアを削除する（ステップＦｆ１）。
次に、マッチング率計測部２７０は、イベントパターンＩＤ５１２と部分イベントパターン５１１とのペアを削除した行の部分イベントパターンリスト２７６が空か否かを確認する（ステップＦステップＦ２）。そして、空の場合（ステップＦｆ２でＹＥＳ）、マッチング率計測部２７０は、その部分イベントパターンリスト２７６が空の行を削除する（ステップＦｆ３）。また、空ではない場合（ステップＦｆ２でＮＯ）、処理はステップＦステップＦ４に進む。
次に、マッチング率計測部２７０は、ステップＦｅ１からステップＦｅ３の処理をマッチング率計測テーブル２７１の全ての行について実行したか否かを確認する（ステップＦｆ４）。そして、全ての行について実行した場合（ステップＦｆ４でＹＥＳ）、処理は終了する。また、実行していない行がある場合（ステップＦｆ４でＮＯ）、処理はステップＦｆ１へ戻る。
マッチング率計測部２７０における、イベントパターン削除の動作について具体例を用いて説明する。
前提として、マッチング率計測テーブル２７１は図３１に示される状態であるとする。
また同じく、イベントパターンマッチング判定システム２００は、イベントパターン受信部２６０にイベントパターン削除要求５１５「イベントパターン削除要求  ３」を受信したとする。
イベントパターン受信部２６０は、マッチング率計測部２７０に受信したイベントパターン削除要求５１５に含まれるイベントパターンＩＤ５１２「３」を送信する。
マッチング率計測部２７０は、マッチング率計測テーブル２７１の各行の部分イベントパターンリスト２７６から、受信したイベントパターンＩＤ５１２と同じ値を持つ、イベントパターンＩＤ５１２と部分イベントパターン５１１のペアを削除する。具体的には、マッチング率計測テーブル２７１の１行目の部分イベントパターンリスト２７６から「（３、「端末ＩＤ＝“ＩＤ１”」）」、１行目の部分イベントパターンリスト２７６から「（３、「場所＝“東京都港区芝５丁目”」）」を削除する。
以上で、マッチング率計測部２７０におけるイベントパターン削除の処理を終了する。
このとき、マッチング率計測テーブル２７１は図３０の状態になっている。
次に、本実施形態におけるイベント５００のイベントマッチングの動作を説明する。
イベント入力者８２０からイベント受信部２８０にイベント５００が入力されると、イベント受信部２８０は、イベントパターンマッチング判定部２１０とマッチング率計測部２７０にこのイベント５００を送信する。イベントパターンマッチング判定部２１０は、イベントマッチングを行い、イベント５００にマッチしたイベントパターン５１０のイベントパターンＩＤ５１２を付与して、イベント受信者８３０に通知する。また、マッチング率計測部２７０は、各属性名５０２に対応するマッチング率を更新する。
本実施形態における、イベント５００のイベントマッチングの動作の内イベント５００が入力されたときのイベントパターンマッチング判定部２１０の動作は、第１の実施形態において説明した図１４のフローチャートで示されるイベントパターンマッチング判定部１１０の動作と同じである。
図３４は、イベント５００のイベントマッチングの動作の内、参照するインスタンス５４０が属性値一致判定インスタンス１４２である場合の属性一致判定の動作を示すフローチャートである。図３４に示すイベントパターンマッチング判定部２１０の属性一致判定の動作は、図１５及び図１６に示すイベントパターンマッチング判定部１１０の動作に比べて、イベントパターンマッチング判定部２１０がツリー依存マッチング率計測部１３０に属性名５０２とマッチング結果を送信する動作が無いことが異なる。
従って、図１５と図３４とにおいて、ステップＦ７９とステップＦｈ９と、ステップＦ８０とステップＦｈ０と、ステップＦ８１とステップＦｈ１と、ステップＦ８４とステップＦｈ４と、ステップＦ８５とステップＦｈ５と、及びステップＦ８６とステップＦｈ６と、はそれぞれ同じ動作である。また、図１５のステップＦ８２でＮＯの場合に処理は図１６のステップＦ８７へ進み、図３４のステップＦｈ２でＮＯの場合に処理はステップＦｈ５へ進む点が、及び図１５のステップＦ８２でＹＥＳの場合に処理は図１６のステップＦ８３へ進み、図３４のステップＦｈ２でＹＥＳの場合に処理はステップＦｈ４へ進む点が、異なる。また、図１５のステップＦ８３、図１６のステップＦ８７、ステップＦ８８及びステップＦ８９の動作に対応する動作は、図３４には存在しない。
次に、マッチング率計測部２７０におけるマッチング率の更新処理を説明する。
マッチング率計測部２７０は、イベント５００を受信すると、マッチング率計測テーブル２７１の各行において部分イベントパターンリスト２７６を用いてイベント５００のイベントマッチングを行う。続けて、マッチング率計測部２７０は、イベントマッチングの結果に基づいてマッチング率計測テーブル２７１を更新する。
図３５は、イベント５００のイベントマッチングの動作の内、各属性名５０２に対応するマッチング率を更新する動作を示すフローチャートである。
マッチング率計測部２７０は、イベント受信部２８０からイベント５００を受信する（ステップＦｇ０）。
次に、マッチング率計測部２７０は、マッチング率計測テーブル２７１の全ての行について以下のステップＦｇ１、ステップＦｇ２及びステップＦｇ３の処理を実行する。
まず、マッチング率計測部２７０は、マッチング率計測テーブル２７１の１つの行の部分イベントパターンリスト２７６の内の少なくとも１つの部分イベントパターン５１１に、受信したイベント５００がマッチするか否かを判定する（ステップＦｇ１）。そして、受信したイベント５００がマッチする場合（ステップＦｇ１でＹＥＳ）、マッチング率計測部２７０は、その行の受信イベント数２７３とマッチングイベント数２７４の値をインクリメントし、マッチング率を更新する（ステップＦｇ２）。また、受信したイベント５００が部分イベントパターンリスト２７６のどの部分イベントパターン５１１にもマッチしない場合（ステップＦｇ１でＮＯ）、マッチング率計測部２７０は、その行の受信イベント数２７３の値をインクリメントし、マッチング率２７５を更新する（ステップＦｇ３）。
次に、マッチング率計測部２７０は、マッチング率計測テーブル２７１の全ての行について処理を実行したか否かを判定する（ステップＦｇ４）。
次に、イベント５００のイベントマッチングの動作について具体例を用いて説明する。
前提として、イベントパターンマッチング判定システム２００には３つのイベントパターン５１０「Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都千代田区丸の内１丁目”）」、「Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ２”、場所＝“東京都新宿区新宿３丁目”）」と「Ｐａｔｔｅｒｎ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都港区芝５丁目”）」が登録されているとする。また同じく、イベントパターンマッチングツリー１４１は図２２、ツリーマッチング率計測テーブル２７１は図３１に示される状態であるとする。
また同じく、イベントパターンマッチング判定システム２００は、イベント受信部２８０に、図２に示すイベント５００「ＥＶＥＮＴ（端末ＩＤ＝“ＩＤ１”、場所＝“東京都港区芝５丁目”、時刻＝“１１００：２５”）」を受信したとする。
イベント受信部２８０はイベントパターンマッチング判定部２１０とマッチング率計測部２７０に受信したイベント５００を送信する。
イベントパターンマッチング判定部２１０は、受信したイベント５００のマッチング判定を行い、イベント５００と図２２のＩＮＳ６に保持されているイベントパターンＩＤ５１２をイベント受信者８３０に通知する。イベントパターンマッチング判定部２１０の動作は、ツリー依存マッチング率計測部１３０に属性名５０２とマッチング結果を送らないことを除いて、第１の実施形態に示すイベントパターンマッチング判定部１１０の動作と同様であるため、詳細な説明を省略する。
マッチング率計測部２７０における動作を説明する。まず、マッチング率計測テーブル２７１の１行目において、イベント５００は、部分イベントパターンリスト２７６の「端末ＩＤ＝“ＩＤ１”」にマッチする（ステップＦｇ１でＹＥＳ）。そこで、マッチング率計測部２７０は、受信イベント数２７３を「１０００」、マッチングイベント数２７４を「５００」、マッチング率２７５を（５００／１０００＝）「０．５００」に更新する。
次にマッチング率計測テーブル２７１の２行目において、イベント５００は、部分イベントパターンリスト２７６の「場所＝“東京都港区芝５丁目”」にマッチする（ステップＦｇ１でＹＥＳ）。そこで、マッチング率計測部２７０は、受信イベント数２７３を５００、マッチングイベント数２７４を「２００」、マッチング率２７５を（２００／５００＝）「０．４００」に更新する。
以上で、イベント５００のイベントマッチングの動作の具体例の説明を終了する。
上述した本実施形態において、マッチング率計測部２７０は、イベント受信部２８０から受信した全てのイベント５００について、かつマッチング率計測テーブル２７１の全ての行についてイベントパターンマッチング判定を行うようにした。しかし例えば、マッチング率計測部２７０は、マッチング率計測部２７０またはイベント受信部２８０によりランダムに或いは予め定められた基準に従って選択されたイベント５００について、イベントパターンマッチング判定を行うようにしてもよい。または、マッチング率計測部２７０は、マッチング率計測テーブル２７１の全ての行の内のランダムに或いは予め定められた基準に従って選択された行の部分イベントパターン５１１についてイベントパターンマッチング判定を行うようにしてもよい。
上述した本実施形態における第１の効果は、第１の実施形態の効果に加えて、最適化がより正確なイベントパターンマッチングツリー１４１を得ることが可能になる点である。
その理由は、マッチング率計測部２７０が、イベントパターンマッチングツリー１４１とは独立して、各属性名５０２に対応するマッチング率２７５を計測するようにしたためである。
以下に、本効果について具体的に説明する。
第１の実施形態では、イベントパターンマッチングツリー１４１の各属性値一致判定インスタンス１４２を用いて、各属性名５０２のマッチング率を計測している。このため、イベントパターンマッチングツリー１４１の親のノード１９１と子のノード１９１とがそれぞれ保持する属性名５０２に対応する属性５０１に依存関係がある場合、子のノード１９１に対応する属性５０１のマッチング率を正しく計測できない時がある。属性名５０２「年齢」の属性５０１と属性名５０２「趣味」の属性５０１に依存関係があるとは、例えば、年齢が１０代の人の趣味がゲームであることが多い、年齢が２０代の人の趣味が旅行であることが多い、というように、同年代の人の趣味が同じ場合が多いことなどを意味する。このような場合、イベントパターン５１０が属性名５０２「年齢」及び「趣味」の部分イベントパターン５１１から構成される場合、属性名５０２が「年齢」の部分イベントパターン５１１にマッチするイベント５００は、属性名５０２が「趣味」の部分イベントパターン５１１にもマッチする。
図３６及び図３７を参照して、具体例に説明する。図３６及び図３７は、本実施形態の効果を説明するための、第１の実施形態におけるイベントパターンマッチングツリー１４１と各属性名５０２に対応するマッチング率１３５の例を示す図である。
前提として、年齢と趣味に依存関係があり、イベントパターンマッチング判定システム１００及びイベントパターンマッチング判定システム２００において、イベントパターン５１０として「Ｐａｔｔｅｒｎ（年齢＝”１０代”、趣味＝”ゲーム”）」、「Ｐａｔｔｅｒｎ（年齢＝”２０代”、趣味＝”旅行”）」、「Ｐａｔｔｅｒｎ（年齢＝”７０代”、趣味＝”盆栽”）」が登録されているとする。そして、イベントパターンマッチングツリー保持部１４０は、これらのイベントパターン５１０から生成された図３６または図３７に示すイベントパターンマッチングツリー１４１を保持しているものとする。
同じく前提として、イベント入力者８２０からイベントパターンマッチング判定システム１００或いはイベントパターンマッチング判定システム２００に４つのイベント５００「ＥＶＥＮＴ１（年齢＝１０代、趣味＝ゲーム）」、「ＥＶＥＮＴ２（年齢＝２０代、趣味＝旅行）」、「ＥＶＥＮＴ３（年齢＝３０代、趣味＝ショッピング）」、「ＥＶＥＮＴ４（年齢＝４０代、趣味＝読書）」が送信されたとする。
図３６に示されるイベントパターンマッチングツリー１４１は、ルートノード１９２の属性値一致判定インスタンス１４２が属性名５０２「年齢」、次の属性値一致判定インスタンス１４２が属性名５０２「趣味」である。図３６に示されるイベントパターンマッチングツリー１４１を用いて各属性名５０２のマッチング率１３５を計測する場合、イベントパターンマッチング判定システム１００は、属性名５０２「年齢」のマッチング率１３５を２／４＝０．５、属性名５０２「趣味」のマッチング率１３５を２／２＝１と計測する。一方、図３７に示されるイベントパターンマッチングツリー１４１は、ルートノード１９２の属性値一致判定インスタンス１４２が属性名５０２「趣味」、次の属性値一致判定インスタンス１４２が属性名５０２「年齢」である。図３７に示されるイベントパターンマッチングツリー１４１を用いて各属性名５０２のマッチング率１３５を計測する場合、イベントパターンマッチング判定システム１００は、属性名５０２「年齢」のマッチング率１３５を２／２＝１、属性名５０２「趣味」のマッチング率１３５を２／４＝０．５と計測する。即ち、イベントパターンマッチング判定システム１００が計測する各属性名５０２のマッチング率１３５は、イベントパターンマッチングツリー１４１の構成によって変化してしまう。
イベントパターンマッチング判定システム２００において各属性名５０２のマッチング率２７５を計測する場合、イベントパターンマッチングツリー１４１とは独立して、マッチング率計測部２７０で各属性名５０２のマッチング率２７５を計測する。このため、イベントパターンマッチングツリー１４１が図３６、図３７のどちらに示されるものの場合であっても、属性名５０２「年齢」のマッチング率２７５は２／４＝０．５、属性名５０２「趣味」のマッチング率２７５は２／４＝０．５となる。即ち、イベントパターンマッチング判定システム２００は、２つの属性５０１に依存関係があっても、各属性５０１に対応する属性名５０２の正確なマッチング率を計測できる。
よって、イベントパターンマッチング判定システム２００は、依存関係のある属性５０１が存在する場合であっても、正確なマッチング率２７５に基づいてイベントパターンマッチングツリー１４１を生成できる。このため、各属性５０１に対応する属性名５０２は、マッチング率が低い順にイベントパターンマッチングツリー１４１のルートノード１９２からリーフノード１９３に出現する。イベントパターンマッチング判定システム２００は、このイベントパターンマッチングツリー１４１に基づいてイベントパターンマッチング判定を行っている。このため、イベントパターンマッチングツリー１４１の上位でイベントパターン５１０にマッチしないイベント５００が捨てられ、イベント処理が高速になる。
上述した本実施形態における第２の効果は、マッチング率計測部２７０の負荷を軽減することが可能になる点である。
その理由は、マッチング率計測部２７０が、イベント受信部２８０から受信したイベント５００を選択して、及びマッチング率計測テーブル２７１の行を選択してイベントパターンマッチング判定を行うようにしたためである。
［第３の実施形態］
次に本発明の第３の実施形態について、図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については省略する。
本実施形態のイベントパターンマッチング判定システム６００は、第１の実施形態のイベントパターンマッチング判定システム１００と同じ方法でツリー依存マッチング率計測部１３０において各属性名５０２のマッチング率１３５を計測するとともに、第２の実施形態のイベントパターンマッチング判定システム２００と同じ方法でマッチング率計測部６７０において特定の属性名５０２のマッチング率２７５を計測する。
図３８は、第３の実施形態の構成を示すブロック図である。
図３８を参照すると、イベントパターンマッチング判定システム６００は、第１の実施形態のイベントパターンマッチング判定システム１００に比べて、イベントパターンマッチングツリー生成部１２０がイベントパターンマッチングツリー生成部６２０に置き換えられている。また、イベントパターンマッチング判定システム２００は、イベントパターンマッチング判定システム１００に比べて、マッチング率計測部６７０、ツリー再構築管理部６３０、イベント受信部６８０が追加されている。
イベント受信部６８０は、イベント入力者８２０からイベント５００を受信し、受信したイベント５００を、初期状態においてはイベントパターンマッチング判定部１１０に送信する。また、イベント受信部６８０は、マッチング率計測部６７０からイベント送信開始要求を受信した場合、それ以降（初期状態ではなくなって以降）に受信したイベント５００を、イベントパターンマッチング判定部１１０とマッチング率計測部６７０に送信する。イベント受信部６８０は、マッチング率計測部６７０からイベント送信終了要求を受信した場合、それ以降に受信したイベント５００を、イベントパターンマッチング判定部１１０に送信し、マッチング率計測部６７０に送信しない。
マッチング率計測部６７０は、ツリー再構築管理部６３０から要求された属性名５０２のマッチング率２７５を計測する。マッチング率計測部６７０は、図３０に示すようなマッチング率計測テーブル２７１を保持する。
マッチング率計測部６７０は、ツリー再構築管理部６３０から、引数として１つ以上の属性名５０２を含むマッチング率計測開始要求を受信する。次に、マッチング率計測部６７０は、マッチング率計測開始要求に引数として含まれた属性名５０２を含む全ての部分イベントパターン５１１をイベントパターンテーブル保持部１５０から取得し、マッチング率計測テーブル２７１に格納する。具体的には、マッチング率計測部６７０は、マッチング率計測テーブル２７１に、受信した属性名５０２毎に行を生成する。続けて、マッチング率計測部６７０は、各行の属性名１３２に受信した属性名５０２を格納する。同時に、マッチング率計測部６７０は、部分イベントパターンリスト２７６に、受信した属性名５０２の値が含まれる全ての部分イベントパターン５１１のリストを格納する。続けて、マッチング率計測部６７０は、受信イベント数２７３に「０」、マッチングイベント数２７４に「０」、マッチング率２７５に「０」を格納する。例えば、イベントパターンテーブル保持部１５０が図１３の場合に、ツリー再構築管理部６３０から属性名５０２「場所」のマッチング率計測開始要求を受信した時、マッチング率計測部６７０は、図４５に示す行をマッチング率計測テーブル２７１に格納する。
次に、マッチング率計測部６７０は、イベント受信部６８０からイベント５００を受信するために、イベント受信部６８０にイベント送信開始要求を送信する。これによりイベント受信部６８０からイベント５００が送信されるようになり、マッチング率計測部６７０は、受信したイベント５００に基づいてマッチング率２７５を計測する。
マッチング率計測部６７０は、ツリー再構築管理部６３０からマッチング率計測終了要求を受信した場合、ツリー再構築管理部６３０に計測したマッチング率２７５のリストを返す。次に、マッチング率計測部６７０は、イベント受信部６８０からのイベント５００の受信を終了するために、イベント受信部６８０にイベント送信終了要求を送信する。最後に、マッチング率計測部６７０は、マッチング率計測テーブル２７１の各行を削除し、マッチング率計測を終了する。
ツリー再構築管理部６３０は、ツリー依存マッチング率計測部１３０において計測されたマッチング率１３５とマッチング率計測部６７０において計測されたマッチング率２７５とを基に、イベントパターンマッチングツリー１４１を再構築するか否かを決定する。次に、ツリー再構築管理部６３０は、イベントパターンマッチングツリー１４１を再構築すると決定した場合に、イベントパターンマッチングツリー生成部６２０に対してツリー再構築要求を送信する。
ツリー再構築管理部６３０は、一定時間毎にツリー依存マッチング率計測部１３０から、ルート属性名を除く、全ての属性名１３２とそのマッチング率１３５を取得する。ここでルート属性名とは、イベントパターンマッチングツリー１４１のルートノード１９２の属性値一致判定インスタンス１４２の属性名フィールド１４３に格納されている属性名５０２をさす。ツリー再構築管理部６３０は、取得した属性名１３２とそのマッチング率１３５の中に、マッチング率１３５が一定値以下である属性名１３２が１つ以上ある場合、マッチング率計測部６７０にマッチング率計測開始要求を送信する。
次に、マッチング率計測部６７０は、この属性名１３２のマッチング率２７５を計測する。ツリー再構築管理部６３０は、マッチング率計測部６７０にマッチング率計測終了要求を送信することにより、マッチング率計測部６７０が計測したマッチング率２７５を取得する。ツリー再構築管理部６３０は、取得したマッチング率２７５が一定値以下である属性名１３２が１つ以上ある場合、イベントパターンマッチングツリー生成部６２０に対してイベントパターンマッチングツリー１４１の再構築を要求するツリー再構築要求を送信する。
イベントパターンマッチングツリー生成部６２０は、イベントパターンマッチングツリー１４１を生成する。イベントパターンマッチングツリー生成部６２０は、ツリー再構築管理部６３０からツリー再構築要求を受信したときに、対応するマッチング率２７５が低い属性名５０２を保持するインスタンス５４０をツリー上位にしたツリーを生成する。そして、イベントパターンマッチングツリー生成部６２０は、イベントパターンマッチングツリー保持部１４０にその新しく生成したツリーを記録する。尚、イベントパターン登録要求５１４、イベントパターン削除要求５１６を受信したときの処理は第１の実施形態と同様であるため、説明を省略する。
次に、図面を参照して本実施形態の動作について詳細に説明する。
イベント５００のイベントマッチングの処理は、第１の実施形態と同様であるため、説明を省略する。
次に、イベントパターンマッチングツリー１４１の再構築手順を説明する。
ツリー再構築管理部６３０は、ツリー依存マッチング率計測部１３０とマッチング率計測部６７０で計測したマッチング率に基づいて、イベントパターンマッチングツリー１４１を再構築するか否かを決定する。また、ツリー再構築管理部６３０は、イベントパターンマッチングツリー生成部６２０にツリー再構築要求を送信する。
図３９は、ツリー再構築管理部６３０がイベントパターンマッチングツリー１４１の再構築を要求する動作を示すフローチャートである。
尚、ツリー再構築管理部６３０は、予め、イベントパターンマッチングツリー１４１のルートノード１９２の属性値一致判定インスタンス１４２の属性名フィールド１４３に格納されている属性名５０２を、イベントパターンマッチングツリー保持部１４０から取得する。そして、ツリー再構築管理部６３０は、ルート属性名に登録している。また、ツリー再構築管理部６３０は、マッチング率計測部６７０でマッチング率２７５を計測するか否かを判断するために使用するマッチング率計測開始しきい値を予め登録されている。また、ツリー再構築管理部６３０は、イベントパターンマッチングツリー１４１の再構築を行うか否かを判断するために使用するツリー再構築開始しきい値を予め登録されている。
ツリー再構築管理部６３０は、一定時間毎にツリー依存マッチング率計測部１３０から全ての属性名１３２とそのマッチング率１３５とのペアをリストとして取得する。続けて、ツリー再構築管理部６３０は、取得したリストの中からルート属性名に一致する属性名１３２とそのマッチング率１３５とのペアを削除して削除済みリストを生成する（ステップＦｉ０）。
次に、ツリー再構築管理部６３０は、対応するマッチング率１３５が「マッチング率計測開始しきい値」以下である属性名１３２が、この削除済みリストに１つ以上存在するか否かを判定する（ステップＦｉ１）。そして、該当する属性名１３２が１つ以上存在する場合（ステップＦｉ１でＹＥＳ）、ツリー再構築管理部６３０は、該当する属性名１３２のマッチング率２７５を計測するために、マッチング率計測部６７０にマッチング率計測開始要求を送信する（ステップＦｉ２）。具体的には、該当する属性名１３２をリストにしてマッチング率計測部６７０に送信する。また、該当する属性名１３２が１つも存在しない場合（ステップＦｉ１でＮＯ）、処理は終了する。
次に、ツリー再構築管理部６３０は、予め定められた一定時間後にマッチング率計測部６７０にマッチング率計測終了要求を送信し、ステップＦｉ２で送信した属性名１３２とそのマッチング率２７５とのペアをリストとして取得する（ステップＦｉ３）。
次に、ツリー再構築管理部６３０は、受信したマッチング率２７５にツリー再構築開始しきい値以下である属性名１３２が１つ以上存在するか否かを判定する。そして、該当する属性名１３２が存在する場合（ステップＦｉ４でＹＥＳ）、ツリー再構築管理部６３０は、イベントパターンマッチングツリー生成部６２０に対してイベントパターンマッチングツリー１４１の再構築を要求するツリー再構築要求を送信する（ステップＦｉ５）。また、該当する属性名１３２が存在しない場合（ステップＦｉ４でＮＯ）、処理は終了する。
図４０は、マッチング率計測部６７０がツリー再構築管理部６３０からマッチング率計測開始要求を受信した場合の、マッチング率計測部６７０の動作を示すフローチャートである。
マッチング率計測部６７０は、ツリー再構築管理部６３０から、１つ以上の属性名１３２を含むマッチング率計測開始要求を受信する（ステップＦｊ０）。
次に、マッチング率計測部６７０は、受信したマッチング率計測開始要求に含まれる各属性名１３２について、ステップＦｊ１及びステップＦｊ２の処理を行う。
まず、マッチング率計測部６７０は、イベントパターンテーブル保持部１５０から、この属性名１３２と同じ値の属性名５０２を含む全ての部分イベントパターン５１１を取得する（ステップＦｊ１）。
次に、マッチング率計測部６７０は、マッチング率計測テーブル２７１に新しい行を生成し、属性名２７２に属性名５０２を、部分イベントパターンリスト２７６に取得した部分イベントパターン５１１のリストを格納する。続けて、マッチング率計測部６７０は、受信イベント数２７３に「０」、マッチングイベント数２７４に「０」、マッチング率２７５に「０」を格納する（ステップＦｊ２）。
次に、マッチング率計測部６７０は、受信したマッチング率計測開始要求に含まれる各属性名１３２全てについて処理を実行したか否かを確認する（ステップＦｊ３）。そして、全てについて処理を実行した場合（ステップＦｊ３でＹＥＳ）、処理はステップＦｊ４へ進む。また、処理を実行していない属性名１３２が存在する場合（ステップＦｊ３でＮＯ）、処理はステップＦｊ１へ戻る。
次に、マッチング率計測部６７０は、イベント受信部６８０からイベント５００を受信するために、イベント受信部６８０にイベント送信開始要求を送信する（ステップＦｊ４）。
これによりイベント受信部６８０からイベント５００が送信されるようになり、マッチング率計測部６７０は、受信したイベント５００のマッチング率２７５を計測する（ステップＦｊ５）。
マッチング率２７５の計測処理は、第２の実施形態と同様であるため、説明を省略する。
図４１は、マッチング率計測部６７０がツリー再構築管理部６３０からマッチング率計測終了要求を受信した場合の動作を示すフローチャートである。
マッチング率計測部６７０は、ツリー再構築管理部６３０からマッチング率計測終了要求を受信する（ステップＦｋ０）。
次に、マッチング率計測部６７０は、イベント受信部６８０からのイベント受信を終了するために、イベント受信部６８０にイベント送信終了要求を送信する（ステップＦｋ１）。
次に、マッチング率計測部６７０は、ツリー再構築管理部６３０に計測したマッチング率のリストを送信する（ステップＦｋ２）。
最後に、マッチング率計測部６７０は、マッチング率計測テーブル２７１の全ての行を削除する（ステップＦｋ３）。
図４２は、イベント受信部６８０が、マッチング率計測部６７０からイベント送信開始要求を受信した場合の動作を示すフローチャートである。
イベント受信部６８０は、マッチング率計測部６７０からイベント送信開始要求を受信する（ステップＦｌ０）。
次に、イベント受信部６８０は、送信開始要求を受信したことを図示しない送信モード記憶部に「開始」を記憶する（ステップＦｌ１）。
図４３は、イベント受信部６８０が、マッチング率計測部６７０からイベント送信終了要求を受信した場合の動作を示すフローチャートである。
イベント受信部６８０は、マッチング率計測部６７０からイベント送信終了要求を受信する（ステップＦｍ０）。
次に、イベント受信部６８０は、送信終了要求を受信したことを図示しない送信モード記憶部に「終了」を記憶する（ステップＦｍ１）。
尚、送信モード記憶部の初期状態は、「終了」が記憶された状態である。
図４４は、イベント受信部６８０が、イベント５００を受信した場合の動作を示すフローチャートである。
イベント受信部６８０は、イベント入力者８２０からイベント５００を受信する（ステップＦｑ０）。
次に、イベント受信部６８０は、送信モード記憶部に「開始」が記憶されているか否かを確認する（ステップＦｑ１）。そして、「開始」が記憶されている場合（ステップＦｑ１でＹＥＳ）、イベント受信部６８０は、ツリー再構築管理部６３０にイベント５００を送信する（ステップＦｑ２）。また、「終了」が記憶されている場合（ステップＦｑ１でＮＯ）、処理は、ステップＦｑ３へ進む。
ステップＦｑ３において、イベント受信部６８０は、イベントパターンマッチング判定部１１０にイベント５００を送信する（ステップＦｑ３）。
イベントパターンマッチングツリー生成部６２０がツリー再構築管理部６３０からツリー再構築要求を受信した場合にイベントパターンマッチングツリー１４１の再構築を実行する処理は、第１の実施形態と同様であるため、説明を省略する。
上述した本実施形態における効果は、第１、第２の実施形態の効果に加えて、イベントパターンマッチング判定システム６００における処理負荷が減ることにある。
その理由は、以下のようにしたためである。本実施形態において、マッチング率計測部６７０は、全ての属性名５０２のマッチング率２７５を計測することはしない。その代わり、マッチング率計測部６７０は、ツリー依存マッチング率計測部１３０において計測したマッチング率１３５を参照してマッチング率１３５が相対的に低い属性名２７２を選択する。そして、マッチング率計測部６７０は、その属性名２７２に対応する属性名５０２についてのみマッチング率計測部６７０でマッチング率２７５を正確に計測する。
［第４の実施形態］
次に本発明の第４の実施形態について、図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については省略する。
第４の実施形態は、複数のイベントパターンマッチングツリー保持部に保持されているイベントパターンマッチングツリー１４１のルートノード１９２の属性値一致判定インスタンス１４２において、この属性値一致判定インスタンス１４２に出現する属性名５０２のマッチング率１３５を計測する
図４６は、第４の実施形態の構成を示すブロック図である。
図４６を参照すると、イベントパターンマッチング判定システム７００は、イベント受信部７８０とツリー管理部４０１と複数のイベント処理部４０２とを含む。
イベント受信部７８０は、イベント入力者８２０からイベント５００を受信した場合、複数のイベント処理部４０２の内の１つをランダムに選択する。続けて、イベント受信部７８０は、受信したイベント５００を選択したイベント処理部４０２に送信する。
ツリー管理部４０１は、イベントパターン受信部１６０と、イベントパターンテーブル保持部１５０と、イベントパターンマッチングツリー生成部７４０と、全イベントパターンマッチングツリー保持部７５０と、ツリー再構築管理部７６０から構成される。
ツリー再構築管理部７６０は、後述するツリールート属性マッチング率計測部（マッチング率計測部とも呼ばれる）７９０で計測したマッチング率１３５を基に、イベントパターンマッチングツリー１４１を再構築するか否かを決定する。
ツリー再構築管理部７６０は、一定時間毎にツリールート属性マッチング率計測部７９０の全てからマッチング率１３５を取得する。
また、ツリー再構築管理部７６０は、取得したマッチング率１３５に基づいて、イベントパターンマッチングツリー１４１を再構築するか否かを決定する。
更に、ツリー再構築管理部７６０は、取得したマッチング率１３５に基づいて、各イベント処理部４０２のイベントパターンマッチングツリー保持部１４０に保持するイベントパターンマッチングツリー１４１を決定する。続けて、ツリー再構築管理部７６０は、決定したイベントパターンマッチングツリー１４１について、イベントパターンマッチングツリー生成部７４０にツリー再構築要求を送信する。
更に、ツリー再構築管理部７６０は、決定したイベントパターンマッチングツリー１４１を全イベントパターンマッチングツリー保持部７５０から取得する。続けて、ツリー再構築管理部７６０は、その決定したイベントパターンマッチングツリー１４１を各イベント処理部４０２のイベントパターンマッチングツリー保持部１４０に記録する。
また、ツリー再構築管理部７６０は、ツリールート属性マッチング率計測部７９０に、イベントパターンマッチングツリー保持部１４０に送信したイベントパターンマッチングツリー１４１のルートノード１９２に格納されている属性名５０２を送信する。この処理により、各イベント処理部４０２のツリールート属性マッチング率計測部７９０は、イベントパターンマッチングツリー保持部１４０に新しく記録されたイベントパターンマッチングツリー１４１のルートノード１９２に保持されている属性名５０２に対応するマッチング率１３５のみを計測するようにすることができる。
イベントパターンマッチングツリー生成部７４０は、受信したツリー再構築要求に基づいて、イベントパターンマッチングツリー１４１の生成を行う。続けて、イベントパターンマッチングツリー生成部７４０は、全イベントパターンマッチングツリー保持部７５０に、この生成したイベントパターンマッチングツリー１４１を記録する。こうして、イベントパターンマッチングツリー生成部７４０は、イベントパターンマッチングツリー１４１を構築或いは再構築する。
全イベントパターンマッチングツリー保持部７５０は、イベントパターンマッチングツリー生成部７４０から受信したイベントパターンマッチングツリー１４１を受信した数だけ保持する。
イベント処理部４０２は、イベントパターンマッチング判定部７１０と、ツリールート属性マッチング率計測部７９０とイベントパターンマッチングツリー保持部１４０とから構成される。
イベントパターンマッチング判定部７１０は、イベント５００のマッチングを行う。
イベントパターンマッチング判定部７１０は、イベント入力者８２０からイベント５００を受信する。続けて、イベントパターンマッチング判定部７１０は、イベントパターンマッチングツリー保持部１４０に保持されているイベントパターンマッチングツリー１４１を使用して、受信したイベント５００のイベントマッチングを行う。更に続けて、イベント５００がイベントパターン５１０にマッチした場合に、イベントパターンマッチング判定部７１０は、そのイベント５００をイベント受信者８３０に送信する。
また、イベントパターンマッチング判定部７１０は、イベントパターンマッチングツリー１４１のルートノード１９２の属性値一致判定インスタンス１４２のデータに基づいてイベント５００を処理した場合、この属性値一致判定インスタンス１４２が参照する属性名５０２に対応するマッチング率１３５を更新するために、この属性値一致判定インスタンス１４２の属性名フィールド１４３に格納されている属性名５０２とこれに対応するマッチング結果とを、ツリールート属性マッチング率計測部７９０に送信する。尚、マッチング結果は第１の実施形態において説明したマッチング結果と同様であるため、説明を省略する。
ツリールート属性マッチング率計測部７９０は、イベントパターンマッチングツリー１４１のルートノード１９２の属性値一致判定インスタンス１４２に含まれる属性名５０２のマッチング率１３５を計測する。
ツリールート属性マッチング率計測部７９０は、第１の実施形態のツリー依存マッチング率計測部１３０と同様に、図１２に示す構造のマッチング率計測テーブル１３１を保持する。但し、ツリールート属性マッチング率計測部７９０に保持されるマッチング率計測テーブル１３１は、１行目の属性名１３２にイベントパターンマッチングツリー１４１のルートノード１９２の属性値一致判定インスタンス１４２に含まれる属性名５０２が格納されている。
マッチング率計測テーブル１３１の更新方法は、第１の実施形態で説明したものと同様であるため、説明を省略する。
次に、図面を参照して本実施の形態の動作について詳細に説明する。
前提として、第４の実施形態では、属性名５０２の総数以上のイベント処理部４０２が存在する。
まず、イベント５００のイベントマッチングの動作を説明する。
イベント入力者８２０からイベント受信部７８０にイベント５００が入力されると、イベント受信部７８０は、複数あるイベントパターンマッチング判定部７１０の１つをランダムに選択し、選択したイベントパターンマッチング判定部７１０にイベント５００を送信する。
次に、イベントパターンマッチング判定部７１０は、イベントマッチングを行い、イベント５００にマッチしたイベントパターン５１０のイベントパターンＩＤ５１２を付与する。そして、イベントパターンマッチング判定部７１０は、そのイベントパターンＩＤ５１２を付与したイベント５００をイベント受信者８３０に通知する。
また、イベントパターンマッチング判定部７１０は、イベントパターンマッチングツリー１４１のルートノード１９２の属性名５０２に対応するマッチング率１３５のみを更新する。
即ち、イベントパターンマッチング判定部７１０は、第１の実施形態のイベントパターンマッチング判定部１１０と比べて、以下の部分の動作のみが異なる。
イベントパターンマッチング判定部７１０は、図１５のステップＦ８３、図１６のステップＦ８８及びステップＦ８９において、対象の属性値一致判定インスタンス１４２が、イベントパターンマッチングツリー１４１のルートノード１９２であるときに限りマッチング率計測テーブル１３１の更新を行う。
次に、イベントパターンマッチングツリー１４１の再構築の動作を説明する。
ツリー再構築管理部７６０は、ツリールート属性マッチング率計測部７９０が計測したマッチング率１３５に基づいて、各イベント処理部４０２に設定するイベントパターンマッチングツリー１４１を決定する。続けて、ツリー再構築管理部７６０は、決定したイベントパターンマッチングツリー１４１について、イベントパターンマッチングツリー生成部７４０にツリー再構築要求を送信する。
図４７は、ツリー再構築管理部７６０が、イベントパターンマッチングツリー１４１の再構築を要求する動作を示すフローチャートである。
前提として、ツリー管理部４０１は、通信ができるように、予め、各イベント処理部４０２と、各イベント処理部４０２のツリールート属性マッチング率計測部７９０とイベントパターンマッチングツリー保持部１４０との識別子（図示しない）を把握しているものとする。
ツリー再構築管理部７６０は、一定時間毎に全てのツリールート属性マッチング率計測部７９０からマッチング率１３５を取得する（ステップＦｎ０）。
次に、ツリー再構築管理部７６０は、以下の第１及び第２の条件の両方を満足するように、イベントパターンマッチング判定システム７００が保持する全ての属性名５０２について、それぞれの属性名５０２をルートノード１９２に設定するイベントパターンマッチングツリー１４１の数を決定する。
その第１の条件は、相対的に低いマッチング率１３５を有する属性名５０２を保持するインスタンス５４０をできるだけ多くのイベントパターンマッチングツリー１４１のルートノード１９２のインスタンス５４０とすることである。この第１の条件の目的は、低いマッチング率１３５を有する属性名５０２を保持するインスタンス５４０をルートノード１９２とするイベントパターンマッチングツリー１４１がなるべくたくさんのイベントパターンマッチング判定部７１０で参照されるようにすることである。
第２の条件は、全ての属性名５０２について、これらの各属性名５０２を保持するインスタンス５４０が少なくとも１つのイベントパターンマッチングツリー１４１のルートノード１９２のインスタンス５４０になるようにすることである。この第２の条件の目的は、全ての属性名５０２について、マッチング率１３５を計測するためである（ステップＦｎ１）。
ツリー再構築管理部７６０は、例えば、属性名５０２の総数をｎ、イベント処理部４０２の総数をｍとした場合、対応するマッチング率１３５が最も低い属性名５０２を保持するインスタンス５４０をルートノード１９２とするイベントパターンマッチングツリー１４１の個数を、（ｍ−ｎ＋１）個と決定する。更に同様に、ツリー再構築管理部７６０は、対応するマッチング率１３５が最も低い属性名５０２以外の属性名５０２を保持するインスタンス５４０をルートノード１９２とするイベントパターンマッチングツリー１４１の個数を、各々１つと決定する。また、ツリー再構築管理部７６０は、上述のイベントパターンマッチングツリー１４１の数を、他の求め方、例えば、各属性名５０２それぞれが有するマッチング率１３５の逆数に比例するように決定する求め方をしてもよい。
次に、ツリー再構築管理部７６０は、イベントパターンマッチングツリー生成部７４０にツリー再構築要求を送信する（ステップＦｎ２）。
次に、イベントパターンマッチングツリー生成部７４０は、受信したツリー再構築要求に基づいて、イベントパターンマッチングツリー１４１の生成を行う。続けて、イベントパターンマッチングツリー生成部７４０は、全イベントパターンマッチングツリー保持部７５０に、この生成したイベントパターンマッチングツリー１４１を記録する（ステップＦｎ３）。
次に、ツリー再構築管理部７６０は、各イベント処理部４０２のイベントパターンマッチングツリー保持部１４０に記録するイベントパターンマッチングツリー１４１をランダムに決定する（ステップＦｎ４）。
次に、ツリー再構築管理部７６０は、各イベント処理部４０２に対して以下のステップＦｎ５、ステップＦｎ６及びステップＦｎ７の処理を行う。
まず、ツリー再構築管理部７６０は、全イベントパターンマッチングツリー保持部７５０から、イベント処理部４０２内のイベントパターンマッチングツリー保持部１４０に記録するイベントパターンマッチングツリー１４１を取得する（ステップＦｎ５）。
次に、ツリー再構築管理部７６０は、取得したイベントパターンマッチングツリー１４１をイベントパターンマッチングツリー保持部１４０に記録する（ステップＦｎ６）。
次に、ツリー再構築管理部７６０は、このイベントパターンマッチングツリー１４１のルートノード１９２のインスタンス５４０に格納されている属性名５０２を、そのイベント処理部４０２内のツリールート属性マッチング率計測部７９０に送信する（ステップＦｎ７）。
次に、ツリー再構築管理部７６０は、全てのイベント処理部４０２について処理を実行したか否かを判定する（ステップＦｎ８）。そして、全てのイベント処理部４０２について処理が完了した場合（ステップＦｎ８でＹＥＳ）、処理は終了する。また、処理が完了していないイベント処理部４０２が存在する場合、処理はステップＦｎ５に戻る。
図４８は、ツリールート属性マッチング率計測部７９０がマッチング率計測テーブル１３１を更新する動作を示すフローチャートである。
ツリールート属性マッチング率計測部７９０は、ツリー再構築管理部７６０から、イベントパターンマッチングツリー１４１のルートノード１９２に格納されている属性名５０２を受信する（ステップＦｐ０）。
次に、ツリールート属性マッチング率計測部７９０は、マッチング率計測テーブル１３１に登録されている行を削除する（ステップＦｐ１）。
次に、ツリールート属性マッチング率計測部７９０は、マッチング率計測テーブル１３１に新しい行を生成し、属性名１３２にステップＦｐ０で受信した属性名５０２を、受信イベント数１３３に「０」を、マッチングイベント数１３４に「０」を、マッチング率１３５に「０」を、それぞれ格納する（ステップＦｐ２）。
上述した本実施形態における効果は、第１の実施形態の効果に加えて、イベントパターンマッチング判定システム７００における処理負荷が減ることにある。
その理由は、複数のイベントパターンマッチングツリー保持部に保持されているイベントパターンマッチングツリー１４１のルートノード１９２の属性値一致判定インスタンス１４２において、イベントパターン５１０に出現する属性名５０２のマッチング率１３５を計測するようにしたためである。
［第５の実施形態］
次に本発明の第５の実施形態について、図面を参照して詳細に説明する。本実施形態は、本発明の基本的な要素のみを含む実施形態である。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については省略する。
図４９は、第５の実施形態の構成を示すブロック図である。
図４９を参照すると、本実施形態は、イベントパターンマッチングツリー生成部１２０、マッチング率計測部１３０及びイベントパターンテーブル保持部１５０を含む。
イベントパターンテーブル保持部１５０は、属性名５０２及び属性値５０３よりなる部分イベントパターン５１１を含む少なくとも１つのイベントパターン５１０、を保持する。
マッチング率計測部１３０は、属性名５０２及び属性値５０３よりなる属性５０１を含むイベントとイベントパターンテーブル保持部１５０に保持されているイベントパターン５１０とに基づいて、属性名５０２に対応するマッチング率１３５を計測する。
イベントパターンマッチングツリー生成部１２０は、イベントパターンテーブル保持部１５０に保持されているイベントパターン５１０と、マッチング率計測部１３０が計測したマッチング率１３５とに基づいて、対応するマッチング率１３５が相対的に低い属性名５０２を含む属性値一致判定インスタンス１４２を相対的に上位に配置したイベントパターンマッチングツリー１４１を生成する。
上述した本実施形態における効果は、パターンマッチング判定を効率よく行うために最適な、イベントパターンマッチングツリーを生成することを可能にできることである。
その理由は、計測したマッチング率１３５に基づいて、対応するマッチング率１３５が低い属性名５０２を含むインスタンス５４０を上位のノード１９１に配置してイベントパターンマッチングツリー１４１を生成するようにしたからである。
このことにより、イベントパターンマッチングツリーの上位部分での処理、即ちパターンマッチングの処理の早い段階、において受信したイベントがイベントパターンにマッチしないことを発見すること、即ちパターンマッチング判定を高速に行うことができる。
以上の各実施形態で説明した各構成要素は、例えば、プログラムにより所定の処理をコンピュータに実行させてもよい。
ここで、イベントパターンマッチング判定システム１００、２００、６００及び７００は、図５１に示すような、汎用的なコンピュータ装置３１０によって構成されてもよい。図５１は、本発明のコンピュータ装置を用いた実施形態の構成を示すブロック図である。
図５１を参照すると、コンピュータ装置３１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３１２と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３１３と、記憶装置（記憶媒体とも呼ばれる、例えばハードディスク装置）３１４とを備えている。
さらに、コンピュータ装置３１０は、入出力インタフェース部３１５を備えている。
この場合、イベントパターンマッチング判定システム１００、２００、６００及び７００に含まれる各構成要素は、ＣＰＵ３１１とＲＡＭ３１２とＲＯＭ３１３と記憶装置３１４とに対応する。同じく、第５の実施形態のイベントパターンテーブル保持部１５０、イベントパターンマッチングツリー生成部１２０及びマッチング率計測部１３０は、ＣＰＵ３１１とＲＡＭ３１２とＲＯＭ３１３と記憶装置３１４とに対応する。ＣＰＵ３１１によって実行されるプログラムは、記憶装置３１４に記憶される。尚、上記の各プログラムの一部は、ＲＯＭ３１３に記憶されてもよい。
ＣＰＵ３１１は、記憶装置３１４に記憶されたプログラムをＲＡＭ３１２に読み込み、読み込んだプログラムに基づいて、各実施形態の動作を示すフローチャートを用いて説明した、所定の処理を実行する。
入出力インタフェース部３１５は、ＣＰＵ３１１の指示に基づいて、イベント入力者８２０、イベント受信者８３０及びイベントパターン管理者８４０と、イベントパターンマッチング判定システム１００、２００、６００及び７００との間の、データの送受信を実行する。入出力インタフェース部３１５は、イベントパターンマッチング判定部１１０、２１０、７１０、イベントパターン受信部１６０、２６０、イベント受信部２８０、６８０及び７８０に含まれてもよい。
以上の各実施形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、各構成要素は、複数の構成要素が１個のモジュールとして実現されたり、一つの構成要素が複数のモジュールで実現されたりしてもよい。また、各構成要素は、ある構成要素が他の構成要素の一部であったり、ある構成要素の一部と他の構成要素の一部とが重複していたり、といったような構成であってもよい。
また、以上説明した各実施形態では、複数の動作をフローチャートの形式で順番に記載してあるが、その記載の順番は複数の動作を実行する順番を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の順番は内容的に支障しない範囲で変更することができる。
更に、以上説明した各実施形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作と他の動作との実行タイミングが部分的に乃至全部において重複していたりしていてもよい。
更に、以上説明した各実施形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作の全ての関係を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の関係は内容的に支障のない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されて良い。
尚、以上説明した各実施形態における各構成要素は、必要に応じ可能であれば、ハードウェアで実現されても良いし、ソフトウェアで実現されても良いし、ハードウェアとソフトウェアの混在により実現されても良い。
また、各構成要素の物理的な構成は、以上の実施形態の記載に限定されることはなく、独立して存在しても良いし、組み合わされて存在しても良いしまたは分離して構成されても良い。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
第１の属性名及び属性値よりなる部分イベントパターンを含む少なくとも１つのイベントパターンを保持するイベントパターンテーブル保持部と、
第２の属性名及び属性値よりなる属性を含むイベントと前記イベントパターンテーブル保持部に保持されているイベントパターンとに基づいて、前記第１の属性名に対応する第１のマッチング率を計測する第１のマッチング率計測部と、
前記イベントパターンテーブル保持部に保持されているイベントパターンと前記第１のマッチング率とに基づいて、対応する前記マッチング率が相対的に低い前記第１の属性名を含む属性値一致判定インスタンスを相対的に上位に配置したイベントパターンマッチングツリーを生成するイベントパターンマッチングツリー生成部とを含む
パターンマッチング装置。
（付記２）
前記第１のマッチング率計測部は、前記属性と、前記イベントパターンテーブル保持部に保持されている前記イベントパターンに含まれる一部または全ての前記部分イベントパターンとのマッチングを行い、当該マッチングの結果に基づいて前記第１の属性名毎に前記第１のマッチング率を計測する
ことを特徴とする付記１記載のパターンマッチング装置。
（付記３）
前記イベントパターンマッチングツリーに基づいて、前記イベントについてイベントマッチングを行うイベントパターンマッチング判定部を更に含み、
前記第１のマッチング率計測部は、前記イベントパターンマッチング判定部のマッチングの結果に基づいて、前記第１の属性名毎の前記第１のマッチング率を計測する
ことを特徴とする付記１記載のパターンマッチング装置。
（付記４）
前記第１のマッチング率に基づいて前記第１の属性名の内の少なくとも１つを選択するツリー再構築管理部と、
前記属性と前記ツリー再構築管理部が選択した属性名を含む部分イベントパターンとのマッチングを行い、当該マッチングの結果に基づいて前記第１の属性名毎に第２のマッチング率を計測する第２のマッチング率計測部とを更に含み、
前記イベントパターンマッチングツリー生成部は、前記第２のマッチング率に基づいて、前記イベントパターンマッチングツリーを生成する
ことを特徴とする付記３記載のパターンマッチング装置。
（付記５）
前記イベントパターンマッチング判定部と、
前記イベントパターンマッチングツリーのルートノードの属性値一致判定インスタンスに含まれる属性名に対応する第１のマッチング率を計測する前記第１のマッチング率計測部とを含む、複数のイベント処理部と、
複数のイベント処理部の内の１つを予め定められた基準に基づいて選択し、受信したイベントを当該イベント処理部に送信するイベント受信部と、
前記イベントパターンマッチングツリー生成部が生成したイベントパターンマッチングツリーを保持する全イベントパターンマッチングツリー保持部と、
各前記イベント処理部が計測した第１のマッチング率に基づいて、前記イベント処理部それぞれに送信するイベントパターンマッチングツリーを決定するツリー再構築管理部とを更に含む
ことを特徴とする付記３記載のパターンマッチング装置。
（付記６）
前記イベントパターンマッチングツリー生成部が生成したイベントマッチングツリーを保持するイベントパターンマッチングツリー保持部を有する
ことを特徴とする付記１乃至５のいずれかに記載のパターンマッチング装置。
（付記７）
第２の属性名及び属性値よりなる属性を含むイベントとイベントパターンテーブル保持部に保持されている第１の属性名及び属性値よりなる部分イベントパターンを含むイベントパターンとに基づいて、前記第１の属性名に対応する第１のマッチング率を計測し、
前記イベントパターンテーブル保持部に保持されているイベントパターンと前記第１のマッチング率とに基づいて、対応する前記マッチング率が相対的に低い前記第１の属性名を含む属性値一致判定インスタンスを相対的に上位に配置したイベントパターンマッチングツリーを生成する
パターンマッチング方法。
（付記８）
前記第１のマッチング率の計測は、前記属性と、前記イベントパターンテーブル保持部に保持されている前記イベントパターンに含まれる一部または全ての前記部分イベントパターンとのマッチングを行い、当該マッチングの結果に基づいて前記第１の属性名毎に前記第１のマッチング率を計測する
ことを特徴とする付記７記載のパターンマッチング方法。
（付記９）
前記イベントパターンマッチングツリーに基づいて、前記イベントについてイベントマッチングを行い、
前記第１のマッチング率の計測は、前記イベントマッチングの結果に基づいて、前記第１の属性名毎の前記第１のマッチング率を計測する
ことを特徴とする付記７記載のパターンマッチング方法。
（付記１０）
前記第１のマッチング率に基づいて前記第１の属性名の内の少なくとも１つを選択し、
前記属性と前記選択した第１の属性名を含む部分イベントパターンとのマッチングを行い、当該マッチングの結果に基づいて前記第１の属性名毎に第２のマッチング率を計測し、
前記イベントパターンマッチングツリーの生成は、前記第２のマッチング率に基づいて、前記イベントパターンマッチングツリーを生成する
ことを特徴とする付記９記載のパターンマッチング方法。
（付記１１）
前記イベントパターンマッチングツリーの生成は、生成した前記イベントパターンマッチングツリーを全イベントパターンマッチングツリー保持部に送信し、
各前記第１のマッチング率に基づいて、全イベントパターンマッチングツリー保持部が保持する前記イベントパターンマッチングツリーの内、前記イベントパターンマッチング判定ステップに送信するイベントパターンマッチングツリーを決定し、
前記イベントパターンマッチングツリーに基づく、前記イベントパターンのマッチングは、当該決定されたイベントパターンマッチングツリーに基づいて、前記イベントについてマッチングを行い、
前記第１のマッチング率の計測は、当該マッチングの結果に基づいて、前記イベントパターンマッチングツリーのルートノードの属性値一致判定インスタンスに含まれる属性名に対応する第１のマッチング率を計測する
ことを特徴とする付記９記載のパターンマッチング方法。
（付記１２）
第２の属性名及び属性値よりなる属性を含むイベントとイベントパターンテーブル保持部に保持されている第１の属性名及び属性値よりなる部分イベントパターンを含むイベントパターンとに基づいて、前記第１の属性名に対応する第１のマッチング率を計測し、
前記イベントパターンテーブル保持部に保持されているイベントパターンと前記第１のマッチング率とに基づいて、対応する前記マッチング率が相対的に低い前記第１の属性名を含む属性値一致判定インスタンスを相対的に上位に配置したイベントパターンマッチングツリーを生成する処理、をコンピュータに実行させる
パターンマッチングプログラムを記録した媒体。
（付記１３）
前記第１のマッチング率の計測は、前記属性と、前記イベントパターンテーブル保持部に保持されている前記イベントパターンに含まれる一部または全ての前記部分イベントパターンとのマッチングを行い、当該マッチングの結果に基づいて前記第１の属性名毎に前記第１のマッチング率を計測する処理をコンピュータに実行させる
ことを特徴とする付記１２記載のパターンマッチングプログラムを記録した媒体。
（付記１４）
前記イベントパターンマッチングツリーに基づいて、前記イベントについてイベントマッチングを実行し、
前記第１のマッチング率の計測は、前記イベントマッチングの結果に基づいて、前記第１の属性名毎の前記第１のマッチング率を計測する処理をコンピュータに実行させる
ことを特徴とする付記１２記載のパターンマッチングプログラムを記録した媒体。
（付記１５）
前記第１のマッチング率に基づいて前記第１の属性名の内の少なくとも１つを選択し、
前記属性と前記選択した第１の属性名を含む部分イベントパターンとのマッチングを行い、当該マッチングの結果に基づいて前記第１の属性名毎に第２のマッチング率を計測し、
前記イベントパターンマッチングツリーの生成は、前記第２のマッチング率に基づいて、前記イベントパターンマッチングツリーを生成する処理をコンピュータに実行させる
ことを特徴とする、付記１４記載のパターンマッチングプログラムを記録した媒体。
（付記１６）
前記イベントパターンマッチングツリーの生成は、生成した前記イベントパターンマッチングツリーを全イベントパターンマッチングツリー保持部に送信し、
各前記第１のマッチング率に基づいて、全イベントパターンマッチングツリー保持部が保持する前記イベントパターンマッチングツリーの内、前記イベントパターンマッチング判定ステップに送信するイベントパターンマッチングツリーを決定し、
当該決定されたイベントパターンマッチングツリーに基づく、前記イベントパターンのマッチングは、当該決定されたイベントパターンマッチングツリーに基づいて、前記イベントについてイベントマッチングを行い、
前記第１のマッチング率の計測は、当該マッチングの結果に基づいて、前記イベントパターンマッチングツリーのルートノードの属性値一致判定インスタンスに含まれる属性名に対応する第１のマッチング率を計測する処理をコンピュータに実行させる
ことを特徴とする付記１４記載のパターンマッチングプログラムを記録した媒体。
（付記１７）
第１の属性名及び属性値よりなる部分イベントパターンを含む少なくとも１つのイベントパターンを保持するイベントパターンテーブル保持部と、
第２の属性名及び属性値よりなる属性を含むイベントと前記イベントパターンテーブル保持部に保持されているイベントパターンとに基づいて、前記第１の属性名に対応する第１のマッチング率を計測する第１のマッチング率計測部と、
前記イベントパターンテーブル保持部に保持されているイベントパターンと前記第１のマッチング率とに基づいて、対応する前記マッチング率が相対的に低い前記第１の属性名を含む属性値一致判定インスタンスを相対的に上位に配置したイベントパターンマッチングツリーを生成するイベントパターンマッチングツリー生成部とを含む
パターンマッチングシステム。
（付記１８）
前記第１のマッチング率計測部は、前記属性と、前記イベントパターンテーブル保持部に保持されている前記イベントパターンに含まれる一部または全ての前記部分イベントパターンとのマッチングを行い、当該マッチングの結果に基づいて前記第１の属性名毎に前記第１のマッチング率を計測する
ことを特徴とする付記１７記載のパターンマッチングシステム。
（付記１９）
前記イベントパターンマッチングツリーに基づいて、前記イベントについてイベントマッチングを行うイベントパターンマッチング判定部を更に含み、
前記第１のマッチング率計測部は、前記イベントパターンマッチング判定部のマッチングの結果に基づいて、前記第１の属性名毎の前記第１のマッチング率を計測する
ことを特徴とする付記１７記載のパターンマッチングシステム。
（付記２０）
前記第１のマッチング率に基づいて前記第１の属性名の内の少なくとも１つを選択するツリー再構築管理部と、
前記属性と前記ツリー再構築管理部が選択した属性名を含む部分イベントパターンとのマッチングを行い、当該マッチングの結果に基づいて前記第１の属性名毎に第２のマッチング率を計測する第２のマッチング率計測部とを更に含み、
前記イベントパターンマッチングツリー生成部は、前記第２のマッチング率に基づいて、前記イベントパターンマッチングツリーを生成する
ことを特徴とする付記１９記載のパターンマッチングシステム。
（付記２１）
前記イベントパターンマッチング判定部と、
前記イベントパターンマッチングツリーのルートノードの属性値一致判定インスタンスに含まれる属性名に対応する第１のマッチング率を計測する前記第１のマッチング率計測部とを含む、複数のイベント処理部と、
複数のイベント処理部の内の１つを予め定められた基準に基づいて選択し、受信したイベントを当該イベント処理部に送信するイベント受信部と、
前記イベントパターンマッチングツリー生成部が生成したイベントパターンマッチングツリーを保持する全イベントパターンマッチングツリー保持部と、
各前記イベント処理部が計測した第１のマッチング率に基づいて、前記イベント処理部それぞれに送信するイベントパターンマッチングツリーを決定するツリー再構築管理部とを更に含む
ことを特徴とする付記１９記載のパターンマッチングシステム。
（付記２２）
前記イベントパターンマッチングツリー生成部が生成したイベントマッチングツリーを保持するイベントパターンマッチングツリー保持部を有する
ことを特徴とする付記１７乃至２１のいずれかに記載のパターンマッチングシステム。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、２０１０年３月１日に出願された日本出願特願２０１０−０４３９５４を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【００１０】
本発明は、条件に合致した人に広告を配信する広告配信システムや、待ち合わせ相手が待ち合わせ場所に到着したら、それを知らせるといった待ち合わせ支援サービス（プレゼンスサービス）といった用途に適用できる。
【符号の説明】
【００１１】
１００  イベントパターンマッチング判定システム
１１０  イベントパターンマッチング判定部
１２０  イベントパターンマッチングツリー生成部
１３０  ツリー依存マッチング率計測部
１３１  マッチング率計測テーブル
１３３  受信イベント数
１３４  マッチングイベント数
１３５  マッチング率
１４０  イベントパターンマッチングツリー保持部
１４１  イベントパターンマッチングツリー
１４２  属性値一致判定インスタンス
１４３  属性名フィールド
１４４  ＊フィールド
１４５  ハッシュテーブル
１４６  イベント通知インスタンス
１４７  イベントパターンＩＤリスト
１４８  キー
１４９  バリュー
１９２  ルートノード
１９３  リーフノード
１９４  ポインタ
１５０  イベントパターンテーブル保持部
１５１  イベントパターンテーブル
１６０  イベントパターン受信部
２００  イベントパターンマッチング判定システム
２１０  イベントパターンマッチング判定部
２２０  イベントパターンマッチングツリー生成部
２６０  イベントパターン受信部
２７０  マッチング率計測部
２７１  マッチング率計測テーブル
２７２  属性名
２７３  受信イベント数
２７４  マッチングイベント数
２７５  マッチング率
２７６  部分イベントパターンリスト
２８０  イベント受信部
３１０  コンピュータ装置
３１１  ＣＰＵ
３１２  ＲＡＭ
３１３  ＲＯＭ
３１４  記憶装置
３１５  入出力インタフェース部
５００  イベント
５０１  属性
５０２  属性名
５０３  属性値
５１０  イベントパターン
５１１  部分イベントパターン
５１２  イベントパターンＩＤ
５１３  イベントパターン登録要求
５１４  イベントパターン登録要求
５１５  イベントパターン削除要求
５１６  イベントパターン削除要求
６００  イベントパターンマッチング判定システム
６２０  イベントパターンマッチングツリー生成部
６３０  ツリー再構築管理部
６７０  マッチング率計測部
６８０  イベント受信部
７００  イベントパターンマッチング判定システム
７１０  イベントパターンマッチング判定部
７４０  イベントパターンマッチングツリー生成部
７５０  全イベントパターンマッチングツリー保持部
７６０  ツリー再構築管理部
７８０  イベント受信部
７９０  ツリールート属性マッチング率計測部
８２０  イベント入力者
８３０  イベント受信者
８４０  イベントパターン管理者
９００  システム
９０１  ノード
９０２  ルートノード
９０３  リーフノード
９０４  エッジ
９０５  属性名
９０６  属性値
９０７  サブスクリプション
【図１】
2011108619.tif 000003
【図２】
2011108619.tif 000004
【図３】
2011108619.tif 000005
【図４】
2011108619.tif 000006
【図５】
2011108619.tif 000007
【図６】
2011108619.tif 000008
【図７】
2011108619.tif 000009
【図８】
2011108619.tif 000010
【図９】
2011108619.tif 000011
【図１０】
2011108619.tif 000012
【図１１】
2011108619.tif 000013
【図１２】
2011108619.tif 000014
【図１３】
2011108619.tif 000015
【図１４】
2011108619.tif 000016
【図１５】
2011108619.tif 000017
【図１６】
2011108619.tif 000018
【図１７】
2011108619.tif 000019
【図１８】
2011108619.tif 000020
【図１９】
2011108619.tif 000021
【図２０】
2011108619.tif 000022
【図２１】
2011108619.tif 000023
【図２２】
2011108619.tif 000024
【図２３】
2011108619.tif 000025
【図２４】
2011108619.tif 000026
【図２５】
2011108619.tif 000027
【図２６】
2011108619.tif 000028
【図２７】
2011108619.tif 000029
【図２８】
2011108619.tif 000030
【図２９】
2011108619.tif 000031
【図３０】
2011108619.tif 000032
【図３１】
2011108619.tif 000033
【図３２】
2011108619.tif 000034
【図３３】
2011108619.tif 000035
【図３４】
2011108619.tif 000036
【図３５】
2011108619.tif 000037
【図３６】
2011108619.tif 000038
【図３７】
2011108619.tif 000039
【図３８】
2011108619.tif 000040
【図３９】
2011108619.tif 000041
【図４０】
2011108619.tif 000042
【図４１】
2011108619.tif 000043
【図４２】
2011108619.tif 000044
【図４３】
2011108619.tif 000045
【図４４】
2011108619.tif 000046
【図４５】
2011108619.tif 000047
【図４６】
2011108619.tif 000048
【図４７】
2011108619.tif 000049
【図４８】
2011108619.tif 000050
【図４９】
2011108619.tif 000051
【図５０】
2011108619.tif 000052
【図５１】
2011108619.tif 000053
【手続補正書】
【提出日】平成24年8月22日(2012.8.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項９
【補正方法】変更
【補正の内容】
【請求項９】
第２の属性名及び属性値よりなる属性を含むイベントとイベントパターンテーブル保持部に保持されている第１の属性名及び属性値よりなる部分イベントパターンを含むイベントパターンとに基づいて、前記第１の属性名に対応するマッチング率を計測し、
前記イベントパターンテーブル保持部に保持されているイベントパターンと前記第１のマッチング率とに基づいて、対応する前記マッチング率が相対的に低い前記第１の属性名を含む属性値一致判定インスタンスを相対的に上位に配置したイベントパターンマッチングツリーを生成する、処理をコンピュータに実行させる
パターンマッチングプログラム。
【国際調査報告】
2011108619.tif 000054
2011108619.tif 000055