XUL チュートリアル - 6.5 - RDF 入門
戻る 内容 リファレンス 進む

XUL チュートリアル - RDF 入門

このセクションでは、RDF (Resource Description Framework - リソース記述のための枠組み) を見ることにしましょう。

Resource Description Framework

ツリー要素は、ブックマークやメールメッセージなどのデータセットを表示するのに使えます。しかし、データを直接 XUL ファイルに入れれば、それが可能というのでは不便です。また、ブックマークが、直接、XUL ファイル内に置かれているとすると、それを更新するのはとても難しいことになってしまいます。これを解決する方法は、RDF データソースを使うことです。

RDF (Resource Description Framework) は、ブックマークやメールなどのリソースを保存するのに使えるファイルフォーマットです。それ以外に、他のフォーマットのデータを使うことも、ファイルを読み込んでその内容から RDF データを作るコードを書くこともできます。これは、ブックマークや履歴、メールメッセージなどのデータを読むとき、Mozilla がやっていることです。Mozilla は、他のデータとともにこうしたよくあるデータのためのデータソースを提供しています。それによって、これらのデータリソースは簡単に使用できます。

データからなるツリーを生成するために、提供されたデータリソースのどれでも使うことができます。また、ツリー内のデータを使って RDF ファイルを参照することもできます。これによって、多くの行からなるツリーを表示するのが非常に簡単になります。RDF は、メニューなどといった他の XUL 要素を生成することもできます。これについては、次のセクションで見ることにしましょう。

ここでは、簡単に RDF を概観します。RDF を理解するよい方法は、Mozilla が提供する RDF ファイルを幾つか見ることです。それらのファイルは、rdf という拡張子をもちます。

RDF は、XUL と同様に、XML を基礎にした言語です。それは、かなり単純な要素セットからなります。下の例は、単純な RDF テンプレートを示しています。

<?xml version="1.0"?>
<RDF:RDF
  xmlns:RDF="http://www.w3.org//1999/02/22-rdf-syntax-ns#">
  ...
</RDF:RDF>

これは、XUL のテンプレートと少し似ています。window 要素の代わりに、RDF 要素が使われています。RDF のネームスペースが宣言されているのが分かるでしょう。これによって、RDF 要素は正しく認識されます。RDF 要素内には、データを置きます。

RDF の完全な説明は、ここではしません。しかし、一部の説明はすることにします。RDF から生成されたブックマークリストの例を取り上げることにしましょう。ブックマークリストにはレコードセットがあり、それぞれは、URL やブックマークのタイトル、訪れた日付などの関連するデータセットからなります。

ブックマークをデータベースと考えましょう。これは、多くのフィールドからなる大きなテーブルとして保存されます。しかし、RDF の場合、リストは、同時に階層的かもしれません。これは、ブックマークのフォルダーやカテゴリーをもつことができるために、必要なことです。RDF データベースの個々のフィールドは、それぞれ、それと関連する名前をもつリソースです。名前は、URL (実際は、URI) を使って記述します。

例えば、Mozilla のブックマークリストのフィールドの選択は、以下の URI を使って記述します。

Name http://home.netscape.com/NC-rdf#Name ブックマークの名前
URL http://home.netscape.com/NC-rdf#URL リンクするための URL
Description http://home.netscape.com/NC-rdf#Description ブックマークの記述
Last Visited http://home.netscape.com/WEB-rdf#LastVisitDate 最後に訪れた日付

これらは、ネームスペースの名前を取りフィールド名を追加することによって生成されます。次のセクションで、自動的にフィールドに値をうめるために、どうやってこれらを使うか見ることにしましょう。最後に訪れた日付は、他の 3 つと微妙に異なったネームスペースをもつ点に注意して下さい。(訳注: 原文は "the last modified date" となっていますが、"the last visited date" の誤りと思われるので、そのように訳しました。)

以下の例は、3 つのレコードと 3 つのフィールドからなるテーブルをリストする RDF ファイルの例を示しています。

<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:ANIMALS="http://www.some-ficticious-zoo.com/rdf#">

  <RDF:Seq about="urn:animals:data">
    <RDF:li>
       <RDF:Description about="urn:animals:lion">
         <ANIMALS:name>Lion</ANIMALS:name>
         <ANIMALS:species>Panthera leo</ANIMALS:species>
         <ANIMALS:class>Mammal</ANIMALS:class>
       </RDF:Description>
    </RDF:li>
    <RDF:li>
       <RDF:Description about="urn:animals:tarantula">
         <ANIMALS:name>Tarantula</ANIMALS:name>
         <ANIMALS:species>Avicularia avicularia</ANIMALS:species>
         <ANIMALS:class>Arachnid</ANIMALS:class>
       </RDF:Description>
    </RDF:li>
    <RDF:li>
       <RDF:Description about="urn:animals:hippopotamus">
         <ANIMALS:name>Hippopotamus</ANIMALS:name>
         <ANIMALS:species>Hippopotamus amphibius</ANIMALS:species>
         <ANIMALS:class>Mammal</ANIMALS:class>
       </RDF:Description>
    </RDF:li>
  </RDF:Seq>
</RDF:RDF>

ここには、それぞれ動物を記述した 3 つのレコードがあります。RDF:Description タグのそれぞれが、一つのレコードを記述しています。個々のレコードには、namespeciestype という 3 つのフィールドが記述されています。すべてのレコードが同じフィールドをもつ必要はありませんが、フィールドが同じであれば意味あるものになるでしょう。

3 つのフィールドは、ANIMALS というネームスペースを与えられています。この場合、それは、利用可能な他のネームスペースとの衝突を防ぐために付けられています。この名前が選ばれたのはこの場合にふさわしかったからで、他の名前を付けることもできました。ネームスペースは、RDF タグで URL を使って宣言されています。ネームスペースの機能は有益です。class フィールドは、スタイルで使われる同名のフィールドと衝突するからです。URL はここで作られたものです。おそらく、もっと適切なものを使うことになるでしょう。

Seqli 要素は、レコードがリスト内にあることを指定するために使われています。これは、HTML のリストを宣言する方法と非常によく似ています。Seq 要素は、要素が順序付けられている、つまり、順に並んでいることを示すために使われています。Seq 要素の代わりに、順序付けられていないデータであることを示すために Bag を、個々のレコードが (ミラー URL などのような) 別の値を指定しているようなデータを示すために Alt を使うこともできます。

リソースは、XUL ファイルでは、ネームスペース URL とその後ろにフィールド名を組み合わせて参照できます。上の例では、次の URI が生成されます。これは、指定のフィールドを参照するのに使うことができます。

Name http://www.some-ficticious-zoo.com/rdf#name
Species http://www.some-ficticious-zoo.com/rdf#species
Class http://www.some-ficticious-zoo.com/rdf#class

(進む) 次は、XUL 要素を生成するために、RDF をどのように使うことができるか見ることにしましょう。

XUL チュートリアル - 6.5 - RDF 入門
戻る 内容 リファレンス 進む

[PR]話題の新車を無料プレゼント中:必ず当る抽選会!今すぐ応募で簡単GET