The property graph model
A labeled property graph (LPG) has exactly four ingredients:
- Nodes — the entities (a person, a movie).
- Relationships — directed, typed connections between nodes. In an LPG a relationship is a first-class entity with its own identity.
- Labels — tags on nodes (
Person,Movie). A node can carry several. - Properties — key/value pairs, on both nodes and relationships.
The point most people miss: a relationship carries its own properties. ACTED_IN {roles:['Neo']} is a thing, not just an arrow. You can have two distinct ACTED_IN relationships between the same actor and movie, each with different properties. That is the property graph's superpower over a plain adjacency matrix (which can only say whether an edge exists).
The dataset you will use
The whole course runs on one vendored Movies-style graph — Movie {title, released, tagline} and Person {name, born} nodes, joined by six relationship types: ACTED_IN (with roles: string[]), DIRECTED, PRODUCED, WROTE, REVIEWED (with rating), and FOLLOWS (person to person, with a small cycle among reviewers). It is hand-authored for determinism — 87 nodes, 113 relationships — and mirrors the shape of the canonical Neo4j Movies graph, centered on Kevin Bacon so the capstone returns a real, non-trivial answer.
(Keanu Reeves:Person {born:1964})
│ ACTED_IN {roles:['Neo']}
▼
(The Matrix:Movie {released:1999})
▲ ▲
│ DIRECTED │ PRODUCED
(Lana Wachowski) (Joel Silver)
roles:['Neo'] hangs on the ACTED_IN relationship — not on Keanu, not on the movie. When you build the record store in Chapter 1, a Relationship gets its own props map exactly like a Node does.