-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample.cypher
134 lines (99 loc) · 3.27 KB
/
example.cypher
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
// Create Python
CREATE (guido:Person {name: "Guido"})
CREATE (python:Language {name: "Python"})
CREATE (guido)-[:CREATED]->(python)
RETURN guido, python
// -- Create Web Frameworks and authors
// Create Flask and connect to Python
MATCH (guido:Person {name: "Guido"})
MATCH (python:Language {name: "Python"})
CREATE (armin:Person {name: "Armin"})
CREATE (flask:Software:Framework {name: "Flask"})
CREATE (armin)-[:CREATED]->(flask)
CREATE (flask)-[:LANGUAGE]->(python)
// Create Django and connect to Python
CREATE (simon:Person {name: "Simon"})
CREATE (adrian:Person {name: "Adrian"})
CREATE (jacob:Person {name: "Jacob"})
CREATE (django:Software:Framework {name: "Django"})
CREATE (simon)-[:CREATED]->(django)
CREATE (adrian)-[:CREATED]->(django)
CREATE (jacob)-[:CREATED]->(django)
CREATE (django)-[:LANGUAGE]->(python)
RETURN armin, flask, simon, adrian, jacob, django, python, guido
// -- Create Alice and Bob and their work
// Create Alice and Bob
CREATE (dept:Department {name: "IT Department"})
CREATE (alice:Person {name: "Alice"})
CREATE (bob:Person {name: "Bob"})
CREATE (alice)-[:WORKS_AT]->(dept)
CREATE (bob)-[:WORKS_AT]->(dept)
RETURN alice, bob, dept
// -- Set some arbitrary properties and labels on Alice and Bob
MATCH (alice:Person {name: "Alice"})
SET
alice:Engineer:Runner:AllRoundLegend,
alice.interests=["LARPing", "running ultra"],
alice.best_100kms=time('18:47:19'),
alice.preferred_larp_system="L5r",
alice.l5r_main_char="A-Bomb the Mighty",
alice.l5r_character_type="Seeker of Enlightenment",
alice.l5r_main_skill_group="Scholar Skills",
alice.l5r_preferred_weapon="Kusarigama",
alice.l5r_preferred_clan="Phoenix Clan"
WITH alice
MATCH (bob:Person {name: "Bob"})
SET
bob.full_name="Robert Perry Smith",
bob.interests="volleyball"
RETURN alice, bob
//
// Let's make a Recommendations Engine!
// Get context and add some more
MATCH (python:Language {name: "Python"})
MATCH (flask {name: "Flask"})
MATCH (django {name: "Django"})
MATCH (dept:Department {name: "IT Department"})
MATCH (alice:AllRoundLegend {name: "Alice"})
MATCH (bob:Person {name: "Bob"})
// add another framework
CREATE (bottle:Software:Framework {name: "Bottle"})
CREATE (bottle)-[:LANGUAGE]->(python)
// add new colleague
CREATE (cris:Person {name: "Cris"})
CREATE (cris)-[:WORKS_AT]->(dept)
// define what people are known to like
CREATE (alice)-[:LIKES]->(bottle)
CREATE (bob)-[:LIKES]->(bottle)
CREATE (cris)-[:LIKES]->(bottle)
CREATE (alice)-[:LIKES]->(django)
CREATE (bob)-[:LIKES]->(django)
CREATE (cris)-[:LIKES]->(django)
CREATE (alice)-[:LIKES]->(flask)
CREATE (bob)-[:LIKES]->(flask)
RETURN alice, bob, cris, dept, django, flask, bottle
// What frameworks do people like?
MATCH
(dept:Department {name: "IT Department"})
<-[:WORKS_AT]-
(people:Person)
-[:LIKES]->
(framework:Framework)
-[:LANGUAGE]->
(python:Language {name: "Python"})
RETURN framework, people
ORDER BY framework.name
// Find the missing link
:params {person_name: "Cris"}
MATCH (subject:Person)
WHERE subject.name=$person_name
MATCH
(dept:Department {name: "IT Department"})
-[:WORKS_AT]-
(people:Person)
-[:LIKES]-
(likeable_framework:Framework)
-[:LANGUAGE]-
(:Language {name: "Python"})
WHERE NOT (subject)-[:LIKES]->(likeable_framework)
RETURN likeable_framework