論文
DBSJ Letters Vol.2, No.1――――――――――――――――――――――――――――――――――――

例示操作に基づく XQuery 問合せ
学習システムのプロトタイプ開発

bookstore
booklist*
bookDevelopment of a Prototype System for
Learning XQuery Queries Based on
Example Operations
♥

森嶋 厚行
松本 明♦

中溝 昌佳

♣

北川 博之

1. はじめに
これまでにXMLを対象とした問合せ言語や操作系が数多く提案されてきた．これらでは一般に，ユーザはテキストエディタや視覚的操作系を用いて問合せを記述する．我々はこれらとは全く異なるアプローチのXML操作系であるXLearnerの研究開発を行なっている．XLearnerは，サンプルのXML 要素に対するユーザの例示操作から，XQuery問合せを学習するシステムである．本稿では，XLearnerプロトタイプシステムの実装について述べる．
XLearnerプロトタイプシステムの開発にあたっては次の2点に留意した．第1 に，ユーザとXLearnerの間で必要なインタラクション数を減らす工夫を行なうことである．第2に，XQueryの学習処理におけるコストの削減を行なうことである．本稿では，まずXLearnerの概要を説明し，次にプロトタイプシステムの実装について記述する．

♥

正会員 筑波大学知的コミュニティ基盤研究センター
amorishima@acm.org♣ 学生会員 芝浦工業大学大学院工学研究科
m103198@sic.shibaura-it.ac.jp♠
正会員 筑波大学電子・情報工学系
kitagawa@is.tsukuba.ac.jp♦
筑波大学大学院システム情報工学研究科

1*
category

namecname name(b)図 1 DTD<result>{
for $c in /bookstore/categories/category
return <category><cname>{$c/name}</cname>{for $b in /bookstore/booklist/bookwhere $b/@category = $c/@id
return <name>{$b/title}</name>}</category>}</result>Atsuyuki MORISHIMA Akiyoshi NAKAMIZO
Hiroyuki KITAGAWA Akira MATSUMOTO

Existing XML query languages are textual or graphicallanguages in which we can specify queries for XML
manipulation. XLearner, a different kind of manipulation
framework for XML, learns XQuery queries based on
operations of sample XML elements. Inferring queries for
XML is a nonnon-trivial task, because XML is a kind ofsemistructured data, in contrast to relational databases
whose data structure is completely regular. The paper
focuses on the implementation of a prototype system of
XLearner.

result*category@category title @id(a)♠既存のXML
既存のXML問合せ言語や操作系では，一般に，ユーザはテXML 問合せ言語や操作系では，一般に，ユーザはテキストエディタや視覚的操作系を用いて問合せを記述する．
XLearnerは全く異なるアプローチのXLearnerは全く異なるアプローチのXMLは全く異なるアプローチのXML操作系であり，ユーXML操作系であり，ユー
ザの例示操作に基づきXQuery
ザの例示操作に基づきXQuery問合せを学習する．
XQuery問合せを学習する．完全に規則的な構造を持つRDB的な構造を持つRDBとは異なり，半構造データの一種であるRDBとは異なり，半構造データの一種であるXMLを対象とした問合せの学習は自明ではない．本稿では特XMLを対象とした問合せの学習は自明ではない．本稿では特にXLearnerプロトタイプシステムの実装について説明する．
XLearnerプロトタイプシステムの実装について説明する．

categories

図 2 XQuery 問合せ(document 関数と text 関数は省略)(2)Template
Template
生成器(1)

結果XQuery
学習エンジン

Drag&Dropによる例示操作

DTD(3) ユーザ(4)...
<book @category="1"><title> Potter </title></book>. . .
<category><name> Literature </name>

XQuery(5)
XQuery処理系

XML文書

図 3 XLearner による問合せ学習の流れ

