(57)【要約】【課題】大量のバイナリー化された構造化文書のデータを高速に処理する。【解決手段】実施形態の文書処理装置は、クエリデータを分解したクエリ要素に対して、入力された構造化文書が条件を満たすかを判定するクエリ要素判定部を備える。クエリ要素判定部は、条件が肯定出力、又は否定出力で確定すると終了条件決定部に出力し、終了条件決定部は、クエリデータから生成され、各クエリ要素の条件を組み合わせた論理式で表現される終了条件を満たした場合に、条件を満たした旨の出力を行う。【選択図】図１
2014059744.tif 000002
【特許請求の範囲】
【請求項１】
構造化文書を定義する文法から生成される状態機械を記憶する状態機械記憶部と、
処理中のバイナリー化された構造化文書を記憶する文書記憶部と、
前記構造化文書の入力を受け付け、前記文書記憶部に記憶する文書受付部と、
前記文書記憶部に記憶された前記構造化文書を、前記構造化文書に対応する記憶された前記状態機械にしたがって、状態の遷移を行い、遷移が実行されるごとに、前記文書記憶部に記憶された前記構造化文書の現在状態を更新する状態遷移実行部と、
前記構造化文書に対する条件を指定するクエリデータから条件単位毎に分割されて複数生成されるクエリ要素に対し、入力された前記構造化文書中の注目する値に対応する属性を満たすか否かを判定し、出力値として、条件を満たす旨の肯定出力、条件を満たさない旨の否定出力、及び条件の判定を未だ行うことができない旨を示す待機出力のいずれかを出力し、前記肯定出力、又は前記否定出力が出力されるまでは、前記待機出力を出力するクエリ要素判定部と、
前記クエリ要素判定部が出力する各出力値の条件の組み合わせの論理式により表現され、入力された前記構造化文書が前記クエリデータの条件を満たすか否かを表現する終了条件の出力として、条件を満たす旨の肯定出力、条件を満たさない旨の否定出力、及び条件の判定を未だ行うことができない旨を示す待機出力のいずれかを出力する終了条件決定部と、
前記構造化文書を出力する出力部と、
を備え、
前記状態遷移実行部は、前記終了条件決定部が前記待機出力を出力している間は、前記遷移を実行し、前記終了条件決定部が前記否定出力を出力した場合は、処理中の入力された前記構造化文書を破棄して、前記文書受付部に次の前記構造化文書の入力を指示し、
前記出力部は、前記終了条件決定部が前記肯定出力を出力する場合は、処理中の前記構造化文書を出力する
ことを特徴とする文書処理装置。
【請求項２】
前記構造化文書を定義する文法、及び前記クエリデータの入力を受け付け、前記文法に基づいて前記状態機械を生成するとともに、前記文法、及び前記クエリデータに基づいて前記クエリ要素、及び前記終了条件を生成する文法生成部と
を更に備えることを特徴とする請求項１に記載の文書処理装置。
【請求項３】
前記クエリ要素は、前記状態機械に含まれる特定の状態遷移を有限回遷移したら値を確定させるというクエリ要素、又は指定された要素の値が条件を満たすか否かを判定するクエリ要素のいずれかである
ことを特徴とする請求項１に記載の文書処理装置。
【請求項４】
複数の前記終了条件決定部を備え、
前記終了条件決定部は、それぞれ対応する出力先が設定されており、
前記出力部は、前記終了条件決定部が前記終了条件を満たして肯定出力を出力した場合に、肯定出力を出力した前記終了条件決定部に対応する前記出力先に対して、前記構造化文書を出力する
ことを特徴とする請求項１に記載の文書処理装置。
【請求項５】
コンピュータを、
構造化文書を定義する文法から生成される状態機械を記憶する状態機械記憶部と、
処理中のバイナリー化された構造化文書を記憶する文書記憶部と、
前記構造化文書の入力を受け付け、前記文書記憶部に記憶する文書受付部と、
前記文書記憶部に記憶された前記構造化文書を、前記構造化文書に対応する記憶された前記状態機械にしたがって、状態の遷移を行い、遷移が実行されるごとに、前記文書記憶部に記憶された前記構造化文書の現在状態を更新する状態遷移実行部と、
前記構造化文書に対する条件を指定するクエリデータから条件単位毎に分割されて複数生成されるクエリ要素に対し、入力された前記構造化文書中の注目する値に対応する属性を満たすか否かを判定し、出力値として、条件を満たす旨の肯定出力、条件を満たさない旨の否定出力、及び条件の判定を未だ行うことができない旨を示す待機出力のいずれかを出力し、前記肯定出力、又は前記否定出力が出力されるまでは、前記待機出力を出力するクエリ要素判定部と、
前記クエリ要素判定部が出力する各出力値の条件の組み合わせの論理式により表現され、入力された前記構造化文書が前記クエリデータの条件を満たすか否かを表現する終了条件の出力として、条件を満たす旨の肯定出力、条件を満たさない旨の否定出力、及び条件の判定を未だ行うことができない旨を示す待機出力のいずれかを出力する終了条件決定部と、
前記構造化文書を出力する出力部と、
として機能させるためのプログラムであって、
前記状態遷移実行部は、前記終了条件決定部が前記待機出力を出力している間は、前記遷移を実行し、前記終了条件決定部が前記否定出力を出力した場合は、処理中の入力された前記構造化文書を破棄して、前記文書受付部に次の前記構造化文書の入力を指示し、
前記出力部は、前記終了条件決定部が前記肯定出力を出力する場合は、処理中の前記構造化文書を出力する
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、文書処理装置、及びプログラムに関する。
【背景技術】
【０００２】
従来、ＸＭＬなどの構造化文書においては、文書のデータ量が大きくなる傾向にあるため、高速なデータ処理や大量のＸＭＬ文書を扱う処理には向いていなかった。そこで、効率的、かつ高速なデータ処理のための規格としてＥＸＩ（Ｅｆｆｉｃｉｅｎｔ  ＸＭＬ  Ｉｎｔａｒｃｈａｎｇｅ）が提案されている。ＥＸＩは、ＸＭＬ文書をＸＭＬスキーマにしたがってバイナリー化したＥＸＩストリームへと変換する。バイナリー化されたデータは、データ容量が劇的に低減されることから、効率的なデータの通信や処理に寄与することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１００２３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このＥＸＩストリームを用いたデータ処理の例としては、バイナリー化されて大量に送られてくるＥＸＩストリームから、ある条件に一致するデータのみをフィルタリングして抽出し、必要なデータのみを処理の対象とする場合が考えられる。しかしながら、このような大量のデータ処理を行うために最適化された文書処理の方法についてははこれまで開示されていない。
【０００５】
実施形態の課題は、上記に鑑みてなされたものであって、大量のバイナリー化された構造化文書のデータを高速に処理することのできる文書処理装置を提供することにある。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明の実施形態の文書処理装置は、クエリデータを分解したクエリ要素に対して、入力された構造化文書が条件を満たすかを判定するクエリ要素判定部を備える。クエリ要素判定部は、条件が肯定出力、又は否定出力で確定すると終了条件決定部に出力し、終了条件決定部は、クエリデータから生成され、各クエリ要素の条件を組み合わせた論理式で表現される終了条件を満たした場合に、条件を満たした旨の出力を行う。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施形態の文書処理装置の接続例を示す図。
【図２】図２は、実施形態の文書処理装置の詳細な機能構成を示す図。
【図３】図３は、実施形態のＸＭＬスキーマの例を示す図。
【図４】図４は、実施形態のＥＸＩストリームの例を示す図。
【図５】図５は、実施形態の文書処理の流れを示すフロー図。
【図６】図６は、実施形態の文書処理の別例の流れを示すフロー図。
【発明を実施するための形態】
【０００８】
（第１の実施形態）
図１は、第１の実施形態にかかる文書処理装置の構成を示すブロック図である。本実施系形態においては、ＥＸＩ規格によってバイナリー化されたＸＭＬの構造化文書を処理する構成を示している。そのため、本実施形態では、スキーマとしてＸＭＬスキーマを採用しているが、これはＲＥＬＡＸ  ＮＧなどのほかの構造化文書を定義する文法を用いてもよい。また、構造化文書がＸＭＬでなくＡＳＮ．１などの他の構造化文書であってもよく、状態機械として文法が表現することのできる構造化文書のフォーマットであれば使用することができる。また、文書処理装置への入出力はＥＸＩを採用しているが、他の規格を用いてもよい。
【０００９】
図１に示されるように、本実施形態においては、文書処理装置２００にはＥＸＩストリーム５００が入力されている。また、文書処理装置２００には、ＸＭＬスキーマ３００、及び入力クエリデータ４００に基づいて文法生成部１００により生成された終了条件付き状態機械が入力される。そして、終了条件付き状態機械によってフィルタリングされたＥＸＩストリーム６００を文書処理装置２００は、出力する。図３は、ＸＭＬスキーマの例であり、図４（ａ）はＥＸＩで定義されるイベント列で表記された構造化文書の一例、図４（ｂ）は図４（ａ）をＸＭＬ形式で示した文書の一例である。
【００１０】
図３で例示したＸＭＬスキーマは、ＭｅａｓｕｒｅｍｅｎｔＴｙｐｅ、ＰｏｉｎｔｓＴｙｐｅ、及びＰｏｎｔＴｙｐｅという３種類の要素について定義する文法である。また、入力クエリデータ４００としては、本実施形態では、「/measurement/points/point/typeの値がtemperature  であり、かつ/measurement/points/point/valueの値が４０以上である構造化文書を絞り込む」旨を示すクエリが付与される。
【００１１】
文法生成部１００は、これらのＸＭＬスキーマ３００、及び入力クエリデータ４００から、終了条件付き状態機械を生成し、文書処理装置２００へと入力する。以下、終了条件付き状態機械の生成について、その詳細を説明する。終了条件付き状態機械とは、ＸＭＬスキーマを構成する状態機械に、終了条件を付加したものである。具体的には、ＸＭＬスキーマ３００と対応する状態機械、入力クエリデータから分解された条件判断要素である一つまたは複数のクエリ要素、クエリ要素の組み合わせの論理式によって示すことができる終了条件とを含む。
【００１２】
状態機械は、例えば、型文法表、状態表、遷移表の３つの表からなる文法の表現を示すが、状態機械であれば何であってもよい。ここで、本実施形態においては、状態機械は、プッシュダウンオートマトンであり、複数の有限状態機械を持ち、状態遷移をトリガとして有限状態遷移機械のスタックを構成するものとする。
【００１３】
クエリ要素は、入力クエリデータ４００を分解して得られる、入力されたＥＸＩストリーム５００に含まれる注目すべき値に対応する属性を指定する条件式である。クエリ要素の種類は２つ存在しており、一つは、文法に含まれる特定の状態遷移を有限回（ｎ回）遷移したら値を確定させる、というクエリ要素である。これは、例えばあるタグが存在するか、あるいはしないか、ということを判定するために利用する。タグｅの存在確認は、タグｅが存在することを確定させる状態遷移ＳＥ（ｅ）に対し、ｎ＝１でＴＲＵＥを確定させるクエリ要素ｑ１によって表現することができる。
【００１４】
また、タグｅの非存在確認は、同じクエリ要素にＦＡＬＳＥを確定させる(ｑ１)と同時に、タグｅがその箇所以降登場しえないことが確定する遷移に、ＴＲＵＥを確定させるクエリ要素(ｑ２)を作成し、終了条件をｑ１あるいはｑ２とすればよい。
【００１５】
また、もう一つのクエリ要素の例は、値に対応するクエリ要素である。ある値に対して、数値の大小等値、あるいは文字列の判定関数(例えば、正規表現のマッチング、等値、先頭一致、末尾一致など)による判定を行い、この判定結果によりＴＲＵＥ、またはＦＡＬＳＥを確定させる。
【００１６】
上述の入力クエリデータ４００からは、以下の２つのクエリ要素が得られる。
ＱＥ１：/measurement/points/point/typeの値がtemperatureである
ＱＥ２：/measurement/points/point/valueの値が４０以上である
【００１７】
なお、本実施形態においては、入力クエリデータ４００はＸＰａｔｈのサブセットで記述している。ＸＰａｔｈのうち、ノード名を軸とした省略のないパスに相当する構文規則を入力の要素とし、以後これをパスと呼ぶ。各ノード名はスラッシュで区切られ、例えば/node1/node2/@attribとなる。これは、ＸＭＬにおける、ｎｏｄｅ１要素の下のｎｏｄｅ２要素の下のａｔｔｒｉｂ属性の値を意味する。本実施例における問い合わせの例としては、値が指定したパスにおいて存在するか否かを確認するもの、及び指定した値が、所定の条件を満たすか否かを確認するものと２種類を想定する。値が指定したパスにおいて存在するか否かを確認するものとしては、例えば、/node1/node2/@attribのように記述し、このパスが存在すればＴＲＵＥとなる。また、指定した値が、所定の条件を満たすか否かを確認するものとしては、例えば/node1/node2[@a="test"]のように記述し、node1要素の下のnode2要素で、かつnode2要素のa属性の値が"test"であるものがあるときＴＲＵＥとなる。
【００１８】
したがって、文法生成部１００は、この入力となる入力クエリデータ４００のそれぞれの項を単純にクエリ要素として分解している。また、他のより最適な方法として、例えば値の非存在に対するテスト(値の存在に対するテストの否定形)があった時、これを、その値(タグ)が既に登場し得ない条件、具体的には、ＸＭＬスキーマで規定されている構文上、対象となるタグが出現しておらず、かつ、そのタグよりも後ろに登場するタグが出現する、という条件に書き換えることにより、最適化を行うことができる。
【００１９】
タグの非存在は全てのＸＭＬ文書の構文解釈が終了まで通常であれば判定できないが、スキーマにより規定される構文に書き換えることでより早い段階でクエリ要素の判断を行うことができるようになる。
【００２０】
終了条件は、クエリ要素それぞれの出力を組み合わせ生成された論理式である。入力クエリデータ４００が要求する最終的な出力は、この終了条件によって表現される。例えば、クエリ要素としてｑ１、ｑ２、ｑ３の３つの要素が存在していた場合、終了条件は例えば、（ｑ１∨ｑ２）∧ｑ３のような形式で表現することができる。これは、例えばＸＭＬ文書の入力が顧客プロファイルであるとし、ｑ１が「年齢エレメントの値が２０才以下」で、ｑ２が「職業エレメントの値が学生である」とし、ｑ３を「同居家族エレメントの下に両親エレメントが存在する」とすると、「親と同居している学生または未成年」という条件が表現できる。文法生成部１００は、以上のように生成したクエリ要素、及び終了条件を文書処理装置２００へと入力する。
【００２１】
次に、文書処理装置２００の詳細な構成について図２を用いて説明する。文書処理装置２００は、状態遷移実行部２１０、文書記憶部２２０、状態機械記憶部２３０、割当部２４０、クエリ要素判定部２５０、終了条件決定部２６０、出力部２７０を備えている。本実施形態では、クエリ要素判定部２５０はＮ個あり、終了条件決定部２６０は１個の例である。文書記憶部２２０は、入力されたＥＸＩストリーム５００を受け付けて、ＥＸＩストリーム５００を記憶する。ＥＸＩストリーム５００の入力は１データずつ行われ、状態遷移実行部２１０は、１データが終了条件を満たすと次のデータの入力を受け付ける。
【００２２】
状態機械記憶部２３０には、文法生成部１００によって生成された状態機械が入力されて記憶されている。したがって、状態機械記憶部２３０は、文法生成部１００が生成した状態機械により設定される。なお、状態機械記憶部２３０には、複数の状態機械が記憶されている場合もある。また、状態遷移実行部２１０は、文書記憶部２２０に記憶されたＥＸＩストリーム５００を、ＥＸＩストリーム５００に対応する記憶された状態機械にしたがって、状態の遷移を行い、遷移が実行されるごとに、文書記憶部２２０に記憶されたＥＸＩストリーム５００の現在状態を更新する。対応する状態機械は、ＥＸＩストリーム５００中の宣言したＸＭＬスキーマ３００の対応関係から判断することができる。
【００２３】
また、状態遷移実行部２１０は、遷移を実行するごとに、割当部２４０に遷移の内容を通知する。割当部２４０は、通知を受けた遷移の内容からいずれのクエリ要素判定部２５０に対して情報を通知するかを選択する。クエリ要素判定部２５０は、文法生成部１００によって生成されたクエリ要素が入力され、クエリ要素に従って生成される。具体的には、入力されたクエリ要素の数だけ生成され、例えば上述した例では２個のクエリ要素判定部２５０が生成される。
【００２４】
クエリ要素判定部２５０は、ある入力文書に対してＴＲＵＥ（真）｜ＦＡＬＳＥ（偽）｜ＵＮＫＮＯＷＮ（不定）の３つの値をとりうる。ＴＲＵＥとは、入力されたＥＸＩストリーム５００の注目する値に対応する属性が条件を満たす旨の肯定出力である。ＦＡＬＳＥとは、入力された前記構造化文書中の注目する値に対応する属性が条件を満たさない旨の否定出力である。ＵＮＫＮＯＷＮとは、条件の判定を未だ行うことができない旨を示す待機出力である。
【００２５】
そして、クエリ要素判定部２５０は、出力がＴＲＵＥ、又はＦＡＬＳＥに確定するまではＵＮＫＮＯＷＮを値として出力する。そして、入力されたＥＸＩストリーム５００を構成する要素の列(入力列)の解釈が進むにつれ、ＴＲＵＥ、あるいはＦＡＬＳＥの出力値を確定する。クエリ要素は一度出力値を確定させたら、その後は変化しない。クエリ要素判定部２５０は、ＴＲＵＥ、ＦＡＬＳＥ、及びＵＮＫＮＯＷＮの出力値を終了条件決定部２６０に対して出力する。
【００２６】
終了条件決定部２６０は、クエリ要素判定部２５０が出力する各出力値の条件の組み合わせにより、入力されたＸＭＬストリーム５００が入力クエリデータ４００の条件を満たすか否かを表現し、ＴＲＵＥ、ＦＡＬＳＥ、ＵＮＫＮＯＷＮのいずれかを出力する。終了条件決定部２６０における終了条件も、文法生成部１００によって生成された終了条件によって設定される。本実施形態の例では、ＱＥ１  ａｎｄ  ＱＥ２が終了条件であるため、ＱＥ１と、ＱＥ２からＴＲＵＥが入力された時点で終了条件は満たされることとなる。
【００２７】
以下、詳細な処理の流れについて図５のフローチャートを用いて説明する。まず、状態遷移実行部２１０は、文書記憶部２２０からＸＭＬストリーム５００の現在状態を読み込む（ステップＳ１）。続いて、状態遷移実行部２１０は、状態機械記憶部２３０から、読み込んだＸＭＬストリーム５００と対応する状態機械を取得することで、現在状態から次のイベント（遷移）を発見する（ステップＳ２）。そして、状態遷移実行部２１０は、イベント（遷移）を実行し、遷移した後の現在状態を文書記憶部２２０に書き込む（ステップＳ３）。なお、この動作は通常のスタックを有するプッシュダウンオートマトンと同様であり、「現在状態」は現在の状態機械のＩＤのスタックと、スタック最上位に存在するアクティブな状態機械上の現在状態のＩＤとを有する。
【００２８】
また、状態遷移実行部２１０は、状態遷移を実行すると同時に、遷移後の現在状態と、イベントＩＤと、イベントがＣＨ（ＥＸＩ規格において「値」を意味するイベントタイプ）である場合には、ＣＨに対応する値と、を割当部２４０へと入力する（ステップＳ４）。割当部２４０は、クエリ要素に対応するイベントＩＤ、すなわちクエリ要素の条件の判定に用いられるイベントがどのイベントになるかを、予め文法生成部１００から入力されたクエリ要素と、状態機械とから判別することができる。したがって、割当部２４０は、入力されたイベントＩＤに対応するクエリ要素判定部２５０に対して、現在状態と、イベントＩＤと、対応する値を出力する（ステップＳ５）。このとき、複数のクエリ要素が一つのイベントＩＤに対応する場合は、同時に複数のクエリ要素判定部２５０に出力が行われる。
【００２９】
クエリ要素判定部２５０は、それぞれが内部に状態変数を持ち、入力に対して状態変数を更新し、更新した結果、出力がＴＲＵＥ、又はＦＡＬＳＥに確定したか否かを判定する（ステップＳ６）。状態変数は、例えば、遷移の回数、比較対象となる値、遷移の前条件となるスタックの値などが存在する。
【００３０】
クエリ要素判定部２５０の出力がＵＮＫＮＯＷＮのままであった場合（ステップＳ６：Ｎｏ）、ステップＳ１へと戻り以降の処理を繰り返す。また、クエリ要素判定部２５０の出力がＴＲＵＥ、またはＦＡＬＳＥであった場合（ステップＳ６：Ｙｅｓ）、出力を受けた終了条件決定部２６０は、入力された値により終了条件がＴＲＵＥ、又はＦＡＬＳＥに確定したか否かを判定する（ステップＳ７）。なお、終了条件決定部２６０での判定は、クエリ要素判定部２５０からの出力が変化した際に行ってもよいし、一定のサイクルごとに行ってもよい。
【００３１】
入力された値により終了条件がＴＲＵＥに確定した場合（ステップＳ７：ＴＲＥＵ）、出力部２７０は、ＸＭＬストリーム６００を出力して、処理を終了する（ステップＳ８）。また、入力された値により終了条件がＦＡＬＳＥに確定した場合（ステップＳ７：ＦＡＬＳＥ）、状態遷移実行部２１０は、入力されたＸＭＬストリーム５００を破棄して、処理を終了する（ステップＳ８）。また、入力された値により終了条件がＵＮＫＮＯＷＮのままであった場合（ステップＳ７：ＵＮＫＮＯＷＮ）、ステップＳ１に戻り処理を繰り返す。
【００３２】
また、別の例として図６のフローチャートに従った処理も可能である。図６では、図５と同様の処理については同じステップ番号を付与しており、異なる処理についてのみ説明する。図６に示されるように、終了条件決定部２６０は、全てのクエリ要素判定部２５０からの出力が確定したか否かを判定する（ステップＳ１７）。全ての出力が確定していないと判定された場合（ステップＳ１７：Ｎｏ）、全ての出力が確定するまでステップ１からの処理を繰り返す。一方、全ての出力が確定したと判定された場合（ステップＳ１７：Ｙｅｓ）、終了条件決定部２６０は、出力がＴＲＵＥ、又はＦＡＬＳＥのいずれになったかを判定する（ステップＳ１８）。全てのクエリ要素判定部２５０からの出力が確定していることから、終了条件決定部２６０からの出力は、ＴＲＵＥかＦＡＬＳＥのいずれかとなる。
【００３３】
以上の処理を図４で示したＸＭＬストリーム５００に適用した場合について説明する。ＥＸＩストリームにおいて、状態機械のスタックはＳＥイベントによりプッシュされ、ＥＥイベントによりポップされる。具体的には、図４中のイベントＣＨ（１２３４５）の段階では、状態機械はＳＤ、ＳＥ（ｍｅａｓｕｒｅｍｅｎｔ）、ＳＥ（ＩＤ）の順に積まれる。また、次のＣＨ（ｔｅｍｐｅｒａｔｕｒｅ）の段階では、ＳＥ（ＩＤ）がＥＥ（ＩＤ）によりポップされ、スタックは、ＳＤ、ＳＥ（ｍｅａｓｕｒｅｍｅｎｔ）、ＳＥ（ｐｏｉｎｔｓ）、ＳＥ（ｐｏｉｎｔ）、ＳＥ（ｔｙｐｅ）となる。これは、パス/measurement/points/point/typeに対応し、ＣＨによって指定された値がtemperatureであることから、「ＱＥ１：/measurement/points/point/typeの値がtemperatureであるの条件を満たす」。したがって、この時点でＱＥ１に対応するクエリ要素判定部２５０はＴＲＵＥを終了条件決定部２６０へ出力する。
【００３４】
また、同様にＣＨ（４０．５）の際には、スタックは、ＳＤ、ＳＥ（ｍｅａｓｕｒｅｍｅｎｔ）、ＳＥ（ｐｏｉｎｔｓ）、ＳＥ（ｐｏｉｎｔ）、ＳＥ（ｖａｌｕｅ）となる。これは、パス/measurement/points/point/valueに対応し、ＣＨによって指定された値が４０．５であることから、「ＱＥ２：/measurement/points/point/valueの値が４０以上である」を満たす。したがって、この時点でＱＥ２に対応するクエリ要素判定部２５０はＴＲＵＥを終了条件決定部２６０へ出力する。
【００３５】
この段階で終了条件が成立するので、入力列の以降の部分については状態遷移が実行されずに、終了条件決定部２６０は、出力をＴＲＵＥに決定する。
【００３６】
以上に示した本実施形態の文書処理装置２００にあっては、入力されたクエリデータ４００を条件ごとに分解したクエリ要素判定部２５０によって、並列的にＸＭＬストリーム５００を解析、評価することができ、また条件式自体が単純な構造によって記述されているため解析に要する時間も短くなる。したがって、ＸＭＬストリーム５００がクエリデータ４００を満たすか否かの判定を高速に処理することができるようになり、構造化文書を処理する速度を向上させることができるようになる。
【００３７】
なお、上記の実施形態では、文法生成部１００を文書処理装置２００に含ませない構成を示したが、文法生成部１００の機能を文書処理装置２００内で実現するようにしてもよい。
【００３８】
また、上記実施形態で示した文書処理装置は例えば次のような装置として実現することもできる。例えば、文書処理装置を入力となるＥＸＩストリームを、複数の出力先に振り分ける、コンテンツベースのネットワークスイッチとして利用することもできる。この場合、個々の出力先に対応する終了条件決定部を複数用意し、ＥＸＩストリームに対して同様の処理を行い、成立した終了条件に対応する出力先にＥＸＩストリームを出力するようにしてもよい。終了条件決定部を並列に用意するとき、単純に並列化してもよいし、終了条件決定部に優先度を設けて、ある優先度の終了条件の出力がＴＲＵＥに確定したら、それ以降は判定を停止するようにしてもよい。
【００３９】
また、文書処理装置を、ＥＸＩストリームのうち、入力クエリデータ４００によって指定された条件に対応する部分までは判定を行わずに読み進め、対応する条件にあたる部分のみ詳細な検討を行う、といったプリプロセッサのような用法で用いることもできる。この際、出力部はＥＸＩストリームに加えて、文書処理装置における判定時の現在状態、及び判定したＣＨの位置を出力してもよい。出力を受信したアプリケーションは、ＥＸＩストリームを先頭から解釈することなく、入力クエリデータで指定し、クエリ要素判定部において成立した条件の直後から解釈を継続できる。これによりアプリケーション処理の高速化が可能となる。
【００４０】
以上の各実施形態の文書処理装置は、例えばＣＰＵなどの制御装置と、ＲＯＭ（Read  Only  Memory）やＲＡＭなどの記憶装置と、ＨＤＤ、ＣＤドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００４１】
以上の各実施形態の文書処理装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００４２】
また、以上の各実施形態のプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、以上の各実施形態の文書処理装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００４３】
また、以上の各実施形態のプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００４４】
以上の各実施形態の文書処理装置はで実行されるプログラムは、上述した各部を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体からプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、主記憶装置上に生成されるようになっている。
【００４５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４６】
１００  文法生成部
２００  文書処理装置
２１０  状態遷移実行部
２２０  文書記憶部
２３０  状態機械記憶部
２４０  割当部
２５０  クエリ要素判定部
２６０  終了条件決定部
２７０  出力部
３００  ＸＭＬスキーマ
４００  入力クエリデータ
５００  ＥＸＩストリーム
６００  ＥＸＩストリーム
【図１】
2014059744.tif 000003
【図２】
2014059744.tif 000004
【図３】
2014059744.tif 000005
【図４】
2014059744.tif 000006
【図５】
2014059744.tif 000007
【図６】
2014059744.tif 000008