(57)【要約】【課題】クエリと照合データとのマッチングを高速に行うこと。【解決手段】照合装置１００は、クエリ１４１に定義されたウィンドウ幅条件よりも大きいウィンドウを、照合データ１４２に対して設定し、クエリ１４１に定義されたウィンドウのイベント条件を満たすウィンドウを、仮ウィンドウとして設定する。そして、照合装置１００は、各仮ウィンドウの組みについて、インターバル条件をチェックし、インターバル条件を満たす仮ウィンドウの組みに含まれるイベントを照合結果として出力する。【選択図】図１
2015022370.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが実行する照合方法であって、
第１ウィンドウにイベント条件が対応付けられ、前記第１ウィンドウに所定のウィンドウ幅条件が設定され、複数の前記第１ウィンドウが所定のインターバル条件によって直列に接続されたクエリに基づいて、前記ウィンドウ幅条件よりも大きいウィンドウ幅の第２ウィンドウを、イベントと前記イベントの出現時刻とを対応付けた照合データに設定し、
前記第２ウィンドウに含まれる前記照合データのイベントおよび各第２ウィンドウのインターバルが、前記第１ウィンドウのイベント条件および前記インターバル条件を満たすか否かを判定する
各処理を実行することを特徴とする照合方法。
【請求項２】
前記第２ウィンドウを前記照合データに設定する処理は、前記第２ウィンドウの開始時刻を起点として、前記第２ウィンドウの幅を２倍した時刻よりも後に出現する初めのイベントの時刻から、前記第２ウィンドウの幅だけ前の時刻に戻り、戻った時刻の次の時刻より後に出現する初めのイベントの時刻を開始時刻とする次の第２ウィンドウを設定することを特徴とする請求項１に記載の照合方法。
【請求項３】
前記インターバル条件は最小インターバル条件を含み、前記判定する処理は、先行の第２ウィンドウに含まれるイベントのうち、前記イベント条件を満たす最初のイベントの組みの中で一番遅いイベントの第１時刻と、後続の第２ウィンドウに含まれるイベントのうち、前記イベント条件を満たす最後のイベントの組みの中で一番早いイベントの第２時刻とを特定し、前記第１時刻と前記第２時刻とのインターバルと、前記最小インターバル条件とを基にして、先行の第２ウィンドウと後続の第２ウィンドウとが、前記インターバル条件を満たすか否かを判定することを特徴とする請求項２に記載の照合方法。
【請求項４】
前記インターバル条件は最大インターバル条件を含み、前記判定する処理は、先行の第２ウィンドウに含まれるイベントのうち、前記イベント条件を満たす最後のイベントの組みの中で一番早いイベントの第３時刻と、後続の第２ウィンドウに含まれるイベントのうち、前記イベント条件を満たす最初のイベントの組みの中で一番遅いイベントの第４時刻とを特定し、前記第３時刻と前記第４時刻とのインターバルと、前記最大インターバル条件と、先行の第２ウィンドウの幅と、後続の第２ウィンドウの幅とを基にして、先行の第２ウィンドウと後続の第２ウィンドウとが、前記インターバル条件を満たすか否かを判定することを特徴とする請求項２に記載の照合方法。
【請求項５】
コンピュータに、
第１ウィンドウにイベント条件が対応付けられ、前記第１ウィンドウに所定のウィンドウ幅条件が設定され、複数の前記第１ウィンドウが所定のインターバル条件によって直列に接続されたクエリに基づいて、前記ウィンドウ幅条件よりも大きいウィンドウ幅の第２ウィンドウを、イベントと前記イベントの出現時刻とを対応付けた照合データに設定し、
前記第２ウィンドウに含まれる前記照合データのイベントおよび各第２ウィンドウのインターバルが、前記第１ウィンドウのイベント条件および前記インターバル条件を満たすか否かを判定する
各処理を実行させる照合プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、照合方法等に関する。
【背景技術】
【０００２】
規則性を持つ複数のイベントによる事象を分析、検知し、リアクションすることで、ビジネス活動を効率化していくことが重要である。イベントの検知に関し、従来技術では、クエリを定義し、クエリと照合データとをマッチングすることで、所定の規則性を持つイベントの組みを照合データから検出する。クエリは、イベントを一意に識別するイベント条件と、イベント条件間の間隔を示すインターバル条件とによって定義される。
【０００３】
図２９は、従来技術を説明するためのクエリの一例を示す図（１）である。クエリ１０は、クーポンを発行してから３日以内に商品を購入した事象を検出するクエリの一例である。図２９に示す例では、クエリ１０は、ノード１１，１２を有し、ノード１１はイベント条件「クーポン発行」を示し、ノード１２は、イベント条件「商品購入」を示す。また、ノード１１，１２間のインターバル条件は「０−３日」となる。
【０００４】
図３０は、従来技術を説明するための照合データの一例を示す図（１）である。図３０の照合データ２０は、イベントが発生した日付と、該当するイベントとが対応付けられる。図３０の横軸は、日付を表す。例えば、図３０に示す例では、日付「１／２、１／５、１／１２」に、イベント「クーポン発行」が発生した旨が示される。
【０００５】
従来技術により、クエリ１０と照合データ２０とをマッチングすると、日付「１／５」のイベント「クーポン発行」と、日付「１／６」のイベント「商品購入」との組みがヒットする。また、イベント「クーポン発行」とイベント「商品購入」との間隔が「０」であり、インターバル条件「０−３日」を満たすためである。このため、従来技術は、日付「１／５」のイベント「クーポン発行」と、日付「１／６」のイベント「商品購入」との組みを検出結果として出力する。
【０００６】
続いて、ウィンドウ型直列パターンのクエリについて説明する。ウィンドウ型直列パターンのクエリは、イベントの出現順序を規定しないウィンドウを直列に接続したものである。図３１は、ウィンドウ型直列パターンのクエリの一例を示す図である。図３１に示すクエリ３０は、ウィンドウ３１およびウィンドウ３２が定義され、ウィンドウ３１およびウィンドウ３２が直列に接続される。ウィンドウ３１とウィンドウ３２との間隔は、インターバル条件「５−８分」が設定されている。
【０００７】
ウィンドウ３１は、イベント条件３１ａ，３１ｂ，３１ｃを有する。イベント条件３１ａは、イベント「商品を手に取る」が出現するという条件である。イベント条件３１ｂは、イベント「店員が声をかける」が出現するという条件である。イベント条件３１ｂは、「タイムセールを行う」が出現するという条件である。
【０００８】
ウィンドウ３１のウィンドウ幅条件は、４分である。このため、ある開始時刻から４分後までの時間帯に、イベント条件３１ａ，３１ｂ，３１ｃを満たすイベントが出現する場合には、ウィンドウ３１の条件を満たすことになる。
【０００９】
ウィンドウ３２は、イベント条件３２ａ，３２ｂを有する。イベント条件３２ａは、イベント「商品を購入する」が出現するという条件である。イベント条件３２ｂは、イベント「店員が値下げする」が出現するという条件である。
【００１０】
ウィンドウ３２のウィンドウ幅条件は、３分である。このため、ある開始時刻から３分後までの時間帯に、イベント条件３２ａ，３２ｂを満たすイベントが出現する場合には、ウィンドウ３２の条件を満たすことになる。
【００１１】
従来技術は、照合データ上に、ウィンドウを設定し、ウィンドウをずらしながら、ウィンドウ３１，３２の条件を満たすイベントの組みを照合データから検出する。そして、従来技術は、ウィンドウ３１の条件を満たす時間帯と、ウィンドウ３２の条件を満たす時間帯との間隔が、インターバル条件を満たす場合に、ウィンドウ３１、３２に含まれる照合データのイベントの組みを、クエリの検索結果として出力する。
【００１２】
図３２は、従来技術の手法の一例を示す図である。ここでは、図３１に示したクエリ３０の条件を満たす照合データ４０上のイベントの組みを検出する場合について説明する。図３１の照合データ４０は、イベントが発生した時刻と、該当するイベントを対応付ける。照合データ４０の横軸は時刻を示す。また便宜上、照合データ４０では、イベント「商品を手に取る」を「Ａ」、「店員が声をかける」を「Ｂ」、「タイムセールを行う」を「Ｃ」、「商品を購入する」を「Ｄ」、「店員が値下げする」を「Ｅ」と表す。
【００１３】
従来技術は、照合データ４０上に、クエリ３０のウィンドウ３１の条件に対応するウィンドウ５０と、ウィンドウ３２の条件に対応するウィンドウ６０を設定する。従来技術は、ウィンドウ５０，６０を１単位時間ずつずらしながら、クエリ３０のウィンドウ３１，３２の条件を満たすか否かを判定する。
【００１４】
ウィンドウ５０の開始時刻がそれぞれ１，２，７，８，９となった時点で、クエリ３０のウィンドウ３１の条件を満たす。ウィンドウ５０の開始時刻が１，２，７，８，９となった時点のウィンドウをそれぞれ、５０ａ，５０ｂ，５０ｃ，５０ｄ，５０ｅと表記する。また、ウィンドウ６０の開始時刻が１３，１４，１７，１８となった時点で、クエリ３０のウィンドウ３２の条件を満たす。ウィンドウ６０の開始時刻が１３、１４，１７，１８となった時点のウィンドウをそれぞれ、６０ａ，６０ｂ，６０ｃ，６０ｄと表記する。
【００１５】
従来技術は、ウィンドウ５０ａ〜５０ｅと、ウィンドウ６０ａ〜６０との組み合わせについてそれぞれクエリ３０のインターバル条件を満たすか否かを判定し、インターバル条件を満たすウィンドウの組みに含まれるイベントを検出する。検出されたイベントの組みは、クエリ３０の条件を満たす。図３２に示す例では、ウィンドウ５０ａ，６０ａの組み、ウィンドウ５０ｂ，６０ｂの組みがクエリ３０の条件を満たす。また、ウィンドウ５０ｃ，６０ｃの組み、ウィンドウ５０ｄ，６０ｃの組み、ウィンドウ５０ｄ，６０ｄの組み、ウィンドウ５０ｅ，６０ｄの組みがクエリ３０の条件を満たす。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２００４−４６６０１号公報
【特許文献２】特開２００９−１３４６８９号公報
【特許文献３】特開２０１０−１０８０７３号公報
【特許文献４】特開２０１３−８３２９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
しかしながら、上述した従来技術では、クエリと照合データとのマッチングを高速に行うことができないという問題がある。
【００１８】
例えば、従来技術では、クエリのウィンドウの条件を満たすウィンドウの数が多くなり、これによって、各ウィンドウの組み合わせの量も大きくなる。そして、従来技術では、各組み合わせについて、クエリのインターバル条件を満たすか否かを判定するため、マッチングを高速に行うことができない。
【００１９】
１つの側面では、クエリと照合データとのマッチングを高速に行うことができる照合方法および照合プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２０】
第１の案では、コンピュータが、クエリに基づいて、ウィンドウ幅条件よりも大きいウィンドウ幅の第２ウィンドウを、イベントとイベントの出現時刻とを対応付けた照合データに設定する。また、コンピュータが、第２ウィンドウに含まれる照合データのイベントおよび各第２ウィンドウのインターバルが、第１ウィンドウのイベント条件およびインターバル条件を満たすか否かを判定する。
【発明の効果】
【００２１】
本発明の１実施形態によれば、クエリと照合データとのマッチングを高速に行うことができるという効果を奏する。
【図面の簡単な説明】
【００２２】
【図１】図１は、本実施例１に係る照合装置の構成を示す機能ブロック図である。
【図２】図２は、本実施例１に係るクエリのデータ構造の一例を示す図である。
【図３】図３は、本実施例１に係る照合データのデータ構造の一例を示す図である。
【図４】図４は、照合データのデータイメージを示す図である。
【図５】図５は、本実施例１に係る仮ウィンドウ構築処理の処理手順を示すフローチャートである。
【図６】図６は、本実施例１に係る仮ウィンドウ構築処理を説明するための図（１）である。
【図７】図７は、本実施例１に係る仮ウィンドウ構築処理を説明するための図（２）である。
【図８】図８は、本実施例１に係る仮ウィンドウ構築処理を説明するための図（３）である。
【図９】図９は、本実施例１に係る仮ウィンドウ構築処理を説明するための図（４）である。
【図１０】図１０は、本実施例１に係る仮ウィンドウ構築処理の処理結果の一例を示す図である。
【図１１】図１１は、本実施例１に係る照合装置の処理手順を示すフローチャートである。
【図１２】図１２は、本実施例２に係る照合装置の構成を示す機能ブロック図である。
【図１３】図１３は、本実施例２に係るウィンドウ処理部の処理の一例を説明するための図である。
【図１４】図１４は、本実施例２に係る仮ウィンドウ構築処理の処理手順を示すフローチャートである。
【図１５】図１５は、本実施例２に係る仮ウィンドウ構築処理を説明するための図（１）である。
【図１６】図１６は、本実施例２に係る仮ウィンドウ構築処理を説明するための図（２）である。
【図１７】図１７は、本実施例２に係る仮ウィンドウ構築処理を説明するための図（３）である。
【図１８】図１８は、最小インターバル条件を説明するための図である。
【図１９】図１９は、最大インターバル条件を説明するための図である。
【図２０】図２０は、インターバル条件判定処理の処理手順を示すフローチャート（１）である。
【図２１】図２１は、インターバル条件判定処理の処理手順を示すフローチャート（２）である。
【図２２】図２２は、本実施例２に係るインターバル条件判定処理を説明するための図（１）である。
【図２３】図２３は、本実施例２に係るインターバル条件判定処理を説明するための図（２）である。
【図２４】図２４は、本実施例２に係るインターバル条件判定処理を説明するための図（３）である。
【図２５】図２５は、本実施例２に係るインターバル条件判定処理を説明するための図（４）である。
【図２６】図２６は、組み合わせ展開の結果の一例を示す図である。
【図２７】図２７は、本実施例２に係る照合装置の処理手順を示すフローチャートである。
【図２８】図２８は、照合プログラムを実行するコンピュータの一例を示す図である。
【図２９】図２９は、従来技術を説明するためのクエリの一例を示す図（１）である。
【図３０】図３０は、従来技術を説明するための照合データの一例を示す図（１）である。
【図３１】図３１は、ウィンドウ型直列パターンのクエリの一例を示す図である。
【図３２】図３２は、従来技術の手法の一例を示す図である。
【発明を実施するための形態】
【００２３】
以下に、本願の開示する照合方法および照合プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００２４】
本実施例１に係る照合装置の構成の一例について説明する。図１は、本実施例１に係る照合装置の構成を示す機能ブロック図である。図１に示すように、この照合装置１００は、通信部１１０と、入力部１２０と、表示部１３０と、記憶部１４０と、制御部１５０とを有する。
【００２５】
通信部１１０は、ネットワークを介して他の外部装置と通信を実行する処理部である。通信部１１０は、通信装置に対応する。
【００２６】
入力部１２０は、照合装置１００に入力するための入力装置である。例えば、入力部１２０は、キーボードやマウス、タッチパネル等に対応する。
【００２７】
表示部１３０は、制御部１５０から出力される情報を表示する表示装置である。表示部１３０は、液晶モニタやタッチパネル等に対応する。
【００２８】
記憶部１４０は、クエリ１４１および照合データ１４２を有する。記憶部１４０は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子などの記憶装置に対応する。
【００２９】
クエリ１４１は、ウィンドウ型直列パターンのクエリである。ウィンドウ型直列パターンのクエリは、イベントの出現順序を規定しないウィンドウを直列に接続したものである。図２は、本実施例１に係るクエリのデータ構造の一例を示す図である。図２に示すように、クエリ１４１は、ウィンドウ１４１ａ，１４１ｂが定義され、ウィンドウ１４１ａおよびウィンドウ１４１ｂが直列に接続される。ウィンドウ１４１ａとウィンドウ１４１ｂとのインターバル条件を「５−８分」とする。
【００３０】
ウィンドウ１４１ａは、イベント「Ａ」が出現するというイベント条件と、イベント「Ｂ」が出現するというイベント条件と、イベント「Ｃ」が出現するというイベント条件とを含む。また、ウィンドウ１４１ａのウィンドウ幅条件は、４分である。このため、ある開始時刻から４分後までの時間帯に、順不同で、イベントＡ，Ｂ，Ｃが出現する場合には、ウィンドウ１４１ａの条件を満たすことになる。
【００３１】
ウィンドウ１４１ｂは、イベント「Ｄ」が出現するというイベント条件と、イベント「Ｅ」が出現するというイベント条件とを含む。また、ウィンドウ１４１ｂのウィンドウ幅条件は、３分である。このため、ある開始時刻から３分後までの時間帯に、順不同で、イベントＤ，Ｅが出現する場合には、ウィンドウ１４１ｂの条件を満たすことになる。
【００３２】
照合データ１４２は、クエリ１４１の照合対象となる情報であり、イベントの出現時刻の情報を含む。図３は、本実施例１に係る照合データのデータ構造の一例を示す図である。図３に示すように、照合データ１４２は、時刻と、顧客ＩＤと、場所と、イベントとをそれぞれ対応付ける。時刻は、イベントが出現した時刻を示す情報である。顧客ＩＤは、イベントに関連する顧客を一意に識別する情報である。場所は、イベントが出現した場所を一意に識別する情報である。イベントは、イベントの種別を示す。例えば、図３の時刻「０」分において、場所「３Ｆ」でイベント「Ａ」が出現し、顧客ＩＤ「４３２」の顧客に関連する旨のレコードが登録される。
【００３３】
なお、図３の照合データ１４２のデータイメージは、図４に示すものとなる。図４は、照合データのデータイメージを示す図である。後述する説明では、図４に示すようなデータイメージを利用して、適宜説明を行う。図４の横軸は時刻に対応する。図４において、例えば、時刻「０」において、イベント「Ａ」が出現している。
【００３４】
図１の説明に戻る。制御部１５０は、ウィンドウ処理部１５１および照合部１５２を有する。制御部１５０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）や、ＦＰＧＡ（Field  Programmable  Gate  Array）などの集積装置に対応する。また、制御部１５０は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等の電子回路に対応する。
【００３５】
ウィンドウ処理部１５１は、クエリ１４１を参照し、クエリ１４１のウィンドウのウィンドウ幅条件よりも大きい幅のウィンドウを、照合データ１４２上に設定する処理部である。例えば、ウィンドウ処理部１５１は、式（１）に基づく時間幅のウィンドウを、照合データ１４２に設定する。ウィンドウ処理部１５１は、照合データ１４２上に設定したウィンドウが、クエリ１４１のウィンドウのイベント条件を満たす場合には、設定したウィンドウを仮ウィンドウとする。
【００３６】
ウィンドウ処理部１５１が、仮ウィンドウを構築する処理手順について説明する。図５は、本実施例１に係る仮ウィンドウ構築処理の処理手順を示すフローチャートである。図５に示すように、ウィンドウ処理部１５１は、照合データ１４２の時間を各ウィンドウ幅条件の長さで分割し、分割領域に対して時刻順に番号を付与する（ステップＳ１０１）。
【００３７】
ウィンドウ処理部１５１は、連続する２つの分割領域から最後の時刻を除いた期間を、ウィンドウに対する予備ウィンドウに設定する（ステップＳ１０２）。ウィンドウ処理部１５１は、１つのイベントを検知し（ステップＳ１０３）、ウィンドウのイベント条件で振り分ける（ステップＳ１０４）。
【００３８】
ウィンドウ処理部１５１は、イベントの時刻をウィンドウ幅条件で割った値を分割領域番号とし、分割領域番号に一致する予備ウィンドウにイベントを追加する（ステップＳ１０５）。ただし、ステップＳ１０５において、ウィンドウ処理部１５１は、ステップＳ１０２で取り除いた最後の時刻と、イベントの時刻が一致する場合には、イベントを追加しない。
【００３９】
ウィンドウ処理部１５１は、予備ウィンドウがウィンドウのイベント条件を満たすか否かを判定する（ステップＳ１０６）。ウィンドウ処理部１５１は、予備ウィンドウがウィンドウのイベント条件を満たさない場合には（ステップＳ１０６，Ｎｏ）、ステップＳ１０８に移行する。
【００４０】
一方、ウィンドウ処理部１５１は、予備ウィンドウがウィンドウのイベント条件を満たす場合には（ステップＳ１０６，Ｙｅｓ）、予備ウィンドウを仮ウィンドウに設定する（ステップＳ１０７）。
【００４１】
ウィンドウ処理部１５１は、処理を終了する場合には（ステップＳ１０８，Ｙｅｓ）、ウィンドウを設定する処理を終了する。一方、ウィンドウ処理部１５１は、処理を終了しない場合には（ステップＳ１０８，Ｎｏ）、ステップＳ１０３に移行する。
【００４２】
ここで、図２に示したクエリ１４１と、図４に示した照合データ１４２とを例にして、ウィンドウ処理部１５１が実行する仮ウィンドウ構築処理について説明する。図６〜図９は、本実施例１に係る仮ウィンドウ構築処理を説明するための図である。
【００４３】
図６について、ウィンドウ処理部１５１は、クエリ１４１のウィンドウ１４１ａのウィンドウ幅条件「４」によって照合データ１４２の時間を分割し、分割領域７０ａ，７０ｂ，７０ｃ，７０ｄ，７０ｅを設定する。ウィンドウ処理部１５１は、分割領域７０ａ〜７０ｅに対して、分割領域番号０〜４をそれぞれ設定する。ウィンドウ処理部１５１は、クエリ１４１のウィンドウ１４１ｂのウィンドウ幅条件「３」によって照合データ１４２の時間を分割し、分割領域８０ａ，８０ｂ，８０ｃ，８０ｄ，８０ｅ，８０ｆ，８０ｇを設定する。ウィンドウ処理部１５１は、分割領域８０ａ〜８０ｇに対して、分割領域番号０〜６をそれぞれ設定する（ステップＳ１０）。
【００４４】
ウィンドウ処理部１５１は、連続する分割領域から、最後の時刻を除いた期間を予備ウィンドウに設定する。ウィンドウ処理部１５１は、分割領域７０ａ，７０ｂについて、最後の時刻「７」を除いた期間を予備ウィンドウ７１として設定する。ウィンドウ処理部１５１は、分割領域８０ａ，８０ｂについて、最後の時刻「５」を除いた期間を予備ウィンドウ８１として設定する（ステップＳ１１）。
【００４５】
ウィンドウ処理部１５１は、他の連続する分割領域についても、上記ステップＳ１１と同様の処理を実行し、予備ウィンドウ７２，７３，７４，７５および予備ウィンドウ８２，８３，８４，８５，８６，８７を設定する（ステップＳ１２）。
【００４６】
ウィンドウ処理部１５１は、予備ウィンドウを設定した後に、照合データ１４２に対してイベントの走査を開始する。以下の説明では、時刻Ｘにおいて、イベントＹを検知することを、イベント（Ｘ，Ｙ）を検知すると適宜表記する。また、予備ウィンドウ７１〜７５は、図２のクエリ１４１のウィンドウ１４１ａに定義されたイベント条件Ａ，Ｂ，Ｃに対応するイベントＡ，Ｂ，Ｃが追加された場合に、イベント条件を満たすことになる。予備ウィンドウ８１〜８７は、クエリ１４１のウィンドウ１４１ｂに定義されたイベント条件Ｄ，Ｅに対応するイベントＤ，Ｅが追加された場合に、イベント条件を満たすことになる。
【００４７】
ウィンドウ処理部１５１は、イベント（０，Ａ）を検知する。イベントＡの時刻が「０」であり、ウィンドウ幅条件が「４」であるため、分割領域番号は「０÷４＝０」となる。分割領域番号と同一の番号が割り当てられた分割領域を含む予備ウィンドウ７１に、イベントＡを追加する。なお、予備ウィンドウ７１は、クエリ１４１のウィンドウ１４１ａのイベント条件を満たしていない（ステップＳ１３）。ステップＳ１３に示す処理は、図５のステップＳ１０５、Ｓ１０６に示した処理に対応する。以下の処理についても同様である。
【００４８】
図７の説明に移行する。ウィンドウ処理部１５１は、イベント（１，Ｂ）、（２，Ａ）を検知する。イベント（１，Ｂ）、（２，Ａ）に対する分割領域番号は「０」となる。このため、ウィンドウ処理部１５１は、予備ウィンドウ７１にイベントＡ，Ｂを登録する。なお、予備ウィンドウ７１は、クエリ１４１のウィンドウ１４１ａのイベント条件を満たしていない（ステップＳ１４）。
【００４９】
ウィンドウ処理部１５１は、イベント（４，Ｂ）、（４，Ｃ）、（５，Ｃ）を検知する。イベント（４，Ｂ）、（４，Ｃ）、（５，Ｃ）に対する分割領域番号は「１」となる。ウィンドウ処理部１５１は、分割領域番号「１」に対応する予備ウィンドウ７１、７２にイベントＢ，Ｃ，Ｃを登録する。ウィンドウ処理部１５１は、予備ウィンドウ７１が、クエリ１４１のウィンドウ１４１ａのイベント条件を満たすので、予備ウィンドウ７１を仮ウィンドウに登録する。なお、予備ウィンドウ７２は、クエリ１４１のウィンドウ１４１ａのイベント条件を満たしていない（ステップＳ１５）。
【００５０】
ウィンドウ処理部１５１は、イベント（９，Ｂ）、（１０，Ａ）、（１０，Ｃ）を検知する。イベント（９，Ｂ）、（１０，Ａ）、（１０，Ｃ）に対する分割領域番号は「２」となる。ウィンドウ処理部１５１は、分割領域番号「２」に対応する予備ウィンドウ７２，７３にイベントＢ，Ａ，Ｃを登録する。ウィンドウ処理部１５１は、ウィンドウ７２，７３が、クエリ１４１のウィンドウ１４１ａのイベント条件を満たすので、予備ウィンドウ７２，７３を仮ウィンドウに登録する（ステップＳ１６）。
【００５１】
ウィンドウ処理部１５１は、イベント（１１，Ａ）、（１１，Ｂ）を検知する。イベント（１１，Ａ）、（１１，Ｂ）に対する分割領域番号は「２」となる。また、イベント（１１，Ａ）、（１１，Ｂ）は、分割領域７０ｃの最後の時刻である。このため、ウィンドウ処理部１５１は、仮ウィンドウ７３にのみ、イベントＡ，Ｂを追加する（ステップＳ１７）。
【００５２】
図８の説明に移行する。ウィンドウ処理部１５１は、イベント（１２，Ａ）を検知する。イベント（１２，Ａ）に対する分割領域番号は「３」となる。ウィンドウ処理部１５１は、分割領域番号「３」に対応する仮ウィンドウ７３および予備ウィンドウ７４に、イベントＡを追加する。予備ウィンドウ７４は、クエリ１４１のウィンドウ１４１ａのイベント条件を満たしていない（ステップＳ１８）。
【００５３】
ウィンドウ処理部１５１は、イベント（１４，Ｂ）を検知する。イベント（１４，Ｂ）に対する分割領域番号は「３」となる。ウィンドウ処理部１５１は、分割領域番号「３」に対応する仮ウィンドウ７３および予備ウィンドウ７４に、イベントＢを追加する。予備ウィンドウ７４は、クエリ１４１のウィンドウ１４１ａのイベント条件を満たしていない（ステップＳ１９）。
【００５４】
ウィンドウ処理部１５１は、イベント（１４，Ｄ）を検知する。イベント（１４，Ｄ）に対する分割領域番号は「３」となる。ウィンドウ処理部１５１は、イベント（１４，Ｄ）が、分割領域８０ｅで最後の時刻であるため、予備ウィンドウ８５にのみ、イベントＤを追加する。ウィンドウ８５は、クエリ１４１のウィンドウ１４１ｂのイベント条件を満たしていない（ステップＳ２０）。
【００５５】
ウィンドウ処理部１５１は、イベント（１５，Ｅ）を検知する。イベント（１５，Ｅ）に対する分割領域番号は「３」となる。ウィンドウ処理部１５１は、分割領域番号「３」に対応する予備ウィンドウ８５，８６に、イベントＥを追加する。ウィンドウ処理部１５１は、予備ウィンドウ８５が、クエリ１４１のウィンドウ１４１ｂのイベント条件を満たすので、予備ウィンドウ８５を仮ウィンドウ８５に登録する。予備ウィンドウ８６は、クエリ１４１のウィンドウ１４１ｂのイベント条件を満たしていない（ステップＳ２１）。
【００５６】
図９の説明に移行する。ウィンドウ処理部１５１は、イベント（１７，Ｃ）を検知する。イベント（１７，Ｃ）に対する分割領域番号は「３」となる。ウィンドウ処理部１５１は、分割領域番号「３」に対応する予備ウィンドウ７４，７５に、イベントＣを追加する。ウィンドウ処理部１５１は、予備ウィンドウ７４が、クエリ１４１のウィンドウ１４１ｂのイベント条件を満たすので、予備ウィンドウ７４を仮ウィンドウ７４に登録する。予備ウィンドウ７５は、クエリ１４１のウィンドウ１４１ｂのイベント条件を満たしていない（ステップＳ２２）。
【００５７】
ウィンドウ処理部１５１は、イベント（１７，Ｅ）を検知する。イベント（１７，Ｅ）に対する分割領域番号は「５」となる。ウィンドウ処理部１５１は、イベント（１７，Ｅ）が、分割領域８０ｆの最後の時刻であるため、予備ウィンドウ８６にのみ、イベントＥを登録する。予備ウィンドウ８６は、クエリ１４１のウィンドウ１４１ｂのイベント条件を満たしていない（ステップＳ２３）。
【００５８】
ウィンドウ処理部１５１は、イベント（１８，Ｅ）を検知する。イベント（１８，Ｅ）に対する分割領域番号は「６」となる。ウィンドウ処理部１５１は、分割領域番号「６」に対応する予備ウィンドウ８６，８７に、イベントＥを追加する。予備ウィンドウ８６，８６は、クエリ１４１のウィンドウ１４１ｂのイベント条件を満たしていない（ステップＳ２４）。
【００５９】
ウィンドウ処理部１５１は、イベント（１９，Ｄ）を検知する。イベント（１９，Ｄ）に対する分割領域番号は「６」となる。ウィンドウ処理部１５１は、分割領域番号「６」に対応する予備ウィンドウ８６，８７に、イベントＤを追加する。ウィンドウ処理部１５１は、予備ウィンドウ８６，８７が、クエリ１４１のウィンドウ１４１ｂのイベント条件を満たすので、予備ウィンドウ８６，８７を仮ウィンドウに登録する（ステップＳ２５）。
【００６０】
図６〜図９に説明したように、ウィンドウ処理部１５１が、処理を実行すると、仮ウィンドウ７１，７２，７３，７４と、仮ウィンドウ８５，８６，８７が登録される。図１０は、本実施例１に係る仮ウィンドウ構築処理の処理結果の一例を示す図である。ウィンドウ処理部１５１は、処理結果を、照合部１５２に出力する。
【００６１】
照合部１５２は、ウィンドウ処理部１５１の処理結果を基にして、クエリ１４１の条件を満たすイベントの組み合わせを検出する処理部である。ウィンドウ処理部１５１の処理結果を図１０に示すものであるとすると、照合部１５２は、仮ウィンドウ７１〜７４と、仮ウィンドウ８５〜８７との組み合わせについて、クエリ１４１のインターバル条件「５−８分」を満たす仮ウィンドウの組み合わせを判定する。
【００６２】
クエリ１４１のインターバル条件「５−８分」を満たす仮ウィンドウの組み合わせは、仮ウィンドウ７１と仮ウィンドウ８５との組み、仮ウィンドウ７２と仮ウィンドウ８６との組み、仮ウィンドウ７２と仮ウィンドウ８７との組みとなる。
【００６３】
このため、照合部１５２は、仮ウィンドウ７１，８５の組みに含まれるイベントの種別と時刻との組みを、照合結果として出力する。また、照合部１５２は、仮ウィンドウ７２，８６の組みに含まれるイベントの種別と時刻との組みを、照合結果として出力する。また、照合部１５２は、仮ウィンドウ７２，８７の組みに含まれるイベントの種別と時刻との組みを、照合結果として出力する。
【００６４】
次に、本実施例１に係る照合装置１００の処理手順について説明する。図１１は、本実施例１に係る照合装置の処理手順を示すフローチャートである。図１１に示すように、照合装置１００は、仮ウィンドウ構築処理を実行する（ステップＳ２０１）。このステップＳ２０１に示す仮ウィンドウ構築処理は、図５に示した処理手順に対応する処理である。
【００６５】
照合装置１００は、インターバル条件をチェックし、インターバル条件を満たす仮ウィンドウの組みとリンクを出力する（ステップＳ２０２）。照合装置１００は、組み合わせ展開を実行する（ステップＳ２０３）。例えば、ステップＳ２０３において、照合装置１００は、インターバル条件を満たす仮ウィンドウの組みに含まれるイベントの組みを出力する。
【００６６】
なお、ここでは説明を省略するが、照合装置１００は、インターバル条件を満たす仮ウィンドウに含まれるイベントの組み合わせ展開を行う。照合装置１００は、各イベントの組み合わせにおいて、クエリ１４１の全ての条件を満たすか否かをチェックし、クエリ１４１の全ての条件を満たしていれば、かかるイベントの組み合わせを出力する。組み合わせ展開に関する詳しい説明は、実施例２において説明する。
【００６７】
次に、本実施例１に係る照合装置１００の効果について説明する。照合装置１００は、クエリ１４１に定義されたウィンドウ幅条件よりも大きいウィンドウを、照合データ１４２に対して設定し、クエリ１４１に定義されたウィンドウのイベント条件を満たすウィンドウを、仮ウィンドウとして設定する。そして、照合装置１００は、各仮ウィンドウの組みについて、インターバル条件をチェックし、インターバル条件を満たす仮ウィンドウの組みに含まれるイベントを照合結果として出力する。本実施例１に係る照合装置１００によれば、従来技術と比較して、インターバル条件のチェック対象となるウィンドウの組み合わせを削減することができ、これにより、クエリと照合データとのマッチングを高速に行うことができる。なお、本実施例１では、クエリに２つのウィンドウが定義された最も基礎となる例にて説明したが、クエリに３つ以上のウィンドウが定義された場合にも適用可能である。
【実施例２】
【００６８】
次に、本実施例２に係る照合装置の構成の一例について説明する。図１２は、本実施例２に係る照合装置の構成を示す機能ブロック図である。図１２に示すように、この照合装置２００は、通信部１１０と、入力部１２０と、表示部１３０と、記憶部１４０と、制御部２５０とを有する。通信部１１０、入力部１２０、表示部１３０、記憶部１４０に関する説明は、実施例１に示した通信部１１０、入力部１２０、表示部１３０、記憶部１４０に関する説明と同様であるため、同一の符号を付してここでは説明を省略する。
【００６９】
制御部２５０は、ウィンドウ処理部２５１および照合部２５２を有する。制御部２５０は、例えば、ＡＳＩＣや、ＦＰＧＡなどの集積装置に対応する。また、制御部２５０は、例えば、ＣＰＵやＭＰＵ等の電子回路に対応する。
【００７０】
ウィンドウ処理部２５１は、クエリ１４１を参照し、クエリ１４１のウィンドウのウィンドウ幅条件よりも大きい幅の仮ウィンドウを、順次設定する処理部である。図１３は、本実施例２に係るウィンドウ処理部の処理の一例を説明するための図である。図１３では一例として、ウィンドウ幅条件を「４」として説明を行う。
【００７１】
ウィンドウ処理部２５１は、クエリ１４１のウィンドウ幅条件以上の値を「ｗ」の値に設定する。ウィンドウ処理部２５１は、ウィンドウの開始時刻から「２×ｗ」過ぎてから、初めに出現するイベントを特定する。ウィンドウ処理部２５１は、初めに出現するイベントよりも、「ｗ−１」時間前の時刻から次のイベントが出現する時刻を、次の仮ウィンドウの開始時刻として、順次仮ウィンドウを構築していく。
【００７２】
ここでは一例として、Ｗの値を「４」として、ウィンドウ処理部２５１の説明を行う。図１３に示すように、ウィンドウ処理部２５１は、ウィンドウ２６０の開始時刻「０」から「２×ｗ」過ぎてから、初めに出現するイベント（９，Ｂ）を特定する。ウィンドウ処理部２５１は、特定したイベント（９，Ｂ）よりも、「ｗ−１＝３」時間前の時刻「６」から次のイベントが出現する時刻「９」を、次のウィンドウ２６１の開始時刻として特定する。
【００７３】
ここで、ウィンドウ処理部２５１が仮ウィンドウを構築する処理手順について説明する。図１４は、本実施例２に係る仮ウィンドウ構築処理の処理手順を示すフローチャートである。図１４に示すように、ウィンドウ処理部２５１は、１つのイベントを検知し（ステップＳ３０１）、イベントを該当する仮ウィンドウに追加する（ステップＳ３０２）。
【００７４】
ウィンドウ処理部２５１は、仮ウィンドウが存在しない場合には（ステップＳ３０３，Ｎｏ）、ステップＳ３１２に移行する。
【００７５】
一方、ウィンドウ処理部２５１は、仮ウィンドウが存在する場合には（ステップＳ３０３，Ｙｅｓ）、イベントの時刻から最新の仮ウィンドウの開始時刻を減算した値が、「２ｗ−１」以上であるか否かを判定する（ステップＳ３０４）。ウィンドウ処理部２５１は、イベントの時刻から最新の仮ウィンドウの開始時刻を減算した値が、「２ｗ−１」以上でない場合には（ステップＳ３０４，Ｎｏ）、ステップＳ３０９に移行する。
【００７６】
ウィンドウ処理部２５１は、イベントの時刻から最新の仮ウィンドウの開始時刻を減算した値が、「２ｗ−１」以上の場合には（ステップＳ３０４，Ｙｅｓ）、最新の仮ウィンドウが全てのイベント条件を満たすか否かを判定する（ステップＳ３０５）。ウィンドウ処理部２５１は、最新の仮ウィンドウが全てのイベント条件を満たさない場合には（ステップＳ３０５，Ｎｏ）、ステップＳ３１１に移行する。
【００７７】
ウィンドウ処理部２５１は、最新の仮ウィンドウが全てのイベント条件を満たす場合には（ステップＳ３０５，Ｙｅｓ）、ステップＳ３０７に移行する。ウィンドウ処理部２５１は、最新の仮ウィンドウ内に「イベントの時刻−ｗ＋１」の時刻以降にイベントがあるか否かを判定する（ステップＳ３０６）。ウィンドウ処理部２５１は、最新の仮ウィンドウ内に「イベントの時刻−ｗ＋１」の時刻以降にイベントがない場合には（ステップＳ３０６，Ｎｏ）、ステップＳ３０９に移行する。
【００７８】
ウィンドウ処理部２５１は、最新の仮ウィンドウ内に「イベントの時刻−ｗ＋１」の時刻以降にイベントが有る場合には（ステップＳ３０６，Ｙｅｓ）、ステップＳ３０７に移行する。ウィンドウ処理部２５１は、最新の仮ウィンドウに含まれるイベントから「イベントの時刻−ｗ＋１」の時刻から初めのイベントを取り出す（ステップＳ３０７）。
【００７９】
ウィンドウ処理部２５１は、仮ウィンドウを新しく生成し、取り出したイベントの時刻を新しく生成した仮ウィンドウの開始時刻とし、開始時刻以降のイベントを新しい仮ウィンドウに追加する（ステップＳ３０８）。ウィンドウ処理部２５１は、イベント時刻をウィンドウの終了時刻とし、イベントを仮ウィンドウに追加する（ステップＳ３０９）。
【００８０】
ウィンドウ処理部２５１は、処理を終了する場合には（ステップＳ３１０，Ｙｅｓ）、仮ウィンドウ構築処理を終了する。一方、ウィンドウ処理部２５１は、処理を終了しない場合には（ステップＳ３１０，Ｎｏ）、ステップＳ３０１に移行する。
【００８１】
ところで、ステップＳ３１１において、ウィンドウ処理部２５１は、最新の仮ウィンドウを削除する（ステップＳ３１１）。ウィンドウ処理部２５１は、仮ウィンドウを新しく生成し、イベントの時刻を新しい仮ウィンドウの開始時刻に設定し（ステップＳ３１２）、ステップＳ３０９に移行する。
【００８２】
ここで、図２に示したクエリ１４１と、図４に示した照合データ１４２を例にして、ウィンドウ処理部２５１が実行する仮ウィンドウ構築処理について説明する。図１５〜図１７は、本実施例２に係る仮ウィンドウ構築処理を説明するための図である。図１５〜図１７の説明では、イベントＡ〜Ｃに対するウィンドウのｗの値を「４」とし、イベントＤ，Ｅに対するウィンドウのｗの値を「３」として説明を行う。
【００８３】
図１５について説明する。ウィンドウ処理部２５１は、イベント（０，Ａ）を検知する。ウィンドウ処理部２５１は、仮ウィンドウ２６０を生成する。ウィンドウ処理部２５１は、イベントＡを、仮ウィンドウ２６０に追加する（ステップＳ３０）。
【００８４】
ウィンドウ処理部２５１は、イベント（１，Ｂ）を検知する。ウィンドウ処理部２５１は、仮ウィンドウ２６０の終了時刻を、イベント（１，Ｂ）の時刻「１」に設定する。ウィンドウ処理部２５１は、イベントＢを、仮ウィンドウ２６０に追加する（ステップＳ３１）。
【００８５】
ウィンドウ処理部２５１は、イベント（２，Ａ）、（４，Ｂ）、（４，Ｃ）、（５，Ｃ）を検知する。ウィンドウ処理部２５１は、仮ウィンドウ２６０の終了時刻をイベント（５，Ｃ）の時刻「５」に設定する。ウィンドウ処理部２５１は、各イベントＡ，Ｂ，Ｃ，Ｃを、仮ウィンドウ２６０に追加する（ステップＳ３２）。
【００８６】
ウィンドウ処理部２５１は、イベント（９，Ｂ）を検知する。イベント（９，Ｂ）のイベント時刻「９」から最新の仮ウィンドウ２６０の開始時刻「０」を減算した値が、「２ｗ−１＝７」の値よりも大きくなる。また、最新の仮ウィンドウ２６０は、全てのイベント条件を満たす。また、「イベント（９，Ｂ）のイベント時刻「９」−ｗ＋１」＝「９−４＋１＝６」以降に、最新の仮ウィンドウ２６０のイベントが存在しない。このため、ウィンドウ処理部２５１は、新しい仮ウィンドウ２６１を生成し、仮ウィンドウ２６１の開始時刻および終了時刻を「９」に設定する（ステップＳ３３）。
【００８７】
ウィンドウ処理部２５１は、イベント（１０，Ａ）、（１０，Ｃ）、（１１，Ａ）、（１１，Ｂ）、（１２，Ａ）、（１４，Ｂ）を検知する。ウィンドウ処理部２５１は、各イベントＡ，Ｃ，Ａ，Ｂ，Ａ，Ｂを、最新の仮ウィンドウ２６１に設定する。ウィンドウ処理部２５１は、仮ウィンドウの終了時刻を「１４」に設定する（ステップＳ３４）。
【００８８】
ウィンドウ処理部２５１は、イベント（１４，Ｄ）を検知する。ウィンドウ処理部２５１は、ウィンドウ２７０を生成する。ウィンドウ処理部２５１は、イベントＤを、仮ウィンドウ２７０に追加する（ステップＳ３５）。
【００８９】
ウィンドウ処理部２５１は、イベント（１５，Ｅ）を検知する。ウィンドウ処理部２５１は、イベントＥを仮ウィンドウ２７０に追加する（ステップＳ３６）。
【００９０】
ウィンドウ処理部２５１は、イベント（１７，Ｃ）を検知する。イベント（１７，Ｃ）のイベント時刻「１７」から最新の仮ウィンドウ２６１の開始時刻「９」を減算した値が、「２×２−１＝７」の値よりも大きくなる。最新の仮ウィンドウ２６１は、全てのイベント条件を満たす。また、「イベント（１７，Ｃ）のイベント時刻「１７」−ｗ＋１＝１７−４＋１＝１４」以降に、最新の仮ウィンドウ２６１のイベント（１４，Ｂ）が存在する。このため、ウィンドウ処理部２５１は、新しい仮ウィンドウ２６２を生成し、仮ウィンドウ２６２の開始時刻をイベント（１４，Ｂ）の開始時刻「１４」に設定する。また、ウィンドウ処理部２５１は、イベント（１７，Ｃ）を、仮ウィンドウ２６２に追加し、イベント（１７，Ｃ）の時刻「１７」を、仮ウィンドウ２６２の終了時刻に設定する（ステップＳ３７）。
【００９１】
図１７の説明に移行する。ウィンドウ処理部２５１は、イベント（１７，Ｅ）、（１８，Ｅ）を検知する。ウィンドウ処理部２５１は、イベントＥ，Ｅを仮ウィンドウ２７０に追加する（ステップＳ３８）。
【００９２】
ウィンドウ処理部２５１は、イベント（１９，Ｄ）を検知する。イベント（１９，Ｄ）のイベント時刻「１９」から最新の仮ウィンドウ２７０の開始時刻「１４」を減算した値が、「２×３−１＝５」の値よりも大きくなる。最新の仮ウィンドウ２７０は、全てのイベント条件を満たす。また、「イベント（１９，Ｄ）のイベント時刻「１９」−ｗ＋１＝１７−３＋１＝１５」以降に、最新の仮ウィンドウ２６１のイベント（１７，Ｅ）が存在する。このため、ウィンドウ処理部２５１は、新しい仮ウィンドウ２７１を生成し、仮ウィンドウ２７１の開始時刻をイベント（１７，Ｅ）の開始時刻に設定する。また、ウィンドウ処理部２５１は、イベント（１８，Ｅ）、（１９，Ｄ）を、仮ウィンドウ２７１に追加し、イベント（１９，Ｄ）の時刻「１９」を、仮ウィンドウ２７１の終了時刻に設定する（ステップＳ３９）。
【００９３】
ウィンドウ処理部２５１は、時刻２１以降のイベントの検知を試みるが、イベントは存在しない。このため、最新の仮ウィンドウ２６２は、全てのイベント条件を満たさない。ウィンドウ処理部２５１は、仮ウィンドウ２６２を削除する（ステップＳ４０）。
【００９４】
ウィンドウ処理部２５１は、上記図１５〜図１７に示す処理を実行することで、仮ウィンドウ２６０，２６１および仮ウィンドウ２７０，２７１を構築する。ウィンドウ処理部２５１は、構築した仮ウィンドウの情報を、照合部２５２に出力する。
【００９５】
図１２の説明に戻る。照合部２５２は、ウィンドウ処理部２５１によって構築された仮ウィンドウと、クエリ１４１とを基にして、クエリ１４１の条件を満たすイベントの組みを照合データ１４２から検出する処理部である。
【００９６】
照合部２５２は、各仮ウィンドウの組みが、クエリ１４１のインターバル条件を満たすか否かを確認する場合に、仮ウィンドウの組みの終了時刻と開始時刻と時間間隔を利用する代わりに、仮ウィンドウ内のイベントの時刻を考慮して行う。以下の説明では、仮ウィンドウの組みについて、先行する仮ウィンドウを先行ウィンドウと表記し、後続する仮ウィンドウを後続ウィンドウと表記する。
【００９７】
照合部２５２は、先行ウィンドウと後続ウィンドウとの関係が「最小インターバル条件」および「最大インターバル条件」を満たす場合に、先行ウィンドウと後続ウィンドウとの組みを出力する。
【００９８】
まず、最小インターバル条件について説明する。照合部２５２は、先行ウィンドウと後続ウィンドウとの「最小間隔」が、インターバル条件の最小値より大となる場合に、「最小インターバル条件」を満たすと判定する。図１８は、最小インターバル条件を説明するための図である。
【００９９】
図１８について、先行ウィンドウをウィンドウ２８０とし、後続ウィンドウをウィンドウ２９０とする。照合部２５２は、先行ウィンドウ２８０に含まれるイベントのうち、イベント条件を満たす最初のイベントの組みの中で一番遅いイベントの時刻を、第１基準時刻として特定する。そうすると、第１基準時刻は「１０」となる。
【０１００】
照合部２５２は、後続ウィンドウ２９０に含まれるイベントのうち、イベント条件を満たす最後のイベントの組みの中で一番早いイベントの時刻を、第２基準時刻として特定する。そうすると、第２基準時刻は「１４」となる。
【０１０１】
照合部２５２は、第１基準時刻と第２基準時刻との間隔を最小間隔として算出する。図１８に示す例では、最小間隔は「４」となり、インターバル条件の最小値「４」以下である。このため、照合部２５２は、仮ウィンドウ２８０，２９０の組みについて、最小インターバルの条件を満たさないと判定する。なお、仮に、第１基準時刻が「９」より早い時刻であれば、最小インターバル条件を満たすことになる。
【０１０２】
続いて、最大インターバル条件について説明する。照合部２５２は、先行ウィンドウと後続ウィンドウとの「最大間隔」が、インターバル条件の最大値と、先行ウィンドウ幅条件と、後続ウィンドウ幅条件を加算した値以下となっている場合に、「最大インターバル条件」を満たすと判定する。図１９は、最大インターバル条件を説明するための図である。
【０１０３】
図１９について、先行ウィンドウをウィンドウ２８１とし、後続ウィンドウをウィンドウ２９１とする。照合部２５２は、先行ウィンドウ２８１に含まれるイベントのうち、イベント条件を満たす最後のイベントの組みの中で一番早いイベントの時刻を、第３基準時刻として特定する。そうすると、第３基準時刻は「２」となる。
【０１０４】
照合部２５２は、後続ウィンドウ２９１に含まれる最初のイベントの組みの中で一番遅いイベントの時刻を、第４基準時刻として特定する。そうすると、第４基準時刻は「１９」となる。
【０１０５】
照合部２５２は、第３基準時刻と第４基準時刻との間隔を最大間隔として算出する。図１９に示す例では、最大間隔は「１７」となる。一方、インターバル条件の最大値「８」と、先行ウィンドウ幅「４」と、後続ウィンドウ幅「３」を加算した値は「１５」となる。このため、照合部２５２は、仮ウィンドウ２８１，２９１の組みについて、最大インターバル条件を満たさないと判定する。なお、仮に、第３基準時刻が「５」より遅い時刻であれば、最大インターバル条件を満たすことになる。
【０１０６】
ここで、照合部２５２がインターバル条件を判定する処理手順について説明する。図２０および図２１は、インターバル条件判定処理の処理手順を示すフローチャートである。図２０に示すように、照合部２５２は、クエリ１４１の先行するウィンドウ条件に対応する先頭の仮ウィンドウを取り出し、先行ウィンドウに設定する（ステップＳ４０１）。
【０１０７】
照合部２５２は、クエリ１４１の後続ウィンドウ条件に対応する先頭の仮ウィンドウを取り出して後続ウィンドウに設定し、さらに、ベース後続ウィンドウに設定する（ステップＳ４０２）。
【０１０８】
照合部２５２は、先行ウィンドウと後続ウィンドウについて、インターバル条件をチェックする（ステップＳ４０３）。照合部２５２は、最小インターバル条件を満たさない場合には（ステップＳ４０４，Ｎｏ）、図２１のステップＳ４０７に移行する。
【０１０９】
一方、照合部２５２は、最小インターバル条件を満たす場合には（ステップＳ４０４，Ｙｅｓ）、最大インターバル条件を満たすか否かを判定する（ステップＳ４０５）。照合部２５２は、最大インターバル条件を満たさない場合には（ステップＳ４０５，Ｎｏ）、図２１のステップＳ４１１に移行する。
【０１１０】
一方、照合部２５２は、最大インターバル条件を満たす場合には（ステップＳ４０５，Ｙｅｓ）、ステップＳ４０６に移行する。照合部２５２は、該当する先行ウィンドウと後続ウィンドウとの組みを出力していなければ出力し、先行ウィンドウと後続ウィンドウとのリンクを出力し（ステップＳ４０６）、図２０のステップＳ４０８に移行する。
【０１１１】
図２１の説明に移行する。照合部２５２は、後続ウィンドウの次のウィンドウをベース後続ウィンドウに設定する（ステップＳ４０７）。照合部２５２は、後続ウィンドウの次の仮ウィンドウが存在する場合には（ステップＳ４０８，Ｙｅｓ）、後続ウィンドウの次の仮ウィンドウを取り出し、後続ウィンドウに設定し（ステップＳ４０９）、図２０のステップＳ４０３に移行する。
【０１１２】
一方、照合部２５２は、後続ウィンドウの次の仮ウィンドウが存在しない場合には（ステップＳ４０８，Ｎｏ）、先行ウィンドウの次の仮ウィンドウが存在するか否かを判定する（ステップＳ４１０）。照合部２５２は、先行ウィンドウの次の仮ウィンドウが存在しない場合には（ステップＳ４１０，Ｎｏ）、処理を終了する。
【０１１３】
一方、照合部２５２は、先行ウィンドウの次の仮ウィンドウが存在する場合には（ステップＳ４１０，Ｙｅｓ）、先行ウィンドウの次の仮ウィンドウを取り出し、先行ウィンドウに設定する（ステップＳ４１１）。
【０１１４】
照合部２５２は、ベース後続ウィンドウがＮＵＬＬである場合には（ステップＳ４１２，Ｙｅｓ）、処理を終了する。照合部２５２は、ベース後続ウィンドウがＮＵＬＬでない場合には（ステップＳ４１２，Ｎｏ）、ベース後続ウィンドウを後続ウィンドウに設定し（ステップＳ４１３）、図２０のステップＳ４０３に移行する。
【０１１５】
ここで、図１７に示した仮ウィンドウの構築結果と、図２に示したクエリ１４１とを例にして、照合部２５２が実行するインターバル条件判定処理について説明する。図２２〜図２５は、本実施例２に係るインターバル条件判定処理を説明するための図である。
【０１１６】
図２２について説明する。照合部２５２は、クエリ１４１の先行するウィンドウ１４１ａの条件に対応する先頭の仮ウィンドウ２６０を先行ウィンドウに設定する。照合部２５２は、クエリ１４１の後続ウィンドウ１４１ｂの条件に対応する後続の仮ウィンドウ２７０を、後続ウィンドウに設定する。また、後続ウィンドウ２７０を、ベース後続ウィンドウに設定する（ステップＳ５０）。
【０１１７】
照合部２５２は、先行ウィンドウ２６０と後続ウィンドウ２７０について、最小インターバル条件を満たすか否かを判定する。先行ウィンドウ２６０の第１基準時刻は、イベント（４，Ｃ）の「４」となる。後続ウィンドウ２７０の第２基準時刻は、イベント（１４，Ｄ）の「１４」となる。照合部２５２は、最小間隔が「１０」となり、インターバル条件の最小値「４」よりも大となるため、先行ウィンドウ２６０と後続ウィンドウ２７０とは、最小インターバル条件を満たすと判定する（ステップＳ５１）。
【０１１８】
照合部２５２は、先行ウィンドウ２６０と後続ウィンドウ２７０について、最大インターバル条件を満たすか否かを判定する。先行ウィンドウ２６０の第３基準時刻は、イベント（２，Ａ）の「２」となる。後続ウィンドウ２７０の第４基準時刻は、イベント（１５，Ｅ）の「１５」となる。ここで、最大間隔が「１３」となり、インターバル条件の最大値「８」と、先行ウィンドウ幅条件「４」と、後続ウィンドウ幅条件「３」を加算した値「１５」以下となる。このため、照合部２５２は、先行ウィンドウ２６０と後続ウィンドウ２７０とが、最大インターバル条件を満たすと判定する（ステップＳ５２）。
【０１１９】
先行ウィンドウ２６０および後続ウィンドウ２７０が最小インターバル条件および最大インターバル条件を満たす。このため、照合部２５２は、先行ウィンドウ２６０および後続ウィンドウ２７０の組みを出力し、リンクを出力する（ステップＳ５３）。
【０１２０】
図２３の説明に移行する。照合部２５２は、後続ウィンドウ２７０の次の仮ウィンドウ２７１を後続ウィンドウに設定する（ステップＳ５４）。
【０１２１】
照合部２５２は、先行ウィンドウ２６０と後続ウィンドウ２７１とについて、最小インターバル条件を満たすか否かを判定する。先行ウィンドウ２６０の第１基準時刻は、イベント（４，Ｃ）の「４」となる。後続ウィンドウ２７１の第２基準時刻は、イベント（１８，Ｅ）の「１８」となる。照合部２５２は、最小間隔が「１４」となり、インターバル条件の最小値「４」よりも大となるため、先行ウィンドウ２６０と後続ウィンドウ２７１とは、最小インターバル条件を満たすと判定する（ステップＳ５５）。
【０１２２】
照合部２５２は、先行ウィンドウ２６０と後続ウィンドウ２７１について、最大インターバル条件を満たすか否かを判定する。先行ウィンドウ２６０の第３基準時刻は、イベント（２，Ａ）の「２」となる。後続ウィンドウ２６０の第４基準時刻は、イベント（１９，Ｄ）の「１９」となる。ここで、最大間隔が「１７」となり、インターバル条件の最大値「８」と、先行ウィンドウ幅条件「４」と、後続ウィンドウ幅条件「３」を加算した値「１５」よりも大となる。このため、照合部２５２は、先行ウィンドウ２６０と後続ウィンドウ２７１とが、最大インターバル条件を満たさないと判定する（ステップＳ５６）。
【０１２３】
図２４の説明に移行する。照合部２５２は、先行ウィンドウ２６０の次の仮ウィンドウ２６１を先行ウィンドウに設定する。照合部２５２は、後続ウィンドウ２７０をベース後続ウィンドウに設定する（ステップＳ５７）。
【０１２４】
照合部２５２は、先行ウィンドウ２６１と後続ウィンドウ２７０とについて、最小インターバル条件を満たすか否かを判定する。先行ウィンドウ２６１の第１基準時刻は、イベント（１０，Ａ）の「１０」となる。後続ウィンドウ２７０の第２基準時刻は、イベント（１４，Ｄ）の「１４」となる。照合部２５２は、最小間隔が「４」となり、インターバル条件の最小値「４」以下となるため、先行ウィンドウ２６１と後続ウィンドウ２７０とは、最小インターバル条件を満たさないと判定する。なお、先行ウィンドウ２６１とベース後続ウィンドウ２７０とが、最小インターバル条件を満たさない場合には、先行ウィンドウ２６１と仮ウィンドウ２７１とも最小インターバル条件を満たさない（ステップＳ５８）。
【０１２５】
照合部２５２は、後続ウィンドウ２７０の次の仮ウィンドウ２７１を後続ウィンドウおよびベース後続ウィンドウに設定する（ステップＳ５９）。
【０１２６】
照合部２５２は、先行ウィンドウ２６１と後続ウィンドウ２７１について、最小インターバル条件を満たすか否かを判定する。先行ウィンドウ２６１の第１基準時刻は、イベント（１０，Ａ）の「１０」となる。後続ウィンドウ２７１の第２基準時刻は、イベント（１８，Ｅ）の「１８」となる。照合部２５２は、最小間隔が「８」となり、インターバル条件の最小値「４」よりも大となるため、先行ウィンドウ２６１と後続ウィンドウ２７１とは、最小インターバル条件を満たすと判定する（ステップＳ６０）。
【０１２７】
図２５の説明に移行する。照合部２５２は、先行ウィンドウ２６１と後続ウィンドウ２７１について、最大インターバル条件を満たすか否かを判定する。先行ウィンドウ２６１の第３基準時刻は、イベント（１０，Ｃ）の「１０」となる。後続ウィンドウ２７１の第４基準時刻は、イベント（１９，Ｄ）の「１９」となる。ここで、最大間隔が「９」となり、インターバル条件の最大値「８」と、先行ウィンドウ幅条件「４」と、後続ウィンドウ幅条件「３」を加算した値「１５」以下となる。このため、照合部２５２は、先行ウィンドウ２６１と後続ウィンドウ２７１とが、最大インターバル条件を満たすと判定する（ステップＳ６１）。
【０１２８】
先行ウィンドウ２６１および後続ウィンドウ２７１が最小インターバル条件および最大インターバル条件を満たす。このため、照合部２５２は、先行ウィンドウ２６１および後続ウィンドウ２７１の組みを出力し、リンクを出力する（ステップＳ６２）。
【０１２９】
照合部２５２は、先行ウィンドウ２６１の次の仮ウィンドウが存在しないため、インターバル条件判定処理を終了する。照合部２５２は、図２２〜図２５の処理を実行することで、先行ウィンドウ２６０と後続ウィンドウ２７０との組みと、先行ウィンドウ２６１と後続ウィンドウ２７１との組みを出力する。
【０１３０】
照合部２５２は、各仮ウィンドウについてインターバル条件判定処理を実行した後に、組み合わせ展開を行い、クエリ１４１の条件を満たすイベントの組みを判定する。図２６は、組み合わせ展開の結果の一例を示す図である。
【０１３１】
図２６において、イベント群３００は、先行ウィンドウ２６０と後続ウィンドウ２７０との組み合わせ展開の結果である。イベント群４００は、先行ウィンドウ２６１と後続ウィンドウ２７１の組み合わせ展開の結果である。照合部２５２は、イベント群３００，４００について、クエリ１４１の条件を満たすイベントの組みを特定する。
【０１３２】
イベント群３００において、イベント３０６，３０９の組みが、クエリ１４１の条件を満たす。イベント群４００において、イベント４０１〜４０４，４０６〜４０９，４１１〜４１４の組みが、クエリ１４１の条件を満たす。このため、照合部２５２は、イベント３０６，３０９，イベント４０１〜４０４，４０６〜４０９，４１１〜４１４の組みを、クエリ１４１の照合結果として出力する。
【０１３３】
次に、本実施例２に係る照合装置２００の処理手順について説明する。図２７は、本実施例２に係る照合装置の処理手順を示すフローチャートである。図２７に示すように、照合装置１００は、仮ウィンドウ構築処理を実行する（ステップＳ５０１）。ステップＳ５０１に示す仮ウィンドウ構築処理は、図１４に示した処理手順に対応する処理である。
【０１３４】
照合装置２００は、インターバル条件をチェックし、インターバル条件を満たす仮ウィンドウの組みとリンクを出力する（ステップＳ５０２）。ステップ５０２に示す処理は、図２０及び図２１に示した処理手順に対応する処理である。照合装置２００は、組み合わせ展開を実行し、クエリ１４１の条件を満たすイベントの組みを出力する（ステップＳ５０３）。
【０１３５】
次に、本実施例２に係る照合装置２００の効果について説明する。照合装置２００は、クエリ１４１のウィンドウ幅条件以上の値を「ｗ」の値に設定し、ウィンドウの開始時刻から「２×ｗ」過ぎてから、初めに出現するイベント特定する。そして、照合装置２００は、初めに出現するイベントよりも、「ｗ−１」時間前の時刻から次のイベントが出現する時刻を、次の仮ウィンドウの開始時刻として、順次仮ウィンドウを構築し、クエリ１４１の条件を満たすか否かを判定する。このため、照合装置２００によれば、インターバル条件のチェック対象となるウィンドウの組み合わせを削減することができ、これにより、クエリと照合データとのマッチングを高速に行うことができる。
【０１３６】
また、照合装置２００は、先行ウィンドウおよび後続ウィンドウに含まれるイベントの時刻を基にして、クエリ１４１のインターバル条件が満たされるか否かを判定する。具体的に、照合装置２００は、先行ウィンドウに含まれるイベントのうち、イベント条件を満たす最初のイベントの組みの中で一番遅いイベントの時刻を、第１基準時刻として特定する。照合装置２００は、後続ウィンドウに含まれるイベントのうち、イベント条件を満たす最後のイベントの組みの中で一番早いイベントの時刻を、第２基準時刻として特定する。そして、照合装置２００は、第１基準時刻および第２基準時刻のインターバルと、最小インターバル条件とを基にして、最小インターバル条件を満たすか否かを判定する。
【０１３７】
更に、照合装置２００は、先行ウィンドウに含まれるイベントのうち、イベント条件を満たす最後のイベントの組みの中で一番早いイベントの時刻を、第３基準時刻として特定する。照合装置２００は、後続ウィンドウに含まれる最初のイベントの組みの中で一番遅いイベントの時刻を、第４基準時刻として特定する。照合装置２００は、第３基準時刻および第４基準時刻のインターバルと、最大インターバル条件、先行ウィンドウの幅、および後続ウィンドウの幅を基にして、最大インターバル条件を満たすか否かを判定する。
【０１３８】
そして、照合装置２００は、最小インターバル条件を満たし、かつ、最大インターバル条件を満たす場合に、先行ウィンドウと後続ウィンドウとが、クエリ１４１のインターバル条件を満たすと判定する。このため、クエリ１４１の解となり得るイベントの組みを含んだウィンドウの組みをより正確に特定することができる。
【０１３９】
次に、上記の実施例に示した照合装置と同様の機能を実現する照合プログラムを実行するコンピュータの一例を説明する。図２８は、照合プログラムを実行するコンピュータの一例を示す図である。
【０１４０】
図２８に示すように、コンピュータ５００は、各種演算処理を実行するＣＰＵ５０１と、ユーザからのデータの入力を受け付ける入力装置５０２と、ディスプレイ５０３を有する。また、コンピュータ５００は、記憶媒体からプログラム等を読取る読み取り装置５０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置５０５とを有する。また、コンピュータ５００は、各種情報を一時記憶するＲＡＭ５０６と、ハードディスク装置５０７を有する。そして、各装置５０１〜５０７は、バス５０８に接続される。
【０１４１】
ハードディスク装置５０７は、ウィンドウ処理プログラム５０７ａ、照合プログラム５０７ｂを有する。ＣＰＵ５０１は、各プログラム５０７ａ，５０７ｂを読み出してＲＡＭ５０６に展開する。
【０１４２】
ウィンドウ処理プログラム５０７ａは、ウィンドウ処理プロセス５０６ａとして機能する。照合プログラム５０７ｂは、照合プロセス５０６ｂとして機能する。
【０１４３】
例えば、ウィンドウ処理プロセス５０６ａは、ウィンドウ処理部１５１，２５１に対応する。照合プロセス５０６ｂは、照合部１５２，２５２に対応する。
【０１４４】
なお、各プログラム５０７ａ，５０７ｂについては、必ずしも最初からハードディスク装置５０７に記憶させておかなくてもよい。例えば、コンピュータ５００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ５００がこれらから各プログラム５０７ａ，５０７ｂを読み出して実行するようにしてもよい。
【０１４５】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１４６】
（付記１）コンピュータが実行する照合方法であって、
第１ウィンドウにイベント条件が対応付けられ、前記第１ウィンドウに所定のウィンドウ幅条件が設定され、複数の前記第１ウィンドウが所定のインターバル条件によって直列に接続されたクエリに基づいて、前記ウィンドウ幅条件よりも大きいウィンドウ幅の第２ウィンドウを、イベントと前記イベントの出現時刻とを対応付けた照合データに設定し、
前記第２ウィンドウに含まれる前記照合データのイベントおよび各第２ウィンドウのインターバルが、前記第１ウィンドウのイベント条件および前記インターバル条件を満たすか否かを判定する
各処理を実行することを特徴とする照合方法。
【０１４７】
（付記２）前記第２ウィンドウを前記照合データに設定する処理は、前記第２ウィンドウの開始時刻を起点として、前記第２ウィンドウの幅を２倍した時刻よりも後に出現する初めのイベントの時刻から、前記第２ウィンドウの幅だけ前の時刻に戻り、戻った時刻の次の時刻より後に出現する初めのイベントの時刻を開始時刻とする次の第２ウィンドウを設定することを特徴とする付記１に記載の照合方法。
【０１４８】
（付記３）前記インターバル条件は最小インターバル条件を含み、前記判定する処理は、先行の第２ウィンドウに含まれるイベントのうち、前記イベント条件を満たす最初のイベントの組みの中で一番遅いイベントの第１時刻と、後続の第２ウィンドウに含まれるイベントのうち、前記イベント条件を満たす最後のイベントの組みの中で一番早いイベントの第２時刻とを特定し、前記第１時刻と前記第２時刻とのインターバルと、前記最小インターバル条件とを基にして、先行の第２ウィンドウと後続の第２ウィンドウとが、前記インターバル条件を満たすか否かを判定することを特徴とする付記２に記載の照合方法。
【０１４９】
（付記４）前記インターバル条件は最大インターバル条件を含み、前記判定する処理は、先行の第２ウィンドウに含まれるイベントのうち、前記イベント条件を満たす最後のイベントの組みの中で一番早いイベントの第３時刻と、後続の第２ウィンドウに含まれるイベントのうち、前記イベント条件を満たす最初のイベントの組みの中で一番遅いイベントの第４時刻とを特定し、前記第３時刻と前記第４時刻とのインターバルと、前記最大インターバル条件と、先行の第２ウィンドウの幅と、後続の第２ウィンドウの幅とを基にして、先行の第２ウィンドウと後続の第２ウィンドウとが、前記インターバル条件を満たすか否かを判定することを特徴とする付記２に記載の照合方法。
【０１５０】
（付記５）コンピュータに、
第１ウィンドウにイベント条件が対応付けられ、前記第１ウィンドウに所定のウィンドウ幅条件が設定され、複数の前記第１ウィンドウが所定のインターバル条件によって直列に接続されたクエリに基づいて、前記ウィンドウ幅条件よりも大きいウィンドウ幅の第２ウィンドウを、イベントと前記イベントの出現時刻とを対応付けた照合データに設定し、
前記第２ウィンドウに含まれる前記照合データのイベントおよび各第２ウィンドウのインターバルが、前記第１ウィンドウのイベント条件および前記インターバル条件を満たすか否かを判定する
各処理を実行させる照合プログラム。
【０１５１】
（付記６）前記第２ウィンドウを前記照合データに設定する処理は、前記第２ウィンドウの開始時刻を起点として、前記第２ウィンドウの幅を２倍した時刻よりも後に出現する初めのイベントの時刻から、前記第２ウィンドウの幅だけ前の時刻に戻り、戻った時刻の次の時刻より後に出現する初めのイベントの時刻を開始時刻とする次の第２ウィンドウを設定することを特徴とする付記５に記載の照合プログラム。
【０１５２】
（付記７）前記インターバル条件は最小インターバル条件を含み、前記判定する処理は、先行の第２ウィンドウに含まれるイベントのうち、前記イベント条件を満たす最初のイベントの組みの中で一番遅いイベントの第１時刻と、後続の第２ウィンドウに含まれるイベントのうち、前記イベント条件を満たす最後のイベントの組みの中で一番早いイベントの第２時刻とを特定し、前記第１時刻と前記第２時刻とのインターバルと、前記最小インターバル条件とを基にして、先行の第２ウィンドウと後続の第２ウィンドウとが、前記インターバル条件を満たすか否かを判定することを特徴とする付記６に記載の照合プログラム。
【０１５３】
（付記８）前記インターバル条件は最大インターバル条件を含み、前記判定する処理は、先行の第２ウィンドウに含まれるイベントのうち、前記イベント条件を満たす最後のイベントの組みの中で一番早いイベントの第３時刻と、後続の第２ウィンドウに含まれるイベントのうち、前記イベント条件を満たす最初のイベントの組みの中で一番遅いイベントの第４時刻とを特定し、前記第３時刻と前記第４時刻とのインターバルと、前記最大インターバル条件と、先行の第２ウィンドウの幅と、後続の第２ウィンドウの幅とを基にして、先行の第２ウィンドウと後続の第２ウィンドウとが、前記インターバル条件を満たすか否かを判定することを特徴とする付記６に記載の照合プログラム。
【符号の説明】
【０１５４】
１００  照合装置
１４１  クエリ
１４２  照合データ
１５１，２５１  ウィンドウ処理部
１５２，２５２  照合部
【図１】
2015022370.tif 000003
【図２】
2015022370.tif 000004
【図３】
2015022370.tif 000005
【図４】
2015022370.tif 000006
【図５】
2015022370.tif 000007
【図６】
2015022370.tif 000008
【図７】
2015022370.tif 000009
【図８】
2015022370.tif 000010
【図９】
2015022370.tif 000011
【図１０】
2015022370.tif 000012
【図１１】
2015022370.tif 000013
【図１２】
2015022370.tif 000014
【図１３】
2015022370.tif 000015
【図１４】
2015022370.tif 000016
【図１５】
2015022370.tif 000017
【図１６】
2015022370.tif 000018
【図１７】
2015022370.tif 000019
【図１８】
2015022370.tif 000020
【図１９】
2015022370.tif 000021
【図２０】
2015022370.tif 000022
【図２１】
2015022370.tif 000023
【図２２】
2015022370.tif 000024
【図２３】
2015022370.tif 000025
【図２４】
2015022370.tif 000026
【図２５】
2015022370.tif 000027
【図２６】
2015022370.tif 000028
【図２７】
2015022370.tif 000029
【図２８】
2015022370.tif 000030
【図２９】
2015022370.tif 000031
【図３０】
2015022370.tif 000032
【図３１】
2015022370.tif 000033
【図３２】
2015022370.tif 000034