2. XLearner
まずXLearnerの利用例を説明する．図1(a) のDTD で表されるXMLデータに対する問合せを学習させたいとする．このデータは，本屋における本のリストと分野情報を表している．
bookは本を表す．categoryはbookが属する分野を表す．各bookがどの分野に属するかは，bookの子要素であるcategory
属性に，category要素へのIDREF参照を持つことで表す．この時，学習させたいXQuery問合せの例を図2に示す．これは，各分野毎に，分野の名前とその分野の本の名前のリストを返す問合せである．
次にXLearnerの使い方を説明する(図3)．まず，結果として欲しいXMLデータのDTD(図1(b))をテンプレート生成器に入力する．次に，ユーザは操作対象となるXML文書の中から，いくつか要素もしくは値（XMXMLXMLノードと総称する）を選び，ノード
それらをテンプレートにドラッグアンドドロップ（以下D&D）し，欲しいXML問合せ結果の一部分を示す．テンプレートにD&DされたXMLノードを例示ノード
例示ノードと呼ぶ．
例示ノード
与えられたXML問合せ結果の一部分を手がかりに，学習エンジンは，ユーザが意図する問合せを学習するための質問をユーザに対して行う．このように，システムが能動的に質問を行ないながら学習を行なう枠組みを能動学習という．最後に，システムはXQuery問合せを出力し，XQuery処理系に渡す．
最初にあげた問合せ例の学習過程は次のようになる．まず，結果のDTDをテンプレートに入力すると，XLearnerは図4(b)のテンプレートを表示する．ユーザはXMLブラウザ中のXMLの要素をいくつか選び，D&Dし，図4のようにテンプレートを埋める．矢印はD&D操作を表している．
次にXLearnerは，ユーザの意図したXQuery問合せを求めるために，ユーザに対して質問を行なう．これらは，各例示ノードeのextentextent(以下EXTe)を決定するための質問である．
extent

日本データベース学会 Letters Vol.2, No.1

論文
DBSJ Letters Vol.2, No.1――――――――――――――――――――――――――――――――――――
XMLブラウザテンプレートN1:N1.1:-. ..

<booklist><book category="1"><title>XMLBook</title></book> . . .
</booklist><categories><category id="1"><name>Computer</name></category><category id="2"><name>Literature</name></category></categories><result><category><cname></cname><name></name></category></result>

return <result>N1.1</result>
N1
for $c in /bookstore/categories/category
return <category>N1.1.1 N1.1.2</category>N1.1
N1.1.1:- for $cn in $c/name return <cname>$cn</cname>1
N1.1.2:- for $b in /bookstore/booklist/book, $n in $b/namewhere some $bc in $b/@category satisfies
N1.1.1(some $ci in $c/@id satisfies $bc=$ci)

N1.1.2

return <name>$n</name>

図 5 XQ-Tree 表現. ..

(a)

(b)

N1:- return <result>

図 4 XML ブラウザとテンプレート

EXTeは，例示要素eが与えられた文脈文脈(以下contexte)におい文脈てeが代表しているノードの集合である．ここでcontexteとは，EXTeより前にextentが決定された例示ノードの集合である．
例えば， Computer ， XMLBook の順にextentが決まるとすると，contextComputerは空であり，contextXMLBook ={Computer} である．その結果，EXTComputer は全ての分野の名前の値の集合となり，EXTXMLBookは，その文脈(contextXMLBook)における，bookの集合(すなわち，コンピュータ分野の本の集合)となる．
Membership Query(MQ)とXLearnerが行なう質問には，MembershipQuery(MQ)
Equivalence Query(EQ)がある．
MQでは，XLearnerがあるXML
Query(EQ)
ノードを選び，そのノードがEXTeに含まれるかどうかをユーザに質問する．画面上では，対象ノードの上で「Yes」「No」のポップアップメニューが表示されるので，ユーザはそのノードがEXTeに含まれる場合は「Yes」を，含まれない場合は「No」を選ぶ．EQは，XLearnerが生成した仮説extent E Xˆ Te に関して， E Xˆ Te = EXT e が成立するかを質問する．画面上で，E Xˆ T e であるノード群がハイライト表示されるので，ユーザは， E Xˆ T e = EXT e ならば「OK」ボタンを押し，間違っている
場合は反例を与える．反例には正の反例( ∈ EXTe − EXˆ Te )と負の反例( ∈ E Xˆ Te − EXT e )がある．反例のノードの上で右クリックし，そのノードが正の反例ならば「Yes」を，負の反例ならば「No」を選ぶ．

