Presentation is loading. Please wait.

Presentation is loading. Please wait.

XML Transformation Language Based On Monadic Second Order Logic

Similar presentations


Presentation on theme: "XML Transformation Language Based On Monadic Second Order Logic"— Presentation transcript:

1 XML Transformation Language Based On Monadic Second Order Logic
東京大学 情報理工学系研究科 コンピュータ科学専攻 細谷研究室 稲葉一浩

2 本研究の内容 XML変換言語 MTran の設計と実装 MTran の特徴 MSO の論理式をXMLへのQuery言語として採用
MSO Query の表現力を活かす変換言語 MSO Query の効率的な評価アルゴリズム {visit x :: x in <A> :: Foo[ {visit y from x :: y in <B> & all1 z:(y/z => z in <C>) :: Bar[ {gather z :: y/z :: z} ] }]} 本研究では、新しいXML変換言語MTranを設計し、実装しました。 『細部については後ほど説明しますが』おおまかな雰囲気としてこんな言語です。 MTranの特徴、つまりはこの研究のContributionは、以下の3点になります。  ・ほげ ・ふが ・ぴよ この発表では、この3点について、順に説明します。

3 Monadic Second Order Logic
MSO (単項二階論理) 要素そのものを指す一階変数に加え、 要素の集合を指す二階変数を導入した論理 1950年代から研究されている 近年、XML処理の理論的基礎として注目 XMLからの要求 第一階層いる?

4 XML処理におけるMSOの利点 強い表現力 ⇒ これらの性質は、XML処理に有用 全ての Regular Query を表現可能
再帰によらない宣言的な記述 自然な N-ary Query の記述 Queryと無関係な要素への言及が不要 「順番にせつめいします」 「これじたいはMSOの既知の性質で、これがXMLに使えることを考えた」ことをいう ⇒ これらの性質は、XML処理に有用

5 MSOの表現力1: Regularity XHTMLの目次作成
『ある要素 x から、文書順で次の <h1> 要素までの間にある <h2> 要素 y』 「xの後ろにある<h2>要素 y」 「xの後ろにある<h1>要素 z」 「zの前にある<h2>要素 y」 それぞれは既存言語(XPath等) でも書けるが、組み合わせは不可能 <h1> ... <h2> .... ..... <h2> .. .... <h3> ... .. <h3> ..... 論理式をもっとせつめい x<y & y in <h2> & all1 z:(x<z & z in <h1> => y<z)

6 MSOの表現力2: No-Recursion
LPath[1] Linguistic Queries 『ある構文解析のステップで、要素xの“直後”にくるような要素y 』 S VP NP PP NP NP N “I” V “saw” Det “the” Adj “old” N “man” Prep “with” Det “a” N “dog” N “today” [1] Extending XPath to Support Linguistic Queries, Bird et al., PLAN-X 2005

