This is a design question and need a guideline for performance and maintenance considerations.
Is it advisable for a label indicate relationship with other node/label?
Approach-1:
create (n:Actor:Director {name:'Clint Eastwood'})
create (n:Movie {name:'Gran Torino'})
MATCH (a:Actor {name:'Clint Eastwood'}), (m:Movie {name:'Gran Torino'})
CREATE (a)-[:ACTED_IN]->(m)
In this case, Actor / Director is really a relationship of a person to a Movie node. So should it just be created as a Person node with two relationships with a movie node if the person is both actor and director in a movie?
Approach-2:
create (n:Person {name:'Clint Eastwood'})
create (n:Movie {name:'Gran Torino'})
MATCH (p:Person {name:'Clint Eastwood'}), (m:Movie {name:'Gran Torino'})
CREATE (p)-[:ACTOR]->(m)
MATCH (p:Person {name:'Clint Eastwood'}), (m:Movie {name:'Gran Torino'})
CREATE (p)-[:DIRECTOR]->(m)
Approach-2 seems better engineering wise, however the Neo4J example documentation also referes to Approach-1 (ref: https://neo4j.com/developer/kb/how-do-i-report-on-nodes-with-multiple-labels/)
So which one is cleaner, better, and more efficient in the long run?