研究室の合宿で京都へ
夜中、なんか開発したいねということで、短時間のハッカソンを行いました(2人で)。
ラボメンの研究進捗のあとだったりしたので、研究でお世話になっているツールを使おうということで、
- DBpedia Japanese
- neo4j
を使って、声優と出演作品をグラフ表示してみました。
DBpedia Japanese
DBpediaはWikipediaから情報を抽出してLOD (Linked Open Data)として公開するコミュニティプロジェクトです.本家のDBpediaは主にWikipedia英語版を対象としています.DBpedia Japanese の目的は,Wikipedia日本語版を対象としたDBpediaを提供することです.
オープンデータといえば、これという感じ
SPARQL という RDF 向けのクエリ言語で、必要な情報を取得することができます。
今回は声優と、出演作の関係が必要だったので、利用したクエリはこんな感じ
select distinct ?anime_name ?actor_name where {
?anime <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://dbpedia.org/ontology/Anime> ;
<http://xmlns.com/foaf/0.1/name> ?anime_name ;
<http://ja.dbpedia.org/property/出演者> ?actor .
?actor <http://www.w3.org/2000/01/rdf-schema#label> ?actor_name .
}
neo4j
Neo4j is a highly scalable native graph database that leverages data relationships as first-class entities, helping enterprises build intelligent applications to meet today’s evolving data challenges.
関係表現したり、クエリできるグラフデータベースです(ざっくりしかまだ分かっていない)
Cypherクエリで操作します。
今回の流れ
- DBpedia から SPARQL を使ってデータを取得
- データを Cypher クエリに整形
- neo4j に登録
1, 2 は ruby でやります。githubにソースはおいておきます。
3は、手動。
Cypher クエリを作る
bundle install --path=vendor/bundle
bundle exec ruby app.rb| pbcopy # クリップボードにクエリを突っ込む
neo4j の環境構築
neo4j は、Dockerコンテナを利用 Kitematic で速攻コンテナを作る。
Port 情報をもとにブラウザを開く
Password 初期は neo4j
みたいです。新規パスワードを求められるので登録。
作ったクエリを実行
初期だと表示数が少ないので表示数の設定を変えます。
:config initialNodeDisplay: 5000
いざ表示
MATCH ()-[r]->() RETURN r
できた。