DBpediaのある主語の述語プロパティwikiPageWikiLinkの目的語となる文字列を取得するためのSPARQLクエリ


タイトルが長くなってしまいました。。。ここではWikipediaの日本語版ページについて記述されているDBpedia Japaneseを対象としています。Japaneseは省略していきます。

##DBpediaとは
まずDBpediaとは、簡単にオンライン大百科辞典の代表であるWikipediaのインフォボックスの情報を取得するプログラムを持ったWebサイトのことです。（表現がおかしかったらコメント下さい・・・）

![ja_dbpedia_logo.png](https://qiita-image-store.s3.amazonaws.com/0/11432/fd0277bb-6dad-5b1e-7854-ce3594b4536b.png "ja_dbpedia_logo.png")


[公式ホームページ](http://ja.dbpedia.org)から引用するとこのように書かれています。
>DBpediaはWikipediaから情報を抽出してLOD (Linked Open Data)として公開するコミュニティプロジェクトです．本家のDBpediaは主にWikipedia英語版を対象としています．DBpedia Japanese の目的は，Wikipedia日本語版を対象としたDBpediaを提供することです．


##実際にSPARQLクエリを入力してみる
使い方
------
###SPARQLエンドポイント
[SPARQLエンドポイント](http://ja.dbpedia.org/sparql)にアクセスする。  

![Virtuoso SPARQL Query Editor.png](https://qiita-image-store.s3.amazonaws.com/0/11432/4fe50f18-f6ef-8123-aa1c-53e5bec35bc1.png "Virtuoso SPARQL Query Editor.png")


このようなクエリ入力画面になるのでクエリ入力後、取り出したいデータ形式を```Results Format```で指定します。今回はわかりやすさのため、HTMLを選択します。

###入力例
早速ですが入力例です。

    prefix dbp: <http://ja.dbpedia.org/resource/>
    prefix dbp-owl: <http://dbpedia.org/ontology/>
    prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    
    SELECT *
    WHERE {
            dbp:東京 dbp-owl:wikiPageWikiLink ?thing1.
            ?thing1 rdfs:label ?thing2.
    }
    limit 50
    
###入力の意味
入力したキーワードについてのちょっとした補足です。

1.```prefix```
これは後ろに書かれているURI(例： ```http://ja.dbpedia.org/resource/``` )を ```dbp:``` などという文字に省略してクエリを書きますよ、と宣言するためのものです。

2.```SELECT```
取得したい変数を指定している。```SELECT *```と入力すると、すべての変数を指定してくれる。ここでの変数は```?thing1```と```?thing2```です。

3.```WHERE```
```{}```内に検索したいRDFのトリプル（主語・述語・目的語）を記述する。

4.```rdfs:label```
人間が読みやすい形のリソース名です。簡単に表すと「日本」のような文字列のことです。

5.```LIMIT```
```LIMIT 数字```を```{}```外側に書くと、取得する情報の件数を数字で指定して制限することができます。これがない場合は全件取得します。

###出力先のURL
こちらの長いURLがクエリを実行した先のURLになります。よく見ると、入力したクエリが書かれているのがわかります。
[http://ja.dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fja.dbpedia.org&query=prefix+dbp%3A+%3Chttp%3A%2F%2Fja.dbpedia.org%2Fresource%2F%3E%0D%0Aprefix+dbp-owl%3A+%3Chttp%3A%2F%2Fdbpedia.org%2Fontology%2F%3E%0D%0Aprefix+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0A%0D%0ASELECT+*%0D%0AWHERE+%7B%0D%0A++++++++dbp%3A東京+dbp-owl%3AwikiPageWikiLink+%3Fthing1.%0D%0A++++++++%3Fthing1+rdfs%3Alabel+%3Fthing2.%0D%0A%7D%0D%0Alimit+50&format=text%2Fhtml&timeout=0&debug=on](http://ja.dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fja.dbpedia.org&query=prefix+dbp%3A+%3Chttp%3A%2F%2Fja.dbpedia.org%2Fresource%2F%3E%0D%0Aprefix+dbp-owl%3A+%3Chttp%3A%2F%2Fdbpedia.org%2Fontology%2F%3E%0D%0Aprefix+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0A%0D%0ASELECT+*%0D%0AWHERE+%7B%0D%0A++++++++dbp%3A東京+dbp-owl%3AwikiPageWikiLink+%3Fthing1.%0D%0A++++++++%3Fthing1+rdfs%3Alabel+%3Fthing2.%0D%0A%7D%0D%0Alimit+50&format=text%2Fhtml&timeout=0&debug=on)

###出力例
出力先にアクセスすると以下のような出力が得られました。
![dbpedia_output.png](https://qiita-image-store.s3.amazonaws.com/0/11432/af705553-554d-2563-74b5-7857fcf75d3e.png "dbpedia_output.png")


ちなみにこの縦長のウェブページのスクリーンショットは[BrowseShot](https://itunes.apple.com/jp/app/browseshot/id615916400?mt=12&uo=4&at=11lb3n)という大変重宝するMacアプリを使いました。

まあこんな感じでデータを取得することができます。もちろん例で示したHTML形式だけではなくJSON形式等で取得できます。おわり。

##参考サイト
- [RDFスキーマ -- リソース表現の語彙定義](http://www.kanzaki.com/docs/sw/rdf-schema.html)