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
Application number
JP11141153A
Other languages
English (en)
Other versions
JP3508623B2 (ja
Inventor
Takuya Kitano
拓哉 北野
Misa Namiuchi
みさ 波内
Kunitoshi Tsuruoka
邦敏 鶴岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP14115399A priority Critical patent/JP3508623B2/ja
Publication of JP2000331021A publication Critical patent/JP2000331021A/ja
Application granted granted Critical
Publication of JP3508623B2 publication Critical patent/JP3508623B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 (修正有) 【課題】計算機のメモリ上で十分に実行可能な省メモリ
のインデックス構造を提供し、高速な文書検索を可能に
するシステムの提供。 【解決手段】データベースのスキーマとして、文書を管
理する文書クラス、文書の集合を管理する文書フォルダ
クラス、DTDを管理するDTDクラスを有し、文書ク
ラスには文書の要素の木構造関係を管理する要素ツリー
インデックス、文書フォルダクラスには文書の要素、属
性毎にインデックスを作成し管理する要素−属性インデ
ックス、DTDクラスには要素名と属性名をIDとして
管理するためのテーブルをそれぞれ持たせる。データベ
ースに文書を格納する時に、文書格納実行手段の要素ツ
リーインデックス作成手段は、要素ツリーインデックス
を、要素−属性インデックス作成手段は要素−属性イン
デックスを、要素−属性IDテーブル作成手段は要素−
属性IDテーブルをそれぞれ作成し、要素名IDと属性
名IDは数値として与える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、文書管理技術に関
し、特に、構造化文書をデータベースを用いて管理する
装置方法並びに記録媒体に関する。
【0002】
【従来の技術】[構造化文書]テキスト文書の中に、記
号“<”と“>”とで囲まれた文字列、すなわちタグを文
書中に埋め込んで部分文書(「文書要素」という)を作
成し、文書要素単位で、文書の表示やデータ解析を行う
文書の作成手段として、SGML(Standardized Gene
ralized Markup Language)、XML(eXtensible M
arkup Language)、及びHTML(HyperText Markup
Language)などが知られている。これらSGML、X
ML、HTMLによって作成した文書を一般に、「構造
化文書」と呼ぶ。
【0003】タグのタグ名やタグ同士の関係などの定義
は、DTD(Document Type Definition;文書型定
義)によって与えており、構造化文書の文書要素の構造
は、このDTDのタグの定義に従うことになる。
【0004】タグによって識別される文書要素(elemen
t;「要素」とも略記される)は、ある要素から見て0
または1つの親要素、すなわち自分自身を含む要素と、
0以上の子要素、すなわち自分がその内部に含む要素を
持ち、この構造を木構造で表現することができる。本明
細書では、この文書要素の木構造のことを、「構造化文
書の論理構造」と呼ぶ。
【0005】[構造化文書のデータベースによる管理]
構造化文書の文書構造に関する情報をデータベースで管
理することにはいくつかの利点がある。データベースか
らの取出しの対象に、文書だけではなく文書中のタグに
よって識別される要素を単位とした部分文書(文書要
素)の取出しが可能となる。
【0006】またデータベースからの検索手段に、全文
検索や文書の書誌情報による検索に加えて、構造化文書
の論理構造に関する情報を条件とした検索が可能とな
る。すなわち要素の木構造上におけるさまざまな条件を
満たす文書、またはその文書要素を取り出すことが可能
となる。
【0007】このような構造化文書をデータベースに格
納し、文書構造や文書自身に対するインデックスを作成
し、このインデックスを利用して特定の文書及び文書要
素を管理・検索する技術に関する刊行物として、例えば
特開平6−131340号公報、特開平10−240752号公報等の
記載が参照される。
【0008】このうち上記特開平6−131340号公報で
は、登録要求とともに処理対象を文書部品(すなわち要
素)として文書処理装置から受け付ける文書部品受付手
段と、前記受け付けた文書部品を解析して論理構造を特
定する論理構造特定手段と、前記文書部品を1以上保持
する文書部品保持手段と、前記特定した論理構造のイン
デックスを生成するインデックス生成手段と、前記生成
されたインデックスを1以上保持するインデックス保持
手段と、を有する構造化文書の文書部品管理装置の構成
が開示されており、実際の文書ファイルを恒常的な2次
記憶装置に格納し、インデックスに対してアクセスを行
うことにより、実際の文書ファイルを取り出すことな
く、文書の内部構造を条件とした検索が容易となり、ま
た、多量の文書群の中から特定の構造を高速に検索する
ことが可能としている。
【0009】また上記特開平10−240752号公報には、構
造化文書を対象とした構造指定検索において、論理要素
の文書中における出現位置に関する条件を指定できるよ
うにして精度の高い構造指定検索を可能にすることを課
題として、文書をデータベースに登録する際、各登録対
象文書の持つ論理構造を重ね合わせ、文書中での出現位
置が等しい構造要素を単一のメタノードによって代表さ
せた構造インデックスを作成し、文書検索時には構造イ
ンデックスを参照して指定された構造条件を満足するメ
タノードの集合を求め、それらのメタノードの識別子を
キーとして文字列インデックスを検索することにより、
指定条件を満たす文書群を求める手段を提供し、これに
より、構造化文書の集合からなる文書データベース上に
おいて、精度の高い構造指定検索が可能とした方法が開
示されている。
【0010】
【発明が解決しようとする課題】しかしながら、上記し
た刊行物等に記載された装置、及び方法は下記記載の問
題点を有している。
【0011】上記特開平10−240752号公報に記載される
方法は、複数の文書の論理構造を管理するインデックス
の作成に、その複数の文書の個々の論理構造を重ね合わ
せていくことによって作成している。具体的には、文書
をデータベースに登録する際、各登録対象文書の持つ論
理構造を重ね合わせ、文書中での出現位置が等しい構造
要素を単一のメタノードによって代表させた構造インデ
ックスを作成し、文書検索時には構造インデックスを参
照して指定された構造条件を満足するメタノードの集合
を求め、それらのメタノードの識別子をキーとして文字
列インデックスを検索することにより、指定条件を満た
す文書群を求めている。
【0012】しかしながら、上記特開平10−240752号公
報に記載の方法では、このような複数の文書の論理構造
を重ね合わせることによって作成する構造インデックス
を検索時に利用して、ユーザが意図する論理構造条件に
適った文書を常に取出すことが保証できるか否か不明で
ある。
【0013】一般的に、構造化文書はある特定のDTD
に従い、DTDが異なる文書は一般的に種類が異なる文
書と判断される。
【0014】DTDが異なれば同じ要素名を持つ文書は
ほとんど存在しないであろうし、仮に同じ構造で同じ名
前をもつ要素が文書中に存在していたとしても、それが
同じ用法に基づいた同じ意味を持つものとは限らない。
【0015】上記特開平10−240752号公報に記載の方法
の問題は、DTDが異なる複数の文書を登録しようとす
る場合、文書中での出現位置が等しい構造要素を単一の
メタノードによって代表させた構造インデックスを作成
することが、実際には、不可能であり、仮にメタノード
を作成できたとしても、実際の文書の要素に対して意味
的な一意性を保証することはできない。
【0016】このため、そのような構造インデックスに
基づく検索によって取出した文書も、利用者が本当に意
図した構造要素に基づいて取出された文書かどうか保証
することはできない。
【0017】すなわち、上記特開平10−240752号公報に
記載の方法において、インデックスは、単一のDTD、
もしくは極めて類似したDTDに従う文書に対しては有
効な方法であるが、DTDの構造が大きく異なる文書に
対しては不利な方法といえる。
【0018】一方、上記特開平6−131340号公報に記載
の装置では、論理構造のインデックスを生成するインデ
ックス生成手段を備え、インデックスに対してアクセス
を行うことにより、実際の文書ファイルを取り出すこと
なく、文書の内部構造を条件とした検索が容易となり、
また、多量の文書群の中から特定の構造を高速に検索す
ることが可能としているが、このインデックス構造に
は、登録情報、部品種別、部品種別による固有情報など
が設けられており、インデックスとしては、情報量が多
すぎる。
【0019】一般に、インデックスの情報は、計算機の
メモリ上にロードされて計算されるが、計算機のメモリ
資源には限りがあり、一度にロード可能なインデックス
の情報量も制限される。
【0020】一つの文書や一つの要素に対するインデッ
クスの情報量が小さければ小さいほど、より多くの文書
や要素に対するインデックスによる計算処理をメモリ上
で実行することが可能となり、結果として、より多量の
文書群の中から特定の構造を高速に検索することが可能
となる。
【0021】インデックスを利用した文書検索では、第
一に多量の文書群から目的の文書群をすばやく絞り込む
ことが大きな目的の一つである。
【0022】インデックス構造が内包するいくつかの情
報について、目的の文書群を絞り込んだ後に、文書中か
ら取出して照合しても、検索性能全体に影響を与えるこ
とは少ないはずである。
【0023】したがって本発明は、上記問題点に鑑みて
なされたものであって、その目的は、DTDが異なるな
ど、構造の異なる複数の文書の集合に対するインデック
ス付けし、前記複数の文書の集合に対する検索時のイン
デックスを利用する装置及び方法を提供することにあ
る。
【0024】本発明の他の目的は、インデックスの省メ
モリ化という観点から、情報量を極力抑え、構造化文書
の論理構造に基づく検索をより高速に行う方法及び装置
を提供することにある。これ以外の本発明の目的、特徴
等は以下の説明から直ちに明らかとされるであろう。
【0025】
【課題を解決するための手段】前記目的を達成する本発
明は、データベースのスキーマとして、文書を管理する
文書クラス、文書の集合を管理する文書フォルダクラ
ス、DTDを管理するDTDクラスを有し、文書クラス
には文書の要素の木構造関係を管理する要素ツリーイン
デックス、文書フォルダクラスには文書の要素、属性毎
にインデックスを作成し管理する要素−属性インデック
ス、DTDクラスには要素名と属性名をIDとして管理
するためのテーブルをそれぞれ持たせる。
【0026】本発明において、データベースに文書を格
納する時に、文書格納実行手段の要素ツリーインデック
ス作成手段は、要素ツリーインデックスを、要素−属性
インデックス作成手段は要素−属性インデックスを、要
素−属性IDテーブル作成手段は要素−属性IDテーブ
ルをそれぞれ作成し、要素名IDと属性名IDは数値と
して与える。
【0027】また本発明において、文書検索手段は、前
記要素ツリーインデックス、前記要素−属性IDテーブ
ル、前記要素−属性インデックスを用いて、前記データ
ベースから、構造化文書を検索する。文書要素の取出し
に際して、構造化文書中のある文書要素からの相対的な
関係として、前記文書要素に対する親要素、祖先要素、
子要素、子孫要素、兄要素、弟要素、前要素、次要素の
うちのいずれか又はこれらの組合せで取出しを行う。
【0028】
【発明の実施の形態】本発明の実施の形態について説明
する。図1は、本発明の一実施の形態の構成を示す図で
ある。本発明の一実施の形態において、データベース1
のスキーマのクラスとして、文書を管理する文書クラス
11と、文書の集合を管理する文書フォルダクラス12
と、DTDを管理するDTDクラス13とを有する。文
書クラス11には、文書の要素の木構造関係を管理する
要素ツリーインデックス14を持たせ、文書フォルダク
ラス12には、文書の要素ごと、属性ごとにインデック
スを作成し管理する要素−属性インデックス15を持た
せ、さらにDTDクラス13には要素名と属性名をID
として管理するための要素−属性IDテーブル16を持
たせる。
【0029】データベース1に構造化文書(単に「文
章」と略記される)を格納するときは文書格納実行部2
1が起動され、検索を実行するときは検索実行部22が
起動される。
【0030】文書格納実行部21は、要素ツリーインデ
ックス作成部211と、要素−属性インデックス作成部
212と、要素−属性IDテーブル作成部213とを備
え、データベース1への文書の格納する際に、要素ツリ
ーインデックス作成部211は要素ツリーインデックス
14を、要素−属性インデックス作成部212は要素−
属性インデックス15を、要素−属性IDテーブル作成
部213は要素−属性IDテーブル16をそれぞれ作成
する。
【0031】本発明は、文書や要素をデータベースへ格
納するためのデータ格納構造を提供し、その格納構造に
基づいた省メモリのインデックスの構造を提供し、かつ
前記インデックス構造に基づいた要素の取り出し方法を
提供している。また本発明は、データベースに複数の文
書を分類して格納し、前記分類した各文書の集合を対象
とした検索を行うシステムに利用することができる。特
に、文書の論理構造、すなわち文書中の各要素同士の関
係を制約条件とした、文書及び要素単位の検索要求を受
け付け、前記文書及び要素単位の取出しを可能としてい
る。
【0032】また検索処理を高速に行うため、前記文書
の論理構造、及び文書の要素、要素の属性の情報を保持
するインデックスのデータ構造を極力小さくすることに
より、計算機のメモリ資源をあまり消費させないで検索
処理を実現させる。
【0033】[文書管理・検索のためのデータベースス
キーマ]まず本発明におけるデータベースのスキーマに
ついて説明する。図2は、データベースのスキーマに関
するクラスを示す図である。図2に示した記法は、OM
T(Object Modeling Technique)に準拠する。
【0034】本発明において、データベースに文書を格
納することは、文書格納実行部21によって格納対象の
文書を、各クラスのインスタンスとして作成し登録する
ことである。
【0035】また本発明においてデータベースから文書
を検索して取出すことは、文書検索実行部22によって
検索条件を満たす各クラスのインスタンスを特定し、そ
のインスタンスを文書としてシステム外部に取出すこと
である。
【0036】データベース1に、文書やDTDを格納す
るために、そのスキーマのクラスとして文書クラス11
とDTDクラス13を用意する。
【0037】データベース1に格納する各文書、各DT
Dは、それぞれ文書クラス11のインスタンス、DTD
クラス13のインスタンスとして管理する。
【0038】文書クラス11のインスタンスを、「文書
オブジェクト」と呼ぶ。同様に、図2の文書フォルダク
ラス12のインスタンスを「文書フォルダオブジェク
ト」、DTDクラス13のインスタンスを「DTDオブ
ジェクト」と呼ぶ。
【0039】クラスのインスタンスには、該クラス内で
一義的に識別可能なID(識別情報)が割り振られる。
【0040】このIDは、データベース管理システムに
よって与えられる場合もあるし、アプリケーション側で
唯一となるように設定するようにしてもよい。
【0041】図3は、本発明を説明するための図であ
り、文書オブジェクトと、DTDオブジェクトの関係の
一例を示す図である。
【0042】図3において、(文書)A111、(文書)
B112、(文書)C113が文書クラスのインスタンスであ
り、(DTD)X131、(DTD)Y132がDTDクラス
13のインスタンスである。データベース1は、これら
個々のインスタンスを管理するとともに、どの文書が、
どのDTDに基づいて作成されたのかを表すインスタン
ス間のリンクも管理する。
【0043】文書クラス11は、データベース1中の全
文書、すなわち文書オブジェクトの全集合を管理し、文
書クラス11と文書オブジェクト111、112、113は、is
−a関係を構成するが、文書オブジェクトの集合を管理
するための手段として、文書フォルダクラス12を用意
する。
【0044】文書フォルダクラス12は、任意の文書オ
ブジェクトの集合を管理する。実際には、ある条件を満
たす文書オブジェクトの集合を一つの文書フォルダクラ
ス12のインスタンスで管理することになる。
【0045】例えば、著者ごとに文書をまとめたり、年
代ごとや出版社ごとにまとめてその文書集合を管理する
ような場合である。本発明においては、文書フォルダク
ラス12と文書クラス11は、member−of関係を構成す
る。
【0046】文書フォルダクラス12のインスタンス、
すなわち文書フォルダオブジェクトは、木構造に基づく
分類階層を構築するための構造を有する。
【0047】すなわち、すべての文書フォルダオブジェ
クトは、親に相当する、0または1つの文書フォルダオ
ブジェクトと、子に相当する0以上の文書フォルダオブ
ジェクトとそれぞれ関係を持つことができる。
【0048】図4に示したインスタンスの例では、(文
書フォルダ)α121と(文書フォルダ)β122、(文書フォル
ダ)γ123との間は、(文書フォルダ)α121が親で、(文書
フォルダ)β122と(文書フォルダ)γ123がその子となる
親子関係を持つ。
【0049】同様に、(文書フォルダ)β122と(文書フォ
ルダ)δ124、(文書フォルダ)ε125との間は、(文書フォ
ルダ)β122が親で、(文書フォルダ)δ124と(文書フォル
ダ)ε125がその子となる親子関係、(文書フォルダ)γ12
3と(文書フォルダ)ζ126との間は、(文書フォルダ)γ12
3が親で、(文書フォルダ)ζ126がその子となる親子関係
を持つ。
【0050】応用例として、 ・著者ごとにまとめた文書の文書フォルダオブジェクト
を親とし、 ・その子として男女別著者の文書フォルダオブジェクト
を作成して文書を分類する、という構成、あるいは、年
代別に文書を分類する場合に、 ・例えば1990年代でまとめた文書フォルダオブジェクト
を親とし、 ・1990年代の1年ごとの文書フォルダオブジェクトを子
として分類する、 等の構成が挙げられる。
【0051】実際に親子の関係を持たせる方法に厳密な
規則はないが、一般には、子の文書フォルダオブジェク
トによって親の文書フォルダオブジェクトが構成される
というpart−of関係を構成する。
【0052】[要素−属性IDテーブル]構造化文書に
おける論理構造に関する検索条件を指定して特定の文書
や要素を取出すときには、文書に含まれる要素名、属性
名などの文字列データを具体的に検索条件に指定する必
要がある。
【0053】これら文字列データを含む検索条件に一致
する文書や要素を取出すためには、データベース中の文
書オブジェクトの文字列データを、計算機のメモリ上に
ロードし、前記検索条件の要素名、属性名との判定を行
う必要がある。しかしながら、要素名や属性名などの文
字列データは、文書オブジェクトが持つ文書全体の文字
列データに比べればはるかにサイズ(長さ)が小さいこ
とが一般的であり、文書オブジェクト全体をそのまま計
算機のメモリ上にロードするのは効率的でない。このた
め、要素名や属性名など、検索条件を満たすかどうかの
判定に必要な情報のみを有するインデックスをあらかじ
め作成しておいて、検索時には、インデックスのみを計
算機のメモリ上にロードして計算する方法が用いられ
る。
【0054】ところで、インデックスで、要素名や属性
名を文字列データとして扱う場合、計算機のメモリに
は、その文字列長分のデータ領域を必要とする。具体的
には、1文字1バイト(かな漢字は1文字2バイト)で
ある計算機が多い。このため、データベース中の要素名
や属性名が長大であった場合には、ロードに必要なメモ
リ上のデータをそれだけ必要とすることになり、計算性
能上不利となる。
【0055】そこで、本発明においては、インデックス
における要素名や属性名などの文字列に関するメモリの
消費を節約するために、DTDクラス13と一対一の関
係をもつ要素−属性IDテーブル16を備えている。
【0056】構造化文書中で扱われる要素名や属性名
は、構造化文書が従うDTDによってその種類と数が限
定される。単一のDTDの範囲において、要素名は一意
に定められ、また属性名は、DTDの範囲の前記要素の
範囲において、一意に定められる。
【0057】このDTD内で定義される各要素名に対し
て唯一となるような要素名IDを数値として与え、その
要素名と要素名IDとの対応関係のテーブルを作成し、
このテーブルを、DTDのオブジェクトと一対一の関係
で要素−属性IDテーブル16のインスタンスとしてデ
ータベースに格納する。
【0058】属性名に関しても、DTDオブジェクト内
の要素に対して唯一であり、かつ異なる要素名の間で同
じ属性名が存在する場合でも、これらを識別できるよう
な属性名IDを数値で与える。すなわち属性名IDは、
その値からどの要素の属性名であるかを判別できるよう
な数値が割り当てられる。
【0059】そして属性名と属性名IDとの対応関係を
テーブルとして作成し、そのテーブルを、先ほど作成し
た要素−属性IDテーブル16のインスタンスとして、
データベースに格納する。
【0060】図8は、本発明の一実施の形態における、
要素−属性IDテーブル16におけるインスタンスの一
例を示す図である。要素名IDと属性名IDの数値の割
り当ては、前述のDTD内および要素内での一意性が保
証されれば任意の値でよい。DTDに対する要素名ID
と属性名IDの与え方の一例を示す。
【0061】図5は、本発明の一実施の形態において、
要素名IDを与える処理手順を示すフローチャートであ
る。ただし、ここで扱うDTDは、妥当性が保証され、
かつDTDの内部サブセット、外部サブセット、外部実
体などの使用によって、前記DTDの記述が複数の文書
に分割されている場合には、構造化文書のDTDのパー
サ(構文解析器)によって一つの文書中にすべてがマー
ジされ、一つの文書中にDTDの情報がすべて記述され
ているものとする。またDTDのパーサによってパラメ
ータ実体も展開済みであるものとする。そして、図5に
示す処理手順は、このようなDTDについてその記述を
先頭から最後までを連続的に読み込むこととする。
【0062】図5を参照すると、ステップS101で変数
iの初期化し、ステップS102、S107間のループ処理を
行う。このループ内の処理では、まず、ステップS103
でDTD内の要素型宣言(element type declaratio
n)を探し、要素型宣言が見つかった場合、ステップS1
05で、該要素宣言の要素名の要素IDを上位桁の値をi
とし、下位の桁の値を0とした数値とし、つづいてステ
ップS106で変数iを一つインクリメントする。ステップ
S104の判定において、要素型宣言が見つらない場合、
処理を終了する。なお、要素型宣言は、文書要素の名
前、要素の階層構造(親子、兄弟関係等)を規定するも
のである。
【0063】図5において、ステップS105における要
素名IDの上位桁の値とは、数字の桁において予め定め
た桁の間を境として左側の桁の値ことをいい、下位桁の
値とはその右側の桁の値ことをいう。例えば数値「1234
5678」で境目の桁の間を4、5桁目とすると、上位桁の値
は「1234」、下位桁の値は「5678」となる。
【0064】図6は、属性名IDを与える処理手順を示
すフローチャートである。
【0065】ステップS111とステップS122間のループ
処理は、DTD内で属性リスト宣言(attribute-list
declaration)を探して処理するものであり、属性リス
ト宣言内の要素名に相当する要素名IDを求め、属性リ
スト宣言が見つかった場合、変数iを初期化して、ルー
プ処理に入り、属性リスト宣言内で属性名を探し属性名
が見つかった場合、その属性名の属性IDを上位桁の値
を要素名ID、下位桁の値をiとした値とする。なお、
DTD内の属性リスト宣言は、要素の付加情報として属
性を定義するものであり、どの要素にどの属性が付く
か、属性名、属性として指定可能な値、デフォルト値等
を規定するものである。
【0066】当該DTDのすべての要素名の要素名ID
が割り振られた後、前記DTDの記述の先頭から最後ま
でを連続的に読み込むこととする。
【0067】図6のステップS119における属性名ID
の上位桁と下位桁の意味は、図5のステップS105にお
ける要素名IDの場合と同じである。ただし条件とし
て、要素名IDと属性名IDの上位桁と下位桁の境目の
位置は同じとする。要素名IDと属性名IDの数値の桁
数をどこまで用意するか、また上位桁と下位桁をどこで
分けるかなどは、文書のDTDの中で前述の一意性を保
証すべき要素名や属性名がどれほどの数になるか予測を
立てて決定することになる。
【0068】仮に要素名IDと属性名IDがそれぞれ4
バイトとし、その上位桁と下位桁をそれぞれ2バイトず
つとすると、文書のDTDの中で前述の一意性の保証が
可能な要素名の数は65535個(216−1)となり、同じく文
書のDTDの中の各要素の中で前述の一意性の保証が可
能な属性名の数も65535個となる。4バイトというデー
タ量は、文字列に換算すると4文字分にしか相当しな
い。実際、文字列は最後がヌル文字で終わることを考え
ると、実質3文字分である。DTD内の要素名や属性名
が3文字を超えて定義されている場合、要素名や属性名
を表すデータ領域を節約することができる。
【0069】次に、本発明の一実施の形態における要素
−属性IDテーブル16の構造について説明する。
【0070】前述の通り、要素−属性IDテーブルに
は、要素名と要素名ID、属性名と属性名IDのそれぞ
れの対応関係のテーブルを含む。よって、要素−属性I
Dテーブルの構造として、少なくとも、(要素名ID、
要素名)、(属性名ID、属性名)の二つの項目を有する
データ構造を用意する。
【0071】要素−属性IDテーブル16におけるデー
タエントリの順序は、それぞれ要素名、属性名の辞書的
な順序でソートしてリストとしておく。これは、各デー
タエントリの要素名、属性名の辞書的な順序を比較する
二分探索によって、それぞれ対応する要素名ID、属性
名IDをより早く調べられるようにするためである。
【0072】要素−属性IDテーブル作成部213は、上
記したデータ構造の要素−属性IDテーブルを作成し、
DTDオブジェクトと一対一の関係を保持したままデー
タベース1に格納する。
【0073】図7、及び図8は、以上の手順に従って要
素名ID、属性名IDを割り振った例を示す図である。
図7にはDTDの一例が示されている。図7において、
「!ELEMENT 要素名 内容モデル」が要素型宣言であ
あり、「!ATTLIST 要素名、属性値候補、デフォルト
値」は属性リスト宣言である。またCDATAは文字デ
ータのことをいう。要素型宣言の#PCDATAは混在
内容(mixed type)を指定するものである。
【0074】図8は、図7に示すDTDの中の要素名や
属性名に対応して要素名ID、属性名IDを割り振った
例を示している。要素名ID、属性名IDはヘキサデシ
マル表示で示してある。この例では、要素名IDと属性
名IDの値は16進数で4バイト、上位桁下位桁共に2バ
イトずつとしている。
【0075】[要素ツリーインデックス]要素ツリーイ
ンデックス14は、要素−属性IDテーブル16の要素
名IDを用いて、各文書における構造、すなわち要素の
木構造を表現するデータ構造である。要素ツリーインデ
ックス14は各文書オブジェクトごとに作成して保持さ
せる。
【0076】要素ツリーインデックス14は、(要素名
ID、要素レベル、要素開始位置)の三つ組のデータ構
造を持つデータエントリのリストである。
【0077】この三つ組データは、文書中の要素と対応
し、データの各項目には、それぞれ要素の要素名に対応
する要素名ID、要素を木構造としたときのルート要素
からの深さ、文書中の要素の記述(開始タグを含む)の
開始バイト位置の値がそれぞれ格納される。
【0078】そして、要素ツリーインデックス14にお
けるこれらのエントリの順番は、文書中の要素の開始タ
グの出現順番と等しくなるようにする。この開始タグの
出現順番は換言すれば、要素の木構造を構成したときの
左深さ優先順序となる。
【0079】要素ツリーインデックスの作成手順を示
す。要素ツリーインデックス14の作成は、要素ツリー
インデックス作成部211で行う。
【0080】図9は、要素ツリーインデックスの作成手
順を示すフローチャートである。要素ツリーインデック
スの三つ組のデータ構造(要素名ID、要素レベル、要
素開始位置)の各項目の値を求め、これをエントリとし
て、要素ツリーインデックス14のリストに追加する。
ただし、ここで扱う文書は、DTDに対する妥当性が保
証され、前記DTD自身の妥当性も保証されていること
を前提とする。また文書中のタグの省略、属性値の省略
等は、構造化文書のパーサによってすべて補完されてい
ることを前提とする。図9に示した要素ツリーインデッ
クスの作成手順は、このような文書の記述を先頭から最
後までを連続的に読み込むものとする。
【0081】ステップS131では、変数iを0に初期化
し、ステップS132のループa開始端とステップS143の
終了端間のループ処理を行う。
【0082】ステップS133では、要素の開始タグか終
了タグのどちらかを探す。
【0083】タグが見つかりそれが開始タグの場合(ス
テップS134、S135)、開始タグの最初の文字位置を求
め(ステップS136)、開始タグの要素名を求め(ステ
ップS137)、当該文書オブジェクトと関係するDTD
オブジェクトから要素−属性IDテーブルを取り出し、
要素名に対応する要素IDを求め(ステップS138)、
要素レベルの値を変数iの値とし、要素名ID、要素レ
ベル、要素開始位置の三つ組データを、要素ツリーイン
デックスのエントリに追加し(ステップS140)、つづ
いて変数iを1つインクリメントし(ステップS14
1)。
【0084】一方、ステップS135で、終了タグの場
合、変数を1つデクリメントする(ステップS142)。
【0085】またステップS134でタグが見つらない場
合、ループを飛び出して終了する。
【0086】要素ツリーインデックスの例を示す。図7
のDTDに従う文書として、図10に示すような文書が
あるものとする。文書の左側の数字は、文書の行番号を
表すのではなく、それぞれ数字の右側に現れる要素の開
始タグや文字列の最初の文字位置、また終了タグの最後
の文字位置をそれぞれ表すものとする。
【0087】図10に示した文書中のタグ付けによって
識別される要素の関係を木構造で表すと、図11に示す
ようなものとなる。
【0088】図11の木構造において、ノード上のラベ
ルは要素名を表し、ノードの添字はそのノードのラベル
に対応した要素の開始位置を表している。
【0089】図10の文書の要素の開始タグの出現順番
は、図11の木構造の左深さ優先順序となっている。
【0090】この要素の順番に従い、(要素名ID、要
素レベル、要素開始位置)の三つ組データのリストが作
成される。その結果は、図12に示す通りである。
【0091】[文書の論理構造に基づく検索]文書の論
理構造に基づく検索には、文書の要素名、属性名、属性
値、要素の中身の文書に関する条件と、要素間の関係に
関する条件を満たすかどうかの判定を含む。
【0092】例えば図10に示す文書に対して、文書の
要素名、属性名、属性値、要素の中身の文書に関する検
索条件「要素名がDであり、その要素の属性a2の値が2
で、その要素の中身に文字列"string1"を含むような要
素を持つ文書」の条件判定は、TRUEとなる。
【0093】さらに、前記検索条件に要素間の関係に関
する条件「そのような要素Dを子要素に持つ要素の属性a
1の値が1である要素を持つ文書」を加えることも、文
書の論理構造に基づく検索の範囲に入る。この検索要求
を加えた図10の文書の条件判定はTRUEとなる。
【0094】以上の例からも分かるように、要素間の関
係に関する条件を満たすかどうかの判定処理には、ある
要素からの相対的な関係にある要素の取出し、例えばあ
る要素の親要素、祖先要素、子要素、子孫要素、兄要
素、弟要素、前要素、次要素の取出しなどが必要とな
る。
【0095】これらの相対的な関係の説明については、
文献(XML Pointer Language(XPointer)の相対ロケー
ション項のancestor、child、descendant、psibling、f
sibling、preceding、following)等の記載が参照され
る。
【0096】このような相対関係に関する要素の特定
は、要素ツリーインデックスの任意のエントリを起点と
して計算することができる。
【0097】前記要素ツリーインデックスを用いて、あ
る要素からの親要素、祖先要素、子要素、子孫要素、兄
要素、弟要素、前要素、次要素を取出す手順を、それぞ
れ図13乃至図18、図21、図22にフローチャート
として示す。
【0098】[親要素の取出し]図13のフロチャート
を参照して、親要素の取出しの処理手順について説明す
る。
【0099】図13を参照すると、ステップS161で
は、変数の初期化を行う。変数parentとelemは、要素ツ
リーインデックスの三つ組のエントリ、要素名ID、要
素レベル、要素開始位置の値を格納するための変数であ
る。
【0100】それぞれの変数の用途は、parentは、親要
素のエントリを格納するためのものであり、変数elem
は、計算の過程における要素ツリーインデックスの現在
エントリを格納するためのものである。
【0101】変数baseは、相対関係の起点となる要素
(起点要素)のエントリの要素レベルの値を格納する。
【0102】ステップS162の一つ前の要素があるかの
判定は、要素ツリーインデックスにおけるエントリのリ
ストにおいて、起点となるエントリより一つ前のエント
リが存在するかということである。
【0103】図12に示した要素ツリーインデックス1
4の例に即して説明する。例えば起点となるエントリが
3番目のエントリ(00030000、2、30)であるとすると、
「一つ前の要素」とは、当該エントリよりも一つ前の、
2番目のエントリ(00020000、1、20)となる。
【0104】よって、この例の場合、「一つ前の要素が
ある」と判定され、ステップ63へ進む。
【0105】ステップS163では、ステップS162におけ
る「一つ前の要素」に相当するエントリを変数elemに代
入する。
【0106】ステップS164では、ステップS163のelem
の要素レベルが、ステップ61の初期化で設定したbaseの
値より1少ない値であるか否かを判定する。
【0107】ステップS164の判定の結果YESであれば、
現在のelemが求める親要素のエントリとなり、ステップ
S165でparentにelemの値を代入して処理を終了する。
【0108】ステップS164の判定結果がNOであれば、
ステップS162に戻り、該elemに対する一つ前の要素が
あるか否かを判定して、以降は、前述と同様の処理を繰
り返す。
【0109】[祖先要素の取出し]次に図14のフロー
チャートを参照して、祖先要素の取出しの処理手順につ
いて説明する。
【0110】ステップS171では、必要な変数の初期化
を行う。変数ancestorとelemは、要素ツリーインデック
スのエントリの値を格納するための変数である。それぞ
れの変数の用途は、ancestorは、フローチャートで求め
る、祖先要素のエントリを格納するためのものであり、
変数elemは、計算の過程における要素ツリーインデック
スの現在エントリを格納するためのものである。
【0111】変数baseは、起点要素のエントリの要素レ
ベルの値を格納する。変数nは、n番目の祖先要素を取出
すために指定された値である。変数iは、繰り返し処理
に関するカウンタとして用いる。
【0112】ステップS172からステップS174までは、
図13のステップS162からステップS164までと同様で
ある。
【0113】ステップS174の判定結果がYESであれば、
現在のelemがi番目の祖先要素のエントリとなる。
【0114】そしてステップS175で、そのi番目の祖先
要素elemが求めるn番目の祖先要素か否かを判定し、YES
であればステップS177でancestorにelemの値を代入し
て処理を終了する。
【0115】一方、ステップS175の判定結果がNOであ
れば、該elemに対する親要素を求めるべく、ステップS
176でbeseの値を新たに当該elemの要素レベルに設定し
直し、かつiの値を一つ繰り上げて、ステップS172に戻
ってもう一度処理を繰り返す。
【0116】[子要素の取出し]次に図15のフローチ
ャートを参照して、子要素の取出しの処理手順について
説明する。
【0117】ステップS181では、必要な変数の初期化
を行う。変数childとelemは、要素ツリーインデックス
のエントリの値を格納するための変数である。それぞれ
の変数の用途は、childは本フローチャートで求める子
要素のエントリを格納するためのものであり、変数elem
は計算の過程における要素ツリーインデックスの現在エ
ントリを格納するためのものである。
【0118】変数baseは、起点要素のエントリの要素レ
ベルの値を格納する。変数nは、n番目の子要素を取出す
ために指定された値である。
【0119】変数iは繰り返し処理に関するカウンタと
して用いる。
【0120】ステップS182の「一つ後の要素がある
か」とは、要素ツリーインデックスにおけるエントリの
リストにおいて、起点となるエントリより一つ後のエン
トリが存在するかということである。
【0121】図12に示した要素ツリーインデックスの
例で説明すると、例えば起点となるエントリが3番目の
エントリ(00030000、2、30)であるとすると、一つ後の
要素とは、そのエントリより一つ後の、4番目のエント
リ(00040000、3、40)となる。よって、この例の場合
は、一つ後の要素がある」と判定され、ステップ83へと
進む。
【0122】ステップS183では、ステップS182におけ
る一つ後の要素に相当するエントリを変数elemに代入す
る。
【0123】ステップS184では、ステップS183のelem
の要素レベルが、ステップS181の初期化で設定したbas
eの値よりも大きい値であるか否かを判定する。
【0124】ステップS184の判定の結果YESであれば、
ステップS185へ進む。
【0125】ステップS184の判定の結果がNOであれ
ば、処理を終了する。ステップS185では、さらにelem
の要素レベルが、baseの値よりも1多い値であるか否か
を判定する。
【0126】ステップS185の判定結果がYESであれば、
現在のelemがi番目の子要素のエントリとなる。そして
ステップS186で、そのi番目の子要素elemが求めるn番
目の子要素か否かを判定し、YESであればステップS188
でchildにelemの値を代入して処理を終了する。
【0127】ステップS186の判定結果がNOであれば、
次の子要素を求めるべく、ステップS187でiの値を一つ
繰り上げて、ステップS182に戻ってもう一度処理を繰
り返す。
【0128】[子孫要素の取出し]図16のフローチャ
ートを参照して、子孫要素の取出しの処理手順について
説明する。
【0129】ステップS191では、必要な変数の初期化
を行う。変数descendantとelemは、要素ツリーインデッ
クスのエントリの値を格納するための変数である。それ
ぞれの変数の用途は、descendantは、この処理で求める
子孫要素のエントリを格納するためのものであり、変数
elemは計算の過程における要素ツリーインデックスの現
在エントリを格納するためのものである。
【0130】変数baseは、起点要素のエントリの要素レ
ベルの値を格納する。
【0131】変数nは、n番目の子孫要素を取出すために
指定された値である。
【0132】変数iは、繰り返し処理に関するカウンタ
として用いる。
【0133】ステップS192からステップS194までは、
図15のステップS182からステップS184までと同様で
ある。
【0134】ステップS194の判定結果がYESであれば、
現在のelemがi番目の子孫要素のエントリとなる。
【0135】そしてステップS195で、そのi番目の子孫
要素elemが求めるn番目の子孫要素か否かを判定し、YES
であれば、ステップ97でdescendantにelemの値を代入し
て処理を終了する。
【0136】ステップS195の判定結果がNOであれば、
次の子孫要素を求めるべく、ステップS196でiの値を一
つ繰り上げて、ステップS192に戻ってもう一度処理を
繰り返す。
【0137】[兄要素の取出し]次に図17のフローチ
ャートを参照して、兄要素の取出しの処理手順について
説明する。
【0138】ステップS201では、必要な変数の初期化
を行う。変数psiblingとelemは、要素ツリーインデック
スのエントリの値を格納するための変数である。
【0139】それぞれの変数の用途は、psiblingは、こ
の処理手順で求める兄要素のエントリを格納するための
ものであり、変数elemは計算の過程における要素ツリー
インデックスの現在エントリを格納するためのものであ
る。
【0140】変数baseは、起点要素のエントリの要素レ
ベルの値を格納する。
【0141】変数nは、n番目の兄要素を取出すために指
定された値である。
【0142】変数iは、繰り返し処理に関するカウンタ
として用いる。
【0143】ステップS202からステップS203までは、
図13のステップS162からステップS163までと同様で
ある。
【0144】ステップS204では、ステップS203のelem
の要素レベルが、ステップS201の初期化で設定したbas
eの値と同じであるか否かを判定する。
【0145】ステップS204の判定結果がYESであれば、
現在のelemがi番目の兄要素のエントリとなる。
【0146】そしてステップS206で、そのi番目の兄要
素elemが求めるn番目の子孫要素か否かを判定し、YESで
あれば、ステップa8でpsiblingにelemの値を代入して、
処理を終了する。
【0147】ステップS206の判定結果がNOであれば、
次の兄要素を求めるべく、ステップS207でiの値を一つ
繰り上げて、ステップS202に戻って、もう一度処理を
繰り返す。
【0148】ステップS204の判定結果がNOであれば、
ステップS205に進み、ステップS203のelemの要素レベ
ルが、baseの値よりも大きい値であるか否かを判定す
る。
【0149】ステップS205の判定結果がYESであれば、
ステップS202に戻って、もう一度処理を繰り返す。判
定結果がNOであれば、処理を終了する。
【0150】[弟要素の取出し]次に図18のフローチ
ャートを参照して、弟要素の取出しの処理手順について
説明する。
【0151】ステップS211では、変数の初期化を行
う。変数fsiblingとelemは、要素ツリーインデックスの
エントリの値を格納するための変数である。
【0152】それぞれの変数の用途は、変数psibling
は、この処理で求める弟要素のエントリを格納するため
のものであり、変数elemは計算の過程における要素ツリ
ーインデックスの現在エントリを格納するためのもので
ある。
【0153】変数baseは、起点要素のエントリの要素レ
ベルの値を格納する。変数nはn番目の弟要素を取出すた
めに指定された値である。
【0154】変数iは繰り返し処理に関するカウンタと
して用いる。
【0155】ステップS212からステップS213までは、
図15のステップS182からステップS183までと同様で
ある。
【0156】ステップS214では、ステップS213のelem
の要素レベルが、ステップS211の初期化で設定したbas
eの値と同じであるか否かを判定する。
【0157】ステップS214の判定結果がYESであれば、
現在のelemがi番目の弟要素のエントリとなる。
【0158】そしてステップS216で、そのi番目の弟要
素elemが求めるn番目の子孫要素か否かを判定し、YESで
あればステップS218でfsiblingにelemの値を代入して
処理を終了する。
【0159】ステップS216の判定結果がNOであれば、
次の兄要素を求めるべく、ステップS217でiの値を一つ
繰り上げて、ステップS212に戻ってもう一度処理を繰
り返す。
【0160】ステップS214の判定結果がNOであれば、
ステップS215に進み、ステップS213のelemの要素レベ
ルが、baseの値よりも大きい値であるか否かを判定す
る。
【0161】ステップS215の判定結果がYESであれば、
ステップS212に戻ってもう一度処理を繰り返す。判定
結果がNOであれば処理を終了する。
【0162】[末弟要素の取出し]次に、ある要素の弟
要素よりもさらに弟の要素が存在しない場合、その弟要
素を末弟要素と呼ぶ。「末弟要素の取出し」プロセス
は、後に示す「右深さ優先順序での子孫要素の取出し」
に必要なサブプロセスである。
【0163】図19のフローチャートを参照して、末弟
要素の取出しの処理手順について説明する。
【0164】ステップS221では、変数の初期化を行
う。変数fsiblingとelemは、要素ツリーインデックスの
エントリの値を格納するための変数である。それぞれの
変数の用途は、psiblingは、この処理で求める末弟要素
のエントリを格納するためのものであり、変数elemは計
算の過程における要素ツリーインデックスの現在エント
リを格納するためのものである。変数baseは起点要素の
エントリの要素レベルの値を格納する。
【0165】ステップS222からステップS224までは、
図18のステップS212からステップS214までと同様で
ある。
【0166】ステップS224の判定結果がYESであれば、
現在のelemは弟要素のエントリとして、ステップS225
でfsiblingにelemの値を代入する。ただし、このfsibli
ngが末弟であるかどうかはこの時点では分からないの
で、ステップS222に戻ってもう一度処理を繰り返し、f
siblingの値を逐次更新していく。
【0167】ステップS224の判定結果がNOであれば、
ステップS226に進み、ステップS223のelemの要素レベ
ルが、baseの値よりも大きい値であるか否かを判定す
る。
【0168】ステップS226の判定結果がYESであれば、
ステップS222に戻ってもう一度処理を繰り返す。判定
結果がNOであれば処理を終了する。
【0169】[右深さ優先順序での子孫要素の取出し]
右深さ優先順序での子孫要素の取出しプロセスは、後述
する前要素の取出しに必要なサブプロセスである。
【0170】ここで、右深さ優先順序とは、図11に示
した木構造において、右から左へ深さ優先で要素をたど
るときに得られる順序である。
【0171】図10に示した文書で要素の開始タグの出
現順番は、図11の木構造では、左から右へ深さ優先で
要素をたどるときに得られる順序と一致する。よって、
右深さ優先順序で取出される要素の順番は、文書の要素
の開始タグの出現順番とは異なる。
【0172】図20に示したフローチャートを参照し
て、右深さ優先順序での子孫要素の取出しの処理手順に
ついて説明する。
【0173】ステップS231では、変数の初期化を行
う。変数descendantとelemは、要素ツリーインデックス
のエントリの値を格納するための変数である。それぞれ
の変数の用途は、descendantは、この処理で求める子孫
要素のエントリを格納するためのものであり、変数elem
は計算の過程における要素ツリーインデックスの現在エ
ントリを格納するためのものである。変数nは、n番目の
子孫要素を取出すために指定された値である。変数iは
繰り返し処理に関するカウンタとして用いる。
【0174】ステップS232では、サブプロセス「末弟
要素の取出し」を呼び出し、当該要素elemの末弟要素の
エントリを取出す。
【0175】ステップS233で、その末弟要素を取出せ
たか否かを判定し、判定結果がYESであれば、その取出
した要素のエントリがi番目の子孫要素のエントリとな
る。
【0176】ステップS234でその取出した要素のエン
トリをelemに代入し、ステップS235でそのi番目の子孫
要素elemが求めるn番目の子孫要素か否かを判定する。
【0177】ステップS235の判定結果がYESであればス
テップS242でdescendantにelemの値を代入して処理を
終了する。
【0178】ステップS235の判定結果がNOであればス
テップS236へ進む。またステップS233の判定結果がNO
であれば処理を終了する。
【0179】ステップS236では、iの値を一つ繰り上
げ、また別の繰り返し処理用カウンタjを新たに用意し
て1に初期化する。
【0180】ステップS237は、この新たな変数値i、j
による「右深さ優先順序での子孫要素の取出し」の再帰
呼び出しとなる。
【0181】ステップS238で、その子孫要素を取出せ
たか否かを判定し、判定結果がYESであれば、ステップ
S239で取出した要素に相当するエントリをelemに代入
し、elemがi番目の子孫要素のエントリとなる。
【0182】そしてステップS240で、そのi番目の子孫
要素elemが求めるn番目の子孫要素か否かを判定し、YES
であれば、ステップS242でdescendantにelemの値を代
入して処理を終了する。
【0183】ステップS240の判定結果がNOであれば、
次の子孫要素を求めるべく、ステップS241でiとjの値
を一つ繰り上げて、ステップS237の再帰呼び出しに戻
って同様の処理を繰り返す。
【0184】ステップS238の判定結果がNOであれば、
ステップS243に進み、サブプロセス「兄要素の取出
し」を呼び出す。
【0185】ステップS244で当該elemに対する1番目の
兄要素を取出せたか否かを判定し、判定結果がYESであ
れば、ステップS245で取出した要素に相当するエント
リをelemに代入し、elemがi番目の子孫要素のエントリ
となる。
【0186】そしてステップS246で、そのi番目の子孫
要素elemが求めるn番目の子孫要素か否かを判定し、YES
であればステップdgでdescendantにelemの値を代入して
処理を終了する。
【0187】ステップS246の判定結果がNOであれば、
次の子孫要素を求めるべく、ステップS236でiの値を一
つ繰り上げ、jの値を再度1に初期化して、ステップS23
7の再帰呼び出しに戻って同様の処理を繰り返す。
【0188】[前要素の取出し]次に、図21のフロー
チャートを参照して、前要素の取出しの処理手順につい
て説明する。
【0189】ステップS251では、変数の初期化を行
う。変数precedingとelemは、要素ツリーインデックス
のエントリの値を格納するための変数である。
【0190】それぞれの変数の用途は、precedingは、
この処理で求める前要素のエントリを格納するためのも
のであり、変数elemは、計算の過程における要素ツリー
インデックスの現在エントリを格納するためのものであ
る。変数nは、n番目の前要素を取出すために指定された
値である。変数iは、繰り返し処理に関するカウンタと
して用いる。
【0191】ステップS252では、サブプロセス「兄要
素の取出し」を呼び出し、当該要素elemの1番目の兄要
素のエントリを取出す。
【0192】ステップS253でその兄要素を取出せたか
否かを判定し、判定結果がYESであれば、ステップS259
で取出した要素に相当するエントリをelemに代入し、el
emがi番目の前要素のエントリとなる。
【0193】そして、ステップS260で、そのi番目の前
要素elemが求めるn番目の前要素か否かを判定し、YESで
あればステップS267でprecedingにelemの値を代入して
処理を終了する。
【0194】ステップS260の判定結果がNOであればス
テップS261へ進む。またステップS253の判定結果がNO
であればステップS254へ進む。
【0195】ステップS261では、iの値を一つ繰り上
げ、また別の繰り返し処理用カウンタjを新たに用意し
て1に初期化する。
【0196】ステップS262では、この新たな変数値i、
jでサブプロセス「右深さ優先順序での子孫要素の取出
し」を呼び出す。
【0197】ステップS263でその子孫要素を取出せた
か否かを判定し、判定結果がYESであれば、ステップS2
64で取出した要素に相当するエントリをelemに代入し、
elemがi番目の前要素のエントリとなる。
【0198】そしてステップS265で、そのi番目の前要
素elemが求めるn番目の前要素か否かを判定し、YESであ
ればステップS267でprecedingにelemの値を代入して処
理を終了する。
【0199】ステップS265の判定結果がNOであれば、
次の前要素を求めるべく、ステップS266でiとjの値を
一つ繰り上げて、ステップS262に戻って同様の処理を
繰り返す。
【0200】ステップS263の判定結果がNOであれば、
ステップS252に戻ってもう一度処理を繰り返す。
【0201】ステップS254では、サブプロセス「親要
素の取出し」を呼び出し、当該要素elemの親要素のエン
トリを取出す。ステップS255でその親要素を取出せた
か否かを判定し、判定結果がYESであれば、ステップS2
56で取出した要素に相当するエントリをelemに代入し、
elemがi番目の前要素のエントリとなる。
【0202】そしてステップS257で、そのi番目の前要
素elemが求めるn番目の前要素か否かを判定し、YESであ
ればステップS267でprecedingにelemの値を代入して処
理を終了する。
【0203】ステップS257判定結果がNOであれば、次
の前要素を求めるべく、ステップS258でiの値を一つ繰
り上げて、ステップS252に戻ってもう一度処理を繰り
返す。
【0204】ステップS255の判定結果がNOであれば処
理を終了する。
【0205】[次要素の取出し]次に図22のフローチ
ャートを参照して、次要素の取出しの処理手順について
説明する。
【0206】ステップS271では、変数の初期化を行
う。変数followingとelemは、要素ツリーインデックス
のエントリの値を格納するための変数である。それぞれ
の変数の用途について説明すると、followingは、この
処理で求める次要素のエントリを格納するためのもので
あり、変数elemは計算の過程における要素ツリーインデ
ックスの現在エントリを格納するためのものである。変
数nは、n番目の次要素を取出すために指定された値であ
る。変数iは、繰り返し処理に関するカウンタとして用
いる。
【0207】ステップS272では、サブプロセス「弟要
素の取出し」を呼び出し、当該要素elemの1番目の弟要
素のエントリを取出す。
【0208】ステップS273でその弟要素を取出せたか
否かを判定し、判定結果がYESであれば、ステップS279
で取出した要素に相当するエントリをelemに代入し、el
emがi番目の次要素のエントリとなる。
【0209】そしてステップS280で、そのi番目の次要
素elemが求めるn番目の次要素か否かを判定し、YESであ
れば、ステップS287でfollowingにelemの値を代入して
処理を終了する。
【0210】ステップS280の判定結果がNOであればス
テップS281へ進む。またステップS273の判定結果がNO
であればステップS274へ進む。
【0211】ステップS281では、iの値を一つ繰り上
げ、また別の繰り返し処理用カウンタjを新たに用意し
て1に初期化する。
【0212】ステップS282では、この新たな変数値i、
jでサブプロセス「子孫要素の取出し」を呼び出す。ス
テップS283でその子孫要素を取出せたか否かを判定
し、判定結果がYESであれば、ステップS284で取出した
要素に相当するエントリelemに代入し、elemがi番目の
次要素のエントリとなる。
【0213】そしてステップS285で、そのi番目の次要
素elemが求めるn番目の次要素か否かを判定し、YESであ
ればステップS287でfollowingにelemの値を代入して処
理を終了する。
【0214】ステップS285の判定結果がNOであれば、
次の次要素を求めるべく、ステップS286でiとjの値を
一つ繰り上げて、ステップS282に戻って同様の処理を
繰り返す。
【0215】ステップS283の判定結果がNOであれば、
ステップS272に戻ってもう一度処理を繰り返す。
【0216】ステップS274では、サブプロセス「親要
素の取出し」を呼び出し、当該要素elemの親要素のエン
トリを取出す。
【0217】ステップS275でその親要素を取出せたか
否かを判定し、判定結果がYESであれば、ステップS276
で取出した要素に相当するエントリをelemに代入し、el
emがi番目の次要素のエントリとなる。
【0218】そしてステップS277で、そのi番目の次要
素elemが求めるn番目の次要素か否かを判定し、YESであ
ればステップS287でfollowingにelemの値を代入して処
理を終了する。
【0219】ステップS277の判定結果がNOであれば、
次の次要素を求めるべく、ステップS278でiの値を一つ
繰り上げて、ステップS272に戻ってもう一度処理を繰
り返す。ステップS275の判定結果がNOであれば処理を
終了する。
【0220】[要素−属性インデックス]要素−属性イ
ンデックス15は、文書フォルダオブジェクトごとに作
成して保持するものであり、文書フォルダオブジェクト
が保有する文書集合から、要素名、属性名、属性値を条
件に、文書または要素を検索するために用いる。
【0221】要素−属性インデックスは、(DTDI
D、要素−属性名ID、属性値、文書ID、要素開始位
置)の五つ組みのデータ構造を持つデータエントリのリ
ストとする。
【0222】要素−属性名IDについて説明する。要素
−属性名IDとは、要素名IDもしくは属性名IDであ
る。要素名IDは前述の通り、DTDオブジェクト内で
唯一なIDである。属性名IDもDTDオブジェクト内
の要素名に対して唯一なIDで、かつ異なる要素名で同
じ属性名が存在してもそれを識別可能なIDである。
【0223】要素−属性インデックス15のエントリの
作成では、文書中の要素が一つも属性を持たない場合、
その要素に対応するエントリを一つ作成し、その要素−
属性名IDの値を、その要素の要素名IDとする。
【0224】文書中の要素が一つ以上の属性を持つ場合
は、その属性に対応する分のエントリを作成し、各属性
に対応する要素−属性名IDの値を、その属性の属性名
IDとする。属性名IDからどの要素の属性名であるか
を判別できるので、属性名IDを持つエントリからその
エントリに対応する要素を特定することが可能である。
【0225】[DTDIDと文書ID]DTDIDおよ
び文書IDについて説明する。DTDIDおよび文書I
Dは、それぞれデータベース中のDTDクラス、文書ク
ラスの各インスタンスに割り当てられた、それぞれのク
ラス内で唯一に識別可能なオブジェクトIDである。こ
の番号は、データベース管理システムによって与えられ
るか、もしくは、アプリケーション側で唯一となるよう
に与えるようにしてもよい。
【0226】要素−属性インデックス15のエントリに
おけるDTDID、文書IDの値は、要素−属性名ID
に対応する要素を持つ文書の文書ID、その文書が従う
DTDのDTDIDとなる。
【0227】[属性値]属性値について説明する。属性
値は、文字通り、属性の値である。要素−属性インデッ
クス15のエントリにおける属性値の値は、要素−属性
名IDに対応する属性の属性値となる。
【0228】[要素開始位置]要素開始位置について説
明する。要素開始位置とは、要素ツリーインデックス1
4における要素開始位置と同じで、文書中の要素の記述
(開始タグを含む)の開始バイト位置の値である。要素−
属性インデックスのエントリにおける要素開始位置の値
は、要素−属性名IDに対応する要素の要素開始位置と
なる。
【0229】要素−属性インデックス15の作成手順を
示す。要素−属性インデックスの作成は、要素−属性イ
ンデックス作成部212で行われる。
【0230】図23及び図24は、要素−属性インデッ
クス15の作成手順を示すフローチャートであり、要素
−属性インデックス15の前記五つ組みのデータ構造
(DTDID、要素−属性名ID、属性値、文書ID、
要素開始位置)の各項目の値を求め、(DTDID、要素
−属性名ID)の値でソートした順序を保ちながら、前
記要素−属性インデックスのリストに作成したエントリ
を追加する処理手順を示している。
【0231】ただし、ここで扱う文書は、DTDに対す
る妥当性が保証され、前記DTD自身の妥当性も保証さ
れていることを前提とする。また文書中のタグの省略、
属性値の省略等は、構造化文書のパーサによってすべて
補完されていることを前提とする。そして、図23及び
図24に示す処理はこのような文書の記述の先頭から最
後までを連続的に読み込むこととする。
【0232】図23を参照すると、ステップS301、S3
02で文書フォルダオブジェクトに文書オブジェクトを追
加すると、ステップS303、ステップS304で、前記文書
オブジェクトと関係するDTDオブジェクトも同時に追
加する。
【0233】そして、DTDオブジェクトと1対1の関
係を持つ要素−属性IDテーブルの情報を基にしなが
ら、以下のステップでは、追加した文書オブジェクトの
各要素に対する要素−属性インデックスのエントリを作
成・追加していく。
【0234】ステップS312では、図25に示すサブプ
ロセスを呼び出している。図23のステップS312で与
える(DTDID、要素名ID)を元に、図25のステッ
プS331では、その(DTDID、要素名ID)を持つエ
ントリのリストを探す。
【0235】このステップS331では、さらに図26に
フローチャートを示すサブプロセスを呼び出している。
【0236】図25のステップS331で与える要素−属
性インデックスの全エントリのリストに対する開始位置
と終了位置、そしてDTDIDの値を目的のデータとし
て、要素−属性インデックスのリストから同じDTDI
Dの値を持つエントリのリストを探す。
【0237】図25のステップS332では、そのエント
リリストが見つかったか否かを判定する。
【0238】見つかった場合は、図26のステップS35
4とステップS361で、そのエントリリストの開始位置と
終了位置が返却されるため、図25のステップS333で
さらにその開始位置と終了位置のエントリリストを対象
に、同じ要素−属性名IDの値を持つエントリのリスト
を探す。
【0239】ステップS334でそのエントリリストが見
つかったか否かを判定し、見つかった場合は、図26の
ステップS355でリスト上の挿入位置が返却されるの
で、図25のステップS335でその挿入位置を返却す
る。
【0240】また図25のステップS332およびステッ
プS334において対象とするエントリリストが見つから
なかった場合も、図26のステップS348でリスト上の
挿入位置が返却されるので、ステップS335でその挿入
位置を返却する。
【0241】図24のステップS320でも同様に、図2
5のサブプロセスを呼び出している。ただし、与えるデ
ータは(DTDID、属性名ID)であり、以降の処理は
前述の(DTDID、要素名ID)の場合と同様である。
【0242】以上の処理により、要素−属性インデック
ス15のエントリが作成され、かつそのエントリの順序
は、(DTDID、要素−属性名ID)の値でソート済み
の順序となる。
【0243】要素−属性インデックス15のエントリ
を、(DTDID、要素−属性名ID)の値でソートして
おく目的は、エントリの検索において、(DTDID、
要素−属性名ID)をキーとした二分探索を可能とする
ためである。
【0244】実際の二分探索の手順については、図26
にフローチャートを示したサブプロセスが行う。
【0245】図27は、要素−属性インデックスにおけ
る、エントリの検索手順を示す図である。ステップS37
1では、図26に示すサブプロセスを呼び出している。
【0246】ステップS371で与える要素−属性インデ
ックスの全エントリのリストに対する開始位置と終了位
置、そしてDTDIDの値を目的のデータとして、要素
−属性インデックスのリストから同じDTDIDの値を
持つエントリのリストを探す。
【0247】ステップS372では、そのエントリリスト
が見つかったか否かを判定する。
【0248】見つかった場合は、図26のステップS35
4とステップS361で、そのエントリリストの開始位置と
終了位置が返却されるので、ステップS373でさらにそ
の開始位置と終了位置のエントリリストを対象に、同じ
要素−属性名IDの値を持つエントリのリストを探す。
【0249】ステップS374でそのエントリリストが見
つかったか否かを判定し、見つかった場合は、前述のD
TDIDの場合と同様に、該当するエントリ・リストの
開始位置と終了位置が返却される。
【0250】ステップS375からステップS379までのル
ープ処理では、この返却されたエントリの一つ一つに対
して適用する。
【0251】各エントリに対して、ステップS376で属
性値に対する条件判定を行い、ステップS377の判定の
結果、YESであったエントリをステップS378で返却す
る。
【0252】ステップS376の属性値に対する条件には
さまざまな場合が考えられるが、例えば属性値が数値で
あった場合の算術的な判定、属性値が文字列であった場
合の文字列一致やその部分的な一致などが挙げられる。
【0253】なお、本発明に実施の形態において、文書
格納実行部21の配列ツリーインデックス作成部21
1、要素−属性インデックス作成部212、要素−属性
テーブル作成部213の各処理ステップ、及び検索実行
部22は、コンピュータで実行されるプログラムにより
実行される。例えば図5、図6、図9、図12乃至図2
7等に示したフローチャートに従い所望のプログラミン
グ言語でプログラムを作成し実行モジュールを作成し、
該ソースプログラム又は実行モジュールを記録した、コ
ンピュータで読み出し可能な記録媒体、もしくは、コン
ピュータが通信接続可能な通信媒体から、該プログラム
を読み出してコンピュータにインストールして実行する
ことで、本発明を実施することができる。
【0254】
【実施例】本発明の一実施例として、本発明の文書格納
構造を基にした文書検索例に関して説明する。
【0255】[要素−属性インデックスを用いた文書及
びその要素の検索]図28にインスタンス図として示す
ように、文書フォルダオブジェクトが一つあり、文書フ
ォルダオブジェクトは3つの文書オブジェクトA、B、C
を管理し、さらに文書オブジェクトは、個々に、DTD
オブジェクトX、Yと関係付けられているとする。
【0256】文書オブジェクトA、B、Cの文書IDはそ
れぞれ1、2、3とし、DTDオブジェトX、YのDTDI
Dはそれぞれ1、2とする。
【0257】文書フォルダオブジェクトは、DTDオブ
ジェクトX、Yも管理する。
【0258】図29は、文書オブジェクトA、B、Cの内
容の例を示す図である。図28の左側の数字は、文書の
行番号を表しているのではなく、それぞれ前記数字の右
側に現れる要素の開始タグの最初の文字位置、また終了
タグの最後の文字位置をそれぞれ表しているものとす
る。
【0259】図30、及び図31は、DTDオブジェク
トX、Yが管理する要素−属性IDテーブルをそれぞれ示
す図である。
【0260】以上の文書オブジェクトA、B、Cを文書フ
ォルダオブジェクトに登録すると、文書フォルダオブジ
ェクトは、図23及び図24で示した手順に従い、図3
2に示す要素−属性インデックスを作成する。
【0261】検索要求の例「要素"疾患記録"の子孫要素
で、属性"pID"が1000以上の要素"患者"を取出せ」に
対する、検索実行部22の検索処理の手順について説明
する。
【0262】ステップ1:属性"pID"の値が1000以上
の要素"患者"の取出し:
【0263】a)文書フォルダオブジェクトは、自分が
管理するDTDオブジェクトX、Yの要素−属性IDテー
ブル、及びX、YのDTDIDをロードする。
【0264】b)DTDオブジェクトX、Yの要素−属性
IDテーブルから、検索要求で用いられている要素名("
患者"、"疾患記録")、属性名("pID")の要素名ID、
属性名IDを調べる。
【0265】・DTDオブジェクトX(DTDIDは1)
の場合: −"患者"=00030000、"pID"=00030001、"疾患記録"=00
040000 ・DTDオブジェクトY(DTDIDは2)の場合: −"患者"=00040000、"pID"=00040001、"疾患記録"=00
050000 ・"患者"と"pID"のIDの上位2バイトが同じ値であ
ることから、属性"pID"は、要素"患者"の属性である
ことが分かる。
【0266】c)文書フォルダオブジェクトが保有する
要素−属性インデックスにおいて、(DTDID、"pI
D"の属性名ID)と、属性値が1000以上という条件を満
たすデータを、図27に示した検索探索の手順に従って
検索する。
【0267】このときの図27のステップS376の検索
条件は、「属性値が1000以上」となる。結果、以下のエ
ントリが返却される。
【0268】−(1、00030001、1200、1、20) −(1、00030001、1200、1、40) −(2、00040001、1500、3、40)
【0269】すなわち、図33において、「○」を付け
た部分の要素が検索結果に該当する。「×」を付けた部
分は、属性値の条件である1000以上を満たさなかった要
素"患者"を表している。
【0270】ステップ2.要素"患者"が要素"疾患記録"
の子孫要素であるかどうかのチェック: a)各データの文書IDから文書オブジェクトをロード
し、各文書オブジェクトの要素ツリーインデックスをロ
ードする。
【0271】図34は、文書A(文書IDは1)の文書オ
ブジェクトの要素ツリーインデックスを示す、図35
は、文書C(文書IDは3)の文書オブジェクトの要素ツ
リーインデックスを示す図である。
【0272】これらの要素ツリーインデックスは、図9
に示した要素ツリーインデックス作成手順によってあら
かじめ作成されたものである。
【0273】b)図34、及び図35の要素ツリーイン
デックスを基に、ステップ1のc)で求めた属性"pID"
が1000以上の要素"患者"が、要素"疾患記録"の子孫要素
であるか否かを計算する。この計算処理が、文書の論理
構造に基づく検索に相当する。
【0274】この計算は、図16に示した子孫要素の取
出しによって、要素"疾患記録"の子孫要素にステップ1
のc)で求めた要素"患者"が存在するかチェックする。
【0275】このチェックの方法は、要素ツリーインデ
ックスにおける三番目のデータ項目「要素開始位置」
と、要素−属性インデックスの五番目のデータ項目「要
素開始位置」の値は、同じ要素であるならば同じ値とな
ることから、要素"疾患記録"の子孫要素の「要素開始位
置」の中に、ステップ1のc)で求めた要素−属性インデ
ックスのエントリの「要素開始位置」の値が含まれてい
るかを調べることによって判定することができる。
【0276】以上の結果、以下のエントリが要素"疾患
記録"の子孫要素となる。
【0277】−(1、00030001、1200、1、40) −(2、00040001、1500、3、40)
【0278】すなわち、図36において、印「○」を付
けた部分の要素が最終的な検索結果に該当する。
【0279】c)各文書IDの文書オブジェクトとその
要素開始位置から、検索結果である要素の中身を取出
し、返却する。
【0280】
【発明の効果】以上説明したように本発明によれば下記
記載の効果を奏する。
【0281】本発明の第1の効果は、DTDが異なるな
どで構造の異なる複数の構造化文書の集合に対する検索
において、各文書の構造に基づく検索を正しく実行可能
としている、ということである。
【0282】従来より、一つの文書に対する構造に基づ
く検索は可能であり、また複数の文書に対する構造に基
づく検索では、例えば特開平10−240752号公報等に、複
数の文書の構造を代表させる構造インデックスを用いた
検索などが提案されているが、前述したように、上記特
開平10−240752号公報等に記載される方法では、前記構
造インデックスが、各文書の構造を必ずしも正しく代表
しているとは限らない、という問題点を有しており、前
記構造インデックスを用いて検索を行っても、各文書の
論理構造の条件を正しく反映した検索結果が返ってくる
保証は得られなかった。
【0283】本発明によれば、文書の構造情報が記述さ
れるDTDを、各文書ごとにリンクして管理し、文書の
構造に基づく検索では、各文書ごとのDTDの情報を参
照することにより、各文書ごとの正しい論理構造に基づ
く検索を実現している。
【0284】本発明の第2の効果は、前記構造に基づく
検索に利用するためのインデックスの作成方法および利
用法を提供することにより、その検索性能を向上する、
ということである。
【0285】文書の論理構造に基づく検索要求では、文
書の要素名や属性名を指定することが多い。要素名や属
性名は通常は文字列で表されるので、上記特開平6−131
340号公報記載の装置では、インデックスとして前記要
素名や属性名の文字列を直接扱っているが、インデック
スとして文字列を扱うことの問題点は、文字列は一般に
可変長であり、文書の要素に対して必要なインデックス
の容量をあらかじめ予測できないこと、そしてその文字
列が長大であった場合、その分だけインデックスの容量
を必要とする。
【0286】本発明によれば、第一のインデックスとし
て、DTDクラスに要素−属性IDテーブルを備えてお
り、要素名や属性名はあるDTDの範囲で唯一に定めら
れることに着目し、各要素名、属性名に対応する要素名
ID、属性名IDを与えてその対応関係を要素−属性I
Dテーブルとして保持して管理したものであり、要素名
IDと属性名IDは数値として与えている。例えば32ビ
ット計算器におけるint型(整数型)のデータとして与
えた場合、要素名ID、属性名IDに必要な容量は固定
長で32ビットとなり、32ビットは半角文字に換算すると
4文字分であり、インデックスの省メモリ化を図ること
ができる。
【0287】インデックスを省メモリ化することは、よ
り多くの文書に関する情報を一度に計算機のメモリ上に
ロード可能にすることを意味し、結果として文書の検索
性能の向上につながる。
【0288】第二のインデックスとして、要素ツリーイ
ンデックスを備え、要素ツリーインデックスは、各文書
における要素間の関係を表すインデックスであり、各要
素に対して(要素名ID、要素レベル、要素開始位置)の
三つ組のデータを与えてその文書の構造を管理する。要
素ツリーインデックスの各エントリに必要な容量は、各
項目とも数値で表すこととができるので、例えば32ビッ
ト計算器におけるint型のデータとして与えれば、一エ
ントリに対して96ビット、12バイトとなる。すなわち、
要素ツリーインデックスも省メモリなインデックスとい
える。
【0289】また要素ツリーインデックスを用いて、あ
る要素からの親要素、祖先要素、子要素、子孫要素、兄
要素、弟要素、前要素、次要素などの相対的な関係にあ
る要素の取出しを可能にするので、構造に基づく検索要
求に応えるためのインデックスとしては前記12バイト
の構造で必要十分な情報量といえる。
【0290】本発明においては、第三のインデックスと
して、要素−属性インデックスを備えている。要素−属
性インデックスは、本発明の文書フォルダクラスのイン
デックスとして、複数の文書に対する要素や属性の情報
を保持するインデックスである。インデックスの構造
は、(DTDID、要素−属性名ID、属性値、文書I
D、要素開始位置)であり、二番目の項目「要素−属性
名ID」で要素名IDまたは属性名IDを用いており、
文字列をそのまま用いるよりはサイズを小さく抑え、ま
た固定長としている。
【0291】また、一番目の項目「DTDID」からD
TDオブジェクトの要素−属性IDテーブルを参照する
ことにより、各DTDで定義した要素名、属性名に基づ
いた検索条件の判定を可能としている。
【0292】このように、DTDに関する情報との関係
をエントリ一つ一つに持たせたので、DTDが異なる複
数の文書を単一のインデックスで扱うことを可能として
いる。
【0293】要素−属性インデックスの文書IDからは
文書オブジェクトを特定して、要素ツリーインデックス
を用いて構造に基づく条件判定を行ったり、要素開始位
置から即座に該当する要素を取出すことも可能としてい
る。
【0294】要素−属性インデックスの各エントリにつ
いては、(DTDID、要素−属性名ID)でソートした
順序としている。
【0295】これにより、(DTDID、要素−属性名
ID)を検索キーとした二分探索によるエントリの検索
を可能とし、より高速な目的の文書や要素の取出しを可
能としている。
【図面の簡単な説明】
【図1】本発明の一実施の形態の構成を示す図である。
【図2】本発明の一実施の形態におけるデータベースの
スキーマに関するクラスを示す図である。
【図3】本発明の一実施の形態における文書のインスタ
ンスとDTDのインスタンスの間のリンク関係の例を示
す図である。
【図4】本発明の一実施の形態における文書フォルダオ
ブジェクトの木構造に基づく分類階層の一例を示す図で
ある。
【図5】本発明の一実施の形態における、単一のDTD
の範囲における要素名IDの一意な割り振り方法の一例
を示す図である。
【図6】本発明の一実施の形態における単一のDTDの
範囲における属性名IDの一意な割り振り方法の一例を
示す図である。
【図7】本発明の一実施の形態におけるDTDの一例を
示す図である。
【図8】図7のDTDに対して割り振った要素名IDと
属性名IDを保持する要素−属性IDテーブルを示す図
である。
【図9】本発明の一実施の形態における要素ツリーイン
デックスの作成手順を示す流れ図である。
【図10】本発明の一実施の形態における文書の一例を
示す図である。
【図11】図10の文書の要素に関する木構造表記を示
す図である。
【図12】図10の文書に対する要素ツリーインデック
スを示す図である。
【図13】本発明の一実施の形態における親要素の取出
し手順を示す流れ図である。
【図14】本発明の一実施の形態における祖先要素の取
出し手順を示す流れ図である。
【図15】本発明の一実施の形態における子要素の取出
し手順を示す流れ図である。
【図16】本発明の一実施の形態における子孫要素の取
出し手順を示す流れ図である。
【図17】本発明の一実施の形態における兄要素の取出
し手順を示す流れ図である。
【図18】本発明の一実施の形態における弟要素の取出
し手順を示す流れ図である。
【図19】本発明の一実施の形態における末弟要素の取
出し手順を示す流れ図である。
【図20】本発明の一実施の形態における右深さ優先順
序での子孫要素の取出し手順を示す流れ図である。
【図21】本発明の一実施の形態における前要素の取出
し手順を示す流れ図である。
【図22】本発明の一実施の形態における次要素の取出
し手順を示す流れ図である。
【図23】本発明の一実施の形態における要素−属性イ
ンデックスの作成手順を示す流れ図(その1)である。
【図24】本発明の一実施の形態における要素−属性イ
ンデックスの作成手順を示す流れ図(その2)である。
【図25】本発明の一実施の形態における要素−属性イ
ンデックスにおける、エントリの挿入位置を求める手順
を示す流れ図である。
【図26】本発明の一実施の形態におけるリスト上のデ
ータに対する目的のデータの取出し手順、およびデータ
の挿入位置の計算手順を示す流れ図である。
【図27】本発明の一実施の形態における要素−属性イ
ンデックスにおける、エントリの検索手順を示す流れ図
である。
【図28】本発明の一実施例における文書フォルダ、文
書、DTDの各オブジェクトの関係の例を示すインスタ
ンスを示す図である。
【図29】本発明の一実施例における文書オブジェクト
A、B、Cを示す図である。
【図30】本発明の一実施例におけるDTDオブジェク
トXの要素−属性IDテーブルを示す図である。
【図31】本発明の一実施例におけるDTDオブジェク
トYの要素−属性IDテーブルを示す図である。
【図32】本発明の一実施例における要素−属性インデ
ックスを示す図である。
【図33】本発明の一実施例における属性"pID"の値
が1000以上の要素"患者"の検索結果を示す図である。
【図34】本発明の一実施例における文書オブジェクト
Aの要素ツリーインデックスを示す図である。
【図35】本発明の一実施例における文書オブジェクト
Cの要素ツリーインデックスを示す図である。
【図36】本発明の一実施例における要素"疾患記録"の
子孫要素である要素"患者"の検索結果を示す図である。
【符号の説明】
1 データベース 11 文書 12 文書フォルダ 13 DTD 14 要素ツリーインデックス 15 要素−属性インデックス 16 要素−属性IDテーブル 21 文書検索実行部 211 要素ツリーインデックス作成部 212 要素−属性インデックス 213 要素−属性IDテーブル作成部 22 検索実行部 111、112、113 文書 131、132 DTD 121〜126 文書フォルダ
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 15/401 330Z (72)発明者 鶴岡 邦敏 東京都港区芝五丁目7番1号 日本電気株 式会社内 Fターム(参考) 5B075 ND03 ND35 NK02 NK43 NK46 NK54 NR03 NR06 UU27 5B082 BA00 BA03 BA09 EA05

