BestPractices
BestPractices

Reputation: 12876

How can you define and enforce a Neo4J graph's schema?

I want to achieve, with a Neo4j graph a RDBMS's ability to define and enforce a known schema. We know what our graph should look like (all the edge types and node types). So we simply want to prevent someone (developer/user) from adding an edge or node type which is "invalid" i.e. not part of the defined graph schema. How can we enforce a graphs schema? Note I am not asking about how to enforce the properties of an edge or a graph but simply how to enforce that the graph is made up if a specific set of known edge and node types. Please help

Upvotes: 2

Views: 954

Answers (3)

James Fleming
James Fleming

Reputation: 81

It has to happen in a layer above Neo4j. I've been building one of those layers (Restagraph), which puts a REST interface on top of it.

It's a mite less mature than Structr, but may be worth a look. I package it in a Docker image, and it's designed so you can easily define your own schema in YAML files.

Upvotes: 0

Axel Morgner
Axel Morgner

Reputation: 2312

Most of the language drivers or frameworks listed here provide means to define a schema:

http://www.neo4j.org/drivers

For Java we developed structr (https://github.com/structr/structr) where you define your schema in Java beans. You could start f.e. with the simple Maven archetype as shown in this screencast: http://vimeo.com/53235075

Cheers Axel

Upvotes: 3

Eve Freeman
Eve Freeman

Reputation: 33155

This should probably be done on the application side. Build a wrapper/API that enforces this sort of thing, and make the developers use it. Sorry for the short answer...

Upvotes: 3

Related Questions