昨日はFablを「Javascript風RDF処理言語」という形で紹介したけれど、これは見方が一面的なので少々補足。Fablはそのコード自身がRDFのリソースとして表現される処理系で、操作対象とプログラムが同一レベルという点ではLispに近い(Javascript風構文は、これを扱いやすくするためのsyntactic sugarで、内部的にはRDFに変換される)。これによって、アクティブなコンテンツを直接RDFに組み込んだり、従来の言語をAPI経由で用いるよりRDFの処理がシンプルになる、ということだ。
Fablではデータ型をRDF/OWLのクラスとして扱い、プロパティを(RDF/OWLと同様)クラスとは独立して定義する。したがって、RDFスキーマやオントロジーによる定義があれば、そのままFablのプログラムでデータ型利用できるし、クラスとプロパティの組み合わせの自由度は高い。たとえば、FOAFの定義を参照し、そこに新たに定義するプロパティex:performs
を組み合わせてみよう:
install(namespace("foaf"));
install(namespace("ex"));
allocate("ex:performs",Property);
var me = new(foaf:Person)
;
me.ex:performs = "Contrabass";
スキーマやオントロジーのrange, Restrictionなどを型チェックに利用することもできる。このJavascript風構文自体が内部的にはRDFに変換されるわけだが、その辺りの詳細は、Fablの設計者Chris Goad博士の論文 Describing Computation within RDF を参照。
論文では、Fablを利用したアクティブなRDFコンテンツの例として、RDFmapperなどのインタラクティブ地図が挙げられている。確かに、Tokyo LandscapeのデータをBlogmapperで表示する方法を調べている時に、Fablに関する記述を目にしたことがあった。Fablを使うといろんな工夫ができそうな感じだ。面白い。
- Fablを使った簡単なクエリ (2004-04-12)
- Fabl開発者Chris Goad氏来日 (2004-04-23)
- Fabl: Javascript風RDF処理言語 (2004-03-31)