AjaxとObject/RDFマッピングライブラリ
RDFとJavaScriptのObjectをマップするライブラリを作り始めました。雰囲気としてはRailsのActiveRecordに似ています。JavaScriptのコードを書けば、自動的にSPARQLクエリ生成からリモートサーバへの問い合わせ、返事のパースにキャッシュまでを行ってくれます。
現在は本当に作りはじめのベータバージョンで、エラーハンドリングなどは全然していません。機能も最も単純なURIを基準としたデータの取得のみです。
<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns="http://xmlns.com/foaf/0.1/">
<Person rdf:about="urn:for:me">
<name>Yudai Ishikawa</name>
<homepage rdf:resource="http://ishikawa.arielwokrs.com/" dc:title="The 3rd Development Section"/>
</Person>
</rdf:RDF>
こんな感じのRDFのグラフがあれば、ライブラリのコードを読み込みさえすれば
// Create a instance of query engine with the uri of your remote SPARQL server.
qEngine = new Hercules("http://your/uri/to/sparql/server");
// Register prefixs to omit Namespace URIs. Use empty string for the default Namespace.
qEngine.addPrefix("", "http://xmlns.com/foaf/0.1/");
qEngine.addPrefix("dc", "http://purl.org/dc/elements/1.1/");
// fetch the resource with the specific uri.
var user = qEngine.find("<urn:for:me>");
// And popup objects of the resource.
alert(user.name().getValue()); // -> Yudai Ishikawa
alert(user.homepage().dc$title().getValue()); // -> The 3rd Develpment Section
こんな感じに、QNameをドット記法でつないでいけば何処まででもいけます。SPARQLのクエリを生で書くとものすごい記述量になるので、これだけでもかなり便利なはずです。
次は制約入りのクエリを実装予定です。