inohilog

/var/log/inohiro.log

OData (Open Data Protocol)

Linked Open Data について研究していた身だけれども、OData(Open Data Protocol)と呼ばれる AtomPub(Atom Publishing Protocol)をベースとしたプロトコルが存在していた事を今日知った :o

もとは Microsoft が、Google の GData に対抗?(と書くと誤解になりそうだが)する目的で作ったようで、ADO.NET やその先の WCFWindows Communication Foundation)で使われていたようである。私の観測範囲が狭かったのかもしれないけど、ここ数年で耳にしたことが無かった... 経緯については下記の記事が参考になった(2009年11月の記事)。

リソース集合に対する問合せという観点で「RDFにおけるSPARQL」と比較してみると、問合せが非常にわかりやすい。下は、「空港のリソース集合にたいして、その住所に 'San Francisco' が含まれているもの」を取得するHTTPリクエストである(特に前提知識がなくても、何をやっているのかは何となく分かる)。

GET serviceRoot/Airports?$filter=contains(Location/Address, 'San Francisco')
{
  "@odata.context": "serviceRoot/$metadata#Airports('KSFO')/Location/Address",
  "value": "South McDonnell Road, San Francisco, CA 94128"
}

ただ、リクエストの結果として返ってくる中身を見ると、"@odata" というような名前空間ぽいものがあったり、そもそもスキーマがどこに定義されているのかよくわからない... また、リソースの目的語にURI(のような識別子)を書けるのかよくわからない(文字列としては書けるだろうが)。そうなってくると、データの型も書きたいが、書ける(得られる)のかな(仕様書読め)。

さらに、Vocabulary(語彙)も独自に定義しているようだがschema.orgとか使えると良いですね(使えると思うんだけど)。

ODataとSemantic Web, Linked Data の比較に関する質問に対し、「ODataでできることは、RDF(Linked Data)とSPARQLでできるよ」という回答もある。