JP2004126804A - 文書管理方法および装置 - Google Patents

文書管理方法および装置 Download PDF

Info

Publication number
JP2004126804A
JP2004126804A JP2002287805A JP2002287805A JP2004126804A JP 2004126804 A JP2004126804 A JP 2004126804A JP 2002287805 A JP2002287805 A JP 2002287805A JP 2002287805 A JP2002287805 A JP 2002287805A JP 2004126804 A JP2004126804 A JP 2004126804A
Authority
JP
Japan
Prior art keywords
document
value
xml
unit
inquiry
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.)
Pending
Application number
JP2002287805A
Other languages
English (en)
Inventor
Yoshiro Matsui
松井 善郎
Yasuo Akai
赤井 靖雄
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.)
JustSystems Corp
Original Assignee
JustSystems 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 JustSystems Corp filed Critical JustSystems Corp
Priority to JP2002287805A priority Critical patent/JP2004126804A/ja
Publication of JP2004126804A publication Critical patent/JP2004126804A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】大量のXML文書を効率良く取り扱うことが可能なデータベースを提供する。
【解決手段】XML−RDBゲートウェイ100は、登録ユニット110によりXML文書をリレーショナルデータベースに登録し、問い合わせユニット120により登録したXMLデータへの問い合わせを受け付けて必要な処理を実行する。データベース登録部116は、XML文書入力部112に入力されたXML文書を、マッピング定義保持部114に保持された規則にしたがってマッピングし、データベースに登録する。この規則は、ある要素に含まれる要素値および属性値のうち、出現数の上限が定まっているものについては、その要素に対応する階層のテーブルに前記上限の数のフィールドを設けてそれらの値を格納するように定められる。
【選択図】    図2

Description

