(57)【要約】【課題】ＸＭＬデータを整形することにより処理時間短縮が可能である、ＸＭＬデータ処理装置、その方法及びそのプログラムを提供する。【解決手段】演算手段と記憶手段を少なくとも備えた計算機を用いて、ＸＭＬデータ処理の処理を行うＸＭＬデータ処理装置が、ＸＭＬデータを解析する。ＸＭＬデータの取り得る構造を記述したＸＭＬフォーマットシートが登録された際に、ＸＭＬフォーマット構成に関するバイナリデータを生成する。生成したバイナリデータを記憶する。ＸＭＬデータ受信の際に、ＸＭＬデータ構成に関するバイナリデータを生成する。受信したＸＭＬデータをどのＸＭＬフォーマットでチェックするか決定するための識別情報を、受信したＸＭＬデータ内より取り出す。取り出した前記識別情報をキーとして前記ＸＭＬフォーマット構成に関するバイナリデータを取り出し、前記ＸＭＬデータ構成に関するバイナリデータと比較する。【選択図】図２
2009163690.tif 000002
【特許請求の範囲】
【請求項１】
演算手段と記憶手段を少なくとも備えた計算機を用いて、ＸＭＬデータの処理を行うＸＭＬデータ処理装置であって、
前記ＸＭＬデータ処理装置が、ＸＭＬデータを解析する手段を備え、
前記ＸＭＬデータを解析する手段が、ＸＭＬデータの取り得る構造を記述したＸＭＬフォーマットシートが登録された際に、ＸＭＬフォーマット構成に関するバイナリデータを生成する第１の生成手段と、
前記第１の生成手段において生成したバイナリデータを記憶する記憶手段と、
前記記録手段において記録したＸＭＬフォーマット構成に関するバイナリデータを用いて、ＸＭＬデータの解析を行う解析手段と、
を備えることを特徴とするＸＭＬデータ処理装置。
【請求項２】
前記ＸＭＬデータを解析する手段が、
ＸＭＬデータ受信の際に、ＸＭＬデータ構成に関するバイナリデータを生成する第２の生成手段と、
受信したＸＭＬデータをどのＸＭＬフォーマットでチェックするか決定するための識別情報を、受信したＸＭＬデータ内より取り出す識別情報取り出し手段と、
取り出した前記識別情報をキーとして前記ＸＭＬフォーマット構成に関するバイナリデータを取り出し、前記ＸＭＬデータ構成に関するバイナリデータと比較する比較手段と、
を更に備えることを特徴とする請求項１に記載のＸＭＬデータ処理装置。
【請求項３】
前記第１の生成手段におけるＸＭＬフォーマット構成に関するバイナリデータの生成は、ＸＭＬフォーマットシートを解析し、階層タグ名毎にハッシュ計算し、階層番号とタグ間の親子関係を表すネクストアドレスを付加した、固定長の一意のデータへと整形することにより行われることを特徴とする請求項１又は２に記載のＸＭＬデータ処理装置。
【請求項４】
前記第２の生成手段におけるＸＭＬデータ構成に関するバイナリデータの生成は、受信したＸＭＬメッセージを解析し、階層タグ名毎にハッシュ計算し、階層番号を付加した、固定長の一意のデータへと整形することにより行われることを特徴とする請求項１乃至３の何れか１項に記載のＸＭＬデータ処理装置。
【請求項５】
演算ステップと記憶ステップを少なくとも行う計算機を用いて、ＸＭＬデータの処理を行うＸＭＬデータ処理方法であって、
前記ＸＭＬデータ処理方法が、ＸＭＬデータを解析するステップを備え、
前記ＸＭＬデータを解析するステップが、ＸＭＬデータの取り得る構造を記述したＸＭＬフォーマットシートが登録された際に、ＸＭＬフォーマット構成に関するバイナリデータを生成する第１の生成ステップと、
前記第１の生成ステップにおいて生成したバイナリデータを記憶する記憶ステップと、
前記記録ステップにおいて記録したＸＭＬフォーマット構成に関するバイナリデータを用いて、ＸＭＬデータの解析を行う解析ステップと、
を備えることを特徴とするＸＭＬデータ処理方法。
【請求項６】
前記ＸＭＬデータを解析するステップが、
ＸＭＬデータ受信の際に、ＸＭＬデータ構成に関するバイナリデータを生成する第２の生成ステップと、
受信したＸＭＬデータをどのＸＭＬフォーマットでチェックするか決定するための識別情報を、受信したＸＭＬデータ内より取り出す識別情報取り出しステップと、
取り出した前記識別情報をキーとして前記ＸＭＬフォーマット構成に関するバイナリデータを取り出し、前記ＸＭＬデータ構成に関するバイナリデータと比較する比較ステップと、
を更に備えることを特徴とする請求項５に記載のＸＭＬデータ処理方法。
【請求項７】
前記第１の生成ステップにおけるＸＭＬフォーマット構成に関するバイナリデータの生成は、ＸＭＬフォーマットシートを解析し、階層タグ名毎にハッシュ計算し、階層番号とタグ間の親子関係を表すネクストアドレスを付加した、固定長の一意のデータへと整形することにより行われることを特徴とする請求項５又は６に記載のＸＭＬデータ処理方法。
【請求項８】
前記第２の生成ステップにおけるＸＭＬデータ構成に関するバイナリデータの生成は、受信したＸＭＬメッセージを解析し、階層タグ名毎にハッシュ計算し、階層番号を付加した、固定長の一意のデータへと整形することにより行われることを特徴とする請求項５乃至７の何れか１項に記載のＸＭＬデータ処理方法。
【請求項９】
演算機能と記憶機能を少なくとも備えた計算機に、ＸＭＬデータの処理を行わせるためのＸＭＬデータ処理プログラムであって、
前記ＸＭＬデータ処理プログラムが、ＸＭＬデータを解析する機能をコンピュータに実現させ、
前記ＸＭＬデータを解析する機能が、ＸＭＬデータの取り得る構造を記述したＸＭＬフォーマットシートが登録された際に、ＸＭＬフォーマット構成に関するバイナリデータを生成する第１の生成機能と、
前記第１の生成機能において生成したバイナリデータを記憶する記憶機能と、
前記記録機能において記録したＸＭＬフォーマット構成に関するバイナリデータを用いて、ＸＭＬデータの解析を行う解析機能と、
を更にコンピュータに実現させることを特徴とするＸＭＬデータ処理プログラム。
【請求項１０】
前記ＸＭＬデータを解析する機能が、
ＸＭＬデータ受信の際に、ＸＭＬデータ構成に関するバイナリデータを生成する第２の生成機能と、
受信したＸＭＬデータをどのＸＭＬフォーマットでチェックするか決定するための識別情報を、受信したＸＭＬデータ内より取り出す識別情報取り出し機能と、
取り出した前記識別情報をキーとして前記ＸＭＬフォーマット構成に関するバイナリデータを取り出し、前記ＸＭＬデータ構成に関するバイナリデータと比較する比較機能と、
を更にコンピュータに実現させることを特徴とする請求項９に記載のＸＭＬデータ処理プログラム。
【請求項１１】
前記第１の生成機能におけるＸＭＬフォーマット構成に関するバイナリデータの生成は、ＸＭＬフォーマットシートを解析し、階層タグ名毎にハッシュ計算し、階層番号とタグ間の親子関係を表すネクストアドレスを付加した、固定長の一意のデータへと整形することにより行われることを特徴とする請求項９又は１０に記載のＸＭＬデータ処理プログラム。
【請求項１２】
前記第２の生成機能におけるＸＭＬデータ構成に関するバイナリデータの生成は、受信したＸＭＬメッセージを解析し、階層タグ名毎にハッシュ計算し、階層番号を付加した、固定長の一意のデータへと整形することにより行われることを特徴とする請求項９乃至１１の何れか１項に記載のＸＭＬデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＭＬ（eXtensible Markup Language）データを高速に処理するＸＭＬデータ処理装置、ＸＭＬデータ処理方法及びＸＭＬデータ処理プログラムに関する。
【背景技術】
【０００２】
ＸＭＬは、コンピュータ間で交換可能なデータ記述方式を提供する言語であり、タグと呼ばれる特定の文字記号列を用いて情報を構造化するという特徴を活かし、一般に広く普及している。
【０００３】
このＸＭＬ文書の持つ構造を正しく記述しているか否かを解析するために、字句解析・構文解析を行うパーシング処理が知られている。
【０００４】
また、ＸＭＬデータを操作するＡＰＩ（Application Program Interface）としてＤＯＭ（Document Object Model）とＳＡＸ（Simple API for XML）が知られている。
【０００５】
ＤＯＭは、ＸＭＬ文章全体をメモリ上に読み込ませ、ツリー構造を組み立てることにより文書を扱う。これに対しＳＡＸは、ＸＭＬ文書全体を先頭から順次読み込み、ＸＭＬ文書の中で処理対象となる部分を見つけた場合に処理を行う。
【０００６】
また、ＸＭＬ文書のパーシングにおいては、ＸＭＬスキーマ等の、フォーマットを定義したスキーマに対し、ＸＭＬ文書のフォーマットが正しいかどうかの妥当性検証を行う。
【０００７】
このパーシング処理を実行する際、ＣＰＵ（Central Processing Unit）による処理時間の多くは、制御ワード、特定文字、および他の重要なデータを探すための文書の読み込みに費やされる。
【０００８】
この点に関連した技術であり、パーシング処理の処理時間短縮を目的とする技術として、特許文献１では、専用プロセッサ、及び結合ハードウェアを用いたパーシング処理の高速化を提案している。
【特許文献１】特表２００６−５０５０４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記載の発明は、専用プロセッサを有するハードウェアを用いることにより、ハードウェアの処理の並列化を図ることにより実現されるパーシング処理の高速化技術である。よって、実現のためには専用プロセッサを用意しなければならない。
【００１０】
そこで、本発明は、専用のプロセッサを用いることなく、文字列比較処理時間を短縮し更なる高速化を図ることが可能な、ＸＭＬデータ処理装置、ＸＭＬデータ処理方法及びＸＭＬデータ処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の第１の観点によれば、装置として演算手段と記憶手段を少なくとも備えた計算機を用いて、ＸＭＬデータの処理を行うＸＭＬデータ処理装置であって、前記ＸＭＬデータ処理装置が、ＸＭＬデータを解析する手段を備え、前記ＸＭＬデータを解析する手段が、ＸＭＬデータの取り得る構造を記述したＸＭＬフォーマットシートが登録された際に、ＸＭＬフォーマット構成に関するバイナリデータを生成する第１の生成手段と、前記第１の生成手段において生成したバイナリデータを記憶する記憶手段と、前記記録手段において記録したＸＭＬフォーマット構成に関するバイナリデータを用いて、ＸＭＬデータの解析を行う解析手段と、を備えることを特徴とするＸＭＬデータ処理装置が提供される。
【００１２】
本発明の第２の観点によれば、方法として演算ステップと記憶ステップを少なくとも行う計算機を用いて、ＸＭＬデータの処理を行うＸＭＬデータ処理方法であって、前記ＸＭＬデータ処理方法が、ＸＭＬデータを解析するステップを備え、前記ＸＭＬデータを解析するステップが、ＸＭＬデータの取り得る構造を記述したＸＭＬフォーマットシートが登録された際に、ＸＭＬフォーマット構成に関するバイナリデータを生成する第１の生成ステップと、前記第１の生成ステップにおいて生成したバイナリデータを記憶する記憶ステップと、前記記録ステップにおいて記録したＸＭＬフォーマット構成に関するバイナリデータを用いて、ＸＭＬデータの解析を行う解析ステップと、を備えることを特徴とするＸＭＬデータ処理方法が提供される。
【００１３】
本発明の第３の観点によれば、プログラムとして演算機能と記憶機能を少なくとも備えた計算機に、ＸＭＬデータの処理を行わせるためのＸＭＬデータ処理プログラムであって、前記ＸＭＬデータ処理プログラムが、ＸＭＬデータを解析する機能をコンピュータに実現させ、前記ＸＭＬデータを解析する機能が、ＸＭＬデータの取り得る構造を記述したＸＭＬフォーマットシートが登録された際に、ＸＭＬフォーマット構成に関するバイナリデータを生成する第１の生成機能と、前記第１の生成機能において生成したバイナリデータを記憶する記憶機能と、前記記録機能において記録したＸＭＬフォーマット構成に関するバイナリデータを用いて、ＸＭＬデータの解析を行う解析機能と、を更にコンピュータに実現させることを特徴とするＸＭＬデータ処理プログラムが提供される。
【発明の効果】
【００１４】
本発明によれば、ＸＭＬフォーマット構成に関するバイナリデータを用いて、ＸＭＬデータの解析を行うことにより、文字列比較処理時間を短縮し更なる高速化を図ることが可能となる。
【発明を実施するための最良の形態】
【００１５】
次に、本発明の実施形態について、適宜図面を参照しながら詳細に説明する。
【００１６】
［構成の説明］
まず、図１を用いて本発明の実施形態の構成を説明する。図１は、本発明の実施形態であるＸＭＬデータ処理装置の構成を説明するブロック図である。本ＸＭＬデータ処理装置は少なくとも、解析部１００及び検索・抽出部２００を有する計算機である。また、本ＸＭＬデータ処理装置は、図示しないＣＰＵ（Central Processing Unit）及び図示しないメモリを少なくとも有する。また、必要に応じ図示しない記憶装置を有することが望ましい。記憶装置としては、例えばハードディスク記録装置が挙げられる。
【００１７】
解析部１００は、字句解析、ＸＭＬメッセージの整形、及び構文解析を行う。詳細は後述する。
【００１８】
検索部２００は、解析部１００で字句解析、構文解析されたメッセージから、所望のＸＭＬデータの検索及び抽出処理を行う。
【００１９】
図２は、図１に記載されている解析部１００の、内部機能を説明するブロック図である。解析部１００は、メッセージ整形部１１０、字句解析部１２０、構文解析部１３０、ＸＭＬフォーマットシート１４０及びバイナリデータ管理部１５０を有する。
【００２０】
メッセージ整形部１１０は、構文解析部１３０における構文解析の高速化のために、受信したＸＭＬメッセージを解析し、階層タグ名毎にハッシュ計算し、階層番号を付加した、固定長の一意のデータへと整形する。また、受信データをどのＸＭＬフォーマットでチェックするか決定するための情報である、「識別情報」をバイナリデータ管理部に送信する。ＸＭＬメッセージの例及び整形に関する詳細は後述する。
【００２１】
字句解析部１２０は、受信したＸＭＬメッセージがＸＭＬ規則で定められた文法に従って記述されているか否かをチェックする機能を有する部分である。字句解析部１２０は、ＸＭＬメッセージに文法的な誤りがある場合、ＮＧメッセージを応答する。
【００２２】
構文解析部１３０は、メッセージ整形部１１０により整形されたデータとＸＭＬフォーマットシートをバイナリ化したデータを用い、ＸＭＬデータとの関係性をチェックする機能を有する部分である。
【００２３】
ＸＭＬフォーマットシート１４０は、ＸＭＬデータの取り得る構造を記述したものであり、ＸＭＬデータ毎にシステム側から登録される。フォーマットシートとしては、一般的にＸＭＬスキーマ（XML Schema）が用いられる。ＸＭＬスキーマの例については後述する。フォーマットシートを用いて受信ＸＭＬメッセージをチェックすることにより、ＸＭＬメッセージの妥当性を確認する。
【００２４】
バイナリデータ管理部１５０は、ＸＭＬフォーマットシート１４０を解析し、階層タグ名毎にハッシュ計算する。また、バイナリデータ管理部１５０は、階層番号と、タグ間の親子関係を表すネクストアドレスを付加した、固定長の一意のデータへと整形したバイナリデータを生成・管理する。バイナリデータ管理部１５０は、ＸＭＬフォーマットシート登録生成処理を行い、メッセージ整形処理１１０より受信した識別情報によって要求されたバイナリデータを、構文解析部１３０に送信する。
【００２５】
［動作の説明］
次に、本実施形態の動作を、ＸＭＬスキーマやＸＭＬメッセージの例を示しつつ説明する。
【００２６】
図３は、ＸＭＬスキーマの例を示す図である。本ＸＭＬスキーマ例は、ｓｃｈｅｍａ要素とｅｌｅｍｅｎｔ要素を有している。スキーマ中の各要素はｘｓｄ：という接頭辞を持つ。この接頭辞はｓｃｈｅｍａ要素中の宣言「ｘｍｌｎｓ：ｘｓｄ＝”ｈｔｔｐ：／／ｗｗｗ．ｗ３．ｏｒｇ／２００１／ＸＭＬＳｃｈｅｍａ”」によってＸＭＬスキーマの名前空間と関連付けられている。また、ｅｌｅｍｅｎｔ要素により、各要素を宣言する。
【００２７】
図４は、図３のＸＭＬスキーマ例より構築したＸＭＬスキーマグループを示す図である。ＸＭＬスキーマから、階層タグ名をノードとするＸＭＬスキーマツリーを生成し、ツリーの各ノードを階層化し、親子関係を基にグループ化する。本ＸＭＬスキーマ例では、以下の４つのグループに分解できる。
【００２８】
グループ１−１は、最上位ノードＡから成るグループである。
【００２９】
グループ２−１は、ノードＡを親とする、ノードＢ、Ｃ、Ｄから成るグループである。
【００３０】
グループ３−１は、ノードＢを親とする、ノードＡ、Ｂから成るグループである。
【００３１】
グループ３−２は、ノードＤを親とする、ノードＥから成るグループである。
【００３２】
図５は、図４のＸＭＬスキーマグループより構築した、ＸＭＬスキーマのハッシュデータを示す図である。図４で生成したグループ毎に、階層番号（ｌｅｖｅｌ）、ハッシュデータ（Ｈａｓｈ  ｄａｔａ）、ネクストアドレス（ｎｅｘｔ）を要素とするテーブルとし、高速メモリに配置する。ここで、高速メモリの例としては、ＣＡＭ（Content Addressable Memory）のような、メモリ内のデータと入力データとの比較を１クロックサイクルで完了出来るように設計されている記憶アレイ等が例示出来る。
【００３３】
階層番号はスキーマツリーの深さを表す。すなわち最上位ノードＡから成るグループ１−１（図４）を１（図５）とし、子グループには１ずつ加算する。
【００３４】
ハッシュデータは、任意の文字列である階層タグ名をハッシュ関数で固定長のバイナリデータとしたものである。
【００３５】
なお、ハッシュ値の衝突（シノニム）が発生する場合は、シノニムの解決を考慮する必要がある。衝突（シノニム）が発生した場合の対策方法としては、例えば、チェーン法とオープンアドレス法がある。チェーン法は同じハッシュ値を持つデータをポインタを利用してリストでつなぐ方法である。オープンアドレス法は、元のハッシュ値＋１で再ハッシュを行う方法である。これらの対策方法を実施出来る機能を本発明の実施形態に実装してもよい。
【００３６】
ネクストアドレスは、子グループの先頭アドレスとなる。図５の例によると、グループ１−１（図４）のネクストアドレスは、グループ２−１（図４）の先頭アドレスである「３（図５）」となる。
【００３７】
図６は、ＸＭＬメッセージの例を示す図である。「Ａ  ｘｍｌｎｓ：ｘｓｉ」の行で本ＸＭＬメッセージに対応するＸＭＬスキーマファイルが、「ａａａ．ｘｓｄ」であることを表している。以降の行は、ＸＭＬメッセージの階層構造を表している。
【００３８】
図７は、図６のＸＭＬメッセージ例より構築したＸＭＬメッセージツリーを示す図である。ＸＭＬメッセージは、階層タグ名をツリーを構成するノードとしてモデル化できる。本ＸＭＬメッセージ例では、図７に示すようにツリーは２本のパスに分解できる。
【００３９】
図８は、図７に示すＸＭＬメッセージツリーより構築したＸＭＬメッセージのハッシュデータを示す図である。各々のパスの各ノード名をハッシュ関数により固定ビット長のハッシュ値に変換し、パスごとに固有のビット列を生成する。また、ハッシュ値の衝突（シノニム）が発生する場合は、シノニムの解決を考慮する必要がある。
【００４０】
図９は、図２に記載されている構文解析部１３０で行われる、ＸＭＬメッセージの構文解析処理を示す図である。ＸＭＬスキーマのハッシュデータとＸＭＬメッセージのハッシュデータの比較処理を、ＸＭＬメッセージのハッシュデータ数の分だけ行う。
【００４１】
具体的には、ＸＭＬメッセージのハッシュデータを図９中の（１）から（５）の順に取り出し、ＸＭＬスキーマのハッシュデータの先頭からと比較する。各々のテーブルの階層番号（ｌｅｖｅｌ）が等しく、かつハッシュデータが等しい場合、ＸＭＬスキーマテーブルの比較ポイントをネクストアドレス（ｎｅｘｔ）に移動し、ＸＭＬメッセージテーブルの比較ポイントを１つインクリメントする。一方、ｌｅｖｅｌとＨａｓｈ  ｄａｔａの少なくともどちらかが一致しない場合は、ＸＭＬスキーマテーブルの次エントリと比較する。これを繰り返し、ＸＭＬメッセージテーブルの最終ノード（ｌａｓｔ）が「Ｙｅｓ」かつＸＭＬスキーマテーブルのネクストアドレスが「ＮＧ」以外の場合、このパスに関しては比較ＯＫと判断し、次のパスの比較を行う。
【００４２】
ＸＭＬスキーマテーブルのＨａｓｈ  ｄａｔａに「ｄｅｆａｕｌｔ」が設定されている場合は、ＸＭＬメッセージのハッシュデータに関わらず一致とみなす。ネクストアドレスが「ＮＧ」の場合は、比較ＮＧと判断し、ＮＧメッセージを送信元アドレスに送信する。
【００４３】
全ての比較処理で一致データが見つかった場合、ＸＭＬメッセージの妥当性が証明されたと判断する。
【００４４】
ここまで、本発明の実施形態について説明してきたが、この実施形態によれば、ＸＭＬスキーマの各パスを事前にハッシュによりバイナリ化し高速メモリに格納し、ＸＭＬメッセージを受信時にメッセージパスをハッシュによりバイナリ化し、両者を比較することで、ＸＭＬデータの事前解析を高速化することが出来る。また、上述した実施形態を、本発明の趣旨から逸脱しない範囲内で、変更することが可能であることは、当業者にとって理解の範囲内である。
【００４５】
なお、本発明の実施形態であるＸＭＬデータ処理装置は、ハードウェア、ソフトウェア又はこれらの組合せにより実現することができる。
【図面の簡単な説明】
【００４６】
【図１】本発明の実施形態の基本的構成を表すブロック図である。
【図２】図１に記載されている解析部１００の機能を説明するブロック図である。
【図３】ＸＭＬスキーマの例を示す図である。
【図４】図３のＸＭＬスキーマより構築したＸＭＬスキーマグループの図である。
【図５】図４のＸＭＬスキーマグループより構築したＸＭＬスキーマのハッシュデータの図である。
【図６】ＸＭＬメッセージの例を示す図である。
【図７】図６のＸＭＬメッセージより構築したＸＭＬメッセージツリーの図である。
【図８】図７のＸＭＬメッセージツリーより構築したＸＭＬメッセージのハッシュデータの図である。
【図９】ＸＭＬメッセージの構文解析イメージ図である。
【符号の説明】
【００４７】
１００  解析部
１１０  メッセージ整形部
１２０  字句解析部
１３０  構文解析部
１４０  ＸＭＬフォーマットシート
１５０  バイナリデータ管理部
２００  検索／抽出部
【図１】
2009163690.tif 000003
【図２】
2009163690.tif 000004
【図３】
2009163690.tif 000005
【図４】
2009163690.tif 000006
【図５】
2009163690.tif 000007
【図６】
2009163690.tif 000008
【図７】
2009163690.tif 000009
【図８】
2009163690.tif 000010
【図９】
2009163690.tif 000011