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