Linked Dataとは

Linked DataはHTMLの考案者であるTim Berners-Leeによって2006年に提唱された新しい概念です。Linked Dataについての解説サイトは多々ありますが、取り敢えず最小限の知識を身につけたいという人のために、簡単な説明を用意しました。

ハイパーリンクとLinked Data

提唱者であるBerners-Leeらは,Linked Dataを次のように説明しています。「簡単に言えば,Linked Dataとは,Webを使って,異なる情報源のデータを意味の付いたリンクを使って結びつけることである」(Bizer (2009))。通常のWebページでは,ハイパーリンクを使って関連する他のWebページにリンクを張ることで,Webページ間の巡回を可能とし,情報の共有に多大の成果を納めてきました。しかしながら,このリンクには「関連がある」ということ以上の意味は記述されていません。このためリンクを機械的にたどって関連する情報を集めても,意味のある情報にまとめ上げることは困難でした。

Linked Dataは,データを記述する単語間に意味の付いたリンクを張ることで,異なる情報源のデータを結びつけます。これにより機械的な処理で意味のある情報を集めたり,まとめ上げたりすること(情報統合)を可能にしようというものです。これを実現するために, Berners-Lee は Linked Data を公開するときの規則として,次の4つを挙げています。これらは「Linked Dataの原則」として知られているものです(Bizer (2009))。

  1. ものの名前としてURIを使うこと。

  2. 名前について調べられるようにHTTP URIを使うこと。

  3. URIを調べたときに,RDFやSPARQLなどの標準技術を使って有益な情報を提供すること。

  4. 他のURIを含めることによって,より多くのものを発見できるようにすること。

このLinked Dataを使って,Webサイトで公開されているデータ(政府,科学,写真,音楽など)を連携させる活動が欧米を中心に急速に展開されているということです(森田(2012))。日本ではやや遅れていて,このような活動が先進的なところで始まりつつある状況だそうです(武田(2011))。

RDFを用いたLinked Dataの記述

表1 RDF説明用のデータ(学生データ)
表1 RDF説明用の学生データ

一般的にLinked DataはRDFを用いて記述します。RDF(Resource Description Framework)は,Web上のリソースに関する情報を表現するデータモデルで,W3Cにより規格化されています。RDFでは,情報を主語,述語,目的語のトリプル(三つ組み)の集まりで表現します(神崎 (2005))。

ここでは表1のデータを例としてRDF記述の要点を説明しましょう。RDFには種々の記法が存在しますが,ここでは理解しやすいN-Triples記法でまず説明します。N-Triplesは主語,述語,目的語のURIを<>で囲んで記述し,並べただけのものです。各文の終わりはピリオド(.)です。これを使ってA0001の学生の情報を記述するとリスト1のようになります。

1
2
3
4
5
6
7
8
9
<http://example.org/sample#A0001>
      <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
            <http://example.org/sample#学生> .
<http://example.org/sample#A0001>
      <http://example.org/sample#氏名>
            "東京 太郎" .
<http://example.org/sample#A0001>
      <http://example.org/sample#出身地>
            <http://dbpedia.org/resource/Tokyo> .

リスト1 RDF/N-Triplesによる学生データの表記

ここでは見やすいように1つのトリプルを3行使って書いています。トリプルの1行目が主語で、2行目が述語、3行目が目的語です。ここでhttp://example.org/sampleはサンプルサイトを表すURLで,これに#以下を付加したものは,このサイトで定義しているリソースのURIです。<http://example.org/sample#A0001>は学籍番号がA0001であるような学生を表しています。2行目の<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>はRDFで定義しているリソースで,「(主語)のタイプは(目的語)である」ということを表す述語です。つまり,1~3行のトリプルは「A0001のタイプは学生である」ということを表しています。5行目の<http://example.org/sample#氏名>は,このサンプルサイトで定義しているもので,「(主語)の氏名は(目的語)である」ということを表す述語です。つまり,4~6行のトリプルは「A0001の氏名は東京 太郎である」ということを表しています。

9行目の目的語<http://dbpedia.org/resource/Tokyo>は,DBPediaで定義しているリソースで「東京都」を表しています。従って,7~9行のトリプルは「A0001の出身地は東京都である」ということを表していることになります。DBPediaにアクセスして,<http://dbpedia.org/resource/Tokyo>の情報を引き出せば,東京都に関する詳しい情報を知ることができます。このようにLinked Dataでは,他のサイトで定義されているリソースを引用することで,異なる情報源のデータを結びつけることができます。1~9行のような記述を繰り返すことで,すべての学生データをRDFでファイル化することができます。

