The heart of graph engineering is the schema. Learn to decide what becomes a node, an edge, or a property; how to design an ontology that survives contact with real data; when to use directionality and reification; and the modeling mistakes that quietly poison a graph before you ever write a query.
Before you write a single query, you make three decisions over and over: should this thing be a node, an edge, or a property? Get these right and traversals stay simple; get them wrong and you'll fight your own schema for the life of the project.
WORKS_AT, PURCHASED, LOCATED_IN.name, born, price, an edge's since date.Ask: "Will I ever want to traverse to this, or count how many things share it?"
city: "Berlin" property.This is the single most common beginner mistake: burying queryable entities inside properties. A city string can't be connected to a country, can't have a population, and forces fragile string matching.
In a property graph, edges are first-class — they can hold properties. Employment isn't just (Alice)-[:WORKS_AT]->(ACME); it's WORKS_AT { since: 2021, title: "Engineer" }. Put facts about the relationship on the edge, not on either node.