JP2004046601A - Data processing apparatus and method for extracting a complex order pattern - Google Patents

Data processing apparatus and method for extracting a complex order pattern Download PDF

Info

Publication number
JP2004046601A
JP2004046601A JP2002204185A JP2002204185A JP2004046601A JP 2004046601 A JP2004046601 A JP 2004046601A JP 2002204185 A JP2002204185 A JP 2002204185A JP 2002204185 A JP2002204185 A JP 2002204185A JP 2004046601 A JP2004046601 A JP 2004046601A
Authority
JP
Japan
Prior art keywords
data
predicate
pattern
record
condition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2002204185A
Other languages
Japanese (ja)
Inventor
Ririan Harada
原田 リリアン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2002204185A priority Critical patent/JP2004046601A/en
Publication of JP2004046601A publication Critical patent/JP2004046601A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】与えられたデータから複雑なクエリにより指定された順序パターンを効率良く抽出する。
【解決手段】述語列p[0],...,p[3]にマッチするレコード列を検索するとき、あらかじめ述語同士の両立性を解析することで最適なウィンドウシフト量が決められ、ウィンドウ内においてシフト方向とは逆向きに各述語がチェックされる。まず、ウィンドウ21の位置で値42がp[1]を満たさないことが分かると、ウィンドウ21を1レコード分シフトし、ウィンドウ22内でチェックが再開される。次に、値36がp[2]を満たさないことが分かると、ウィンドウ22を3レコード分シフトし、ウィンドウ23の位置ですべての値が対応する述語を満たすことが確認される。
【選択図】   図2
An object of the present invention is to efficiently extract an order pattern specified by a complicated query from given data.
A predicate sequence p [0],. . . , P [3], an optimal window shift amount is determined by analyzing compatibility between predicates in advance, and each predicate is checked in the window in the opposite direction to the shift direction. You. First, if it is found that the value 42 does not satisfy p [1] at the position of the window 21, the window 21 is shifted by one record, and the check is restarted in the window 22. Next, if it is found that the value 36 does not satisfy p [2], the window 22 is shifted by three records, and it is confirmed that all the values at the position of the window 23 satisfy the corresponding predicate.
[Selection] Fig. 2

Description

【0001】
【発明の属する技術分野】
本発明は、与えられたデータから複雑な条件により指定された順序パターンを抽出するデータ処理装置および方法に関する。
【0002】
【従来の技術および発明が解決しようとする課題】
今日の情報化社会では、大量の順序データをモニタしなければならない多くのアプリケーションが存在する。このようなデータおよびアプリケーションとしては、例えば、センサアプリケーション、ネットワークモニタリングやトラフィック管理におけるパフォーマンス測定、医療モニタリングのためのバイタルサイン(生命徴候)および処置、電気通信における呼の詳細に関するレコード、ウェブアプリケーションにおけるログレコードやクリックストリームが挙げられる。
【0003】
ここで、センサデータに対する問い合わせと解析を行うことで物理的な世界をモニタするアプリケーションについて考えてみる。このようなアプリケーションの1つに、工場の倉庫に格納された物品を管理するアプリケーションがある。倉庫内の物品および壁には温度センサが貼り付けられ、床や天井にも温度センサが埋め込まれている。各センサは一定周期で測定温度を出力し、倉庫管理者はそのセンサデータを用いて物品が過熱状態になっていないことを確認する。この場合、アプリケーションにとっては以下のようなデータ検索のクエリが重要となる。
【0004】
クエリ1:3つの連続する測定温度が35度、36度、および37度であるようなセンサを検出せよ。
クエリ2:3回続けて2度を越える温度上昇があり、35度未満の温度から40度より高い温度に達したセンサを検出せよ。
クエリ3:38度未満の温度から40度と50度の間の温度に上昇し、引き続いて2回の下落を経て38度未満の温度に戻った時間的な変化パターンを検出せよ。
【0005】
この温度モニタリングアプリケーションにおける対象パターンは、3つの連続する測定温度を見つければよいクエリ1のような非常に単純なものから、引き続く温度上昇や、倉庫管理者が注意すべきではあるが正確には指定できない異常なスパイクを見つけるクエリ2および3のようなより複雑なものまで変化する。絶対的な単一の測定値の代わりに、可能な測定値の範囲や増減する測定値の関係が指定されることもある。
【0006】
より具体的に言えば、クエリ1、2、および3は、データストリームの中からそれぞれ以下のような述語(predicate )p[i]で表されるパターンにマッチする温度属性値を有する複数のレコードrを見つけるものである。
【0007】

