こんにちは、鯨井貴博@opensourcetechです。
6/27に「Neo4j ユーザー勉強会 #16」に参加して来ました。
jp-neo4j-usersgroup.connpass.com
会場は、サイオスさん。
ここ来るの、nginx 第0回のユーザ会以来だな。
OSSサポート(黒坂肇さん)
黒坂さんから、サイオスさんのOSS活動等について、話がありました。
Fourth openCypher Implementers Meeting報告(案浦浩二さん)
5/23から5/25にコペンハーゲンで行われたMeetupの報告。
Graph DBの動向などについて話がありました。
Neo4j Desktop入門(案浦浩二さん)
Neo4j Desktopのワークショップ。
Neo4j Desktopを起動し、プロジェクトを作成したあと。
ワークショップ。
以下、ワークショップの手順。
C1
CREATE (:Person {name:"太郎"});
C2
MATCH (n) RETURN n
MATCH (n:Person {name:"太郎"}) RETURN n
MATCH (n:Person)
WHERE n.name = "太郎"
RETURN n
C3
CREATE (:Person {name:"一郎"}),
(:Person {name:"二郎"}),
(:Person {name:"三郎"}),
(:Person {name:"花子"})
C4
MATCH (n) RETURN n
C5
MATCH (n1:Person {name:"太郎"})
SET n1.age = 38;
C6
頑張ってください
※一郎、二郎、三郎、花子に年齢追加
C7
MATCH (n) RETURN n
・・・左のDBマークのPersonをクリックしてもいい(25件まで)
C8
MATCH (n:Person {name:"太郎"})
MATCH (n1:Person {name:"一郎"})
CREATE (n)-[:CHILD]->(n1)
C9
頑張ってください
※C8と同様に、関係性を追加
C10
MATCH (n:Person {name:"太郎"})
SET n.hobby = "読書"
C11
頑張ってください
※C10同様に、適当に趣味を追加
C12
MATCH (n:Person {name:"一郎"})
MATCH (n1:Person {name:"二郎"})
CREATE (n)-[:FRIENDS]->(n1)
C13
頑張ってください
※二郎->三郎、三郎->一郎・二郎の友達関係を追加
C14
MATCH p=(n:Person)-[:CHILD]->(:Person)
WHERE n.name = "太郎"
RETURN p
C15
MATCH (n:Person)-[:FRIENDS]->(p:Person)-[:FRIENDS]->(n)
RETURN n,p
注:これ以降は、当日配布されたCSVファイルが必要。
C16
LOAD CSV WITH HEADERS FROM 'file:///place.csv' AS line
CREATE (:Place {
id: line.id,
name: line.name,
location: point({
latitude: toFloat(line.latitude),
longitude: toFloat(line.longitude),
crs: 'WGS-84'})
})
C17
MATCH (p1:Place {name:"サイオス"})
MATCH (p2:Place {name:"東京タワー"})
RETURN distance(p1.location, p2.location)
C18
MATCH (s:Place {name:"サイオス"})
MATCH (p:Place)
WHERE distance(s.location, p.location) < 700
AND p <> s
RETURN p
以下、操作中
まとめ
今回は、操作しながらNeo4jの基本を学ぶことが出来よかったです。
直感的にわかるのがグラフDBのいいところですね。
OracleなどもグラフDBに対応し、Neo4jで利用されるCypherと統合予定とのこと。
今後、いろいろな分野で利用されてくることかと思います。
おまけ
参加の記念品として、
USB充電器とステッカーを頂きました!