Neo4j
Neo4j is a graph database management system described as an ACID-compliant transactional database with native graph storage and processing. Neo4j is by far the most popular graph database according to DB-Engines ranking. Cypher is a declarative graph query language that allows for expressive and efficient querying and updating of a property graph.
Hackolade was specially built to support the data modeling of Neo4j node labels and relationship types. The application closely follows the terminology of the database.
To be clear, Hackolade is not a graph visualization tool, but a tool for data modeling of Neo4j graph databases.
To perform data modeling for Neo4j with Hackolade, you must first download the Neo4j plugin. You can find more details on graph-specific controls in this page.
The data model in the picture below results from the reverse-engineering of the movie recommendations Neo4j sandbox. Two views of the data model are available:
1) a graph view, with familiar circular node labels

2) an Entity-Relationship Diagram (ERD) view, with the advantage of displaying properties for both node labels and relationship types:

Node labels
Node labels are a semantic representation of nodes in the graph. Node labels are used to represent the role of the node in the domain, making it possible to query the graph, to define constraints, and add indexes for properties. Labels can also be used to mark temporary states of a node.

Property keys
A node label usually has attributes, called "property keys" where the name (or key) is a string.

Property data types
The supported property types are:
-
Number, an abstract type, which has the following subtypes:
- Integer
- Float
-
String
-
Boolean
-
Spatial types:
- Point (with subtypes: WGS84, WGS84 3D, Cartesian and Cartesian 3D)
-
Temporal types:
- Date
- Time
- LocalTime
- DateTime
- LocalDateTime
- Duration
Node key constraints
A node key constraint ensures that all nodes with a particular label have a set of defined properties whose combined value is unique, and where all properties in the set are present.

Relationship types
Relationship types are a semantic representation of relationships in the graph. Every relationship must have one and only type, and 2 nodes can be linked by several relationship types. Relationship types are used during complex traversals across the graph, when only certain kinds of paths from node to node are necessary for a specific query.