Figure 2004046601
ここで、述語p[i](r)はパターン内のi番目のレコードが持つ属性値に関する条件を表し、r.temperatureはレコードrの温度属性値を表し、r.previousはデータストリームにおけるレコードrの直前のレコードを表す。与えられるデータを左から右へ順に並べた場合、クエリ2および3のr.previousはレコードrの左側のレコードに対応し、そのレコードに対する条件を指定することでパターンを記述することができる。
【0008】
クエリ1のパターン述語は常に定数を用いた等式である。したがって、Boyer−MooreアルゴリズムやKnuth−Morris−Prattアルゴリズムのような周知の文字列マッチングアルゴリズムを効率良く適用することができる。しかしながら、クエリ2およびクエリ3はより複雑であり、それらの述部は隣接レコードの属性値と定数を用いた不等式の組み合わせ(conjunction)である。文字列マッチングアルゴリズムは、クエリ1のように定数を用いた等式で表されるクエリの場合にのみ適用可能であるので、より複雑なこれらの2つのクエリには適用できない。
【0009】
このようなクエリに適用できるマッチングアルゴリズムとしては、Sadri et al.により提案されたOPS(Optimized Pattern Search)アルゴリズムがある(Sadri, R., Zaiolo, C., Zarkesh, A., and Adibi, J., Optimization of Sequence Queries in Database Systems, Proceedings of the Twentieth ACMSIGMOD−SIGACT−SIGART Symposium on Principles of Database Systems, pp.71−81, May2001)。このアルゴリズムでは、データストリーム上に設定されたウィンドウ内で、r.previousを用いて記述された述語を左から右に向かって(つまり、p[0]、p[1]、p[2]、およびp[3]の順に)チェックしている。そして、ある位置で述語をチェックし終えるとウィンドウを別の位置にシフトして再びチェックを行うという操作を繰り返す。
【0010】
しかしながら、この方法では、述語とマッチしなかったレコードを後続するウィンドウ位置において何回も再チェックしなければならないことが多く、必ずしも効率的なアルゴリズムとはいえない。
【0011】
本発明の課題は、与えられたデータから複雑なクエリにより指定された順序パターンを効率良く抽出するデータ処理装置および方法を提供することである。
【0012】
【課題を解決するための手段】
図1は、本発明の第1および第2のデータ処理装置の構成図である。図1のデータ処理装置は、入力手段11、前処理手段12、検索手段13、および出力手段14を備える。
【0013】
本発明の第1のデータ処理装置は、複数の順序付けられたデータから、順序付けられたm個のデータからなるデータ列を抽出する。入力手段11は、データ間の関係を用いてm個のデータをそれぞれ指定する順序付けられたm個の条件からなる条件列を入力する。前処理手段12は、m個の条件の間の両立性を解析して、データ抽出に用いる補助情報を生成する。検索手段13は、順序付けられたデータ上で先頭のデータから末尾のデータに向かってデータ列を検索するとき、データが条件列の対応する条件を満たすか否かを検索方向とは逆の向きにチェックし、チェックされたデータが条件を満たさないとき上記補助情報を用いて次のチェック開始位置を決定する。そして、出力手段14は、条件列のすべての条件を満たしたデータ列の情報を出力する。
【0014】
入力手段11により入力される条件列の各条件は、順序付けられたデータのうち任意の2つのデータ間の関係(値の大小関係等)を用いて記述され、ユーザは任意の関係を用いて複雑な順序パターンを指定することができる。この条件は、例えば、レコード間の関係を記述する述語に対応する。
【0015】
前処理手段12はあらかじめ複数の条件の間の両立性を解析することで補助情報を生成し、検索手段13は、この補助情報を用いて次のチェック開始位置を決定することで、指定されたパターンとデータの間の不要なチェックをスキップしながら、パターンにマッチするデータ列を検索する。
【0016】
多くの場合、データ上の検索方向と条件チェックの向きを逆向きにすることで、これらを同じ向きにした場合よりもチェック回数が削減されることが、シミュレーションにより確認された。このシミュレーションの結果については後述することにする。
【0017】
本発明の第2のデータ処理装置は、レコードr[i](i={0,1,...,n−1})の属性値に対する条件式で記述される述語をp[j](j={0,1,...,m−1})とするとき、n個のレコードr[0],r[1],...,r[n−1]からなる順序データからm個の述語p[0],p[1],...,p[m−1]からなるパターンを抽出する。入力手段11は、パターンを入力し、前処理手段12は、述語p[j]と述語p[j1](j1={0,1,...,j−1})の間の両立性を解析して、パターン抽出に用いる補助情報を生成する。検索手段13は、順序データ上でレコードr[0]からr[n−1]に向かってパターンに対応するレコード列を検索するとき、レコードがパターン内の対応する述語を満たすか否かを末尾の述語p[m−1]から先頭の述語p[0]に向かってチェックし、チェックされたレコードが述語を満たさないとき上記補助情報を用いて次のチェック開始位置を決定する。そして、出力手段14は、パターンのすべての述語を満たしたレコード列の情報を出力する。
【0018】
入力手段11により入力されるパターン内の各述語はレコードの属性値を含む条件式で記述され、ユーザは任意の条件式を用いて複雑な順序パターンを指定することができる。
【0019】
前処理手段12はあらかじめ複数の述語の間の両立性を解析することで補助情報を生成し、検索手段13は、この補助情報を用いて次のチェック開始位置を決定することで、指定されたパターンとレコードの間の不要なチェックをスキップしながら、パターンにマッチするレコード列を検索する。
【0020】
第1のデータ処理装置と同様に、順序データ上の検索方向と述語チェックの向きが逆向きになっているため、これらを同じ向きにした場合よりも効率の良い検索処理が可能となる。
【0021】
図1の入力手段11は、例えば、後述する図14の入力装置83に対応し、前処理手段12および検索手段13は、例えば、図14のCPU(中央処理装置)81およびメモリ82の組み合わせに対応し、出力手段14は、例えば、図14の出力装置84に対応する。
【0022】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
本実施形態のデータ処理装置は、例えば、コンピュータを用いて構成され、連続的かつ無限に入力されるデータストリームや有限の格納データの形式で与えられるデータから、複雑な時間的変化のパターンを検出する。
【0023】
データ処理装置は、まず、ストリームデータに対するパターン述語の不要なチェックをスキップするために、コンパイル時に複雑なパターンの前処理を行って補助情報を生成しておく。そして、実行時にウィンドウを左から右に(ストリームの先頭から末尾に向かって)スライドさせながら、その補助情報を用いて効率良くストリーム検索を行う。このとき、ウィンドウ内のデータについては、右から左に向かってパターンの述語を満たすか否かをチェックする。
【0024】
この方法では、クエリのコンパイル処理の一部としてパターンの述語間における論理的関係(補助情報)を抽出することで、ストリームとパターン述語の部分的マッチが得られたときにウィンドウをどのようにシフトすればうまくいくかが推測される。このようなチェック方法を用いることで、ウィンドウシフトの長さを改良し、同じデータの再チェックの回数を最小化することができる。
【0025】
ウィンドウ内で述語を右から左に向かってチェックする場合、r.previousの情報を利用することができないので、クエリを別の形式に書き換える必要が生じる。上述したクエリ2および3のパターン述語は、例えば、以下のように書き換えられる。
【0026】
Figure 2004046601
r.nextはデータストリームにおけるレコードrの直後のレコード(レコードrの右側のレコード)を表し、そのレコードに対する条件を指定することでパターンを記述することができる。r.nextを用いて書き換えられたパターンを用いれば、述語を右から左に向かって(つまり、p[3]、p[2]、p[1]、およびp[0]の順に)チェックすることが可能となる。
【0027】
以下では、クエリ3を例に用いてその処理を説明する。データストリームとしては、簡単のため、温度属性値がそれぞれ36、42、47、36、37、42、40、および37である8個のレコードを用いることにする。
【0028】
図2に示すように、最初のウィンドウ21の処理では、36<38であることから値36がp[3](r):r.temperature<38を満たし、47>36であることから値47がp[2](r):r.temperature>r.next.temperatureを満たす。しかし、次の値42はp[1](r):40<r.temperature<50 AND r.temperature>r.next.temperatureを満たさない。なぜなら、40<42<50ではあっても、42<47であり42>47ではないからである。
【0029】
こうして、p[3]およびp[2]がデータとマッチした後、最初のミスマッチがp[1]で発生し、パターン述語とストリームデータのチェックを再開するためにウィンドウ21をシフトする必要が生じる。ここで、値36および47がそれぞれp[3]およびp[2]を満たすことが分かっており、値42がp[1]を満たさないことが分かっている。
【0030】
パターン述語を解析することにより、p[3]とp[2]は互いに矛盾しないことが分かり、p[3]を満たす値はp[2]も満たす可能性があるといえる。また、p[2]を満たす値はp[1]も満たす可能性があり、p[1]を満たさない値はp[0]を満たす可能性がある。そこで、ウィンドウ21を1レコード分シフトして、新たなウィンドウ22内で値36、37、および42がそれぞれp[2]、p[1]、およびp[0]と並ぶようにする。
【0031】
この2番目のウィンドウ22の処理では、37<38であることから値37はp[3]を満たすが、36<37であり36>37ではないことから値36はp[2]を満たさないことが分かる。ミスマッチがp[2]で発生したため、チェックを再開するためにウィンドウ22をいくらかシフトする必要が生じる。
【0032】
上述したようにp[3]を満たす値はp[2]も満たす可能性があるが、p[2](r):r.temperature>r.next.temperatureを満たさない値はp[1](r):40<r.temperature<50 AND r.temperature>r.next.temperatureも満たさない。既に値36はp[2]を満たさず、したがってp[1]も満たさないことが分かっているわけであるから、ウィンドウ22を1レコード分シフトして値36をp[1]と並ぶようにしても成果が得られないのは明らかである。
【0033】
また、ウィンドウ22を2レコード分シフトした場合、p[3](r):r.temperature<38を満たした値がp[1](r):40<r.temperature<50 AND r.temperature>r.next.temperatureも満たさなければならないことになるが、p[3]とp[1]は互いに矛盾するのでこれは不可能である。したがって、2レコードのシフト操作も破棄される。
【0034】
次に、p[3]を満たした値がp[0]も満たす可能性があれば、3レコードのシフト操作が考慮されることになるが、これは可能である。そこで、図2に示されるようにウィンドウ22を3レコード分シフトし、3番目のウィンドウ23の処理において、値37、40、42、および37がそれぞれp[3]、p[2]、p[1]、およびp[0]を満たすことが確認される。
【0035】
この例では、パターン述語の間の関係に関する知識を用いることにより、与えられたパターンを3回のウィンドウ処理で検出できた。ストリームデータに対する述語のチェック回数は9回であった。
【0036】
上述した基本処理においては温度属性値が連結述語(conjunctive predicate )の不等式を満たすかどうかがチェックされているが、各不等式を別々に扱う拡張処理を導入することでチェック回数を削減することも可能である。この例では、次のレコードの値を用いた不等式と定数を用いた不等式を別々に扱うことにする。前者は2つのレコード間における属性値の相関関係(変化の形状)を表すので、“関係述語(relationpredicate)”と呼ぶことにし、後者は属性値の範囲を表すので、“範囲述語(range predicate )”と呼ぶことにする。
【0037】
最初のウィンドウ21の処理では、前述したように、値42がp[1](r):40<r.temperature<50 AND r.temperature>r.next.temperatureを満たさない。しかし、より詳細に見れば、この述語は範囲述語(40<r.temperature<50)と関係述語(r.temperature>r.next.temperature)の論理積で表されており、値42は範囲述語を満たしており(40<42<50)、関係述語を満たしていない(42<47であり42>47ではない)ことが分かる。
【0038】
このように値42はp[1]の範囲述語を満たしているのであるから、p[0](r):r.temperature<38 AND r.temperature<r.next.temperatureを満たし得ない。したがって、連結述語p[1]を分離しない基本処理で用いた1レコードのシフトより大きなウィンドウシフトが可能であることが分かる。また、p[2]とp[0]は互いに矛盾しないので、図3に示すように、ウィンドウ21を3レコード分シフトすることが決定される。
【0039】
2番目のウィンドウ31の処理では、40>38であり40<38ではないことから値40はp[3]を満たさないことが分かり、ウィンドウ31が1レコード分シフトされる。そして、3番目のウィンドウ32の処理において、4つの値がそれぞれ対応する述語を満たすことが確認される。この例では、述語の不等式を別々に解析することでチェック回数が8回に削減された。
【0040】
図2および図3の処理では、ストリームとパターン述語が部分的にマッチしたときにマッチングが成功する可能性のあるパターンシフトを、述語の間の相互依存性を活用して推測している。これにより、ウィンドウ内の述語とストリームデータの比較回数が削減され、結果的に検索速度が向上する。
【0041】
この例では、理解を容易にするため、ミスマッチが発生した場合の処理の一部としてウィンドウのスライド長を推論することを示した。しかしながら、述語の間の相互依存性はストリームデータとは無関係であるため、クエリコンパイル時にあらかじめ計算することが可能である。
【0042】
以下では、パターン述語の間の論理的関係を活用することでクエリコンパイルの一部として一旦補助情報を生成しておき、ストリームデータからパターンを検索する際に補助情報を繰り返し用いてウィンドウを効率良くスライドさせる方法について、詳細に説明する。まず、いくつかの必要な用語の意味をまとめておく。
【0043】
データストリーム:ストリームはn個のレコードr[0],r[1],...,r[n−1]の列であり、各r[i]はセンサID、温度センサが生成する温度、その生成時刻等のようなk個の属性a[0],a[1],...,a[k−1]を持つ。
【0044】
パターンと述語:パターンはm個の述語p[0](r),...,p[m−1](r)の列であり、各p[j](r)(j={0,1,...,m−1})は、ストリームレコードrの属性と定数の間の条件式(不等式や等式)や、レコードrの属性とデータストリーム中の他のレコードの属性の間の条件式を含んでいる。
【0045】
この条件式は一般に(r[i].a[q] OP F)の形式で記述される。r[i].a[q]はi番目(i={0,1,...,n−1})のレコードのq番目(q={0,1,...,k−1})の属性の値を表し、Fは定数と複数の属性r[i1].a[q1]を含む任意の関数を表す。ただし、i1={0,1,...,n−1 except i}、q1={0,1,...,k−1}であり、i1は0,1,...,n−1からiを除いた残りの数字のいずれかを表す。また、OPは任意のオペレータ(OP∈{<,≦,=,>,≧,≠})である。
【0046】
例えば、レコードrの温度属性をr.temperatureとし、隣接するレコードであるr.nextの温度属性をr.next.temperatureとし、実定数をCとすると、以下のような条件式を指定することができる。
【0047】
(r.temperature OP C)
(r.temperature OP r.next.temperature+C)
連結述語は、論理積ANDで接続された複数の条件式からなる。
【0048】
パターン述語の間の関係:パターン述語間におけるすべての論理的関係は、正の前提条件論理行列θおよび負の前提条件論理行列φを用いて表される。これらの行列のサイズはパターン述語の数mに一致し、その要素θ[j,k]およびφ[j,k]は以下のように定義される。
【0049】
【数1】
Figure 2004046601
【0050】
ここで、 外1 (以下ではp[j]バーと記す)はp[j]の否定を表し、
【0051】
【外1】
Figure 2004046601
【0052】
Uはp[j]⇒p[k]なのかp[j]⇒p[k]バーなのかが不明であることを表す。
本実施形態のパターン検出方法では、パターン述語の数mに等しいサイズのウィンドウを利用してストリームをスキャンする。図4に示すように、ウィンドウ41がレコードr[i],...,r[i+m−1]をカバーしているとき、ウィンドウ41の位置をiで表すことにする。
【0053】
ウィンドウ41内のストリームレコードはパターン述語に対して右から左にチェックされるので、述語p[m−1]がレコードr[i+m−1]に対して成り立てば、次にレコードr[i+m−2]が述語p[m−2]に対してチェックされる。そして、述語p[m−2]がレコードr[i+m−2]に対して成り立てば、次にレコードr[i+m−3]が述語p[m−3]に対してチェックされ、同様の処理が続けられる。
【0054】
述語p[j]がレコードr[i+j]に対して成り立たないことが分かると、現在のウィンドウのマッチング処理は失敗する。そこで、現在のウィンドウ41がshift[j]で表される長さだけ右にシフトされ、i+shift[j]の位置のウィンドウ42内のストリームレコードが前のウィンドウ41の処理と同様にしてチェックされる。shift[j]は、あらかじめ補助情報として計算しておく。
【0055】
この方法では、m個のパターン述語の列を満足するようなすべてのストリームレコードを検索するために、まず、ウィンドウの位置をi=0に初期化する。これにより、ウィンドウの左端が最初のストリームレコードr[0]に並ぶことになる。ウィンドウをスライドさせる処理は、ウィンドウの右端が最初のデータストリームの右端を越えるまで繰り返される。このようなパターン検出アルゴリズムは、例えば、以下のように記述できる。
【0056】
Figure 2004046601
ここで、p[j](r[i])は、p[j]がストリームのi番目のレコードr[i]に対して成り立つか否かをテストすることを表している。r[i]がp[j]を満足すればp[j](r[i])=1となり、満足しなければp[j](r[i])=0となる。
【0057】
j<0となるのは位置iのウィンドウで検索パターンが得られたときであり、このときfind(i)は、パターン述語の全体p[0],...,p[m−1]を満足するストリームレコードr[i],...,r[i+m−1]を出力する。シフト配列shift[j]に格納される距離値の計算方法については、後述することにする。
【0058】
shift[j]=1とおいてウィンドウを毎回1位置だけスライドさせると、どの述語p[j]が成り立たない場合でも(どこでパターン全体のマッチが得られようとも)、m個のパターン述語の列を満足するようなすべてのストリームレコードを検出するには、レコードの総数をnとしてO(nm)の時間が必要である。
【0059】
そこで、この大きなチェック回数を削減するために、ウィンドウを1位置より大きくスライドさせることを考える。言い換えれば、述語p[j]でミスマッチが起こったとき、いかなるマッチング候補をも漏らすことなく可能な限り大きくウィンドウをスライドさせるように、shift[j]を決定する。
【0060】
図4より、位置iのウィンドウにおいて述語p[j]でミスマッチが起こったとき、検索パターンの述語p[j+1]からp[m−1]まではそれぞれストリームレコードr[i+j+1]からr[i+m−1]までに対して成り立っていることが分かる。このとき、述語p[j]はストリームレコードr[i+j]に対して成り立っていない。
【0061】
位置iのウィンドウをk位置だけ右にシフトして新たな位置(i+k)にスライドさせたとき、前のウィンドウで述語p[j],...,p[m−1]によりチェックされたストリームレコードr[i+j],...,r[i+m−1]と新たなウィンドウとのオーバラップの状況として、全体オーバラップ、部分オーバラップ、およびオーバラップなしの3つの場合が考えられる。
【0062】
図5は、全体オーバラップの場合を示している。0<k≦jの場合、ウィンドウ51は、述語p[j]とのミスマッチが発生したレコードr[i+j]の左側の位置(i+k)またはレコードr[i+j]と丁度同じ位置にシフトする。したがって、新たなウィンドウ51は前のウィンドウ41で既にチェックしたレコードr[i+j],...,r[i+m−1]の列全体を含むことになる。
【0063】
位置(i+k)のウィンドウ51では、レコードr[i+j],...,r[i+m−1]が述語p[j−k],...,p[m−k−1]と並んでいる。これらの述語が対応するレコードに対して成り立つ可能性があるか否かを予測するために、前のウィンドウ41における述語p[j],...,p[m−1]のこれらのレコードに対するチェック結果を利用することができる。
【0064】
そこで、ウィンドウ41においてレコードr[i+j],...,r[i+m−1]と並んでいた述語の部分列p[j],...,p[m−1]と、ウィンドウ51においてそれらのレコードと並んでいる述語の部分列p[j−k],...,p[m−k−1]の2つの部分列の論理的関係を解析することにより、パターン検索が成功する可能性のあるk位置のシフトを計算する。これらの述語列の間で次の関係が成り立てば、k位置のシフトはパターン検索を満たすストリームレコードを含むようなウィンドウを生成する可能性がある。
【0065】
Figure 2004046601
前述したθとφを用いると、この関係は以下のように記述することができる。まず、次式によりα[j,k]を定義する。
【0066】
Figure 2004046601
ただし、U∧1=U、U∧0=0、およびU∧U=Uである。α[j,k]=0であれば、k位置のウィンドウシフトは検索パターンにマッチするストリームレコードを含むことはなく、α[j,k]=1であればマッチするレコードを含み、α[j,k]=Uであればマッチするレコードを含む可能性がある。
【0067】
次に、図6は、部分オーバラップの場合を示している。j<k<mの場合、ウィンドウ41は、述語p[j]とのミスマッチが発生したレコードr[i+j]の右側の位置(i+k)にシフトする。したがって、新たなウィンドウ61は前のウィンドウ41で既にチェックしたレコードの部分列r[i+k],...,r[i+m−1]を含むことになる。
【0068】
位置(i+k)のウィンドウ61では、レコードr[i+k],...,r[i+m−1]が述語p[0],...,p[m−k−1]と並んでいる。これらの述語が対応するレコードに対して成り立つ可能性があるか否かを予測するために、前のウィンドウ41における述語p[k],...,p[m−1]のこれらのレコードに対するチェック結果を利用することができる。
【0069】
そこで、ウィンドウ41においてレコードr[i+k],...,r[i+m−1]と並んでいた述語の部分列p[k],...,p[m−1]と、ウィンドウ61においてそれらのレコードと並んでいる述語の部分列p[0],...,p[m−k−1]の2つの部分列の論理的関係を解析することにより、パターン検索が成功する可能性のあるk位置のシフトを計算する。これらの述語列の間で次の関係が成り立てば、k位置のシフトはパターン検索を満たすストリームレコードを含むようなウィンドウを生成する可能性がある。
【0070】
Figure 2004046601
ここで、θとφを用いて次式によりβ[j,k]を定義する。
【0071】
Figure 2004046601
β[j,k]=0であれば、k位置のウィンドウシフトは検索パターンにマッチするストリームレコードを含むことはなく、β[j,k]=1であればマッチするレコードを含み、β[j,k]=Uであればマッチするレコードを含む可能性がある。
【0072】
次に、図7は、オーバラップなしの場合を示している。k≧mの場合、ウィンドウ41は、その右端のレコードr[i+m−1]の右側の位置(i+k)にシフトする。特にk=mの場合、新たなウィンドウ71内の最初のレコード位置は、前のウィンドウ41の直後のレコード位置に一致する。したがって、新たなウィンドウ71は前のウィンドウ41で既にチェックしたレコードr[i+j],...,r[i+m−1]のいずれも含んでいない。
【0073】
新たなウィンドウ71内のストリームレコードのいずれもまだチェックされていないわけであるから、それらが検索パターンにマッチするストリームレコードの候補であることを否定する根拠はない。
【0074】
以上の3つの場合に関する考察から、k位置のウィンドウシフトは、以下のいずれかの条件が成り立つときに、パターン述語を満たすストリームレコードを含む位置にウィンドウをスライドさせる可能性があることが分かる。
(a)α[j,k]≠0 for 0<k≦j
(b)β[j,k]≠0 for j<k<m
(c)k≧m
検索処理においてはいかなるマッチング候補も漏らしたくないので、shift[j]をパターンにマッチする可能性のある右方向への最小スライド距離として計算することにする。
【0075】
まず、右端にある部分列p[j−k],p[j−k+1],...,p[m−k−1]を見つけるために、α[j,k]≠0となる最小のkを求める。そのようなkが存在しなければ、次に、最長の部分列p[0],...,p[m−k−1]を見つけるために、β[j,k]≠0となる最小のkを求める。そのようなkも存在しなければ、k<mとなるいかなるシフトも失敗することが分かる。そこで、shift[j]=mとおいて、新たなウィンドウ内の最初のレコード位置が前のウィンドウの直後のレコード位置に一致するように、ウィンドウを右方向にシフトする。このようなshift[j]の求め方をまとめると、次のようになる。
【0076】
【数2】
Figure 2004046601
【0077】
シフト配列shift[j]に格納される距離の単純な計算方法では、すべてのjおよびkについてα[j,k]およびβ[j,k]を最初に計算しておく必要があり、膨大な計算量が要求される。以下では、シフト配列をO(m)の計算量で効率良く求める簡単なプログラムコードを紹介する。
【0078】
まず、次式で定義される補助配列compati[i]の要素を計算する。
Figure 2004046601
図8に示すように、位置iにおけるcompati[i]は、位置iを右端としパターン述語p[i−len+1],...,p[i]からなるパターン部分列(述語列)であって、パターン述語p[m−len],...,p[m−1]からなる長さlenの右端の部分列と両立するようなパターン部分列の長さlenの最大値を表す。
【0079】
compati[i]の値は右から左に向かって(i=m−1からi=0に向かって)計算される。基本的なアイデアは、あるcompati[i]の値を可能な限りその左側の値(より小さいiに対する値)の計算に用いるというものである。このアイデアを、次のような4つのパターン述語からなる非常に単純なパターンの例を用いて説明する。
【0080】
p[3]:r.level>10
p[2]:r.level>5
p[1]:r.level>3
p[0]:r.level>1
この場合、いずれのp[i]をとってもp[i]⇒p[i]であるから、明らかにcompati[3]=4である(以下に示すコードの1行目に対応)。compati[2]の計算では、p[3]とp[2]、p[2]とp[1]、およびp[1]とp[0]の間の関係をチェックしなければならない。図9に示すように、p[3]⇒p[2]、p[2]⇒p[1]、およびp[1]⇒p[0]であるから、compati[2]=3となる(以下に示すコードの7−12行目に対応)。
【0081】
ここで、p[3]⇒p[2]およびp[2]⇒p[1]であることから、p[3]⇒p[1]であることが分かる。さらに、p[2]⇒p[1]およびp[1]⇒p[0]であることから、p[2]⇒p[0]であることも分かる。したがって、p[3]とp[1]およびp[2]とp[0]の間の関係を直接チェックしなくとも、図10に示すようなcompati[1]=2という結論を得ることができる(以下に示すコードの4−5行目に対応)。
【0082】
このようなcompati[i]の値を効率良く計算する簡単なプログラムコードとしては、例えば、以下のようなものが考えられる。
Figure 2004046601
配列compati[i]を決定されると、次にシフト配列が計算される。以下のプログラムコードに示されるように、まずシフト配列はオーバラップなしの場合の値で満たされ、可能であれば、次にcompati[i]を用いて部分オーバラップの場合の値がシフト配列に格納され、最後に全体オーバラップの場合の値が格納される。
【0083】
Figure 2004046601
このシフト配列の計算コードの1−2行目では、mがオーバラップなしの場合に対応するシフト値として入力される。前述したように、このシフト値は、パターン述語の右端の部分列と両立するような部分列が存在しない場合に用いられるので、図11に示すように、新たなウィンドウが前のウィンドウとオーバラップするパターン述語を含まないようにウィンドウがシフトされる。
【0084】
また、3−8行目では、部分オーバラップの場合のシフト値が設定される。この場合、図12に示す通り、パターン述語の左端にある最長の部分列p[0],...,p[i]が右端にある部分列p[m−1−i],...,p[m−1]と両立するように、最小のシフト値が計算される。
【0085】
この左端の部分列p[0],...,p[i]の最後のパターン述語はp[i]であり、その位置iにおいてはcompati[i]=i+1である。したがって、配列compati[i]に格納されたパターン述語の両立性(compatibility )に関する情報(compati[i]=i+1)が与えられれば、左端の部分列p[0],...,p[i]が両立する右端の部分列p[m−1−i],...,p[m−1]とオーバラップするようにウィンドウがシフトされる。
【0086】
最後に、9−11行目では、全体オーバラップの場合のシフト値が設定される。この場合、図13に示す通り、パターン述語の右端にある部分列p[m−compati[i]],...,p[m−1]がcompati[i]の長さの部分列p[i−compati[i]+1],...,p[i]と両立し、かつ、p[m−compati[i]−1]バーがパターン述語p[i−compati[i]]と両立するように、最小のシフト値が計算される。
【0087】
既にcompati[i]の計算時にチェックした通り、p[m−compati[i]−1]⇒p[i−compati[i]]バー(θ[m−compati[i]−1,i−compati[i]]=0)が成り立つことが分かっている。さらに、p[m−compati[i]−1]バー⇒p[i−compati[i]](φ[m−compati[i]−1,i−compati[i]]≠0)が成り立てば、上述した2つの条件が満たされる。したがって、shift[m−compati[i]−1]=m−1−iとおくことができる。
【0088】
同じcompati[i]の値を持つ複数のiが存在する場合、検索処理においていかなるマッチング候補も漏らすことがないように最小のシフト値を求めるという要請から、最後には最も右のi(最大のi)がシフト配列にshift[m−compati[i]−1]=m−1−iとして入力されることになる。したがって、配列compati[i]は左から右に向かって(i=0からi=m−2に向かって)スキャンされる。
【0089】
ところで、上述した基本処理におけるshift[j]の計算方法では、パターン述語の間の両立性の解析において連結述語の複数の不等式を分離して考慮してはいない。これらを分離して扱えば、前述したように、より大きなシフトが得られる可能性がある。
【0090】
そこで、拡張処理においては、連結述語p[j]を、定数を用いた条件式を含む“範囲述語p1[j]”と隣接レコードの値を用いた条件式を含む“関係述語p2[j]”の組み合わせで表し、p[j]=p1[j]∧p2[j]と記述することにする。この場合にも、基本処理の計算方法を素直に拡張することでshift[j]を求めることができる。基本処理との主な違いは以下の通りである。
【0091】
基本処理ではp[j]バーのみを考慮しているが、拡張処理ではp1[j]バー∧p2[j]、p1[j]∧p2[j]バー、およびp1[j]バー∧p2[j]バーの3つの場合を考慮する。これらの3つの場合に応じて、上述のφ[j,j−k]がそれぞれφ1[j,j−k]、φ2[j,j−k]、およびφ12[j,j−k]に分解され、α[j,j−k]がそれぞれα1[j,j−k]、α2[j,j−k]、およびα12[j,j−k]に分解される。
【0092】
したがって、shift[j]もあらかじめshift1[j]、shift2[j]、およびshift12[j]に分けて計算される。そして、述語p[j]でミスマッチが起こったとき、ミスマッチを起こした述語が範囲述語のみか、関係述語のみか、あるいはその両方かに応じて、3つのシフト値shift1[j]、shift2[j]、およびshift12[j]の中からウィンドウのスライド距離が選択される。
【0093】
ところで、本実施形態のデータ処理装置は、例えば、図14に示すような情報処理装置(コンピュータ)を用いて構成される。図14の情報処理装置は、CPU(中央処理装置)81、メモリ82、入力装置83、出力装置84、外部記憶装置85、媒体駆動装置86、およびネットワーク接続装置87を備え、それらはバス88により互いに接続されている。
【0094】
メモリ82は、例えば、ROM(read only memory)、RAM(random access memory)等を含み、処理に用いられるプログラムとデータを格納する。CPU81は、メモリ82を利用してプログラムを実行することにより、必要な処理を行う。
【0095】
入力装置83は、例えば、キーボード、ポインティングデバイス、タッチパネル等であり、ユーザからの指示や情報の入力に用いられる。出力装置84は、例えば、ディスプレイ装置、プリンタ、スピーカ等であり、ユーザへの問い合わせや処理結果の出力に用いられる。
【0096】
外部記憶装置85は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。情報処理装置は、この外部記憶装置85に、上述のプログラムとデータを保存しておき、必要に応じて、それらをメモリ82にロードして使用する。
【0097】
媒体駆動装置86は、可搬記録媒体89を駆動し、その記録内容にアクセスする。可搬記録媒体89としては、メモリカード、フレキシブルディスク、CD−ROM(compact disk read only memory )、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体が用いられる。ユーザは、この可搬記録媒体89に上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリ82にロードして使用する。
【0098】
ネットワーク接続装置87は、LAN(local area network)等の任意の通信ネットワークに接続され、通信に伴うデータ変換を行う。情報処理装置は、上述のプログラムとデータをネットワーク接続装置87を介して他の装置から受け取り、必要に応じて、それらをメモリ82にロードして使用する。
【0099】
図15は、図14の情報処理装置にプログラムとデータを供給することのできるコンピュータ読み取り可能な記録媒体を示している。可搬記録媒体89やサーバ90のデータベース81に保存されたプログラムとデータは、メモリ82にロードされる。このとき、サーバ90は、プログラムとデータを搬送する搬送信号を生成し、ネットワーク上の任意の伝送媒体を介して情報処理装置に送信する。そして、CPU81は、そのデータを用いてそのプログラムを実行し、必要な処理を行う。
【0100】
次に、ウィンドウを常に1レコードずつシフトするナイーブアプローチと、前述したOPSアルゴリズムによる検索処理と、本発明の検索処理とを比較したシミュレーションの結果について説明する。クエリおよびストリームデータとしては以下のようなものを用いた。
【0101】
クエリ
“ある企業の株価が2回続けて下落した後2回続けて上昇し、下落により株価は40と50の間の値となり、最初の上昇では株価は52を越えないようなパターンをすべて抽出せよ。”
ストリームデータ
55 50 45 51 54 50 47 49 45 42 55 57
59 60 57
図16から図19までは、このようなクエリとストリームデータを用いてパターン検索を行ったときの、ストリームデータ上の位置iと検索パターン上の位置jの値の変化を表している。このうち、図16はナイーブアプローチによる結果を表し、図17はOPSアルゴリズムによる結果を表し、図18は本発明の基本処理(連結述語の条件式を分離して扱わない処理)による結果を表し、図19は本発明の拡張処理(連結述語の条件式を分離して扱う処理)による結果を表す。また、グラフ上の四角のマークは、ストリームレコードに対してパターン述語のチェックが行われた点を示している。
【0102】
図16のナイーブアプローチでは、w1〜w9の9つのウィンドウの処理が行われ、ストリームレコードに対するパターン述語のチェックは20回行われている。また、図17のOPSアルゴリズムでは、w1〜w7の7つのウィンドウの処理と16回のチェックで検索が終了している。
【0103】
これに対して、図18の基本処理では、w1〜w8の8つのウィンドウの処理と11回のチェックで検索が終了しており、図19の拡張処理では、w1〜w7の7つのウィンドウの処理と10回のチェックで検索が終了している。したがって、この例では拡張処理が最も性能が良いことが分かる。
【0104】
ナイーブアプローチでは、処理の進行に伴って連続する点の間でiの値が減少するバックトラックが発生しているが、OPSアルゴリズムでは、このようなバックトラックは発生していない。しかしながら、OPSアルゴリズムでは、同じiの値を持つ連続する点において、ミスマッチしたレコードが引き続き何度も再チェックされている。
【0105】
これに対して、本発明の基本処理では、ウィンドウ処理の数はOPSアルゴリズムのそれより小さくないが、レコードの再チェックはミスマッチが発生しなかった(つまり、パターンが完全に検出された)最後のウィンドウw8のみで行われている。さらに、関係述語と範囲述語を分離して解析する拡張処理では、最初のウィンドウw1内のレコードr[3](i=3)でミスマッチが発生した後、基本処理より大きくウィンドウがシフトされ、レコードr[4](i=4)のチェックがスキップされている。
【0106】
このように、本発明の検索処理は、ナイーブアプローチおよびOPSアルゴリズムと比較して効率の良いアルゴリズムであることが分かる。
次に、他のクエリを用いたシミュレーションの結果について説明する。以下に示すP1〜P10の10個のパターンはいずれも7つの述語で記述され、これらの述語を用いてそれぞれの条件を満たす水位(および温度)属性を有する連続レコードを検索した。ストリームデータとしては、センサによる水位および温度の測定値を有するレコードとしてランダムに生成された100,000個のレコードを用いた。
【0107】
P1:連続する7回の測定において、水位は隣接する測定値に対して−2と+2の間の範囲にある。
P2:連続する7回の測定において、水位は上昇し続ける。
P3:連続する7回の測定において、水位は低下し続ける。
P4:連続する7回の測定の前半において水位は上昇し続け、後半において安定するかまたは低下し続ける。
P5:3回連続して水位のスパイクが発生する。つまり、水位が突然10より大きく上昇した後突然10より大きく低下する現象が3回繰り返される。
P6:連続する7回の測定において、水位は隣接する測定値に対して−2と+2の間の範囲にあり、温度は上昇し続ける。
P7:連続する7回の測定において、水位は上昇し続け、温度は低下し続ける。
P8:連続する7回の測定において、水位は隣接する測定値に対して−2と+2の間の範囲にあり、温度は前半において上昇し続け、後半において安定するかまたは低下し続ける。
P9:連続する7回の測定において、水位は隣接する測定値に対して−2と+2の間の範囲にあり、3回連続して温度のスパイクが発生する。つまり、温度が突然10より大きく上昇した後突然10より大きく低下する現象が3回繰り返される。
P10:連続する7回の測定において、水位は上昇し続け、3回連続して温度のスパイクが発生する。
【0108】
図20は、ナイーブアプローチ(Naive)、OPSアルゴリズム、本発明の基本処理(R2L)、拡張OPSアルゴリズム(OPS−extended)、および本発明の拡張処理(R2L−extended)の各処理において述語のチェックが行われた回数を示している。
【0109】
拡張OPSアルゴリズムとは、OPSアルゴリズムにおいて、本発明の拡張処理と同様に連結述語の条件式を分離して扱うアルゴリズムを指す。パターンP1〜P5では各述語が1つの条件式しか含まないため、拡張OPSアルゴリズムおよび本発明の拡張処理のシミュレーションは行われていない。
【0110】
図21は、図20のシミュレーション結果(チェック回数)の棒グラフを示しており、101、102、103、104、および105は、それぞれナイーブアプローチ、OPS、本発明の基本処理、拡張OPS、および本発明の拡張処理のチェック回数に対応する。
【0111】
このグラフから、OPS、拡張OPS、本発明の基本処理、および本発明の拡張処理は、どのパターンに対してもナイーブアプローチよりチェック回数が少ないことが分かる。OPSと拡張OPSのチェック回数は、レコードの総数(100,000)と同じかそれよりわずかに多い程度であり、これらの処理では大部分のパターンに対してバックトラックが発生していないことを意味している。
【0112】
また、パターンP4およびP9に対するOPSの場合を除いて、本発明の基本処理と拡張処理のチェック回数は、それぞれOPSと拡張OPSのそれより少ない。特にパターンP1、P2、P3、P6、およびP7に対しては、本発明の基本処理と拡張処理のチェック回数は、それぞれOPSと拡張OPSのそれの半分以下である。パターンP8、P9、およびP10に対しては、基本処理の代わりに拡張処理を用いることでチェック回数を大幅に削減することができる。
【0113】
上述したように、ランダムに生成された大量のデータから10個の異なるパターンをそれぞれ検索するシミュレーションにより、多くの場合、本発明の検索処理がナイーブアプローチやOPSアルゴリズムより格段に優れた性能を示し、拡張処理は基本処理よりさらに効率が良いことが分かった。
(付記1) 複数の順序付けられたデータから、順序付けられたm個のデータからなるデータ列を抽出するデータ処理装置であって、
データ間の関係を用いて前記m個のデータをそれぞれ指定する順序付けられたm個の条件からなる条件列を入力する入力手段と、
前記m個の条件の間の両立性を解析して、データ抽出に用いる補助情報を生成する前処理手段と、
前記順序付けられたデータ上で先頭のデータから末尾のデータに向かって前記データ列を検索するとき、データが前記条件列の対応する条件を満たすか否かを検索方向とは逆の向きにチェックし、チェックされたデータが条件を満たさないとき前記補助情報を用いて次のチェック開始位置を決定する検索手段と、
前記条件列のすべての条件を満たしたデータ列の情報を出力する出力手段と
を備えることを特徴とするデータ処理装置。
(付記2) 前記前処理手段は、前記m個の条件からなる条件列上の各位置を右端とする部分条件列であって、該m個の条件からなる条件列の右端の部分条件列と両立するような部分条件列の長さの最大値を表す配列を生成し、該配列を用いて前記補助情報を生成することを特徴とする付記1記載のデータ処理装置。
(付記3) レコードr[i](i={0,1,...,n−1})の属性値に対する条件式で記述される述語をp[j](j={0,1,...,m−1})とするとき、n個のレコードr[0],r[1],...,r[n−1]からなる順序データからm個の述語p[0],p[1],...,p[m−1]からなるパターンを抽出するデータ処理装置であって、
前記パターンを入力する入力手段と、
述語p[j]と述語p[j1](j1={0,1,...,j−1})の間の両立性を解析し、パターン抽出に用いる補助情報を生成する前処理手段と、
前記順序データ上でレコードr[0]からr[n−1]に向かって前記パターンに対応するレコード列を検索するとき、レコードが該パターン内の対応する述語を満たすか否かを末尾の述語p[m−1]から先頭の述語p[0]に向かってチェックし、チェックされたレコードが述語を満たさないとき前記補助情報を用いて次のチェック開始位置を決定する検索手段と、
前記パターンのすべての述語を満たしたレコード列の情報を出力する出力手段と
を備えることを特徴とするデータ処理装置。
(付記4) 前記前処理手段は、複数の条件式が述語に含まれているとき、該複数の条件式を分離して解析することを特徴とする付記3記載のデータ処理装置。(付記5) 前記前処理手段は、位置jを右端とし述語p[j−len+1],...,p[j]からなる述語列であって、述語p[m−len],...,p[m−1]からなる述語列と両立するような述語列の長さlenの最大値を表す配列を生成し、該配列を用いて前記補助情報を生成することを特徴とする付記3記載のデータ処理装置。
(付記6) k個の属性a[0],a[1],...,a[k−1]を有するレコードをr[i](i={0,1,...,n−1})とし、r[i]の属性a[q](q={0,1,...,k−1})の値をr[i].a[q]とし、定数と属性r[i1].a[q1](i1={0,1,...,n−1からiを除いた残り}、q1={0,1,...,k−1})を含む任意の関数をFとし、{<,≦,=,>,≧,≠}のうちのいずれかのオペレータをOPとして、(r[i].a[q] OP F)のような条件式の組み合わせで記述される述語をp[j](j={0,1,...,m−1})とするとき、n個のレコードr[0],r[1],...,r[n−1]からなる順序データからm個の述語p[0],p[1],...,p[m−1]からなるパターンを抽出するデータ処理装置であって、
前記パターンを入力する入力手段と、
述語p[j]と述語p[j1](j1={0,1,...,j−1})の間の両立性を解析し、パターン抽出に用いる補助情報を生成する前処理手段と、
前記順序データ上でレコードr[0]からr[n−1]に向かって前記パターンに対応するレコード列を検索するとき、レコードが該パターン内の対応する述語を満たすか否かを末尾の述語p[m−1]から先頭の述語p[0]に向かってチェックし、チェックされたレコードが述語を満たさないとき前記補助情報を用いて次のチェック開始位置を決定する検索手段と、
前記パターンのすべての述語を満たしたレコード列の情報を出力する出力手段と
を備えることを特徴とするデータ処理装置。
(付記7) 複数の順序付けられたデータから、順序付けられたm個のデータからなるデータ列を抽出するコンピュータのためのプログラムであって、
データ間の関係を用いて前記m個のデータをそれぞれ指定する順序付けられたm個の条件からなる条件列を入力し、
前記m個の条件の間の両立性を解析して、データ抽出に用いる補助情報を生成し、
前記順序付けられたデータ上で先頭のデータから末尾のデータに向かって前記データ列を検索するとき、データが前記条件列の対応する条件を満たすか否かを検索方向とは逆の向きにチェックし、チェックされたデータが条件を満たさないとき前記補助情報を用いて次のチェック開始位置を決定し、
前記条件列のすべての条件を満たしたデータ列の情報を出力する
処理を前記コンピュータに実行させることを特徴とするプログラム。
(付記8) レコードr[i](i={0,1,...,n−1})の属性値に対する条件式で記述される述語をp[j](j={0,1,...,m−1})とするとき、n個のレコードr[0],r[1],...,r[n−1]からなる順序データからm個の述語p[0],p[1],...,p[m−1]からなるパターンを抽出するコンピュータのためのプログラムであって、
前記パターンを入力し、
述語p[j]と述語p[j1](j1={0,1,...,j−1})の間の両立性を解析し、パターン抽出に用いる補助情報を生成し、
前記順序データ上でレコードr[0]からr[n−1]に向かって前記パターンに対応するレコード列を検索するとき、レコードが該パターン内の対応する述語を満たすか否かを末尾の述語p[m−1]から先頭の述語p[0]に向かってチェックし、チェックされたレコードが述語を満たさないとき前記補助情報を用いて次のチェック開始位置を決定し、
前記パターンのすべての述語を満たしたレコード列の情報を出力する
処理を前記コンピュータに実行させることを特徴とするプログラム。
(付記9) 前記コンピュータは、前記補助情報を生成するとき、複数の条件式が述語に含まれていれば、該複数の条件式を分離して解析することを特徴とする付記8記載のプログラム。
(付記10) 複数の順序付けられたデータから、順序付けられたm個のデータからなるデータ列を抽出するコンピュータのためのプログラムを記録した記録媒体であって、該プログラムは、
データ間の関係を用いて前記m個のデータをそれぞれ指定する順序付けられたm個の条件からなる条件列を入力し、
前記m個の条件の間の両立性を解析して、データ抽出に用いる補助情報を生成し、
前記順序付けられたデータ上で先頭のデータから末尾のデータに向かって前記データ列を検索するとき、データが前記条件列の対応する条件を満たすか否かを検索方向とは逆の向きにチェックし、チェックされたデータが条件を満たさないとき前記補助情報を用いて次のチェック開始位置を決定し、
前記条件列のすべての条件を満たしたデータ列の情報を出力する
処理を前記コンピュータに実行させることを特徴とするコンピュータ読み取り可能な記録媒体。
(付記11) レコードr[i](i={0,1,...,n−1})の属性値に対する条件式で記述される述語をp[j](j={0,1,...,m−1})とするとき、n個のレコードr[0],r[1],...,r[n−1]からなる順序データからm個の述語p[0],p[1],...,p[m−1]からなるパターンを抽出するコンピュータのためのプログラムを記録した記録媒体であって、該プログラムは、
前記パターンを入力し、
述語p[j]と述語p[j1](j1={0,1,...,j−1})の間の両立性を解析し、パターン抽出に用いる補助情報を生成し、
前記順序データ上でレコードr[0]からr[n−1]に向かって前記パターンに対応するレコード列を検索するとき、レコードが該パターン内の対応する述語を満たすか否かを末尾の述語p[m−1]から先頭の述語p[0]に向かってチェックし、チェックされたレコードが述語を満たさないとき前記補助情報を用いて次のチェック開始位置を決定し、
前記パターンのすべての述語を満たしたレコード列の情報を出力する
処理を前記コンピュータに実行させることを特徴とするコンピュータ読み取り可能な記録媒体。
(付記12) 前記コンピュータは、前記補助情報を生成するとき、複数の条件式が述語に含まれていれば、該複数の条件式を分離して解析することを特徴とする付記11記載の記録媒体。
(付記13) 複数の順序付けられたデータから、順序付けられたm個のデータからなるデータ列を抽出するコンピュータのためのプログラムを該コンピュータに搬送する搬送信号であって、該プログラムは、
データ間の関係を用いて前記m個のデータをそれぞれ指定する順序付けられたm個の条件からなる条件列を入力し、
前記m個の条件の間の両立性を解析して、データ抽出に用いる補助情報を生成し、
前記順序付けられたデータ上で先頭のデータから末尾のデータに向かって前記データ列を検索するとき、データが前記条件列の対応する条件を満たすか否かを検索方向とは逆の向きにチェックし、チェックされたデータが条件を満たさないとき前記補助情報を用いて次のチェック開始位置を決定し、
前記条件列のすべての条件を満たしたデータ列の情報を出力する
処理を前記コンピュータに実行させることを特徴とする搬送信号。
(付記14) レコードr[i](i={0,1,...,n−1})の属性値に対する条件式で記述される述語をp[j](j={0,1,...,m−1})とするとき、n個のレコードr[0],r[1],...,r[n−1]からなる順序データからm個の述語p[0],p[1],...,p[m−1]からなるパターンを抽出するコンピュータのためのプログラムを該コンピュータに搬送する搬送信号であって、該プログラムは、
前記パターンを入力し、
述語p[j]と述語p[j1](j1={0,1,...,j−1})の間の両立性を解析し、パターン抽出に用いる補助情報を生成し、
前記順序データ上でレコードr[0]からr[n−1]に向かって前記パターンに対応するレコード列を検索するとき、レコードが該パターン内の対応する述語を満たすか否かを末尾の述語p[m−1]から先頭の述語p[0]に向かってチェックし、チェックされたレコードが述語を満たさないとき前記補助情報を用いて次のチェック開始位置を決定し、
前記パターンのすべての述語を満たしたレコード列の情報を出力する
処理を前記コンピュータに実行させることを特徴とする搬送信号。
(付記15) 前記コンピュータは、前記補助情報を生成するとき、複数の条件式が述語に含まれていれば、該複数の条件式を分離して解析することを特徴とする付記14記載の搬送信号。
(付記16) 複数の順序付けられたデータから、順序付けられたm個のデータからなるデータ列を抽出するデータ処理方法であって、
入力手段が、データ間の関係を用いて前記m個のデータをそれぞれ指定する順序付けられたm個の条件からなる条件列を入力し、
前処理手段が、前記m個の条件の間の両立性を解析して、データ抽出に用いる補助情報を生成し、
検索手段が、前記順序付けられたデータ上で先頭のデータから末尾のデータに向かって前記データ列を検索するとき、データが前記条件列の対応する条件を満たすか否かを検索方向とは逆の向きにチェックし、チェックされたデータが条件を満たさないとき前記補助情報を用いて次のチェック開始位置を決定し、
出力手段が、前記条件列のすべての条件を満たしたデータ列の情報を出力することを特徴とするデータ処理方法。
(付記17) レコードr[i](i={0,1,...,n−1})の属性値に対する条件式で記述される述語をp[j](j={0,1,...,m−1})とするとき、n個のレコードr[0],r[1],...,r[n−1]からなる順序データからm個の述語p[0],p[1],...,p[m−1]からなるパターンを抽出するデータ処理方法であって、
入力手段が、前記パターンを入力し、
前処理手段が、述語p[j]と述語p[j1](j1={0,1,...,j−1})の間の両立性を解析し、パターン抽出に用いる補助情報を生成し、
検索手段が、前記順序データ上でレコードr[0]からr[n−1]に向かって前記パターンに対応するレコード列を検索するとき、レコードが該パターン内の対応する述語を満たすか否かを末尾の述語p[m−1]から先頭の述語p[0]に向かってチェックし、チェックされたレコードが述語を満たさないとき前記補助情報を用いて次のチェック開始位置を決定し、
出力手段が、前記パターンのすべての述語を満たしたレコード列の情報を出力する
ことを特徴とするデータ処理方法。
(付記18) 前記前処理手段は、複数の条件式が述語に含まれているとき、該複数の条件式を分離して解析することを特徴とする付記17記載のデータ処理方法。
【0114】
【発明の効果】
本発明によれば、与えられたデータから複雑なクエリにより指定された順序パターンを抽出する処理において、指定されたパターンとデータの間の不要なチェックをスキップすることができ、パターンにマッチするデータ列を効率良く検出することができる。
【図面の簡単な説明】
【図1】本発明のデータ処理装置の構成図である。
【図2】基本ウィンドウ処理を示す図である。
【図3】拡張ウィンドウ処理を示す図である。
【図4】shift[j]のウィンドウシフトを示す図である。
【図5】全体オーバラップを示す図である。
【図6】部分オーバラップを示す図である。
【図7】オーバラップなしのウィンドウシフトを示す図である。
【図8】compati[i]を示す図である。
【図9】compati[2]を示す図である。
【図10】compati[1]を示す図である。
【図11】オーバラップなしの場合のパターン述語を示す図である。
【図12】部分オーバラップの場合のパターン述語を示す図である。
【図13】全体オーバラップの場合のパターン述語を示す図である。
【図14】情報処理装置の構成図である。
【図15】記録媒体を示す図である。
【図16】ナイーブアプローチの処理結果を示す図である。
【図17】OPSアルゴリズムの処理結果を示す図である。
【図18】本発明の基本処理の処理結果を示す図である。
【図19】本発明の拡張処理の処理結果を示す図である。
【図20】5つの検索処理におけるチェック回数を示す図である。
【図21】チェック回数のグラフを示す図である。
【符号の説明】
11 入力手段
12 前処理手段
13 検索手段
14 出力手段
21、22、23、31、32、41、42、51、61、71 ウィンドウ
81 CPU
82 メモリ
83 入力装置
84 出力装置
85 外部記憶装置
86 媒体駆動装置
87 ネットワーク接続装置
88 バス
89 可搬記録媒体
90 サーバ
91 データベース
101、102、103、104、105 チェック回数[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a data processing apparatus and method for extracting an order pattern specified by complex conditions from given data.
[0002]
2. Description of the Related Art
In today's information society, there are many applications that have to monitor large amounts of ordinal data. Such data and applications include, for example, sensor applications, performance measurements in network monitoring and traffic management, vital signs and procedures for medical monitoring, records of telecommunication call details, and logs in web applications. Records and clickstreams.
[0003]
Here, consider an application that monitors the physical world by performing inquiry and analysis on sensor data. One such application is an application that manages articles stored in a factory warehouse. Temperature sensors are attached to articles and walls in the warehouse, and temperature sensors are embedded in floors and ceilings. Each sensor outputs a measured temperature at a fixed cycle, and the warehouse manager uses the sensor data to confirm that the article is not overheated. In this case, the following data search query is important for the application.
[0004]
Query 1: Find sensors where the three consecutive measured temperatures are 35, 36, and 37 degrees.
Query 2: Detect sensors that have had a temperature rise of more than 2 degrees in a row three times and have reached a temperature above 35 degrees to a temperature below 35 degrees.
Query 3: Detect a temporal pattern of rise from a temperature below 38 degrees to a temperature between 40 and 50 degrees, followed by two drops and back to a temperature below 38 degrees.
[0005]
The target pattern in this temperature monitoring application can be very simple, such as Query 1 where three consecutive measured temperatures can be found, and can be specified by a subsequent rise in temperature or by a warehouse manager who should be careful but not exactly. It varies to more complex ones, such as queries 2 and 3, which find unusual spikes that cannot be made. Instead of a single absolute measurement, a range of possible measurements or a relationship between increasing and decreasing measurements may be specified.
[0006]
More specifically, queries 1, 2, and 3 are each composed of a plurality of records in the data stream having a temperature attribute value that matches a pattern represented by the following predicate p [i]: to find r.
[0007]
Figure 2004046601
Here, the predicate p [i] (r) represents a condition related to the attribute value of the i-th record in the pattern. “temperature” indicates a temperature attribute value of the record r, and r. “previous” indicates a record immediately before the record r in the data stream. When the given data is arranged in order from left to right, r. “previous” corresponds to the record on the left side of the record “r”, and a pattern can be described by specifying a condition for the record.
[0008]
The pattern predicate of Query 1 is always an equation using constants. Therefore, a well-known character string matching algorithm such as a Boyer-Moore algorithm or a Knth-Morris-Pratt algorithm can be efficiently applied. However, Query 2 and Query 3 are more complex and their predicates are inequalities using adjacent record attribute values and constants. Since the string matching algorithm is applicable only to a query represented by an equation using a constant, such as Query 1, it cannot be applied to these two more complex queries.
[0009]
For a matching algorithm applicable to such a query, see Sadri et al. There is an Optimized Pattern Search (OPS) algorithm proposed by S.A. (Sadri, R., Zaiolo, C., Zarkesh, A., and Adibi, J., Optimization of the System of Authenticating the Dimensions of the Dimensions of the Requirement from the Dimensions of the Dimensions of the Requirement of the Authenticating System of the Dimensional Dimensions of the Requirement of the Authenticating Dimensions of the Authenticating Dimensional Dimensions of the Authenticating Technology Dimensions of the Authenticating Dimensional Dimensions of the Quarterly Requirement to the Dimensional Quarterly). -SIGART Symposium on Principles of Database Systems, pp. 71-81, May 2001). In this algorithm, within a window set on the data stream, r. The predicates described using previous are checked from left to right (that is, in the order of p [0], p [1], p [2], and p [3]). When the predicate is checked at a certain position, the operation of shifting the window to another position and checking again is repeated.
[0010]
However, in this method, a record that does not match the predicate often needs to be rechecked many times at subsequent window positions, and is not necessarily an efficient algorithm.
[0011]
An object of the present invention is to provide a data processing apparatus and method for efficiently extracting an order pattern specified by a complex query from given data.
[0012]
[Means for Solving the Problems]
FIG. 1 is a configuration diagram of the first and second data processing devices of the present invention. The data processing device of FIG. 1 includes an input unit 11, a preprocessing unit 12, a search unit 13, and an output unit 14.
[0013]
A first data processing device of the present invention extracts a data string including m ordered data from a plurality of ordered data. The input unit 11 inputs a condition sequence including m ordered conditions that respectively specify m data using the relationship between the data. The preprocessing unit 12 analyzes compatibility between the m conditions and generates auxiliary information used for data extraction. When searching the data sequence from the first data to the last data on the ordered data, the search unit 13 determines whether or not the data satisfies the corresponding condition of the condition sequence in a direction opposite to the search direction. If the checked data does not satisfy the condition, the next check start position is determined using the auxiliary information. Then, the output unit 14 outputs information of a data string satisfying all the conditions of the condition string.
[0014]
Each condition of the condition sequence input by the input means 11 is described using a relationship (arbitrary value, etc.) between any two pieces of data among the ordered data, and the user can use any relationship to create a complicated condition. Order patterns can be specified. This condition corresponds to, for example, a predicate that describes a relationship between records.
[0015]
The preprocessing unit 12 generates auxiliary information by analyzing compatibility between a plurality of conditions in advance, and the searching unit 13 determines a next check start position by using the auxiliary information, and Search for data strings that match the pattern, skipping unnecessary checks between the pattern and the data.
[0016]
It has been confirmed by simulation that in many cases, the number of checks is reduced by reversing the search direction on the data and the direction of the condition check as compared to the case where the directions are the same. The result of this simulation will be described later.
[0017]
The second data processing device according to the present invention converts a predicate described by a conditional expression for an attribute value of a record r [i] (i = {0, 1,..., N-1}) into p [j] ( j = {0,1, ..., m-1}), n records r [0], r [1],. . . , R [n−1], m predicates p [0], p [1],. . . , P [m-1]. The input means 11 inputs a pattern, and the preprocessing means 12 determines compatibility between the predicate p [j] and the predicate p [j1] (j1 = {0, 1,..., J-1}). Analysis is performed to generate auxiliary information used for pattern extraction. When the search unit 13 searches the sequence data for a record sequence corresponding to the pattern from the records r [0] to r [n-1], the search unit 13 determines whether the record satisfies the corresponding predicate in the pattern. From the predicate p [m-1] to the leading predicate p [0], and when the checked record does not satisfy the predicate, the next check start position is determined using the auxiliary information. Then, the output unit 14 outputs information of a record string satisfying all the predicates of the pattern.
[0018]
Each predicate in the pattern input by the input unit 11 is described by a conditional expression including an attribute value of a record, and the user can specify a complex order pattern using an arbitrary conditional expression.
[0019]
The preprocessing unit 12 generates auxiliary information by analyzing the compatibility between a plurality of predicates in advance, and the search unit 13 determines the next check start position by using the auxiliary information, and Search for a record sequence that matches the pattern, skipping unnecessary checks between the pattern and the record.
[0020]
As in the first data processing apparatus, the search direction on the order data and the predicate check direction are opposite, so that more efficient search processing can be performed than when these are set to the same direction.
[0021]
The input unit 11 in FIG. 1 corresponds to, for example, an input device 83 in FIG. 14 described later, and the preprocessing unit 12 and the search unit 13 correspond to, for example, a combination of a CPU (central processing unit) 81 and a memory 82 in FIG. The output means 14 corresponds to, for example, the output device 84 in FIG.
[0022]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
The data processing device of the present embodiment is configured using, for example, a computer, and detects a complex temporal change pattern from a continuous and infinitely input data stream or data provided in the form of finite storage data. I do.
[0023]
First, the data processing apparatus performs preprocessing of a complicated pattern at the time of compilation to generate auxiliary information in order to skip unnecessary check of a pattern predicate for stream data. Then, while the window is slid from left to right (from the beginning to the end of the stream) at the time of execution, the stream search is efficiently performed using the auxiliary information. At this time, it is checked whether the data in the window satisfies the pattern predicate from right to left.
[0024]
This method extracts the logical relationship (auxiliary information) between pattern predicates as part of the query compilation process, and how the window is shifted when a partial match between the stream and the pattern predicate is obtained. I guess if it works. By using such a check method, the length of the window shift can be improved, and the number of rechecks of the same data can be minimized.
[0025]
When checking predicates in a window from right to left, r. Since the information of the previous cannot be used, it is necessary to rewrite the query into another format. The above-described pattern predicates of the queries 2 and 3 are rewritten as follows, for example.
[0026]
Figure 2004046601
r. Next represents a record immediately after the record r in the data stream (the record on the right side of the record r), and a pattern can be described by designating a condition for the record. r. Using the pattern rewritten using next, the predicate can be checked from right to left (ie, in the order of p [3], p [2], p [1], and p [0]). It becomes possible.
[0027]
Hereinafter, the processing will be described using Query 3 as an example. For the sake of simplicity, eight records whose temperature attribute values are 36, 42, 47, 36, 37, 42, 40, and 37 are used as the data stream.
[0028]
As shown in FIG. 2, in the processing of the first window 21, since 36 <38, the value 36 is p [3] (r): r. Since temperature <38 is satisfied and 47> 36, the value 47 is p [2] (r): r. temperature> r. next. Satisfies temperature. However, the next value 42 is p [1] (r): 40 <r. temperature <50 AND r. temperature> r. next. Does not satisfy temperature. This is because even if 40 <42 <50, 42 <47 and not 42> 47.
[0029]
Thus, after p [3] and p [2] match the data, the first mismatch occurs at p [1], which requires shifting window 21 to resume checking the pattern predicate and stream data. . Here, it is known that the values 36 and 47 satisfy p [3] and p [2], respectively, and the value 42 does not satisfy p [1].
[0030]
By analyzing the pattern predicate, it is found that p [3] and p [2] do not contradict each other, and it can be said that a value satisfying p [3] may also satisfy p [2]. A value satisfying p [2] may also satisfy p [1], and a value not satisfying p [1] may satisfy p [0]. Therefore, the window 21 is shifted by one record so that the values 36, 37, and 42 are aligned with p [2], p [1], and p [0] in the new window 22, respectively.
[0031]
In the processing of the second window 22, the value 37 satisfies p [3] because 37 <38, but the value 36 does not satisfy p [2] since 36 <37 and not 36> 37. You can see that. Since the mismatch occurred at p [2], it would be necessary to shift window 22 somewhat to restart the check.
[0032]
As described above, a value that satisfies p [3] may also satisfy p [2], but p [2] (r): r. temperature> r. next. The value that does not satisfy temperature is p [1] (r): 40 <r. temperature <50 AND r. temperature> r. next. The temperature is not satisfied. Since it is already known that the value 36 does not satisfy p [2] and therefore does not satisfy p [1], the window 22 is shifted by one record so that the value 36 is aligned with p [1]. Obviously, no results are obtained.
[0033]
When the window 22 is shifted by two records, p [3] (r): r. The value satisfying temperature <38 is p [1] (r): 40 <r. temperature <50 AND r. temperature> r. next. Temperature must also be satisfied, but this is not possible because p [3] and p [1] contradict each other. Therefore, the shift operation of two records is also discarded.
[0034]
Next, if there is a possibility that the value satisfying p [3] may also satisfy p [0], a shift operation of three records will be considered, but this is possible. Therefore, as shown in FIG. 2, the window 22 is shifted by three records, and in the processing of the third window 23, the values 37, 40, 42, and 37 are p [3], p [2], and p [ 1] and p [0].
[0035]
In this example, a given pattern could be detected in three window processes by using knowledge about the relationship between pattern predicates. The number of predicate checks on the stream data was nine.
[0036]
In the basic processing described above, it is checked whether or not the temperature attribute value satisfies the inequality of the conjunctive predicate. However, the number of checks can be reduced by introducing an extended processing that handles each inequality separately. It is. In this example, an inequality using the value of the next record and an inequality using a constant will be treated separately. The former indicates the correlation (shape of change) of the attribute values between the two records, and will be referred to as "relation predicate". The latter indicates the range of the attribute values, and will be referred to as "range predicate". ".
[0037]
In the processing of the first window 21, as described above, the value 42 is p [1] (r): 40 <r. temperature <50 AND r. temperature> r. next. Does not satisfy temperature. However, in more detail, this predicate is represented by the logical product of a range predicate (40 <r.temperature <50) and a relational predicate (r.temperature> r.next.temperature), and the value 42 is a range predicate. Is satisfied (40 <42 <50), and the relational predicate is not satisfied (42 <47 and not 42> 47).
[0038]
Since the value 42 satisfies the range predicate of p [1], p [0] (r): r. temperature <38 AND r. temperature <r. next. Temperture cannot be satisfied. Therefore, it can be seen that a window shift larger than the shift of one record used in the basic processing without separating the connection predicate p [1] is possible. Also, since p [2] and p [0] do not contradict each other, it is determined that the window 21 is shifted by three records as shown in FIG.
[0039]
In the processing of the second window 31, since 40> 38 and not 40 <38, it is known that the value 40 does not satisfy p [3], and the window 31 is shifted by one record. Then, in the processing of the third window 32, it is confirmed that the four values satisfy the corresponding predicates. In this example, the number of checks was reduced to eight by separately analyzing the inequalities of the predicates.
[0040]
In the processing in FIGS. 2 and 3, a pattern shift that may succeed in matching when a stream and a pattern predicate partially match is estimated using the interdependency between the predicates. Thereby, the number of comparisons between the predicate in the window and the stream data is reduced, and as a result, the search speed is improved.
[0041]
In this example, in order to facilitate understanding, it has been shown that the slide length of the window is inferred as a part of the processing when a mismatch occurs. However, interdependencies between predicates are independent of stream data, and can be calculated in advance at query compilation.
[0042]
In the following, auxiliary information is generated once as a part of query compilation by utilizing the logical relationship between pattern predicates, and the window is efficiently used by repeatedly using the auxiliary information when searching patterns from stream data. The method of sliding will be described in detail. First, let's summarize the meaning of some necessary terms.
[0043]
Data stream: The stream consists of n records r [0], r [1],. . . , R [n-1], where each r [i] is k attributes a [0], a [1],..., Such as a sensor ID, a temperature generated by the temperature sensor, and a generation time. . . , A [k−1].
[0044]
Patterns and Predicates: A pattern consists of m predicates p [0] (r),. . . , P [m−1] (r), and each p [j] (r) (j = {0, 1,..., M−1}) represents the attribute of the stream record r and the constant This includes conditional expressions (inequalities and equations) between the attributes of the record r and attributes of other records in the data stream.
[0045]
This conditional expression is generally described in the form of (r [i] .a [q] OPF). r [i]. a [q] is the value of the q-th (q = {0, 1,..., k-1}) attribute of the i-th (i = {0, 1,..., n-1}) record Where F is a constant and a plurality of attributes r [i1]. represents an arbitrary function including a [q1]. Here, i1 = {0, 1,. . . , N−1 except i}, q1 = {0, 1,. . . , K−1}, and i1 is 0, 1,. . . , N-1 except for i. OP is an arbitrary operator (OP∈ {<, ≦, =,>, ≧, ≠}).
[0046]
For example, the temperature attribute of the record r is set to r. temperature, and r. Next, the temperature attribute of r. next. Assuming that the temperature is temperature and the real constant is C, the following conditional expression can be specified.
[0047]
(R. Temperature OP C)
(R. Temperature OP r.next. Temperature + C)
The concatenation predicate is composed of a plurality of conditional expressions connected by a logical AND.
[0048]
Relationships between pattern predicates: All logical relationships between pattern predicates are expressed using a positive preconditional logical matrix θ and a negative preconditional logical matrix φ. The size of these matrices corresponds to the number m of pattern predicates, and their elements θ [j, k] and φ [j, k] are defined as follows.
[0049]
(Equation 1)
Figure 2004046601
[0050]
Here, 外 1 (hereinafter referred to as p [j] bar) represents the negation of p [j],
[0051]
[Outside 1]
Figure 2004046601
[0052]
U indicates that it is unknown whether it is p [j] ⇒p [k] or p [j] ⇒p [k] bar.
In the pattern detection method of the present embodiment, a stream is scanned using a window having a size equal to the number m of pattern predicates. As shown in FIG. 4, the window 41 has records r [i],. . . , R [i + m−1], the position of the window 41 is represented by i.
[0053]
The stream records in window 41 are checked from right to left for pattern predicates, so if predicate p [m-1] holds for record r [i + m-1], then record r [i + m-2] ] Is checked against the predicate p [m−2]. Then, if the predicate p [m-2] holds for the record r [i + m-2], then the record r [i + m-3] is checked for the predicate p [m-3], and the same processing is performed. You can continue.
[0054]
If it is found that the predicate p [j] does not hold for the record r [i + j], the matching processing of the current window fails. Therefore, the current window 41 is shifted rightward by the length represented by shift [j], and the stream record in the window 42 at the position of i + shift [j] is checked in the same manner as in the processing of the previous window 41. . shift [j] is calculated in advance as auxiliary information.
[0055]
In this method, first, the position of the window is initialized to i = 0 in order to retrieve all stream records that satisfy the column of m pattern predicates. As a result, the left end of the window is aligned with the first stream record r [0]. The process of sliding the window is repeated until the right edge of the window exceeds the right edge of the first data stream. Such a pattern detection algorithm can be described, for example, as follows.
[0056]
Figure 2004046601
Here, p [j] (r [i]) indicates to test whether p [j] holds for the i-th record r [i] of the stream. If r [i] satisfies p [j], p [j] (r [i]) = 1, otherwise p [j] (r [i]) = 0.
[0057]
j <0 when a search pattern is obtained in the window at the position i. At this time, find (i) is the entire pattern predicate p [0],. . . , P [m−1], stream records r [i],. . . , R [i + m−1]. The method of calculating the distance value stored in the shift array shift [j] will be described later.
[0058]
If shift [j] = 1 and the window is slid by one position each time, no matter which predicate p [j] does not hold (no matter where a match of the entire pattern is obtained), m columns of pattern predicates are obtained. In order to detect all satisfying stream records, a time of O (nm) is required, where n is the total number of records.
[0059]
Therefore, in order to reduce the number of large checks, it is considered that the window is slid more than one position. In other words, when a mismatch occurs in the predicate p [j], shift [j] is determined so as to slide the window as large as possible without leaking any matching candidates.
[0060]
From FIG. 4, when a mismatch occurs in the predicate p [j] in the window at the position i, the stream records r [i + j + 1] to r [i + m−) are used for the search pattern predicates p [j + 1] to p [m−1], respectively. 1]. At this time, the predicate p [j] does not hold for the stream record r [i + j].
[0061]
When the window at position i is shifted right by k positions and slid to a new position (i + k), the predicates p [j],. . . , P [m−1], stream records r [i + j],. . . , R [i + m−1] and the new window, there are three cases: full overlap, partial overlap, and no overlap.
[0062]
FIG. 5 shows a case of overall overlap. When 0 <k ≦ j, the window 51 shifts to the position (i + k) on the left side of the record r [i + j] where the mismatch with the predicate p [j] or the same position as the record r [i + j]. Therefore, the new window 51 is the record r [i + j],. . . , R [i + m−1].
[0063]
In the window 51 at the position (i + k), records r [i + j],. . . , R [i + m−1] are the predicates p [jk],. . . , P [m−k−1]. In order to predict whether these predicates may hold for the corresponding records, the predicates p [j],. . . , P [m−1] of these records can be used.
[0064]
Therefore, records r [i + j],. . . , R [i + m−1], the subsequences p [j],. . . , P [m−1], and substrings p [jk],. . . , P [m−k−1], the shift of the k position where the pattern search is likely to be successful is calculated by analyzing the logical relationship between the two subsequences. If the following relationship holds between these predicate sequences, a shift in the k position may create a window containing stream records that satisfy the pattern search.
[0065]
Figure 2004046601
Using θ and φ described above, this relationship can be described as follows. First, α [j, k] is defined by the following equation.
[0066]
Figure 2004046601
Where U∧1 = U, U∧0 = 0, and U∧U = U. If α [j, k] = 0, the window shift at the k position does not include a stream record that matches the search pattern, and if α [j, k] = 1, includes a matching record, and α [j, k] If j, k] = U, there is a possibility that a matching record is included.
[0067]
Next, FIG. 6 shows a case of partial overlap. If j <k <m, the window 41 shifts to the position (i + k) on the right side of the record r [i + j] where the mismatch with the predicate p [j] has occurred. Therefore, the new window 61 is composed of the sub-strings r [i + k],. . . , R [i + m−1].
[0068]
In window 61 at position (i + k), records r [i + k],. . . , R [i + m−1] are the predicates p [0],. . . , P [m−k−1]. To predict whether these predicates may hold for the corresponding records, the predicates p [k],. . . , P [m−1] of these records can be used.
[0069]
Therefore, in the window 41, records r [i + k],. . . , R [i + m−1], the subsequences p [k],. . . , P [m−1], and substrings p [0],. . . , P [m−k−1], the shift of the k position where the pattern search is likely to be successful is calculated by analyzing the logical relationship between the two subsequences. If the following relationship holds between these predicate sequences, a shift in the k position may create a window containing stream records that satisfy the pattern search.
[0070]
Figure 2004046601
Here, β [j, k] is defined by the following equation using θ and φ.
[0071]
Figure 2004046601
If β [j, k] = 0, the window shift at the k position does not include a stream record that matches the search pattern, and if β [j, k] = 1, includes a matching record. If j, k] = U, there is a possibility that a matching record is included.
[0072]
Next, FIG. 7 shows a case without overlap. If k ≧ m, the window 41 shifts to the right position (i + k) of the rightmost record r [i + m−1]. In particular, when k = m, the first record position in the new window 71 matches the record position immediately after the previous window 41. Therefore, the new window 71 is the record r [i + j],. . . , R [i + m−1] are not included.
[0073]
Since none of the stream records in the new window 71 has been checked yet, there is no reason to deny that they are candidates for stream records that match the search pattern.
[0074]
From the considerations of the above three cases, it is understood that the window shift at the k position may slide the window to a position including a stream record satisfying the pattern predicate when any of the following conditions is satisfied.
(A) α [j, k] ≠ 0 for 0 <k ≦ j
(B) β [j, k] ≠ 0 for j <k <m
(C) k ≧ m
Since we do not want to leak any matching candidates in the search process, shift [j] is calculated as the minimum rightward sliding distance that may match the pattern.
[0075]
First, the rightmost subsequences p [jk], p [jk + 1],. . . , P [m−k−1], the minimum k satisfying α [j, k] ≠ 0 is determined. If no such k exists, then the longest subsequence p [0],. . . , P [m−k−1], the minimum k satisfying β [j, k] ≠ 0 is determined. It can be seen that if no such k exists, any shift where k <m fails. Thus, with shift [j] = m, the window is shifted rightward so that the first record position in the new window matches the record position immediately after the previous window. The method of obtaining such shift [j] is summarized as follows.
[0076]
(Equation 2)
Figure 2004046601
[0077]
In a simple calculation method of the distance stored in the shift array shift [j], it is necessary to calculate α [j, k] and β [j, k] for all j and k first, which is enormous. Computational complexity is required. In the following, a simple program code for efficiently obtaining the shift array with the calculation amount of O (m) will be introduced.
[0078]
First, the elements of the auxiliary array compati [i] defined by the following equation are calculated.
Figure 2004046601
As shown in FIG. 8, the compati [i] at the position i is a pattern predicate p [i-len + 1],. . . , P [i], and includes pattern predicates p [m-len],. . . , P [m-1], the maximum value of the length len of the pattern subsequence compatible with the right end subsequence of the length len.
[0079]
The value of compati [i] is calculated from right to left (from i = m-1 to i = 0). The basic idea is to use the value of a certain compati [i] as much as possible to calculate the value to the left (the value for the smaller i). This idea is illustrated using a very simple pattern example consisting of the following four pattern predicates:
[0080]
p [3]: r. level> 10
p [2]: r. level> 5
p [1]: r. level> 3
p [0]: r. level> 1
In this case, p [i] ⇒ p [i] for any p [i], and thus compati [3] = 4 (corresponding to the first line of the code shown below). In the computation of compati [2], the relationships between p [3] and p [2], p [2] and p [1], and p [1] and p [0] must be checked. As shown in FIG. 9, since p [3] → p [2], p [2] → p [1], and p [1] → p [0], compati [2] = 3 ( (Corresponding to lines 7-12 of the code shown below).
[0081]
Here, since p [3] => p [2] and p [2] => p [1], it can be seen that p [3] => p [1]. Furthermore, since p [2] => p [1] and p [1] => p [0], it can be seen that p [2] => p [0]. Therefore, without directly checking the relationship between p [3] and p [1] and the relationship between p [2] and p [0], it is possible to obtain the conclusion that compati [1] = 2 as shown in FIG. Yes (corresponding to lines 4-5 of the code below).
[0082]
For example, the following is conceivable as a simple program code for efficiently calculating the value of the compati [i].
Figure 2004046601
Once the array compati [i] is determined, the shift array is then calculated. As shown in the following program code, the shift array is first filled with the values for the non-overlapping case, and if possible, then the values for the partial overlap are stored in the shift array using compati [i]. The value is stored, and finally the value in the case of overall overlap is stored.
[0083]
Figure 2004046601
In the first and second lines of the calculation code of the shift array, m is input as a shift value corresponding to a case where there is no overlap. As described above, this shift value is used when there is no subsequence that is compatible with the rightmost subsequence of the pattern predicate. Therefore, as shown in FIG. The window is shifted so that it does not contain the corresponding pattern predicate.
[0084]
In the 3rd to 8th lines, a shift value in the case of partial overlap is set. In this case, as shown in FIG. 12, the longest subsequence p [0],. . . , P [i] are the rightmost subsequences p [m-1-i],. . . , P [m-1], the minimum shift value is calculated.
[0085]
The leftmost subsequences p [0],. . . , P [i] is p [i], and at that position, compati [i] = i + 1. Therefore, if information (compati [i] = i + 1) on the compatibility (compatibility) of the pattern predicates stored in the array compati [i] is given, the leftmost subsequences p [0],. . . , P [i] are compatible with the rightmost subsequence p [m-1-i],. . . , P [m-1], the window is shifted.
[0086]
Finally, on the 9th to 11th lines, a shift value in the case of the entire overlap is set. In this case, as shown in FIG. 13, the subsequences p [m-compati [i]],. . . , P [m−1] is a subsequence p [i-compati [i] +1],. . . , P [i], and the minimum shift value is calculated such that p [m-compati [i] -1] bar is compatible with the pattern predicate p [i-compati [i]].
[0087]
As already checked at the time of calculation of compati [i], p [m-compati [i] -1] ⇒p [i-compati [i]] bar (θ [m-compati [i] -1, i-compati [ i]] = 0). Further, if p [m-compati [i] -1] bar ⇒ p [i-compati [i]] (φ [m-compati [i] -1, i-compati [i]] ≠ 0) holds, The above two conditions are satisfied. Therefore, shift [m-compati [i] -1] = m-1-i can be set.
[0088]
When there are a plurality of i having the same value of compati [i], a request to find the minimum shift value so as not to leak any matching candidates in the search processing results in the final rightmost i (maximum i) i) is input to the shift array as shift [m-compati [i] -1] = m-1-i. Therefore, the array compati [i] is scanned from left to right (from i = 0 to i = m−2).
[0089]
By the way, in the calculation method of shift [j] in the above-described basic processing, a plurality of inequalities of the connected predicate are not separately considered in the analysis of the compatibility between the pattern predicates. If these are handled separately, a larger shift may be obtained as described above.
[0090]
Therefore, in the expansion processing, the concatenation predicate p [j] is converted into a “range predicate p1 [j]” including a conditional expression using a constant and a “relation predicate p2 [j] including a conditional expression using a value of an adjacent record. , And described as p [j] = p1 [j] ∧p2 [j]. Also in this case, shift [j] can be obtained by directly extending the calculation method of the basic processing. The main differences from the basic processing are as follows.
[0091]
In the basic processing, only the p [j] bar is considered, but in the extended processing, p1 [j] bar ∧p2 [j], p1 [j] ∧p2 [j] bar, and p1 [j] bar ∧p2 [ j] consider the three cases of bars. According to these three cases, the above φ [j, jk] is decomposed into φ1 [j, jk], φ2 [j, jk], and φ12 [j, jk], respectively. Then, α [j, jk] is decomposed into α1 [j, jk], α2 [j, jk], and α12 [j, jk], respectively.
[0092]
Therefore, shift [j] is also calculated in advance into shift1 [j], shift2 [j], and shift12 [j]. Then, when a mismatch occurs in the predicate p [j], three shift values shift1 [j] and shift2 [j depend on whether the mismatched predicate is only a range predicate, only a relational predicate, or both. ] And shift12 [j] are selected.
[0093]
Incidentally, the data processing device of the present embodiment is configured using, for example, an information processing device (computer) as shown in FIG. 14 includes a CPU (Central Processing Unit) 81, a memory 82, an input device 83, an output device 84, an external storage device 85, a medium drive device 86, and a network connection device 87. Connected to each other.
[0094]
The memory 82 includes, for example, a ROM (read only memory), a RAM (random access memory), and the like, and stores programs and data used for processing. The CPU 81 performs necessary processing by executing a program using the memory 82.
[0095]
The input device 83 is, for example, a keyboard, a pointing device, a touch panel, or the like, and is used for inputting an instruction or information from a user. The output device 84 is, for example, a display device, a printer, a speaker, or the like, and is used for inquiring a user or outputting a processing result.
[0096]
The external storage device 85 is, for example, a magnetic disk device, an optical disk device, a magneto-optical disk device, a tape device, or the like. The information processing device stores the above-described program and data in the external storage device 85, and uses them by loading them into the memory 82 as necessary.
[0097]
The medium driving device 86 drives the portable recording medium 89 and accesses the recorded contents. As the portable recording medium 89, any computer-readable recording medium such as a memory card, a flexible disk, a compact disk read only memory (CD-ROM), an optical disk, and a magneto-optical disk is used. The user stores the above-described program and data in the portable recording medium 89, and uses them by loading them into the memory 82 as necessary.
[0098]
The network connection device 87 is connected to an arbitrary communication network such as a LAN (local area network) and performs data conversion accompanying communication. The information processing device receives the above-described program and data from another device via the network connection device 87, and uses them by loading them into the memory 82 as necessary.
[0099]
FIG. 15 shows a computer-readable recording medium capable of supplying a program and data to the information processing apparatus in FIG. The programs and data stored in the portable recording medium 89 and the database 81 of the server 90 are loaded into the memory 82. At this time, the server 90 generates a carrier signal for carrying the program and the data, and transmits the carrier signal to the information processing device via an arbitrary transmission medium on the network. Then, the CPU 81 executes the program using the data and performs necessary processing.
[0100]
Next, a description will be given of the result of a simulation comparing the naive approach in which the window is always shifted one record at a time, the search processing by the OPS algorithm described above, and the search processing of the present invention. The following were used as queries and stream data.
[0101]
Query
"Extract all patterns where a company's stock price falls twice and then rises twice in a row, causing the stock price to fall between 40 and 50 due to the decline and the first rise resulting in the stock price not exceeding 52. . "
Stream data
55 50 45 51 51 54 50 47 49 45 42 42 55 57
59 60 57
FIGS. 16 to 19 show changes in the values of the position i on the stream data and the position j on the search pattern when a pattern search is performed using such a query and stream data. Among them, FIG. 16 shows the result by the naive approach, FIG. 17 shows the result by the OPS algorithm, and FIG. 18 shows the result by the basic processing of the present invention (processing in which the conditional expression of the connecting predicate is not separately handled). FIG. 19 shows a result of the extended processing (processing for separately treating a conditional expression of a connecting predicate) according to the present invention. A square mark on the graph indicates a point at which a stream record was checked for a pattern predicate.
[0102]
In the naive approach of FIG. 16, the processing of nine windows w1 to w9 is performed, and the check of the pattern predicate on the stream record is performed 20 times. In the OPS algorithm shown in FIG. 17, the search is completed by processing seven windows w1 to w7 and checking 16 times.
[0103]
On the other hand, in the basic processing of FIG. 18, the search is completed by processing eight windows w1 to w8 and performing eleven checks, and in the extended processing of FIG. 19, processing of seven windows w1 to w7 is completed. The search has been completed after 10 checks. Therefore, in this example, it is understood that the extension processing has the best performance.
[0104]
In the naive approach, backtracking occurs in which the value of i decreases between successive points as the processing proceeds, but such backtracking does not occur in the OPS algorithm. However, in the OPS algorithm, at successive points having the same value of i, mismatched records are continuously rechecked many times.
[0105]
In contrast, in the basic processing of the present invention, the number of window processings is not smaller than that of the OPS algorithm, but the rechecking of the record does not cause a mismatch (that is, when the pattern is completely detected). This is performed only in the window w8. Further, in the extended processing for separating and analyzing the relational predicate and the range predicate, after a mismatch occurs in the record r [3] (i = 3) in the first window w1, the window is shifted to a greater extent than the basic processing, and The check of r [4] (i = 4) is skipped.
[0106]
Thus, it can be seen that the search processing of the present invention is an algorithm that is more efficient than the naive approach and the OPS algorithm.
Next, a result of a simulation using another query will be described. Each of the ten patterns P1 to P10 described below is described by seven predicates, and using these predicates, a continuous record having a water level (and temperature) attribute satisfying each condition was searched. As the stream data, 100,000 records randomly generated as records having the measured values of the water level and the temperature by the sensor were used.
[0107]
P1: In seven consecutive measurements, the water level is in the range between -2 and +2 with respect to the adjacent measurements.
P2: In seven consecutive measurements, the water level continues to rise.
P3: The water level continues to drop in seven consecutive measurements.
P4: The water level continues to rise in the first half of seven consecutive measurements, and stabilizes or decreases in the second half.
P5: Three consecutive water level spikes occur. That is, a phenomenon in which the water level suddenly rises above 10 and then suddenly falls below 10 is repeated three times.
P6: In seven consecutive measurements, the water level is in the range between -2 and +2 relative to the adjacent measurement, and the temperature continues to rise.
P7: In seven consecutive measurements, the water level continues to rise and the temperature continues to decrease.
P8: In seven consecutive measurements, the water level is in the range between -2 and +2 with respect to the adjacent measurements, the temperature continues to rise in the first half and either stabilizes or falls in the second half.
P9: In seven consecutive measurements, the water level is in the range between -2 and +2 with respect to the adjacent measurement value, and three consecutive temperature spikes occur. That is, a phenomenon in which the temperature suddenly rises more than 10 and then suddenly drops more than 10 is repeated three times.
P10: In seven consecutive measurements, the water level continues to rise, and three consecutive temperature spikes occur.
[0108]
FIG. 20 shows that the predicate check is performed in each of the naive approach (Naive), the OPS algorithm, the basic processing (R2L) of the present invention, the extended OPS algorithm (OPS-extended), and the extended processing (R2L-extended) of the present invention. Shows the number of times it was performed.
[0109]
The extended OPS algorithm refers to an algorithm in the OPS algorithm in which a conditional expression of a connected predicate is separately handled in the same manner as the extended processing of the present invention. In the patterns P1 to P5, since each predicate includes only one conditional expression, the extended OPS algorithm and the simulation of the extended processing of the present invention are not performed.
[0110]
FIG. 21 shows a bar graph of the simulation result (the number of checks) of FIG. 20. 101, 102, 103, 104, and 105 denote naive approach, OPS, basic processing of the present invention, extended OPS, and the present invention, respectively. Corresponding to the number of checks for the extension processing.
[0111]
From this graph, it can be seen that the number of checks for the OPS, the extended OPS, the basic processing of the present invention, and the extended processing of the present invention is smaller than the naive approach for any pattern. The number of checks of the OPS and the extended OPS is the same as or slightly larger than the total number of records (100,000), which means that backtracking does not occur for most patterns in these processes. are doing.
[0112]
Except for the OPS for the patterns P4 and P9, the number of checks of the basic processing and the extended processing of the present invention is smaller than that of the OPS and the extended OPS, respectively. In particular, for the patterns P1, P2, P3, P6, and P7, the number of checks of the basic processing and the expansion processing of the present invention is less than half that of the OPS and the expansion OPS, respectively. For patterns P8, P9, and P10, the number of checks can be significantly reduced by using extended processing instead of basic processing.
[0113]
As described above, in many cases, the simulation of searching for ten different patterns from a large amount of randomly generated data shows that the search processing of the present invention often shows much better performance than the naive approach or the OPS algorithm. The extension processing was found to be more efficient than the basic processing.
(Supplementary Note 1) A data processing device for extracting a data sequence including m ordered data from a plurality of ordered data,
Input means for inputting a condition sequence consisting of ordered m conditions that respectively specify the m data using a relationship between data;
Preprocessing means for analyzing compatibility between the m conditions and generating auxiliary information used for data extraction;
When searching for the data sequence from the first data to the last data on the ordered data, it is checked whether the data satisfies the corresponding condition of the condition sequence in a direction opposite to a search direction. Search means for determining the next check start position using the auxiliary information when the checked data does not satisfy the condition,
Output means for outputting information of a data string that satisfies all the conditions of the condition string;
A data processing device comprising:
(Supplementary Note 2) The pre-processing means is a partial condition sequence having each position on the condition sequence including the m conditions as a right end, and a partial condition sequence at a right end of the condition sequence including the m conditions. 2. The data processing apparatus according to claim 1, wherein an array representing the maximum value of the lengths of the partial condition strings that are compatible with each other is generated, and the auxiliary information is generated using the array.
(Supplementary Note 3) A predicate described by a conditional expression for an attribute value of a record r [i] (i = {0, 1,..., N−1}) is p [j] (j = {0, 1, , M−1}), n records r [0], r [1],. . . , R [n−1], m predicates p [0], p [1],. . . , P [m-1], and extracts a pattern consisting of
Input means for inputting the pattern,
Preprocessing means for analyzing compatibility between a predicate p [j] and a predicate p [j1] (j1 = {0, 1,..., J-1}) and generating auxiliary information used for pattern extraction; ,
When retrieving a record sequence corresponding to the pattern from the record r [0] to r [n-1] on the ordinal data, it is determined whether the record satisfies the corresponding predicate in the pattern by a tail predicate. search means for checking from p [m-1] toward the leading predicate p [0], and determining the next check start position using the auxiliary information when the checked record does not satisfy the predicate;
Output means for outputting information of a record sequence satisfying all the predicates of the pattern;
A data processing device comprising:
(Supplementary Note 4) The data processing apparatus according to Supplementary Note 3, wherein when a plurality of conditional expressions are included in the predicate, the preprocessing unit separates and analyzes the plurality of conditional expressions. (Supplementary Note 5) The preprocessing unit sets the position j to the right end, and sets the predicates p [j-len + 1],. . . , P [j], where the predicates p [m-len],. . . , P [m-1], an array representing the maximum value of the length len of the predicate sequence is generated, and the auxiliary information is generated using the array. The data processing device as described in the above.
(Supplementary Note 6) k attributes a [0], a [1],. . . , A [k−1] is defined as r [i] (i = {0, 1,..., N−1}), and the attribute a [q] of r [i] (q = {0, ,..., K−1}) are denoted by r [i]. a [q], a constant and an attribute r [i1]. An arbitrary function including a [q1] (i1 = {0, 1,..., n−1 minus the remainder of i), q1 = {0, 1,. And is described by a combination of conditional expressions such as (r [i] .a [q] OP F), where OP is any operator of {<, ≦, =,>, ≧, ≠}. When the predicate is p [j] (j = {0, 1,..., M-1}), n records r [0], r [1],. . . , R [n−1], m predicates p [0], p [1],. . . , P [m-1], and extracts a pattern consisting of
Input means for inputting the pattern,
Preprocessing means for analyzing compatibility between a predicate p [j] and a predicate p [j1] (j1 = {0, 1,..., J-1}) and generating auxiliary information used for pattern extraction; ,
When retrieving a record sequence corresponding to the pattern from the record r [0] to r [n-1] on the ordinal data, it is determined whether the record satisfies the corresponding predicate in the pattern by a tail predicate. search means for checking from p [m-1] toward the leading predicate p [0], and determining the next check start position using the auxiliary information when the checked record does not satisfy the predicate;
Output means for outputting information of a record sequence satisfying all the predicates of the pattern;
A data processing device comprising:
(Supplementary Note 7) A program for a computer that extracts a data sequence including m ordered data from a plurality of ordered data,
Inputting a condition sequence consisting of ordered m conditions specifying each of the m data using the relationship between the data,
Analyzing compatibility between the m conditions, generating auxiliary information used for data extraction,
When searching for the data sequence from the first data to the last data on the ordered data, it is checked whether the data satisfies the corresponding condition of the condition sequence in a direction opposite to a search direction. When the checked data does not satisfy the condition, determine the next check start position using the auxiliary information,
Output information on data strings that satisfy all the conditions in the above condition columns
A program for causing a computer to execute processing.
(Supplementary Note 8) A predicate described by a conditional expression for an attribute value of a record r [i] (i = {0, 1,..., N−1}) is p [j] (j = {0, 1, , M−1}), n records r [0], r [1],. . . , R [n−1], m predicates p [0], p [1],. . . , P [m-1], a computer program for extracting a pattern consisting of
Enter the pattern,
Analyze the compatibility between the predicate p [j] and the predicate p [j1] (j1 = {0, 1,..., J-1}), generate auxiliary information used for pattern extraction,
When retrieving a record sequence corresponding to the pattern from the record r [0] to r [n-1] on the ordinal data, it is determined whether the record satisfies the corresponding predicate in the pattern by a tail predicate. Checking from p [m-1] to the leading predicate p [0], and when the checked record does not satisfy the predicate, determine the next check start position using the auxiliary information;
Output the information of the record sequence that satisfies all the predicates of the pattern
A program for causing a computer to execute processing.
(Supplementary note 9) The program according to supplementary note 8, wherein the computer separates and analyzes the plurality of conditional expressions if the predicate includes the plurality of conditional expressions when generating the auxiliary information. .
(Supplementary Note 10) A recording medium recording a program for a computer that extracts a data string including m pieces of ordered data from a plurality of ordered data, the program comprising:
Inputting a condition sequence consisting of ordered m conditions specifying each of the m data using the relationship between the data,
Analyzing compatibility between the m conditions, generating auxiliary information used for data extraction,
When searching for the data sequence from the first data to the last data on the ordered data, it is checked whether the data satisfies the corresponding condition of the condition sequence in a direction opposite to a search direction. When the checked data does not satisfy the condition, determine the next check start position using the auxiliary information,
Output information on data strings that satisfy all the conditions in the above condition columns
A computer-readable recording medium that causes the computer to execute processing.
(Supplementary Note 11) A predicate described by a conditional expression for an attribute value of a record r [i] (i = {0, 1,..., N−1}) is p [j] (j = {0, 1, , M-1}), n records r [0], r [1],. . . , R [n−1], m predicates p [0], p [1],. . . , P [m-1] on a recording medium for recording a program for a computer, the program comprising:
Enter the pattern,
Analyze the compatibility between the predicate p [j] and the predicate p [j1] (j1 = {0, 1,..., J-1}), generate auxiliary information used for pattern extraction,
When retrieving a record sequence corresponding to the pattern from the record r [0] to r [n-1] on the ordinal data, it is determined whether the record satisfies the corresponding predicate in the pattern by a tail predicate. Checking from p [m-1] to the leading predicate p [0], and when the checked record does not satisfy the predicate, determine the next check start position using the auxiliary information;
Output the information of the record sequence that satisfies all the predicates of the pattern
A computer-readable recording medium that causes the computer to execute processing.
(Supplementary Note 12) The recording according to Supplementary Note 11, wherein, when generating the auxiliary information, if a plurality of conditional expressions are included in a predicate, the plurality of conditional expressions are separated and analyzed. Medium.
(Supplementary Note 13) A carrier signal for carrying to a computer a program for a computer that extracts a data sequence including m ordered data from a plurality of ordered data, the program comprising:
Inputting a condition sequence consisting of ordered m conditions specifying each of the m data using the relationship between the data,
Analyzing compatibility between the m conditions, generating auxiliary information used for data extraction,
When searching for the data sequence from the first data to the last data on the ordered data, it is checked whether the data satisfies the corresponding condition of the condition sequence in a direction opposite to a search direction. When the checked data does not satisfy the condition, determine the next check start position using the auxiliary information,
Output information on data strings that satisfy all the conditions in the above condition columns
A carrier signal causing the computer to execute a process.
(Supplementary Note 14) A predicate described by a conditional expression for an attribute value of a record r [i] (i = {0, 1,..., N−1}) is p [j] (j = {0, 1, , M−1}), n records r [0], r [1],. . . , R [n−1], m predicates p [0], p [1],. . . , P [m-1], a carrier signal for carrying to the computer a program for extracting a pattern, the program comprising:
Enter the pattern,
Analyze the compatibility between the predicate p [j] and the predicate p [j1] (j1 = {0, 1,..., J-1}), generate auxiliary information used for pattern extraction,
When retrieving a record sequence corresponding to the pattern from the record r [0] to r [n-1] on the ordinal data, it is determined whether the record satisfies the corresponding predicate in the pattern by a tail predicate. Checking from p [m-1] to the leading predicate p [0], and when the checked record does not satisfy the predicate, determine the next check start position using the auxiliary information;
Output the information of the record sequence that satisfies all the predicates of the pattern
A carrier signal causing the computer to execute a process.
(Supplementary note 15) The transport according to Supplementary note 14, wherein when the auxiliary information is generated, if a plurality of conditional expressions are included in the predicate, the plurality of conditional expressions are separated and analyzed. signal.
(Supplementary Note 16) A data processing method for extracting a data string including m ordered data from a plurality of ordered data,
Input means for inputting a condition sequence consisting of m ordered conditions specifying each of the m data using a relationship between the data;
Preprocessing means for analyzing compatibility between the m conditions to generate auxiliary information used for data extraction;
When the search unit searches the data sequence from the first data toward the last data on the ordered data, it is determined whether the data satisfies a corresponding condition of the condition sequence in a direction opposite to a search direction. Check the direction, determine the next check start position using the auxiliary information when the checked data does not satisfy the conditions,
A data processing method, wherein an output unit outputs information of a data string satisfying all the conditions of the condition string.
(Supplementary Note 17) A predicate described by a conditional expression for an attribute value of a record r [i] (i = {0, 1,..., N−1}) is p [j] (j = {0, 1, , M−1}), n records r [0], r [1],. . . , R [n−1], m predicates p [0], p [1],. . . , P [m-1], a data processing method for extracting a pattern
Input means for inputting the pattern;
The preprocessing means analyzes compatibility between the predicate p [j] and the predicate p [j1] (j1 = {0, 1,..., J-1}) and generates auxiliary information used for pattern extraction. And
When the search means searches a record sequence corresponding to the pattern from the record r [0] to r [n-1] on the order data, it is determined whether the record satisfies a corresponding predicate in the pattern. From the tail predicate p [m-1] to the head predicate p [0], and if the checked record does not satisfy the predicate, determine the next check start position using the auxiliary information;
Output means for outputting information of a record string satisfying all the predicates of the pattern
A data processing method comprising:
(Supplementary note 18) The data processing method according to supplementary note 17, wherein, when a plurality of conditional expressions are included in the predicate, the preprocessing unit separates and analyzes the plurality of conditional expressions.
[0114]
【The invention's effect】
According to the present invention, in a process of extracting an ordered pattern specified by a complicated query from given data, unnecessary check between a specified pattern and data can be skipped, and data matching a pattern can be skipped. Columns can be detected efficiently.
[Brief description of the drawings]
FIG. 1 is a configuration diagram of a data processing device of the present invention.
FIG. 2 is a diagram showing basic window processing.
FIG. 3 is a diagram illustrating extended window processing.
FIG. 4 is a diagram showing a window shift of shift [j].
FIG. 5 is a diagram showing an overall overlap.
FIG. 6 is a diagram showing a partial overlap.
FIG. 7 illustrates a window shift without overlap.
FIG. 8 is a diagram showing compati [i].
FIG. 9 is a diagram showing compati [2].
FIG. 10 is a diagram showing compati [1].
FIG. 11 is a diagram showing a pattern predicate when there is no overlap.
FIG. 12 is a diagram showing a pattern predicate in the case of partial overlap.
FIG. 13 is a diagram showing a pattern predicate in the case of overall overlap.
FIG. 14 is a configuration diagram of an information processing apparatus.
FIG. 15 is a diagram showing a recording medium.
FIG. 16 is a diagram showing a processing result of a naive approach.
FIG. 17 is a diagram showing a processing result of the OPS algorithm.
FIG. 18 is a diagram showing a processing result of the basic processing of the present invention.
FIG. 19 is a diagram showing a processing result of the extension processing of the present invention.
FIG. 20 is a diagram showing the number of checks in five search processes.
FIG. 21 is a diagram showing a graph of the number of checks.
[Explanation of symbols]
11 Input means
12 Preprocessing means
13 Search means
14 Output means
21, 22, 23, 31, 32, 41, 42, 51, 61, 71 windows
81 CPU
82 memory
83 input device
84 Output device
85 External storage device
86 medium drive
87 Network connection device
88 bus
89 Portable recording media
90 server
91 Database
101, 102, 103, 104, 105 Number of checks

Claims (10)

複数の順序付けられたデータから、順序付けられたm個のデータからなるデータ列を抽出するデータ処理装置であって、
データ間の関係を用いて前記m個のデータをそれぞれ指定する順序付けられたm個の条件からなる条件列を入力する入力手段と、
前記m個の条件の間の両立性を解析して、データ抽出に用いる補助情報を生成する前処理手段と、
前記順序付けられたデータ上で先頭のデータから末尾のデータに向かって前記データ列を検索するとき、データが前記条件列の対応する条件を満たすか否かを検索方向とは逆の向きにチェックし、チェックされたデータが条件を満たさないとき前記補助情報を用いて次のチェック開始位置を決定する検索手段と、
前記条件列のすべての条件を満たしたデータ列の情報を出力する出力手段と
を備えることを特徴とするデータ処理装置。
A data processing device for extracting a data sequence including m ordered data from a plurality of ordered data,
Input means for inputting a condition sequence consisting of ordered m conditions that respectively specify the m data using a relationship between data;
Preprocessing means for analyzing compatibility between the m conditions and generating auxiliary information used for data extraction;
When searching for the data sequence from the first data to the last data on the ordered data, it is checked whether the data satisfies the corresponding condition of the condition sequence in a direction opposite to a search direction. Search means for determining the next check start position using the auxiliary information when the checked data does not satisfy the condition,
An output unit configured to output information of a data string satisfying all the conditions of the condition string.
前記前処理手段は、前記m個の条件からなる条件列上の各位置を右端とする部分条件列であって、該m個の条件からなる条件列の右端の部分条件列と両立するような部分条件列の長さの最大値を表す配列を生成し、該配列を用いて前記補助情報を生成することを特徴とする請求項1記載のデータ処理装置。The pre-processing means is a partial condition sequence whose right end is each position on the condition sequence consisting of the m conditions, and which is compatible with the right end partial condition sequence of the condition sequence consisting of the m conditions. 2. The data processing apparatus according to claim 1, wherein an array representing the maximum value of the length of the partial condition sequence is generated, and the auxiliary information is generated using the array. レコードr[i](i={0,1,...,n−1})の属性値に対する条件式で記述される述語をp[j](j={0,1,...,m−1})とするとき、n個のレコードr[0],r[1],...,r[n−1]からなる順序データからm個の述語p[0],p[1],...,p[m−1]からなるパターンを抽出するデータ処理装置であって、
前記パターンを入力する入力手段と、
述語p[j]と述語p[j1](j1={0,1,...,j−1})の間の両立性を解析し、パターン抽出に用いる補助情報を生成する前処理手段と、
前記順序データ上でレコードr[0]からr[n−1]に向かって前記パターンに対応するレコード列を検索するとき、レコードが該パターン内の対応する述語を満たすか否かを末尾の述語p[m−1]から先頭の述語p[0]に向かってチェックし、チェックされたレコードが述語を満たさないとき前記補助情報を用いて次のチェック開始位置を決定する検索手段と、
前記パターンのすべての述語を満たしたレコード列の情報を出力する出力手段と
を備えることを特徴とするデータ処理装置。
The predicate described by the conditional expression for the attribute value of the record r [i] (i = {0, 1,..., N-1}) is p [j] (j = {0, 1,. m-1}), n records r [0], r [1],. . . , R [n−1], m predicates p [0], p [1],. . . , P [m-1], and extracts a pattern consisting of
Input means for inputting the pattern,
Preprocessing means for analyzing compatibility between a predicate p [j] and a predicate p [j1] (j1 = {0, 1,..., J-1}) and generating auxiliary information used for pattern extraction; ,
When retrieving a record sequence corresponding to the pattern from the record r [0] to r [n-1] on the ordinal data, it is determined whether the record satisfies the corresponding predicate in the pattern by a tail predicate. search means for checking from p [m-1] toward the leading predicate p [0], and determining the next check start position using the auxiliary information when the checked record does not satisfy the predicate;
An output unit that outputs information of a record string satisfying all the predicates of the pattern.
前記前処理手段は、複数の条件式が述語に含まれているとき、該複数の条件式を分離して解析することを特徴とする請求項3記載のデータ処理装置。4. The data processing apparatus according to claim 3, wherein when a plurality of conditional expressions are included in the predicate, the preprocessing unit separates and analyzes the plurality of conditional expressions. 前記前処理手段は、位置jを右端とし述語p[j−len+1],...,p[j]からなる述語列であって、述語p[m−len],...,p[m−1]からなる述語列と両立するような述語列の長さlenの最大値を表す配列を生成し、該配列を用いて前記補助情報を生成することを特徴とする請求項3記載のデータ処理装置。The preprocessing means sets the position j to the right end, and sets the predicates p [j-len + 1],. . . , P [j], where the predicates p [m-len],. . . , P [m-1], an array representing the maximum value of the length len of the predicate string is generated, and the auxiliary information is generated using the array. 3. The data processing device according to 3. k個の属性a[0],a[1],...,a[k−1]を有するレコードをr[i](i={0,1,...,n−1})とし、r[i]の属性a[q](q={0,1,...,k−1})の値をr[i].a[q]とし、定数と属性r[i1].a[q1](i1={0,1,...,n−1からiを除いた残り}、q1={0,1,...,k−1})を含む任意の関数をFとし、{<,≦,=,>,≧,≠}のうちのいずれかのオペレータをOPとして、(r[i].a[q] OP F)のような条件式の組み合わせで記述される述語をp[j](j={0,1,...,m−1})とするとき、n個のレコードr[0],r[1],...,r[n−1]からなる順序データからm個の述語p[0],p[1],...,p[m−1]からなるパターンを抽出するデータ処理装置であって、
前記パターンを入力する入力手段と、
述語p[j]と述語p[j1](j1={0,1,...,j−1})の間の両立性を解析し、パターン抽出に用いる補助情報を生成する前処理手段と、
前記順序データ上でレコードr[0]からr[n−1]に向かって前記パターンに対応するレコード列を検索するとき、レコードが該パターン内の対応する述語を満たすか否かを末尾の述語p[m−1]から先頭の述語p[0]に向かってチェックし、チェックされたレコードが述語を満たさないとき前記補助情報を用いて次のチェック開始位置を決定する検索手段と、
前記パターンのすべての述語を満たしたレコード列の情報を出力する出力手段と
を備えることを特徴とするデータ処理装置。
k attributes a [0], a [1],. . . , A [k−1] is defined as r [i] (i = {0, 1,..., N−1}), and the attribute a [q] of r [i] (q = {0, ,..., K−1}) are denoted by r [i]. a [q], a constant and an attribute r [i1]. An arbitrary function including a [q1] (i1 = {0, 1,..., n−1 minus the remainder of i), q1 = {0, 1,. And is described by a combination of conditional expressions such as (r [i] .a [q] OP F), where OP is any operator of {<, ≦, =,>, ≧, ≠}. When the predicate is p [j] (j = {0, 1,..., M-1}), n records r [0], r [1],. . . , R [n−1], m predicates p [0], p [1],. . . , P [m-1], and extracts a pattern consisting of
Input means for inputting the pattern,
Preprocessing means for analyzing compatibility between a predicate p [j] and a predicate p [j1] (j1 = {0, 1,..., J-1}) and generating auxiliary information used for pattern extraction; ,
When retrieving a record sequence corresponding to the pattern from the record r [0] to r [n-1] on the ordinal data, it is determined whether the record satisfies the corresponding predicate in the pattern by a tail predicate. search means for checking from p [m-1] toward the leading predicate p [0], and determining the next check start position using the auxiliary information when the checked record does not satisfy the predicate;
An output unit that outputs information of a record string satisfying all the predicates of the pattern.
複数の順序付けられたデータから、順序付けられたm個のデータからなるデータ列を抽出するコンピュータのためのプログラムであって、
データ間の関係を用いて前記m個のデータをそれぞれ指定する順序付けられたm個の条件からなる条件列を入力し、
前記m個の条件の間の両立性を解析して、データ抽出に用いる補助情報を生成し、
前記順序付けられたデータ上で先頭のデータから末尾のデータに向かって前記データ列を検索するとき、データが前記条件列の対応する条件を満たすか否かを検索方向とは逆の向きにチェックし、チェックされたデータが条件を満たさないとき前記補助情報を用いて次のチェック開始位置を決定し、
前記条件列のすべての条件を満たしたデータ列の情報を出力する
処理を前記コンピュータに実行させることを特徴とするプログラム。
A program for a computer that extracts a data sequence consisting of ordered m data from a plurality of ordered data,
Inputting a condition sequence consisting of ordered m conditions specifying each of the m data using the relationship between the data,
Analyzing compatibility between the m conditions, generating auxiliary information used for data extraction,
When searching for the data sequence from the first data to the last data on the ordered data, it is checked whether the data satisfies the corresponding condition of the condition sequence in a direction opposite to a search direction. When the checked data does not satisfy the condition, determine the next check start position using the auxiliary information,
A program for causing the computer to execute a process of outputting information of a data string satisfying all the conditions of the condition string.
レコードr[i](i={0,1,...,n−1})の属性値に対する条件式で記述される述語をp[j](j={0,1,...,m−1})とするとき、n個のレコードr[0],r[1],...,r[n−1]からなる順序データからm個の述語p[0],p[1],...,p[m−1]からなるパターンを抽出するコンピュータのためのプログラムであって、
前記パターンを入力し、
述語p[j]と述語p[j1](j1={0,1,...,j−1})の間の両立性を解析し、パターン抽出に用いる補助情報を生成し、
前記順序データ上でレコードr[0]からr[n−1]に向かって前記パターンに対応するレコード列を検索するとき、レコードが該パターン内の対応する述語を満たすか否かを末尾の述語p[m−1]から先頭の述語p[0]に向かってチェックし、チェックされたレコードが述語を満たさないとき前記補助情報を用いて次のチェック開始位置を決定し、
前記パターンのすべての述語を満たしたレコード列の情報を出力する
処理を前記コンピュータに実行させることを特徴とするプログラム。
The predicate described by the conditional expression for the attribute value of the record r [i] (i = {0, 1,..., N-1}) is p [j] (j = {0, 1,. m-1}), n records r [0], r [1],. . . , R [n−1], m predicates p [0], p [1],. . . , P [m-1], a computer program for extracting a pattern consisting of
Enter the pattern,
Analyze the compatibility between the predicate p [j] and the predicate p [j1] (j1 = {0, 1,..., J-1}), generate auxiliary information used for pattern extraction,
When retrieving a record sequence corresponding to the pattern from the record r [0] to r [n-1] on the ordinal data, it is determined whether the record satisfies the corresponding predicate in the pattern by a tail predicate. Checking from p [m-1] to the leading predicate p [0], and when the checked record does not satisfy the predicate, determine the next check start position using the auxiliary information;
A program causing the computer to execute a process of outputting information of a record string satisfying all the predicates of the pattern.
複数の順序付けられたデータから、順序付けられたm個のデータからなるデータ列を抽出するデータ処理方法であって、
入力手段が、データ間の関係を用いて前記m個のデータをそれぞれ指定する順序付けられたm個の条件からなる条件列を入力し、
前処理手段が、前記m個の条件の間の両立性を解析して、データ抽出に用いる補助情報を生成し、
検索手段が、前記順序付けられたデータ上で先頭のデータから末尾のデータに向かって前記データ列を検索するとき、データが前記条件列の対応する条件を満たすか否かを検索方向とは逆の向きにチェックし、チェックされたデータが条件を満たさないとき前記補助情報を用いて次のチェック開始位置を決定し、
出力手段が、前記条件列のすべての条件を満たしたデータ列の情報を出力することを特徴とするデータ処理方法。
A data processing method for extracting, from a plurality of ordered data, a data sequence including m ordered data,
Input means for inputting a condition sequence consisting of m ordered conditions specifying each of the m data using a relationship between the data;
Preprocessing means for analyzing compatibility between the m conditions to generate auxiliary information used for data extraction;
When the search unit searches the data sequence from the first data toward the last data on the ordered data, it is determined whether the data satisfies a corresponding condition of the condition sequence in a direction opposite to a search direction. Check the direction, determine the next check start position using the auxiliary information when the checked data does not satisfy the conditions,
A data processing method, wherein an output unit outputs information of a data string satisfying all the conditions of the condition string.
レコードr[i](i={0,1,...,n−1})の属性値に対する条件式で記述される述語をp[j](j={0,1,...,m−1})とするとき、n個のレコードr[0],r[1],...,r[n−1]からなる順序データからm個の述語p[0],p[1],...,p[m−1]からなるパターンを抽出するデータ処理方法であって、
入力手段が、前記パターンを入力し、
前処理手段が、述語p[j]と述語p[j1](j1={0,1,...,j−1})の間の両立性を解析し、パターン抽出に用いる補助情報を生成し、
検索手段が、前記順序データ上でレコードr[0]からr[n−1]に向かって前記パターンに対応するレコード列を検索するとき、レコードが該パターン内の対応する述語を満たすか否かを末尾の述語p[m−1]から先頭の述語p[0]に向かってチェックし、チェックされたレコードが述語を満たさないとき前記補助情報を用いて次のチェック開始位置を決定し、
出力手段が、前記パターンのすべての述語を満たしたレコード列の情報を出力する
ことを特徴とするデータ処理方法。
The predicate described by the conditional expression for the attribute value of the record r [i] (i = {0, 1,..., N-1}) is p [j] (j = {0, 1,. m-1}), n records r [0], r [1],. . . , R [n−1], m predicates p [0], p [1],. . . , P [m-1], a data processing method for extracting a pattern
Input means for inputting the pattern;
The preprocessing means analyzes compatibility between the predicate p [j] and the predicate p [j1] (j1 = {0, 1,..., J-1}) and generates auxiliary information used for pattern extraction. And
When the search means searches a record sequence corresponding to the pattern from the record r [0] to r [n-1] on the order data, it is determined whether the record satisfies a corresponding predicate in the pattern. From the tail predicate p [m-1] to the head predicate p [0], and if the checked record does not satisfy the predicate, determine the next check start position using the auxiliary information;
A data processing method, wherein an output unit outputs information of a record string satisfying all the predicates of the pattern.
JP2002204185A 2002-07-12 2002-07-12 Data processing apparatus and method for extracting a complex order pattern Pending JP2004046601A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002204185A JP2004046601A (en) 2002-07-12 2002-07-12 Data processing apparatus and method for extracting a complex order pattern

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002204185A JP2004046601A (en) 2002-07-12 2002-07-12 Data processing apparatus and method for extracting a complex order pattern

Publications (1)

Publication Number Publication Date
JP2004046601A true JP2004046601A (en) 2004-02-12

Family

ID=31709851

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002204185A Pending JP2004046601A (en) 2002-07-12 2002-07-12 Data processing apparatus and method for extracting a complex order pattern

Country Status (1)

Country Link
JP (1) JP2004046601A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9317231B2 (en) 2011-06-09 2016-04-19 Canon Kabushiki Kaisha Image forming apparatus, information processing apparatus, control method thereof, and storage medium
US9589020B2 (en) 2013-07-16 2017-03-07 Fujitsu Limited Matching method and computer-readable recording medium

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9317231B2 (en) 2011-06-09 2016-04-19 Canon Kabushiki Kaisha Image forming apparatus, information processing apparatus, control method thereof, and storage medium
US9589020B2 (en) 2013-07-16 2017-03-07 Fujitsu Limited Matching method and computer-readable recording medium

Similar Documents

Publication Publication Date Title
Mooney et al. Sequential pattern mining--approaches and algorithms
Mörchen Unsupervised pattern mining from symbolic temporal data
Fowkes et al. A subsequence interleaving model for sequential pattern mining
Mueen et al. Time series join on subsequence correlation
US8166049B2 (en) Techniques for computing similarity measurements between segments representative of documents
US20050114331A1 (en) Near-neighbor search in pattern distance spaces
Bertens et al. Keeping it short and simple: Summarising complex event sequences with multivariate patterns
Wu et al. Kv-match: A subsequence matching approach supporting normalization and time warping
Tahir et al. EPMA: efficient pattern matching algorithm for DNA sequences
Luu et al. A review of alignment based similarity measures for web usage mining
US20080126347A1 (en) Frequent pattern mining system
CN113590763A (en) Similar text retrieval method and device based on deep learning and storage medium
Gao et al. Efficient discovery of variable-length time series motifs with large length range in million scale time series
Gao et al. Ensemble grammar induction for detecting anomalies in time series
Daykin et al. Efficient pattern matching in degenerate strings with the Burrows–Wheeler transform
Ileri et al. A simple yet time-optimal and linear-space algorithm for shortest unique substring queries
Liu et al. Efficient pattern matching with periodical wildcards in uncertain sequences
Wang et al. A tree-construction search approach for multivariate time series motifs discovery
JP2004046601A (en) Data processing apparatus and method for extracting a complex order pattern
GB2361478A (en) Aligment free methodology for rapid determination of differences between test data sets and known data sets
CN117454382A (en) Binary component detection method and system based on neural network and function call graph
Gouda et al. Compressed feature-based filtering and verification approach for subgraph search
Zecchini et al. Entity Resolution on Camera Records Without Machine Learning.
Inenaga et al. Discovering best variable-length-don’t-care patterns
Ye et al. Efficient Exact Subgraph Matching via GNN-based Path Dominance Embedding (Technical Report)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050606

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080710

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080729

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081209