Turtleを用いたLinked Dataの記述

リスト1で使用したN-Triplesは,構造が簡単で機械処理しやすいという利点はありますが,人間にとって分かりやすいものではありません。これを人間向けに改良した記法としてTurtleという記法があります。リスト1と同じ内容をTurtleで書くと以下のようになります。

1
2
3
4
@prefix ex: <http://example.org/sample#> .
ex:A0001 a ex:学生 ;
      ex:氏名 "東京 太郎" ;
      ex:出身地 <http://dbpedia.org/resource/Tokyo> .

リスト2 RDF/Turtleによる学生データの表記

1行目は接頭辞(プレフィックス (prefix))の定義で,<http://example.org/sample#>をex:で略記するということを宣言しています。2行目の ex:A0001 は,この接頭辞を使ったリソースの表現で,<http://example.org/sample#A0001> を意味しています。その後の a はTurtleで定義されているもので,<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>を表しています。従って,この2行目のトリプルはリスト1の1~3行のトリプルと同じ内容を表しています。

ただし,2行目の行末はピリオド(.)ではなくセミコロン(;)です。このセミコロンは以下に同じ主語が用いられるということを表しています。従って,3行目は「ex:A0001 ex:氏名 “東京 太郎” .」の意味になり,リスト1の4~6行のトリプルと同じ内容を表していることになります。4行目も同様です。Turtleにはこれら以外に記述を簡略化する工夫がいくつかありますが,それらについては別稿で説明します。

SPARQLを用いたRDFデータの利用

RDFデータは機械処理を前提としていますので,これを読み込み処理するプログラムを書くことができます。この作業を簡単にするために考案されたものがSPARQLです。SPARQLは,RDFデータを格納し,検索や操作をするためのコンピュータ言語で,W3Cによってその標準化が行われています。SPARQLはリレーショナルデータベースのためのSQLによく似た構文と機能をもっています。SPARQLはSQLと同様にAPIを利用してプログラムの中から問合せを発行することで検索結果を得ることができます。また,スタンドアロンで動作する問合せアプリケーションも多数のものが登場しています。リスト3は,上のリスト2のデータを使ったSPARQL問合せ文の例です。

1
2
3
4
5
6
PREFIX ex: <http://example.org/sample#>
SELECT ?student ?name WHERE {
      ?student a ex:学生 ;
            ex:氏名 ?name ;
            ex:出身地 <http://dbpedia.org/resource/Tokyo> .
}

リスト3 SPARQLによる問合せ文の例

1行目は接頭辞の宣言で,2~6行が条件検索を行うSELECT文です。SPARQLのSELECT文はパターンマッチを利用しています。「?」で始まる語は変数で、WHERE句でマッチした値がセットされます。リスト3を実行すると,出身地が「東京都」である学生の「学籍番号(URI)と氏名」の一覧が得られることになります。なお、TurtleとSPARQLでは、接頭辞宣言の書き方が微妙に異なりますので注意して下さい。Turtleでは先頭に@を付け、文末にピリオド(.)が必要です。SPARQLではPREFIXと大文字で書くのが習慣になっています。

Linked Dataの公開方法

RDFデータはファイルやデータベースとして公開することで外部からインターネットを介して利用可能になります。RDFファイルを公開サーバ上に置いてダウンロードできるようにするのが一番簡単な公開方法です。多くのLinked Data公開サイトでは,リソースURIをたどることでそのリソースを含むRDFファイルをダウンロードできるようにしています。

より進んだ公開方法はSPARQL Endpointを構築することです。SPARQL EndpointはRDFデータを格納したデータベースを持ち,SPARQL文をメッセージとして受信すると,それに対応する検索結果を返すサービスを提供するサイトです。SPARQL Endpointを構築するためのツールも多数のものが登場しています。

SPARQLのSELECT文では,リソースを提供しているEndpointのURLを指定して検索することができます。このため,Linked DataがSPARQL Endpointを通じて得られるときは,複数の異なるサイトの情報を組み合わせた検索が可能です。

参考文献

Linked Data関連文献 をご参照ください。

About 佐藤 英人

東京国際大学名誉教授。 若い頃、経済企画庁(現内閣府、経済産業省)の統計課、国民所得部で統計の実務を経験。 その後、大学で統計データベース、知識ベース、オブジェクト指向等の研究・教育に従事。 著書:統計データベースの設計と開発 - データモデルと知識ベースの応用(オーム社)、オブジェクト指向が分かる本(オーム社)など。

コメントを残す

Name and email are required. Your email address will not be published.

キャプチャ * Time limit is exhausted. Please reload CAPTCHA.