3. 問合せ学習機構の概要
内部的には，XLearnerはXQuery問合せを直接学習するのではなく，XLearnerにおけるXQuery問合せの内部表現である
XQ図5は，図2の問合せを表すXQ‑Tree
XQ-Treeの学習を行なう．
Treeである．XQ‑Treeの各ノードnはNi:‑q(n)の形式をしている．
ここで，Niはノード識別子であり，q(n)は，問合せ断片（flwr
式 [for exprf [where exprw]] return exprr ,ここで[...]は省略可)である．XQuery問合せQが与えられた時，それに対応するXQ‑Tree tは次の手順で計算される：(1)let式を除去し，変数をそれに割り当てられた式で置き換える．(2)全てのXMLノードを返す式(例えば，$c/name)を，等価なflwr式（for $cn in $c/name return $cn）に書き換える．これにより入れ子のflwr式ができる．(3)以上で作成したflwr式間の入れ子関係を木構造で表す．
問合せの学習は，2つのステップから成る．
（ステップ1
XQ‑Treeスケルトンの作成
Treeスケルトンの作成:（ステップ1）XQ‑スケルトンの作成: 与えられたDTDとD&Dで得られた例示ノードから，学習結果のXQ‑Treeの基となるXQ‑Treeスケルトンを生成する．図6は図1(b)のDTDと図4の操作によって生成されたXQ‑Treeスケルトンである．各ノードnは，q(n)= return <elem>expr</> の形式をしている．
ここで，elemはタグ名であり，exprは子ノードへの参照を持つ．さらに，例示ノードeがドロップされた場所がXQ‑Treeノードnに対応する場所であったならば，q(n)のexprはeに対応する変数名veを持つ（この例では$cnと$n）．

2*
N1.1:- return <category>N1.1.1 N1.1.2</>
1*

N1.1.1:- return <cname>$cn</>

N1.1.2:- return <name>$n<

図 6 XQ-Tree スケルトン
bookstore

categories

booklist

bookcategorybook
リレーノードtitle@categorytitle@category@idnamePotter

2

XMLBook

11

Computer

図7XML グラフ

（ステップ2（ステップ2）各問合せ断片の学習:
各問合せ断片の学習: XQ‑Treeスケルトンを走査しながら，例示要素eをドロップされたXQ‑Treeノードneのそれぞれに対して，各問合せ断片q(ne)=for exprf whereexprw return exprrの学習をしていく．実際にXLearnerが学習可能なクラスでは，これらの形式は限定されている[4].特に，exprrはXQ‑Treeスケルトンで与えられた式そのものに限定されているので，実際に学習するのは，exprfとexprwである．これらはEXTeに関するMQとEQの結果から計算される[4].
それぞれについての概要を次に説明する．
(1) exprfの学習: 例えば，q(N1.1)では，exprf= $c in/bookstore/categories/categoryを学習する必要がある．これは，変数$cにXPath式で表されるXMLノードを束縛させるための式である．XML要素のパスを文字列と見なすと，XPath式を学習することは，本質的にはパスの集合が表す言語を受理する有限オートマトンを求めることに対応する．ある言語が与えられた時，それを受理する最小の有限オートマトンを見つけることはNP完全[3]である．一方，能動学習を利用したAngluinのオートマトン導出アルゴリズム[1]を利用すれば，多項式時間で発見することが可能である．XLearnerでは，
Angluinのオートマトン導出アルゴリズムを利用してEXTeに関するMQとEQからパス式の学習を行う[4].
(2)exprwの学習: 例えば，q(N1.1.2)では，exprw=some $bc in$b/@category satisfies ( some $ci in$c/@id satisfies$bc=$ci)を学習する必要がある．XLearnerはcontexte中のXMLノード(集合)と例示ノードeに関して成立する述語を全て数え上げ，その積をexprwの候補として計算する．実際には，いくつかの述語が除去されて最終的なexprwとなる[4].述語を全て数え上げるのに利用するのが，XMLグラフである(図7)．
これは，XQuery and XPath data model[8]等と同様に，XMLインスタンスの構造を木構造で表したものである．さらに，我々のXMLグラフでは，vv-equality辺equality辺を持つ．これは，同じ値を持つXMLノード間に存在する辺である．exprwは次のように求められる．（1）XMLグラフにおいて，XMLノード集合{e}∪contexteに含まれる任意の2ノード間のパスを全て求める．
(図7は，e=XMLBook, contextXMLBook={Computer}の場合を示す)

日本データベース学会 Letters Vol.2, No.1

論文
DBSJ Letters Vol.2, No.1――――――――――――――――――――――――――――――――――――
インタラクション
削減部

