JP2000331021A - 構造化文書管理システム及び方法並びに記録媒体 - Google Patents
構造化文書管理システム及び方法並びに記録媒体Info
- Publication number
- JP2000331021A JP2000331021A JP11141153A JP14115399A JP2000331021A JP 2000331021 A JP2000331021 A JP 2000331021A JP 11141153 A JP11141153 A JP 11141153A JP 14115399 A JP14115399 A JP 14115399A JP 2000331021 A JP2000331021 A JP 2000331021A
- Authority
- JP
- Japan
- Prior art keywords
- attribute
- document
- name
- index
- dtd
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
のインデックス構造を提供し、高速な文書検索を可能に
するシステムの提供。 【解決手段】データベースのスキーマとして、文書を管
理する文書クラス、文書の集合を管理する文書フォルダ
クラス、DTDを管理するDTDクラスを有し、文書ク
ラスには文書の要素の木構造関係を管理する要素ツリー
インデックス、文書フォルダクラスには文書の要素、属
性毎にインデックスを作成し管理する要素−属性インデ
ックス、DTDクラスには要素名と属性名をIDとして
管理するためのテーブルをそれぞれ持たせる。データベ
ースに文書を格納する時に、文書格納実行手段の要素ツ
リーインデックス作成手段は、要素ツリーインデックス
を、要素−属性インデックス作成手段は要素−属性イン
デックスを、要素−属性IDテーブル作成手段は要素−
属性IDテーブルをそれぞれ作成し、要素名IDと属性
名IDは数値として与える。
Description
し、特に、構造化文書をデータベースを用いて管理する
装置方法並びに記録媒体に関する。
号“<”と“>”とで囲まれた文字列、すなわちタグを文
書中に埋め込んで部分文書(「文書要素」という)を作
成し、文書要素単位で、文書の表示やデータ解析を行う
文書の作成手段として、SGML(Standardized Gene
ralized Markup Language)、XML(eXtensible M
arkup Language)、及びHTML(HyperText Markup
Language)などが知られている。これらSGML、X
ML、HTMLによって作成した文書を一般に、「構造
化文書」と呼ぶ。
は、DTD(Document Type Definition;文書型定
義)によって与えており、構造化文書の文書要素の構造
は、このDTDのタグの定義に従うことになる。
t;「要素」とも略記される)は、ある要素から見て0
または1つの親要素、すなわち自分自身を含む要素と、
0以上の子要素、すなわち自分がその内部に含む要素を
持ち、この構造を木構造で表現することができる。本明
細書では、この文書要素の木構造のことを、「構造化文
書の論理構造」と呼ぶ。
構造化文書の文書構造に関する情報をデータベースで管
理することにはいくつかの利点がある。データベースか
らの取出しの対象に、文書だけではなく文書中のタグに
よって識別される要素を単位とした部分文書(文書要
素)の取出しが可能となる。
検索や文書の書誌情報による検索に加えて、構造化文書
の論理構造に関する情報を条件とした検索が可能とな
る。すなわち要素の木構造上におけるさまざまな条件を
満たす文書、またはその文書要素を取り出すことが可能
となる。
納し、文書構造や文書自身に対するインデックスを作成
し、このインデックスを利用して特定の文書及び文書要
素を管理・検索する技術に関する刊行物として、例えば
特開平6−131340号公報、特開平10−240752号公報等の
記載が参照される。
は、登録要求とともに処理対象を文書部品(すなわち要
素)として文書処理装置から受け付ける文書部品受付手
段と、前記受け付けた文書部品を解析して論理構造を特
定する論理構造特定手段と、前記文書部品を1以上保持
する文書部品保持手段と、前記特定した論理構造のイン
デックスを生成するインデックス生成手段と、前記生成
されたインデックスを1以上保持するインデックス保持
手段と、を有する構造化文書の文書部品管理装置の構成
が開示されており、実際の文書ファイルを恒常的な2次
記憶装置に格納し、インデックスに対してアクセスを行
うことにより、実際の文書ファイルを取り出すことな
く、文書の内部構造を条件とした検索が容易となり、ま
た、多量の文書群の中から特定の構造を高速に検索する
ことが可能としている。
造化文書を対象とした構造指定検索において、論理要素
の文書中における出現位置に関する条件を指定できるよ
うにして精度の高い構造指定検索を可能にすることを課
題として、文書をデータベースに登録する際、各登録対
象文書の持つ論理構造を重ね合わせ、文書中での出現位
置が等しい構造要素を単一のメタノードによって代表さ
せた構造インデックスを作成し、文書検索時には構造イ
ンデックスを参照して指定された構造条件を満足するメ
タノードの集合を求め、それらのメタノードの識別子を
キーとして文字列インデックスを検索することにより、
指定条件を満たす文書群を求める手段を提供し、これに
より、構造化文書の集合からなる文書データベース上に
おいて、精度の高い構造指定検索が可能とした方法が開
示されている。
た刊行物等に記載された装置、及び方法は下記記載の問
題点を有している。
方法は、複数の文書の論理構造を管理するインデックス
の作成に、その複数の文書の個々の論理構造を重ね合わ
せていくことによって作成している。具体的には、文書
をデータベースに登録する際、各登録対象文書の持つ論
理構造を重ね合わせ、文書中での出現位置が等しい構造
要素を単一のメタノードによって代表させた構造インデ
ックスを作成し、文書検索時には構造インデックスを参
照して指定された構造条件を満足するメタノードの集合
を求め、それらのメタノードの識別子をキーとして文字
列インデックスを検索することにより、指定条件を満た
す文書群を求めている。
報に記載の方法では、このような複数の文書の論理構造
を重ね合わせることによって作成する構造インデックス
を検索時に利用して、ユーザが意図する論理構造条件に
適った文書を常に取出すことが保証できるか否か不明で
ある。
に従い、DTDが異なる文書は一般的に種類が異なる文
書と判断される。
ほとんど存在しないであろうし、仮に同じ構造で同じ名
前をもつ要素が文書中に存在していたとしても、それが
同じ用法に基づいた同じ意味を持つものとは限らない。
の問題は、DTDが異なる複数の文書を登録しようとす
る場合、文書中での出現位置が等しい構造要素を単一の
メタノードによって代表させた構造インデックスを作成
することが、実際には、不可能であり、仮にメタノード
を作成できたとしても、実際の文書の要素に対して意味
的な一意性を保証することはできない。
基づく検索によって取出した文書も、利用者が本当に意
図した構造要素に基づいて取出された文書かどうか保証
することはできない。
記載の方法において、インデックスは、単一のDTD、
もしくは極めて類似したDTDに従う文書に対しては有
効な方法であるが、DTDの構造が大きく異なる文書に
対しては不利な方法といえる。
の装置では、論理構造のインデックスを生成するインデ
ックス生成手段を備え、インデックスに対してアクセス
を行うことにより、実際の文書ファイルを取り出すこと
なく、文書の内部構造を条件とした検索が容易となり、
また、多量の文書群の中から特定の構造を高速に検索す
ることが可能としているが、このインデックス構造に
は、登録情報、部品種別、部品種別による固有情報など
が設けられており、インデックスとしては、情報量が多
すぎる。
メモリ上にロードされて計算されるが、計算機のメモリ
資源には限りがあり、一度にロード可能なインデックス
の情報量も制限される。
クスの情報量が小さければ小さいほど、より多くの文書
や要素に対するインデックスによる計算処理をメモリ上
で実行することが可能となり、結果として、より多量の
文書群の中から特定の構造を高速に検索することが可能
となる。
一に多量の文書群から目的の文書群をすばやく絞り込む
ことが大きな目的の一つである。
報について、目的の文書群を絞り込んだ後に、文書中か
ら取出して照合しても、検索性能全体に影響を与えるこ
とは少ないはずである。
なされたものであって、その目的は、DTDが異なるな
ど、構造の異なる複数の文書の集合に対するインデック
ス付けし、前記複数の文書の集合に対する検索時のイン
デックスを利用する装置及び方法を提供することにあ
る。
モリ化という観点から、情報量を極力抑え、構造化文書
の論理構造に基づく検索をより高速に行う方法及び装置
を提供することにある。これ以外の本発明の目的、特徴
等は以下の説明から直ちに明らかとされるであろう。
明は、データベースのスキーマとして、文書を管理する
文書クラス、文書の集合を管理する文書フォルダクラ
ス、DTDを管理するDTDクラスを有し、文書クラス
には文書の要素の木構造関係を管理する要素ツリーイン
デックス、文書フォルダクラスには文書の要素、属性毎
にインデックスを作成し管理する要素−属性インデック
ス、DTDクラスには要素名と属性名をIDとして管理
するためのテーブルをそれぞれ持たせる。
納する時に、文書格納実行手段の要素ツリーインデック
ス作成手段は、要素ツリーインデックスを、要素−属性
インデックス作成手段は要素−属性インデックスを、要
素−属性IDテーブル作成手段は要素−属性IDテーブ
ルをそれぞれ作成し、要素名IDと属性名IDは数値と
して与える。
記要素ツリーインデックス、前記要素−属性IDテーブ
ル、前記要素−属性インデックスを用いて、前記データ
ベースから、構造化文書を検索する。文書要素の取出し
に際して、構造化文書中のある文書要素からの相対的な
関係として、前記文書要素に対する親要素、祖先要素、
子要素、子孫要素、兄要素、弟要素、前要素、次要素の
うちのいずれか又はこれらの組合せで取出しを行う。
する。図1は、本発明の一実施の形態の構成を示す図で
ある。本発明の一実施の形態において、データベース1
のスキーマのクラスとして、文書を管理する文書クラス
11と、文書の集合を管理する文書フォルダクラス12
と、DTDを管理するDTDクラス13とを有する。文
書クラス11には、文書の要素の木構造関係を管理する
要素ツリーインデックス14を持たせ、文書フォルダク
ラス12には、文書の要素ごと、属性ごとにインデック
スを作成し管理する要素−属性インデックス15を持た
せ、さらにDTDクラス13には要素名と属性名をID
として管理するための要素−属性IDテーブル16を持
たせる。
章」と略記される)を格納するときは文書格納実行部2
1が起動され、検索を実行するときは検索実行部22が
起動される。
ックス作成部211と、要素−属性インデックス作成部
212と、要素−属性IDテーブル作成部213とを備
え、データベース1への文書の格納する際に、要素ツリ
ーインデックス作成部211は要素ツリーインデックス
14を、要素−属性インデックス作成部212は要素−
属性インデックス15を、要素−属性IDテーブル作成
部213は要素−属性IDテーブル16をそれぞれ作成
する。
納するためのデータ格納構造を提供し、その格納構造に
基づいた省メモリのインデックスの構造を提供し、かつ
前記インデックス構造に基づいた要素の取り出し方法を
提供している。また本発明は、データベースに複数の文
書を分類して格納し、前記分類した各文書の集合を対象
とした検索を行うシステムに利用することができる。特
に、文書の論理構造、すなわち文書中の各要素同士の関
係を制約条件とした、文書及び要素単位の検索要求を受
け付け、前記文書及び要素単位の取出しを可能としてい
る。
の論理構造、及び文書の要素、要素の属性の情報を保持
するインデックスのデータ構造を極力小さくすることに
より、計算機のメモリ資源をあまり消費させないで検索
処理を実現させる。
キーマ]まず本発明におけるデータベースのスキーマに
ついて説明する。図2は、データベースのスキーマに関
するクラスを示す図である。図2に示した記法は、OM
T(Object Modeling Technique)に準拠する。
納することは、文書格納実行部21によって格納対象の
文書を、各クラスのインスタンスとして作成し登録する
ことである。
を検索して取出すことは、文書検索実行部22によって
検索条件を満たす各クラスのインスタンスを特定し、そ
のインスタンスを文書としてシステム外部に取出すこと
である。
るために、そのスキーマのクラスとして文書クラス11
とDTDクラス13を用意する。
Dは、それぞれ文書クラス11のインスタンス、DTD
クラス13のインスタンスとして管理する。
オブジェクト」と呼ぶ。同様に、図2の文書フォルダク
ラス12のインスタンスを「文書フォルダオブジェク
ト」、DTDクラス13のインスタンスを「DTDオブ
ジェクト」と呼ぶ。
一義的に識別可能なID(識別情報)が割り振られる。
よって与えられる場合もあるし、アプリケーション側で
唯一となるように設定するようにしてもよい。
り、文書オブジェクトと、DTDオブジェクトの関係の
一例を示す図である。
B112、(文書)C113が文書クラスのインスタンスであ
り、(DTD)X131、(DTD)Y132がDTDクラス
13のインスタンスである。データベース1は、これら
個々のインスタンスを管理するとともに、どの文書が、
どのDTDに基づいて作成されたのかを表すインスタン
ス間のリンクも管理する。
文書、すなわち文書オブジェクトの全集合を管理し、文
書クラス11と文書オブジェクト111、112、113は、is
−a関係を構成するが、文書オブジェクトの集合を管理
するための手段として、文書フォルダクラス12を用意
する。
ブジェクトの集合を管理する。実際には、ある条件を満
たす文書オブジェクトの集合を一つの文書フォルダクラ
ス12のインスタンスで管理することになる。
代ごとや出版社ごとにまとめてその文書集合を管理する
ような場合である。本発明においては、文書フォルダク
ラス12と文書クラス11は、member−of関係を構成す
る。
すなわち文書フォルダオブジェクトは、木構造に基づく
分類階層を構築するための構造を有する。
クトは、親に相当する、0または1つの文書フォルダオ
ブジェクトと、子に相当する0以上の文書フォルダオブ
ジェクトとそれぞれ関係を持つことができる。
書フォルダ)α121と(文書フォルダ)β122、(文書フォル
ダ)γ123との間は、(文書フォルダ)α121が親で、(文書
フォルダ)β122と(文書フォルダ)γ123がその子となる
親子関係を持つ。
ルダ)δ124、(文書フォルダ)ε125との間は、(文書フォ
ルダ)β122が親で、(文書フォルダ)δ124と(文書フォル
ダ)ε125がその子となる親子関係、(文書フォルダ)γ12
3と(文書フォルダ)ζ126との間は、(文書フォルダ)γ12
3が親で、(文書フォルダ)ζ126がその子となる親子関係
を持つ。
を親とし、 ・その子として男女別著者の文書フォルダオブジェクト
を作成して文書を分類する、という構成、あるいは、年
代別に文書を分類する場合に、 ・例えば1990年代でまとめた文書フォルダオブジェクト
を親とし、 ・1990年代の1年ごとの文書フォルダオブジェクトを子
として分類する、 等の構成が挙げられる。
規則はないが、一般には、子の文書フォルダオブジェク
トによって親の文書フォルダオブジェクトが構成される
というpart−of関係を構成する。
おける論理構造に関する検索条件を指定して特定の文書
や要素を取出すときには、文書に含まれる要素名、属性
名などの文字列データを具体的に検索条件に指定する必
要がある。
する文書や要素を取出すためには、データベース中の文
書オブジェクトの文字列データを、計算機のメモリ上に
ロードし、前記検索条件の要素名、属性名との判定を行
う必要がある。しかしながら、要素名や属性名などの文
字列データは、文書オブジェクトが持つ文書全体の文字
列データに比べればはるかにサイズ(長さ)が小さいこ
とが一般的であり、文書オブジェクト全体をそのまま計
算機のメモリ上にロードするのは効率的でない。このた
め、要素名や属性名など、検索条件を満たすかどうかの
判定に必要な情報のみを有するインデックスをあらかじ
め作成しておいて、検索時には、インデックスのみを計
算機のメモリ上にロードして計算する方法が用いられ
る。
名を文字列データとして扱う場合、計算機のメモリに
は、その文字列長分のデータ領域を必要とする。具体的
には、1文字1バイト(かな漢字は1文字2バイト)で
ある計算機が多い。このため、データベース中の要素名
や属性名が長大であった場合には、ロードに必要なメモ
リ上のデータをそれだけ必要とすることになり、計算性
能上不利となる。
における要素名や属性名などの文字列に関するメモリの
消費を節約するために、DTDクラス13と一対一の関
係をもつ要素−属性IDテーブル16を備えている。
は、構造化文書が従うDTDによってその種類と数が限
定される。単一のDTDの範囲において、要素名は一意
に定められ、また属性名は、DTDの範囲の前記要素の
範囲において、一意に定められる。
て唯一となるような要素名IDを数値として与え、その
要素名と要素名IDとの対応関係のテーブルを作成し、
このテーブルを、DTDのオブジェクトと一対一の関係
で要素−属性IDテーブル16のインスタンスとしてデ
ータベースに格納する。
の要素に対して唯一であり、かつ異なる要素名の間で同
じ属性名が存在する場合でも、これらを識別できるよう
な属性名IDを数値で与える。すなわち属性名IDは、
その値からどの要素の属性名であるかを判別できるよう
な数値が割り当てられる。
テーブルとして作成し、そのテーブルを、先ほど作成し
た要素−属性IDテーブル16のインスタンスとして、
データベースに格納する。
要素−属性IDテーブル16におけるインスタンスの一
例を示す図である。要素名IDと属性名IDの数値の割
り当ては、前述のDTD内および要素内での一意性が保
証されれば任意の値でよい。DTDに対する要素名ID
と属性名IDの与え方の一例を示す。
要素名IDを与える処理手順を示すフローチャートであ
る。ただし、ここで扱うDTDは、妥当性が保証され、
かつDTDの内部サブセット、外部サブセット、外部実
体などの使用によって、前記DTDの記述が複数の文書
に分割されている場合には、構造化文書のDTDのパー
サ(構文解析器)によって一つの文書中にすべてがマー
ジされ、一つの文書中にDTDの情報がすべて記述され
ているものとする。またDTDのパーサによってパラメ
ータ実体も展開済みであるものとする。そして、図5に
示す処理手順は、このようなDTDについてその記述を
先頭から最後までを連続的に読み込むこととする。
iの初期化し、ステップS102、S107間のループ処理を
行う。このループ内の処理では、まず、ステップS103
でDTD内の要素型宣言(element type declaratio
n)を探し、要素型宣言が見つかった場合、ステップS1
05で、該要素宣言の要素名の要素IDを上位桁の値をi
とし、下位の桁の値を0とした数値とし、つづいてステ
ップS106で変数iを一つインクリメントする。ステップ
S104の判定において、要素型宣言が見つらない場合、
処理を終了する。なお、要素型宣言は、文書要素の名
前、要素の階層構造(親子、兄弟関係等)を規定するも
のである。
素名IDの上位桁の値とは、数字の桁において予め定め
た桁の間を境として左側の桁の値ことをいい、下位桁の
値とはその右側の桁の値ことをいう。例えば数値「1234
5678」で境目の桁の間を4、5桁目とすると、上位桁の値
は「1234」、下位桁の値は「5678」となる。
すフローチャートである。
処理は、DTD内で属性リスト宣言(attribute-list
declaration)を探して処理するものであり、属性リス
ト宣言内の要素名に相当する要素名IDを求め、属性リ
スト宣言が見つかった場合、変数iを初期化して、ルー
プ処理に入り、属性リスト宣言内で属性名を探し属性名
が見つかった場合、その属性名の属性IDを上位桁の値
を要素名ID、下位桁の値をiとした値とする。なお、
DTD内の属性リスト宣言は、要素の付加情報として属
性を定義するものであり、どの要素にどの属性が付く
か、属性名、属性として指定可能な値、デフォルト値等
を規定するものである。
が割り振られた後、前記DTDの記述の先頭から最後ま
でを連続的に読み込むこととする。
の上位桁と下位桁の意味は、図5のステップS105にお
ける要素名IDの場合と同じである。ただし条件とし
て、要素名IDと属性名IDの上位桁と下位桁の境目の
位置は同じとする。要素名IDと属性名IDの数値の桁
数をどこまで用意するか、また上位桁と下位桁をどこで
分けるかなどは、文書のDTDの中で前述の一意性を保
証すべき要素名や属性名がどれほどの数になるか予測を
立てて決定することになる。
バイトとし、その上位桁と下位桁をそれぞれ2バイトず
つとすると、文書のDTDの中で前述の一意性の保証が
可能な要素名の数は65535個(216−1)となり、同じく文
書のDTDの中の各要素の中で前述の一意性の保証が可
能な属性名の数も65535個となる。4バイトというデー
タ量は、文字列に換算すると4文字分にしか相当しな
い。実際、文字列は最後がヌル文字で終わることを考え
ると、実質3文字分である。DTD内の要素名や属性名
が3文字を超えて定義されている場合、要素名や属性名
を表すデータ領域を節約することができる。
−属性IDテーブル16の構造について説明する。
は、要素名と要素名ID、属性名と属性名IDのそれぞ
れの対応関係のテーブルを含む。よって、要素−属性I
Dテーブルの構造として、少なくとも、(要素名ID、
要素名)、(属性名ID、属性名)の二つの項目を有する
データ構造を用意する。
タエントリの順序は、それぞれ要素名、属性名の辞書的
な順序でソートしてリストとしておく。これは、各デー
タエントリの要素名、属性名の辞書的な順序を比較する
二分探索によって、それぞれ対応する要素名ID、属性
名IDをより早く調べられるようにするためである。
記したデータ構造の要素−属性IDテーブルを作成し、
DTDオブジェクトと一対一の関係を保持したままデー
タベース1に格納する。
素名ID、属性名IDを割り振った例を示す図である。
図7にはDTDの一例が示されている。図7において、
「!ELEMENT 要素名 内容モデル」が要素型宣言であ
あり、「!ATTLIST 要素名、属性値候補、デフォルト
値」は属性リスト宣言である。またCDATAは文字デ
ータのことをいう。要素型宣言の#PCDATAは混在
内容(mixed type)を指定するものである。
属性名に対応して要素名ID、属性名IDを割り振った
例を示している。要素名ID、属性名IDはヘキサデシ
マル表示で示してある。この例では、要素名IDと属性
名IDの値は16進数で4バイト、上位桁下位桁共に2バ
イトずつとしている。
ンデックス14は、要素−属性IDテーブル16の要素
名IDを用いて、各文書における構造、すなわち要素の
木構造を表現するデータ構造である。要素ツリーインデ
ックス14は各文書オブジェクトごとに作成して保持さ
せる。
ID、要素レベル、要素開始位置)の三つ組のデータ構
造を持つデータエントリのリストである。
し、データの各項目には、それぞれ要素の要素名に対応
する要素名ID、要素を木構造としたときのルート要素
からの深さ、文書中の要素の記述(開始タグを含む)の
開始バイト位置の値がそれぞれ格納される。
けるこれらのエントリの順番は、文書中の要素の開始タ
グの出現順番と等しくなるようにする。この開始タグの
出現順番は換言すれば、要素の木構造を構成したときの
左深さ優先順序となる。
す。要素ツリーインデックス14の作成は、要素ツリー
インデックス作成部211で行う。
順を示すフローチャートである。要素ツリーインデック
スの三つ組のデータ構造(要素名ID、要素レベル、要
素開始位置)の各項目の値を求め、これをエントリとし
て、要素ツリーインデックス14のリストに追加する。
ただし、ここで扱う文書は、DTDに対する妥当性が保
証され、前記DTD自身の妥当性も保証されていること
を前提とする。また文書中のタグの省略、属性値の省略
等は、構造化文書のパーサによってすべて補完されてい
ることを前提とする。図9に示した要素ツリーインデッ
クスの作成手順は、このような文書の記述を先頭から最
後までを連続的に読み込むものとする。
し、ステップS132のループa開始端とステップS143の
終了端間のループ処理を行う。
了タグのどちらかを探す。
テップS134、S135)、開始タグの最初の文字位置を求
め(ステップS136)、開始タグの要素名を求め(ステ
ップS137)、当該文書オブジェクトと関係するDTD
オブジェクトから要素−属性IDテーブルを取り出し、
要素名に対応する要素IDを求め(ステップS138)、
要素レベルの値を変数iの値とし、要素名ID、要素レ
ベル、要素開始位置の三つ組データを、要素ツリーイン
デックスのエントリに追加し(ステップS140)、つづ
いて変数iを1つインクリメントし(ステップS14
1)。
合、変数を1つデクリメントする(ステップS142)。
合、ループを飛び出して終了する。
のDTDに従う文書として、図10に示すような文書が
あるものとする。文書の左側の数字は、文書の行番号を
表すのではなく、それぞれ数字の右側に現れる要素の開
始タグや文字列の最初の文字位置、また終了タグの最後
の文字位置をそれぞれ表すものとする。
識別される要素の関係を木構造で表すと、図11に示す
ようなものとなる。
ルは要素名を表し、ノードの添字はそのノードのラベル
に対応した要素の開始位置を表している。
は、図11の木構造の左深さ優先順序となっている。
素レベル、要素開始位置)の三つ組データのリストが作
成される。その結果は、図12に示す通りである。
理構造に基づく検索には、文書の要素名、属性名、属性
値、要素の中身の文書に関する条件と、要素間の関係に
関する条件を満たすかどうかの判定を含む。
要素名、属性名、属性値、要素の中身の文書に関する検
索条件「要素名がDであり、その要素の属性a2の値が2
で、その要素の中身に文字列"string1"を含むような要
素を持つ文書」の条件判定は、TRUEとなる。
する条件「そのような要素Dを子要素に持つ要素の属性a
1の値が1である要素を持つ文書」を加えることも、文
書の論理構造に基づく検索の範囲に入る。この検索要求
を加えた図10の文書の条件判定はTRUEとなる。
係に関する条件を満たすかどうかの判定処理には、ある
要素からの相対的な関係にある要素の取出し、例えばあ
る要素の親要素、祖先要素、子要素、子孫要素、兄要
素、弟要素、前要素、次要素の取出しなどが必要とな
る。
文献(XML Pointer Language(XPointer)の相対ロケー
ション項のancestor、child、descendant、psibling、f
sibling、preceding、following)等の記載が参照され
る。
は、要素ツリーインデックスの任意のエントリを起点と
して計算することができる。
る要素からの親要素、祖先要素、子要素、子孫要素、兄
要素、弟要素、前要素、次要素を取出す手順を、それぞ
れ図13乃至図18、図21、図22にフローチャート
として示す。
を参照して、親要素の取出しの処理手順について説明す
る。
は、変数の初期化を行う。変数parentとelemは、要素ツ
リーインデックスの三つ組のエントリ、要素名ID、要
素レベル、要素開始位置の値を格納するための変数であ
る。
素のエントリを格納するためのものであり、変数elem
は、計算の過程における要素ツリーインデックスの現在
エントリを格納するためのものである。
(起点要素)のエントリの要素レベルの値を格納する。
判定は、要素ツリーインデックスにおけるエントリのリ
ストにおいて、起点となるエントリより一つ前のエント
リが存在するかということである。
4の例に即して説明する。例えば起点となるエントリが
3番目のエントリ(00030000、2、30)であるとすると、
「一つ前の要素」とは、当該エントリよりも一つ前の、
2番目のエントリ(00020000、1、20)となる。
ある」と判定され、ステップ63へ進む。
る「一つ前の要素」に相当するエントリを変数elemに代
入する。
の要素レベルが、ステップ61の初期化で設定したbaseの
値より1少ない値であるか否かを判定する。
現在のelemが求める親要素のエントリとなり、ステップ
S165でparentにelemの値を代入して処理を終了する。
ステップS162に戻り、該elemに対する一つ前の要素が
あるか否かを判定して、以降は、前述と同様の処理を繰
り返す。
チャートを参照して、祖先要素の取出しの処理手順につ
いて説明する。
を行う。変数ancestorとelemは、要素ツリーインデック
スのエントリの値を格納するための変数である。それぞ
れの変数の用途は、ancestorは、フローチャートで求め
る、祖先要素のエントリを格納するためのものであり、
変数elemは、計算の過程における要素ツリーインデック
スの現在エントリを格納するためのものである。
ベルの値を格納する。変数nは、n番目の祖先要素を取出
すために指定された値である。変数iは、繰り返し処理
に関するカウンタとして用いる。
図13のステップS162からステップS164までと同様で
ある。
現在のelemがi番目の祖先要素のエントリとなる。
要素elemが求めるn番目の祖先要素か否かを判定し、YES
であればステップS177でancestorにelemの値を代入し
て処理を終了する。
れば、該elemに対する親要素を求めるべく、ステップS
176でbeseの値を新たに当該elemの要素レベルに設定し
直し、かつiの値を一つ繰り上げて、ステップS172に戻
ってもう一度処理を繰り返す。
ャートを参照して、子要素の取出しの処理手順について
説明する。
を行う。変数childとelemは、要素ツリーインデックス
のエントリの値を格納するための変数である。それぞれ
の変数の用途は、childは本フローチャートで求める子
要素のエントリを格納するためのものであり、変数elem
は計算の過程における要素ツリーインデックスの現在エ
ントリを格納するためのものである。
ベルの値を格納する。変数nは、n番目の子要素を取出す
ために指定された値である。
して用いる。
か」とは、要素ツリーインデックスにおけるエントリの
リストにおいて、起点となるエントリより一つ後のエン
トリが存在するかということである。
例で説明すると、例えば起点となるエントリが3番目の
エントリ(00030000、2、30)であるとすると、一つ後の
要素とは、そのエントリより一つ後の、4番目のエント
リ(00040000、3、40)となる。よって、この例の場合
は、一つ後の要素がある」と判定され、ステップ83へと
進む。
る一つ後の要素に相当するエントリを変数elemに代入す
る。
の要素レベルが、ステップS181の初期化で設定したbas
eの値よりも大きい値であるか否かを判定する。
ステップS185へ進む。
ば、処理を終了する。ステップS185では、さらにelem
の要素レベルが、baseの値よりも1多い値であるか否か
を判定する。
現在のelemがi番目の子要素のエントリとなる。そして
ステップS186で、そのi番目の子要素elemが求めるn番
目の子要素か否かを判定し、YESであればステップS188
でchildにelemの値を代入して処理を終了する。
次の子要素を求めるべく、ステップS187でiの値を一つ
繰り上げて、ステップS182に戻ってもう一度処理を繰
り返す。
ートを参照して、子孫要素の取出しの処理手順について
説明する。
を行う。変数descendantとelemは、要素ツリーインデッ
クスのエントリの値を格納するための変数である。それ
ぞれの変数の用途は、descendantは、この処理で求める
子孫要素のエントリを格納するためのものであり、変数
elemは計算の過程における要素ツリーインデックスの現
在エントリを格納するためのものである。
ベルの値を格納する。
指定された値である。
として用いる。
図15のステップS182からステップS184までと同様で
ある。
現在のelemがi番目の子孫要素のエントリとなる。
要素elemが求めるn番目の子孫要素か否かを判定し、YES
であれば、ステップ97でdescendantにelemの値を代入し
て処理を終了する。
次の子孫要素を求めるべく、ステップS196でiの値を一
つ繰り上げて、ステップS192に戻ってもう一度処理を
繰り返す。
ャートを参照して、兄要素の取出しの処理手順について
説明する。
を行う。変数psiblingとelemは、要素ツリーインデック
スのエントリの値を格納するための変数である。
の処理手順で求める兄要素のエントリを格納するための
ものであり、変数elemは計算の過程における要素ツリー
インデックスの現在エントリを格納するためのものであ
る。
ベルの値を格納する。
定された値である。
として用いる。
図13のステップS162からステップS163までと同様で
ある。
の要素レベルが、ステップS201の初期化で設定したbas
eの値と同じであるか否かを判定する。
現在のelemがi番目の兄要素のエントリとなる。
素elemが求めるn番目の子孫要素か否かを判定し、YESで
あれば、ステップa8でpsiblingにelemの値を代入して、
処理を終了する。
次の兄要素を求めるべく、ステップS207でiの値を一つ
繰り上げて、ステップS202に戻って、もう一度処理を
繰り返す。
ステップS205に進み、ステップS203のelemの要素レベ
ルが、baseの値よりも大きい値であるか否かを判定す
る。
ステップS202に戻って、もう一度処理を繰り返す。判
定結果がNOであれば、処理を終了する。
ャートを参照して、弟要素の取出しの処理手順について
説明する。
う。変数fsiblingとelemは、要素ツリーインデックスの
エントリの値を格納するための変数である。
は、この処理で求める弟要素のエントリを格納するため
のものであり、変数elemは計算の過程における要素ツリ
ーインデックスの現在エントリを格納するためのもので
ある。
ベルの値を格納する。変数nはn番目の弟要素を取出すた
めに指定された値である。
して用いる。
図15のステップS182からステップS183までと同様で
ある。
の要素レベルが、ステップS211の初期化で設定したbas
eの値と同じであるか否かを判定する。
現在のelemがi番目の弟要素のエントリとなる。
素elemが求めるn番目の子孫要素か否かを判定し、YESで
あればステップS218でfsiblingにelemの値を代入して
処理を終了する。
次の兄要素を求めるべく、ステップS217でiの値を一つ
繰り上げて、ステップS212に戻ってもう一度処理を繰
り返す。
ステップS215に進み、ステップS213のelemの要素レベ
ルが、baseの値よりも大きい値であるか否かを判定す
る。
ステップS212に戻ってもう一度処理を繰り返す。判定
結果がNOであれば処理を終了する。
要素よりもさらに弟の要素が存在しない場合、その弟要
素を末弟要素と呼ぶ。「末弟要素の取出し」プロセス
は、後に示す「右深さ優先順序での子孫要素の取出し」
に必要なサブプロセスである。
要素の取出しの処理手順について説明する。
う。変数fsiblingとelemは、要素ツリーインデックスの
エントリの値を格納するための変数である。それぞれの
変数の用途は、psiblingは、この処理で求める末弟要素
のエントリを格納するためのものであり、変数elemは計
算の過程における要素ツリーインデックスの現在エント
リを格納するためのものである。変数baseは起点要素の
エントリの要素レベルの値を格納する。
図18のステップS212からステップS214までと同様で
ある。
現在のelemは弟要素のエントリとして、ステップS225
でfsiblingにelemの値を代入する。ただし、このfsibli
ngが末弟であるかどうかはこの時点では分からないの
で、ステップS222に戻ってもう一度処理を繰り返し、f
siblingの値を逐次更新していく。
ステップS226に進み、ステップS223のelemの要素レベ
ルが、baseの値よりも大きい値であるか否かを判定す
る。
ステップS222に戻ってもう一度処理を繰り返す。判定
結果がNOであれば処理を終了する。
右深さ優先順序での子孫要素の取出しプロセスは、後述
する前要素の取出しに必要なサブプロセスである。
した木構造において、右から左へ深さ優先で要素をたど
るときに得られる順序である。
現順番は、図11の木構造では、左から右へ深さ優先で
要素をたどるときに得られる順序と一致する。よって、
右深さ優先順序で取出される要素の順番は、文書の要素
の開始タグの出現順番とは異なる。
て、右深さ優先順序での子孫要素の取出しの処理手順に
ついて説明する。
う。変数descendantとelemは、要素ツリーインデックス
のエントリの値を格納するための変数である。それぞれ
の変数の用途は、descendantは、この処理で求める子孫
要素のエントリを格納するためのものであり、変数elem
は計算の過程における要素ツリーインデックスの現在エ
ントリを格納するためのものである。変数nは、n番目の
子孫要素を取出すために指定された値である。変数iは
繰り返し処理に関するカウンタとして用いる。
要素の取出し」を呼び出し、当該要素elemの末弟要素の
エントリを取出す。
たか否かを判定し、判定結果がYESであれば、その取出
した要素のエントリがi番目の子孫要素のエントリとな
る。
トリをelemに代入し、ステップS235でそのi番目の子孫
要素elemが求めるn番目の子孫要素か否かを判定する。
テップS242でdescendantにelemの値を代入して処理を
終了する。
テップS236へ進む。またステップS233の判定結果がNO
であれば処理を終了する。
げ、また別の繰り返し処理用カウンタjを新たに用意し
て1に初期化する。
による「右深さ優先順序での子孫要素の取出し」の再帰
呼び出しとなる。
たか否かを判定し、判定結果がYESであれば、ステップ
S239で取出した要素に相当するエントリをelemに代入
し、elemがi番目の子孫要素のエントリとなる。
要素elemが求めるn番目の子孫要素か否かを判定し、YES
であれば、ステップS242でdescendantにelemの値を代
入して処理を終了する。
次の子孫要素を求めるべく、ステップS241でiとjの値
を一つ繰り上げて、ステップS237の再帰呼び出しに戻
って同様の処理を繰り返す。
ステップS243に進み、サブプロセス「兄要素の取出
し」を呼び出す。
兄要素を取出せたか否かを判定し、判定結果がYESであ
れば、ステップS245で取出した要素に相当するエント
リをelemに代入し、elemがi番目の子孫要素のエントリ
となる。
要素elemが求めるn番目の子孫要素か否かを判定し、YES
であればステップdgでdescendantにelemの値を代入して
処理を終了する。
次の子孫要素を求めるべく、ステップS236でiの値を一
つ繰り上げ、jの値を再度1に初期化して、ステップS23
7の再帰呼び出しに戻って同様の処理を繰り返す。
チャートを参照して、前要素の取出しの処理手順につい
て説明する。
う。変数precedingとelemは、要素ツリーインデックス
のエントリの値を格納するための変数である。
この処理で求める前要素のエントリを格納するためのも
のであり、変数elemは、計算の過程における要素ツリー
インデックスの現在エントリを格納するためのものであ
る。変数nは、n番目の前要素を取出すために指定された
値である。変数iは、繰り返し処理に関するカウンタと
して用いる。
素の取出し」を呼び出し、当該要素elemの1番目の兄要
素のエントリを取出す。
否かを判定し、判定結果がYESであれば、ステップS259
で取出した要素に相当するエントリをelemに代入し、el
emがi番目の前要素のエントリとなる。
要素elemが求めるn番目の前要素か否かを判定し、YESで
あればステップS267でprecedingにelemの値を代入して
処理を終了する。
テップS261へ進む。またステップS253の判定結果がNO
であればステップS254へ進む。
げ、また別の繰り返し処理用カウンタjを新たに用意し
て1に初期化する。
jでサブプロセス「右深さ優先順序での子孫要素の取出
し」を呼び出す。
か否かを判定し、判定結果がYESであれば、ステップS2
64で取出した要素に相当するエントリをelemに代入し、
elemがi番目の前要素のエントリとなる。
素elemが求めるn番目の前要素か否かを判定し、YESであ
ればステップS267でprecedingにelemの値を代入して処
理を終了する。
次の前要素を求めるべく、ステップS266でiとjの値を
一つ繰り上げて、ステップS262に戻って同様の処理を
繰り返す。
ステップS252に戻ってもう一度処理を繰り返す。
素の取出し」を呼び出し、当該要素elemの親要素のエン
トリを取出す。ステップS255でその親要素を取出せた
か否かを判定し、判定結果がYESであれば、ステップS2
56で取出した要素に相当するエントリをelemに代入し、
elemがi番目の前要素のエントリとなる。
素elemが求めるn番目の前要素か否かを判定し、YESであ
ればステップS267でprecedingにelemの値を代入して処
理を終了する。
の前要素を求めるべく、ステップS258でiの値を一つ繰
り上げて、ステップS252に戻ってもう一度処理を繰り
返す。
理を終了する。
ャートを参照して、次要素の取出しの処理手順について
説明する。
う。変数followingとelemは、要素ツリーインデックス
のエントリの値を格納するための変数である。それぞれ
の変数の用途について説明すると、followingは、この
処理で求める次要素のエントリを格納するためのもので
あり、変数elemは計算の過程における要素ツリーインデ
ックスの現在エントリを格納するためのものである。変
数nは、n番目の次要素を取出すために指定された値であ
る。変数iは、繰り返し処理に関するカウンタとして用
いる。
素の取出し」を呼び出し、当該要素elemの1番目の弟要
素のエントリを取出す。
否かを判定し、判定結果がYESであれば、ステップS279
で取出した要素に相当するエントリをelemに代入し、el
emがi番目の次要素のエントリとなる。
素elemが求めるn番目の次要素か否かを判定し、YESであ
れば、ステップS287でfollowingにelemの値を代入して
処理を終了する。
テップS281へ進む。またステップS273の判定結果がNO
であればステップS274へ進む。
げ、また別の繰り返し処理用カウンタjを新たに用意し
て1に初期化する。
jでサブプロセス「子孫要素の取出し」を呼び出す。ス
テップS283でその子孫要素を取出せたか否かを判定
し、判定結果がYESであれば、ステップS284で取出した
要素に相当するエントリelemに代入し、elemがi番目の
次要素のエントリとなる。
素elemが求めるn番目の次要素か否かを判定し、YESであ
ればステップS287でfollowingにelemの値を代入して処
理を終了する。
次の次要素を求めるべく、ステップS286でiとjの値を
一つ繰り上げて、ステップS282に戻って同様の処理を
繰り返す。
ステップS272に戻ってもう一度処理を繰り返す。
素の取出し」を呼び出し、当該要素elemの親要素のエン
トリを取出す。
否かを判定し、判定結果がYESであれば、ステップS276
で取出した要素に相当するエントリをelemに代入し、el
emがi番目の次要素のエントリとなる。
素elemが求めるn番目の次要素か否かを判定し、YESであ
ればステップS287でfollowingにelemの値を代入して処
理を終了する。
次の次要素を求めるべく、ステップS278でiの値を一つ
繰り上げて、ステップS272に戻ってもう一度処理を繰
り返す。ステップS275の判定結果がNOであれば処理を
終了する。
ンデックス15は、文書フォルダオブジェクトごとに作
成して保持するものであり、文書フォルダオブジェクト
が保有する文書集合から、要素名、属性名、属性値を条
件に、文書または要素を検索するために用いる。
D、要素−属性名ID、属性値、文書ID、要素開始位
置)の五つ組みのデータ構造を持つデータエントリのリ
ストとする。
−属性名IDとは、要素名IDもしくは属性名IDであ
る。要素名IDは前述の通り、DTDオブジェクト内で
唯一なIDである。属性名IDもDTDオブジェクト内
の要素名に対して唯一なIDで、かつ異なる要素名で同
じ属性名が存在してもそれを識別可能なIDである。
作成では、文書中の要素が一つも属性を持たない場合、
その要素に対応するエントリを一つ作成し、その要素−
属性名IDの値を、その要素の要素名IDとする。
は、その属性に対応する分のエントリを作成し、各属性
に対応する要素−属性名IDの値を、その属性の属性名
IDとする。属性名IDからどの要素の属性名であるか
を判別できるので、属性名IDを持つエントリからその
エントリに対応する要素を特定することが可能である。
び文書IDについて説明する。DTDIDおよび文書I
Dは、それぞれデータベース中のDTDクラス、文書ク
ラスの各インスタンスに割り当てられた、それぞれのク
ラス内で唯一に識別可能なオブジェクトIDである。こ
の番号は、データベース管理システムによって与えられ
るか、もしくは、アプリケーション側で唯一となるよう
に与えるようにしてもよい。
おけるDTDID、文書IDの値は、要素−属性名ID
に対応する要素を持つ文書の文書ID、その文書が従う
DTDのDTDIDとなる。
値は、文字通り、属性の値である。要素−属性インデッ
クス15のエントリにおける属性値の値は、要素−属性
名IDに対応する属性の属性値となる。
明する。要素開始位置とは、要素ツリーインデックス1
4における要素開始位置と同じで、文書中の要素の記述
(開始タグを含む)の開始バイト位置の値である。要素−
属性インデックスのエントリにおける要素開始位置の値
は、要素−属性名IDに対応する要素の要素開始位置と
なる。
示す。要素−属性インデックスの作成は、要素−属性イ
ンデックス作成部212で行われる。
クス15の作成手順を示すフローチャートであり、要素
−属性インデックス15の前記五つ組みのデータ構造
(DTDID、要素−属性名ID、属性値、文書ID、
要素開始位置)の各項目の値を求め、(DTDID、要素
−属性名ID)の値でソートした順序を保ちながら、前
記要素−属性インデックスのリストに作成したエントリ
を追加する処理手順を示している。
る妥当性が保証され、前記DTD自身の妥当性も保証さ
れていることを前提とする。また文書中のタグの省略、
属性値の省略等は、構造化文書のパーサによってすべて
補完されていることを前提とする。そして、図23及び
図24に示す処理はこのような文書の記述の先頭から最
後までを連続的に読み込むこととする。
02で文書フォルダオブジェクトに文書オブジェクトを追
加すると、ステップS303、ステップS304で、前記文書
オブジェクトと関係するDTDオブジェクトも同時に追
加する。
係を持つ要素−属性IDテーブルの情報を基にしなが
ら、以下のステップでは、追加した文書オブジェクトの
各要素に対する要素−属性インデックスのエントリを作
成・追加していく。
ロセスを呼び出している。図23のステップS312で与
える(DTDID、要素名ID)を元に、図25のステッ
プS331では、その(DTDID、要素名ID)を持つエ
ントリのリストを探す。
フローチャートを示すサブプロセスを呼び出している。
性インデックスの全エントリのリストに対する開始位置
と終了位置、そしてDTDIDの値を目的のデータとし
て、要素−属性インデックスのリストから同じDTDI
Dの値を持つエントリのリストを探す。
リリストが見つかったか否かを判定する。
4とステップS361で、そのエントリリストの開始位置と
終了位置が返却されるため、図25のステップS333で
さらにその開始位置と終了位置のエントリリストを対象
に、同じ要素−属性名IDの値を持つエントリのリスト
を探す。
つかったか否かを判定し、見つかった場合は、図26の
ステップS355でリスト上の挿入位置が返却されるの
で、図25のステップS335でその挿入位置を返却す
る。
プS334において対象とするエントリリストが見つから
なかった場合も、図26のステップS348でリスト上の
挿入位置が返却されるので、ステップS335でその挿入
位置を返却する。
5のサブプロセスを呼び出している。ただし、与えるデ
ータは(DTDID、属性名ID)であり、以降の処理は
前述の(DTDID、要素名ID)の場合と同様である。
ス15のエントリが作成され、かつそのエントリの順序
は、(DTDID、要素−属性名ID)の値でソート済み
の順序となる。
を、(DTDID、要素−属性名ID)の値でソートして
おく目的は、エントリの検索において、(DTDID、
要素−属性名ID)をキーとした二分探索を可能とする
ためである。
にフローチャートを示したサブプロセスが行う。
る、エントリの検索手順を示す図である。ステップS37
1では、図26に示すサブプロセスを呼び出している。
ックスの全エントリのリストに対する開始位置と終了位
置、そしてDTDIDの値を目的のデータとして、要素
−属性インデックスのリストから同じDTDIDの値を
持つエントリのリストを探す。
が見つかったか否かを判定する。
4とステップS361で、そのエントリリストの開始位置と
終了位置が返却されるので、ステップS373でさらにそ
の開始位置と終了位置のエントリリストを対象に、同じ
要素−属性名IDの値を持つエントリのリストを探す。
つかったか否かを判定し、見つかった場合は、前述のD
TDIDの場合と同様に、該当するエントリ・リストの
開始位置と終了位置が返却される。
ープ処理では、この返却されたエントリの一つ一つに対
して適用する。
性値に対する条件判定を行い、ステップS377の判定の
結果、YESであったエントリをステップS378で返却す
る。
さまざまな場合が考えられるが、例えば属性値が数値で
あった場合の算術的な判定、属性値が文字列であった場
合の文字列一致やその部分的な一致などが挙げられる。
格納実行部21の配列ツリーインデックス作成部21
1、要素−属性インデックス作成部212、要素−属性
テーブル作成部213の各処理ステップ、及び検索実行
部22は、コンピュータで実行されるプログラムにより
実行される。例えば図5、図6、図9、図12乃至図2
7等に示したフローチャートに従い所望のプログラミン
グ言語でプログラムを作成し実行モジュールを作成し、
該ソースプログラム又は実行モジュールを記録した、コ
ンピュータで読み出し可能な記録媒体、もしくは、コン
ピュータが通信接続可能な通信媒体から、該プログラム
を読み出してコンピュータにインストールして実行する
ことで、本発明を実施することができる。
構造を基にした文書検索例に関して説明する。
びその要素の検索]図28にインスタンス図として示す
ように、文書フォルダオブジェクトが一つあり、文書フ
ォルダオブジェクトは3つの文書オブジェクトA、B、C
を管理し、さらに文書オブジェクトは、個々に、DTD
オブジェクトX、Yと関係付けられているとする。
れぞれ1、2、3とし、DTDオブジェトX、YのDTDI
Dはそれぞれ1、2とする。
ジェクトX、Yも管理する。
容の例を示す図である。図28の左側の数字は、文書の
行番号を表しているのではなく、それぞれ前記数字の右
側に現れる要素の開始タグの最初の文字位置、また終了
タグの最後の文字位置をそれぞれ表しているものとす
る。
トX、Yが管理する要素−属性IDテーブルをそれぞれ示
す図である。
ォルダオブジェクトに登録すると、文書フォルダオブジ
ェクトは、図23及び図24で示した手順に従い、図3
2に示す要素−属性インデックスを作成する。
で、属性"pID"が1000以上の要素"患者"を取出せ」に
対する、検索実行部22の検索処理の手順について説明
する。
の要素"患者"の取出し:
管理するDTDオブジェクトX、Yの要素−属性IDテー
ブル、及びX、YのDTDIDをロードする。
IDテーブルから、検索要求で用いられている要素名("
患者"、"疾患記録")、属性名("pID")の要素名ID、
属性名IDを調べる。
の場合: −"患者"=00030000、"pID"=00030001、"疾患記録"=00
040000 ・DTDオブジェクトY(DTDIDは2)の場合: −"患者"=00040000、"pID"=00040001、"疾患記録"=00
050000 ・"患者"と"pID"のIDの上位2バイトが同じ値であ
ることから、属性"pID"は、要素"患者"の属性である
ことが分かる。
要素−属性インデックスにおいて、(DTDID、"pI
D"の属性名ID)と、属性値が1000以上という条件を満
たすデータを、図27に示した検索探索の手順に従って
検索する。
条件は、「属性値が1000以上」となる。結果、以下のエ
ントリが返却される。
た部分の要素が検索結果に該当する。「×」を付けた部
分は、属性値の条件である1000以上を満たさなかった要
素"患者"を表している。
の子孫要素であるかどうかのチェック: a)各データの文書IDから文書オブジェクトをロード
し、各文書オブジェクトの要素ツリーインデックスをロ
ードする。
ブジェクトの要素ツリーインデックスを示す、図35
は、文書C(文書IDは3)の文書オブジェクトの要素ツ
リーインデックスを示す図である。
に示した要素ツリーインデックス作成手順によってあら
かじめ作成されたものである。
デックスを基に、ステップ1のc)で求めた属性"pID"
が1000以上の要素"患者"が、要素"疾患記録"の子孫要素
であるか否かを計算する。この計算処理が、文書の論理
構造に基づく検索に相当する。
出しによって、要素"疾患記録"の子孫要素にステップ1
のc)で求めた要素"患者"が存在するかチェックする。
ックスにおける三番目のデータ項目「要素開始位置」
と、要素−属性インデックスの五番目のデータ項目「要
素開始位置」の値は、同じ要素であるならば同じ値とな
ることから、要素"疾患記録"の子孫要素の「要素開始位
置」の中に、ステップ1のc)で求めた要素−属性インデ
ックスのエントリの「要素開始位置」の値が含まれてい
るかを調べることによって判定することができる。
記録"の子孫要素となる。
けた部分の要素が最終的な検索結果に該当する。
要素開始位置から、検索結果である要素の中身を取出
し、返却する。
記載の効果を奏する。
どで構造の異なる複数の構造化文書の集合に対する検索
において、各文書の構造に基づく検索を正しく実行可能
としている、ということである。
く検索は可能であり、また複数の文書に対する構造に基
づく検索では、例えば特開平10−240752号公報等に、複
数の文書の構造を代表させる構造インデックスを用いた
検索などが提案されているが、前述したように、上記特
開平10−240752号公報等に記載される方法では、前記構
造インデックスが、各文書の構造を必ずしも正しく代表
しているとは限らない、という問題点を有しており、前
記構造インデックスを用いて検索を行っても、各文書の
論理構造の条件を正しく反映した検索結果が返ってくる
保証は得られなかった。
れるDTDを、各文書ごとにリンクして管理し、文書の
構造に基づく検索では、各文書ごとのDTDの情報を参
照することにより、各文書ごとの正しい論理構造に基づ
く検索を実現している。
検索に利用するためのインデックスの作成方法および利
用法を提供することにより、その検索性能を向上する、
ということである。
書の要素名や属性名を指定することが多い。要素名や属
性名は通常は文字列で表されるので、上記特開平6−131
340号公報記載の装置では、インデックスとして前記要
素名や属性名の文字列を直接扱っているが、インデック
スとして文字列を扱うことの問題点は、文字列は一般に
可変長であり、文書の要素に対して必要なインデックス
の容量をあらかじめ予測できないこと、そしてその文字
列が長大であった場合、その分だけインデックスの容量
を必要とする。
て、DTDクラスに要素−属性IDテーブルを備えてお
り、要素名や属性名はあるDTDの範囲で唯一に定めら
れることに着目し、各要素名、属性名に対応する要素名
ID、属性名IDを与えてその対応関係を要素−属性I
Dテーブルとして保持して管理したものであり、要素名
IDと属性名IDは数値として与えている。例えば32ビ
ット計算器におけるint型(整数型)のデータとして与
えた場合、要素名ID、属性名IDに必要な容量は固定
長で32ビットとなり、32ビットは半角文字に換算すると
4文字分であり、インデックスの省メモリ化を図ること
ができる。
り多くの文書に関する情報を一度に計算機のメモリ上に
ロード可能にすることを意味し、結果として文書の検索
性能の向上につながる。
ンデックスを備え、要素ツリーインデックスは、各文書
における要素間の関係を表すインデックスであり、各要
素に対して(要素名ID、要素レベル、要素開始位置)の
三つ組のデータを与えてその文書の構造を管理する。要
素ツリーインデックスの各エントリに必要な容量は、各
項目とも数値で表すこととができるので、例えば32ビッ
ト計算器におけるint型のデータとして与えれば、一エ
ントリに対して96ビット、12バイトとなる。すなわち、
要素ツリーインデックスも省メモリなインデックスとい
える。
る要素からの親要素、祖先要素、子要素、子孫要素、兄
要素、弟要素、前要素、次要素などの相対的な関係にあ
る要素の取出しを可能にするので、構造に基づく検索要
求に応えるためのインデックスとしては前記12バイト
の構造で必要十分な情報量といえる。
して、要素−属性インデックスを備えている。要素−属
性インデックスは、本発明の文書フォルダクラスのイン
デックスとして、複数の文書に対する要素や属性の情報
を保持するインデックスである。インデックスの構造
は、(DTDID、要素−属性名ID、属性値、文書I
D、要素開始位置)であり、二番目の項目「要素−属性
名ID」で要素名IDまたは属性名IDを用いており、
文字列をそのまま用いるよりはサイズを小さく抑え、ま
た固定長としている。
TDオブジェクトの要素−属性IDテーブルを参照する
ことにより、各DTDで定義した要素名、属性名に基づ
いた検索条件の判定を可能としている。
をエントリ一つ一つに持たせたので、DTDが異なる複
数の文書を単一のインデックスで扱うことを可能として
いる。
文書オブジェクトを特定して、要素ツリーインデックス
を用いて構造に基づく条件判定を行ったり、要素開始位
置から即座に該当する要素を取出すことも可能としてい
る。
いては、(DTDID、要素−属性名ID)でソートした
順序としている。
ID)を検索キーとした二分探索によるエントリの検索
を可能とし、より高速な目的の文書や要素の取出しを可
能としている。
スキーマに関するクラスを示す図である。
ンスとDTDのインスタンスの間のリンク関係の例を示
す図である。
ブジェクトの木構造に基づく分類階層の一例を示す図で
ある。
の範囲における要素名IDの一意な割り振り方法の一例
を示す図である。
範囲における属性名IDの一意な割り振り方法の一例を
示す図である。
示す図である。
属性名IDを保持する要素−属性IDテーブルを示す図
である。
デックスの作成手順を示す流れ図である。
示す図である。
す図である。
スを示す図である。
し手順を示す流れ図である。
出し手順を示す流れ図である。
し手順を示す流れ図である。
出し手順を示す流れ図である。
し手順を示す流れ図である。
し手順を示す流れ図である。
出し手順を示す流れ図である。
序での子孫要素の取出し手順を示す流れ図である。
し手順を示す流れ図である。
し手順を示す流れ図である。
ンデックスの作成手順を示す流れ図(その1)である。
ンデックスの作成手順を示す流れ図(その2)である。
ンデックスにおける、エントリの挿入位置を求める手順
を示す流れ図である。
ータに対する目的のデータの取出し手順、およびデータ
の挿入位置の計算手順を示す流れ図である。
ンデックスにおける、エントリの検索手順を示す流れ図
である。
書、DTDの各オブジェクトの関係の例を示すインスタ
ンスを示す図である。
A、B、Cを示す図である。
トXの要素−属性IDテーブルを示す図である。
トYの要素−属性IDテーブルを示す図である。
ックスを示す図である。
が1000以上の要素"患者"の検索結果を示す図である。
Aの要素ツリーインデックスを示す図である。
Cの要素ツリーインデックスを示す図である。
子孫要素である要素"患者"の検索結果を示す図である。
Claims (28)
- 【請求項1】構造化文書を管理するシステムにおいて、 データベースのスキーマとして、 文書を管理する文書クラスと、 前記文書のDTD(Document Type Definition;文書
型定義)を管理するDTDクラスと、 前記文書とDTDの集合を管理する文書フォルダクラス
と、 を有するデータベースを備えたことを特徴とする構造化
文書管理システム。 - 【請求項2】前記データベースが、インデックスとし
て、 前記文書クラスには、文書の要素の木構造関係を管理す
る要素ツリーインデックスを備え、 前記文書フォルダクラスには、文書の要素ごと属性ごと
にインデックスを作成し管理する要素−属性インデック
スを備え、 前記DTDクラスには、要素名と属性名をIDとして管
理するための要素−属性IDテーブルを備えたことを特
徴とする請求項1記載の構造化文書管理システム。 - 【請求項3】前記データベースに文書を格納する手段
が、 前記要素ツリーインデックスを作成する手段と、 前記要素−属性IDテーブルを作成する手段と、 前記要素−属性インデックスを作成する手段と、を備え
たことを特徴とする請求項2記載の構造化文書管理シス
テム。 - 【請求項4】前記要素−属性IDテーブルが、文書にお
ける要素の要素名、及び属性名にそれぞれ対応する、数
値よりなる要素名ID、属性名IDを備えている、こと
を特徴とする請求項2又は3記載の構造化文書管理シス
テム。 - 【請求項5】前記要素ツリーインデックスが、各文書に
おける要素間の関係を表すインデックスをなし、前記イ
ンデックスの構造が、前記各要素に対して、(要素名I
D、前記要素を木構造で表したときのルート要素からの
深さを表す要素レベル、要素の開始位置)の三つ組の項
目データを備えて文書の構造を表し、前記各項目は数値
で表されている、ことを特徴とする請求項2又は3記載
の構造化文書管理システム。 - 【請求項6】前記要素ツリーインデックスを用いて、あ
る要素に対して、その親要素、祖先要素、子要素、子孫
要素、兄要素、弟要素、前要素、次要素などの相対的な
関係にある要素の取出しを可能としている、ことを特徴
とする請求項5記載の構造化文書管理システム。 - 【請求項7】前記要素−属性インデックスが、複数の文
書に対する要素や属性の情報を保持するインデックスを
なし、(DTDID、要素−属性名ID、属性値、文書
ID、要素開始位置)の五つ組よりなる、ことを特徴と
する請求項2又は3記載の構造化文書管理システム。 - 【請求項8】前記DTDIDからは、DTDオブジェク
トの要素−属性IDテーブルを参照することにより、各
DTDで定義した要素名、属性名に基づいた検索条件の
判定を可能とするとともにDTDに関する情報との関係
をインデクッスの各エントリに備え、DTDが異なる複
数の文書を単一のインデックスで扱うことを可能とし、
前記文書IDからは、文書オブジェクトを特定して前記
要素ツリーインデックスを用いて構造に基づく条件判
定、要素開始位置からの要素を取出しを可能としてい
る、ことを特徴とする請求項7記載の構造化文書管理シ
ステム。 - 【請求項9】前記要素−属性IDテーブルが、要素名I
Dと要素名の対応、属性名IDと属性名の対応を備え、 前記DTD内で定義される各要素名に対して唯一となる
要素名IDが数値として与えられ、前記要素名と要素名
IDとの対応関係をテーブルとして作成し、前記テーブ
ルが、前記DTDクラスのインスタンスであるオブジェ
クトと一対一の関係で、前記要素−属性IDテーブルの
インスタンスとして前記データベースに格納され、 属性名についても、DTDオブジェクト内の要素に対し
て唯一であり、かつ互いに異なる要素名の間で同じ属性
名が存在する場合でもこれらを識別できるような属性名
IDが数値として与えられ、前記属性名と属性名IDと
の対応関係をテーブルとして作成し前記テーブルが前記
要素−属性IDテーブルのインスタンスとして前記デー
タベースに格納されている、ことを特徴とする請求項2
又は3記載の構造化文書管理システム。 - 【請求項10】前記要素−属性インデックスを作成する
手段が、 前記DTDで定義される各要素名に対して唯一となるよ
うな要素名IDを数値として与え、前記要素名と要素名
IDとの対応関係をテーブルとして作成し、前記作成し
た前記テーブルを、前記DTDクラスのインスタンスで
あるオブジェクトと一対一の関係で要素−属性IDテー
ブルのインスタンスとして前記データベースに格納し、 属性名についても、DTDオブジェクト内の要素に対し
て唯一であり、かつ互いに異なる要素名の間で同じ属性
名が存在する場合でもこれらを識別できるような属性名
IDに数値を与え、前記属性名と属性名IDとの対応関
係をテーブルとして作成し、前記作成したテーブルを前
記要素−属性IDテーブルのインスタンスとして、デー
タベースに格納する、ことを特徴とする請求項3記載の
構造化文書管理システム。 - 【請求項11】前記要素ツリーインデックスを作成する
手段が、 文書の要素の開始タグの最初の文字位置、終了タグの最
後の文字位置を求め、要素開始位置として開始タグの中
の要素名を求め、前記文書の文書オブジェクトと関係す
るDTDオブジェクトから要素−属性IDテーブルを取
り出して、前記要素の要素名IDを求め、つづいて、前
記要素を木構造で表したときのルート要素からの深さを
表す要素レベルを求め、(要素名ID、要素レベル、要
素開始位置)の三つ組よりなるエントリを追加する、こ
とを特徴とする請求項3記載の構造化文書管理システ
ム。 - 【請求項12】前記要素−属性インデックスを作成する
手段が、前記五つ組みのデータ構造(DTDID、要素
−属性名ID、属性値、文書ID、要素開始位置)の各
項目の値を求め、(DTDID、要素−属性名ID)値
でソートした順序を保ちながら、前記要素−属性インデ
ックスのリストに作成したエントリを追加する、ことを
特徴とする請求項3記載の構造化文書管理システム。 - 【請求項13】前記要素−属性インデックスを作成する
手段が、文書フォルダクラスのインスタンスをなすオブ
ジェクトに、文書オブジェクトを追加した際に、前記文
書オブジェクトと関係するDTDオブジェクトも同時に
追加し、前記追加した文書オブジェクトの各要素に対す
る要素−属性インデックスのエントリを作成して追加す
る、ことを特徴とする請求項3記載の構造化文書管理シ
ステム。 - 【請求項14】前記要素−属性インデックスを作成する
手段が、文書の要素の開始タグを探し、開始タグの最初
の文字位置と開始タグの要素名を求め、前記文書オブジ
ェクトと関係するDTDオブジェクトと1対1の関係を
持つ要素−属性IDテーブルから前記要素名に対応する
要素IDを求め、 前記開始タグの中の属性を求め属性がない場合、 (DTDID、要素名ID)で要素−属性インデックス
に対する挿入位置を求め、該挿入位置に、(DTDI
D、要素−属性名ID、ヌル、文書ID、要素開始位
置)のエントリを追加し、 前記開始タグの中に属性がある場合、前記属性の属性値
について要素−属性IDテーブルから前記属性名に対応
する属性IDを求め、 (DTDID、属性名ID)で要素−属性インデックス
に対する挿入位置を求め、該挿入位置に、(DTDI
D、要素−属性名ID、ヌル、文書ID、要素開始位
置)のエントリを追加する、ことを特徴とする請求項3
記載の構造化文書管理システム。 - 【請求項15】前記要素ツリーインデックス、前記要素
−属性IDテーブル、前記要素−属性インデックスを用
いて、前記データベースから、構造化文書を検索する検
索手段を備えたことを特徴とする請求項2又は3記載の
構造化文書管理システム。 - 【請求項16】文書要素の取出しに際して、構造化文書
中のある文書要素からの相対的な関係として、前記文書
要素に対する親要素、祖先要素、子要素、子孫要素、兄
要素、弟要素、前要素、次要素のうちのいずれか又はこ
れらの組合せで取出しを行う検索手段を備えた、ことを
特徴とする請求項1乃至3のいずれか一に記載の構造化
文書管理システム。 - 【請求項17】前記検索手段が、文書やその要素の検索
にあたり、DTDが異なるなど論理構造が互いに異なる
複数の構造化文書に対する検索を行う、ことを特徴とす
る請求項16記載の構造化文書管理システム。 - 【請求項18】構造化文書をデータベースで管理する装
置において、 前記データベースが、スキーマのクラスとして、 文書を管理する文書クラスと、 前記文書のDTD(Document Type Definition;文書
型定義)を管理するDTDクラスと、 前記文書とDTDの集合を管理する文書フォルダクラス
と、 を有し、 第1のインデックスとして、前記文書クラスには、文書
の要素の木構造関係を管理する要素ツリーインデックス
を備え、 第2のインデックスとして、前記文書フォルダクラスに
は、文書の要素ごと属性ごとにインデックスを作成し管
理する要素−属性インデックスを備え、 第3のインデックスとして、前記DTDクラスには、要
素名と属性名をIDとして管理するための要素−属性I
Dテーブルであって、文書における要素の要素名、及び
属性名にそれぞれ対応する、数値よりなる要素名ID、
属性名IDを有する要素−属性IDテーブルを備え、 前記データベースに文書の格納する文書格納実行手段
が、 前記要素ツリーインデックスを作成する手段と、 前記要素−属性IDテーブルを作成する手段と、 前記要素−属性インデックスを作成する手段を備え、 前記データベースから文書を検索する検索手段が、前記
文書の論理構造に基づき検索を行うにあたり、前記要素
ツリーインデックス、前記要素−属性IDテーブル、前
記要素−属性インデックスを用いて検索する、ことを特
徴とする構造化文書管理装置。 - 【請求項19】前記検索手段が、文書要素の取出しに際
して、構造化文書中のある文書要素からの階層的な関係
として、前記文書要素に対する親要素、祖先要素、子要
素、子孫要素、兄要素、弟要素、前要素、次要素のうち
のいずれか又はこれらの組合せで取出しを行う、ことを
特徴とする請求項18記載の構造化文書管理装置。 - 【請求項20】前記検索手段が、文書やその要素の検索
にあたり、DTDが異なるなど論理構造が互いに異なる
複数の構造化文書に対する検索を行う、ことを特徴とす
る請求項18記載の構造化文書管理装置。 - 【請求項21】前記要素ツリーインデックスが、各文書
における要素間の関係を表すインデックスをなし、前記
インデックスの構造が、前記各要素に対して、(要素名
ID、前記要素を木構造で表したときのルート要素から
の深さを表す要素レベル、要素の開始位置)の三つ組の
項目データを備えている、ことを特徴とする請求項18
記載の構造化文書管理装置。 - 【請求項22】前記要素−属性インデックスが、複数の
文書に対する要素や属性の情報を保持するインデックス
をなし、(DTDID、要素−属性名ID、属性値、文
書ID、要素開始位置)の五つ組よりなる、ことを特徴
とする請求項18記載の構造化文書管理装置。 - 【請求項23】前記要素−属性IDテーブルが、要素名
IDと要素名の対応、属性名IDと属性名の対応を備
え、 前記DTD内で定義される各要素名に対して唯一となる
ような要素名IDが数値として与えられ、前記要素名と
要素名IDとの対応関係をテーブルとして作成し、前記
テーブルが、前記DTDクラスのインスタンスであるオ
ブジェクトと一対一の関係で、前記要素−属性IDテー
ブルのインスタンスとして前記データベースに格納さ
れ、 属性名についても、DTDオブジェクト内の要素に対し
て唯一であり、かつ互いに異なる要素名の間で同じ属性
名が存在する場合でもこれらを識別できるような属性名
IDが数値として与えられ、前記属性名と属性名IDと
の対応関係をテーブルとして作成し前記テーブルが前記
要素−属性IDテーブルのインスタンスとして前記デー
タベースに格納されている、ことを特徴とする請求項1
8記載の構造化文書管理装置。 - 【請求項24】データベースのスキーマとして、文書を
管理する文書クラスと、 前記文書のDTD(Document Type Definition;文書
型定義)を管理するDTDクラスと、 前記文書とDTDの集合を管理する文書フォルダクラス
と、 を有し、 第1のインデックスとして、前記文書クラスには、文書
の要素の木構造関係を管理する要素ツリーインデックス
を備え、 第2のインデックスとして、前記文書フォルダクラスに
は、文書の要素ごと属性ごとにインデックスを作成し管
理する要素−属性インデックスを備え、 前記要素−属性インデックスが、複数の文書に対する要
素や属性の情報を保持するインデックスをなし、(DT
DID、要素−属性名ID、属性値、文書ID、要素開
始位置)の五つ組よりなり、 第3のインデックスとして、前記DTDクラスには、要
素名と属性名をIDとして管理するための要素−属性I
Dテーブルであって、文書における要素の要素名、及び
属性名にそれぞれ対応する、数値よりなる要素名ID、
属性名IDを有する要素−属性IDテーブルを有するデ
ータベースを備え、 文書を前記データベースの格納する際、 (a)前記要素−属性IDテーブルを作成するにあた
り、前記DTDで定義される各要素名に対して唯一とな
るような要素名IDを数値として与え、前記要素名と要
素名IDとの対応関係をテーブルとして作成し、前記作
成した前記テーブルを、前記DTDクラスのインスタン
スであるオブジェクトと一対一の関係で要素−属性ID
テーブルのインスタンスとして前記データベースに格納
し、属性名についても、DTDオブジェクト内の要素に
対して唯一であり、かつ互いに異なる要素名の間で同じ
属性名が存在する場合でもこれらを識別できるような属
性名IDに数値を与え、前記属性名と属性名IDとの対
応関係をテーブルとして作成し、前記作成したテーブル
を前記要素−属性IDテーブルのインスタンスとして、
前記データベースに格納するステップと、 (b)前記要素ツリーインデックスを作成するにあた
り、文書の要素の開始タグの最初の文字位置、終了タグ
の最後の文字位置を求め、要素開始位置として開始タグ
の中の要素名を求め、前記文書の文書オブジェクトと関
係するDTDオブジェクトから要素−属性IDテーブル
を取り出して、前記要素の要素名IDを求め、つづい
て、前記要素を木構造で表したときのルート要素からの
深さを表す要素レベルを求め、(要素名ID、要素レベ
ル、要素開始位置)の三つ組よりなるエントリを追加す
るステップと、 (c)前記要素−属性インデックスを作成するにあた
り、前記五つ組みのデータ構造(DTDID、要素−属
性名ID、属性値、文書ID、要素開始位置)の各項目
の値を求め、DTDID、要素−属性名ID)値でソー
トした順序を保ちながら、前記要素−属性インデックス
のリストに作成したエントリを追加するステップと、を
含み、 前記データベースから前記文書の論理構造に基づき検索
を行うに際して、前記要素ツリーインデックス、前記要
素−属性IDテーブル、前記要素−属性インデックスを
用いて検索するステップを含む、ことを特徴とする構造
化文書管理方法。 - 【請求項25】前記データベースから前記文書の論理構
造に基づき検索を行うに際して、前記要素ツリーインデ
ックスを用いて、ある要素から相対的な関係にある要素
として、親要素、祖先要素、子要素、子孫要素、兄要
素、弟要素、前要素、次要素のうちいずれか又はこれら
の組合せで取出す、ことを特徴とする請求項24記載の
構造化文書管理方法。 - 【請求項26】前記要素−属性インデックスを作成する
にあたり、文書フォルダクラスのインスタンスをなすオ
ブジェクトに、文書オブジェクトを追加した際に、前記
文書オブジェクトと関係するDTDオブジェクトも同時
に追加し、前記追加した文書オブジェクトの各要素に対
する要素−属性インデックスのエントリを作成して追加
し、文書の要素の開始タグを探し、開始タグの最初の文
字位置と開始タグの要素名を求め、前記文書オブジェク
トと関係するDTDオブジェクトと1対1の関係を持つ
要素−属性IDテーブルから前記要素名に対応する要素
IDを求め、 前記開始タグの中の属性を求め属性がない場合、 (DTDID、要素名ID)で要素−属性インデックス
に対する挿入位置を求め、該挿入位置に、(DTDI
D、要素−属性名ID、ヌル、文書ID、要素開始位
置)のエントリを追加し、 前記開始タグの中に属性がある場合、前記属性の属性値
について要素−属性IDテーブルから前記属性名に対応
する属性IDを求め、 (DTDID、属性名ID)で要素−属性インデックス
に対する挿入位置を求め、該挿入位置に、(DTDI
D、要素−属性名ID、ヌル、文書ID、要素開始位
置)のエントリを追加することを特徴とする請求項24
記載の構造化文書管理方法。 - 【請求項27】文書やその要素の検索にあたり、DTD
が異なるなど論理構造が互いに異なる複数の構造化文書
に対する検索を行う、ことを特徴とする請求項24記載
の構造化文書管理方法。 - 【請求項28】データベースのスキーマとして、文書を
管理する文書クラスと、 前記文書のDTD(Document Type Definition;文書
型定義)を管理するDTDクラスと、 前記文書とDTDの集合を管理する文書フォルダクラス
と、 を有し、 第1のインデックスとして、前記文書クラスには、文書
の要素の木構造関係を管理する要素ツリーインデックス
を備え、 第2のインデックスとして、前記文書フォルダクラスに
は、文書の要素ごと属性ごとにインデックスを作成し管
理する要素−属性インデックスを備え、 前記要素−属性インデックスが、複数の文書に対する要
素や属性の情報を保持するインデックスをなし、(DT
DID、要素−属性名ID、属性値、文書ID、要素開
始位置)の五つ組よりなり、 第3のインデックスとして、前記DTDクラスには、要
素名と属性名をIDとして管理するための要素−属性I
Dテーブルであって、文書における要素の要素名、及び
属性名にそれぞれ対応する、数値よりなる要素名ID、
属性名IDを有する要素−属性IDテーブルを有するデ
ータベースを備えた構造化文書管理装置において、 文書を前記データベースの格納するにあたり、 (a)前記DTDで定義される各要素名に対して唯一と
なるような要素名IDを数値として与え、前記要素名と
要素名IDとの対応関係をテーブルとして作成し、前記
作成した前記テーブルを、前記DTDクラスのインスタ
ンスであるオブジェクトと一対一の関係で要素−属性I
Dテーブルのインスタンスとして前記データベースに格
納し、属性名についても、DTDオブジェクト内の要素
に対して唯一であり、かつ互いに異なる要素名の間で同
じ属性名が存在する場合でもこれらを識別できるような
属性名IDに数値を与え、前記属性名と属性名IDとの
対応関係をテーブルとして作成し、前記作成したテーブ
ルを前記要素−属性IDテーブルのインスタンスとし
て、前記データベースに格納する、要素−属性インデッ
クスの作成処理と、 (b)文書の要素の開始タグの最初の文字位置、終了タ
グの最後の文字位置を求め、要素開始位置として開始タ
グの中の要素名を求め、前記文書の文書オブジェクトと
関係するDTDオブジェクトから要素−属性IDテーブ
ルを取り出して、前記要素の要素名IDを求め、つづい
て、前記要素を木構造で表したときのルート要素からの
深さを表す要素レベルを求め、(要素名ID、要素レベ
ル、要素開始位置)の三つ組よりなるエントリを追加す
る、要素ツリーインデックスの作成処理と、 (c)文書フォルダクラスのインスタンスをなすオブジ
ェクトに、文書オブジェクトを追加した際に、前記文書
オブジェクトと関係するDTDオブジェクトも同時に追
加し、前記追加した文書オブジェクトの各要素に対する
要素−属性インデックスのエントリを作成して追加し、
文書の要素の開始タグを探し、開始タグの最初の文字位
置と開始タグの要素名を求め、前記文書オブジェクトと
関係するDTDオブジェクトと1対1の関係を持つ要素
−属性IDテーブルから前記要素名に対応する要素ID
を求め、 前記開始タグの中の属性を求め属性がない場合、 (DTDID、要素名ID)で要素−属性インデックス
に対する挿入位置を求め、該挿入位置に、(DTDI
D、要素−属性名ID、ヌル、文書ID、要素開始位
置)のエントリを追加し、 前記開始タグの中に属性がある場合、前記属性の属性値
について要素−属性IDテーブルから前記属性名に対応
する属性IDを求め、 (DTDID、属性名ID)で要素−属性インデックス
に対する挿入位置を求め、該挿入位置に、(DTDI
D、要素−属性名ID、ヌル、文書ID、要素開始位
置)のエントリを追加する、要素−属性インデックス作
成処理、及び、 (d)前記データベースから前記文書の論理構造に基づ
き検索を行うにあたり、前記要素ツリーインデックス、
前記要素−属性IDテーブル、前記要素−属性インデッ
クスを用いて検索し、その際、前記要素ツリーインデッ
クスを用いてある要素から相対的な関係にある要素とし
て、親要素、祖先要素、子要素、子孫要素、兄要素、弟
要素、前要素、次要素のうちいずれか又はこれらの組合
せで取出す処理、 の前記(a)乃至(d)の処理を前記構造化文書管理装
置を構成するコンピュータで実行させるためのプログラ
ムを記録したコンピュータで読み出し可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP14115399A JP3508623B2 (ja) | 1999-05-21 | 1999-05-21 | 構造化文書管理システム及び方法並びに記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP14115399A JP3508623B2 (ja) | 1999-05-21 | 1999-05-21 | 構造化文書管理システム及び方法並びに記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000331021A true JP2000331021A (ja) | 2000-11-30 |
JP3508623B2 JP3508623B2 (ja) | 2004-03-22 |
Family
ID=15285376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP14115399A Expired - Fee Related JP3508623B2 (ja) | 1999-05-21 | 1999-05-21 | 構造化文書管理システム及び方法並びに記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3508623B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004178084A (ja) * | 2002-11-25 | 2004-06-24 | Systems Engineering Constructions Co Ltd | Xmlデータの格納方法及び格納装置、並びにプログラムおよびプログラムを記録した記録媒体 |
WO2005006192A1 (ja) * | 2003-07-10 | 2005-01-20 | Fujitsu Limited | 構造化文書処理方法及び装置並びに記憶媒体 |
JP2007514239A (ja) * | 2003-12-18 | 2007-05-31 | インテル・コーポレーション | 効果的な省スペースxmlパーシング |
-
1999
- 1999-05-21 JP JP14115399A patent/JP3508623B2/ja not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004178084A (ja) * | 2002-11-25 | 2004-06-24 | Systems Engineering Constructions Co Ltd | Xmlデータの格納方法及び格納装置、並びにプログラムおよびプログラムを記録した記録媒体 |
WO2005006192A1 (ja) * | 2003-07-10 | 2005-01-20 | Fujitsu Limited | 構造化文書処理方法及び装置並びに記憶媒体 |
JP2007514239A (ja) * | 2003-12-18 | 2007-05-31 | インテル・コーポレーション | 効果的な省スペースxmlパーシング |
JP4688816B2 (ja) * | 2003-12-18 | 2011-05-25 | インテル・コーポレーション | 効果的な省スペースxmlパーシング |
Also Published As
Publication number | Publication date |
---|---|
JP3508623B2 (ja) | 2004-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6105022A (en) | Structured-text cataloging method, structured-text searching method, and portable medium used in the methods | |
US5649192A (en) | Self-organized information storage system | |
US6510425B1 (en) | Document search method for registering documents, generating a structure index with elements having position of occurrence in documents represented by meta-nodes | |
JP3842573B2 (ja) | 構造化文書検索方法、構造化文書管理装置及びプログラム | |
US7962494B2 (en) | Method, information processing apparatus, and program for generating array | |
JP3842577B2 (ja) | 構造化文書検索方法および構造化文書検索装置およびプログラム | |
EP2192497A1 (en) | Apparatus and method for comparing computer documents using tree structures | |
EP1218831A1 (en) | System and method for performing similarity searching | |
US20020002566A1 (en) | Transfromation of marked up documents using a base architecture | |
CN101477571A (zh) | 网络内容语义结构标注的方法和装置 | |
US7159171B2 (en) | Structured document management system, structured document management method, search device and search method | |
Wouters et al. | A practical approach to the derivation of a materialized ontology view | |
US20090019067A1 (en) | Method, apparatus, and program for inserting node | |
US20090193053A1 (en) | Information management system | |
JP3508623B2 (ja) | 構造化文書管理システム及び方法並びに記録媒体 | |
Liu et al. | A general multi-source data fusion framework | |
JP2002202973A (ja) | 構造化文書管理装置 | |
JP3842572B2 (ja) | 構造化文書管理方法および構造化文書管理装置およびプログラム | |
Zhang et al. | Odaies: ontology-driven adaptive Web information extraction system | |
JP2001331490A (ja) | 構造化文書格納装置、構造化文書検索装置、構造化文書格納検索装置及びプログラム並びにプログラム記録媒体 | |
Wang et al. | Deriving relation keys from XML keys | |
JP3842574B2 (ja) | 情報抽出方法および構造化文書管理装置およびプログラム | |
Sierra et al. | Tagging learning objects with evolving metadata schemas | |
JP3842575B2 (ja) | 構造化文書検索方法、構造化文書管理装置及びプログラム | |
Subramaniam et al. | Enriching one taxonomy using another |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20031202 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20031215 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080109 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090109 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100109 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110109 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110109 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120109 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130109 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130109 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |