大容量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
© Copyright 2024 ExpyDoc