RDFのデータベースを検索するためのクエリ言語については、W3CのRDF Data Access WGで具体的な検討が始まったところだが、これを従来の検索エンジンのような簡単なインターフェイスで実行するこころみがSemantic Web Searchで行われている。まだベータテスト段階ではあるものの、結構可能性を感じさせてくれて面白い。
Semantic Web Searchの検索ページはごく一般的な検索エンジンと同様のものだが、キーワード入力ボックスの左にあるプルダウンメニューが特徴だ。これを使って、検索対象リソースのタイプ(クラス)を指定することができる。
たとえばここで[foaf:Person]というクラスを選択してMasahide Kanzaki
などと入力すると、foaf:Person内の何らかのプロパティの値がMasahide Kanzaki
であるリソースを検索する。あるいは、クラスを[rss:item]として検索すれば、RSSのitem要素内の何らかのプロパティ(titleとかdescriptionなど)にキーワードが含まれるものを選び出す。つまり、検索対象をRDFのクラスによって明確に限定できるわけだ。
これは実際には、このシステムで使われるRDFQLという言語の機能を用いた、RDFの検索クエリを生成するのと同等の働きをしている。[foaf:Person]の例でいえば、次のようなクエリに相当するものだ:
(例)
{[rdf:type] ?x1 [foaf:Person]} AND {?x3 ?x1 ?x2} AND ?x2 LIKE "Masahide" AND ?x2 LIKE "Kanzaki"
つまり、リソース?x1
はrdf:typeがfoaf:Personで、その任意のプロパティ(?x3
)の値である変数?x2
が"Masahide"もしくは"Kanzaki"を含むものを検索しろ、という具合。
応用検索として、タイプを[rss:item]としたうえで、検索ボックスに[rss:title]~semantic web
と、プロパティ名を指定したキーワードを指定することもできる。この場合は、RDFQLのクエリは次のようになる。
(例)
{[rdf:type] ?x1 [rss:item]} AND {[rss:title] ?x1 ?x2} AND ?x2 LIKE "semantic" AND ?x2 LIKE "web"
foaf:Personの例では、プロパティが任意(?x3
)になっていたのに対し、こちらは[rss:title]
と具体的に指定されており、より対象を精密化した検索ができるわけだ。Semantic Web Searchでは、こうしたクエリを自由に記述して直接検索したり、ウェブサービスとして利用することも可能になっている。
RDFデータベースに対してこうしたクエリを発行する仕組みはいくつも開発されているが、これをプルダウンメニューと検索ボックスというお馴染みのインターフェイスに仕立てているのがSemantic Web Searchのユニークなところ。まだまだ収集されているRDFが少なかったり(偏っていたり)、日本語が表示できないなどの問題もあるが、セマンティック・ウェブでの検索の具体的なイメージを示してくれるものとして、期待が持てそうだ。