【0001】
【発明の属する技術分野】
この発明は、文書管理技術に関する。この発明は特に、XMLなどの構造化言語により記述された文書をデータベースに格納して取り扱う技術に関する。
【0002】
【従来の技術】
インターネットなどのネットワークを介したデータ交換に適した記述言語に、XML(eXtensible Markup Language)がある。XMLは、今や、ウェブによる各種サービス、電子商取引など、ITにおいて注目を集める分野のコア技術として採用されている。XMLは、テキスト形式で記述されるため、マルチプラットフォーム環境でのデータ交換に適している上、文書構造を構成する個々の要素をタグにより記述することで、データの意味やデータ構造を保持したままデータ交換が可能である。また、タグの名前やタグの階層構造などをユーザが定義できるので、データの種類などに応じて柔軟に文書構造を規定することができる。このような多くの利点により、様々な分野においてデータがXMLにより電子化され、利用されるようになっている。
【0003】
大量のXMLデータを効率良く扱うためには、XML文書をデータベースに格納して取り扱う必要がある。XMLデータを扱うデータベースとして、階層型データベース、リレーショナルデータベース、オブジェクト指向データベースなどが提案されている。(たとえば、非特許文献1参照)。
【0004】
【非特許文献1】
大野 邦夫、「XMLデータベース再考」、XMLマガジン04、p.60−p.74
【0005】
【発明が解決しようとする課題】
しかしながら、従来のXMLデータベースは、階層構造や要素の出現順序の適切な管理、データ操作の高速性、記憶領域の使用効率、インターフェイスの容易さ、などの観点から見て、いずれも一長一短と言わざるを得ない。大量のXMLデータがやり取りされるようになった現在、XMLの利点を最大限に生かしつつ、大量のデータの取り扱いに適したデータベースを利用するための新たな技術が求められている。
【0006】
本発明はこうした状況に鑑みてなされたものであり、その目的は、大量のXML文書を効率良く取り扱うことが可能なデータベースを提供することにある。本発明の別の目的は、XML文書の利点を最大限に生かしたデータベースの利用技術を提供することにある。
【0007】
【課題を解決するための手段】
本発明のある態様は、文書管理装置に関する。この文書管理装置は、構造化言語により記述された文書の入力を受け付ける入力部と、前記文書に含まれる要素値または属性値を、前記文書が有する階層構造を反映して設けられたテーブルにマッピングするための規則を保持する保持部と、前記規則を前記保持部から読み出して、その規則に基づいて前記要素値または属性値をテーブルにマッピングし、データベースに登録する登録部と、を備え、前記規則は、ある要素に含まれる要素値および属性値のうち、出現数の上限が定まっているものについては、その要素に対応する階層のテーブルに前記上限の数のフィールドを設けてそれらの値を格納するように定められる。
【0008】
上位の階層の要素から順にテーブルにマッピングするとき、ある要素が1以上の同種のデータを含んでいる場合、そのデータの出現数が定まっている場合はそのテーブルにフィールドを設けて格納し、出現数が不定の場合は新たにテーブルを設けて格納する。新たに設けたテーブルは、下位階層の要素に対応したテーブルであり、上位のテーブルとの間でリレーションを張ることにより、文書の階層構造を反映した階層的なテーブル設計が実現される。ここで、文書に含まれる要素の階層構造に忠実にテーブルを設けると、記録領域の使用効率や検索効率が低下する場合があるが、出現数が定まったデータについては新たにテーブルを設けずに上位のテーブルに格納することで、記録領域の使用効率および検索効率を向上させることができる。
【0009】
前記規則は、前記文書に含まれる要素値および属性値のうち、検索キーとして利用するものを抽出してテーブルにマッピングするように定められてもよい。これにより、さらに記録領域の使用効率や検索効率を向上させることができる。
【0010】
前記テーブルは、前記要素値または属性値の前記文書中における出現順序を示す情報を格納するフィールドを含み、前記規則は、前記要素値または属性値と前記出現順序とを対応付けてテーブルに格納するように定められてもよい。文書を構成する要素の出現順序も重要な意味を持つので、出現順序を適切に保存しつつデータを管理することが重要である。
【0011】
前記登録部は、前記要素値または属性値に対して所定の演算を施した結果をテーブルに格納してもよい。たとえば、テキストデータを連結したり、数字データに算術演算を施したりした結果を格納してもよい。
【0012】
下位の階層の要素に対応するテーブルに、その要素を含む上位の階層の要素の識別情報を格納するフィールドを設け、前記規則は、前記下位の階層の要素の要素値または属性値と、前記上位の階層の要素の識別情報とを対応付けて格納してもよい。これにより、下位の階層のテーブルに格納されたデータであっても、上位の階層のテーブルを参照することなく、データを一意に識別することができる。
【0013】
前記文書に対する問い合わせを行うための第1の問い合わせ言語により記述された第1の問い合わせ文を受け付ける問い合わせ受付部と、前記第1の問い合わせ文に記述された問い合わせを実行するために必要な処理を、前記データベースを管理する管理部に要求すべく、前記データベースに対する問い合わせを行うための第2の問い合わせ言語により記述された第2の問い合わせ文を生成する生成部と、前記第2の問い合わせ文を前記管理部に送る送信部と、前記管理部から前記第2の問い合わせ文に対する結果を受信する受信部と、前記結果に基づいて、前記第1の問い合わせ文に対する応答を生成する応答生成部と、前記応答を問い合わせ先に送信する応答送信部と、をさらに備えてもよい。第1の問い合わせ言語は、たとえば、XQuery、XQL、XPathなどであり、第2の問い合わせ言語は、たとえば、リレーショナルデータベース用の問い合わせ言語であるSQLなどである。内部的には大量のデータの取り扱いに適したリレーショナルデータベースを使用しつつ、ユーザ側のインターフェイスにはXML用の問い合わせ言語を利用することができる。
【0014】
本発明の別の態様は、文書管理方法に関する。この方法は、構造化言語により記述された文書を受け付ける工程と、前記文書に含まれる要素値または属性値を、前記文書が有する階層構造を反映して設けられたテーブルにマッピングするための規則を予め取得して保持する工程と、前記規則に基づいて、前記要素値または属性値をテーブルにマッピングしてデータベースに登録する工程と、を含み、前記規則は、ある要素に含まれる要素値および属性値のうち、出現数が不定のものについては、その要素値または属性値を格納するための下位階層のテーブルを新たに設けて値を格納するように定められる。
【0015】
なお、以上の構成要素の任意の組合せや、本発明の構成要素や表現を方法、装置、システム、コンピュータプログラム、コンピュータプログラムを格納した記録媒体などの間で相互に置換したものもまた、本発明の態様として有効である。
【0016】
【発明の実施の形態】
【0017】
図1は、実施の形態に係るデータベース管理システム10の全体構成を示す。このデータベース管理システム10は、XML(eXtensible Markup Language)、SGML(Standard Generalized Markup Language)、HTML(HyperText Markup Language)などの構造化言語により記述された文書を、リレーショナルデータベース(Relational DataBase:以下、「RDB」とも表記する)に格納して取り扱うことにより、大量の文書を効率良く扱うことを可能とする。本実施の形態では、XMLにより記述された文書をRDBに格納する場合について説明する。
【0018】
データベース管理システム10は、クライアント20aおよび20b、WebDAVサーバ30、XML−RDBゲートウェイ100、RDB管理ユニット40、およびデータストレージ50を含む。各装置は、有線または無線のネットワークにより接続され、ネットワークを介して互いに通信を行う。XML−RDBゲートウェイ100は、クライアントから、XML文書に対する問い合わせに適したXQueryなどの問い合わせ言語による問い合わせを受け付け、それをSQL(Structured Query Language)などのRDB用の問い合わせ言語に変換してRDB管理ユニット40へ送る。すなわち、XML−RDBゲートウェイ100は、クライアントとRDB管理システムとを仲介するゲートウェイの機能を有する。XMLの問い合わせ言語には、XPath(XML Path Language)、XQL(XML Query Language)、XQueryなどがあるが、本実施の形態では、XQueryを例にとって説明する。
【0019】
クライアント20aおよび20bは、データベース管理システム10を利用するユーザの装置である。ユーザは、クライアントアプリケーション22aまたは22bを用いてデータベースを利用する。クライアントアプリケーション22aは、XML−RDBゲートウェイ100に直接問い合わせを行うためのモジュールであるクライアントインターフェースライブラリ24を備えており、XML−RDBゲートウェイ100がサポートする問い合わせ言語、ここではXQueryにより問い合わせを行う。WebDAVサーバ30は、WebDAV(Web−based Distributed Authoring and Versioning)プロトコルをサポートするサーバであり、クライアントアプリケーション22aおよび22bからHTTP(Hyper−Text Transfer Protocol)による問い合わせを受け付け、XML−RDBゲートウェイモジュール32によりXQueryに変換して問い合わせを行う。これにより、クライアントインターフェースライブラリ24を備えていないクライアントアプリケーション22bであっても本データベース管理システム10を利用することができる。
【0020】
XML−RDBゲートウェイ100は、クライアントアプリケーション22aから直接、またはWebDAVサーバ30を介して、ユーザからの問い合わせを受け付け、それをRDB管理ユニット40がサポートする問い合わせ言語、ここではSQLに変換して問い合わせを行う。RDB管理ユニット40は、既知のRDBMS(Relational DataBase Management System)であってよく、SQLによる問い合わせを受け付けて、データストレージ50に格納されたRDBに対して、APPEND(格納)、UPDATE(更新)、DELETE(削除)、SELECT(取得)などの処理を行う。
【0021】
XML−RDBゲートウェイ100は、データベースに登録すべきXML文書を外部から取得し、それを所定のマッピング定義に基づいてRDBのテーブルへマッピングする機能も有する。このような構成により、RDBをXMLデータベースとして利用することが可能となる。図1に示した各構成は、それぞれ別の装置により実現されてもよいし、いくつかの構成が一つの装置により実現されてもよい。データベース管理システム10は、クライアント−サーバシステムとして実現されてもよいし、スタンドアロンシステムとして一つの装置内に実現されてもよい。このように、本実施の形態のデータベース管理システム10を実現する装置の構成に自由度が高いことは当業者に理解されるところである。
【0022】
図2は、XML−RDBゲートウェイ100の内部構成を示す。XML−RDBゲートウェイ100は、主に、XML文書をRDBに登録する登録ユニット110、およびRDBに対する問い合わせを行う問い合わせユニット120を備える。XML−RDBゲートウェイ100は、ハードウエア的にはコンピュータのCPUやメモリなどの構成で実現でき、ソフトウエア的にはゲートウェイ機能のあるプログラムなどによって実現できるが、本図ではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウエア、ソフトウエアの組合せによっていろいろなかたちで実現できる。
【0023】
登録ユニット110は、RDBに登録するXML文書を外部から取得するXML文書入力部112と、XML文書をテーブルにマッピングするときの規則を記述したマッピング定義を保持するマッピング定義保持部114と、XML文書をマッピング定義にしたがってテーブルにマッピングし、RDBに登録するデータベース登録部116とを備える。XML文書をテーブルにマッピングする方法の詳細については、例を参照しつつ後述する。
【0024】
問い合わせユニット120は、クライアント20からXQueryによる問い合わせを受け付ける問い合わせ受付部122と、受け付けた問い合わせ文を解析し、SQL文に変換する解析部124と、SQLによる問い合わせ文をRDB管理ユニット40に送信する問い合わせ送信部126と、RDB管理ユニット40から問い合わせの結果を取得する問い合わせ結果取得部132と、問い合わせ結果取得部132が取得した結果を、もとのXQueryによる問い合わせ文に基づいてXML文書に整形する文書整形部134と、整形されたXML文書を問い合わせの結果としてクライアント20に送信する文書送信部136とを備える。問い合わせの方法の詳細については、例を参照しつつ後述する。
【0025】
まず、文書型定義(Document Type Definition:以下、「DTD」ともいう)に則って記述された、正当な(valid)XML文書をテーブルにマッピングしてRDBに登録する方法を説明する。正当なXML文書は、含まれる要素や構造が決まっているから、一度マッピング定義を定めると、そのマッピング定義にしたがって大量の文書を効率よくRDBに格納することができる。文書型定義として、XML−SchemaやRelaxなどを利用してもよい。
【0026】
図3は、データベースに格納すべきXML文書のサンプルデータのDTDを示す。このXML文書は、会合に参加したグループの構成メンバーを記述するものである。DTDから分かるとおり、ルート要素 ”list” は、子要素として、必ず1回出現する要素 ”month” と、0回以上出現する要素 ”group” とを、この順序で含み、さらに属性値として文字データ ”year” を含む。属性値 ”year” は、ここでは、会合が開催された年を格納する。要素 ”month” は文字データを含み、ここでは、会合が開催された月を格納する。要素 ”group” は、必ず1回出現する要素 ”name” と、1回以上出現する要素 ”member” とを、この順序で含む。要素 ”name” は文字データを含み、ここでは、会合に参加したグループ名を格納する。要素 ”member” は文字データを含み、ここでは、会合に参加したグループの構成メンバー名を格納する。
【0027】
図4は、データベースに格納すべきXML文書のサンプルデータを示す。このXML文書には、2002年8月に開催された会合に参加したグループの構成メンバーが格納されており、グループ名「Team A」のグループの構成メンバーは、「A1」、「A2」、「A3」の3名であり、グループ名「Team B」のグループの構成メンバーは、「B1」、「B2」、「B3」、「B4」の4名であり、グループ名「Team
C」のグループの構成メンバーは、「C1」、「C2」の2名である。
【0028】
図5は、図4に示したXML文書をテーブルにマッピングした例を示す。図5の例では、XML文書の階層構造を反映した3つのテーブルにデータが格納されている。まず、第1のテーブル ”table1” には、トップノードである ”list” ノードに対応する「list_」欄を設け、”list” ノードにID番号を割り当てて格納する。このID番号は、XMLファイルのID番号としての意味も有する。さらに、この ”list” ノードに含まれる出現数の上限が定まった要素値および属性値の欄を設ける。この例では、”list” ノードの属性値 ”year” と、”month” ノードの要素値は、それぞれ ”list” ノードに1回ずつ含まれるので、「list__year」欄と、「list_month」欄を1つずつ設け、それぞれの値を格納する。
【0029】
”list” ノードに含まれる要素のうち、”group” ノードは出現数の上限値が定まっていないため、第1のテーブル ”table1” に適当な数の欄を設けて格納しようとすると、それよりも多くの ”group” ノードが出現した場合に、そのXML文書を格納することができない。また、そのような事態を見越して必要以上の欄を設けておいた場合には、記憶領域の使用効率が低下してしまう。そのため、本実施の形態では、出現数が不定な要素については、新たにテーブルを設けて格納する。
【0030】
第2のテーブル ”table2” には、”group” ノードの出現順序を格納する「list_group_」欄を設け、”group” ノードに対して、XML文書における出現順にID番号を割り当てて格納する。すなわち、このID番号は、単にレコードを一意に識別するだけでなく、XML文書におけるノードの出現順序をも示している。このように、出現順序を格納しておくことで、後述するように、XMLなどの構造化言語により記述されたデータに適した検索処理および検索結果の出力処理を行うことができる。第2のテーブル ”table2” には、さらに、”group” ノードに必ず1回含まれるノード ”name” の要素値を格納するための「list_group_name」欄が設けられる。また、新たに設けた第2のテーブル ”table2” にも、「list_」欄を設けておき、第1のテーブル ”table1” の「list_」欄に foreign key 指定をして、リレーションを張るとともに、データ削除処理のために、ON UPDATE CASCADE 指定をしておく。このように、下位の階層の要素を格納したテーブルにも上位の要素のID番号を格納しておくことで、上位のテーブルを参照することなく、各データをテーブル内で一意に識別することができるため、SQLによる問い合わせにおいて1回の指定でデータにアクセスすることが可能となる。この点についても、例を参照しつつ後述する。”group” ノードに含まれる要素のうち、”member” ノードは出現数が不定であるため、第2のテーブル ”table2” には格納せず、新たに第3のテーブルを設けて格納する。
【0031】
第3のテーブル ”table3” には、”member” ノードの出現順序を格納する「list_group_member_」欄を設け、”member” ノードに対して、XML文書における出現順にID番号を割り当てて格納する。第3のテーブル ”table3” には、さらに、”member” ノードの要素値を格納するための「list_group_member」欄が設けられる。また、新たに設けた第3のテーブル ”table3” に、「list_」欄および「list_group_」欄を設けておき、それぞれ、第1のテーブル ”table1” の「list_」欄、第2のテーブル ”table2” の「list_group_」欄にリレーションを張り、ON UPDATE CASCADE 指定をしておく。
【0032】
図4に示したXML文書は、上述したような規則に則って図5に示したテーブルにマッピングされる。本実施の形態では、このようなマッピング定義をXML文書で記述し、マッピング定義保持部114に保持する。データベース登録部116は、このマッピング定義ファイルを参照して、入力されたXML文書をテーブルに展開する。
【0033】
図6は、マッピング定義を記述するXML文書のDTDを示す。マッピング定義は、ルート要素 ”map” を有する。要素 ”map” は、その下位に、1回以上出現する要素 ”table” を有する。要素 ”table” は、テーブルごとに設けられ、属性値として、テーブルの名称を格納する ”name” を必ず含み、さらに、その下位に、1回以上出現する要素 ”column” を有する。要素 ”column” は、欄ごとに設けられ、省略不可能な属性値として、欄の名称を格納する ”name” を含み、省略可能な属性値として、オプション設定を格納する ”option”、他のテーブルの欄とのリレーションを格納する ”relation” 、RDBにおけるテーブル定義に使用するデータ型を格納する ”type”、欄に該当する要素または属性を指す xpath を格納する ”xpath” を含む。
【0034】
図7は、図4に示したXML文書をテーブルに展開するためのマッピング定義を示す。テーブルの型は、「CASCADE」であり、3つのテーブルが設けられる。第1のテーブルは、名称が「table1」であり、3つの欄を有する。第1の欄「list_」は、IDを格納した整数型で、xpath は「/list」である。第2の欄「list__year」は、整数型で、xpath は「/list/@year」である。第3の欄「list_month」は、32バイトの文字列型で、xpath は「/list/month」である。第2のテーブルは、名称が「table2」であり、3つの欄を有する。第1の欄「list_」には、第1のテーブルの「list_」へのリレーションが張られている。第2の欄「list_group_」はIDを格納した整数型で、xpath は「/list/group」である。第3の欄「list_group_name」は、64バイトの文字列型で、xpath は「/list/group[list_group_]」である。第3のテーブルは、名称が「table3」であり、4つの欄を有する。第1の欄「list_」は、第1のテーブルの「list_」へのリレーションが張られている。第2の欄「list_group_」には、第2のテーブルの「list_group_」へのリレーションが張られている。第3の欄「list_group_member_」はIDを格納した整数型で、xpath は「/list/group[list_group_]/member/」である。第4の欄「list_group_member」は、64バイトの文字列型で、xpath は「/list/group[list_group_]/member[list_group_member_]」である。
【0035】
上記の例では、XML文書に含まれる全てのノードをテーブルにマッピングしたが、検索対象としないノードはテーブルにマッピングせず、検索キーとなるノードのみをテーブルにマッピングしてもよい。これにより、記憶領域の使用効率および検索効率を向上させることができる。この場合、マッピングしなかったノードのデータも必要であるから、XML文書全体をBLOB(binary large object)型などの形式で格納しておいてもよい。テーブルにマッピングしていないノードに対する取得、更新などの問い合わせがあった場合は、BLOB型で格納されたデータに対して処理を行う。これにより、マッピングすることが不可能なデータを含むXML文書であっても、本実施の形態のデータベース管理システムにより取り扱うことが可能となる。また、ノードの前後関係を修復したり、ノードツリー単位で更新したりすることが可能となる。全てのデータをテーブルにマッピングした場合であっても、XML文書全体をBLOB型で格納しておいてもよい。
【0036】
上述のマッピング定義ファイルは、データベース設計時にユーザまたはデータベース管理者が、XML文書の構造および内容を考慮し、検索キーとなるノードを抽出して作成してもよいし、図示しないマッピング定義生成部がDTDまたはスキーマを参照して自動的に生成してもよい。後者の場合、マッピング定義生成部は、DTD、XML−Schema、またはRelaxなどの文書型定義を参照して文書の階層構造を取得した後、文書に含まれる要素のうちテーブルにマッピングすべき要素をユーザに指定させるべく、要素の一覧を階層的に示したGUIなどをユーザに提供し、ユーザの指示を受けつつ半自動的にマッピング定義を生成してもよい。XML−SchemaやRelaxでは、データ型を指定することができるので、それを参照して、マッピングするテーブルのカラムの型を適切に指定することができる。
【0037】
データベース登録部116は、XMLファイルをデータベースに登録する際に、要素値および属性値をそのまま格納するだけでなく、それらに何らかの演算を施したものを格納してもよい。演算の例として、複数のノードの文字列を連結して格納する場合について説明する。
【0038】
図8は、サンプルデータのXML文書のDTDを示す。このXML文書は、電子メールの内容を格納するものである。ルート要素 ”mail” は、子要素として、必ず1回ずつ出現する要素 ”From” および ”body” をこの順序で含む。要素 ”From” は、必ず1回ずる出現する要素 ”name” および ”address” をこの順序で含む。要素 ”name” は文字データを含み、ここでは電子メールの送信者の名前を格納する。要素 ”address” は文字データを含み、ここでは電子メールの送信者の電子メールアドレスを格納する。要素 ”body” は、任意の順序で0回以上出現する、文字データ、要素 ”br”、および要素 ”keyword” を含み、ここでは電子メールの本文を格納する。要素 ”br” は文字データを0回または1回含み、ここでは改行を意味する。要素 ”keyword” は文字データを含み、ここではキーワードとなる語を格納する。
【0039】
図9は、サンプルデータのXML文書を示す。このXML文書には、名前が「Y. A.」、電子メールアドレスが「Y.A.@xxx.xx.xx」である送信者が送信した電子メールの本文「Aです。・・・」が格納されている。
【0040】
図10は、図9に示したXML文書のマッピング定義を示す。図8に示したDTDから分かるとおり、ルート要素 ”mail” に含まれる要素値および属性値のうち、要素 ”name” および要素 ”address” の要素値は、それぞれ出現回数が1回と定まっているため、最上位のテーブルに欄を設けて格納することが可能である。要素 ”From” は属性値および要素値を持たないので、テーブルにマッピングしない。本実施の形態では、要素 ”body” に含まれる文書整形用のタグ ”br” および ”keyword” を取り除き、電子メール本文に含まれるテキストデータを連結して格納することにする。そのため、要素 ”body” の出現回数も1回と定まっているため、最上位のテーブルに格納可能である。したがって、テーブルは1つのみでよく、電子メールに割り当てられたID番号を格納する欄 ”mail_” と、送信者の名前を格納する欄 ”mail_From_name” と、送信者の電子メールアドレスを格納する欄 ”mail_From_address” と、電子メール本文を格納する欄 ”mail_body” の4つの欄が設けられる。”mail_body” 欄を定義する要素 ”column” の属性値 ”option” には、文字列を連結した値を格納することを示す ”TEXT” が指定されている。
【0041】
図11は、図9に示したXML文書を、図10に示したマッピング定義に基づいてテーブルにマッピングした例を示す。”mail_body” 欄には、”br” タグと ”keyword” タグが取り除かれて連結された文字列が格納されている。このように、本実施の形態のデータベース管理システムによれば、データに演算を施して加工してから格納することができるので、XML文書の構造や内容、問い合わせの内容、RDBの特性などに応じて、データベースのテーブル設計を最適化することができる。
【0042】
以上説明したように、本実施の形態のデータベース管理システム10では、XML文書の階層構造を反映した形でリレーションの張られた複数のテーブルにデータをマッピングする。このとき、出現数の上限値が定まっている要素値、属性値については、新たにテーブルを設けることなく、その要素値または属性値を含む上位の要素に対応するテーブルに欄を設けて格納するので、テーブルのネストを最小限に抑え、記憶領域の使用効率および検索効率を向上させることができる。また、下位の要素を格納するテーブルにも、その要素を含む上位の要素のID番号を対応づけて格納するので、問い合わせの際に、上位のテーブルを参照しなくとも下位の要素のデータにアクセスすることができる。
【0043】
つづいて、上記のような方法でマッピングされたデータに対して問い合わせを行う方法について説明する。本実施の形態では、クライアントから受け付ける問い合わせ文はXQuery、RDBに対する問い合わせ文はSQLにより記述される。
【0044】
図12は、サンプルデータのXML文書のDTDを示す。このXML文書は、書籍の管理情報を格納するものである。ルート要素 ”bib” は、子要素として、0回以上出現する要素 ”book”を含む。要素 ”book” は、必ず1回ずつ出現する要素 ”title”、任意の順序で1回以上出現する要素”author” および ”editor”、必ず1回出現する要素 ”publisher” および ”price” を含む。要素 ”author” は、必ず1回ずつ出現する要素 ”last” および ”first” をこの順序で含む。要素 ”editor” は、必ず1回ずつ出現する要素 ”last”、”first” および ”affiliation” をこの順序で含む。要素 ”title” は文字データを含み、書籍のタイトルを格納する。要素 ”last” は文字データを含み、著者または編者の姓を格納する。要素 ”first” は文字データを含み、著者または編者の名を格納する。要素 ”affiliation” は文字データを含み、編者の所属を格納する。要素 ”publisher” は文字データを含み、書籍の出版社を格納する。要素 ”price” は文字データを含み、書籍の価格を格納する。ここで、個々のXMLファイルは ”book” をルート要素としており、”bib” は複数のXMLファイルをまとめて取り扱うために設けられている。
【0045】
図13は、サンプルデータのXML文書を示す。実際には、<book>〜</book>が一つのXMLファイルに相当するため、4つのXML文書が存在していることになる。それぞれのXML文書には、書籍のタイトル、著者または編者の姓名、編者がいた場合はその所属、出版社、および価格が記述されている。
【0046】
図14は、図13に示したXML文書をテーブルにマッピングした例を示す。第1のテーブル ”table1” には、XML文書のトップノード ”book” に割り当てられたID番号を格納する ”bib_book_” 欄が設けられており、さらに、要素 ”book” に対してそれぞれ1回ずつ出現する、属性値 ”year” と、要素 ”title”、”publisher”、および ”price” の要素値を格納する欄が設けられている。第2のテーブル ”table2” には、要素 ”book” に対する出現回数が不定の要素 ”author” のID番号を格納する ”bib_book_author_” 欄が設けられ、さらに、要素 ”author” に対してそれぞれ1回ずつ出現する、要素 ”last” および ”first” の要素値を格納する欄が設けられている。第3のテーブル ”table3” には、要素 ”book” に対する出現回数が不定の要素 ”editor” のID番号を格納する ”bib_book_editor_” 欄が設けられ、さらに、要素 ”editor” に対してそれぞれ1回ずつ出現する要素 ”last”、”first” および ”affiliation” の要素値を格納する欄が設けられている。
【0047】
図15は、クライアントからXML−RDBゲートウェイに送られる問い合わせ文の例を示す。この問い合わせ文は、XQueryにより記述されており、出版社が「A」である本のタイトルと出版社を取得することを目的とする。この問い合わせ文を受けた場合、通常は次のような処理が行われる。まず、FOR句では、変数$bに、XML文書中の要素 ”book” がバインドされ、この例では4つのタプルが生成される。次に、WHERE句では、要素 ”book” の直下の階層にある要素 ”publisher” の要素値が「A」であるタプルを抽出する。この例ではID番号が「1」および「2」の書籍が抽出される。最後に、RETURN句では、抽出されたタプルのうち、要素 ”title” および ”publisher” の要素値を用いて、RETURN句に記述された構造のXML文書を生成して問い合わせ結果とする。しかしながら、本実施の形態のデータベース管理システム10では、XML文書をRDBに格納して取り扱うので、XML−RDBゲートウェイ100の解析部124は、このXQueryによる問い合わせ文を解析してSQL文に変換し、問い合わせ送信部126を介してRDB管理ユニット40に送る。
【0048】
図16は、図15に示した問い合わせ文をSQL文に変換した例を示す。解析部124は、まずFOR句およびWHERE句で絞り込む部分をビューに当てはめ、そのビューを利用してXQuery文のRETURN句で必要となる内容を取得するという方針に沿ってSQL文を生成する。図16に示した問い合わせ文を受けたRDB管理ユニット40は、まず、”table1” のテーブルから、”bib_book_publisher” 欄の値が「A」に等しいレコードの ”bib_book_” 欄の値を抽出してビュー ”booklist” を生成する。すなわち、条件を満たす書籍のID番号を絞り込む。つづいて、テーブル ”table1” とビュー ”booklist” から、”bib_book_” 欄の値が互いに等しいレコードの、”bib_book_title” 欄と ”bib_book_publisher” 欄の値を取得する。すなわち、絞り込んだレコードから目的のデータを取得する。RDB管理ユニット40は、この結果をXML−RDBゲートウェイ100に送信する。
【0049】
図17は、図15に示した問い合わせ文に対する結果を記述したXML文書の例を示す。問い合わせ結果取得部132によって取得された結果を用いて、文書整形部134は、RETURN句に記述された構造のXML文書を整形する。この例では、要素 ”book” の子要素として、条件に適合する書籍のタイトルを格納した要素 ”title” と、出版社を格納した要素 ”publisher” とが記述される。
【0050】
以上のように、本実施の形態のデータベース管理システムによれば、大量のデータを扱うのに適したRDBを利用しつつ、ユーザ側はXML文書の問い合わせに適したXQueryにより問い合わせを発行することができる。これにより、ユーザはRDBのテーブル構造などを知らなくても、XML文書の構造のみを知っていれば問い合わせを行うことが可能となる。また、XML文書が持つ階層構造などの特徴を最大限に生かしたデータの取り扱いが可能な環境が提供される。
【0051】
本実施の形態では、前述したように、XMLデータをテーブルにマッピングする際に、要素の出現順序を示すID番号を格納する欄を設けている。出現順序を格納しておく意味を、たとえば、HTML文書において、長い文章が複数のタグで分割されている場合を例にとって説明する。このデータをRDBに格納するとき、通常、RDBでは、レコードを一意に識別するためのID番号は割り当てられているが、そもそもファイル中における出現順序を記録しておくという概念がない。しかしながら、複数の要素 ”P” に格納された文章の各段落の順序が保存されなければ、文章全体として意味をなさない。したがって、既存のRDBは、データの順序が重要な意味を持つXML文書を取り扱うのに適していないと言える。このような問題を考慮して、本実施の形態では、データを格納する際に、文書中における出現順序を明示的に記録する。これにより、文書の構造を適切に保存しつつ、文書に含まれるデータをRDBで取り扱うことが可能となる。以下、文書内のデータの位置を含んだ問い合わせの例を示す。問い合わせの対象となるXMLデータとして、図12から図14に示したサンプルデータを用いる。
【0052】
図18は、クライアントからXML−RDBゲートウェイ100に送られる問い合わせ文の例を示す。この問い合わせ文は、著者が2名以上いる本のタイトルと2番目の著者を取得することを目的とする。まず、FOR句では、変数$bに、XML文書中の要素 ”book” がバインドされ、この例では4つのタプルが生成される。次に、LET句では、変数$aに、要素 ”book” の直下の階層にある要素 ”author” のうち2番目の要素値がバインドされる。次に、WHERE句では、要素 ”author” の数が2以上存在するタプルを抽出する。この例ではID番号が「3」の書籍が抽出される。最後に、RETURN句では、抽出されたタプルのうち、要素 ”title” および2番目に位置する要素 ”author” の要素値を用いて、RETURN句に記述された構造のXML文書を生成して問い合わせ結果とする。
【0053】
図19は、図18に示した問い合わせ文をSQL文に変換した例を示す。図19に示した問い合わせ文を受けたRDB管理ユニット40は、まず、”table1” および ”table2” のテーブルを用いて、1つの ”bib_book_” 欄の値に2つ以上の ”bib_book_author_” 欄の値が対応している ”bib_book_” 欄の値を抽出してビュー ”booklist” を生成する。つづいて、テーブル ”table1”、”table2” とビュー ”booklist” から、”bib_book_author_” 欄の値が2に等しい、すなわち2番目の著者に対応する、”bib_book_title” 欄、 ”bib_book_author_last” 欄、および”bib_book_author_first” の値を取得する。RDB管理ユニット40は、この結果をXML−RDBゲートウェイ100に送信する。
【0054】
図20は、図18に示した問い合わせ文に対する結果を記述したXML文書の例を示す。問い合わせ結果取得部132によって取得された結果を用いて、文書整形部134は、RETURN句に記述された構造のXML文書を整形する。この例では、要素 ”book” の子要素として、条件に適合する書籍のタイトルを格納した要素 ”title” と、2番目の著者の姓名を格納した要素 ”author” とが記述される。
【0055】
以上のように、本実施の形態のデータベース管理システムによれば、文書に含まれるデータの文書内における出現位置を適切に記録し、検索や検索結果の出力に利用することができる。上記の例では、出現位置を含んだ問い合わせの例を示したが、その他、検索結果を出現順序に基づいて並び替えたり、データの位置を入れ替えたりするなどの処理を行うことが可能である。
【0056】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、各構成要素や各処理プロセスの組合せにいろいろな変形が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、変形例を挙げる。
【0057】
XML−RDBゲートウェイ100を複数のサーバ装置の組合せで構成することによって処理負担を分散してもよい。たとえば、登録ユニットの機能と、問い合わせユニットの機能を、それぞれ異なるサーバ装置に担当させてもよい。
【0058】
データベース登録部116は、XMLファイルのデータベースへの登録に先立って、そのXMLファイルの正当性のチェックを行ってもよい。また、要素値または属性値の型チェックを行ってもよい。チェックの結果、不正なデータが発見された場合は、その旨を出力して登録をキャンセルしてもよい。
【0059】
【発明の効果】
本発明によれば、大量のXML文書を効率良く取り扱うことが可能なデータベースを提供することができる。また、XML文書の利点を最大限に生かしたデータベースの利用技術を提供することができる。
【図面の簡単な説明】
【図1】実施の形態に係るデータベース管理システムの全体構成を示す図である。
【図2】実施の形態に係るXML−RDBゲートウェイの内部構成を示す図である。
【図3】データベースに格納すべきXML文書のサンプルデータのDTDを示す図である。
【図4】データベースに格納すべきXML文書のサンプルデータを示す図である。
【図5】図4に示したXML文書をマッピングしたテーブルの例を示す図である。
【図6】マッピング定義を記述するXML文書のDTDを示す図である。
【図7】図4に示したXML文書をテーブルに展開するためのマッピング定義を示す図である。
【図8】サンプルデータのXML文書のDTDを示す図である。
【図9】サンプルデータのXML文書を示す図である。
【図10】図9に示したXML文書のマッピング定義を示す図である。
【図11】図9に示したXML文書を、図10に示したマッピング定義に基づいてテーブルにマッピングした例を示す図である。
【図12】サンプルデータのXML文書のDTDを示す図である。
【図13】サンプルデータのXML文書を示す図である。
【図14】図13に示したXML文書をテーブルにマッピングした例を示す図である。
【図15】クライアントからXML−RDBゲートウェイに送られる問い合わせ文の例を示す図である。
【図16】図15に示した問い合わせ文をSQL文に変換した例を示す図である。
【図17】図15に示した問い合わせ文に対する結果を記述したXML文書の例を示す図である。
【図18】クライアントからXML−RDBゲートウェイに送られる問い合わせ文の例を示す図である。
【図19】図18に示した問い合わせ文をSQL文に変換した例を示す図である。
【図20】図18に示した問い合わせ文に対する結果を記述したXML文書の例を示す図である。
【符号の説明】
10 データベース管理システム、 20 クライアント、 30 WebDAVサーバ、 40 RDB管理ユニット、 50 データストレージ、 100 XML−RDBゲートウェイ、 110 登録ユニット、 112 XML文書入力部、 114 マッピング定義保持部、 116 データベース登録部、 120 問い合わせユニット、 122 問い合わせ受付部、 124 解析部、 126 問い合わせ送信部、 132 問い合わせ結果取得部、 134 文書整形部、 136 文書送信部。

