neo4jphp.pharを使ってみた(2)

Facebooktwittergoogle_plus
ここの情報は2013年7月、Neo4jのバージョン1.9の頃に書かれたものです。
Neo4j ver2以降について書かれたものは以下を参照してください。
Neo4jphpをcomposerを使ってインストールする
composerを使わないでneo4jphpからNeo4jに接続してみた

 

前回はneo4jphp.pharの設置まででしたので、今回はどういうふうに使うかを紹介します。

サンプルスクリプトを考えるのが面倒なので、実際に使ったものをそのまま載せます。
映画俳優と出演映画の紐付けを例にやってるところがよくありますが、私は泥くさーく人事情報を使います。小さい会社ならエクセルで十分ですが、でっかい企業になるとかなり大変で、特に問題になるのは社員数ではなく部署管理です。部署のツリー構造も階層数が一定ではなく、RDBを使ってもSQLのサブクエリ―では対応できません。

neo4jphp.pharのオブジェクトやメソッドの使い方を紹介するのが目的なので、アルゴリズムは気にしないでください。
このスクリプトが何をやっているのかざっと説明しますと・・・

  • 部署数千、社員数万の会社の部署と社員をNeo4Jにインポートするプログラムです。
  • オリジナルDBはMySQLで、部署テーブル、社員情報テーブル、社員と部署を紐づける参照テーブルの3つのテーブルがあります。
  • プログラムは部署テーブルのツリーを下りながら、それに紐づく社員を取得し、Neo4Jに部署ノードを作り、親ノードと紐づけ、社員ノードを作って、その部署と紐づけていきます。
  • 社員の兼務は有りです。2重登録は有りません。

*例内ではボールドになっている部分がneo4jphpに関する部分です。その他は無視してください。

 

【新しいノード追加】

$n = $neo4j->makeNode()->save();
で作れます。

【プロパティ追加】
この$nに対して、プロパティーは:

$n->setProperty(‘プロパティ名’, ‘値’);

で設定します。

【コミットするには】

$n->save();

です。続けて、$n->setProperty(‘プロパティ名’, ‘値’)->save();でもOKです。

【リレーションの追加】
二つのノードをリレーションで結ぶには、

ノードA->relateTo(ノードB, ‘リレーション名’);

で、親ノードから子ノード向きのリレーションが設定できます。
ここで親・子というのは適切ではなく、階層的にはしたのノードでも上に向けてリレーションを張ることもあります。
上の例では、部署から下層部署へ向けて’HAS’というリレーションを設定していますが、社員から部署へは’BELONG_TO’というリレーションを張っています。

以上は、neo4jphp.pharに組み込まれたノード作成、プロパティ設定、リレーション設定の例です。
今回は新規にできたノードに対しての操作だけですので、次は、ノードIDをもとにノードオブジェクトを生成し、ノードやリレーションの削除、Cypherを使ったクエリーとその結果の取り出しを紹介しようと思います。