// Basic: find person by name
query get_person($name: String) {
match {
$p: Person { name: $name }
}
return { $p.name, $p.age }
}
// Filter by age
query adults() {
match {
$p: Person
$p.age > 30
}
return { $p.name, $p.age }
order { $p.age desc }
}
// One hop traversal
query friends_of($name: String) {
match {
$p: Person { name: $name }
$p knows $f
}
return { $f.name, $f.age }
}
// Reverse traversal: who works at a company
query employees_of($company: String) {
match {
$c: Company { name: $company }
$p worksAt $c
}
return { $p.name }
}
// Two hop: friends of friends
query friends_of_friends($name: String) {
match {
$p: Person { name: $name }
$p knows $mid
$mid knows $fof
}
return { $fof.name }
}
// Negation: people who don't work anywhere
query unemployed() {
match {
$p: Person
not { $p worksAt $_ }
}
return { $p.name }
}
// Aggregation: friend count
query friend_counts() {
match {
$p: Person
$p knows $f
}
return {
$p.name
count($f) as friends
}
order { friends desc }
limit 20
}
// Order and limit
query top_by_age() {
match {
$p: Person
}
return { $p.name, $p.age }
order { $p.age desc }
limit 2
}
// Aggregation: global count (no group key)
query total_people() {
match {
$p: Person
}
return { count($p) as total }
}
// Aggregation: sum/avg/min/max of age per company
query age_stats() {
match {
$p: Person
$p worksAt $c
}
return {
$c.name
sum($p.age) as total_age
avg($p.age) as avg_age
min($p.age) as youngest
max($p.age) as oldest
count($p) as headcount
}
}
// Aggregation: most connected person
query top_connected() {
match {
$p: Person
$p knows $f
}
return { $p.name, count($f) as friends }
order { friends desc }
limit 1
}