ちょっとしたメモ

DOASとTurtle/RDF

自作のスクリプトやスタイルシートを管理するために作ったDOAS(Description of a Script/Stylesheet vocabulary)の定義ファイルにアクセスが増えていると思ったら、紹介してくださっているページがあるようなので、少しばかり使い方の補足説明を。ちょうどRDFのTurtle構文の入門としても手ごろかもしれません。

DOASはその名のとおり、スクリプト/スタイルシートの概要を記述するためのRDF語彙です。RDFといっても、これはスクリプト/スタイルシートの冒頭などにコメントとして埋め込むことを想定しているので、XMLではなくてTurtleという構文で書くことが多くなると思います(RDFにはいろんな書き方があって、用途に応じて選べるのです)。

定義ファイルをブラウザで見ると例が表示されるようになっていますが、Turtleをご存じない方は、例のとおりに書くべきところと変更してかまわないところの区別が付かないかもしれないので、Turtle構文の説明を兼ねて、例に挙げたサンプルを説明してみます。最初の例は次のようになっています。

(例)

@prefix : <http://purl.org/net/ns/doas#> .
<> a :JavaScript;
 :shortdesc "general script to edit RDF/XML graph";
 :created "2005-06-09";
 :release [:revision "0.5"; :created "2005-07-09"];
 :author [:name "M. Kanzaki"; :homepage <http://www.kanzaki.com/> ];
 :license <http://creativecommons.org/licenses/GPL/2.0/>;
 :dependencies "none" .

おおまかな話としては、

  • 1行目は通常そのまま使う
  • 2行目の<>は文書自身をあらわす(空白の)相対URIなので、ここに文書の絶対URIを書いてもよい
  • 同じく2行目の:JavaScriptはスクリプト/スタイルシートの型(クラス)をあらわすので、適宜:PerlScriptなどに書き換える。名前の前の : を忘れないこと
  • 3行目以降は不要な行を削ったり、順序を入れ替えたりしてもかまわないが、途中の行は ; で、最後の行は . で終わるようにすること

ということになります。

Turtle構文の説明を少々

記述方法に興味がある人のために、もう少し詳しく見ていきましょう。まず1行目、

(例)

@prefix : <http://purl.org/net/ns/doas#> .

これは、この記述で用いるデフォルト名前空間を宣言しています。XMLでいえば xmlns="http://purl.org/net/ns/doas#" と書くのと同じです。XMLの場合は接頭辞なしがデフォルトになりますが、Turtleでは : のみで表現します(@prefix d: <http://purl.org/net/ns/doas#> . と書けば、d:がこの名前空間の接頭辞となります)。最後のピリオドは省略できません。通常、この行はそのまま使ってください。

(例)

<> a :JavaScript;

TurtleはRDFの主語、述語(プロパティ)、目的語のトリプルをこの順序で並べて記述します。主語、述語、目的語は、<>で囲んだURI、接頭辞:を使った修飾名、(および目的語については""で囲んだリテラル)のいずれかです。ここでは、<>が主語、a が述語、:JavaScript が目的語になります。

この場合、主語は<>の中身が空ですから、基底URIすなわち文書自身を表します。ここにスクリプト/スタイルシートの絶対URIを記述してもかまいません(1行目のDOAS名前空間URIと同様の書き方です)。述語にあたる a は、Turtleにおいてrdf:typeの代わりとなる省略記法です。目的語は、デフォルト名前空間(すなわちDOAS語彙)のJavaScriptをあらわす修飾名です。すなわち、この主語ドキュメントは:JavaScriptクラスのインスタンスであることを示しています。

行末の ; は、同じ主語のトリプルが続くときに主語を省略するための記法です。ここでの記述はすべてスクリプト/スタイルシートを主語としているので、同じ主語を繰り返す煩雑さを避けるためにこの記法を用いています。

(例)

 :shortdesc "general script to edit RDF/XML graph";

前の行の最後に主語を省略する(繰り返す); があったので、この行は述語と目的語のみで構成されます。:shortdesc が述語、"general ..." が目的語です。RDF/XMLでいえば

(例)

<shortdesc>general script to edit RDF/XML graph</shortdesc>

と記述するのに相当します。:shortdescはデフォルト名前空間の修飾名なので、: は必須で、:shortdescの間にスペースを入れてはいけません。この行も ; で終わり、同じ主語が繰り返されることを示します。これ以降、基本的には「:プロパティ 値」の形の記述が続きます。

(例)

 :release [:revision "0.5"; :created "2005-07-09"];

この行では、また新しい省略記法が使われています。Turtleでは、RDFの空白ノードをあらわすために [ ] を用います。この行は、:release の目的語が空白ノードで、その述語として :revision:created の二つがあることを表しています。RDF/XMLでは

(例)

<release rdf:parseType="Resource">
 <revision>0.5</revision>
 <created>2005-07-09</created>
</release>

と記述するのと同等です。

(例)

 :dependencies "none" .

Turtleでは、主語や述語を繰り返す省略構文以外では、トリプルの最後をピリオドで締めくくります。ここまでずっと繰り返されてきた <> を主語とするトリプルがここで終了したというわけです。以上のRDF/Turtleをグラフ図にしてみると次のようになります。

文書を主語とし、各プロパティのアークが延びるRDFグラフが得られる

Turtleは、普通のテキスト記述としてもあまり違和感がない書き方でRDFのグラフを表現することができます。関心がある方はぜひ使ってみてください。なお、TurtleはおおむねNotation3の拡張と言えるので、「Notation3:RDFの簡易表記から論理表現まで」の説明もほぼ当てはまります。

関連メモ:
map - genre: rdf. at