7 MSOの表現力2: No-Recursion
LPath Linguistic Queries XPathでは、表現できない LPathでは、次のようなアルゴリズムでXPathを拡張 xが最右の子なら、親に上る。最右の子でなければ 一個右の兄弟y’に移動。y’の最左の子孫を全て選択 MSOでは二階変数を使って、直接 『ある構文解析のステップで、要素xの“直後”にくるような要素y 』 と書ける pred analysis_step(var2 A) = all1 x:(x notin A  A//x | x//A); pred follow_in(var2 A, var1 x, var1 y) = x in A & y in A & all1 z:(z in A => x<z <=> y<=z); ex2 A: (analysis_step(A) & follow_in(A,x,y))

8 MSOの表現力3: N-ary Query N-ary Query 『共通の親をもつfoo, bar, buz要素の組』
自由変数が N 個のMSO論理式は、自然に、 N-tuple を探索するクエリとなる ex1 p: (p/x:<foo> & p/y:<bar> & p/z:<buz>)

9 MSOの表現力4: Don’t Care Regular Expression Patterns と比較して
『<foo>要素を子に持つ要素x』 Patterns: MSO: “Any” のようなワイルドカードも不要 x as ~[Any, foo[Any], Any] Anyがあると困ることがよくわからない ex1 c: (x/c & c in <foo>)

10 変換言語 MTran の設計 MSO Queryによって 従来より自由度の高いノード抽出が可能になった
その表現力を活かすXML変換記述言語は? Query 加工・出力 一般的にXML処理はこう ぜんたい MSO ???

11 変換言語の設計 MSO Query の特徴 No-Recursion N-ary Queries
親子関係をたどるのではない宣言的なノード選択 変換でも明示的な再帰を不要に ⇒ “visit” テンプレート N-ary Queries 「カレントノードと、そこから相対的な条件を満たすノード」以上に複雑な依存関係の記述 ⇒ テンプレート・変数スコープのネスト

12 “visit” テンプレート MTran: XSLT: 全ノードに適用
{visit x :: x in <a> :: b[x]} 再帰適用を明示 <xsl:stylesheet ...> <xsl:template match="a"> <b><a><xsl:apply-templates/></a></b> </xsl:template> <xsl:template <xsl:copy> <xsl:apply-templates/></xsl:copy> </xsl:stylesheet>

13 テンプレートのネスト MTran: XSLT: {visit x :: x in <div> ::
変数スコープのネスト MTran: XSLT: {visit x :: x in <div> :: {visit y from x :: y in <selflink> :: @href[{gather z :: :: z}]}} フラットなテンプレート 明示的な引数渡し <xsl:stylesheet ...> <xsl:template match=“div"> <xsl:copy><xsl:apply-templates> <xsl:with-param name=“x” select=“.”/> </xsl:apply-templates></xsl:copy> </xsl:template> <xsl:template match=“selflink”> <xsl:param name=“x”/><xsl:attribute ...> <xsl:value-of ... 普通に使う例

14 MSO Queryの実装 標準的な実装方式 論理式をツリーオートマトンへ変換 ツリーオートマトンを使ってQueryを実行 入力 t 論理式
x in <a> 「各ステップをおりじなーるに工夫しました」 出力 s

15 MTranでの実装 論理式をツリーオートマトンに変換 ツリーオートマトンを使って実行 MONA[2] を利用
最悪の計算量は超指数的だが、様々な最適化によって実用的な処理時間を達成したシステム XML変換への応用例でも実験・検証を行った ツリーオートマトンを使って実行 遅延評価を用いた O(t+s) アルゴリズム 既存の最善のアルゴリズムは O(tN+s) [2] N.Klarlund et al., 1999

16 O(t+s) Queryアルゴリズム(概要)
Product & Union 解の候補 q1→{(_,v4)(v5,_)(_,v5)(_,v2)(v2,_)(v2,v2)} q2→{(_,_)(v4,_)(v5,v5)(v2,v2) ...} q3→{(v4,v4)(v5,v4)(v2,v5)(v5,v2) ...} 解の候補 q1→{(_,v3)} q2→{(v3,_)} q3→{(v3,v3)} Product & Union 解の候補 q1→{(_,_)(_,v4)} q2→{(v4,_)} q3→{(v4,v4)} q1→{(v5,_) (_,v5)} q2→{(v5,v5)} q3→{(_,_)} 解の候補 q1→{(_,v1)(v1,v5)(_,v4)(v4,v5)(v2,v1) (v2,v2)(v3,_)(v3,v3)(v3,v5)(v3,_) (v5,v4)(v1,v2)...} q2→{(_,_)(v4,_)(v5,v5)(v2,v2)} q3→{(v3,v3)(v1,_)(v4,v4)(v2,_)(_,v3) (v2,v3)(v3,v2)(v5,v1)(v4,v2)...} ・途中の集合演算(Product, Union)を遅延処理 ・ただし空集合の演算は毎回処理

17 関連研究 (XML変換言語) fxgrep, fxt [Berlea et al. 2001] Arb [Koch 2003]
“既知の最良アルゴリズム”でBinaryQueryを実装 Arb [Koch 2003] 1-ary MSOと等価な言語をXML Queryに応用 XSLT 1.0 [Clark et al. 1999] XSLT 2.0 (draft) [Kay 2005] 一階論理のexist, forallを導入

18 まとめ XML変換言語 MTranの設計と実装 MSOの論理式をQuery言語に採用 MSO Queryの表現力を活かす変換言語
“visit” テンプレート テンプレートのネスト MSO Queryの効率的な処理方式 MONAを採用 遅延評価による O(t+s) アルゴリズムを開発 階層

19 今後の課題 XML仕様への完全対応 静的型検査 “move” 変換 名前空間、文字列処理
“visit” テンプレートの型検査手法の研究 “move” 変換 XML文書中でノードを”移動”する変換のスマートな記述 さっさと


Download ppt "XML Transformation Language Based On Monadic Second Order Logic"

Similar presentations


Ads by Google