How to represent recursive relationships in a graph database

cypherdatabase-designgraphneo4j

I am designing a database schema diagram for a Neo4j database. This is what I have so far:

schema

This is the cypher code:

CREATE 
  (`0` :Person {FirstName:'string',LastName:'string',DOB:'long'}) ,
  (`1` :Address ) ,
  (`2` :`Phone Number` {Number:'string'}) ,
  (`3` :Record {Description:'string',Date:'long'}) ,
  (`5` :Association {Type:'string',Name:'string',`Nature Of`:'string'}) ,
  (`0`)-[:``Lived At`` {StartDate:'long',EndDate:'long'}]->(`1`),
  (`0`)-[:`Has` {StartDate:'long'}]->(`2`),
  (`0`)-[:`Had` {StartDate:'long',EndDate:'long'}]->(`2`),
  (`3`)-[:`References` ]->(`1`),
  (`3`)-[:`References` ]->(`0`),
  (`3`)-[:`References` ]->(`2`),
  (`0`)-[:`Has` {StartDate:'long'}]->(`5`),
  (`0`)-[:``Found At`` {Date:'long'}]->(`1`),
  (`0`)-[:``Lives At`` {Date:'long'}]->(`1`),
  (`0`)-[:`Had` {StartDate:'long',EndDate:'long'}]->(`5`),
  (`3`)-[:`References` ]->(`5`)

One of the domain requirements is that a person can be related to a person. How do I represent this relationship in my database diagram?

Best Answer