XQuery問合せ

MQ対象ノード
選択部

MQの自動処理結果
タグ列に関するMQ

D&D

GUI部

結果XMLのDTD

Browser

Template

BrowserMgr

Template
Mgr

有限オートマトン
学習部
仮説オートマトン
例 e
反例 ce

GUIMgr

学習エンジン部

制御部

XLearner
EngineP-Learner

MQの答え
パス正規表現変換部
expr̲f

図 9 P-Learner の内部構造
C-Learner

XMLデータ

図 8 プロトタイプシステムのアーキテクチャ

この処理は，一般には指数関数オーダの処理が必要である．
（2）各パスに関して成立する制約（述語）を数え上げる．
この述語の種類はXLearnerの仕様により限定されており[4]，数え上げが可能である．その結果，q(N1.1.2)のexprwが得られる．

4. プロトタイプシステムの実装
本プロトタイプシステムの実装にはJava(Java2 SDK 1.4)を用いた．GUI部の実装にはSwingおよびDrag and Drop APIを利用した．システム構成図を図8に示す．プロトタイプシステムは制御部を中心にGUI部と学習エンジン部によって構成される．XLearnerは，能動学習を行なうため，学習エンジンが能動的に動く必要がある．したがって，GUI部と学習エンジン部はそれぞれ別スレッドで動作する．
現段階のシステムには次の制約がある．まず，XMLブラウ
ザからテンプレートにD&D可能なものは，末端のXMLノードに限定される．また，再帰的定義を持つDTDは，結果のXMLが従うDTDとして受け付けることができない．
GUI部
GUI部: Browserは，XMLブラウザを実装したモジュールである．操作対象のXMLを表示する役割や，MQ，EQの質問をユーザに示し，質問に対するユーザの答えを受け取る役割を果た
す. Templateは，テンプレートを実装したモジュールである．
テンプレート表示を行い，ユーザのD&D操作によって例示ノードを受け取る．BrowserMgr, TemplateMgrはそれぞれXML
ブラウザおよびテンプレートを管理する．GUIMgrはGUI全体を管理するほか，D&Dされた例示要素とテンプレートに基づき，XQ‑Treeスケルトンを作成する役割を果たす．
学習エンジン部:
学習エンジン部: 学習エンジン部の役割は，GUIMgrより作成されたXQ‑Treeスケルトンを走査しながら，各ノードの問合せ断片を学習することである．学習エンジン部は大きくわけて，XLearnerEngine，P‑Learner，C‑Learnerの3つで構成される．XLearnerEngineは，XQ‑Treeスケルトンを走査するアルゴリズムを実装している．各ノードの問合せ断片の学習は，P‑LearnerとC‑Learnerが行う．
P‑Learnerは，Angluinのオートマトン導出アルゴリズムを用いて各問合せ断片のexprfを学習する．図9にP‑Learnerの内部構造を示す．P‑Learnerは有限オートマトン学習部，インタラクション削減部，MQ対象ノード選択部，オートマトン‑パス正規表現変換部から構成されている．有限オートマトン
学習部は，XLearnerEngineから例示ノードeを受け取り，これを手がかりにオートマトン学習を行なう．有限オートマトン学習部は，学習の過程でユーザに対してMQを発行する．詳
細は4.2節で説明するが，実はユーザに質問せずに処理できるMQが存在する．この判断を行なうのがインタラクション削減部である．MQ対象ノード選択部は，実際にMQを行なう要素を選択するモジュールである．この選択処理が必要な理由は

3

要素に関するMQ

