DBpediaとは
Linked Open Data(LOD)としてデータ公開する最も有名なサイトのひとつにDBpediaがあります。
DBpedia では、Wikipediaの記事の一部をRDF化して提供しています。コンテントネゴシエーションによりリクエストにあわせたファイルフォーマットでデータを取得できます。
※ http://wiki.dbpedia.org/about/about-dbpedia/architecture より引用
例えば、ja.dbpedia:東京駅をブラウザで開くと東京に関する情報をWebページとして閲覧できますが、ここに掲載されているデータをXMLやJSONでほしい場合、リクエストヘッダーにその要求を記述すれば取得できるようになっています。
※ コンテントネゴシエーションにより、HTMLを取得する例。http://www.slideshare.net/fumihiro/20140904-bodik より引用
Simple LODI
今までDBpediaのような仕組みで公開する場合、自前のデータベースを作成しなければいけなかったりと若干難しい部分がありました。そこで、RDF記述言語の一種であるTurtleファイルを作成すればDBpediaのようにRDFデータをHTMLだけでなくXMLやJSONで取得できるサイトを作れるPHPプログラムを作りました。
Simple LODI: Simple Linked Open Data Interface
以下が、設置例になります。
http://uedayou.net/simplelodi/uedayou
これは、
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<http://uedayou.net/simplelodi/uedayou>
a foaf:Person ;
foaf:mbox <mailto:yooueda@gmail.com> ;
foaf:homepage <http://uedayou.net/> ;
foaf:name "Hiroshi Ueda" .
https://github.com/uedayou/simplelodi/blob/master/data/uedayou.ttl
このTurtleのデータを表示した例になります。Webブラウザで開くと、表形式でデータが表示されます。
これを例えば、cURL などで、以下のようにリクエストを投げると
$ curl -H "Accept: application/rdf+xml" http://uedayou.net/simplelodi/uedayou
XML形式でデータが返ってきます。
<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/">
<foaf:Person rdf:about="http://uedayou.net/simplelodi/uedayou">
<foaf:mbox rdf:resource="mailto:yooueda@gmail.com"/>
<foaf:homepage rdf:resource="http://uedayou.net/"/>
<foaf:name>Hiroshi Ueda</foaf:name>
<foaf:Image rdf:resource="http://uedayou.net/uedayou.jpg"/>
</foaf:Person>
</rdf:RDF>
N-Triples だと
$ curl -H "Accept: application/n-triples" http://uedayou.net/simplelodi/uedayou
JSON-LD だと
$ curl -H "Accept: application/ld+json" http://uedayou.net/simplelodi/uedayou
のようになります。
コンテントネゴシエーション以外にも、ファイル拡張子を変更することで同様のデータを手軽に取得できるようにもなっています。
Turtle
http://uedayou.net/simplelodi/uedayou.ttl
XML
http://uedayou.net/simplelodi/uedayou.xml
JSON-LD
http://uedayou.net/simplelodi/uedayou.jsonld
N-Triples
http://uedayou.net/simplelodi/uedayou.nt
設置方法
以下の手順により設置できます。PHPは5.4以上をインストールしてください。また、.htaccessでmod_rewrite が使えるようにしてください。
- simplelodi フォルダをWebサーバ上の任意の場所にコピーしてください。
- simplelodi フォルダをリネームしてください(たとえば、resource など)
- data フォルダに サンプルファイル(data/uedayou.ttl)を参考にTurtle ファイルを作成し、コピーしてください。
-
http:// ... /resource/[拡張子を省略したファイル名]
をブラウザで開くと、HTMLが表示されます。
※ たとえば uedayou.ttl の場合は、http:// ... /resource/uedayou
となります - 対応する拡張子(対応フォーマット節 参照)をつけると、出力フォーマットを変更できます。
※ https://github.com/uedayou/simplelodi より
Linked Dataとして公開するためのTurtleファイル作成方法
Simple LODI で使用するTurtleファイルの作成方法によっては、Linked Dataとすることもできます。
Turtleファイル自体のURIと実際にアクセスできるURLを同じにすれば Linked Data として公開できます。TurtleファイルのライセンスがCC BY、CC BY-SAなどオープンライセンスなら、Linked Open Dataになります。
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<http://uedayou.net/simplelodi/uedayou>
a foaf:Person ;
foaf:mbox <mailto:yooueda@gmail.com> ;
foaf:homepage <http://uedayou.net/> ;
foaf:name "Hiroshi Ueda" .
例えば、上記サンプルデータのURIは<http://uedayou.net/simplelodi/uedayou>
なので、http://uedayou.net/simplelodi/uedayou のURLでアクセスできればLinked Dataです。
そのために、uedayou.net
の部分は自分が管理できる(持っている)ドメインである必要があり、そのドメインがアクセスできるサーバの公開領域に simplelodi フォルダをコピーする必要があります。
まとめると
(1) サーバに simplelodi フォルダをコピーする。simplelodiはリネームしてください。
(2) simplelodi/data/ フォルダの中に Turtleファイルを .ttl 拡張子に変更してコピーする。
(3) コピーするTurtle ファイル自体のURI を
http://[サーバのドメイン]/[simplelodiフォルダの名前]/[(2)の拡張子なしファイル名]
にする。
なお、上記のデータのファイル名は uedayou.ttl ですが、Simple LODI では、.ttlの部分は省略されます。
また、data フォルダの中のデータは実際にはひとつ上の階層
(例では、http://uedayou.net/simplelodi/data/uedayou
ではなく http://uedayou.net/simplelodi/uedayou
)
でアクセスできます。