1 / 19

XML Transformation Language Based On Monadic Second Order Logic

XML Transformation Language Based On Monadic Second Order Logic. 東京大学 情報理工学系研究科 コンピュータ科学専攻 細谷研究室 稲葉一浩. 本研究の内容. XML 変換言語 MTran の設計と実装 MTran の特徴 MSO の論理式を XML への Query 言語として採用 MSO Query の表現力を活かす変換言語 MSO Query の効率的な評価アルゴリズム. {visit x :: x in <A> :: Foo [ {visit y from x ::

kane
Download Presentation

XML Transformation Language Based On Monadic Second Order Logic

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML Transformation Language Based OnMonadic 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} ] }]}

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

  4. XML処理におけるMSOの利点 • 強い表現力 • 全ての Regular Query を表現可能 • 再帰によらない宣言的な記述 • 自然な N-ary Query の記述 • Queryと無関係な要素への言及が不要 ⇒ これらの性質は、XML処理に有用

  5. MSOの表現力1: Regularity • XHTMLの目次作成 • 『ある要素 x から、文書順で次の<h1> 要素までの間にある <h2> 要素 y』 • 「xの後ろにある<h2>要素 y」 • 「xの後ろにある<h1>要素 z」 • 「zの前にある<h2>要素 y」 • それぞれは既存言語(XPath等)でも書けるが、組み合わせは不可能 <h1> ...<h2>.... .....<h2>.. .... <h3> ... <h1> ... <h2> .... .. <h3> ..... <h1> 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] ex1 c: (x/c & c in <foo>)

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

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

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

  13. テンプレートのネスト テンプレートのネスト 変数スコープのネスト • MTran: • XSLT: {visit x :: x in <div> :: {visit y from x :: y in <selflink> :: @href[{gather z :: x/z:@id :: 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 select=“$x/@id”/> ...

  14. MSO Queryの実装 • 標準的な実装方式 • 論理式をツリーオートマトンへ変換 • ツリーオートマトンを使ってQueryを実行 入力 t 論理式 ツリーオートマトン x in <a> 出力 s

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

  16. Product & Union Product & Union 解の候補 q1→{(_,_)(_,v4)} q2→{(v4,_)} q3→{(v4,v4)} 解の候補 q1→{(v5,_) (_,v5)} q2→{(v5,v5)} q3→{(_,_)} O(t+s) Queryアルゴリズム(概要) 解の候補 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)} 解の候補 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] • “既知の最良アルゴリズム”で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仕様への完全対応 • 名前空間、文字列処理 • 静的型検査 • ツリーオートマトンに基づくXMLの型検査は既に広く利用されている • “visit” テンプレートの型検査手法の研究 • “move” 変換 • XML文書中でノードを”移動”する変換のスマートな記述

More Related