次の通りである．XLearnerの文脈では，Angluinのアルゴリ
ズムにおける(オートマトンが受理する)文字列に対応するものは， XML文書のルート要素から特定の要素にいたるタグ列になる．したがって，Angluinのアルゴリズムをそのまま用いると，MQはタグ列に関して発行されてしまい，特定の要素に対するMQとはならない．言い換えると次のようになる．
まず，path(e)をXMLのルート要素から要素eへの要素の列とする．また，tags(ep)をepにマッチするタグ列とする．このとき，一般に，あるタグ列 ts が与えられた時， ts=tags(path(e)) を満たすeは複数存在する．このように，タグ列と特定の要素は一対一対応しないため，XLearnerの文脈でMQを行なう際にはタグ列にマッチする要素の中から一つの要素を選択する必要がある．本プロトタイプシステムでどのような基準で要素を選択するかは，4.2節で説明する．最後に，パス正規表現変換部は，有限オートマトン学習部が生成したオートマトンをパス正規表現に変換する．
C‑Learnerは exprw の学習を担当する．これは3章で述べた
ように，XMLグラフにおける例示ノード間のパスで成立する述語を数え上げることにより行われる．C‑Learnerの主要なモジュールはcond関数とrelax関数である．
cond関数
cond関数:関数: この関数は引数としてXMLグラフにおけるノードの集合を取る．返り値は，各ノード間のパスに関して成立する全ての述語の集合である．
relax関数relax関数:
関数: この関数は引数として述語集合の組(u,v)を取る．戻り値は，直感的にはuとvの積集合である(名前の不一致を解決してから行なうので，厳密には異なる．)

4.1 処理の流れ
処理の流れは次のようになる．システムを立ち上げると，Browserが操作対象となるXMLデータを表示する．ユーザが，問合せ結果が従うべきDTDをシステムに与えると，TemplateMgrがテンプレートを作成し，Templateに表示させる．この状態で，システムはユーザのD&D操作を待つ．ユー
ザはBrowserに表示されているXMLノードをTemplateにD&Dし，Templateを埋める．D&D操作が完了したら．GUIMgrがXQ‑Treeスケルトンを作成する．XLearnerEngineはXQ‑Treeスケルトンを受け取り，学習を始める．各問合せ断片の学習で行なわれるユーザとのインタラクション(MQやEQ)の結果は，P‑LearnerおよびC‑Learnerに渡される．P‑LearnerおよびC‑Learnerによって出力されたexprfおよびexprwを元に仮説flwr式が作成され，EQが行なわれる．反例ceが与えられた際には，有限オートマトン学習部はそのceを基にオートマトンの学習を続ける．システムがMQやEQを行なう際には，学習エンジンがBrowserにその質問を表示させるよう指示する．
図10はプロトタイプシステムの実行画面である．左側がXMLブラウザ，右側がテンプレートである．

4.2 実装における問題と解決のためのアプローチ
XLearnerのナイーブな実装には，次のような問題点がある．
(1) 学習に必要なインタラクション数の問題:
学習に必要なインタラクション数の問題: n, k, m をそ日本データベース学会 Letters Vol.2, No.1

論文
DBSJ Letters Vol.2, No.1――――――――――――――――――――――――――――――――――――

図 10 プロトタイプシステムの実行画面

れぞれ，学習する有限オートマトンの状態数，アルファベットの数(すなわちタグの種類の数)，反例の最大のサイズ(XMLインスタンスにおけるルートノードからXMLノードへの長さ)とする．このとき，インタラクションの数はO(kmn 2)である．すなわち，簡単な有限オートマトンの学習でさえ，数百回のインタラクションが必要な可能性がある．
XLearnerは，次に示す2つのルールでMQを削減する[4]．
R1. DTDに矛盾するタグの並びのMQに対し自動的に「No」を与える．
R2. 例示ノードeが与えらたときにeのパスpath(e)の末端のタグがt1だとする．この時，タグの並びの末端がt1でないMQに対し自動的に「No」を与える．これは，パターンマッチン
グにおいて，末端のタグが重要であるというヒューリスティクスに基づいている．
さらに本プロトタイプシステムでは，次のルールを組み込む．
R3. MQ対象となるXMLノードの候補が複数ある場合は，それらのうち，XMLグラフ上で例示ノードeに最も近いノードを優先してMQを行なう．これは，eに近いノードはEXTeに含まれる(すなわち「Yes」が返される)可能性が高いというヒューリスティクスに基づく．XLearnerの学習アルゴリズムは，MQに対して「Yes」が返された時はバックトラックを起こさないという性質がある[4]ため，インタラクション数を減らす効果がある．
(2) exprwの学習コストの問題:の学習コストの問題:2つの問題がある．第1に，全てのv‑equality辺を保持しておくには多くの余分な記憶容量が必要となる．第2に，例示ノード間の全てのパスを数え上げることは探索コストが高い．本プロトタイプシステムはヒューリスティックスと既存技術を応用し，これらに対処する．
v-equality辺の問題
equality辺の問題.
辺の問題.v‑equality辺は問合せに含まれる結合条件を導出するために利用されるが，実際に結合条件に用いられる値の組合せは限られている．例えば，XMark[6]とXML
Use Case[7]では，27の等結合のうち3つは明示的なidref‑id参照である．残りは要素の値を用いているが，これらはすべて外部キーの役割を果たす値である．このような値に対してはインデックスが存在することが一般的であると考えられる．本プロトタイプシステムではこのようなインデックスの存在を仮定し，これを利用して(論理的な)XMLグラフの探索を行なう．特別にv‑equality辺を表すためのデータを持つことはしない．
パスの計算コスト.
パスの計算コスト. 一般的なXQuery問合せにおいては，結合に利用するXMLノード間の(XMLグラフにおける)距離はそれほど長くない．例えば，XMarkとXML Use Casesにおける最大の長さは12であるため，XMLノード間のパスを計算するためには，それぞれのXMLノードから6ずつ探索すればよい．それに加え，Graph Schemas[2]のようなグラフ構造のメタデータ4を利用し，探索空間をあらかじめ制限する．
(3) EQ処理を行なう際のパフォーマンスの問題：
EQ処理を行なう際のパフォーマンスの問題： 2章で説明したとおり，XLearnerがEQを質問するためには仮説extent
E Xˆ T を計算する必要がある．この計算は一般に処理時間がかかる．本システムでは，Browser中に一度に表示できるXMLデータは全体のごく一部である点に着目し， E Xˆ T の計算をXMLデータ全体に対して行うのではなく，Browserに表示されている範囲のデータに対してのみ行なう．これは[7]と同様の手法である．ただし現時点ではこの処理は未実装である．

