CREATE (n:Person {name: 'Alice', age: 30})
CREATE (n:Person {name: 'Bob', age: 35})
CREATE (n:Person {name: 'Charlie', age: 28})
CREATE (n:Person {name: 'David', age: 40})
CREATE (n:Person {name: 'Eve', age: 32})
CREATE (n:Friendship)-
[:FRIENDS_WITH {since: '2010'}]->
(:Person {name: 'Alice'}),
(n)-[:FRIENDS_WITH {since: '2015'}]->
(:Person {name: 'Bob'}),
(n)-[:FRIENDS_WITH {since: '2012'}]->
(:Person {name: 'Charlie'}),
(n)-[:FRIENDS_WITH {since: '2017'}]->
(:Person {name: 'David'}),
(n)-[:FRIENDS_WITH {since: '2014'}]->
(:Person {name: 'Eve'})
MATCH (start:Person {name: 'Alice'}), (end:Person {name: 'David'}),
p = shortestPath((start)-[:FRIENDS_WITH*]-(end))
RETURN p
MATCH (:Person)-[:FRIENDS_WITH]-()
RETURN DISTINCT labels(start) as person, count(*) as neighbors