最後に、Tom Hanksとどの映画でも共演していない人を見つけるには、次のようなCypherになります。
MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors), (coActors)-[:ACTED_IN]->(m2)<-[:ACTED_IN]-(cocoActors) WHERE NOT (tom)-[:ACTED_IN]->(m2) RETURN cocoActors.name AS Recommended, count(*) AS Strength ORDER BY Strength DESC
このように、従来のSQLと比較しても、Cypherはわかりやすく、簡潔に記述できます。また、データを見える化するグラフ機能もあるため、視覚的にもひと目で分かります。
日本ではこれから
最後に、Neo4jの適用分野ですが、欧米の実機としては、多くの業界で使われています。テレコム業界ではネットワークグラフやソーシャルグラフ、金融ではペイメントグラフやポートフォリオ分析、医療では診療グラフや患者グラフです。
データをグラフ構造にして、分析、解析などを素早く検索するというシステムは、すべての業界で必要とされています。欧米では、多くの導入実績がありますが、日本では、これから導入されていく技術です。
こういうデータはグラフ化するとよいのでは、ということを考えていくと、利用するシステムが見えてくると思います。もしくは、RDBで構築していて、どうもパフォーマンスがでない、ということであれば、構造をグラフにすれば、効果が出るかどうかを考えることも大切です。
Neo4jについての情報は、Neo4jユーザグループが定期的に勉強会やNeo Technologyからの講演会などを開いています。Neo4jユーザーグループのウェブサイトから情報を取得できますので、ご興味のある方は、ぜひ、御覧ください。