LoginSignup
2
2

More than 5 years have passed since last update.

RDFに関する雑な説明

Last updated at Posted at 2016-03-02

オープンデータ界隈では、オープンデータの形式としてRDFがおすすめらしい。スキーマが定義されているとなおよいらしい。
いまいちRDFで調べても知りたいことがわからなかったので、自分が伝えたい順序で雑に整理しました。

基本

RDFは何かといわれると、有向グラフです。
S P Oの3つの値で有向グラフをつくります。

S: Subject
P: Predicate
O: Object

このSPOをステートメントと呼ぶらしいです。

Kobito.SAKsrX.png

このSPOをたくさん集めてデータを構築します。SubjectはURIである必要があるらしいですが、正確なことはRDF Primerとかみればいいはずです。

具体例

RDFをつかって具体的にデータを構築してみます。
Kobito.84kz8O.png
上記のグラフはQiitaというウェブサービスの説明とその会員の情報を表現したRDFになります。
SPOのステートメントで表現すると以下のようになります。

http://qiita.com/ name Qiita
http://qiita.com/ description プログラミングを共有しよう
http://qiita.com/ user http://qiita.com/eielh
http://qiita.com/ user http://qiita.com/だれか
http://qiita.com/eielh name Himura Tomohiko

表現することができました。
仮にテーブル形式で表現するとこうなりますね。

ウェブサービスの情報テーブル








name description user
Qiita プログラミング知識を共有しよう eielh
誰か

ObjectにURIを使用することでデータをリンクさせることができています。RDFを使うとオープンリンクデータが作成できるわけです。
同じ属性をいれることで繰り返しも表現できています。
非常に柔軟なデータ構造であることがわかりました。

柔軟ですが、http://qiita.com/ どんな種類の情報で、属性をもっていて、どんな値を取り得るのか明確化されているとコンピュータで扱いやすくなります。user属性ならURIがはいっているなどです。
それが記述されているのがスキーマになります。

出力形式

RDFは有向グラフという概念なので物理的には、いろんな形式で出力できます。
ルールさえ決めればXMLやJSONにできそうですね。
すでにRDFXMLやJSON-LDがあります。

RDFはHTMLにも埋め込みができます。RDFaとかMicrodataがあります。
SEO系の話ででてくるものですね。

RSSも一部のバージョンはRDF形式になっているようです。

RDFの解析

RDFはJSONに比べてプログラムで扱うには優しくないように思うはずです。JSONであればそのまま連想配列になります。RDFはそうもいかないのです。そこがあんまり耳にしない理由な気がしています。

リレーショナル・データベースからのデータ取得はSQLというクエリ言語をつかいます。XMLにはXQueryというクエリ言語をつかいますね。(HTMLではjQueryというライブラリがありましたね)
RDF用のクエリ言語はSPARQLというのがあります。

SPARQLを私はまだあまり触ってまた機会があれば。

まとめ

というわけで、RDFはなにものかというと以下の感じの理解をしています。

  • RDFは有向グラフ
  • RDFXML JSON-LDなど様々な形式で表現できる
  • スキーマを定義することでよりコンピュータで有効利用しやすくなる
  • データ同士をURIでリンクできる
  • クエリ言語でデータを抽出できる

間違って理解しているところがあれば、ぜひぜひ指摘おねがいします。

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2