The property graph model
A property graph stores data as a network of entities and the connections between them.
Entities are nodes. Connections are relationships (also called edges).
Both nodes and relationships can carry properties—key/value pairs such as
name: "Tom Hanks" or roles: ["Forrest"].
Nodes are classified with one or more labels (for example :Person
and :Movie). Relationships always have exactly one
type (for example :ACTED_IN or
:DIRECTED) and a direction from a start node to an end node.
That direction is part of the stored data: walking the graph “with the arrow” is not the same as
walking against it unless you write an undirected pattern later in Cypher.
Why does this model matter? Many real domains are relationship-heavy: social networks, supply chains, fraud rings, recommendation engines, dependency graphs, and knowledge panels. In a relational database you reconstruct those connections with join tables and multi-hop SQL. In a property graph, the relationship is a first-class object you can traverse, filter, and project without re-joining rows every time. You still need good modeling judgment—graphs are not magic—but the data structure matches the questions you ask: “who is two hops away?”, “what paths connect A to B?”, “which movies share cast members?”
Throughout this course we use Neo4j’s well-known Movie graph: people act in and direct films, with properties such as birth year, release year, and tagline. Keeping one concrete dataset lets every lesson reuse the same mental picture while Cypher features grow.