Claims (8)

  1. 構造化言語により記述された文書の入力を受け付ける入力部と、
    前記文書に含まれる要素値または属性値を、前記文書が有する階層構造を反映して設けられたテーブルにマッピングするための規則を保持する保持部と、
    前記規則を前記保持部から読み出して、その規則に基づいて前記要素値または属性値をテーブルにマッピングし、データベースに登録する登録部と、を備え、前記規則は、ある要素に含まれる要素値および属性値のうち、出現数の上限が定まっているものについては、その要素に対応する階層のテーブルに前記上限の数のフィールドを設けてそれらの値を格納するように定められたことを特徴とする文書管理装置。
  2. 前記規則は、前記文書に含まれる要素値および属性値のうち、検索キーとして利用するものを抽出してテーブルにマッピングするように定められたことを特徴とする請求項1に記載の文書管理装置。
  3. 前記テーブルは、前記要素値または属性値の前記文書中における出現順序を示す情報を格納するフィールドを含み、
    前記規則は、前記要素値または属性値と前記出現順序とを対応付けてテーブルに格納するように定められたことを特徴とする請求項1または2に記載の文書管理装置。
  4. 前記登録部は、前記要素値または属性値に対して所定の演算を施した結果をテーブルに格納することを特徴とする請求項1から3のいずれかに記載の文書管理装置。
  5. 下位の階層の要素に対応するテーブルに、その要素を含む上位の階層の要素の識別情報を格納するフィールドを設け、
    前記規則は、前記下位の階層の要素の要素値または属性値と、前記上位の階層の要素の識別情報とを対応付けて格納するように定められたことを特徴とする請求項1から4のいずれかに記載の文書管理装置。
  6. 前記文書に対する問い合わせを行うための第1の問い合わせ言語により記述された第1の問い合わせ文を受け付ける問い合わせ受付部と、
    前記第1の問い合わせ文に記述された問い合わせを実行するために必要な処理を、前記データベースを管理する管理部に要求すべく、前記データベースに対する問い合わせを行うための第2の問い合わせ言語により記述された第2の問い合わせ文を生成する生成部と、
    前記第2の問い合わせ文を前記管理部に送る送信部と、
    前記管理部から前記第2の問い合わせ文に対する結果を受信する受信部と、
    前記結果に基づいて、前記第1の問い合わせ文に対する応答を生成する応答生成部と、
    前記応答を問い合わせ先に送信する応答送信部と、
    をさらに備えることを特徴とする請求項1から5のいずれかに記載の文書管理装置。
  7. 構造化言語により記述された文書を受け付ける工程と、
    前記文書に含まれる要素値または属性値を、前記文書が有する階層構造を反映して設けられたテーブルにマッピングするための規則を予め取得して保持する工程と、
    前記規則に基づいて、前記要素値または属性値をテーブルにマッピングしてデータベースに登録する工程と、を含み、
    前記規則は、ある要素に含まれる要素値および属性値のうち、出現数が不定のものについては、その要素値または属性値を格納するための下位階層のテーブルを新たに設けて値を格納するように定められたことを特徴とする文書管理方法。
  8. 構造化言語により記述された文書を受け付ける機能と、
    前記文書に含まれる要素値または属性値を、前記文書が有する階層構造を反映して設けられたテーブルにマッピングするとき、ある要素に含まれる要素値および属性値のうち、出現数の上限が定まっているものについては、その要素に対応する階層のテーブルに前記上限の数のフィールドを設けてそれらの値を格納する一方、出現数が不定のものについては、下位階層のテーブルにそれらの値を格納する機能と、
    をコンピュータに実現させることを特徴とするコンピュータプログラム。
