Webの全てをデータベースにするLinked Open Data(LOD)とクエリ言語SPARQLの基礎データ資源活用の基礎(3)(1/3 ページ)

オープンデータによるデータ流通のためのLinked Open Dataの仕組みと、クエリ言語SPARQLの基本を学ぼう。マシンリーダブルな表現を活用し、Webの世界全てをデータベースとして活用するための基礎知識を紹介する。

» 2014年08月12日 16時14分 公開

連載バックナンバー

はじめに

 第2回までは、ビッグデータビジネスの新たな潮流「オープンデータ」と、企業にとっての「オープンデータ」について紹介してきました。今回は、オープンデータを使ってみたいと思っている方々を対象に、第1回で簡単に紹介したオープンデータの目指す世界である「Linked Open Data」(LOD)を実現するための要素技術の概要について、実例と共に紹介します。

LODを実現するためのデータモデル「RDF」

 LODでは、データのタイトルや公開日、公開者といった情報や、あるデータが他のデータに含まれる、といった情報を構造化し、機械が処理可能にしておく必要があります。その実現には、機械が処理可能なWebリソース情報を表すためのデータモデルである「Resource Description Framework(RDF)」(注1)を使用します。RDFは、2004年から世界的な標準団体World Wide Web Consortium (W3C)によってRecommendationとして公開されているデータモデルです。Webリソースには、文書、画像、映像、音声以外にも人や動物、電車、荷物などさまざまなものが考えられます。ここでは、RDFのデータモデルについて紹介します。


注1 上綱 秀治氏によるW3Cドキュメントの和訳「RDF入門」(http://www.asahi-net.or.jp/~ax2s-kmtn/internet/rdf/rdf-primer.htmlを参照。



RDFとは

 RDFのデータモデルは、リソース情報を主語(Subject)、述語(Predicate)、目的語(Object)の3つの要素(トリプル)で表します。主語には、リソースを同定するための識別子(Uniform Resource Identifier:URI)を使用します。述語には、主語と目的語の関係を同定するためのURIを使用します。目的語には、数値や文字列、日付などのリテラルか、リソースを表すURIを使用します。

 URIの使用により、表現対象を明確化することができます。例えば、「東京」という表現には、「東京都」や「東京駅」などの複数の解釈がありますが、「東京都」や「東京駅」を表す個別のURIを使うことで曖昧性なく対象を表現することができます。

RDFで「東京都の人口は1340万人」を表現するには

 例えば、このRDFデータモデルを用いて、「東京都」の「人口」が「1340万人」であることを表すとします。ここでは、「東京都」というリソースのURIを「http://example/prefectures/tokyo」とし、「人口」という関係を表すプロパティのURIを「http://example/properties/population」とし、「13400000」を数字のリテラルとします。

 これらの対応は下の表のようになります。

RDFデータモデルの表現
トリプルの要素 主語(Subject) 述語(Predicate) 目的語(Object)
日本語での表現 東京都 人口 13400000
RDFでの表現 http://example/prefectures/tokyo http://example/properties/population 13400000

 上記のリソース情報の日本語での表現を「有向ラベル付きグラフ(Directed labeled graph)」を用いると下記のように表現できます。グラフでは、リソースを楕円で、リテラルを長方形で表します。またプロパティを矢印で表し、矢印の始点に主語、終点に目的語を配置します。

 上記はRDFデータモデルを用いてリソース情報を表現した一例です。Wikipedia日本語版の内容をRDFで構造化したDBpedia Japanese(注2)では、都道府県の花や、隣接している都道府県の情報、ある人物が生まれた都道府県の情報などが記述されています。詳細は「http://ja.dbpedia.org/page/東京都」にアクセスすると、下記ページのように見ることができます。


注2 DBpedia Japanese(http://ja.dbpedia.org/



 また、下記は東京都のリソース情報の一部を表したグラフです。

RDFデータのシリアル化

 RDFのデータモデルに基づくトリプルのシリアル化について紹介します。シリアル化とはトリプルを特定の形式で書き出すことを指します。シリアル化の形式には、RDF/XML、RDFa、Turtle、N-Triples、RDF/JSONなどがあります。

 W3Cの標準であるRDF/XMLでは、先に挙げた東京都の人口に関する情報の関係を、下記のように明記します。2〜3行目では「rdf」と「prop」という名前空間を定義しています。この定義を行っておくことで、各等号記号の右側にあるURLの代わりに、名前空間を使用できます。4〜5行目では、東京の人口が1340万人であることを表しています。

1: <?xml version="1.0"?>
2: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3:            xmlns:prop=" http://example/properties/">
4:  <rdf:Description rdf:about = "http://example/prefectures/tokyo">
5:    <prop:population>13400000</prop:population>
6:  </rdf:Description>
7: </rdf:RDF>

 人にとって比較的読み書きしやすい形式であるTurtleの場合は、次のように表されます。1〜2行目では名前空間を定義し、3行目では「東京の人口が1340万人である」ということを表しています。

1: @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
2: @prefix prop: <http://example/properties/>.
3: <http://example/prefectures/tokyo> prop:population 13400000.
       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。