Build your own knowledge graph database
Why graph databases exist·6 min

The property graph model

0 / 1

A labeled property graph (LPG) has exactly four ingredients:

  1. Nodes — the entities (a person, a movie).
  2. Relationships — directed, typed connections between nodes. In an LPG a relationship is a first-class entity with its own identity.
  3. Labels — tags on nodes (Person, Movie). A node can carry several.
  4. 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.

A slice of the graph (The Matrix)
(Keanu Reeves:Person {born:1964})
      │ ACTED_IN {roles:['Neo']}
      ▼
(The Matrix:Movie {released:1999})
      ▲                    ▲
      │ DIRECTED           │ PRODUCED
(Lana Wachowski)     (Joel Silver)
Properties live on edges too

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.