Neo4j is a Property-Graph database that consists of labeled nodes and relationships each with properties.

Nodes are just data records, and properties are simple key:value pairs that allow you to store information in Neo4j. Properties can be attached to both nodes and relationships and are referred to by node.property or relationship.property.

There is no schema, just structure.

Cypher instead, is a declarative, SQL inspired language for describing patterns in graphs. It allows us to describe what we get from a graph database without requiring us to describe exactly how to do it.

Example query to retrieve a species:
[cc lang=”sql”]
MATCH (s:Species)
WHERE s.scientific_name = “Canis Lupus”

Example query top return all the species living in a Habitat:
[cc lang=”sql”]
MATCH (s:Species)-[:LIVE_IN]->(h:HabitatType {name: “Sierra de Gredos”} )
RETURN s.scientific_name;