0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Neo4jを触ってみた

Last updated at Posted at 2025-08-03

グラフDBであるNeo4jを触ってみました
データの入れ方など色々検証しました

検証は別ページに書きました。

参考文献

Neo4jの環境構築

https://github.com/campbel2525/neo4jで構築することができます。

構築方法などはREADME.mdを参考にしてくだい

名称まとめ

関係表(gptより)

概念レベル (ER モデル) Neo4j / Cypher 上の呼び方
エンティティ ノード (a:Person {…})
属性 プロパティ a.name / a.age
リレーション リレーション ()-[:LIVES_IN]->()

名称の図(Neo4jの画面)
画面に表示されるエンティティは代表的なもの(id, name, title,,,)が1つ表示されるっぽい(gpt)

スクリーンショット 2025-08-02 3.01.00.png

サンプルクエリ

サンプルクエリを事項してNeo4jの動きを確認してみます

作成

  • 映画と出演俳優と監督のデータを作成
    • ACTED_IN: 出演
    • DIRECTED: 監督
// ---------- 1. データベースを空にする ----------
// 既存のデータをすべて削除して、まっさらな状態にします
MATCH (n) DETACH DELETE n;


// ---------- 2. ノードを作成する ----------
// Movieノード
CREATE (:Movie {title: 'The Matrix', released: 1999, tagline: 'Welcome to the Real World'});
CREATE (:Movie {title: 'Forrest Gump', released: 1994, tagline: 'Life is like a box of chocolates...'});
CREATE (:Movie {title: 'Cloud Atlas', released: 2012, tagline: 'Everything is Connected'});

// Personノード (俳優と監督)
CREATE (:Person {name: 'Keanu Reeves', born: 1964});
CREATE (:Person {name: 'Tom Hanks', born: 1956});
CREATE (:Person {name: 'Halle Berry', born: 1966});
CREATE (:Person {name: 'Lana Wachowski', born: 1965});
CREATE (:Person {name: 'Robert Zemeckis', born: 1952});


// ---------- 3. 関係性でノードをつなぐ ----------
// MATCHでノードを見つけてから、CREATEで関係を作成します

// The Matrixの関係
MATCH (m:Movie {title: 'The Matrix'})
MATCH (p1:Person {name: 'Keanu Reeves'})
MATCH (p2:Person {name: 'Lana Wachowski'})
CREATE (p1)-[:ACTED_IN {role: 'Neo'}]->(m)
CREATE (p2)-[:DIRECTED]->(m);

// Forrest Gumpの関係
MATCH (m:Movie {title: 'Forrest Gump'})
MATCH (p1:Person {name: 'Tom Hanks'})
MATCH (p2:Person {name: 'Robert Zemeckis'})
CREATE (p1)-[:ACTED_IN {role: 'Forrest'}]->(m)
CREATE (p2)-[:DIRECTED]->(m);

// Cloud Atlasの関係
MATCH (m:Movie {title: 'Cloud Atlas'})
MATCH (p1:Person {name: 'Tom Hanks'})
MATCH (p2:Person {name: 'Halle Berry'})
MATCH (p3:Person {name: 'Lana Wachowski'})
CREATE (p1)-[:ACTED_IN {role: 'Dr. Henry Goose'}]->(m)
CREATE (p2)-[:ACTED_IN {role: 'Jocasta Ayrs'}]->(m)
CREATE (p3)-[:DIRECTED]->(m);

Neo4jの管理画面で確認

グラフデータが作成されていることが確認できました

スクリーンショット 2025-08-03 19.47.05 (1).png

取得

// トム・ハンクスが出演した映画は?
// Forrest Gump、Cloud Atlas
MATCH (p:Person {name: 'Tom Hanks'})-[:ACTED_IN]->(m:Movie)
RETURN m.title AS movie_title;


// 『The Matrix』でキアヌ・リーブスと共演した俳優は?
// なし
MATCH (p:Person {name: 'Keanu Reeves'})-[:ACTED_IN]->(m:Movie)<-[:ACTED_IN]-(colleague:Person)
RETURN colleague.name AS colleague_name;

// トム・ハンクスが出演し、ラナ・ウォシャウスキーが監督した映画は?
// Cloud Atlas
MATCH (p1:Person {name: 'Tom Hanks'})-[:ACTED_IN]->(m:Movie)
MATCH (p2:Person {name: 'Lana Wachowski'})-[:DIRECTED]->(m)
RETURN m.title AS movie_title;

メモ

  • Keanu Reeves
    • キアヌ・リーブス
  • Tom Hanks
    • トム・ハンクス
  • Halle Berry
    • ハル・ベリー
  • Lana Wachowski
    • ラナ・ウォシャウスキー
  • Robert Zemeckis
    • ロバート・ゼメキス
  • The Matrix
    • ザ・マトリックス
  • Forrest Gump
    • フォレスト・ガンプ
  • Cloud Atlas
    • クラウド・アトラス

メモ

「prefersOldBrowser」を削除すればOK

  • csv一括インストール方法(本)(試していない)

  • サーバーサイドプロシージャ(本)

    • Neo4jからSQLサーバーに接続してSQLを実行できる機能
      • PythonなりでSQLを実行してからNeo4jを実行する方がいいと思う(古谷)
  • NER: 固有表現認識。文

Neo4jの検証

Neo4jの検証

まとめ

  • Neo4jを実際にいじってみてグラフDBというのがどういうものかある程度理解できました
  • Neo4jでデータの挿入から検索までの一連の動きを確認できました
  • 必要な情報はLLMで作成可能なことがわかりました
  • 他にもいろいろ検証する必要があるのがわかりました

今後のやってみること

  • 今回の検証以外にも色々な検証ポイントがあり色々試してみたいです
  • 本番運用する際にはどのようにするかいまいちまだよくわかっていません
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?