(57)【要約】【課題】  データストリーム管理システムにおいて、多様なデータ型を持つレコードに対して、多様なフィルタ処理を簡易かつ効率的に実現する。【解決手段】  データストリーム管理システムにおいて、カレントレコードを格納する格納手段と、  前記格納手段から前記カレントレコードを読み出し、前記カレントレコードを構成する複数の要素のうちの全部又は一部の要素からなる局所入力レコードに対し、フィルタ処理系列の中のフィルタ処理を実行するフィルタ処理実行手段と、前記フィルタ処理の処理結果レコードを構成する要素と、前記カレントレコードを構成する要素とから、予め定めたカラムにある要素を抽出し、抽出された要素を予め定めた順序に並べることにより新たなカレントレコード作成し、当該新たなカレントレコードを、前記カレントレコードに代えて前記格納手段に格納するカレントレコード構成手段と、を備える。【選択図】図５
2010140252.tif 000002
【特許請求の範囲】
【請求項１】
データストリームを構成するデータとして入力されるレコードに対し、所定のフィルタ処理系列における各々のフィルタ処理を順に実行するデータストリーム管理システムであって、
カレントレコードを格納するカレントレコード格納手段と、
前記カレントレコード格納手段から前記カレントレコードを読み出し、前記カレントレコードを構成する複数の要素のうちの全部又は一部の要素からなる局所入力レコードに対して前記フィルタ処理を実行するフィルタ処理実行手段と、
前記フィルタ処理実行手段により得られた前記フィルタ処理の処理結果レコードを構成する要素と、前記カレントレコードを構成する要素とから、予め定めたカラムにある要素を抽出し、抽出された要素を予め定めた順序に並べることにより新たなカレントレコード作成し、当該新たなカレントレコードを、前記カレントレコードに代えて前記カレントレコード格納手段に格納するカレントレコード構成手段と、
を有することを特徴とするデータストリーム管理システム。
【請求項２】
前記フィルタ処理実行手段は、
前記カレントレコード格納手段から前記カレントレコードを読み出し、前記フィルタ処理に適合した入力レコードになるように、前記カレントレコードから、予め定めたカラムに存在する要素を抽出し、抽出された要素を予め定めた順序に並べることにより前記局所入力レコードを作成する局所入力レコード構成手段と、
前記フィルタ処理を実行するためのフィルタ処理手段と、
を有することを特徴とする請求項１に記載のデータストリーム管理システム。
【請求項３】
前記フィルタ処理実行手段、及び前記カレントレコード構成手段による処理を、前記フィルタ処理系列におけるフィルタ処理の順に、フィルタ処理が終了するまで繰り返し実行するフィルタ処理実行制御手段を有することを特徴とする請求項１又は２に記載のデータストリーム管理システム。
【請求項４】
データストリームを構成するデータとして入力されるレコードに対し、所定のフィルタ処理系列における各々のフィルタ処理を順に実行するデータストリーム管理システムにおいて実行されるレコード処理方法であって、
前記データストリーム管理システムは、カレントレコードを格納するカレントレコード格納手段を備え、前記レコード処理方法は、
前記データストリーム管理システムが備えるフィルタ処理実行手段が、前記カレントレコード格納手段から前記カレントレコードを読み出し、前記カレントレコードを構成する複数の要素のうちの全部又は一部の要素からなる局所入力レコードに対して前記フィルタ処理を実行するフィルタ処理実行ステップと、
前記データストリーム管理システムが備えるカレントレコード構成手段が、前記フィルタ処理実行ステップにより得られた前記フィルタ処理の処理結果レコードを構成する要素と、前記カレントレコードを構成する要素とから、予め定めたカラムにある要素を抽出し、抽出された要素を予め定めた順序に並べることにより新たなカレントレコードを作成し、当該新たなカレントレコードを、前記カレントレコードに代えて前記カレントレコード格納手段に格納するカレントレコード構成ステップと、
を有することを特徴とするレコード処理方法。
【請求項５】
前記フィルタ処理実行ステップは、
前記カレントレコード格納手段から前記カレントレコードを読み出し、前記フィルタ処理に適合した入力レコードになるように、前記カレントレコードから、予め定めたカラムに存在する要素を抽出し、抽出された要素を予め定めた順序に並べることにより前記局所入力レコードを作成する局所入力レコード構成ステップを有することを特徴とする請求項４に記載のレコード処理方法。
【請求項６】
前記データストリーム管理システムが備えるフィルタ処理実行制御手段が、前記フィルタ処理実行ステップ、及び前記カレントレコード構成ステップによる処理を、前記フィルタ処理系列におけるフィルタ処理の順に、フィルタ処理が終了するまで繰り返し実行することを特徴とする請求項４又は５に記載のレコード処理方法。
【請求項７】
コンピュータを、請求項１ないし３のうちいずれか１項に記載のデータストリーム管理システムが備える各手段として機能させるためのプログラム。
【請求項８】
請求項７に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多様なデータ型を持つレコードへのフィルタ処理を行うデータストリーム管理システムもしくはデータに応じたイベント処理を行うイベント処理システムに関するものであり、特に、多様なフィルタ処理を簡易かつ効率的に実現するための技術に関するものである。
【背景技術】
【０００２】
まず、多様なフィルタ処理を組み込んだ従来のデータストリーム管理システムにおける処理例について、図１、図２を参照して説明する。図１は、当該データストリーム管理システムにおける処理の流れを示すフローチャートであり、図２は、入力されたレコードが、複数のフィルタ処理（フィルタ処理系列）における各フィルタ処理により、どのように変化するかを示した図である。
【０００３】
図１に示すように、このデータストリーム管理システムでは、あるレコードが入力され（ステップ１）、フィルタ処理系列が終了するまで、レコードに対する各フィルタ処理が実行され（ステップ２、３）、フィルタ処理系列による処理が施されたレコードが出力される（ステップ４）。
【０００４】
より具体的な処理例を図２を参照して説明する。なお、図２において、右側の部分がフィルタ処理やレコードの内容を示しており、左側の部分は、右側に記載された対応する部分が何であるかを記述したものである。例えば、右側の"(in11, in12, in13)→(out11, out12)"は左側で"フィルタ処理１"であることが示されている。以下、本明細書で説明する同種の図に関して同様である。
【０００５】
図２に示す例では、フィルタ処理系列として、図２に示すとおりのフィルタ処理１、フィルタ処理２、フィルタ処理３を有する系列を用いる。
【０００６】
図２に示すように、データストリーム管理システムに対して入力レコードとして(Ca, Cb, Cc)が入力されたとする。すると、フィルタ処理１では入力レコードとして(Ca, Cb, Cc)を受け取り、出力レコードとして(Cd, Ce)を返す。これをカレントレコード１と呼ぶ。当該カレントレコード１が次のフィルタ処理２の入力レコードとなる。
【０００７】
フィルタ処理２では入力レコードとして(Cd, Ce)を受け取り、出力レコードとして(Cf, Cg, Ch)を返す。これをカレントレコード２と呼ぶ。当該カレントレコード２が次のフィルタ処理３の入力レコードとなる。
【０００８】
フィルタ処理３では入力レコードとして(Cf, Cg, Ch)を受け取り、出力レコードとして(Ci, Cj, Ck)を返す。これをカレントレコード３と呼ぶ。フィルタ処理３の終了により処理系列が完了したので、カレントレコード３がそのままデータストリーム管理システムの出力レコードとなる。
【０００９】
上述したフィルタ処理の方式は、非特許文献１に記載されたフィルタ・オペレーションの作成時に前提とされている方式である。また、この方式は、カレントレコード空間を更新型で管理する場合の例である。
【００１０】
上記の方式は、処理間の接続に無駄がなく効率的であるという利点を有する。しかしながら、N番目のフィルタ処理の出力レコードのスキーマ（データ型）と、N＋１番目のフィルタ処理の入力レコードのスキーマが一致しなければならないという欠点がある。つまり、フィルタ処理系列における各フィルタ処理が全体の処理フローにおけるスキーマを勘案して設計されていなければならず、設計が難しく、ある特定の目的専用のものとなってしまうという問題がある。
【００１１】
上記の方式では、例えば、最終的なレコードにCaを残そうとした場合に、各フィルタ処理の出力レコード中にCaを含めるようにフィルタ処理１〜フィルタ処理３を修正する必要がある。この修正に係る処理は、各フィルタ処理にとっては本質的でないロジックであり、本来は分離されることが望ましいものである。
【００１２】
次に、カレントレコード空間を更新型で管理する上記の方式の欠点を解消した例を図３、図４を参照して説明する。次に説明する方式は、カレントレコード空間を追加型で管理する方式の例である。
【００１３】
図３は、本例でのデータストリーム管理システムにおける処理の流れを示すフローチャートであり、図４は、本例において、入力されたレコードが、複数のフィルタ処理（フィルタ処理系列）における各フィルタ処理により、どのように変化するかを示している図である。
【００１４】
本例におけるフィルタの処理系列は、図２に示したものと同じであり、フィルタ処理１、フィルタ処理２、フィルタ処理３を有する。また、各フィルタ処理に対する入力レコードと出力レコードも図２に示したものと同じである。
【００１５】
図３に示すように、あるレコードが入力されると（ステップ１１）、フィルタ処理系列が終了するまで、レコードに対する各フィルタ処理が実行される（ステップ１１、１４）。ただし、本方式では、フィルタ処理後のカレントレコードを、当該フィルタ処理の結果レコードだけとするのではなく、当該フィルタ処理への入力レコードに対して当該フィルタ処理の処理結果レコードを追加することにより得られたレコードをカレントレコードとしている（ステップ１５の処理）。また、カレントレコードから、次のフィルタ処理への入力レコードを構成するため入力カラム選択処理を行っている（ステップ１３の処理）。更に、全てのフィルタ処理が終了した後に、出力カラムを選択する処理が行われ（ステップ１６）、選択されたカラムの要素からなるレコードが出力される（ステップ１７）。
【００１６】
より具体的な処理例を図４を参照して説明する。図４に示すように、データストリーム管理システムに対して入力レコードとして(Ca, Cb, Cc)が入力されたとする。すると、フィルタ処理１では、(Ca, Cb, Cc)が入力レコードとして入力され、出力レコードとして(Cd, Ce)を返す。そして、カレントレコードへの追加処理１が行われ、カレントレコード１として(Ca, Cb, Cc, Cd, Ce)が得られる。
【００１７】
続いて、フィルタ処理２の直前で、入力カラム選択処理２が行われ、それによりカレントレコード１から、フィルタ処理２への入力レコードとして(Cd, Ce)が選択され、フィルタ処理２では、当該入力レコードに対してフィルタ処理が行われ、(Cf, Cg, Ch)が返される。そして、カレントレコードへの追加処理２が行われ、カレントレコード２として(Ca, Cb, Cc, Cd, Ce, Cf, Cg, Ch)が得られる。
【００１８】
続いて、フィルタ処理３の直前で、入力カラム選択処理３が行われ、それによりカレントレコード２から、フィルタ処理３への入力レコードとして(Cf, Cg, Ch)が選択され、フィルタ処理３では、当該入力レコードに対してフィルタ処理が行われ、(Ci, Cj, Ck)が返される。そして、カレントレコードへの追加処理３が行われ、カレントレコード３として(Ca, Cb, Cc, Cd, Ce, Cf, Cg, Ch, Ci, Cj, Ck)が得られる。
【００１９】
最後に、出力カラムを選択する処理において、カレントレコードから(Ca,Ci, Cj, Ck)が選択され、データストリーム管理システムは、(Ca,Ci, Cj, Ck)を出力する。
【００２０】
上述したカレントレコード空間を追加型で管理する方式では、Caなど、最後のフィルタ処理の出力レコード以外の中間データを参照できるという利点がある。
【００２１】
しかしながら、本方式では、カレントレコードの管理領域（メモリ領域）が増加することによるリソース（メモリ）不足が発生しやすいという欠点がある。特に、フィルタ処理系列が長い場合、及び、データとして画像や映像などのメディアデータが含まれている場合に、それを格納するための領域が増大しやすく、システムのリソースを圧迫してしまう。
【００２２】
また、本方式では、フィルタ処理の都度データが増加するが、それらのいずれが後に参照されるかを固定できないため、全てのデータに名前を付けなければならず、名前管理の複雑化（名前を付与する際の負担、値を参照する際に名前を選択する負担）が発生するという問題もある。
【非特許文献１】「追記・参照型データ管理システムの設計と評価」、赤間  他、情報処理学会論文誌Vol.49 No.2, ２００８年２月, pp749-764
【発明の開示】
【発明が解決しようとする課題】
【００２３】
上述したように、従来技術に係る方式では、各フィルタ処理が全体の処理フローにおけるスキーマを勘案して設計されていなければならず、設計が難しく、かつ、専用のものとなってしまう、すなわち、汎用的なフィルタ処理を予め用意することが困難であるという問題があった。
【００２４】
また、カレントレコードの管理領域が増加することによるリソース（メモリ）不足が発生しやすいという問題もあった。特に、フィルタ処理系列が長い場合、及び、データとして画像や映像などのメディアデータが含まれている場合に、それらを格納するための領域が増大しやすく、システムのリソースを圧迫してしまうという問題があった。
【００２５】
更に、従来技術の一方式では、フィルタ処理の都度データが増加するが、それらのいずれが後に参照されるかを固定できないため、全てのデータに名前を付けなければならず、名前管理の複雑化（名前を付与する際の負担、値を参照する際に名前を選択する負担）が発生するという問題もあった。
【００２６】
本発明は上記の点に鑑みてなされたものであり、上記の問題を解決し、多様なデータ型を持つレコードに対して、多様なフィルタ処理を簡易かつ効率的に実現する技術を提供することを目的とする。
【課題を解決するための手段】
【００２７】
上記の課題を解決するために、本発明は、データストリームを構成するデータとして入力されるレコードに対し、所定のフィルタ処理系列における各々のフィルタ処理を順に実行するデータストリーム管理システムであって、カレントレコードを格納するカレントレコード格納手段と、前記カレントレコード格納手段から前記カレントレコードを読み出し、前記カレントレコードを構成する複数の要素のうちの全部又は一部の要素からなる局所入力レコードに対して前記フィルタ処理を実行するフィルタ処理実行手段と、前記フィルタ処理実行手段により得られた前記フィルタ処理の処理結果レコードを構成する要素と、前記カレントレコードを構成する要素とから、予め定めたカラムにある要素を抽出し、抽出された要素を予め定めた順序に並べることにより新たなカレントレコード作成し、当該新たなカレントレコードを、前記カレントレコードに代えて前記カレントレコード格納手段に格納するカレントレコード構成手段と、を有することを特徴とするデータストリーム管理システムとして構成される。
【００２８】
前記データストリーム管理システムにおける前記フィルタ処理実行手段は、前記カレントレコード格納手段から前記カレントレコードを読み出し、前記フィルタ処理に適合した入力レコードになるように、前記カレントレコードから、予め定めたカラムに存在する要素を抽出し、抽出された要素を予め定めた順序に並べることにより前記局所入力レコードを作成する局所入力レコード構成手段と、前記フィルタ処理を実行するためのフィルタ処理手段と、を有することとしてもよい。
【００２９】
また、前記データストリーム管理システムは、前記フィルタ処理実行手段、及び前記カレントレコード構成手段による処理を、前記フィルタ処理系列におけるフィルタ処理の順に、フィルタ処理が終了するまで繰り返し実行するフィルタ処理実行制御手段を有することとしてもよい。
【発明の効果】
【００３０】
本発明によれば、カレントレコードにおいて、その後に必要なデータのみが管理可能となり、データ記憶域及び名前空間の管理負荷を削減することが可能となる。つまり、フィルタ処理系列が長い場合や、データとして画像データや映像データなどのメディアデータが含まれる場合に、その領域を不必要に増大させることなく処理を行うことが可能となる。また、管理対象が必要最低限となるため、名前空間の管理負荷が削減される。
【００３１】
また、本発明によれば、汎用的なフィルタ処理を予め用意しておいて後で組み合わせることが可能となる。つまり、各フィルタ処理の入力を、その直前のカレントスキーマと独立にすることが可能になり、かつ、各フィルタ処理の出力を、その直後のカレントスキーマとも独立にすることが可能になる。そして、各フィルタ処理の入出力とカレントスキーマの関係を柔軟に調整することが可能になる。これらから、汎用的なフィルタ処理を多様なスキーマの処理に対して適用することが可能になる。
【００３２】
すなわち、本発明によれば、多値を入力し、多値を出力するフィルタ処理系列において、カレントレコード構成手段により処理によって、カレントレコードとして、真に必要な分だけのデータを選択して持つことができ、データ記憶領域の効率向上、及び、名前空間の混乱防止という効果を奏する。
【００３３】
また、カレントレコード構成手段、及び、局所入力レコード構成手段の処理によって、フィルタ処理の期待する（フィルタ処理に適合した）レコードのスキーマと、カレントレコードのスキーマが異なってもよくなり、フィルタ処理をカレントレコードのスキーマと独立に事前に用意、つまり、汎用的に用意しておくことが可能になる。
【発明を実施するための最良の形態】
【００３４】
以下、図面を参照して本発明の実施の形態について説明するが、まず、本実施の形態について説明する前に、本明細書において用いられている用語についてここで整理して説明する。
【００３５】
（用語の説明）
レコード：一般的な言語（C言語やSQL言語）におけるレコードと同等の意味をもつものであり、複数の値から構成されるデータ型を有する。また、レコードは、１つの値から構成されてもよい。本実施の形態におけるデータストリーム管理システムの入力データは、一般には連続するレコードとなる。
【００３６】
スキーマ：レコードのデータ型と同等のものである。本明細書では、データベースの用語に合わせて、レコードのデータ型をスキーマと呼ぶ。なお、データ型に関し、テキストに特化したシステムではデータ型を１種類に固定する場合もあるが、マルチメディアデータを扱う場合には多様なデータ型を利用できることが必要となる。
【００３７】
フィルタ処理：レコードに対して実行される各種処理の総称であり、フィルタ処理部に入力されたレコードに対して行われる処理である。フィルタ処理には、データを条件によって選別する処理だけでなく、データの統合、構造化、複製等の多様な処理がある。なお、本実施の形態におけるフィルタ処理部への入力レコード及びフィルタ処理からの出力レコードはそれぞれ多値であり、入力レコードと出力レコードのスキーマは異なっても構わない。
【００３８】
フィルタ処理系列：複数のフィルタ処理の系列であり、その系列におけるフィルタ処理の順序に従い、一のレコードが逐次処理される。なお、フィルタ処理系列には、条件分岐や繰り返しなどの系列制御構造が含まれていてもよい。
【００３９】
カレントレコード：データストリーム管理システムが現在のレコード（一般には操作の対象となっているレコード）として格納・管理しているレコードである。カレントレコードは、外部のシステムや情報源からデータストリーム管理システムに入力されたレコードそのものである場合や、フィルタ処結果を反映したレコードである場合もある。カレントレコードにフィルタ処理が適用される度にその内容が変化する。
【００４０】
カレントスキーマ：カレントレコードのスキーマのことである。
【００４１】
局所入力レコード：フィルタ処理の入力となるレコードである。当該レコードは、直後のフィルタ処理にのみ有効であり、次のフィルタ処理の前に消滅するので、"局所"入力レコードと呼ぶ。カレントレコードがそのまま局所入力レコードとなる場合もある。
【００４２】
局所出力レコード：直前のフィルタ処理の結果の出力レコードである。当該レコードは、次のフィルタ処理の前に消滅するので"局所"出力レコードと呼ぶ。局所出力レコードがそのままカレントレコードとなる場合もある。
【００４３】
多値：多値とは、１つだけの値に限らないことをいう。なお、一般的なプログラミング言語の関数は入力としては多値（複数のパラメータ）を許容するが、出力としては多値は許容しない。
【００４４】
＜第１の実施の形態＞
（システム構成）
図５は、本発明の第１の実施の形態に係るデータストリーム管理システム１００の機能構成図である。図５に示すように、本実施の形態に係るデータストリーム管理システム１００は、ストリーム受付部１０１、ストリームバッファ部１０２、カレントレコード管理部１０３、フィルタ処理実行制御部１０４、結果出力部１０５、及びフィルタ処理部１〜Pを有する。  
ストリーム受付部１０１は、例えば通信ネットワークを介してストリーム（連続するレコード）を受信し、受信したストリームのデータをストリームバッファ部１０２に格納するとともに、フィルタ処理実行制御部１０４からの指示を受けて、ストリームバッファ部１０２に格納されたストリームデータから順次各レコードを読み出して、フィルタ処理実行制御部１０４に渡す機能部である。
【００４５】
ストリームバッファ部１０２は、ストリームのデータを格納する機能部であり、例えば、メモリ等の記憶装置により実現される。カレントレコード管理部１０３は、カレントレコードを格納する機能部であり、例えば、メモリ等の記憶装置により実現される。
【００４６】
フィルタ処理実行制御部１０４は、処理の目的とするフィルタ処理系列における各フィルタ処理の実行制御を行う機能部であり、各フィルタ処理について、カレントレコードに対して局所入力レコード構成処理を施して局所入力レコードを生成し、該当のフィルタ処理部に局所入力レコードを入力することにより当該フィルタ処理部にフィルタ処理を行わせ、フィルタ処理部からの出力に対してカレントレコード構成処理を施してカレントレコードを生成する等の処理を行う機能部である。すなわち、フィルタ処理実行制御部１０４は、局所入力レコード構成手段、及びカレントレコード構成手段を備えている。
【００４７】
また、局所入力レコード構成手段とフィルタ処理部をまとめてフィルタ処理実行手段と呼んでもよい。更に、また、フィルタ処理実行制御部１０４は、フィルタ処理実行手段、及びカレントレコード構成手段による処理を、フィルタ処理系列におけるフィルタ処理の順に、フィルタ処理が終了するまで繰り返し実行するフィルタ処理実行制御手段を有している。
【００４８】
なお、局所入力レコード構成処理及びカレントレコード構成処理の詳細については後述する。
【００４９】
フィルタ処理部１〜Pは、それぞれ局所入力レコードに対してフィルタ処理を実行し、結果をフィルタ処理実行制御部１０４に対して出力する機能部である。結果出力部１０５は、フィルタ処理実行制御部１０４から、フィルタ処理系列に含まれる全てのフィルタ処理が実行された後のカレントレコードを受け取り、例えば通信ネットワークを介して外部に出力する機能部である。
【００５０】
上記各機能部を備えたデータストリーム管理システム１００は、例えばコンピュータに、各機能部の処理に対応するプログラムを実行させることにより実現できるものである。当該プログラムは、メモリやCD-ROM等の記録媒体に格納しておき、当該記録媒体からコンピュータにインストールして実行してもよいし、ネットワーク上のサーバ等からコンピュータがダウンロードして実行することとしてもよい。
【００５１】
（システムの動作）
次に、図６〜図９を参照して、本実施の形態におけるデータストリーム管理システム１００の基本的な動作について説明する。
【００５２】
まず、図６を参照して全体の処理の流れを説明する。なお、図６は、データストリーム管理システム１００に連続的に入力されるレコードのうちのある１つのレコードに関する処理を示している。実際には、図６に示す処理が、各入力レコードに対して連続的に行われることになる。また、図６の処理の前提として、処理対象のカレントレコード（処理の最初であれば入力されたままのレコード）がカレントレコード管理部１０３に格納されているものとする。また、図７は、レコードの具体例を示して図６の処理内容を分かりやすく示す図である。以下の図６の処理の説明の中で、図７の中のレコードの内容等を適宜示して説明する。
【００５３】
図６に示すように、フィルタ処理実行制御部１０４は、フィルタ処理系列の中の全てのフィルタ処理が終了したかどうかをチェックする（ステップ１０１）。
【００５４】
フィルタ処理系列の中の全てのフィルタ処理が終了していなければ、前回の処理対象となったフィルタ処理の次のフィルタ処理（フィルタ処理fNとする)に関する処理を行うことになる。また、この時点でのカレントレコードをカレントレコードNとする。
【００５５】
図６のステップ１０２において、フィルタ処理実行制御部１０４は、カレントレコード管理部１０３からカレントレコードNを取得し、カレントレコードNに対して局所入力レコードN構成処理を行う（ステップ１０３）。つまり、カレントレコードNから、フィルタ処理fNを実行するフィルタ処理部に対する入力レコードとなる局所入力レコードNを作成する処理を行う。図７の例では、カレントレコードN（Ca1, Ca2, Ca3）から、局所入力レコードN（Ca2, Ca3）を作成している。
【００５６】
続いて、フィルタ処理実行制御部１０４は、局所入力レコードNをフィルタ処理fNを実行するフィルタ処理部に入力し、当該フィルタ処理部は、局所入力レコードNに対してフィルタ処理fNを実行し、フィルタ処理fNの結果である局所出力レコードNをフィルタ処理実行制御部１０４に出力する（図６のステップ１０４）。図７の例では、（Ca2, Ca3）に対してフィルタ処理fNが施されて局所出力レコードN（Cb1, Cb2）が得られている。
【００５７】
続いて、フィルタ処理実行制御部１０４は、局所出力レコードNに対してカレントレコードN+１構成処理を行う（図６のステップ１０５）。つまり、局所出力レコードN等から、カレントレコードNの次のカレントレコードであるカレントレコードN+１を作成し、作成したカレントレコードN+１をカレントレコード管理部１０３に格納するとともに、直前のカレントレコードNを破棄する処理を行う。図７の例では、カレントレコードN（Ca1, Ca2, Ca3）と、局所出力レコードN（Cb1, Cb2）とから、カレントレコードN+1（Cb1,Ca3,Cb2,Ca1）が得られている。
【００５８】
その後、N+１を新たなNとして、図６に示すステップ１０１からの処理が再び実行される。
【００５９】
ステップ１０１において、フィルタ処理系列の中の全てのフィルタ処理が終了していた場合、フィルタ処理実行制御部１０４は、カレントレコード管理部１０３に格納されているカレントレコードNをフィルタ処理系列の処理結果として結果出力部１０５に渡し、結果出力部１０５が当該レコードを出力する（ステップ１０６）。
【００６０】
次に、図８を参照して、カレントレコードN+１構成処理について説明する。カレントレコードN+１構成処理において、フィルタ処理実行制御部１０４は、フィルタ処理fNの出力結果レコードである局所出力レコードNと、直前のフィルタ処理後のカレントレコードであるカレントレコードNとから、カレントレコードN+１におけるカラムの集合として予め定めた部分的なカラム集合を選択する（ステップ２０１）。なお、カラムとはレコードの中の要素の場所を示す情報であるが、その場所における要素の意味でも使用する場合がある。続いて、フィルタ処理実行制御部１０４は、選択したカラムの集合を予め定めた順序に並べてカレントレコード候補を作成する（ステップ２０２）。そして、フィルタ処理実行制御部１０４は、カレントレコード管理部１０３からカレントレコードNを破棄し、ステップ２０２において作成したカレントレコード候補をカレントレコードN＋１としてカレントレコード管理部１０３に格納する（ステップ２０３）。
【００６１】
続いて、図９を参照して、局所入力レコードN構成処理について説明する。局所入力レコードN構成処理において、フィルタ処理実行制御部１０４は、カレントレコードNから、フィルタ処理fNに適合するものとして予め定めた部分的なカラムの集合を選択する（ステップ３０１）。そして、フィルタ処理実行制御部１０４は、当該カラムの集合を、フィルタ処理fNに適合する予め定めた順序に並べることにより局所入力レコードNを構成する（ステップ３０２）。
【００６２】
次に、図１０を参照して、より具体的な例に基づき本実施の形態に係るデータストリーム管理システム１００の動作を説明する。
【００６３】
本例におけるフィルタの処理系列は、図２に示したものと同じであり、フィルタ処理１、フィルタ処理２、フィルタ処理３を有する。また、各フィルタ処理に対する入力レコードと出力レコードも図２に示したものと同じである。また、以下の説明では、フィルタ処理１、フィルタ処理２、フィルタ処理３をそれぞれフィルタ処理部１、フィルタ処理部２、フィルタ処理部３が実行するものとする。
【００６４】
図１０に示すように、データストリーム管理システム１００に対して入力レコードとして(Ca, Cb, Cc)が入力され、(Ca, Cb, Cc)がカレントレコード１としてカレントレコード管理部１０３に格納される。次に、局所入力レコード１構成処理が行われるが、ここではカレントレコード１そのものが局所入力レコード１になるため、局所入力レコード１構成処理としては特別な処理は行われない。
【００６５】
続いて、フィルタ処理実行制御部１０４は、局所入力レコード１(Ca, Cb, Cc)をフィルタ処理部１に入力し、フィルタ処理部１が局所入力レコード１(Ca, Cb, Cc)に対してフィルタ処理１を実行して局所出力レコード１（Cd, Ce）をフィルタ処理実行制御部１０４に出力する。そして、フィルタ処理実行制御部１０４は、カレントレコード２構成処理を行うことにより、カレントレコード１(Ca, Cb, Cc)と局所出力レコード１（Cd, Ce）とから、カレントレコード２(Ca, Cd, Ce)を取得し、それをカレントレコード管理部１０４に格納するとともに、カレントレコード１(Ca, Cb, Cc)を破棄する。
【００６６】
次に、フィルタ処理実行制御部１０４は、カレントレコード２(Ca, Cd, Ce)に対して局所入力レコード２構成処理を実行することにより局所入力レコード２（Cd, Ce）を取得し、局所入力レコード２（Cd, Ce）をフィルタ処理部２に入力する。フィルタ処理部２は局所入力レコード２（Cd, Ce）に対してフィルタ処理２を実行して局所出力レコード２(Cf, Cg, Ch)をフィルタ処理実行制御部１０４に出力する。そして、フィルタ処理実行制御部１０４は、カレントレコード３構成処理を行うことにより、カレントレコード２(Ca, Cd, Ce)と局所出力レコード２(Cf, Cg, Ch)とから、カレントレコード３(Ca, Cf, Cg, Ch)を取得し、それをカレントレコード管理部１０３に格納するとともに、カレントレコード２(Ca, Cd, Ce)を破棄する。
【００６７】
次に、フィルタ処理実行制御部１０４は、カレントレコード３(Ca, Cf, Cg, Ch)に対して局所入力レコード３構成処理を実行することにより局所入力レコード３（Cf, Cg, Ch)を取得し、局所入力レコード３（Cf, Cg, Ch)をフィルタ処理部３に入力する。フィルタ処理部３は局所入力レコード３（Cf, Cg, Ch)に対してフィルタ処理３を実行して局所出力レコード３(Ci, Cj, Ck)をフィルタ処理実行制御部１０４に出力する。そして、フィルタ処理実行制御部１０４は、カレントレコード４構成処理を行うことにより、カレントレコード３(Ca, Cf, Cg, Ch)と局所出力レコード３(Ci, Cj, Ck)とから、カレントレコード４(Ca,Ci, Cj, Ck)を取得し、それをカレントレコード管理部１０３に格納するとともに、カレントレコード３(Ca, Cf, Cg, Ch)を破棄する。
【００６８】
本例では、以上で全てのフィルタ処理が終了するので、カレントレコード４(Ca,Ci, Cj, Ck)が、フィルタ処理系列による処理結果として結果出力部１０５から出力される。
【００６９】
＜第２の実施の形態＞
次に、フィルタ処理系列としてより具体的な処理の系列を用いた形態を第２の実施の形態として説明する。本実施の形態において、データストリーム管理システム１００の機能構成や、基本的な処理の流れは第１の実施の形態で説明したものと同様である。
【００７０】
本実施の形態では、フィルタ処理系列で用いるフィルタ処理として、以下に示すフィルタ処理を用いる。下記のフィルタ処理の記述において、フィルタ処理の名称の右側にそのフィルタ処理の説明を記載し、当該説明の下に入出力を示している。各入出力については入出力データの名称、型（形式）の順に記載している。例えば、最初のフィルタ処理であるppm2jpgにおいて、InImgが入力データの名称であり、ppmがその型を示す。
【００７１】
ppm2jpg：PPM形式の画像データをJPEG形式の画像データに変換する。
【００７２】
入力：InImg ppm、  出力：OutImg jpg
jpg2ppm：JPEG形式の画像データをPPM形式の画像データに変換する。
【００７３】
入力：InImg jpg、  出力：OutImg ppm
findFace：PGM形式の入力画像内にある最大の顔領域を検出してその矩形領域情報をX0, X1, Y0, Y1に返却する。なお、X0, X1はそれぞれX座標値であり、Y0, Y1はそれぞれY座標値である。
【００７４】
入力：InImg pgm、  出力：X0 int, X1 int, Y0 int, Y1 int
resize：PPM形式の入力画像データの大きさを縦H横Wに変更する。
【００７５】
入力：InImg ppm、フィルタ引数：H int, W int,  出力：OutImg ppm
rgb2hsi：PPM形式の入力画像データをHSV空間の各グレイスケール画像データ(PGM形式）に変換する。
【００７６】
入力：InImg ppm、出力：HueImg pgm, SatImg pgm, IntImg pgm
drawCircle：PPM形式の画像データに矩形(X0, Y0, X1, Y1)に内接する楕円を描画する。
【００７７】
入力：InImg ppm, X0 int, Y0 int, X1 int, Y1 int、出力：OutImg ppm
writeText：PPM形式の画像データにSJISで与えられたテキスト文字列Tを描画する。
【００７８】
入力：InImg ppm, T text、出力：OutImg ppm
toSJIS  ：入力文字列をSJIS形式に変換する。
【００７９】
入力：InT text、出力：OutT text
本実施の形態のデータストリーム管理システム１００における各フィルタ処理部は、上記のフィルタ処理に対応する機能を有し、フィルタ処理実行制御部１０４は、各フィルタ処理に適した局所入力レコード構成処理及びカレントレコード構成処理を行う機能を有する。
【００８０】
本実施の形態では、下記のスキーマのデータがデータストリーム管理システム１００への入力として与えられ続けるものとする。
【００８１】
IMG jpg：カメラからの映像データであり、MotionJPGの形式である。
【００８２】
T text：  カメラからのテキスト情報であり、例えば外気温を示すテキスト情報である。
【００８３】
そして、本実施の形態では、データストリーム管理システム１００において以下に示す一連のフィルタ処理からなるフィルタ処理系列を実行するものとする。
【００８４】
jpg2ppm();
resize(H=400, W=640);
rgb2hsi();
findface();
drawCircle();
toSJIS();
writeText();
ppm2jpg();
図１１に、本実施の形態に係るデータストリーム管理システム１００が実行する処理を表す記述例を示す。この記述例では、カレントレコードN+1構成処理をMRGandSELという機能名とし、局所入力レコードN構成処理をSELforLOCALという機能名とし、直前のフィルタ処理の結果（局所出力レコードN）をRESという名前空間で一時的に管理し、結果を参照し、asにより新しい名前をつけている。各フィルタ処理に係るMRGandSELとSELforLOCALについては、その処理ロジックがプログラム（スクリプト）によりフィルタ処理実行制御部１０４に組み込まれている。
【００８５】
図１１に示す記述に係る基本的な処理の流れは、第１の実施の形態の図６〜図９で示したものと同様である。
【００８６】
例えば、２行目のフィルタ処理resizeに係る処理として、まず、フィルタ処理実行制御部１０４は、１行目のフィルタ処理後のカレントレコード（カレントレコード２とする）をカレントレコード管理部１０３から取得する。このカレントレコード２は、第１行目に記載されたカレントレコード２構成処理MRGandSELにより生成されたものであり、具体的には(T, IMGppm)である。続いて、フィルタ処理実行制御部１０４は、局所入力レコード２構成処理SELforLOCALとして、(T, IMGppm)から IMGppmを抽出し、フィルタ処理resizeを行うフィルタ処理部にIMGppmを入力して、フィルタ処理resizeを実行させ、その処理結果であるOutImgをIMGszとして、カレントレコード３構成処理MRGandSELを行って、カレントレコード３(T, IMGsz)を取得する。他のフィルタ処理に関しても処理内容の違いを除いて同様の処理が行われる。
【００８７】
このようなフィルタ処理系列を実行しようとする場合、カレントレコード空間を更新型で管理する従来方式ではスキーマが合わずそもそも実行することができず、カレントレコード空間を追加型で管理する従来方式では大量の無駄なppm画像が発生してしまう。
【００８８】
一方、本実施の形態で示した方式によれば、入出力スキーマの整合性がない既存のフィルタ処理系列に対し、カレントレコードN+1構成処理（MRGandSEL）及び局所入力レコードN構成処理（SELforLOCAL）を組み合わせたことによって、既存のフィルタ処理系列を一連のフィルタ処理系列として構成することが可能となる。更に、本実施の形態に係る方式によれば、カレントストリームとして後続の処理に必要な分だけのデータ保持を行えばすみ、リソースの無駄がなくなる。
【００８９】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【図面の簡単な説明】
【００９０】
【図１】従来のデータストリーム管理システムにおける処理の流れを示すフローチャートである。
【図２】従来のデータストリーム管理システムにおいて、フィルタ処理に伴うレコードの変化を示す図である。
【図３】従来のデータストリーム管理システムにおける処理の流れを示すフローチャートである。
【図４】従来のデータストリーム管理システムにおいて、フィルタ処理に伴うレコードの変化を示す図である。
【図５】本発明の第１の実施の形態に係るデータストリーム管理システム１００の機能構成図である。
【図６】第１の実施の形態に係るデータストリーム管理システム１００の動作を示すフローチャートである。
【図７】図６の処理内容を具体的に説明するための図である。
【図８】カレントレコードN+１構成処理を示すフローチャートである。
【図９】局所入力レコードN構成処理を示すフローチャートである。
【図１０】第１の実施の形態に係るデータストリーム管理システム１００の動作を具体例に基づき説明するための図である。
【図１１】第２の実施の形態に係るデータストリーム管理システム１００が実行する処理を表す記述例である。
【符号の説明】
【００９１】
１００  データストリーム管理システム
１０１  ストリーム受付部
１０２  ストリームバッファ部
１０３  カレントレコード管理部
１０４  フィルタ処理実行制御部
１０５  結果出力部
１〜P  フィルタ処理部
【図１】
2010140252.tif 000003
【図２】
2010140252.tif 000004
【図３】
2010140252.tif 000005
【図４】
2010140252.tif 000006
【図５】
2010140252.tif 000007
【図６】
2010140252.tif 000008
【図７】
2010140252.tif 000009
【図８】
2010140252.tif 000010
【図９】
2010140252.tif 000011
【図１０】
2010140252.tif 000012
【図１１】
2010140252.tif 000013