技術全体を見るCTOの視点、ビジネス全体を見るプロジェクトマネージャーの視点、その両方で世の中のトレンド、ニュースを見る

Linked Open Dataとその利用(1)

»

情報の海からデータの海へ

インターネットは「情報の海」であると言われます。そこにはとてつもない量の情報が公開されており、しかも日々増え続けています。

その情報というのは、基本的には「人間が見て分かる」ものです。例えば、この文章も日本語で書かれていて、「人間が読んで理解する」ことを無意識の前提としています。音声も、動画も、インターネット上に公開されている情報は最終的には「人間が理解する」ことが目的です。

このことは、公開されている情報をソフトウェアが利用するにあたって、非常に困った状況を生み出します。コンピュータには、書かれている文章や動画が一体何を意味しているのかが分からないのです。例えば、「東京都に隣接する都道府県は山梨県、千葉県、埼玉県、神奈川県です。」という文章は日本語が読める人には意味が明確です。しかし、コンピュータにはこれを文字列として扱う以上の、「意味を理解する」ということが難しいのです。

Web上の情報をデータとして利用したい時に一般的なのは、文章から欲しい領域のみを切り出す「スクレイピング」という技術を利用するものです。例えば先程の例で言うと、「東京都に隣接する都道府県は」という文字列と「です。」という文字列をページの中から探し出し、それに挟まれている部分を「、」で分割してやります。そうすると、「山梨県」「千葉県」「埼玉県」「神奈川県」というリストを取り出すことが出来ます。ここまでやると、プログラム的にこのリストを利用することが出来るようになります。

ところが、これには重要な問題があるのです。まず、Webページに書かれている文章が変わってしまった場合、データを抜き出すことができなくなります。先ほどの例では、「東京都に隣接する都道府県は」という文字を探しましたが、このページを書いた人が、「都道府県って書いたけど、実際には県しかないな。書き直そう!」と思ってそのように書き直した瞬間、プログラムでデータを抜き出すことが出来なくなります。これは、コンピュータが文字列を文字列としてしか処理できず、意味を理解出来ないための限界です。

つまり、公開されている情報をデータとして活用するには、越えなくてはならないハードルがあるのです。ここから、コンピュータが理解しやすい、データのWebを作ろうという活動が始まることになります。人間が理解することを前提にした情報の海を、コンピュータに理解しやすいデータの海に読み替えていく、「セマンティック・ウェブ」というプロジェクトです。

セマンティック・ウェブ実現のためには

まず、コンピュータが理解できるデータの形式が必要です。そして、そのデータへのアクセス方法が必要です。また、データの海にはデータの海の検索方法が必要です。

コンピュータが理解出来るデータ形式として、RDFというものを利用します。RDFでは、「主語」「述語」「目的語」の3つの組(「トリプル」と呼びます)で情報を表します。

先ほどの例で言いますと、下記のような関係になります。

主語述語目的語
東京都 隣接都道府県 山梨県
千葉県
埼玉県
神奈川県

これで、コンピュータが理解しやすくなりました。さらにコンピュータが理解できるようにするため、主語や述語は「識別子」というもので表現するようにしています。インターネット上で1つのページを表現するのにURLを使うように、データの海にはそのデータを表現する「IRI」というものを使います。IRIはURLを拡張したもので、見た目はそのままURLのようなものです。

例えば、DBpediaという、Wikipediaをデータ化したサイトがあるのですが、そこでの「東京都」のIRIは「http://ja.dbpedia.org/resource/東京都」です。述語の「隣接都道府県」は「http://ja.dbpedia.org/property/隣接都道府県」です。目的語は、IRIであったり単に文字列であったりといろいろなのですが、DBpediaで「東京都」の「隣接都道府県」はIRIになっており、「http://ja.dbpedia.org/resource/山梨県」「http://ja.dbpedia.org/resource/千葉県」「http://ja.dbpedia.org/resource/埼玉県」「http://ja.dbpedia.org/resource/神奈川県」の4つになります。

つまり、この関係を表すトリプルは、次のようになります。

  • http://ja.dbpedia.org/resource/東京都 ― http://ja.dbpedia.org/property/隣接都道府県 ― http://ja.dbpedia.org/resource/山梨県
  • http://ja.dbpedia.org/resource/東京都 ― http://ja.dbpedia.org/property/隣接都道府県 ― http://ja.dbpedia.org/resource/千葉県
  • http://ja.dbpedia.org/resource/東京都 ― http://ja.dbpedia.org/property/隣接都道府県 ― http://ja.dbpedia.org/resource/埼玉県
  • http://ja.dbpedia.org/resource/東京都 ― http://ja.dbpedia.org/property/隣接都道府県 ― http://ja.dbpedia.org/resource/神奈川県

ここで、少しだけ注意があります。

「http://ja.dbpedia.org/resource/東京都」について、URLとしてそのままブラウザで開くことも出来ます。しかし、その時に見えるものはこのデータの「表現」の1つである、HTMLです。よく見ると、URLが「http://ja.dbpedia.org/page/東京都」に変わっていると思います。実は、RDFのデータの形式にはいろいろな種類があります。プログラムで使いやすい形式に合わせて、XMLやJSONといった表現形式で取得出来るようになっています。ブラウザで開いた場合はHTMLでの表現を返す、その時のHTMLのURLが「http://ja.dbpedia.org/page/東京都」ということなのです。

これらのXMLやJSONやHTMLは、データとしての見た目は違いますが内容は全く同じです。これを、概念として1つのものとして表すのが「http://ja.dbpedia.org/resource/東京都」という識別子なのです。

Linked Open Dataへ

セマンティック・ウェブを実現する方法として、Linked Open Dataというものがあります。先ほどちらっとご紹介したDBpediaも、Linked Open Dataを公開している場所の1つです。インターネットで情報がリンクされているのと同じように、データの海ではデータが相互にリンクされています。それがLinked Open Dataです。

Linked Open Dataとその情報の検索方法について、次回詳しくお伝えしたいと思います!

Comment(0)

コメント

コメントを投稿する