はじめに
言語学の研究のためにWordNetやSUMOのようなオントロジーデータベースを使いたいが、主に使いたいのはクラス階層とかなのでグラフ型データベースが便利かなあと思って試してみたメモ。
インストール
neo4j本体のインストール
brew install neo4j
ruby用のインターフェイス
sudo gem install neography
neo4jの起動
サーバーを起動する
$ neo4j start
ブラウザを起動し、以下のアドレスを入力
http://localhost:7474/
ユーザーインターフェイス的なものが表示される。ユーザー名とパスワードを聞いてくるが、初期設定はどちらも neo4j らしい。それを入力すると新しいパスワードの入力を求められるので適当に入れる。
rubyから操作してみる
とりあえず irb から試す。
require 'neography'
ユーザー名とパスワードを指定して接続。
Neography.configure{|conf| conf.username = 'neo4j'; password = 'password'}
@neo = Neography::Rest.new
ノードとリレーションを登録。
node1 = Neography::Node.create(name: "Cat")
node2 = Neography::Node.create(name: "Animal")
node2.outgoing(:subclass) << node1
これだけだとブラウザで表示するときノードに文字が表示されないので、ラベルをつける。
node1.set_label = "Cat"
node2.set_label = "Animal"
追記: label は Cat のような識別名ではなく、Class とか Instance みたいな分類ラベル的なものを割り当てるものっぽい。ブラウザでもちゃんとname属性の方が表示される模様。
ブラウザで確認する。とりあえず左メニューの一番上にあるデータベースアイコンをクリックし、Node Labelのところの*をクリックすれば全てのノードが(LIMIT 25で)表示されるっぽい。
データベースの初期化
全てのノードとリレーションを削除するには、ブラウザのコンソールに次のように入力する。
MATCH (n) DETACH DELETE n
とりあえずここまで。