5. まとめ
本稿では，XQuery問合せの学習システムXLearnerの概要および，プロトタイプシステムの実装について述べた．今後の課題としては，ユーザビリティーの検証が挙げられる．

［謝辞］
本研究の一部は，日本学術振興会科学研究費基盤研究(B)(12480067) による．

［文献］
[1] D.Angluin. Learning regular sets from queries andcounterexamples. Information and Conputation, 75(2):87-106, 1987
[2] P.Buneman, S.Davidson, M.Fernandez, and D.Suciu. Adding
structure to unstructured data. Proc. ICDT, pp.336-350,
1997.
[3] E.M.Gold, Complexity of automaton identification fromgiven data. Information and Control 37:302-320, 1978
[4] A.Morishima, A.Matsumoto, H.Kitagawa. XLearner: A
System to Learn XML Queries through Examples (投稿中).
[5] A.Morishima, T.Mouri, H.Kitagawa. An Exampled-Based
Web-Site Cnstruction Tool and Its Implementation.
Information Systems and Databases, pp.136-141, 2002
[6] A.Schmidt, F.Waas, M.Kersten, D.Florescu, M.Carey,I.Manolescu, and R.Busse. Why And How To Benchmark
XML Databases. SIGMOD Record, 30(3):27–32, 2001.
[7] XMLQuery
Use
Cases.
http://www.w3.org/TR/xmlqueryuse-cases.
[8] W3C. XQuery 1.0 and XPath 2.0 Data Model.
http://www.w3.org/TR/query-datamodel/.

森嶋 厚行 Atsuyuki MORISHIMA
筑波大学知的コミュニティ基盤研究センター・図書館情報学系助教授．1998 年筑波大学大学院工学研究科修了．博士(工学)． XML 処理・管理，異種情報源統合，情報システムのため の ユ ー ザ イ ン タ ー フ ェ ー ス な ど に 興 味 を 持 つ ． ACM,
IEEE‑CS, 情報処理学会，電子情報通信学会各会員．

中溝 昌佳 Akiyoshi NAKAMIZO
芝浦工業大学大学院工学研究科在学中．2003 年芝浦工業大学
工業経営学科卒業.

北川 博之 Hiroyuki KITAGAWA
筑波大学電子・情報工学系教授．1980 年東京大学大学院理学系研究科修了．理学博士．異種情報源統合，文書データベース，WWW の高度利用等の研究に従事．著書「データベースシステム」（昭晃堂）等．ACM，IEEE‑CS，情報処理学会，電子情報通信学会，日本ソフトウェア科学会，各会員．

松本 明 Akira MATSUMOTO
2003 年筑波大学大学院システム情報工学研究科修士修了．

日本データベース学会 Letters Vol.2, No.1