大容量XML文書のデータ更新が
可能なXML編集ライブラリ
理学部 情報科学科
指導教官 千葉 滋 助教授
学籍番号 00_01519 石川 零
1
XMLデータの利用例

例:DBLP – 196MBの文献リスト

Z氏が書いた論文の題名、学会、年度のデータを集め
たい
<references>
<conferences>
<year>2003</year>
<conference>
<conference-name>OOPSLA</conference-name>
<paper>
<title>HydroJ: object-oriented pattern matching
for evolvable distributed systems </title>
<author>Keunwoo Lee</author>
</paper>
...
</conference>
<conference>
<conference-name>AOSD</conference-name>
...
</conference>
</conferences>
...
</references>
references
conferences ......
conferencename
conference
paper
year
title
…
......
author
paper
title
author
2
取り出したいデータ構造

データを元の構造と異なる側面から取り出したい



学会別や年度別ではなく著者名
取り出したいデータ構造が、元の構造から変化
部分木ではだめ
references
references
conferences
paper
conferences ......
conferencename
conference
year
conference
title
author conferencepaper year
paper
year
title
author
title
author
…
paper
......
paper
3
title
author
title
author
既存技術では困難な処理

DOMやSAXでこの処理を行うのは難しい

DOM

XMLデータ全体を読み込み操作する




データ構造の操作が面倒
大容量のXMLデータの操作には非効率
探したデータを別な構造へ変換する手間
SAX

XMLデータを木構造として扱わない

複雑な構造を取り出すのがDOMよりさらに困難
4
Javaライブラリ「Xeal」の提案

XMLデータの参照・修正を支援

拡張したXPath を用いて取り出したいデータ構
造を指定



データ構造変換器つきのDOMとみなせる
用途に応じた型でユーザに提供
変更を元のXMLデータへ反映
ユーザプログラム
指示
XMLデータ
Xeal
探索
取得
5
取り出したいデータ構造の指定法

拡張したXPathを用いてデータ構造を指定

XPathは本来、経路を用いて要素を指定する言語
Paper要素をフィルタリングする条件
/references //paper [author/text()=“Z”]/ {
references
author /text(),
conferences ......
title /text(),
(ancestor::conferences) /
conferenceconference-name /text(),
conference …
name
(ancestor::conference) /
(int) year /text()
......
paper
paper
year
}
title
author
title
author
その要素から見て祖先
赤字は拡張した文法
6
にあたる要素を指定
拡張したXPathの文法について

複数のノードを指定:{}


データを受け取る時のクラス、型を指定:
(type)


//paper /{author /text(), title /text()}
/paper /(int) year /text()
探索のみに利用するノードを指定:()

/paper /(ancestor::conference) /year /text()
7
データを用途に応じた型で提供する仕組み
Pathを元にデータを扱うためのクラスを生成し、データをその
クラスのオブジェクトとして提供
DOMのように生の木構造で渡されても、ユーザは不便


Path
クラス生成器

pubilc class Paper {
String _author;
String _title;
int _year;
String _conference_name;
}
Paper オブジェクト を Vector や LinkedList で提供するた
めの指定も可能
8
XSLTとの比較


XSLT:XMLデータからXMLデータへの変換規則を
定める言語
変換が非効率的



XSLTはXMLデータからXMLデータの変換を行う
変換したデータを、DOMなどで再度オブジェクトにする
手間
データの変更が困難

XSLTで変換したXMLデータに修正を加えても、元の
XMLデータへ反映させる事が困難
9
Xealは高速に処理が可能

XSLTで変換したデータをDOMで操作する場合
とXealで、データ構造の取り出しにかかる時間
を比較
実験マシン:
(UltraSPARC III
750MHz × 2, 1024MB ,
Solaris 8)
実行時VMメモリ: 64MB
探索に用いたPath:
/site//closed_auction/pri
ce/text()
XSLTは、この容量の
データまでしか処理で
きなかった
10
まとめと今後の課題

XML文書の参照・修正を支援するJavaライ
ブラリの作成



拡張XPathを用いてデータ構造を指定
用途に応じた型でユーザへ渡す
今後の課題


探索速度の向上
探索の条件を動的に与える事ができないか
11
ダウンロード

データ更新が可能なXML編集ライブラリ