JP2002287805A 2002-09-30 2002-09-30 文書管理方法および装置 Pending JP2004126804A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002287805A JP2004126804A (ja) 2002-09-30 2002-09-30 文書管理方法および装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002287805A JP2004126804A (ja) 2002-09-30 2002-09-30 文書管理方法および装置

Publications (1)

Publication Number Publication Date
JP2004126804A true JP2004126804A (ja) 2004-04-22

Family

ID=32280483

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002287805A Pending JP2004126804A (ja) 2002-09-30 2002-09-30 文書管理方法および装置

Country Status (1)

Country Link
JP (1) JP2004126804A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006209756A (ja) * 2005-01-31 2006-08-10 Microsoft Corp 非リレーショナルクエリ言語のリレーショナルデータストアとの統合
JP2011221682A (ja) * 2010-04-07 2011-11-04 Seiko Epson Corp 情報処理装置
JP2016177691A (ja) * 2015-03-20 2016-10-06 富士通フロンテック株式会社 データ処理プログラム、データ処理方法および情報処理装置
JP2017507426A (ja) * 2014-02-19 2017-03-16 スノーフレーク コンピューティング インク.Snowflake Computing Inc. 半構造データスキーマのトランスペアレントディスカバリ

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006209756A (ja) * 2005-01-31 2006-08-10 Microsoft Corp 非リレーショナルクエリ言語のリレーショナルデータストアとの統合
JP2011221682A (ja) * 2010-04-07 2011-11-04 Seiko Epson Corp 情報処理装置
JP2017507426A (ja) * 2014-02-19 2017-03-16 スノーフレーク コンピューティング インク.Snowflake Computing Inc. 半構造データスキーマのトランスペアレントディスカバリ
JP2016177691A (ja) * 2015-03-20 2016-10-06 富士通フロンテック株式会社 データ処理プログラム、データ処理方法および情報処理装置

