XML Transformation Language Based On Monadic Second Order Logic

Slides:



Advertisements
Similar presentations
List decoding for Reed-Muller codes and its application to polar codes 安永 憲司 東京工業大学 大学院情報理工学研究科 数理・計算科学専攻 1.
Advertisements

ACM/ICPC と アルゴリズム 「実践的プログラミング」 稲葉 一浩. 自己紹介 ﻪ 理Ⅰ → 理学部情報科学科 → 情報理工学系研究科コンピュータ科学専攻 ﻩ 博士課程1年 ﻩXML を扱う専用言語の研究など ﻪ 個人的には ﻩ ﻯD.
1 情報基礎 A 第 9 週 プログラミング入門 VBA の基本文法 1 準備・変数・データの入出力 徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
XML ゼミ 独習 XML ~ 第 6 章 XHTML~ 6.1 XHTML の概要 6.2 XHTML の構造 谷津 哲平.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
第9回 2007年6月22日 応用Java (Java/XML).
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
極小集合被覆を列挙する 実用的高速アルゴリズム
ラベル付き区間グラフを列挙するBDDとその応用
コンパイラ 2011年10月17日
プログラミング言語としてのR 情報知能学科 白井 英俊.
NC-2 情報通信基礎実験 WEBデザイン基礎実験 (2日目) 担当:清水,田代 副手:浦辺,石井.
早稲田大学大学院理工学研究科 情報科学専攻修士2年 後藤滋樹研究室 坂本義裕
伺か with なでしこ 発表者:しらたま /05/05 うかべん大阪#3.
言語体系とコンピュータ 第6回.
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
読んだもの1 P0145R1: Refining Expression Evaluation Order for Idiomatic C++
XJ: XML Enhancements to Java の紹介
条件式 (Conditional Expressions)
Problem F Two-finger Programming
XSLT XML文書はそのままでは読み易い形で表示されない。 XML文書を別のXML文書に変換して、情報抽出や表示をする枠組みがXSLT。
コンパイラ 2012年10月15日
CSP記述によるモデル設計と ツールによる検証
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
SGMLについて 2年8組  原口 文晃.
XMLゼミ 5.1 XML文書と表示 5.2 CSS 5.3 XMLとXSL 高橋 辰裕.
BPEL単体テストのための テストケース生成手法の提案と実現
二分探索木によるサーチ.
サポートベクターマシン によるパターン認識
大阪大学 大学院情報科学研究科 博士前期課程2年 宮原研究室 土居 聡
第10回 2007年6月29日 応用Java (Java/XML).
高速剰余算アルゴリズムとそのハードウェア実装についての研究
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
PROGRAMMING IN HASKELL
XMLゼミ 5.4 XSLT (P118~P134)          兒玉 光太郎.
2. 論理ゲート と ブール代数 五島 正裕.
暗黙的に型付けされる構造体の Java言語への導入
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
Macro Tree Transducer の 型検査アルゴリズム
XMLゼミ 1.3 XML文書の表示 1.4 XMLの役割 1.5 XMLとプログラミング M2 正木 裕一.
依存型で型付けされた 副作用のある関数のための 型保存コンパイラ
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
論文紹介 - Solving NP Complete Problems Using P Systems with Active Membranes 2004/10/20(Wed)
連続領域におけるファジィ制約充足問題の 反復改善アルゴリズムによる解法 Solving by heuristic repair Algorithm of the Fuzzy Constraint Satisfaction Problems with Continuous Domains 北海道大学.
系列ラベリングのための前向き後ろ向きアルゴリズムの一般化
~let's take fun when you can do it~
応用Java(Java/XML) 第7回 2006年6月16日 植田龍男.
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
モデル検査(5) CTLモデル検査アルゴリズム
コーディングパターンの あいまい検索の提案と実装
JAVAバイトコードにおける データ依存解析手法の提案と実装
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
再帰CTE を使って遊ぼう 大阪#9 2012/04/14.
分枝カット法に基づいた線形符号の復号法に関する一考察
発表者: 稲葉 一浩 複雑ネットワーク・地図グラフ セミナー 2017/1/19
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
コンパイラ 2012年10月11日
コードクローン解析に基づく デザインパターン適用候補の検出手法
PROGRAMMING IN HASKELL
識別子の読解を目的とした名詞辞書の作成方法の一試案
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
グラフの帯域幅連続多重彩色 を求めるアルゴリズム (Bandwidth Consective Multicolorings of Graphs) 西関研究室 西川和秀.
P2Pによる協調学習システム 唐澤 信介   北海道工業大学 電気工学専攻.
Presentation transcript:

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 :: y in <B> & all1 z:(y/z => z in <C>) :: Bar[ {gather z :: y/z :: z} ] }]} 本研究では、新しいXML変換言語MTranを設計し、実装しました。 『細部については後ほど説明しますが』おおまかな雰囲気としてこんな言語です。 MTranの特徴、つまりはこの研究のContributionは、以下の3点になります。  ・ほげ ・ふが ・ぴよ この発表では、この3点について、順に説明します。

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

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

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)

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

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))

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>)

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>)

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

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

“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 match=“@*|node()"> <xsl:copy> <xsl:apply-templates/></xsl:copy> </xsl:stylesheet>

テンプレートのネスト MTran: XSLT: {visit x :: x in <div> :: 変数スコープのネスト 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”/> ... 普通に使う例

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

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

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)を遅延処理 ・ただし空集合の演算は毎回処理

関連研究 (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を導入

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

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