次に、本発明について図面を参照して詳細に説明する。
(用語の整理)
最初に本実施形態で使用する用語について整理しておく。
「イベント」とは、携帯端末、RF(Radio Frequency)タグ、各種センサ(赤外線センサや超音波センサなどの)等を備えた所定の装置がデータを発生すること、および、モジュール(ソフトウェアの処理単位)などが所定の条件一致などからデータを発生することである。
具体的に発生されるデータを使用してイベントを説明すると次のとおりとなる。イベントとは、例えば携帯電話が、図1に一例を示すような、携帯端末を識別する「端末ID(IDentification)」と、その端末が置かれている「場所」と、発生した「時刻」とから構成されるデータを、発生することである。また、そのデータを受け取ること、および、受け取ったデータの組も、受け取った装置にとってイベントと言う。なお、ここに記載のデータの組み合わせは、あくまで説明の便宜のために記載したものであり、データの数や内容はこれに限られるものではない。
イベントにより発生したデータを構成する個別のデータの名称を「属性名」と言う。
例えば、図1の例において、「端末ID」、「場所」、「時刻」などが、属性名となる。これら属性名の実際の値、つまり、イベント1の「ID1」、「東京都港区芝浦2−11−5」、「10:10:10」などを「属性値」と言う。また、属性名と属性値を合わせて「属性」と呼ぶこととする。
「イベントパターン」とは、イベントの判定条件であり、イベントを構成する一部または全体の属性、つまり一部または全体の属性名に対して属性値を指定したものである。
具体的には、図2に一例を示すように、イベントを構成する属性名(図1の端末ID,場所,時刻)の一部または全体が指定される。例えば、図2のパターン1は、属性名「端末ID」に対して属性値「ID1」が、属性名「場所」に対して属性値「東京都港区芝浦1−1−1」が指定されているイベントパターンである。
「イベントの一致判定」とは、イベントパターンで指定される全ての属性が、判定対象であるイベントの属性と一致するかどうかを判定することである。なお、イベントパターンは、必ずしもイベントの全ての属性を指定するものではない。そのため、イベントパターンで指定された属性が一致すれば一致と判定し、イベントパターンで指定されない属性の属性値の内容の判定は行わない。(以下、場合により、イベントの一致判定の処理をマッチングと言う場合もある。また、一致した場合をイベントがイベントパターンにマッチしたと言う場合もある。)
例えば、図2のパターン1は、指定されている全ての属性(端末IDと場所)が、図1のイベント1と一致するため、図1のイベント1は、図2のパターン1に一致(マッチ)する、または、マッチングしたと判定される。
なお、イベントパターンにおいて記載されていない属性名、および、属性値の「アスタリスク(*)」は、どのような値でもよいことを意味している。図2のパターン1では、「時刻」が指定されていないためどのような値でもよく、パターン2では、時刻が11時であれば、分秒はどのような値でもよいことを意味している。
(第1の実施形態)
まず、本発明の第1の実施形態の構成および動作について図3−図4を参照して詳細に説明する。
図3は、第1の実施形態に係る一致判定装置1の構成を示すブロック図である。
属性名優先情報生成部6は、一致判定の対象となる属性名の一致判定処理における優先を示す「属性名優先情報」を生成、または、使用者または図示しない外部装置などにより予め設定されて保持している。
一致情報生成部7は、図2に一例を示したような一致判定のためのイベントパターンと属性名優先情報生成部6に保持されている「属性名優先情報」などを基に、一致判定部8がイベントの一致判定を行うための「一致判定情報」を生成して保持する。
一致判定部8は、図示しない他の装置などで発生した「イベント」を受け、一致情報生成部7の保持されている「一致判定情報」と比較しイベントの一致判定を行う。さらに、一致判定部8は、一致判定の結果、イベントがイベントパターンと一致した場合は、図示しない他の装置または使用者などに「イベント通知」を通知する。
続いて、第1の実施形態に係る一致判定装置1の詳細な動作について説明する。
属性名優先情報生成部6は、一致情報生成部7で一致判定情報を作成する際に使用する属性名優先情報を保持している。この属性名優先情報生成部6で保持している属性名優先情報は、出来るだけ一致判定部8における一致処理において不一致判定が早くできるように決定されている。
例えば、判定方法としてツリー(木)構造を使用する場合、出来るだけツリーのルート(根)に近い部分で不一致の判定が行われるように決定される。
このような属性名の優先の決め方としては、いろいろな方法を採用することが出来るが、例えば、イベントの属性名に対する属性値の(種類の)数を基に決定する方法を採用することができる。各属性値が均等に発生する場合は、属性値の数をnとすると、各属性値の発生確率Pは、
P=1/n
となる。従って、属性値の数が多い属性名ほど、個々の属性値の発生確率が小さくなる。つまり、属性値の数が多い属性値ほど、一致する可能性が低い、逆に言うと、不一致となる可能性が高いこととなる。従って、判定のおける優先の順番を、各属性名に対する属性値の数の多さの順とすることにより、不一致となる可能性の大きな属性名から判定を行うことができることとなる。
第1の実施形態の属性名優先情報生成部6も属性値の数の多い属性名を優先するように属性名優先情報を作成し保存している。
このような属性名優先情報について、図4を参照してさらに詳しく説明する。
図1に示すイベントの属性名の属性値の数として、例えば図4(A)に示すようになっていたとする。図4(A)では、「時刻」が属性値の数が最も多く、続いて「端末ID」、「場所」の順となっている。そのため、優先する属性名の順番も「時刻」「端末ID」「場所」の順となる。(以下、属性名の優先の順番を、優先度と言い、優先の順番が前のものを優先度が高い、後ろのものを優先度が低いと言う場合もある。)
このように作成した属性名優先情報を属性名優先情報生成部6に保存する。保存する方法としては、図4(B)に示すように単純に優先度の高い属性名から保存するようにしてもよいし、図4(C)に示すように属性名と優先度を保存するようにしてもよく、保存形式は問わない。
なお、属性名優先情報生成部6への優先情報の保存は、今までの説明のように属性名優先情報生成部6で処理を行って作成するのではなく、他の装置で作成を行い、その結果を予め属性名優先情報生成部6に登録するようにしてもよい。また、一致判定装置1の使用中に状況に合わせて、図示しない他の装置または使用者などが設定または変更できるようにしてもよい。
一致情報生成部7は、図示しない他の装置または使用者からイベントパターンを受け取り、一致判定部8での一致判定動作に使用する一致判定情報を作成、保持する。だたし、一致情報生成部7ので一致判定情報の生成は、前もってイベントパターンを受け取って保持しておき、図示しない外部装置や使用者に指定されたときに生成するようにしてもよい。
一致判定情報の生成をより詳しく説明すると、次のとおりとなる。
一致情報生成部7は、受け取るまたは保持しているイベントパターンと属性名優先情報生成部6が保持している属性名優先情報を基に、優先度の高い属性名から一致判定を行うように一致判定情報(例えば、ツリー構造をして一致判定情報ツリーなど)を生成する。
例えば、図4(B)に示すように「時刻」「端末ID」「場所」との順番に属性名優先情報が生成されていた場合、一致情報生成部7は、最初に「時刻」の判定、次に「端末ID」の判定、最後に「場所」の判定を行うような一致判定情報を生成し、保持する。
一致判定部8は、図示しないセンサなどからイベントを受け取ると、一致情報生成部7に保存されている一致判定情報を基にイベントが所定のイベントパターンと一致するかどうかの判定を行う。ここで、一致判定情報は、既に説明したとおり、不一致となる可能性高い属性から比較するようになっているため、不一致のイベントを、一致判定の処理の早い段階で判定する可能性が高くなっている。もし、一致するイベントパターンが有った場合は、図示しない他の装置へイベントが発生したことを示すイベント通知を行う。このイベント通知には、イベントまたはイベントパターンの種類などの情報も追加してもよい。一方、一致するイベントパターンが無い場合は、イベント通知の必要のないイベントが発生したと判断し、通知を行わずに判定処理を終了する。
なお、一致情報生成部7は、保持しているイベントパターンの追加、削除または変更などができるようにしてもよい。
さらに、一致情報生成部7で一致判定情報を生成するのではなく、生成は図示しない他の装置などで行い、その結果の一致判定情報を受け取って保持するようにしてもよい。
このような構成により、第1の実施形態のおける一致判定装置1は、イベントのイベントパタンとの一致判定において、不一致の判定を判定の早い段階で見つける可能性高い判定を行うことができる効果を実現している。
その理由は、一致判定部8で一致判定に使用する一致判定情報を、一致情報生成部7で不一致の可能性が高い属性からを行うように構成したためである。
(第2の実施形態)
次に、本発明の第2の実施形態の構成および動作について図5−図21を参照して詳細に説明する。
図5は、第2の実施形態に係る一致判定装置2の構成を示すブロック図である。
第2の実施形態に係る一致判定装置2は、イベントパターンを管理しているイベントパターン管理装置81と、イベントを送信してくるイベント通知装置82と、イベントの通知先であるイベント受信装置83と共に動作している。
第2の実施形態の属性名優先情報生成部6は、属性値情報保持部11、属性名優先決定部12、属性名情報保持部13を含んで構成されている。
第2の実施形態の一致情報生成部7は、イベントパターン保持部21、イベントパターン登録部22、イベントパターン削除部23、一致判定情報保持部24を含んで構成されている。
属性値情報保持部11は、属性名の優先順を決定するときに使用する属性値の情報(属性値情報)を保持している。
属性名優先決定部12は、属性値情報保持部11が保持している属性値情報を基に属性名の優先度を示す属性名優先情報を生成し、属性名情報保持部13に送り出す。
属性名情報保持部13は、属性名優先決定部12から属性名優先情報を受け取り保持し、必要に応じて、一致情報生成部7に送付する。
イベントパターン登録部22は、イベントパターン管理装置81からイベントパターンを受け取り、イベントパターン保持部21にイベントパターンを送付して保存させる。さらに、イベントパターン登録部22は、一致判定情報保持部24に指示を出して一致判定情報の作成・追加・変更も行う。この登録処理において、必要に応じて属性名優先情報生成部6から属性名優先情報も取得する。
イベントパターン削除部23は、イベントパターン管理装置81から指示を受け、イベントパターン保持部21に保持してされているイベントパターンの削除を行う。さらに、イベントパターン削除部23は、一致判定情報保持部24が保持している一致判定情報から削除指定されたイベントパターンに対応する情報の削除も行う。なお、イベントパターン削除部23も必要に応じて、属性名優先情報生成部6から属性名優先情報を取得してもよい。
イベントパターン保持部21は、イベントパターン登録部22から受け取ったイベントパターンを保持し、イベントパターン削除部23からの指示によりイベントパターンを削除する。
一致判定情報保持部24は、イベントパターン登録部22からの指示によりイベントパターンに対応した一致判定情報(以下、一致判定ツリー25と言う場合もある)の追加を行う。(ただし、初期状態で一致判定情報が無い場合は、一致判定情報の初期の作成も行う。)また、イベントパターン削除部23から指示により一致判定情報からイベントパターンに対応した一致判定情報の削除を行う。一致判定情報(一致判定ツリー25)は、一致判定部8におけるイベントの一致判定に使用されるため、一致判定情報保持部24に保持される。なお、第2の実施形態では、一致判定情報としてツリー構造を使用して説明するが、これはあくまで説明の便宜のためであり、他の構造や、他の判定条件を排除するものではない。
一致判定部8は、第1の実施形態と同様に、イベント通知装置82から受け取ったイベントを一致判定情報保持部24に保持されている一致判定ツリー25と比較し、イベントの一致判定を行い、イベントが一致した場合は、イベント受信装置83にイベント通知を行う。
続いて、第2の実施形態の動作について図面を参照して詳細に説明する。
最初のイベントの一致判定ツリー25について説明する。
図6に、第2の実施形態における、一致判定情報保持部24に保持されている一致判定ツリー25の一例を示す。一致判定ツリー25において、各ノード(節点)はインスタンス(実体)である。さらに、インスタンスには2種類あり、リーフ(葉)ノードは通知インスタンス33、リーフノード以外のノードは判定インスタンス32となっている。なお、一致判定情報保持部24の初期状態は、一致判定ツリー25が保存されていない状態である。
図7に、第2の実施形態における判定インスタンス32の一例を示す。
判定インスタンス32は、属性値の一致判定を行い、一致した場合に次のインスタンスに移動を行うインスタンスである。そのため、判定インスタンス32は、一致判定および移動先のため、いくつかのフィールド(領域)を備えている。
属性名・フィールドは、判定インスタンス32の一致判定で参照する属性名を保持している。
一致判定テーブル・フィールドは、判定インスタンス32の属性名・フィールドの属性名に対応する属性値をキー(判定用の鍵)とし、イベントの属性値がキーと同じ値だった場合の次に参照するインスタンスをバリュー(値)として保持している。
アスタリスク(以下、*と省略することもある)・フィールドは、イベントとのマッチングの時に、そのイベントの属性値によらず、次に参照するインスタンス(判定インスタンス32、または、通知インスタンス33)への参照を保持している。このアスタリスク・フィールドは、一致判定テーブル・フィールドに一致する属性値が無い場合に参照されることとなる。そのため、判定インスタンス32の属性名に対して、全ての属性値が指定されている場合は、つまり、属性値によらないイベントパターンが無い場合は、アスタリスク・フィールドは、次に参照するインスタンスを保持しない。
このような判定インスタンス32の情報を基に、一致判定部8は、一致判定を行う。もし、イベントの一致判定を行う際に、判定インスタンス32の一致判定テーブル・フィールドに一致する属性値が無く、アスタリスク・フィールドにも次に参照するインスタンスが無い場合は、一致するイベントパターンが無いと判定することとなる。
なお、判定インスタンス32は、他のフィールドを備えていても勿論よい。
図8は、第2の実施形態における通知インスタンス33の一例を示す。
通知インスタンス33は、図8に示すように、イベントパターンを識別するイベントパターンIDのリストを保持している。一致判定装置2において、受け取ったイベントを一致判定ツリー25とを比較し、いずれかのイベントパターンと一致すると、最終的に、イベントパターンに対応する通知インスタンス33に達する。そして、その通知インスタンス33に保持されているイベントパターンIDが、一致したイベントパターンのIDとなる。その結果、通知インスタンス33に保持されたイベントパターンIDが、イベント受信装置83に通知される。勿論、この通知は、イベントパターンIDに限定されるわけではなく、イベントパターンなどイベントに関連する他の情報を通知するようにしてもよい。
なお、通知インスタンス33も、他のフィールドを備えていても勿論よい。
次に、属性名の優先度設定の動作について説明する。
第2の実施形態の説明に使用する優先度としては、一例として既に説明した属性名の属性値の数を使用して説明を行う。つまり、第2の実施形態においての属性値情報保持部11に保持する属性値情報は、図4(A)と同じものとして説明するが、これに限られるわけではない。
なお、第2の実施形態の説明では、この属性値情報について、図示しない手段により、予め使用者が入力することにより設定するものとし、詳細な説明は省略するが、勿論他の手段によって保存されてもよい。
属性値情報は、図4(A)に示すように、各属性名に対して、属性値として取りうる値の数を表したものである。ここでは、属性名「端末ID」の属性値は1億通り、属性名「場所」の属性値は100万通り、属性値「時刻」の属性値は(実質)無限に値が存在することを示している。
なお、イベントは、各属性名に対して1つずつ属性値が実現されることとなる。
図9を使用して、属性名の優先度の設定の動作を詳細に説明する。なお、第2の実施形態では、一例として、図4(B)のように優先度に沿って属性名を並べるものとして以下の説明を行うがこれに限られるわけではない。
第2の実施形態の一致判定装置2における属性名の優先度設定は、まず、属性名優先決定部12が、属性値情報保持部11から、属性値情報(ここでは図4(A))を受け取る(ステップ201)。続いて属性名優先決定部12が属性値の数が多い属性名から並べた属性名の一覧表(属性名優先情報、図4(B))を作成する(ステップ202)。そして、作成した属性名優先情報を属性名情報保持部13に保存する(ステップ203)。
このような動作により、属性名情報保持部13に属性名優先情報が保持されることとなる。
続いて、イベントパターンを基に一致判定ツリー25の登録に関連する動作について詳細に説明する。
イベントパターン管理装置81から送られてきた登録すべきイベントパターンは、イベントパターン登録部22が受け取る。
イベントパターンを受け取ったイベントパターン登録部22は、一致判定ツリー25への登録の前準備として、受け取ったイベントパターンをイベントパターン保持部21に保存し、属性集合の作成を行う。
ここにおける属性集合とは、イベントパターンに含まれる属性(属性名と属性値の組)のデータの集合で、後ほど詳細に説明する。
その後、イベントパターン登録部22は、まず、一致判定情報保持部24に保存されている一致判定ツリー25のルートノードに相当する判定インスタンス32の属性名・フィールドを参照する。そして、属性集合に含まれる属性名のうち、ルートノードの判定インスタンス32の属性名と同じ属性名の属性値を基にルートノードの判定インスタンス32のフィールドのデータを更新する。
この更新処理は、例えば、ルートノードの判定インスタンス32の属性名と同じイベントパターンの属性名の属性値とその属性値に対応する次のインスタンス(子インスタンス)とを一致判定テーブル・フィールドに登録することにより行う。
なお、属性集合にルートノードの判定インスタンス32の属性名と一致する属性名がない場合は、そのイベントパターンでは、そのルートノードの属性値一致インスタンスの属性名を使用しないことを意味する。このため、一致判定テーブル・フィールドに一致する属性値が無い場合は、アスタリスク・フィールドに子インスタンスを登録する。
ルートノードの判定インスタンス32への登録が終了すると、イベントパターン登録部22は、ルートノードの判定インスタンス32から指定された子ノードに相当するインスタンスへの登録処理に移行する。
ここで、子ノードのインスタンスもルートノードと同じ判定インスタンス32の場合は、ルートノードの判定インスタンス32での処理と同じ処理を行うこととなる。そして、イベントパターン登録部22は、この処理をイベントパターンが終了するまで繰り返すこととなる。さらに、イベントパターンが終了すると、イベントパターン登録部22は、最後に登録した判定インスタンス32の子インスタンスとして通知インスタンス33を登録して、イベントパターンの登録を終了する。
一方、子ノードが通知インスタンス33であった場合は、いままで登録されたイベントパターンに比べ、今回登録となったイベントパターンに使用されている属性の数が多いことを示している。従って、このような場合は、新たに追加されたイベントパターンを判定するための判定インスタンス32を元々有った通知インスタンス33と置き換える。より詳細に説明すると、対象となった通知インスタンス33の親ノードに新たに作成した判定インスタンス32を子ノードとして登録し、新たに作成した判定インスタンス32のアスタリスク・フィールドの先として、元々有った通知インスタンス33を登録する。
この一致判定ツリー25の登録処理を図面を参照してさらに詳細に説明する。
イベントパターン登録部22によるイベントパターンの登録のフローチャートを図10に示す。
まず、イベントパターン登録部22は、受け取ったイベントパターンをイベントパターン保持部21の「イベントパターンテーブル」に登録する(ステップ301)。これは、後ほど動作の説明を行うイベントパターンの削除において使用するためである。イベントパターン登録部22は、イベントパターンをイベントパターン保持部21のイベントパターンテーブルへ登録するときに、イベントパターンを識別するためのキーとしてイベントパターンIDも登録する。この場合、イベントパターンテーブルのキーに対応するバリュー(値)は、受け取ったイベントパターンである。つまり、イベントパターンテーブルは、イベントパターンIDをキーとしてバリューであるイベントパターンを求めることが出来るテーブルとなっている。
なお、第2の実施形態では、イベントパターン登録部22がイベントパターン管理装置81からイベントパターンを受け取るときに、イベントパターンIDも受け取るとし、詳細な説明は省略する。なお、イベントパターンIDは、イベントパターン管理装置81ではなく、一致判定装置2が設定し、イベントパターン管理装置81に通知するようにしてもよい。
次に、イベントパターン登録部22は、イベントパターンで指定されている全ての属性(属性名と属性値の組)のコピーを生成する(ステップ302)。(以下、この属性のコピーの全ておよび以下で説明する一部の属性を削除した後を含め属性集合と言う。)
ここで、属性集合を説明しておく。イベントパターン登録部22が、一致判定ツリー25にイベントパターンを登録する場合、必ずしも、受け取ったイベントパターンの最初の属性から登録するとは限らない。これは、既に説明した第1の実施形態と同様に、第2の実施形態において、不一致判定の可能性が高い属性から登録するためである。そのため、一致判定ツリー25にイベントパターンを登録していく過程で、対象のイベントパターンの登録済みの属性と未登録の属性を管理することが必要である。ただし、登録済み属性は、登録以降は使用することがないため、未登録の属性を管理すればよい。そこで、第2の実施形態では、イベントパターンの登録に先駆け、イベントパターンに含まれる全ての属性による属性集合を作成し、一致判定ツリー25に属性を登録すると、その属性を属性集合から削除するようにしている。この結果、属性集合は常に一致判定ツリー25に未登録の属性で構成される集合となる。なお、属性集合は、最終的にイベントパターンの全ての属性が一致判定ツリー25に登録されると、空集合、つまり保持する属性が無くなることとなる。
続いて、イベントパターン登録部22は、一致判定情報保持部24の一致判定ツリー25にルートノードが存在しているか否か、つまり既に一致判定ツリー25が登録されているかどうかの判定を行う(ステップ303)。
もし、一致判定ツリー25にルートノードが存在していた場合は、ルートノードの登録処理をスキップして、イベントパターンの属性を一致判定ツリー25に登録する処理に移動する(ステップ307)。
一方、一致判定ツリー25にルートノードが存在しない、つまり一致判定ツリー25が一致判定情報保持部24に無い場合、そのままではイベントパターンを登録することが出来ないため、イベントパターン登録部22は一致判定ツリー25の登録処理を行う。この一致判定ツリー25の登録処理としては、まずルートノードとして、判定インスタンス32を生成する(ステップ304)。
なお、第2の実施形態では、イベントパターン登録部22、イベントパターン削除部23、および、一致判定部8は、予め一致判定ツリー25のルートノードにアクセスするための情報(ポインタなど)を保持しているものとする。
さらに、イベントパターン登録部22は、属性名情報保持部13に保持されている属性名優先情報を基に、最も優先度の高い属性名の決定する(ステップ305)。
そして、イベントパターン登録部22は、ステップ304で作成したルートノードの判定インスタンス32の属性名・フィールドにステップ305で決定した属性名を設定する(ステップ306)。
これにより、一致判定ツリー25のルートノードの属性値一致インスタンスが作成される。
この後は、イベントパターン登録部22は、ルートノードの判定インスタンス32から参照して一致判定ツリー25に属性集合の属性登録を実行する(ステップ307)。
次に一致判定ツリー25への属性登録の動作について、図面を参照してさらに詳細に説明する。
まず、以下の説明で、複数の種類のインスタンスが出てくるため、説明において各インスタンスの区別が明確になるように、次のように用語を規定しておく。
イベントパターンの登録処理で、現在の処理対象であるインスタンスには、「対象」を付けるものとする。つまり、対象判定インスタンスと、対象通知インスタンスとがあり、併せて対象インスタンスとする。処理の中で新たに作成するインスタンスには「追加」を付けるものとする。つまり、追加判定インスタンスと追加通知インスタンスとが有り、併せて追加インスタンスとする。対象判定インスタンスの子インスタンス、つまり現在の処理対象の判定インスタンスから参照されるインスタンスには、「参照」と付けるものとする。つまり、参照判定インスタンスと参照通知インスタンスが有り、併せて参照インスタンスとする。
なお、説明の便宜のため、「対象」等を付したインスタンスの符号番号は省略する。
また、場合により、インスタンス内のフィールドおよびフィールドに設定されているデータに関しても、次のとおりに省略することもある。例えば、判定インスタンス32の属性名・フィールドに設定されている属性名は、単に判定インスタンスの属性名と言うこともある。また、一致判定テーブル・フィールドの登録されているキーとしての属性の属性値及びバリューとしてのインスタンスを、一致判定テーブルの属性値とインスタンスなどと言うこともある。
続いて、属性登録動作についての説明の戻る。
まず、判定インスタンス32における属性登録動作について説明する。
図11は、処理対象のインスタンスが判定インスタンス32である場合の属性登録動作を示すフローチャートである。
まず、イベントパターン登録部22は、属性集合の中に、対象判定インスタンスの属性名が有るかどうかを判別する(ステップ401)。
なお、ここで属性名が見つかり、後ほどより詳細に説明する判定インスタンス32への登録処理が終了すると、その属性名の属性は参照済みとなり、属性集合から取り除くこととなる。
図11に戻り、イベントパターン登録部22は、属性名に対応する属性が属性集合に存在したかどうかにより次の動作を切替える(ステップ402)。
属性が存在した場合(ステップ402の左)、その属性を基に、イベントパターン登録部22は、イベントパターンとして、一致判定ツリー25における対象判定インスタンスの一致判定テーブルを更新する処理を実行する(ステップ403)。この更新の処理では、必要に応じて追加インスタンスの取得、または、生成も行われる。この処理については、後ほどさらに詳細に説明する。
一方、そのような属性が存在しなかった場合、イベントパターン登録部22は、任意の属性値を対応するアスタリスク・フィールドを更新する処理を実行する(ステップ404)。この処理も必要に応じて追加インスタンスを取得、または、生成が行われる。この処理についても、後ほど詳細に説明する。
いずれの場合においても、フィールドの更新の処理が終了すると、追加インスタンスが有った場合は、その追加インスタンスに異動し、追加が無かった場合は参照インスタンスに異動して属性登録を行うこととなる(ステップ405)。
図11における属性集合に属性が有った場合(ステップ403)の動作について、図12を参照してさらに詳細に説明する。
まず、イベントパターン登録部22は、対象判定インスタンスの一致判定テーブルに属性集合の属性名に対する属性値の登録があるかどうかを判定する(ステップ501)。より詳細に説明すると、次のようになる。まず、属性集合から対象判定インスタンスの属性名の組である属性値を取り出し、その属性値が対象判定インスタンスの一致判定テーブルに有るかどうかを確認する。一致判定テーブルに有る場合は、次に参照する参照インスタンスがバリューとして登録されていることになる。
バリュー(参照インスタンス)として登録されているかどうかで以降の動作が異なる(ステップ502)。
参照インスタンスが存在する場合には(ステップ502のyes)、イベントパターン登録部22は、参照インタスタンスのタイプを判定する(ステップ503)。ここでの、参照インスタンスのタイプの判定とは、参照判定インスタンスであるか、参照通知インスタンスであるかを判定することである。
参照インスタンスが参照判定インスタンスであれば、イベントパターン登録部22は、その参照判定インスタンスの属性名と属性名優先度情報を参照し、属性集合に、参照判定インスタンスの属性名よりも優先度の高い属性名を持つ属性が存在するかどうかを判定する(ステップ504)。
属性集合に優先度が高い属性名を持つ属性が無ければ、一致判定テーブルで判定された参照判定インスタンスの属性名が最も優先度が高く、新たに追加判定インスタンスを取得または生成する必要が無い。そのため、対象判定インスタンスの一致判定テーブルの更新動作を終了する(ステップ504のno)。なお、ここでの処理の終了とは、対象インスタンスでの処理を終了し、参照インスタンス(ただし、以下で説明する、追加インスタンスを追加した場合は追加インスタンス)での登録処理が起動されることとなる。
一方、属性集合に優先度が高い属性が存在する場合(ステップ504のyes)、イベントパターン登録部22は、一致判定ツリー25においてその属性名を持つ追加判定インスタンスを新規に生成し(ステップ505)、追加判定インスタンスを、対象判定インスタンスと、参照判定インスタンスの間に挿入する。
図13は、この一致判定テーブルの変更を示すブロック図である。図13(A)は、追加前の状態で、対象判定インスタンスの子ノードとして参照判定インスタンスが登録されていることを示している。図13(B)は、追加判定インスタンスを追加した後の状態を示している。対象判定インスタンスの子ノードとして追加判定インスタンスが登録され、追加判定インスタンスの子ノードとして参照判定インスタンスが登録されている。
なお、ここでの参照インスタンスとして、参照判定インスタンスとなっているが、参照通知インスタンスの場合も後ほど説明するが同様の処理となる。
図12の処理の説明に戻り、イベントパターン登録部22による追加判定インスタンスの挿入処理をより具体的に説明すると次のとおりとなる。
(1)先ほど判別した属性集合の属性の最も優先度の高い属性名を、追加判定インスタンスの属性名に登録する(ステップ506)。
(2)追加判定インスタンスのアスタリスク・フィールドに、参照判定インスタンス(最初に対象判定スタンスの参照あった参照判定インスタンス)への参照を登録する(ステップ507)。
(3)対象判定インスタンスの一致判定テーブルのキー(属性値)に対するバリュー(インスタンス)として、追加判定インスタンスを登録する(ステップ508)。
これにより、追加判定インスタンスの挿入が完了する。
一方、対象インスタンスが、参照通知インスタンスの場合、属性集合が空かどうかを判定する(ステップ509)。ここにおける空かどうかの判定は、当然であるが、現在登録処理の対象となっている属性を除いての判定、つまり、現在登録処理をしている属性が属性集合の最後の属性であるかどうかを判定することである。
属性集合が空であれば、これ以上一致判定を行う属性は存在せず、参照通知インスタンスも登録済みのため、登録処理は終了となる(ステップ509のyes)。
属性集合が空でない場合には、まだ一致判定の対象となる属性が残っていることとなる。従って、残りの属性の一致判定を行うように一致判定ツリー25を更新する必要がある。
そのため、イベントパターン登録部22は、一致判定ツリー25において新規に追加判定インスタンスを生成し、それを対象判定インスタンスと、参照通知インスタンスの間に挿入する。
この処理は、先ほどのステップ504において高い優先度の属性が有ったと判定されたときと同様の処理となる。ただし、先ほどステップ507において、追加判定インスタンスのアスタリスク・フィールドに登録するインスタンスとして、参照判定インスタンスとなっていたとことが、参照通知インスタンスとなる(ステップ506−508)。
ステップ502において、属性値に対応するインスタンスが存在しない場合は、次に、属性集合が空かどうかを判定する(ステップ510)。ここの判定も、既に述べたとおり、現在の処理対象の属性が最後の属性であるかどうかの判定である。
属性集合が空でない場合(ステップ510でno)、つまり、まだ一致判定の対象となる属性が残っている場合、イベントパターン登録部22は、一致判定ツリー25において一致判定を継続するために追加判定インスタンスを生成する(ステップ511)。さらに、イベントパターン登録部22は、属性名優先度情報と属性集合を参照して、属性集合の中で最も優先度の高い属性を選ぶ(ステップ512)。ステップ511で生成した追加判定インスタンスの属性名に、ステップ512で選んだ優先度の高い属性の属性名を登録する(ステップ513)。その後で、対象判定インスタンスの一致判定テーブルに、優先度の高い属性の属性値と、その属性値に対するインスタンスとしての追加判定インスタンスとを登録する(ステップ508)。
ステップ510で属性集合が空の場合(ステップ510でyes)は、一致判定を行う属性が残っていない場合であり、追加通知インスタンスを登録することとなる。このため、イベントパターン登録部22は、追加通知インスタンスを生成し(ステップ514)、それを対象判定インスタンスの一致判定テーブルに、属性値とその属性値に対するバリューであるインスタンスとして追加通知インスタンスを登録する(ステップ508)。
続いて、図11のフローチャートで一致する属性が無かった場合(ステップ404)の動作について、図14を参照してさらに詳細に説明する。
最初に、イベントパターン登録部22は、対象判定インスタンスのアスタリスク・フィールドに参照インスタンスがあるかどうかを判定する(ステップ601)。
以降の動作は、図12のステップ502以降の動作と概ね同様の処理となる。
参照インスタンスの有無の結果により処理を分岐する(ステップ602)。
参照インスタンスが有る場合は、参照インスタンスの種類を判別する(ステップ603)。
登録されていた参照インスタンスが参照判定インスタンスの場合は、さらに優先度の高い属性が属性集合に有るかどうかを確認し(ステップ604)、無い場合は処理終了する。高い優先度の属性がある場合は、追加判定インスタンスを生成する(ステップ605)。追加判定インスタンスの属性名に優先度の高い属性の属性名を登録する(ステップ606)。さらに、追加判定インスタンスのアスタリスク・フィールドに参照判定インスタンスを登録する(ステップ607)。そして、追加判定インスタンスへの参照を、対象判定インスタンスのアスタリスク・フィールドに登録する(ステップ608)。
参照インスタンスが参照通知インスタンスの場合は、属性集合が空かどうかを判定し(ステップ609)、空なら終了し、空でなければ、参照判定インスタンスと同様の処理を行う(ステップ605−608)。
参照インスタンスが無い場合は、属性集合が空かどうかを判定する(ステップ610)。
属性集合が空でなければ、追加判定インスタンスを生成し(ステップ611)、優先度の高い属性名を求め(ステップ612)、追加判定インスタンスの属性名を設定する(ステップ613)。属性集合が空なら、追加通知インスタンスを生成する(ステップ614)。最後の、新規に生成した追加通知インスタンスの参照を、対象判定インスタンスのアスタリスクフィールドに記録する(ステップ608)。
次に、通知インスタンス32の属性登録動作について説明する。
図15は、通知インスタンス32の登録処理のフローチャートである。イベントパターン登録部22は、対象通知インスタンスのイベントパターンIDリストに、イベントパターンに設定されたイベントパターンIDを追加する(ステップ701)。
これらの動作により、イベントパターン登録部22は、登録するイベントパターンを基とした一致判定情報を一致判定ツリー25に登録することができる。
次に、一致判定ツリー25からイベントパターンを削除する動作について図面を参照して説明する。
イベントパターン削除部23がイベントパターン管理装置81からイベントパターンIDを指定したイベントパターンの削除要求を受けると、イベントパターンの削除動作が開始される。イベントパターン削除部23は、指定されたイベントパターンIDに対応するイベントパターンを一致判定ツリー25などから削除する。このイベントパターン削除部23による一致判定ツリー25からイベントパターンを削除する動作は、一致判定ツリー25のルートノードから順番にイベントパターンに対応する子ノードを再帰的に参照する。つまり、イベントパターンのリーフノードまでたどり着いてから逆方向にイベントパターンを削除していく処理となる。
図16に、イベントパターン削除部23によるイベントパターンを削除する動作のフローチャートを示す。
まず、イベントパターン削除部23は、イベントパターン保持部21のイベントパターンテーブルを参照して、イベントパターンIDと対応するイベントパターンを取得する(ステップ801)。次に、イベントパターンを取得後に、そのイベントパターンIDとイベントパターンのペアをイベントパターンテーブルから削除する(ステップ802)。ただし、この削除動作は、イベントパターンを一致判定ツリー25から削除後に行ってもよい。
次に、イベントパターン削除部23は、一致判定ツリー25のルートノードに相当する判定インスタンス32から一致判定ツリー25を、イベントパターンを基に参照する。その後、再帰的に削除するイベントパターンの属性に対応したインスタンスの削除及び修正を行う(ステップ803)。
なお、イベントパターンに対応した属性を削除後、各ノードのインスタンスに登録されている残ったイベントパターンの確認も行う(ステップ804)。もし、既に説明した削除動作に伴い、どこかのノードのインスタンスに登録されているイベントパターンが1つも無い状態となった場合は、そのノードのインスタンスは、どのイベントパターンからも参照されないこととなる。従って、そのノードのインスタンスを削除する(ステップ805)。さらに、この不必要なノードのインスタンスの削除に伴い、親ノードのインスタンスの参照情報の修正も必要であるので、親ノードのインスタンスの修正も行う。
ここにおけるイベントパターンが1つも無い状態とは、具体的には各インスタンスで次の条件が成立している状態である。
・判定インスタンス32
(a)一致判定テーブルに1つも属性値(キー)とインスタンス(バリュー)の組が登録されていない
かつ
(b)アスタリスク・フィールドが1つもインスタンスを参照していない
・通知インスタンス33
(a)イベントパターンIDリストが空の状態
なお、もし、削除の結果としてルートノードの判定インスタンス32もなくなった場合、一致判定装置2は、初期状態の戻ったこと同じになる。
処理対処のインスタンスが判定インスタンス32の場合のイベントターンの削除動作について図17を参照してより詳細に説明する。
イベントパターン削除部23は、削除対象のイベントパターンから対象判定インスタンスの属性値を求める(ステップ901)。属性値に有無により処理が異なる(ステップ902)。
対象判定インスタンスに削除する属性値が存在した場合(ステップ902のyes)、求めた属性値をキーとして一致判定テーブルを参照し、バリュー(参照インスタンス)を求める(ステップ903)。求めた参照インスタンスを参照して属性削除を再帰的に実行する(ステップ904)。
ここにおける再起的実行とは、次のような処理を行うことである。
例えば一例として、ルートノードから3段のイベントパターンの削除する動作について説明する。この場合は、削除対象となるイベントパターンに対する一致判定ツリー25に登録されているインスタンスは、ルートノードの判定インスタンス32−子ノードの判定インスタンス32−孫ノードの通知インスタンス33となる。イベントパターン削除部23は、削除動作として、まず、イベントパターンに対応した判定経路、つまり、ルートノード−子ノード−孫ノードとたどる。その後、孫ノードの通知インスタンス33に達したら、今後は逆方向に処理を進める。つまり、孫ノードの通知インスタンス33のイベントパタンIDの削除、及び、必要に応じて子ノードの判定インスタンスとルートノードの判定インスタンスの参照の修正を行い、イベントパターンに対応する参照データの削除を行っていく。
削除動作後、イベントパターン削除部23は、削除対象となった対象判定インスタンスに記憶されるイベントパターンが残っているかどうかの判定を行う(ステップ905)。もし、残っているイベントパターンに対応する属性がひとつも無い場合には、そのインスタンスにたどり着くイベントパターンが無いことを意味する。そのため、親ノードにおける対象インスタンスへのキー(属性値)とバリュー(対象判定インスタンス)の関係を一致判定ツリー25から削除し、そのインスタンスへの経路を削除する。その後、登録属性が無くなった対象判定インスタンス自体を削除する(ステップ906)。
一方、対象判定インスタンスに削除する属性値が登録されていない場合(ステップ902の右)、アスタリスク・フィールドが参照する参照インスタンスを参照して属性削除を継続する(ステップ907)。
アスタリスク・フィールドを使用した場合も、削除の後、参照インスタンスに記憶されるイベントパターンが1つもないかどうかの確認を行う(ステップ908)。アスタリスク・フィールドで参照していた参照インスタンスに、1つも参照するイベントパターンが無くなった場合、対象判定インスタンスのアスタリスク・フィールドから参照インスタンスを削除する。そして、イベントパターンが無くなった参照インスタンス自体も削除する(ステップ909)。
処理対象のインスタンスが対象通知インスタンスある場合の削除動作について、図18を参照して詳細に説明する。
イベントパターン削除部23は、対象通知インスタンスのイベントパターンIDリストから指定されたイベントパターンのイベントパターンIDを削除する(ステップ1001)。その後、イベントパターンIDリストにイベントパターンIDが残っているかどうかを確認し(ステップ1002)、1つもイベントパターンIDが残っていない場合は、その対象通知インスタンスを削除する(ステップ1003)。
なお、対象通知インスタンスを削除した場合も、親ノードのインスタンスからルートノードのインスタンスまでイベントパターンが残っているかどうかの確認を行い、必要な削除処理を行う。
最後に、イベントのマッチング(一致判定)の動作について詳細に説明する。一致判定装置2は、イベント通知装置82からイベントと受け取り、イベントパターンとの一致判定を行い、イベントと一致したイベントパターンにイベントパターンIDを付与して、イベント受信装置83に通知する。
イベントが一致判定部8に入力されたときの最初の処理を図19を参照して説明する。
一致判定部8は、一致判定動作として、一致判定ツリー25のルートノードからリーフノードに向かって参照しながら、イベントの一致判定を行う。従って、一致判定ツリー25にルートノードが存在しない場合、つまり初期状態など、一致判定ツリー25が無い場合は、一致判定を終了することとなる。
そのため、イベントが入力された一致判定部8は、まず、一致判定ツリー25のルートノードの判定インスタンス32を参照して、ルートノードが有るかどうか判定する(ステップ1101)。もし、ルートノードが無い場合は、そこでマッチングを終了する。ルートノードがあった場合は、属性値一致判定を行う(ステップ1102)。
次に、一致判定部8における属性値一致判定処理について図面を参照してより詳細に説明する。
まず、対象となるインスタンスが判定インスタンス32である場合の処理を図20を参照して説明する。
一致判定部8は、入力されたイベントから、一致判定の対象となっている対象判定インスタンスの属性名に対応する属性値を取得する(ステップ1201)。
次に、属性値をキーとして、一致判定テーブルを参照し、バリューである参照インスタンス(参照判定インスタンス、または、参照通知インスタンス)を求める(ステップ1202)。
一致判定テーブルに対応する参照インスタンスが有るかどうかで処理を分岐する(ステップ1203)。対応する参照インスタンスが有った場合は、その参照インスタンスを参照して属性値一致判定を継続する(ステップ1204)。
一致判定テーブルに対応する参照インスタンスが無い場合は、アスタリスク・フィールドに参照インスタンスが有るかどうかを確認する(ステップ1205)。
アスタリスク・フィールドのバリューとして参照インスタンスが存在する場合には、その参照インスタンスを参照して属性値一致判定を継続する(ステップ1206)。
一致判定テーブルに一致する属性値が無く、アスタリスク・フィールドにも登録がない場合は、一致するイベントパターンが無いこととなり、一致判定処理を終了する。
対象となるインスタンスが、通知インスタンス33である場合の動作を図21を参照して説明する。
対象通知インスタンスであることを認識した一致判定部8は、入力されたイベントと、通知インスタンスに登録されているイベントパターンIDリストのイベントパターンIDとの組をイベント受信装置83に通知する。
以上に説明したような動作により、一致判定部8は、一致判定処理を行う。
このように構成された第2の実施形態は、一致判定部8において実行するイベント通知装置82から通知されるイベントの一致処理において、イベントの不一致判定を、一致判定ツリー25のルートノードの近くで行える可能性が高くする効果を実現している。
この理由は、第2の実施形態では、属性値情報保持部11に保持されている属性値情報を利用して、一致判定となりにくい属性名を判別し、一致判定となりにくい属性から一致判定情報(一致判定ツリー25)に登録するためである。
この理由を、より具体的に、第2の実施形態の説明の一例を参照して説明すると、次のとおりとなる。
「端末ID」と「場所」を指定した1つのイベントパターンが一致判定装置2に登録されているとする。また、「端末ID」が取りうる属性値が1億通りあり、「場所」が取りうる属性値が100万通りあるとする。ここで、入力されるイベントの「端末ID」と「場所」とに対する属性値の取りうる値が、各属性値の全体集合から一様ランダムに決定されると仮定する。すると、登録されたイベントパターンの「端末ID」の値に一致する確率は、1/1億であり、「場所」の値にマッチする確率は1/100万である。第2の実施形態の一致判定装置2は、属性名優先情報生成部6の属性名優先情報を使用することにより、一致する可能性の低い属性、つまり「端末ID」から一致判定を行う一致判定ツリー25を作成する。その結果、一致する可能性が低い属性から一致判定を実行できる。その結果として、一致しないイベントパターンを早く検出でき、イベントの判定処理を早く終了することができるためである。
さらに、第2の実施形態では、イベントパターンの動的な追加・削除に対応できる効果を実現している。
この理由は、一致判定ツリー25にイベントパターンを登録するイベントパターン登録部22と削除するイベントパターン削除部23を備え、外部装置などからの指示により一致判定ツリー25に追加および削除が行えるようにしたためである。
この理由も、第2の実施形態の説明の一例を参照して、より具体的に説明する。
例えば、あるサービス提供事業者の所定の会員が、所定のエリア入った場合に、所定の広告などを送ることを実現しようとする場合について説明する。この場合、第2の実施形態において、「端末ID」と「場所」とを指定するイベントパターンを一致判定ツリー25に登録することにより、イベントパターンと一致したイベント受け取った一致判定装置2が、広告を送信するサーバにイベント通知することができる。これにより、広告通知を実現できる。また、第2の実施形態では、例えば、キャンペーン期間開始時にイベントパターンを登録し、キャンペーン期間終了時に、イベントパターンを削除することにより、所定期間だけの要求にも応えることができる。
(第3の実施形態)
次に、本発明の第3の実施形態について図22−図24を参照して説明する。
第2の実施形態では、属性値をそのまま使用していたが、属性値は、必ずしも短いとは限らず、長い文字列となっている場合もある。
そこで、第3の実施形態では、第2の実施形態のように一致判定テーブルのキーとして属性値そのものを保存して使用するのではなく、属性値にハッシュ関数を適用して得られたハッシュ値を一致判定テーブルのキーとして保存する。ここにおいて、一致判定テーブルはハッシュ値を使用したハッシュテーブルであるため、キーにハッシュ関数を適用して得られたハッシュ値をハッシュテーブルサイズで割り、その余りを一致判定テーブルのインデックスとすることができる。しかし、一致判定テーブルのキー自体がハッシュ値であるため、一致判定テーブルではキーにハッシュ関数を適用することは行わず、キーをハッシュテーブルサイズで割り、その余りを一致判定テーブルのインデックスとすることもできる。以下の第3の実施形態の説明としては、インデックスとしてキーを割った余りを使用するものとする。このように、第3の実施形態では、一致判定において一致判定テーブルのキーであるハッシュ値を使用することにより、一致判定の対象を短くして、一致判定処理の高速化を図っている。
なお、第3の実施形態においてハッシュ値を使用する点以外は、図5に示す第2の実施形態の構成と同じである。そのため、第2の実施形態と異なるハッシュ値に関係する部分を詳細に説明し、第2の実施形態と同じ構成に関しては、説明を省略する。
また、ハッシュ関数についても一般的なハッシュ関数を使用すればよく、詳細な説明は省略する。
まず、イベントパターンの登録処理について図22を参照して説明する。
図22は、第3の実施形態における判定インスタンス32の属性登録の動作を示すフローチャートである。第3の実施形態における図22の処理は、第2の実施形態の図12の処理に相当する。第3の実施形態における図22の処理で図12と異なる動作は、ステップ1401とステップ1408となっている。
第3の実施形態のステップ1401では、まず、イベントパターン登録部22は、属性値にハッシュ関数を適用し、ハッシュ値を求める。そして、イベントパターン登録部22は、一致判定テーブルを参照して、求めたハッシュ値に対応するバリューである参照されているインスタンスが有るかどうかを判定する。つまり、第2の実施形態において属性値から直接参照されるインスタンスを求めていた処理を、第3の実施形態では、属性値にハッシュ関数を適用したハッシュ値を基の求めるように変更している。
また、第3の実施形態では、最後のステップ1408において、一致判定テーブルに生成した追加インスタンスを登録する際に、属性値ではなく、属性値のハッシュ値に登録する点も第2の実施形態と異なる。
それ以外の動作は、第2の実施形態と同じ処理となる。
このような構成により、第3の実施形態では、ハッシュ値を使用してイベントパターンの登録を行うことが出来る。
次に、第3の実施形態のイベントパターンの削除について図23を参照して説明する。第3の実施形態における図23の処理は、第2の実施形態の図17の処理に相当する。
第3の実施形態のイベントパターンの削除動作において、第2の実施形態と異なるところは、図23のステップ1503とステップ1506である。他の動作は、第2の実施形態を同じであるため、ステップ1503とステップ1506について詳細に説明し、第2の実施形態と同等の処理については説明を省略する。
図17における、第2の実施形態では、一致判定テーブルの属性値を参照してバリューである参照されているインスタンスを求めていたが、第3の実施形態では、属性値のハッシュ値を使用して参照されているインスタンスを求めている(ステップ1503)。また、一致判定テーブルから削除するデータも、「属性値とインスタンス」から「属性値のハッシュ値とインスタンス」と変更されている。
第3の実施形態では、このような構成を備えることにより、ハッシュ値を使用したイベントパターンの削除を行うことができる。
最後に、イベントのマッチング動作について、図24を参照して説明する。第3の実施形態における図24の処理は、第2の実施形態の図20の処理に相当する。
第3の実施形態におけるイベントのマッチング動作で、第2の実施形態と異なる動作は、ステップ1602となっている。第2の実施形態の図20のステップ1202では、キーとして属性値を使用していたが、第3の実施形態では、属性値のハッシュ値をキーとして使用する。それ以外の動作は、第2の実施形態と同じであるため、説明は省略する。
第3の実施形態では、このような構成を備えることにより、ハッシュ値を使用したイベントのマッチング動作を実現している。
このように構成された第3の実施形態では、一致判定テーブルの一致判定の処理をより高速化する効果を実現することができる。
その理由は、第3の実施形態では、属性値より短い属性値から生成したハッシュ値を一致判定に使用することにより、一致判定テーブルから得られたリストからキー(本実施形態ではハッシュ値)と一致する要素の検索時間を短縮することができるためである。
なお、第3の実施形態では、ハッシュ値の一致判定によりイベントが通知されたかどうかを判定しているため、属性値が一致しない場合でも、イベントがイベント受信装置83に通知される可能性がある。
これは、異なる属性値でも同じハッシュ値となる場合あるためである。(一般に、ハッシュ値は、基となるデータより個数が少なくなるため、異なるデータでも同じハッシュ値となる場合があるからである。)
例えば、第2の実施形態で説明に使用している、あるサービス事業者の所定の会員が、所定のエリア入った場合に、所定の広告を送る場合について説明すると次のとおりとなる。
ここで、端末ID1とは異なる端末ID2が、ID1と同じハッシュ値をなるとすると、端末ID2を属性値する端末を所持した会員が、所定の場所に入ってくると、ハッシュ値が同じであるため、広告が送られてしまう。
ただし、一般的に、ハッシュ関数を適切に選択すれば、このようなハッシュ値が重なる状況は、非常にまれとすることができる。
また、例え誤った端末に送られたとしても、ここで送られたのは広告である。広告は、元々、利用者が期待したものだけが送付されるものではなく、送信側が利用者に読まれることを期待して送付するものである。つまり、広告は、希望していない利用者に送付されても、問題となることが無いまたは少ない情報である。利用者は、送られた広告から興味のあるものを取捨選択している。従って、たとえイベントパターン登録者が予定していない利用者に広告が送られたとしても、利用者がその広告に興味がなければ、その広告を無視すればよく、問題となることは少ない。このように、ハッシュ値が重複した場合にイベント処理を行っても問題が無い場合には、第3の実施形態を使用することが出来る。
ただ、イベントパターン登録者が期待していない広告の送信処理が発生するため、その分だけ送信の資源の使用量が、少しは増える可能性がある。そのため、ハッシュ値を使用した場合の、送信資源の増加分と処理の効率化による改善分を、シミュレーションなどで予測して、第2の実施形態のような構成とするか、第3の実施形態のような構成とするかの選択をおこなってもよい。
さらに、一致判定テーブルに、ハッシュ値と属性値の両方を保存するようにし、まず、ハッシュ値で一致判定を行い、一致した場合は属性値で一致判定を行うようにしてもよい。
この場合、不一致判定の高速化と一致判定の正確性の両方を実現する効果を実現することができる。
その理由は、まず、ハッシュ値により一致判定を行うことにより、不一致となる大部分のイベントの不一致を高速に実現できる。さらに、ハッシュ値の判定では一致となるハッシュ値の重複する属性値も、さらに属性値の比較することにより、確実に一致判定が行えるためである。
なお、ここまで説明の便宜上、第3の実施形態について、全ての属性について属性値のハッシュ値をキーとして一致判定テーブルを管理するように説明してきたが、必ずしも全ての属性値をハッシュ値とする必要はない。例えば、属性値が、整数を値であるなど、一致判定の計算時間が短い属性値については、第2の実施形態のように属性値をそのままキーとして一致判定テーブルに登録してもよい。このようにすることにより、ハッシュ値の計算時間を省略することが出来る。
このように、属性値のままでも一致判定の処理が短い属性値は、属性値をそのまま比較し、属性値のままでは一致判定に時間が掛かる属性値はハッシュ値を使用することにより、さらに判定時間を短くする効果を実現することが出来る。
その理由は、属性値のままで一致判定の処理が短い属性値では、ハッシュ値の計算を省略でき、属性値のままでは一致判定の処理が長い属性値では、ハッシュ値を使用することにより判定時間を短くすることができるためである。
(第4の実施形態)
次に、本発明の第4の実施形態について図25−図27を参照して説明する。
第2の実施形態及び第3の実施形態において、通知インスタンス33にイベントパターンIDが登録されていた。これに対して、第4の実施形態では、図5の一致判定部8において通知インスタンス34にイベントパターンが登録されている。そして、第4の実施形態では、一致判定を行ったイベントパターンと通知インスタンス34で保持されるイベントパターンとの一致判定を行い、一致したイベントパターンのイベントパターンIDのリストを作成する。そして、一致判定部8は、作成したイベントパターンIDを付与して一致となったイベントをイベント通知としてイベント受信装置83に出力するという構成となっている。
第4の実施形態の構成は、図6における通知インスタンス34の構成を除いて、第2の実施形態及び第3の実施形態の構成と同じため、通知インスタンス34に関連する部分を詳細に説明し、他の構成については説明を省略する。
第4の実施形態における通知インスタンス34の構成を図25を参照して説明する。図25に示す第4の実施形態の通知インスタンス34は、イベントパターンリストとイベントパターンIDリストを含んで構成されている。
続いて、第4の実施形態の通知インスタンス34を参照した属性登録の動作について図26を参照して説明する。
第2の実施形態及び第3の実施形態における図14では、イベントパターンIDリストに追加を行っていたが、第4の実施形態では、図26に示すように、通知インスタンス34のイベントパターンリストにイベントパターンを追加する。
イベントパターンの削除もイベントパターンリストから削除することにより行う。
次に、第4の実施形態の通知インスタンス34を参照したときの属性値一致判定について図27を参照して説明する。
第2の実施形態及び第3の実施形態のイベントのマッチングの動作では、通知インスタンス33を参照したときに、図21に示したように、イベントとイベントパターンIDリストのペアをイベント受信装置83に通知していた。
これに対して、第4の実施形態の通知インスタンス34の処理は、図27のフローチャートに示すように次のとおりとなっている。
まず、イベントIDリストを初期化する(ステップ1801)。通知インスタンス34のイベントパターンリストに登録されているイベントパターンに関して次の処理を繰り返し実行する(ステップ1802−ステップ1805)。イベントパターンで指定される各属性に対して、発生したイベントの対応するイベント属性値が一致するかどうかの判定を行う(ステップ1803)。イベントパターンで指定される全属性が一致した場合は(ステップ1804でyes)、イベントパターンIDリストにイベントパターンのイベントパターンIDを追加する(ステップ1805)。一方、イベントパターンで指定される全属性の一部でも一致しない場合は(ステップ1804でno)は、イベントパターンIDへの追加を行わない。全てのイベントパターンリストのイベントパターンの確認が終了したら、イベントパターンIDリストに登録した全てのイベントパターンIDとイベントとのペアをイベント受信装置83に通知する(ステップ1806)。
このような構成を備えることにより、第4の実施形態は、第2の実施形態及び第3の実施形態に比べ、確実にイベントパターンにマッチするイベントをイベント受信装置83に通知することができる効果を実現している。
その理由は、第2の実施形態及び第3の実施形態に比べて、第4の実施形態は、イベントを通知する直前で、イベントパターンとイベントとの一致判定を行っているためである。
さらに、発生したイベントが複数のイベントパターンと一致している場合も、第4の実施形態では、通知することができる効果を実現している。
この理由は、第4の実施形態は、通知インスタンス34に登録されている全てのイベントパターンとイベントを比較するためである。その結果、複数のイベントパターンの一致したイベントが有ったとしても、全てのイベントパターンとの一致情報をイベント通知に含めることが出来るためである。
(第5の実施形態)
次に、本発明の第5の実施形態について図28−図38を参照して説明する。
第5の実施形態における一致判定装置3は、第2の実施形態の一致判定装置2と比べ、属性名の優先順の変化があった場合に、一致判定ツリー25を変更できるようになっている。さらに、第5の実施形態の一致判定装置3は、第2の実施形態の一致判定装置2とは異なる属性名の優先度を処理することができるようになっている。
第5の実施形態の一致判定装置3の一例のブロック図を図28に示す。
第5の実施形態の一致判定装置3は、第2の実施形態で説明した一致判定装置2の構成に加え、次のような構成を含んで構成されている。
被指定属性情報保持部41は、イベントパターン登録部22がイベントパターン保持部21にイベントパターンを保存するときに、イベントパターンを受け取り、受け取ったイベントパターンを基に、指定された属性名に対する属性値の数と、各属性値の参照数とを保持する。
ここのおける、属性名に対する属性値の数とは、登録されているイベントパターンに含まれる属性名に対応する属性値の数のことである。また、参照数とは、各属性値がイベントパターンで参照された数のことである。つまり、登録されているイベントパターンに含まれる各属性値の数となる。例えば、図2に示すイベントパターンを全て登録した場合、属性名「端末ID」は「ID1」と「ID4」との属性値があるため属性値の数が「2」となり、属性値「ID1」の参照数は「2」、属性値「ID4」の参照数は「1」となる。
更新タイミング管理部42は、属性名情報保持部13に保存されている属性名優先情報の更新のタイミングを管理する。
属性名優先更新部43は、更新タイミング管理部42で指定されたタイミングで属性名情報保持部13に保存されている属性名優先情報を更新する。
続いて、これらの構成についてより詳細に説明する。
図29は、被指定属性情報保持部41の構成を示すブロック図である。図29は、説明の便宜のため図1に記載されたイベントと図2に記載されたイベントパターンとを使用して説明するが、これに限られるわけではない。被指定属性情報保持部41は、イベントパターンを受け取ったときに更新する、「イベントパターンで指定された属性値」と「その属性値が登録されている属性値一致インスタンスの数(参照数)」のペアを保持する属性値参照数テーブル(51A−51C)を備えている。さらに、被指定属性情報保持部41は、イベントパターンで指定されている各属性名に対して指定された属性値の総数を保持する属性値被指定数テーブル52を含んで構成されている。
図30を参照して、属性値参照数テーブル(51A−51C)についてより詳細に説明する。属性名「端末ID」の属性値参照数テーブル51Aの一例を図30(A)に示す。このテーブルの、例えば、属性値「ID100」において参照数=1とは、ID100が、1つの判定インスタンス32の一致判定テーブルに登録されていることを示している。同様に属性値「ID202」の参照数=2とは、ID202が、2つの判定インスタンス32の一致判定テーブルに登録されていることを示している。属性名「場所」の属性値参照数テーブル51Bの一例を図30(B)に示す。なお、図30では見やすくするため、場所の後半の記載は省略した。図30(B)では、「東京都港区・・・」と「東京都豊島区・・・」が1つずつ参照されていることとなる。属性名「時刻」の属性値参照数テーブル51Cの一例を図30(C)に示す。図30(C)では、時刻がイベントパターンに1つも入っていないため、図30(C)の属性値参照数テーブル51Cは、全て空欄となっている。
属性値被指定数テーブル52の一例を図31に示す。図31の一例では、属性名「端末ID」は4000通りの属性値が、属性名「場所」は30通りの属性値が、イベントパターンとして登録されていることを示している。なお、時刻は0通り、つまり、イベントパターンに登録されていないことを示している。
これら属性値参照数テーブル(51A−51C)及び属性値被指定数テーブル52は、イベントパターン登録部22がイベントパターンを登録するときと、イベントパターン削除部23がイベントパターンを削除するときに、それぞれ更新される。
属性値参照数テーブル(51A−51C)のイベントパターン登録時の処理について図32を参照して説明する。この処理は、第2の実施形態の図12の登録処理と概ね同じ動作であるが、インスタンスを生成して、該インスタンスをキー(属性値)に対するバリューとして一致判定テーブルに登録した後に処理(ステップ1915)が追加されている。この追加された処理は、被指定属性情報保持部41が、判定インスタンス32が参照する属性名と属性値のペア登録する処理(ステップ1915)である。このステップ1915以外の処理は第2の実施形態と同様のため説明を省略する。
ステップ1915の属性名と属性値のペアを登録する処理を図33を参照してさらに詳しく説明する。
まず、入力された属性名に対応する属性値参照数テーブル(51A−51Cのいずれか)を選択する(ステップ2001)。これは、属性名ごとの属性値参照数テーブル(51Aから51Cのいずれか)を選択することである。例えば、属性名「端末ID」なら、属性値参照数テーブル51Aを選択することである。選択した属性値参照数テーブル(51A−51Cのいずれか)の対応する属性値が有るかどうか確認する(ステップ2002)。属性値が有った場合は、入力された属性値に対する参照数を1つ増やす(ステップ2005)。属性値が無かった場合は、入力された属性値を登録し、その参照数として1を登録し(ステップ2003)、属性値被指定数テーブル52の属性名に対応する属性値の数を1つ増やす(ステップ2004)。
次に、イベントパターン削除動作について図面を参照して説明する。
図34は、第5の実施形態におけるイベントパターンの削除動作のフローチャートである。
図34の処理は、第2の実施形態の図17の処理と概ね同じであるが、属性値とインスタンスの関係を削除した後の処理(ステップ2110)が異なる。したがってステップ2110の動作を説明し、他の処理の説明は省略する。
図34の動作では、属性値とインスタンスを削除した後、被指定属性情報保持部41から、判定インスタンス32が参照する属性名と属性値のペアを削除する(ステップ2110)。
この属性名と属性値のペアを属性値参照数テーブル(51A−51C)からの削除動作について、図35を参照して、さらに説明する。
まず、入力された属性値に対応する属性値参照数テーブル(51A−51Cのいずれか)を求める(ステップ2201)。入力された属性値に対する参照数を−1する(ステップ2202)。
参照数が0になった場合(ステップ2203のyes)は、属性値参照数テーブル(51A−51Cのいずれか)から属性値と参照数のペアを削除し(ステップ2204)、属性値被指定数テーブル52の該属性名に対応する属性値数を−1する(ステップ2205)。参照数が0で無い場合(ステップ2203でno)は、これらの削除を行わず終了する。
更新タイミング管理部42について、図36を参照して説明する。図36は、更新タイミング管理部42が保持する更新タイミングデータの一例である。図36(A)に示すデータでは、更新タイミング管理部42が、毎日午前2時に、属性名優先更新部43を起動して、属性名優先情報の更新を実行することとなる。また、図36(B)に示すデータでは、毎週月曜日と金曜日の深夜0時に更新を行うこととなる。
最後に、更新タイミング管理部42に指示された、属性名優先更新部43による属性名優先情報の更新動作について図37を参照して説明する。
まず、属性名優先更新部43は、被指定属性情報保持部41の属性値被指定数テーブル52と属性値情報保持部11の属性値情報とを参照して、次の式のより各属性名についての被指定率を求める(ステップ2301)。
被指定率=(属性値被指定数テーブル52における属性値の数)
÷(属性値情報おける属性値の数)
これは、実際に属性値として取ることが出来る値の数に対して、イベントパターンで指定している属性値の数の比率である。
ここで求めている被指定率は、属性値が取ることができる全体に対する、イベントパターンで指定された範囲の比率となっている。つまり、属性値全体に対する、一致となる範囲の比率である。従って、もし、属性値がランダムに発生すると、被指定率の小さな属性ほど、一致となる可能性が小さくなる。つまり、被指定率が低い属性ほど、不一致判定となる可能性が高いこととなる。
これを、具体的な数値の例を使用して説明すると次のとおりとなる。
属性Aの属性値の取れる値の数が100であり、その中でイベントパターンとして50個登録されているとする。属性Bは、属性値の取れる値の数が10であり、その中でイベントパターンとして2個登録されている。
被指定率を考慮せず、属性値の数から判断すると、属性値の数が多い属性Aが属性Bより不一致となる可能性が高いこととなる。
しかし、被指定率を計算すると、属性Aは0.5、属性Bは0.2となる。その結果、ランダムに属性値が発生する場合、属性値Bのほうが、一致する可能性が低いこととなる。従って、属性値の数を基に決めるより、被指定率を基に優先度を決めるほうが、より有効に不一致となる可能性の高い属性名から優先度を設定することが出来ることとなる。
図37の動作の説明に戻る。
次に、被指定率が小さい属性名順に、属性名を並べた属性名優先情報を生成し(ステップ2302)、属性名情報保持部13に保持される属性名優先情報に上書きする(ステップ2303)。
この処理の一例を示すと次のとおりとなる。例えば、属性値情報保持部11が、図4(A)に示すような属性値の数の情報を持ち、その結果、属性名情報保持部13が図4(B)のデータを保持していたとする。ここで、被指定属性情報保持部41が図31に示す情報を保持していた場合に更新処理が行われるとする。このとき、各属性名の被指定率は、属性名「端末ID」が4000/1億、属性名「場所」が30/100万、属性名「時刻」が0/∞=0となり、次の不等号が成り立つ。
「時刻」の指定率 < 「場所」の指定率 < 「端末ID」の指定率
この結果、属性名情報保持部13の情報は、図38に示す情報に変更となる。
このように、属性名の変更があった場合(ステップ2304でyes)は、一致判定ツリー25の更新を行う。
この一致判定ツリー25の更新処理は、まず、イベントパターン保持部21のイベントパターンテーブルを図示しない記憶部または記憶装置などに一時的に退避する(ステップ2305)。そして、一致判定情報保持部24とイベントパターン保持部21と被指定属性情報保持部41をクリアし、初期状態とする(ステップ2306)。
その後、一時的な領域に退避したイベントパターンテーブルの各イベントパターンをイベントパターン登録部22に入力し、新規に一致判定ツリー25の生成およびイベントパターン保持部21など各部への登録動作を行う(ステップ2307)。
なお、ステップ2304において更新が無い場合は、特に処理を行わず終了する。
以上のような構成により第5の実施形態は、一致判定時に一致判定ツリー25のルート付近で処理を終える可能性がより高くなる効果を実現している。
その理由は第5の実施形態は、単なる属性値の数ではなく、属性値の被指定率、つまり、属性値が取り得る数に対する、イベントパターンで指定されている属性値の数の比率(被指定率)が小さい属性から、一致判定を行うようにしているためである。
また、第5の実施形態は、パフォーマンスに与える影響を最小限に抑えように一致判定情報(一致判定ツリー25)の更新タイミングを設定できる効果も実現することができる。
その理由は、第5の実施形態は、更新タイミング管理部42により更新の時間を設定できるためである。例えば、一致判定情報の更新を夜間など、イベントが発生しにくい時間帯に実施することが出来るためである。
なお、第1の実施形態乃至第5の実施形態は、説明の便宜上、1つの装置として説明してきたが、各構成の全部または一部を別装置として実現したシステムとして構成してもよい。
さらに、各構成の一部または全部をコンピュータのプログラムとして実現することも勿論よい。