slide (Japanese)
Download
Report
Transcript slide (Japanese)
XML Transformation Language
Based On
Monadic Second Order Logic
東京大学 情報理工学系研究科 コンピュータ科学専攻
細谷研究室 稲葉一浩
本研究の内容
XML変換言語 MTran の設計と実装
{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} ]
}]}
MTran の特徴
MSO の論理式をXMLへのQuery言語として採用
MSO Query の表現力を活かす変換言語
MSO Query の効率的な評価アルゴリズム
Monadic Second Order Logic
MSO (単項二階論理)
要素そのものを指す一階変数に加え、
要素の集合を指す二階変数を導入した論理
1950年代から研究されている
近年、XML処理の理論的基礎として注目
XML処理におけるMSOの利点
強い表現力
1.
2.
3.
4.
全ての Regular Query を表現可能
再帰によらない宣言的な記述
自然な N-ary Query の記述
Queryと無関係な要素への言及が不要
⇒ これらの性質は、XML処理に有用
MSOの表現力1: Regularity
XHTMLの目次作成
『ある要素 x から、文書順で次の
<h1> 要素までの間にある <h2> 要素 y』
•
•
•
•
「xの後ろにある<h2>要素 y」
「xの後ろにある<h1>要素 z」
「zの前にある<h2>要素 y」
それぞれは既存言語(XPath等)
でも書けるが、組み合わせは不可能
x<y & y in <h2> &
all1 z:(x<z & z in <h1> => y<z)
<h1>
... <h2> ....
..... <h2> ..
.... <h3> ...
<h1>
... <h2> ....
.. <h3> .....
<h1>
MSOの表現力2: No-Recursion
LPath[1] Linguistic Queries
『ある構文解析のステップで、要素xの“直後”
にくるような要素y 』 S
VP
NP
PP
NP
N
“I”
V
Det Adj
NP
N Prep Det
“saw” “the” “old” “man” “with”
“a”
N
N
“dog” “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:
x as ~[Any, foo[Any], Any]
• MSO:
• “Any” のようなワイルドカードも不要
ex1 c: (x/c & c in <foo>)
変換言語 MTran の設計
MSO Queryによって
従来より自由度の高いノード抽出が可能になった
その表現力を活かすXML変換記述言語は?
Query
加工・出力
MSO
???
変換言語の設計
MSO Query の特徴
No-Recursion
• 親子関係をたどるのではない宣言的なノード選択
• 変換でも明示的な再帰を不要に ⇒ “visit” テンプレート
N-ary Queries
• 「カレントノードと、そこから相対的な条件を満たす
ノード」以上に複雑な依存関係の記述
• ⇒ テンプレート・変数スコープのネスト
“visit” テンプレート
全ノードに適用
MTran:
{visit x :: x in <a> :: b[x]}
XSLT:
再帰適用を明示
<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>
テンプレートのネスト
MTran:
テンプレートのネスト
変数スコープのネスト
{visit x :: x in <div> ::
{visit y from x :: y in <selflink> ::
@href[{gather z :: x/z:@id :: z}]}}
XSLT:
フラットなテンプレート
明示的な引数渡し
<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
Product
O(t+s) Queryアルゴリズム(概要)
&
Union
解の候補
q1→{(_,v4)(v5,_)(_,v5)(_,v2)(v2,_)(v2,v2)}
Product
q2→{(_,_)(v4,_)(v5,v5)(v2,v2)
...} v1
&
q3→{(v4,v4)(v5,v4)(v2,v5)(v5,v2)
...}
Union
解の候補
q1→{(_,v3)}
q2→{(v3,_)}
q3→{(v3,v3)}
解の候補
解の候補
q1→{(_,_)(_,v4)}
q1→{(v5,_) (_,v5)}
解の候補
v2
v3
q2→{(v4,_)}
q2→{(v5,v5)}
q1→{(_,v1)(v1,v5)(_,v4)(v4,v5)(v2,v1)
q3→{(v4,v4)}
q3→{(_,_)}
(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)
v4
v5
(v2,v3)(v3,v2)(v5,v1)(v4,v2)...}
・途中の集合演算(Product, Union)を遅延処理
・ただし空集合の演算は毎回処理
関連研究 (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を導入
まとめ
XML変換言語 MTranの設計と実装
MSOの論理式をQuery言語に採用
• 表現力
MSO Queryの表現力を活かす変換言語
• “visit” テンプレート
• テンプレートのネスト
MSO Queryの効率的な処理方式
• MONAを採用
• 遅延評価による O(t+s) アルゴリズムを開発
今後の課題
XML仕様への完全対応
静的型検査
名前空間、文字列処理
ツリーオートマトンに基づくXMLの型検査は既に広く利
用されている
“visit” テンプレートの型検査手法の研究
“move” 変換
XML文書中でノードを”移動”する変換のスマートな記述