(57)【要約】  【課題】  Ｘpathを自動生成する。  【解決手段】  定義データが与えられると、階層構造取得手段６は、1)ルートノードの下位ノードについて末端ノードまでたどりその配置関係を記憶し、2)末端ノードの１つ上の階層のノードにつながる、未検出弟ノードが存在するか否か判断し、3)存在すれば、弟ノードの下位階層ノードを末端ノードまでたどり、その配置関係を記憶し、4)弟ノードが存在すれば、当該末端ノードの１つ上の階層のノードの下位階層のノードを末端ノードまで順次下位の階層までたどり、その配置関係を記憶する。これを繰り返す。送信手段7は、子ノードのいないタグを抽出して、当該タグ用の入力領域とともに、その入力データに対する命令を入力するコントロールボタンを生成する。これが、端末１に送信される。返信データからＸpathを生成する。  【選択図】  図１
2005149249.tif 000002
【特許請求の範囲】
【請求項１】
各要素データに当該要素データの属性を表すタグが付加されており、文書内における他のタグに対する配置位置関係によって各タグが付加された要素データが階層構造で定義されるＸＭＬデータを管理するＸＭＬデータベースにデータベース処理命令を与える命令生成装置であって、
前記タグ配置位置関係を含む定義データを記憶する定義データ記憶手段、
当該定義データにおけるタグの配置位置関係によって、各タグの階層構造を取得する階層構造取得手段、
前記階層構造の末端に位置するタグを抽出して、当該タグについて要素データを入力するための入力領域とともに、その入力データに対する命令を端末コンピュータの操作者が入力する命令入力部を表示できる入力画面データを端末コンピュータに送信する送信手段、
前記端末コンピュータから返信データを受け取ると、前記ＸＭＬデータベースに前記端末コンピュータにて入力されたデータベース処理命令を与える処理命令手段、
を備え、
前記階層構造取得手段は、以下の処理により、前記タグの階層構造を取得すること、
1)前記階層構造の最上位ノードのタグを注目ノードとして、下位の階層のタグのノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶し、
2)前記末端ノードの１つ上の階層のノードを注目ノードとしてこれにつながる、前記末端ノードの未検出弟ノードが存在するか否か判断し、
3)未検出弟ノードが存在する場合には、当該弟ノードを注目ノードとして、下位の階層のノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶し、
4)前記末端ノードの弟ノードが存在しない場合には、当該末端ノードの１つ上の階層のノードを注目ノードとして、下位の階層のノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶する、
5)上記2)〜4)を繰り返す、
を特徴とする命令生成装置。
【請求項２】
各要素データに当該要素データの属性を表す属性ラベルが付加されており、文書内における他の属性ラベルに対する配置位置関係によって各属性ラベルが付加された要素データが階層構造で定義される階層構造自己記述型文書を管理するデータベースにデータベース処理命令を与える命令生成装置であって、
前記タグ配置位置関係を含む定義データを記憶する定義データ記憶手段、
当該定義データにおける属性ラベル間の配置位置関係によって、各属性ラベルの階層構造を取得する階層構造取得手段、
前記階層構造の末端に位置する属性ラベルを抽出して、当該属性ラベルについて要素データを入力するための入力領域とともに、その入力データに対する命令を端末コンピュータの操作者が入力する命令入力部を表示できる入力画面データを端末コンピュータに送信する送信手段、
前記端末コンピュータから返信データを受け取ると、前記データベースに前記端末コンピュータにて入力されたデータベース処理命令を与える処理命令手段、
を備えたことを特徴とする命令生成装置。
【請求項３】
請求項２の命令生成装置において、
前記階層構造取得手段は、以下の処理により、前記属性ラベルの階層構造を取得すること、
1)前記階層構造の最上位ノードの属性ラベルを注目ノードとして、下位の階層の属性ラベルのノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶し、
2)前記末端ノードの１つ上の階層のノードを注目ノードとしてこれにつながる、前記末端ノードの未検出弟ノードが存在するか否か判断し、
3)未検出弟ノードが存在する場合には、当該弟ノードを注目ノードとして、下位の階層のノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶し、
4)前記末端ノードの弟ノードが存在しない場合には、当該末端ノードの１つ上の階層のノードを注目ノードとして、下位の階層のノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶する、
5)上記2)〜4)を繰り返す、
を特徴とするもの。
【請求項４】
各要素データに当該要素データの属性を表す属性ラベルが付加されており、文書内における他の属性ラベルに対する配置位置関係によって各属性ラベルが付加された要素データが階層構造で定義される階層構造自己記述型文書を管理するデータベースシステムであって、
前記タグ配置位置関係を含む定義データを記憶する定義データ記憶手段、
当該定義データにおける属性ラベル間の配置位置関係によって、各属性ラベルの階層構造を取得する階層構造取得手段、
前記階層構造の末端に位置する属性ラベルを抽出して、当該属性ラベルについて要素データを入力するための入力領域とともに、その入力データに対する命令を端末コンピュータの操作者が入力する命令入力部を表示できる入力画面データを端末コンピュータに送信する送信手段、
前記端末コンピュータから返信データを受け取ると、前記端末コンピュータにて入力されたデータベース処理命令に基づいて、データベース処理を実行する実行手段、
を備えたことを特徴とするデータベースシステム。
【請求項５】
各要素データに当該要素データの属性を表す属性ラベルが付加されており、文書内における他の属性ラベルに対する配置位置関係によって各属性ラベルが付加された要素データが階層構造で定義される階層構造自己記述型文書を管理するデータベースにデータベース処理命令を与える命令生成装置であって、
前記タグ配置位置関係を含む定義データを記憶する定義データ記憶手段、
当該定義データにおける属性ラベルの配置位置関係によって、各属性ラベルの階層構造を取得する階層構造取得手段、
を備えたことを特徴とする命令生成装置。
【請求項６】
各要素データに当該要素データの属性を表す属性ラベルが付加されており、文書内における他の属性ラベルに対する配置位置関係によって各属性ラベルが付加された要素データが階層構造で定義される階層構造自己記述型文書を管理するデータベースに対して、データベース処理命令を与えるコンピュータの使用方法であって、以下の処理をコンピュータに実行させること、
前記タグ配置位置関係を含む定義データを定義データ記憶部に記憶させておき、
当該定義データにおける属性ラベルの配置位置関係によって、各属性ラベルの階層構造を取得させ、
前記階層構造の末端に位置する属性ラベルを抽出させて、当該属性ラベルについて要素データを入力するための入力領域とともに、その入力データに対する命令を端末コンピュータの操作者が入力する命令入力部を表示できる入力画面データを端末コンピュータに送信させ、
前記端末コンピュータから返信データを受け取ると、前記データベースに前記端末コンピュータにて入力されたデータベース処理命令を与えさせる、
を特徴とする命令生成方法。
【請求項７】
コンピュータを、データベースに対してデータベース処理命令を与える命令生成装置として機能させるためのプログラムであって、以下の処理をコンピュータに実行させるためのプログラム。
前記タグ配置位置関係を含む定義データを記憶させ、
当該定義データにおける属性ラベルの配置位置関係によって、各属性ラベルの階層構造を取得させ、
前記階層構造の末端に位置する属性ラベルを抽出させて、当該属性ラベルについて要素データを入力するための入力領域とともに、その入力データに対する命令を端末コンピュータの操作者が入力する命令入力部を表示できる入力画面データを端末コンピュータに送信させ、
前記端末コンピュータから返信データを受け取ると、前記データベースに前記端末コンピュータにて入力されたデータベース処理命令を与える。
【請求項８】
請求項４のデータベースシステムにおいて、
前記実行手段は、
階層構造自己記述型文書を記憶する階層構造自己記述型文書記憶手段、
複数の属性ラベルの名称が階層構造で特定された検索式が与えられると、前記階層構造自己記述型文書のうち、これに合致するデータを検索する検索手段、
前記階層構造自己記述型文書における各属性ラベルとそのアドレスの対応テーブルを記憶する対応テーブル記憶手段、
前記階層構造自己記述型文書における各属性ラベルの階層構造を、各属性ラベルが記憶されたアドレスにて表した階層構造表記データを記憶する階層構造表記データ記憶手段、
を備え、
前記検索手段は、
前記検索式が与えられると、当該検索式における最上位のノードを注目ノードとする第１ステップ、
前記対応テーブルを参照して、前記注目ノードのアドレスを得て、前記階層構造表記データを参照して、前記注目ノードの次階層のノードのアドレスを得て、前記検索式について前記注目ノードの次階層の属性ラベルについて、前記対応テーブルを参照してそのアドレスを得て、前記次階層ノードのアドレスと、前記次階層ノードのアドレスと、前記次階層の属性ラベルのアドレスとが一致するアドレスを検出アドレスとする第２ステップ、
前記検索式について最下位階層まで前記第２ステップを実行したかを判断し、実行している場合には、現在の検出アドレスを前記合致するデータを検索結果のアドレスとし、実行していない場合には前記第２ステップを繰り返す第３ステップ、
を実行することを特徴とするもの。
【請求項９】
請求項４のデータベースシステムにおいて、
前記実行手段は、
階層構造自己記述型文書を記憶する階層構造自己記述型文書記憶手段、
複数の属性ラベルの名称が階層構造で特定された検索式が与えられると、前記階層構造自己記述型文書のうち、これに合致するデータを検索する検索手段、
前記階層構造自己記述型文書における各属性ラベルとそのハッシュ値の対応テーブルを記憶する対応テーブル記憶手段、
前記階層構造自己記述型文書における各属性ラベルの階層構造を、各属性ラベルのハッシュ値にて表した階層構造表記データを記憶する階層構造表記データ記憶手段、
を備え、
前記検索手段は、
前記検索式が与えられると、当該検索式における最上位のノードを注目ノードとする第１ステップ、
前記対応テーブルを参照して、前記注目ノードのハッシュ値を得て、前記階層構造表記データを参照して、前記注目ノードの次階層のノードのハッシュ値を得て、前記検索式について前記注目ノードの次階層の属性ラベルについて、前記対応テーブルを参照してそのハッシュ値を得て、前記２つのハッシュ値とが一致するものを検出する第２ステップ、
前記検索式について最下位階層まで前記第２ステップを実行したかを判断し、実行している場合には、現在の検出したハッシュ値を前記合致するデータを検索結果のアドレスとし、実行していない場合には前記第２ステップを繰り返す第３ステップ、
を実行することを特徴とするもの。
【請求項１０】
請求項４のデータベースシステムにおいて、
前記実行手段は、
階層構造自己記述型文書を記憶する階層構造自己記述型文書記憶手段、
複数の属性ラベルの名称が階層構造で特定された検索式が与えられると、前記階層構造自己記述型文書のうち、これに合致するデータを検索する検索手段、
前記階層構造自己記述型文書における各属性ラベルとそのアドレスの対応テーブルを記憶する対応テーブル記憶手段、
前記階層構造自己記述型文書における各属性ラベルの階層構造を、各属性ラベルが記憶されたアドレスにて表した階層構造表記データを記憶する階層構造表記データ記憶手段、
を備え、
前記検索手段は、
前記対応テーブルを参照して、注目ノードのアドレスを得て、前記階層構造表記データを参照して、前記注目ノードの次階層のノードのアドレスを得るステップ、
前記検索式について前記注目ノードの次階層の属性ラベルについて、前記対応テーブルを参照してそのアドレスを得るステップ、
前記次階層ノードのアドレスと、前記次階層の属性ラベルのアドレスとが一致するアドレスを検出アドレスとするステップ、
を実行することにより、前記合致するデータのアドレスを検索すること、
を特徴とするもの。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、階層構造自己記述型文書のデータベースへの命令を生成する装置に関し、特に、階層構造自己記述型文書の持つ自動度に応じた入力を容易とする入力画面の生成に関する。
【背景技術】
【０００２】
今日、構造化文書を扱うことができるＸＭＬデータベースシステム（以下ＸＭＬＤＢという）が注目されている。
【０００３】
【特許文献１】特開２００１−３４６１９号
【発明の開示】
【発明が解決しようとする課題】
【０００４】
かかるＸＭＬＤＢにおいて、図９に示すような入力画面を予め準備しておき、端末からのデータ登録などを簡易にするシステムが提案されている。
【０００５】
一方、本来、ＸＭＬデータはタグを自由につけることにより柔軟な入力形式が可能である。たとえば、メールアドレスを３つにしたり、連絡先として、実家の住所を指定するなどである。
【０００６】
すなわち、このようなＸＭＬデータが持つ柔軟性と簡易なデータ登録という課題は相反するものである。
【０００７】
かかる問題を解決するために、最大公約数的な項目を全て表示することも考えられるが、これは非現実的である。
【０００８】
この発明は、柔軟な入力形式が可能なＸＭＬデータの自由度を制限することなく、データベースに簡易にデータ登録ができる命令生成装置を提供することを目的とする。さらに、階層構造自己記述型文書について、その自由度を制限することなく、データベースに簡易にデータ登録ができる命令生成装置またはその方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１）本発明にかかる命令生成装置は、各要素データに当該要素データの属性を表すタグが付加されており、文書内における他のタグに対する配置位置関係によって各タグが付加された要素データが階層構造で定義されるＸＭＬデータを管理するＸＭＬデータベースにデータベース処理命令を与える命令生成装置であって、Ａ）前記タグ配置位置関係を含む定義データを記憶する定義データ記憶手段、Ｂ）当該定義データにおけるタグの配置位置関係によって、各タグの階層構造を取得する階層構造取得手段、Ｃ）前記階層構造の末端に位置するタグを抽出して、当該タグについて要素データを入力するための入力領域とともに、その入力データに対する命令を端末コンピュータの操作者が入力する命令入力部を表示できる入力画面データを端末コンピュータに送信する送信手段、Ｄ）前記端末コンピュータから返信データを受け取ると、前記ＸＭＬデータベースに前記端末コンピュータにて入力されたデータベース処理命令を与える処理命令手段を備え、Ｅ）前記階層構造取得手段は、以下の処理により、前記タグの階層構造を取得すること、1)前記階層構造の最上位ノードのタグを注目ノードとして、下位の階層のタグのノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶し、2)前記末端ノードの１つ上の階層のノードを注目ノードとしてこれにつながる、前記末端ノードの未検出弟ノードが存在するか否か判断し、3)未検出弟ノードが存在する場合には、当該弟ノードを注目ノードとして、下位の階層のノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶し、4)前記末端ノードの弟ノードが存在しない場合には、当該末端ノードの１つ上の階層のノードを注目ノードとして、下位の階層のノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶する、5)上記2)〜4)を繰り返す。
【００１０】
このように、前記定義データから全体の階層構造を決定し、かかる階層構造のうち、階層構造の末端に位置するタグを抽出して、当該タグについて要素データを入力するための入力領域とともに、その入力データに対する命令を入力するための命令入力部を表示できる入力画面データを生成することにより、柔軟な入力形式が可能なＸＭＬデータの自由度を制限することなく、データベースに簡易にデータ登録ができる命令生成装置を提供することができる。
【００１１】
２）本発明にかかる命令生成装置は、各要素データに当該要素データの属性を表す属性ラベルが付加されており、文書内における他の属性ラベルに対する配置位置関係によって各属性ラベルが付加された要素データが階層構造で定義される階層構造自己記述型文書を管理するデータベースにデータベース処理命令を与える命令生成装置であって、Ａ）前記タグ配置位置関係を含む定義データを記憶する定義データ記憶手段、Ｂ）当該定義データにおける属性ラベルの配置位置関係によって、各属性ラベルの階層構造を取得する階層構造取得手段、Ｃ）前記階層構造の末端に位置する属性ラベルを抽出して、当該属性ラベルについて要素データを入力するための入力領域とともに、その入力データに対する命令を端末コンピュータの操作者が入力する命令入力部を表示できる入力画面データを端末コンピュータに送信する送信手段、Ｄ）前記端末コンピュータから返信データを受け取ると、前記データベースに前記端末コンピュータにて入力されたデータベース処理命令を与える処理命令手段を備えている。
【００１２】
このように、前記定義データから全体の階層構造を決定し、かかる階層構造のうち、階層構造の末端に位置する属性ラベルを抽出して、当該属性ラベルについて要素データを入力するための入力領域とともに、その入力データに対する命令を入力するための命令入力部を表示できる入力画面データを生成することにより、柔軟な入力形式が可能な階層構造自己記述型文書の自由度を制限することなく、データベースに簡易にデータベース処理命令が可能な命令生成装置を提供することができる。
【００１３】
３）本発明にかかる命令生成装置においては、前記階層構造取得手段は、以下の処理により、前記属性ラベルの階層構造を取得する。1)前記階層構造の最上位ノードの属性ラベルを注目ノードとして、下位の階層の属性ラベルのノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶し、2)前記末端ノードの１つ上の階層のノードを注目ノードとしてこれにつながる、前記末端ノードの未検出弟ノードが存在するか否か判断し、3)未検出弟ノードが存在する場合には、当該弟ノードを注目ノードとして、下位の階層のノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶し、4)前記末端ノードの弟ノードが存在しない場合には、当該末端ノードの１つ上の階層のノードを注目ノードとして、下位の階層のノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶する、5)上記2)〜4)を繰り返す。したがって、前記属性ラベルの階層構造を確実に取得することができる。
【００１４】
４）本発明にかかるデータベースシステムにおいては、各要素データに当該要素データの属性を表す属性ラベルが付加されており、文書内における他の属性ラベルに対する配置位置関係によって各属性ラベルが付加された要素データが階層構造で定義される階層構造自己記述型文書を管理するデータベースシステムであって、1)前記タグ配置位置関係を含む定義データを記憶する定義データ記憶手段、2)当該定義データにおける属性ラベルの配置位置関係によって、各属性ラベルの階層構造を取得する階層構造取得手段、3)前記階層構造の末端に位置する属性ラベルを抽出して、当該属性ラベルについて要素データを入力するための入力領域とともに、その入力データに対する命令を端末コンピュータの操作者が入力する命令入力部を表示できる入力画面データを端末コンピュータに送信する送信手段、4)前記端末コンピュータから返信データを受け取ると、前記端末コンピュータにて入力されたデータベース処理命令に基づいて、データベース処理を実行する実行手段を備えている。このように、前記定義データから全体の階層構造を決定し、かかる階層構造のうち、階層構造の末端に位置する属性ラベルを抽出して、当該属性ラベルについて要素データを入力するための入力領域とともに、その入力データに対する命令を入力するための命令入力部を表示できる入力画面データを生成することにより、柔軟な入力形式が可能な階層構造自己記述型文書の自由度を制限することなく、簡易にデータベース処理命令が可能なデータベースシステムを提供することができる。
【００１５】
５）本発明にかかる命令生成装置は、各要素データに当該要素データの属性を表す属性ラベルが付加されており、文書内における他の属性ラベルに対する配置位置関係によって各属性ラベルが付加された要素データが階層構造で定義される階層構造自己記述型文書を管理するデータベースにデータベース処理命令を与える命令生成装置であって、1)前記タグ配置位置関係を含む定義データを記憶する定義データ記憶手段、2)当該定義データにおける属性ラベルの配置位置関係によって、各属性ラベルの階層構造を取得する階層構造取得手段を備えている。このように、前記定義データから全体の階層構造を決定し、かかる階層構造のうち、階層構造の末端に位置する属性ラベルを抽出して、当該属性ラベルについて要素データを入力するための入力領域とともに、その入力データに対する命令を入力するための命令入力部を表示できる入力画面データを生成することにより、柔軟な入力形式が可能な階層構造自己記述型文書の自由度を制限することなく、データベース処理命令を生成することができる命令生成装置を提供することができる。
【００１６】
６）本発明にかかる命令生成方法は、各要素データに当該要素データの属性を表す属性ラベルが付加されており、文書内における他の属性ラベルに対する配置位置関係によって各属性ラベルが付加された要素データが階層構造で定義される階層構造自己記述型文書を管理するデータベースに対して、データベース処理命令を与えるコンピュータの使用方法であって、以下の処理をコンピュータに実行させること、1)前記タグ配置位置関係を含む定義データを定義データ記憶部に記憶させておき、2)当該定義データにおける属性ラベルの配置位置関係によって、各属性ラベルの階層構造を取得させ、3)前記階層構造の末端に位置する属性ラベルを抽出させて、当該属性ラベルについて要素データを入力するための入力領域とともに、その入力データに対する命令を端末コンピュータの操作者が入力する命令入力部を表示できる入力画面データを端末コンピュータに送信させ、4)前記端末コンピュータから返信データを受け取ると、前記データベースに前記端末コンピュータにて入力されたデータベース処理命令を与えさせる。
【００１７】
このように、前記定義データから全体の階層構造を決定させ、かかる階層構造のうち、階層構造の末端に位置する属性ラベルを抽出させ、当該属性ラベルについて要素データを入力するための入力領域とともに、その入力データに対する命令を入力するための命令入力部を表示できる入力画面データをコンピュータに生成させることにより、柔軟な入力形式が可能な階層構造自己記述型文書の自由度を制限することなく、データベースに簡易にデータベース処理命令が可能な命令生成方法を提供することができる。
【００１８】
７）本発明にかかるプログラムは、コンピュータを、データベースに対してデータベース処理命令を与える命令生成装置として機能させるためのプログラムであって、以下の処理をコンピュータに実行させるためのプログラム。1)前記タグ配置位置関係を含む定義データを記憶させ、2)当該定義データにおける属性ラベルの配置位置関係によって、各属性ラベルの階層構造を取得させ、3)前記階層構造の末端に位置する属性ラベルを抽出させて、当該属性ラベルについて要素データを入力するための入力領域とともに、その入力データに対する命令を端末コンピュータの操作者が入力する命令入力部を表示できる入力画面データを端末コンピュータに送信させ、4)前記端末コンピュータから返信データを受け取ると、前記データベースに前記端末コンピュータにて入力されたデータベース処理命令を与える。
【００１９】
このように、前記定義データから全体の階層構造を決定させ、かかる階層構造のうち、階層構造の末端に位置する属性ラベルを抽出させ、当該属性ラベルについて要素データを入力するための入力領域とともに、その入力データに対する命令を入力するための命令入力部を表示できる入力画面データをコンピュータに生成させることにより、柔軟な入力形式が可能な階層構造自己記述型文書の自由度を制限することなく、データベースに簡易にデータベース処理命令が可能な命令生成方法を提供することができる。
【００２０】
８）本発明にかかるデータベースシステムにおいては、Ａ)前記実行手段は、a1)階層構造自己記述型文書を記憶する階層構造自己記述型文書記憶手段、a2)複数の属性ラベルの名称が階層構造で特定された検索式が与えられると、前記階層構造自己記述型文書のうち、これに合致するデータを検索する検索手段、a3)前記階層構造自己記述型文書における各属性ラベルとそのアドレスの対応テーブルを記憶する対応テーブル記憶手段、a4)前記階層構造自己記述型文書における各属性ラベルの階層構造を、各属性ラベルが記憶されたアドレスにて表した階層構造表記データを記憶する階層構造表記データ記憶手段を備え、Ｂ）前記検索手段は、b1)前記検索式が与えられると、当該検索式における最上位のノードを注目ノードとする第１ステップ、b2)前記対応テーブルを参照して、前記注目ノードのアドレスを得て、前記階層構造表記データを参照して、前記注目ノードの次階層のノードのアドレスを得て、前記検索式について前記注目ノードの次階層の属性ラベルについて、前記対応テーブルを参照してそのアドレスを得て、前記次階層ノードのアドレスと、前記次階層ノードのアドレスと、前記次階層の属性ラベルのアドレスとが一致するアドレスを検出アドレスとする第２ステップ、b3)前記検索式について最下位階層まで前記第２ステップを実行したかを判断し、実行している場合には、現在の検出アドレスを前記合致するデータを検索結果のアドレスとし、実行していない場合には前記第２ステップを繰り返す第３ステップを実行する。このように、各ノードについて、格納位置と各ノードの属性ラベルとを分けて検索することにより、高速検索が可能となる。
【００２１】
９）本発明にかかるデータベースシステムにおいては、Ａ）前記実行手段は、a1)階層構造自己記述型文書を記憶する階層構造自己記述型文書記憶手段、a2)複数の属性ラベルの名称が階層構造で特定された検索式が与えられると、前記階層構造自己記述型文書のうち、これに合致するデータを検索する検索手段、a3)前記階層構造自己記述型文書における各属性ラベルとそのハッシュ値の対応テーブルを記憶する対応テーブル記憶手段、a4)前記階層構造自己記述型文書における各属性ラベルの階層構造を、各属性ラベルのハッシュ値にて表した階層構造表記データを記憶する階層構造表記データ記憶手段を備え、Ｂ）前記検索手段は、b1)前記検索式が与えられると、当該検索式における最上位のノードを注目ノードとする第１ステップ、b2)前記対応テーブルを参照して、前記注目ノードのハッシュ値を得て、前記階層構造表記データを参照して、前記注目ノードの次階層のノードのハッシュ値を得て、前記検索式について前記注目ノードの次階層の属性ラベルについて、前記対応テーブルを参照してそのハッシュ値を得て、前記２つのハッシュ値とが一致するものを検出する第２ステップ、b3)前記検索式について最下位階層まで前記第２ステップを実行したかを判断し、実行している場合には、現在の検出したハッシュ値を前記合致するデータを検索結果のアドレスとし、実行していない場合には前記第２ステップを繰り返す第３ステップを実行する。このように、各ノードについて、ハッシュ法を用いて格納位置と各ノードの属性ラベルとを分けて検索することにより、高速検索が可能となる。
【００２２】
１０）本発明にかかるデータベースシステムにおいては、Ａ)前記実行手段は、a1)階層構造自己記述型文書を記憶する階層構造自己記述型文書記憶手段、a2)複数の属性ラベルの名称が階層構造で特定された検索式が与えられると、前記階層構造自己記述型文書のうち、これに合致するデータを検索する検索手段、a3)前記階層構造自己記述型文書における各属性ラベルとそのアドレスの対応テーブルを記憶する対応テーブル記憶手段、a4)  前記階層構造自己記述型文書における各属性ラベルの階層構造を、各属性ラベルが記憶されたアドレスにて表した階層構造表記データを記憶する階層構造表記データ記憶手段を備え、B)前記検索手段は、b1)前記対応テーブルを参照して、注目ノードのアドレスを得て、前記階層構造表記データを参照して、前記注目ノードの次階層のノードのアドレスを得るステップ、b2)前記検索式について前記注目ノードの次階層の属性ラベルについて、前記対応テーブルを参照してそのアドレスを得るステップ、b3)前記次階層ノードのアドレスと、前記次階層の属性ラベルのアドレスとが一致するアドレスを検出アドレスとするステップを実行することにより、前記合致するデータのアドレスを検索する。このように、各ノードについて、格納位置と各ノードの属性ラベルとを分けて検索することにより、高速検索が可能となる。
【００２３】
なお、本明細書において「Xpath」とは、ＸＭＬ文書の特定の要素を指定するための言語であり、本実施形態においては、ＸＭＬデータベースに記憶されたＸＭＬデータの要素位置を指定する。また、「属性ラベル」とは、実施形態ではタグに該当する。「データベース処理」とは、データベースへのデータの「追加」、「更新」、「削除」、「検索」の処理をいう。
【発明を実施するための最良の形態】
【００２４】
１．機能ブロック図の説明
本発明の一実施形態を図面に基づいて説明する。
図１に示すデータベースシステム１は、命令生成装置であるWebサーバ２およびデータベース３を有している。データベース３は、階層構造自己記述型文書を管理する。階層構造自己記述型文書とは、各要素データに当該要素データの属性を表す属性ラベルが付加されており、文書内における他の属性ラベルに対する配置位置関係によって各属性ラベルが付加された要素データが階層構造で定義されるデータをいう。
【００２５】
Webサーバ２は、受信手段３，定義データ記憶手段４、階層構造取得手段６、送信手段７、処理命令手段８を備えている。
【００２６】
ユーザ端末１ａからタグ配置位置関係を含む定義データが与えられると、受信手段３はこれを定義データ記憶手段に記憶する。階層構造取得手段６は、当該定義データにおける属性ラベルの配置位置関係によって、各属性ラベルの階層構造を取得する。本実施形態においては、以下のような処理により、各属性ラベルの階層構造を取得した。1)前記定義データにおける、階層構造の最上位ノードの属性ラベルを注目ノードとして、下位の階層の属性ラベルのノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶し、2)前記末端ノードの１つ上の階層のノードを注目ノードとしてこれにつながる、前記末端ノードの未検出弟ノードが存在するか否か判断し、3)未検出弟ノードが存在する場合には、当該弟ノードを注目ノードとして、下位の階層のノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶し、4)前記末端ノードの弟ノードが存在しない場合には、当該末端ノードの１つ上の階層のノードを注目ノードとして、下位の階層のノードを末端ノードまで順次下位の階層までたどりつつ、各ノードの配置関係を記憶する。5)上記2)〜4)を繰り返す。
【００２７】
送信手段７は、前記階層構造の末端に位置する属性ラベルを抽出して、当該属性ラベルについて要素データを入力するための入力領域とともに、その入力データに対する命令を端末コンピュータの操作者が入力する命令入力部を表示できる入力画面データを端末コンピュータに送信する。処理命令手段８は前記端末コンピュータから返信データを受け取ると、前記データベースに前記端末コンピュータにて入力されたデータベース処理命令を与える。
【００２８】
２．ハードウェア構成
図１に示すWebサーバ２のハードウェア構成について、図２を用いて説明する。図２は、ＣＰＵを用いて構成したハードウェア構成の一例である。
Webサーバ２は、ＣＰＵ２３、メモリ２７、ハードディスク２６、モニタ３０、ＣＤＤ（ＣＤＲＯＭドライブ）２５、入力デバイス２８、通信ボード３２およびバスライン２９を備えている。ＣＰＵ２３は、ハードディスク２６に記憶された各プログラムにしたがいバスライン２９を介して、各部を制御する。
【００２９】
ハードディスク２６は、オペレーティングシステムプログラム（以下ＯＳと略す）記憶部２６o、自動生成プログラム記憶部２６ａを有する。
【００３０】
オペレーティングシステムプログラム（ＯＳ）２６oは、本実施形態においては、Linux（商標）を採用したがこれに限定されるものではない。
【００３１】
自動生成プログラム２６ａは、後述するように、ユーザ端末または他のコンピュータから受け取った定義データに基づいて、端末コンピュータの操作者が入力する命令入力部を表示できる入力画面データを生成し、端末コンピュータに送信する。端末コンピュータから返信を受け取ると、これをデータベース３に渡す。詳しくは後述する。
【００３２】
なお、上記プログラムは、ＣＤＤ２５を介して、プログラムが記憶されたＣＤＲＯＭ２５ａから読み出されてハードディスク２６にインストールされたものである。なお、ＣＤＲＯＭ以外に、フレキシブルディスク（ＦＤ）、ＩＣカード等のプログラムをコンピュータ可読の記録媒体から、ハードディスクにインストールさせるようにしてもよい。さらに、通信回線を用いてダウンロードするようにしてもよい。
【００３３】
本実施形態においては、プログラムをＣＤＲＯＭからハードディスク２６にインストールさせることにより、ＣＤＲＯＭに記憶させたプログラムを間接的にコンピュータに実行させるようにしている。しかし、これに限定されることなく、ＣＤＲＯＭに記憶させたプログラムをＣＤＤ２５から直接的に実行するようにしてもよい。なお、コンピュータによって、実行可能なプログラムとしては、そのままインストールするだけで直接実行可能なものはもちろん、一旦他の形態等に変換が必要なもの（例えば、データ圧縮されているものを、解凍する等）、さらには、他のモジュール部分と組合して実行可能なものも含む。
【００３４】
ユーザ端末２は、図３に示すように、ハードディスク１２６にブラウザプログラムを記憶するブラウザプログラム記憶部１２６ｂがある点以外は、ハード構成はほぼ同様であるので説明は省略する。また、データベース３は、図４に示すように、通常のＸＭＬデータのデータベースシステムであり、データ記憶部２２６ｄにかかるＸＭＬデータが記憶される。データ管理プログラム記憶部２２６ａに記憶されるプログラムも通常のデータベース処理をおこなうプログラムである。
【００３５】
３．フローチャート
つぎに、本システムにおける処理について図５を用いて説明する。以下では、本実施形態においては、ユーザ端末から定義データが与えられて、この定義データを用いてユーザが望む階層構造のＸＭＬデータをデータベース３に追加登録する場合を例として説明する。
ユーザ端末１の操作者は、入力を希望するＸＭＬデータのデータ構造を定めた定義データをWebサーバ２に送信する（ステップＳ１）。図６にその一例を示す。このデータでは、データベース３にて、〈ns:record〉〈/ns:record〉で囲まれたデータが一のレコードとしてデータベース３に追加される。なお、〈ns:origin〉〈/ns:origin〉は、各レコードとしての入出力位置を特定する情報である。
【００３６】
Webサーバ２のＣＰＵ２３は、この定義データを受け取ると、ＸＨＴＭＬの自動生成処理をおこなう。自動生成プログラムによるＸＨＴＭＬの自動生成処理の詳細について、図７を用いて説明する。まず、ＣＰＵ２３は、ルートノードとなるタグを取得する〈図７ステップＳ３１）。ルートノードは１レコード内のうち最上位に位置するノードであるので、この場合、ルートノードとなるタグは、〈連絡先〉である。ＣＰＵ２３は、ルートノードとして当該タグをメモリ２７に記憶する。
【００３７】
つぎにＣＰＵ２３は、ＸＨＴＭＬデータのヘッダ部を出力する（ステップＳ３２）。かかるヘッダ部はあらかじめ記憶しておけばよい。本実施形態においては、図８Ａに示すようなデータを記憶しておき、変数％１にルートノードのタグ（この場合”連絡先”）を入力して、出力するようにした。
【００３８】
つぎに、ＣＰＵ２３は、ルートノードの子ノード（複数ある場合は最兄を）を取得し（ステップＳ３３〉、当該ノード〈連絡先〉について、子ノードが取得できたか否か判断する（ステップＳ３４）。この場合、ルートノード〈連絡先〉には、子ノードのうち、長兄ノードとしてノード〈氏名〉が存在する。したがって、ＣＰＵ２３は、ステップＳ３４にて、子ノードを取得できたと判断し、あらかじめ記憶しているＸＨＴＭＬテキストデータを読み出して出力する（ステップＳ３６）。本実施形態においては、図８Ｃに示すようなＸＨＴＭＬテキストデータを記憶しておき、変数％３に当該ノード名をそのまま（この場合”氏名”）、変数％３に当該ノード名を上位のノードも含めて（パス名として）挿入するようにした（この場合”連絡先／氏名”）。
【００３９】
つぎに、ＣＰＵ２３は、ノード〈氏名〉の弟ノードを取得し（ステップＳ３７）、弟ノードを取得できたか否か判断する（ステップＳ３９）。弟ノードとは、同じ親にぶら下がっているノードのうち、位置的に後ろに存在するノードをいう。この場合、ノード〈氏名〉の弟ノード〈電話〉が存在するので、ＣＰＵ２３は、弟ノードを取得できたとして、ノード〈電話〉の子ノード（長兄）を取得し（ステップＳ３３）、当該ノード〈電話〉について、子ノードが取得できたか否か判断する（ステップＳ３４）。この場合、子ノードは存在しないので、ＣＰＵ２３は、子ノードが取得できなかったと判断し、ＸＨＴＭＬテキストボックスを出力する（ステップＳ３６）。すなわち、図８Ｃに示すようなＸＨＴＭＬテキストデータの変数％３に当該ノード名（この場合”電話”）が、変数％３に当該ノード名が上位のノードも含めて（パス名として）挿入される（この場合”連絡先／電話”）。
【００４０】
つぎに、ＣＰＵ２３は、ノード〈電話〉の弟ノードを取得し（ステップＳ３７）、弟ノ
ードを取得できたか否か判断する（ステップＳ３９）。この場合、ノード〈電話〉の弟ノード〈住所〉が存在するので、ＣＰＵ２３は、ステップＳ３３に進み、ノード〈住所〉の子ノードを取得し（ステップＳ３３）、当該ノード〈住所〉について、子ノードが取得できたか否か判断する（ステップＳ３４）。この場合、ノード〈住所〉には、子ノードのうち長兄ノードのノード〈住所１〉が存在するので、ＣＰＵ２３は、ステップＳ３４にて、子ノードを取得できたと判断し、ＸＨＴＭＬフレームヘッダデータを出力する（ステップＳ３５）。本実施形態においては、図８Ｂに記憶したＸＨＴＭＬフレームヘッダデータの変数％２に子ノードが取得できたノードであるノード〈住所〉を挿入して、出力するようにした。
つぎに、ＣＰＵ２３は、ノード〈住所１〉の子ノードを取得し（ステップＳ３３）、当該ノード〈住所１〉について、子ノードが取得できたか否か判断する（ステップＳ３４）。この場合、子ノードは存在しないので、ＣＰＵ２３は、ＸＨＴＭＬテキストボックスを出力する（ステップＳ３６）。この場合、変数％３に”住所１”が、変数％４に”連絡先/住所/住所１”が挿入されたＸＨＴＭＬテキストデータが出力される。
【００４１】
つぎに、ＣＰＵ２３は、弟ノードを取得し（ステップＳ３７）、弟ノードを取得できたか否か判断する（ステップＳ３９）。この場合、ノード〈住所１〉の弟ノード〈住所２〉が存在するので、ＣＰＵ２３は、ステップＳ３３に進み、この取得したノード〈住所２〉について、子ノードを取得し（ステップＳ３３）、当該ノード〈住所２〉について、子ノードが取得できたか否か判断する（ステップＳ３４）。この場合、当該ノード〈住所２〉の子ノードは存在しないので、ＣＰＵ２３は、ＸＨＴＭＬテキストデータを出力する（ステップＳ３６）。この場合、変数％３に”住所２”が、変数％４に”連絡先/住所/住所２”が挿入されたＸＨＴＭＬテキストデータが出力される。
【００４２】
つぎに、ＣＰＵ２３は、ノード〈住所２〉の弟ノードを取得し（ステップＳ３７）、弟ノードを取得できたか否か判断する（ステップＳ３９）。この場合、ＣＰＵ２３は、ステップＳ４１に進み、親ノードを取得し（ステップＳ４１）、取得したノードがルートノードか否か判断する（ステップＳ４３）。この場合、ノード〈住所〉はルートノードでないので、フレームフッタ部を出力する（ステップＳ４５）。本実施形態においては、図８Ｄに示すようなデータを記憶しておき、出力するようにした。
【００４３】
ＣＰＵ２３は、弟ノードを取得し（図７ステップＳ３７）、弟ノードを取得できたか否か判断する（ステップＳ３９）。この場合、ＣＰＵ２３は、弟ノードが取得できないので、ステップＳ４１に進み、その親ノードを取得し（ステップＳ４１）、取得したノードがルートノードか否か判断する（ステップＳ４３）。
【００４４】
この場合、ノード〈連絡先〉は親ノードであるので、ＣＰＵ２３は、フッタ部を出力する（ステップＳ４７）。本実施形態においては、図８Ｅに示すようなＸＨＴＭＬフッタデータを記憶しておき、これを出力するようにした。なお、フッタ部は、後述するように、データベース３への処理命令をユーザ端末の操作者に指定させるためのコントロールボタン（命令入力部）を表示するデータである。この例では、「追加」、「更新」、「削除」、「検索」の４つのコントロールボタンが表示される。
【００４５】
このようにして、図９ａ，図９ｂに示すようなＸＨＴＭＬデータが自動生成される。
【００４６】
生成されたＸＨＴＭＬデータは、ユーザ端末１ａに送信される（図５ステップＳ５）。ユーザ端末１ａはブラウザプログラムによりこれを読み取り、表示する（ステップＳ７）。ユーザ端末１ａには、画像については図９ａ，図９ｂに示すＸＨＴＭＬデータ基づいて、図１０に示すような階層構造の入力ボックスと、コントロールボタン５５〜５８が表示される。
【００４７】
ユーザ端末１ａの操作者は、入力ボックス５０、５１，５３，５４にデータを入力するとともに、いずれかのコントロールボタンを入力デバイスで選択する（図５ステップＳ９）。この場合、追加処理なので、ユーザ端末１ａの操作者は、コントロールボタン５５を選択する。ユーザ端末１ａは、いずれかのコントロールボタンが選択されると、ブラウザプログラムによって、入力ボックスのＩＤとその入力ボックスへの入力値が、追加処理をおこなう命令特定情報とともに、Webサーバ２に送信する（ステップＳ１１）。本実施形態においては、命令特定情報"insert"である。たとえば、図１０に示す入力ボックス５０から５４にそれぞれ、”山田太郎”、”０９０−ｘｘｘｘ−ｘｘｘｘ”、”大阪府大阪市ｘｘｘ−ｘｘｘ”、”兵庫県神戸市ｘｘｘ−ｘｘｘ”と入力されて、ボタン”挿入”が選択された場合、ユーザ端末１ａは、insert”連絡先/名前”=山田太郎、”連絡先/電話”=０９０−ｘｘｘｘ−ｘｘｘｘ，”連絡先/住所/住所１”=大阪府大阪市ｘｘｘ−ｘｘｘ，”連絡先/住所/住所２”=兵庫県神戸市ｘｘｘ−ｘｘｘを送信する。
【００４８】
Webサーバ２は、受け取ったデータから、処理内容を特定した命令文（Ｘpathを含む）を生成して、データベース３に送信する（ステップＳ１３）。この場合であれば、命令特定情報は、"insert"に対応する命令”insertflagment”を生成する。命令特定情報から生成する命令は、出力先のデータベースにおいて定められた毎に処理内容が定められているので、これをWebサーバ２に登録しておけばよい。また、Ｘpathとしては、入力ボックスのＩＤとその値（たとえば、”連絡先/名前”=山田太郎、・・・）が生成され、データベース３に送信される。
【００４９】
データベース３は、Webサーバ２から処理命令が与えられるか否か判断しており（ステップＳ１５）、命令が与えられると、指定された命令を実行する（ステップＳ１７）。かかる処理については従来と同様であるが、図１１を用いて簡単に説明する。
【００５０】
データベース３のＣＰＵ２２３は、命令の種類が、「追加」、「更新」、「削除」、「検索」のいずれであるかを判断する（ステップＳ８１）。この場合、与えられたのは、命令”insertflagment”であるので、追加位置の決定処理をおこなう（ステップＳ８３）。追加位置は全く任意でもよいが（たとえば常に一番最後など）、本実施形態においては、検索速度向上のために、共通のノードを有するレコードがあれば、その次に追加するようにした。したがって、この場合、Ｘpathで指定されたノード〈連絡先〉の下位ノードとして〈氏名〉、〈電話〉、〈住所〉という階層構造を有するレコードを検索して、その次のレコードを追加位置とする。
【００５１】
ＣＰＵ２２３は、決定された追加位置にレコードを追加する（ステップＳ８５）。これで、Ｘpathを用いた処理を終了し、結果を送信する（ステップＳ１９）。Webサーバ２がこれを受けとることにより、処理は終了する。
【００５２】
なお、「更新」、「削除」の処理については、追加位置の決定に変えて、対象レコードを特定する（図１１ステップＳ９３，ステップＳ１０３）が異なる。また、「検索」の処理については、与えられた検索条件に従って検索をおこない（ステップＳ１１５）、結果を送信する（ステップＳ１１７）。
【００５３】
このように、ユーザ端末から、インスタンス定義データが与えられると、この定義データを自動解析し、その定義データの階層構造を決定して、末端ノードについて入力ボックスを対応づけた画面を自動生成する。この画面には、ＸＭＬデータを管理するデータベースへの処理命令の種類を入力する指示ボックスが表示される。かかる画面データは、前記ユーザ端末に送信され、端末から入力データおよびその指示データが与えられると、これに基づき、データベースに命令文を与える。これにより、ユーザの望む木構造のＸＭＬデータをデータベースにデータベース処理することができる。
【００５４】
なお、本件とは異なり、全てのユーザが希望するであろう入力ボックスの木構造を予め全て用意することも理論的には可能である。しかし、現実的には膨大な組合せを用意する必要があり、多数の候補が必要となるという問題がある。これに対して、本システムのように、ユーザから与えられた定義データを解析して動的に入力画面を生成することにより、そのような候補を登録しておく必要がなく、柔軟な対応が可能となる。
【００５５】
４．他の実施形態
なお、本実施形態においては、前記定義データは、ユーザ端末から与えるようにしたが、予めハードディスクに１または２以上記憶しておき、いずれかをユーザに選択させるようにしてもよい。また、ノードの階層構造だけを記憶しておき、これにノード名を入力すると、前記定義データをウェブサーバが生成するようにしてもよい。
また、上記実施形態においては、ユーザ端末から定義データを与えるようにしたが、予めWebサーバ２に登録していた定義データについて、ユーザ属性ごとに自動判別するして、ＸＨＴＭＬデータを生成することも可能である。なお、生成されるのは、ＸＨＴＭＬに限らず、ＨＴＭＬやＸＭＬなど、規則性のあるデータフォーマットであればどのようなものであってもよい。
【００５６】
なお、上記実施形態においては、各ノード毎に、子ノードが存在しない場合に入力ボックスを配置したＸＨＴＭＬデータを生成するようにしたが、取得したノードの階層構造を決定しておき，まとめてＸＨＴＭＬデータを生成するようにしてもよい。この場合、たとえば、ステップＳ４３にて、取得したノードがルートノードである場合には、取得したノードのうち、各ノードの階層構造を決定させ、子ノードが存在すると上記フレームヘッダデータを出力し、子ノードの存在しないノードについては、ＸＭＬテキストデータを生成するようにしてもよい。
【００５７】
なお、命令生成装置ではなく、階層構造判断装置として把握することもできる。
【００５８】
５．データベース３における検索手法について
５．１  データベース３における検索手法の問題点
上記実施形態においては、データベース３におけるレコード抽出について従来と同様の検索手法を用いた。しかしながら、かかるやり方では全てのレコードの全てのノードについて一致するか否かを判断する必要があり、レコード数が増えたり、または１レコードの階層構造が複雑になると、検索速度が低下するという問題がある。たとえば、データベースに図１４に示すような階層構造のＸＭＬデータが記憶されていたとする。この場合に、ノード〈名簿／連絡先／会社／住所〉を検索する場合、通常は、検索式の先頭のノード〈名簿〉を検索する。この場合、ノード３０５、４０５が一致する。つぎに、ノード３０５の１つ下位のノードの属性名が〈名前〉であるかを判断する。この場合、ノード３０７の属性名は〈名前〉であるので検索式に合致しない。つぎのノード３０９の属性名は〈会社〉であるので検索式に合致する。つぎに、ノード３０９の１つ下位のノードの属性名が〈住所〉であるかを判断する。この場合、ノード３１１の属性名は〈郵便番号〉であるので検索式に合致しない。つぎのノード３１３の属性名は〈住所〉であるので検索式に合致する。ノード３１３の属性名は〈電話番号〉であるので検索式に合致しない。以下ノード４０５についても同様に検索をおこなう。このように全てのノードを１つ１つ合致するか否か判断する必要がある。
【００５９】
しかしこれでは、蓄積するデータ量が増えれば増えるほど、検索時間が必要となる。なお、データの位置検索を高速化する技術として、ハッシュ法が知られている。ハッシュ法とは、データの検索を高速におこなうための方法の１つであり、キー値に一定の関数（ハッシュ関数）による演算をおこない、得られた値（ハッシュ値）からハッシュテーブルを参照して格納場所を特定して検索する方法をいう。
【００６０】
たとえばノード〈名簿／連絡先／会社／住所〉は３３，４５，６７・・・、〈名簿／連絡先／自宅／住所〉は、５５，８６・・・というように、各データが記憶されているアドレスとの対応テーブルを記憶しておき、検索式が与えられると、このハッシュテーブルを参照して対応先のアドレスのデータを読み出せば、一発で検索が可能である。しかしながら、階層構造の自己記述型言語で定義されたデータ群においては、検索命令が、必ずしもすべてのノードが指定されるのではなく、ノード〈名簿／連絡先／？？？／住所〉というように、一部がワイルドカードで指定されたり、また、〈名簿／連絡先〉のように中途レベルで指定される場合がある。したがって、全ての組合せをハッシュ値として予め記憶しておくことは非現実的である。特に、データベースにおいては、一部のデータが更新、追加、削除されることを考慮すると、かかる問題はより深刻になる。
【００６１】
そこで、発明者は、上記問題を解決するために、新たな検索手法を発明した。以下の発明は、階層構造の自己記述型言語で定義されたデータ群における高速検索を可能とする検索方法および、かかる方法を実現するための装置を提供することを目的とする。
【００６２】
５．２  解決するための手段の機能ブロック
図１２に、かかる検索装置の機能ブロック図を示す。データ検索装置５００は、階層構造自己記述型文書記憶手段５０１、検索手段５０３、変更手段５０４、対応テーブル記憶手段５０５、および階層構造表記データ記憶手段５０７を備えている。階層構造自己記述型文書記憶手段５０１は、階層構造自己記述型文書を記憶する。検索手段５０３は、複数の属性ラベルの名称が階層構造で特定された検索式が与えられると、前記階層構造自己記述型文書のうち、これに合致するデータを検索する。対応テーブル記憶手段５０５は、前記階層構造自己記述型文書における各属性ラベルとそのアドレスの対応テーブルを記憶する。階層構造表記データ記憶手段５０７は、前記階層構造自己記述型文書における各属性ラベルの階層構造を、各属性ラベルが記憶されたアドレスにて表した階層構造表記データを記憶する。
検索手段５０３は、1)前記検索式が与えられると、当該検索式における最上位のノードを注目ノードとする第１ステップ、2)前記対応テーブルを参照して、前記注目ノードのアドレスを得て、前記階層構造表記データを参照して、前記注目ノードの次階層のノードのアドレスを得て、前記検索式について前記注目ノードの次階層の属性ラベルについて、前記対応テーブルを参照してそのアドレスを得て、前記次階層ノードのアドレスと、前記次階層ノードのアドレスと、前記次階層の属性ラベルのアドレスとが一致するアドレスを検出アドレスとする第２ステップ、3)前記検索式について最下位階層まで前記第２ステップを実行したかを判断し、実行している場合には、現在の検出アドレスを前記合致するデータを検索結果のアドレスとし、実行していない場合には前記第２ステップを繰り返す第３ステップを実行する。
【００６３】
変更手段５０４は、階層構造自己記述型文書記憶手段５０１に記憶された階層構造自己記述型文書について、追加や変更や削除命令が与えられると、これを実行するとともに、対応テーブル記憶手段５０５および階層構造表記データ記憶手段５０７の対応データを変更する。たとえば、追加があった場合には、対応テーブル記憶手段５０５および階層構造表記データ記憶手段５０７にこれを追加する。変更、削除の場合も同様である。
【００６４】
５．３  発明の詳細な説明
かかる発明を実現するハードウェア構成については、上記と同様であるので説明は省略する。
図４に示すデータベース３と異なる点について説明する。本実施形態においては、上記問題を解決するために、ツリー構造記憶部２２６ｔおよびハッシュテーブル記憶部２２６ｈを備え、さらに、これらを用いてデータ検索をおこなうデータ管理プログラムを備えている。
【００６５】
５．４  概要
つぎに、本装置における処理の概要について説明する。この実施例では、以下のようにして高速検索を可能とした。ハードディスク２２６に、予め、図１５のツリー構造テーブルおよび図１６のハッシュテーブルを用意しておく。かかるツリー構造テーブルおよびハッシュテーブルは、以下のようにして生成される。まず、追加するデータの各ノードについて、そのハッシュ値を演算する。ハッシュ値の決定は、たとえば、一般的なハッシュ値と同様に、予め定めたハッシュ関数を用いればよい。そして、各ノードについて、既に同じノードが存在する場合には、図１６に示すハッシュテーブルに、これに追加し、同じノードがなければ新たにノード名およびそのハッシュ値をそのハッシュテーブルに追加記憶すればよい。さらに、追加したＸＭＬデータのツリー構造における各ノードをそのハッシュ値に置き換えて、図１５に示すツリー構造テーブルに追記する。
そして、検索式として、ノードとしてＡ／Ｂ／Ｃという相対パスで特定されたノードが指定されれば、まず最初のノードＡのハッシュ値を、ハッシュテーブルから取得する。取得したハッシュ値について、前記ツリー構造テーブルから、ノードＡの子供のノードのハッシュ値を取得する。また、検索式を参照して、ノードＡの子ノードがノードＢであることを把握する。ノードＢのハッシュ値を、ハッシュテーブルから取得する。このノードＢのハッシュ値と、前記ツリー構造テーブルから得たノードＡの子供のノードのハッシュ値とを比較して、一致するハッシュ値を取得する。これ（これら）について、同様に子供のノードをツリー構造から取得する。そして検索式を参照して、ノードＢの子ノードがノードＣであることを把握し、ノードＣのハッシュ値を、ハッシュテーブルから取得する。両者の一致するハッシュ値を取得する。これを繰り返すことにより、ノードの名前と配置位置を別々に検索して、最終的には前記検索式に合致するノードのアドレスを取得することができる。
【００６６】
５．５  フローチャート
つぎに、本装置における処理について図１７を用いて説明する。以下では、検索対象ノードとして、ノード”名簿／連絡先／名前／会社／住所”が与えられた場合を例として、データ管理プログラム記憶部４２６ｓによるＣＰＵ４２３の処理について説明する。
まず、ＣＰＵ４２３は、注目ノードＮｉを初期化する（図１７ステップＳ６１）。これによりＸpathにおける０番目のノードが注目ノードとなる。この場合、”名簿”が注目ノードとなる。
【００６７】
ＣＰＵ４２３は、注目ノードＮｉのハッシュ値を図１５に示すハッシュテーブルから得る（ステップＳ６５）。この場合、ハッシュ値”２”が得られる。ＣＰＵ４２３は、ハッシュテーブルから得られたハッシュ値について、ツリー構造テーブルを用いて、注目ノードのハッシュ値に対する子ノードのハッシュ値を全て抽出する（ステップＳ６７）。この場合、ハッシュ値”３”，”１３”，”２３”，”４３”が得られる。ＣＰＵ４２３は、検索対象ノード”名簿／連絡先／名前／会社／住所”における注目ノードの子ノードについて、ハッシュテーブルからそのハッシュ値を得る（ステップＳ６９）。この場合、注目ノードの子ノードは”連絡先”であるので、ハッシュテーブルを参照して、ハッシュ値”３”，”１３”，”２３”，”４３”が得られる。ＣＰＵ４２３は、抽出した子ノードのハッシュ値と、ハッシュテーブルから得られたハッシュ値との一致するノードを記憶する（ステップＳ７１）。この場合、４つのノード全てが一致する。
【００６８】
つぎに、ＣＰＵ４２３は、Ｘpathにおける全ノードについて処理終了したか否か判断する（ステップＳ７３）。この場合、全ノードについて処理終了していないので、ステップＳ７５に進み、注目ノードＮｉをインクリメントする。これにより、Ｎｉ＝１となり、注目ノードは”連絡先”となる。
【００６９】
つぎに、ＣＰＵ４２３は、ハッシュテーブルから得られたハッシュ値について、ツリー構造テーブルを用いて、注目ノードのハッシュ値に対する子ノードのハッシュ値を全て抽出する（ステップＳ６７）。この場合、ハッシュ値”４，５，１４，１５，２４，２５，２９，４４，４５”が得られる。ＣＰＵ４２３は、注目ノードの子ノードについて、ハッシュテーブルからそのハッシュ値を得る（ステップＳ６９）。この場合、注目ノードの子ノードは”名前”であるので、ハッシュテーブルを参照して、ハッシュ値４，１４，２４，４４”が得られる。ＣＰＵ４２３は、抽出した子ノードのハッシュ値と、ハッシュテーブルから得られたハッシュ値との一致するノードを記憶する（ステップＳ７１）。この場合、ノード４，１４，２４，４４”が一致する。
【００７０】
以下同様にして、名前／会社／住所まで特定すると、ステップＳ７３からステップＳ７７に進み、候補を処理対象ノードとして特定する。この場合、最終的には、ノード７，１７，２７が特定される。
【００７１】
このように、予め、ノード名をハッシュ値で表したハッシュテーブルと、ノード間のハッシュ値の階層構造関係とを、分けて記憶しておき、検索対象階層構造データが与えられると、両者から各ノードについて順次、子ノードを探すことにより、階層構造データについてもハッシュ値を用いた検索が可能となる。
【００７２】
なお、データベースに記憶しているＸＭＬデータについて、当該レコードの変更命令が与えられると、構造自体が変更される場合には、図１５に示すツリー構造および，図１６に示す対応テーブルが変更がなされる。たとえば、図１４において、新たに、図１８Ａから図１８Ｂに示すように変更せよとの命令が与えられた場合、該当するレコードを検索して、データベースに記憶されるレコードが図１８Ｂに示すように変更される。そして、ノード〈会社〉が〈自宅〉に変更されたので、ツリー構造テーブルは図１９に示すように、ハッシュテーブルは図２０に示すように変更される。他の修正についても同様である。なお、レコードのデータ構造が変更されない場合には、ツリー構造テーブル、ハッシュテーブルの変更はされない。
【００７３】
５．６  その他
なお、上記実施形態においては、前記Ｘpathの自動生成した場合におこなう検索手法として説明したが、かかる自動生成をおこなわない場合も当然検索手法として採用することができる。
また、上記実施形態においては、ハッシュ値を記憶するようにしたが、必ずしもハッシュ値である必要はなく、ＸＭＬデータにおける各ノードのアドレスと各ノード名との対応テーブルでもよい。
【００７４】
上記実施形態においては、図１に示す機能を実現する為に、ＣＰＵを用い、ソフトウェアによってこれを実現している。しかし、その一部もしくは全てを、ロジック回路等のハードウェアによって実現してもよい。
【００７５】
なお、上記プログラムの一部の処理をオペレーティングシステム（ＯＳ）にさせるようにしてもよい。
【図面の簡単な説明】
【００７６】
【図１】本発明にかかるデータベースシステム１０の機能ブロック図である。
【図２】図１に示すWebサーバ２をＣＰＵを用いて実現したハードウエア構成の一例を示す図である。
【図３】図１に示すユーザ端末１をＣＰＵを用いて実現したハードウエア構成の一例を示す図である。
【図４】図１に示すデータベース３をＣＰＵを用いて実現したハードウエア構成の一例を示す図である。
【図５】全体のフローチャートである。
【図６】定義データの一例を示す図である。
【図７】ＸＨＴＭＬによる画面データ作成の詳細フローチャートである。
【図８】予め記憶するＸＨＴＭＬ基礎データを示す図である。
【図９ａ】生成されたＸＨＴＭＬデータを示す図である。
【図９ｂ】生成されたＸＨＴＭＬデータを示す図である。
【図１０】図９ａ，図９ｂのＸＨＴＭＬデータを表示した画面を示す図である。
【図１１】データベースにおけるデータベース処理を示すフローチャートである。
【図１２】検索速度を向上させたデータベース４００の機能ブロック図である。
【図１３】図１２に示すデータベース４００をＣＰＵを用いて実現したハードウエア構成の一例を示す図である。
【図１４】データベースに記憶されているＸＭＬデータの一例を示す図である。
【図１５】ツリー構造記憶部のデータ構造の一例を示す図である。
【図１６】ハッシュテーブルのデータ構造の一例を示す図である。
【図１７】データベース５００の検索処理のフローチャートである。
【図１８】変更前後のレコードデータである。
【図１９】変更後のツリー構造記憶部のデータ構造を示す図である。
【図２０】変更後のハッシュテーブルのデータ構造を示す図である。
【符号の説明】
【００７７】
２３・・・ＣＰＵ
２７・・・メモリ
【図１】
2005149249.tif 000003
【図２】
2005149249.tif 000004
【図３】
2005149249.tif 000005
【図４】
2005149249.tif 000006
【図５】
2005149249.tif 000007
【図６】
2005149249.tif 000008
【図７】
2005149249.tif 000009
【図８】
2005149249.tif 000010
【図９ａ】
2005149249.tif 000011
【図９ｂ】
2005149249.tif 000012
【図１０】
2005149249.tif 000013
【図１１】
2005149249.tif 000014
【図１２】
2005149249.tif 000015
【図１３】
2005149249.tif 000016
【図１４】
2005149249.tif 000017
【図１５】
2005149249.tif 000018
【図１６】
2005149249.tif 000019
【図１７】
2005149249.tif 000020
【図１８】
2005149249.tif 000021
【図１９】
2005149249.tif 000022
【図２０】
2005149249.tif 000023