Claims (28)

    【特許請求の範囲】
  1. 【請求項1】構造化文書を管理するシステムにおいて、 データベースのスキーマとして、 文書を管理する文書クラスと、 前記文書のDTD(Document Type Definition;文書
    型定義)を管理するDTDクラスと、 前記文書とDTDの集合を管理する文書フォルダクラス
    と、 を有するデータベースを備えたことを特徴とする構造化
    文書管理システム。
  2. 【請求項2】前記データベースが、インデックスとし
    て、 前記文書クラスには、文書の要素の木構造関係を管理す
    る要素ツリーインデックスを備え、 前記文書フォルダクラスには、文書の要素ごと属性ごと
    にインデックスを作成し管理する要素−属性インデック
    スを備え、 前記DTDクラスには、要素名と属性名をIDとして管
    理するための要素−属性IDテーブルを備えたことを特
    徴とする請求項1記載の構造化文書管理システム。
  3. 【請求項3】前記データベースに文書を格納する手段
    が、 前記要素ツリーインデックスを作成する手段と、 前記要素−属性IDテーブルを作成する手段と、 前記要素−属性インデックスを作成する手段と、を備え
    たことを特徴とする請求項2記載の構造化文書管理シス
    テム。
  4. 【請求項4】前記要素−属性IDテーブルが、文書にお
    ける要素の要素名、及び属性名にそれぞれ対応する、数
    値よりなる要素名ID、属性名IDを備えている、こと
    を特徴とする請求項2又は3記載の構造化文書管理シス
    テム。
  5. 【請求項5】前記要素ツリーインデックスが、各文書に
    おける要素間の関係を表すインデックスをなし、前記イ
    ンデックスの構造が、前記各要素に対して、(要素名I
    D、前記要素を木構造で表したときのルート要素からの
    深さを表す要素レベル、要素の開始位置)の三つ組の項
    目データを備えて文書の構造を表し、前記各項目は数値
    で表されている、ことを特徴とする請求項2又は3記載
    の構造化文書管理システム。
  6. 【請求項6】前記要素ツリーインデックスを用いて、あ
    る要素に対して、その親要素、祖先要素、子要素、子孫
    要素、兄要素、弟要素、前要素、次要素などの相対的な
    関係にある要素の取出しを可能としている、ことを特徴
    とする請求項5記載の構造化文書管理システム。
  7. 【請求項7】前記要素−属性インデックスが、複数の文
    書に対する要素や属性の情報を保持するインデックスを
    なし、(DTDID、要素−属性名ID、属性値、文書
    ID、要素開始位置)の五つ組よりなる、ことを特徴と
    する請求項2又は3記載の構造化文書管理システム。
  8. 【請求項8】前記DTDIDからは、DTDオブジェク
    トの要素−属性IDテーブルを参照することにより、各
    DTDで定義した要素名、属性名に基づいた検索条件の
    判定を可能とするとともにDTDに関する情報との関係
    をインデクッスの各エントリに備え、DTDが異なる複
    数の文書を単一のインデックスで扱うことを可能とし、
    前記文書IDからは、文書オブジェクトを特定して前記
    要素ツリーインデックスを用いて構造に基づく条件判
    定、要素開始位置からの要素を取出しを可能としてい
    る、ことを特徴とする請求項7記載の構造化文書管理シ
    ステム。
  9. 【請求項9】前記要素−属性IDテーブルが、要素名I
    Dと要素名の対応、属性名IDと属性名の対応を備え、 前記DTD内で定義される各要素名に対して唯一となる
    要素名IDが数値として与えられ、前記要素名と要素名
    IDとの対応関係をテーブルとして作成し、前記テーブ
    ルが、前記DTDクラスのインスタンスであるオブジェ
    クトと一対一の関係で、前記要素−属性IDテーブルの
    インスタンスとして前記データベースに格納され、 属性名についても、DTDオブジェクト内の要素に対し
    て唯一であり、かつ互いに異なる要素名の間で同じ属性
    名が存在する場合でもこれらを識別できるような属性名
    IDが数値として与えられ、前記属性名と属性名IDと
    の対応関係をテーブルとして作成し前記テーブルが前記
    要素−属性IDテーブルのインスタンスとして前記デー
    タベースに格納されている、ことを特徴とする請求項2
    又は3記載の構造化文書管理システム。
  10. 【請求項10】前記要素−属性インデックスを作成する
    手段が、 前記DTDで定義される各要素名に対して唯一となるよ
    うな要素名IDを数値として与え、前記要素名と要素名
    IDとの対応関係をテーブルとして作成し、前記作成し
    た前記テーブルを、前記DTDクラスのインスタンスで
    あるオブジェクトと一対一の関係で要素−属性IDテー
    ブルのインスタンスとして前記データベースに格納し、 属性名についても、DTDオブジェクト内の要素に対し
    て唯一であり、かつ互いに異なる要素名の間で同じ属性
    名が存在する場合でもこれらを識別できるような属性名
    IDに数値を与え、前記属性名と属性名IDとの対応関
    係をテーブルとして作成し、前記作成したテーブルを前
    記要素−属性IDテーブルのインスタンスとして、デー
    タベースに格納する、ことを特徴とする請求項3記載の
    構造化文書管理システム。
  11. 【請求項11】前記要素ツリーインデックスを作成する
    手段が、 文書の要素の開始タグの最初の文字位置、終了タグの最
    後の文字位置を求め、要素開始位置として開始タグの中
    の要素名を求め、前記文書の文書オブジェクトと関係す
    るDTDオブジェクトから要素−属性IDテーブルを取
    り出して、前記要素の要素名IDを求め、つづいて、前
    記要素を木構造で表したときのルート要素からの深さを
    表す要素レベルを求め、(要素名ID、要素レベル、要
    素開始位置)の三つ組よりなるエントリを追加する、こ
    とを特徴とする請求項3記載の構造化文書管理システ
    ム。
  12. 【請求項12】前記要素−属性インデックスを作成する
    手段が、前記五つ組みのデータ構造(DTDID、要素
    −属性名ID、属性値、文書ID、要素開始位置)の各
    項目の値を求め、(DTDID、要素−属性名ID)値
    でソートした順序を保ちながら、前記要素−属性インデ
    ックスのリストに作成したエントリを追加する、ことを
    特徴とする請求項3記載の構造化文書管理システム。
  13. 【請求項13】前記要素−属性インデックスを作成する
    手段が、文書フォルダクラスのインスタンスをなすオブ
    ジェクトに、文書オブジェクトを追加した際に、前記文
    書オブジェクトと関係するDTDオブジェクトも同時に
    追加し、前記追加した文書オブジェクトの各要素に対す
    る要素−属性インデックスのエントリを作成して追加す
    る、ことを特徴とする請求項3記載の構造化文書管理シ
    ステム。
  14. 【請求項14】前記要素−属性インデックスを作成する
    手段が、文書の要素の開始タグを探し、開始タグの最初
    の文字位置と開始タグの要素名を求め、前記文書オブジ
    ェクトと関係するDTDオブジェクトと1対1の関係を
    持つ要素−属性IDテーブルから前記要素名に対応する
    要素IDを求め、 前記開始タグの中の属性を求め属性がない場合、 (DTDID、要素名ID)で要素−属性インデックス
    に対する挿入位置を求め、該挿入位置に、(DTDI
    D、要素−属性名ID、ヌル、文書ID、要素開始位
    置)のエントリを追加し、 前記開始タグの中に属性がある場合、前記属性の属性値
    について要素−属性IDテーブルから前記属性名に対応
    する属性IDを求め、 (DTDID、属性名ID)で要素−属性インデックス
    に対する挿入位置を求め、該挿入位置に、(DTDI
    D、要素−属性名ID、ヌル、文書ID、要素開始位
    置)のエントリを追加する、ことを特徴とする請求項3
    記載の構造化文書管理システム。
  15. 【請求項15】前記要素ツリーインデックス、前記要素
    −属性IDテーブル、前記要素−属性インデックスを用
    いて、前記データベースから、構造化文書を検索する検
    索手段を備えたことを特徴とする請求項2又は3記載の
    構造化文書管理システム。
  16. 【請求項16】文書要素の取出しに際して、構造化文書
    中のある文書要素からの相対的な関係として、前記文書
    要素に対する親要素、祖先要素、子要素、子孫要素、兄
    要素、弟要素、前要素、次要素のうちのいずれか又はこ
    れらの組合せで取出しを行う検索手段を備えた、ことを
    特徴とする請求項1乃至3のいずれか一に記載の構造化
    文書管理システム。
  17. 【請求項17】前記検索手段が、文書やその要素の検索
    にあたり、DTDが異なるなど論理構造が互いに異なる
    複数の構造化文書に対する検索を行う、ことを特徴とす
    る請求項16記載の構造化文書管理システム。
  18. 【請求項18】構造化文書をデータベースで管理する装
    置において、 前記データベースが、スキーマのクラスとして、 文書を管理する文書クラスと、 前記文書のDTD(Document Type Definition;文書
    型定義)を管理するDTDクラスと、 前記文書とDTDの集合を管理する文書フォルダクラス
    と、 を有し、 第1のインデックスとして、前記文書クラスには、文書
    の要素の木構造関係を管理する要素ツリーインデックス
    を備え、 第2のインデックスとして、前記文書フォルダクラスに
    は、文書の要素ごと属性ごとにインデックスを作成し管
    理する要素−属性インデックスを備え、 第3のインデックスとして、前記DTDクラスには、要
    素名と属性名をIDとして管理するための要素−属性I
    Dテーブルであって、文書における要素の要素名、及び
    属性名にそれぞれ対応する、数値よりなる要素名ID、
    属性名IDを有する要素−属性IDテーブルを備え、 前記データベースに文書の格納する文書格納実行手段
    が、 前記要素ツリーインデックスを作成する手段と、 前記要素−属性IDテーブルを作成する手段と、 前記要素−属性インデックスを作成する手段を備え、 前記データベースから文書を検索する検索手段が、前記
    文書の論理構造に基づき検索を行うにあたり、前記要素
    ツリーインデックス、前記要素−属性IDテーブル、前
    記要素−属性インデックスを用いて検索する、ことを特
    徴とする構造化文書管理装置。
  19. 【請求項19】前記検索手段が、文書要素の取出しに際
    して、構造化文書中のある文書要素からの階層的な関係
    として、前記文書要素に対する親要素、祖先要素、子要
    素、子孫要素、兄要素、弟要素、前要素、次要素のうち
    のいずれか又はこれらの組合せで取出しを行う、ことを
    特徴とする請求項18記載の構造化文書管理装置。
  20. 【請求項20】前記検索手段が、文書やその要素の検索
    にあたり、DTDが異なるなど論理構造が互いに異なる
    複数の構造化文書に対する検索を行う、ことを特徴とす
    る請求項18記載の構造化文書管理装置。
  21. 【請求項21】前記要素ツリーインデックスが、各文書
    における要素間の関係を表すインデックスをなし、前記
    インデックスの構造が、前記各要素に対して、(要素名
    ID、前記要素を木構造で表したときのルート要素から
    の深さを表す要素レベル、要素の開始位置)の三つ組の
    項目データを備えている、ことを特徴とする請求項18
    記載の構造化文書管理装置。
  22. 【請求項22】前記要素−属性インデックスが、複数の
    文書に対する要素や属性の情報を保持するインデックス
    をなし、(DTDID、要素−属性名ID、属性値、文
    書ID、要素開始位置)の五つ組よりなる、ことを特徴
    とする請求項18記載の構造化文書管理装置。
  23. 【請求項23】前記要素−属性IDテーブルが、要素名
    IDと要素名の対応、属性名IDと属性名の対応を備
    え、 前記DTD内で定義される各要素名に対して唯一となる
    ような要素名IDが数値として与えられ、前記要素名と
    要素名IDとの対応関係をテーブルとして作成し、前記
    テーブルが、前記DTDクラスのインスタンスであるオ
    ブジェクトと一対一の関係で、前記要素−属性IDテー
    ブルのインスタンスとして前記データベースに格納さ
    れ、 属性名についても、DTDオブジェクト内の要素に対し
    て唯一であり、かつ互いに異なる要素名の間で同じ属性
    名が存在する場合でもこれらを識別できるような属性名
    IDが数値として与えられ、前記属性名と属性名IDと
    の対応関係をテーブルとして作成し前記テーブルが前記
    要素−属性IDテーブルのインスタンスとして前記デー
    タベースに格納されている、ことを特徴とする請求項1
    8記載の構造化文書管理装置。
  24. 【請求項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. 【請求項25】前記データベースから前記文書の論理構
    造に基づき検索を行うに際して、前記要素ツリーインデ
    ックスを用いて、ある要素から相対的な関係にある要素
    として、親要素、祖先要素、子要素、子孫要素、兄要
    素、弟要素、前要素、次要素のうちいずれか又はこれら
    の組合せで取出す、ことを特徴とする請求項24記載の
    構造化文書管理方法。
  26. 【請求項26】前記要素−属性インデックスを作成する
    にあたり、文書フォルダクラスのインスタンスをなすオ
    ブジェクトに、文書オブジェクトを追加した際に、前記
    文書オブジェクトと関係するDTDオブジェクトも同時
    に追加し、前記追加した文書オブジェクトの各要素に対
    する要素−属性インデックスのエントリを作成して追加
    し、文書の要素の開始タグを探し、開始タグの最初の文
    字位置と開始タグの要素名を求め、前記文書オブジェク
    トと関係するDTDオブジェクトと1対1の関係を持つ
    要素−属性IDテーブルから前記要素名に対応する要素
    IDを求め、 前記開始タグの中の属性を求め属性がない場合、 (DTDID、要素名ID)で要素−属性インデックス
    に対する挿入位置を求め、該挿入位置に、(DTDI
    D、要素−属性名ID、ヌル、文書ID、要素開始位
    置)のエントリを追加し、 前記開始タグの中に属性がある場合、前記属性の属性値
    について要素−属性IDテーブルから前記属性名に対応
    する属性IDを求め、 (DTDID、属性名ID)で要素−属性インデックス
    に対する挿入位置を求め、該挿入位置に、(DTDI
    D、要素−属性名ID、ヌル、文書ID、要素開始位
    置)のエントリを追加することを特徴とする請求項24
    記載の構造化文書管理方法。
  27. 【請求項27】文書やその要素の検索にあたり、DTD
    が異なるなど論理構造が互いに異なる複数の構造化文書
    に対する検索を行う、ことを特徴とする請求項24記載
    の構造化文書管理方法。
  28. 【請求項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)の処理を前記構造化文書管理装
    置を構成するコンピュータで実行させるためのプログラ
    ムを記録したコンピュータで読み出し可能な記録媒体。
JP14115399A 1999-05-21 1999-05-21 構造化文書管理システム及び方法並びに記録媒体 Expired - Fee Related JP3508623B2 (ja)

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)

* Cited by examiner, † Cited by third party
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パーシング

Cited By (4)

* Cited by examiner, † Cited by third party
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