Similar Documents

Publication Publication Date Title
US7844642B2 (en) Method and structure for storing data of an XML-document in a relational database
US7353222B2 (en) System and method for the storage, indexing and retrieval of XML documents using relational databases
US7802180B2 (en) Techniques for serialization of instances of the XQuery data model
US7519609B2 (en) XML storage solution and data interchange file format structure
US8484210B2 (en) Representing markup language document data in a searchable format in a database system
US6804677B2 (en) Encoding semi-structured data for efficient search and browsing
US20100306273A1 (en) Apparatus, system, and method for efficient content indexing of streaming xml document content
US20040220927A1 (en) Techniques for retaining hierarchical information in mapping between XML documents and relational data
Rys Bringing the Internet to your database: Using SQL Server 2000 and XML to build loosely-coupled systems
WO2001088755A1 (fr) Systeme d'agent supportant la construction d'un systeme de service de courrier electronique
JP2001282594A (ja) 企業業務統合化システム、複数のデータ・ソースを統合化する方法
JP2011181106A (ja) Xmlデータ記憶、クエリー再書込、ビジュアライゼーション、マッピング、および参照のための方法および装置
JP2001325290A (ja) 文書ファイル検索システム
US20090307187A1 (en) Tree automata based methods for obtaining answers to queries of semi-structured data stored in a database environment
JP3786233B2 (ja) 情報検索方法および情報検索システム
JP2004126804A (ja) 文書管理方法および装置
US7953761B2 (en) System, method, and apparatus for retrieving structured document and apparatus for managing structured document
Pal et al. XML support in Microsoft SQL Server 2005
JP3842576B2 (ja) 構造化文書編集方法及び構造化文書編集システム
JP2003288365A (ja) 付加情報管理方法及び付加情報管理システム
JP4242701B2 (ja) 格納検索装置、格納検索プログラム、および格納検索プログラム記録媒体
JP3842575B2 (ja) 構造化文書検索方法、構造化文書管理装置及びプログラム
Jia et al. A direct method of data exchange between XML and relational database
JP2004348485A (ja) 構造化文書処理方法及び装置及び構造化文書処理プログラム及び構造化文書処理プログラムを格納した記憶媒体
Vidhya et al. Query translation from SQL to XPath

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050714

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081010

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081021

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081216

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090217