標準化目前:注目のXML問い合わせ言語
XQuery 〜前編
XQuery以前に提案された問い合わせ言語 |
■XML-QL
XML-QLは半構造型データを扱う問い合わせ言語として開発されました。XML-QLはXMLの特徴であるユーザー定義可能なタグや入れ子型要素を扱うことができる宣言的問い合わせ言語です。以下にXML-QLの例を示します。
WHERE <book> |
この問い合わせではWHERE節で<book>を含んだ文書(www.beacon-it.co.jp/xml-ql/book.xml)に対して処理が行われることを宣言しています。また、<book>と<publisher>が親子関係を示しており、<publisher>オーム社</publisher>によりドキュメント<book>の子エレメントの<publisher>が「オーム社」とマッチすることを示し、<author>$a</author>でそのときの<author>のエレメントを「$a」にバインドすることを表します。そしてバインドされた$aはCONSTRUCT節で新しいXMLの文書を組み立てる際に使用することができます。これによりオーム社で出版したことのある執筆者の一覧を抽出することができます。
XML-QLの特徴は、XML文書からデータを抽出し、変数へのバインドとCONSTRUCT節により、まったく新しいXML文書を組み立てることができる点にあります。また、2つ以上のXML文書をジョインすることも可能です。リレーショナル型のデータを扱っている人には、これはごく自然な考え方です。SQLでは従業員テーブル、部門テーブル、部門構成員テーブルから部門別平均年齢の表を作り出すことができます。XMLの問い合わせ言語でも同様の処理が要求されることがあります。後述のXQLと違い、XML-QLは従来のデータベースクエリに近い考え方にXMLの階層型の考えを加えたものであるといえるでしょう。
■XQL
XQL(XML Query Language)は1998年にW3C XSLワーキンググループにXSLの拡張として提出されました。XMLのデータモデルはリレーショナルのデータモデルとは違い、階層型のデータモデルであることはすでに説明しました。リレーショナルでは、テーブルと呼ばれる2次元の表でデータを表し、行とケタで個々のデータを参照することができます。XMLは階層型のデータモデルなので、そのパターンマッチの構文はリレーショナルのそれとはまったく違います。
XQLはXSLのパターンマッチの構文を拡張して作られました 。XQLはまた、構文が短くて読みやすくシンプルであることをコンセプトにデザインされています。例えばbook/authorは<book>要素の子要素である<author>を見つけます。“/”(スラッシュ)は要素の親子関係を表します。“/”はまたルートエレメントを表す場合にも使います(例:/books/book/author)。“//”は要素内のどこにあってもマッチします。例えばbib//authorはbib要素の下の階層のどこかにあるauthor要素を探し出します。
XQLは前述のXML-QLと違い、まったく新しい構造の文書を作ることはできません。しかし、XQLの結果はオリジナル文書(入力の文書)の順番、階層、同一性を守ります。XQLによってもたらされた結果は要素の集まりとして返されますが、入力のドキュメントと同じ順番で返され、データが繰り返されることはありません。故に、XML-QLのようにグルーピングが失われた結果が返されることはありません。
このように、XQLはXSLを拡張して作られ、文書型の特徴(前述のカルテなど)を持ったXML文書を扱うことを得意とした問い合わせ言語です。XQLの多くの部分はXPath 1.0の中でも記述されており、XPathの標準化にも貢献しています。
■XML問い合わせ言語として必要な機能
このようにXQLとXML-QLはそれぞれ特徴を持っており、しかも両方の機能はXMLを扱ううえで非常に重要であることが分かります。W3CのXML Query Working Groupでは、XMLの問い合わせ言語として必要な項目を「XML Query Requirements」(ワーキングドラフト)として2000年6月10日に提出しています。
また、XMLの問い合わせ言語として必要な機能を例も含めて表したものが、「XML Query Use Cases」(ワーキングドラフト)としてW3CのQueryワーキンググループから提出されています。XMLの問い合わせ言語の特徴が分かりやすく説明されているので、以下にその概要をまとめました。
1.Use Case “TREE” 2.Use Case “SEQ” 3.Use Case “R” 4.Use Case “SGML” 5.Use Case “TEXT” 6.Use Case “NS” 7.Use Case “PARTS” 8.Use Case “REF” 9.Use Case “FNPARM” |
上記のすべてのケースがXQuery 1.0で実現されているわけではありませんが、XMLの特徴を見るには非常に重要であり、また、問い合わせ言語の実装の1つの指標となります。
■QuiltとXQuery
前述のXML-QLおよびXQLは、上に挙げた9つのUse Caseのすべてを機能的に備えることができるようなつくりにはなっていませんでした。そこで2000年3月、米IBMのDon Chamberlin、独ソフトウェア・エージーのJonathan Robie、仏国情報自動化研究所のDaniela Florescuの3人は、SQL、OQLと、XMLの問い合わせ言語の特徴を兼ね備えたXML問い合せ言語「Quilt」(キルト)を開発しました。現在のW3Cで議論されているXQueryはこのQuiltが基になってできています。
次回は、いよいよXQueryについて解説します。
2/6 |
Index | |
注目のXML問合せ言語「XQuery」 | |
XML問い合わせ言語とデータモデル ・問い合せ言語の役割 ・XML問い合わせ言語が求められる理由 ・XML問い合わせ言語とデータモデル ・XMLの基本データモデルはツリー構造 |
|
XQuery以前に提案された問い合わせ言語 ・XML-QL ・XQL ・XML問い合せ言語として必要な機能 ・QuiltとXQuery |
|
2つの表現式、PathとFLWR ・表現式はシーケンスで表される ・Path表現式 ・FLWR表現式 |
|
FLWR表現式の詳細 ・XQueryを試せるアプリケーション ・for句とlet句の違いは繰り返し ・Path表現式とFLWR表現式の違い コラム:複数のXML文書をXMLデータベースでどう扱うか? |
|
SQLとXQueryはどう違う? ・リレーショナルモデルの演算とは ・XQueryの演算 |
|
XQueryにおけるリレーショナルの演算 ・リレーショナルモデルの演算とは ・XQueryの演算 ・トランスフォーメーション ・次の課題は更新系の命令 |
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|