I guess this depends on exactly what you mean by 'dynamic'. With regards to 'managing' inheritance of properties from one node to another, one strategy would be to deal with this as part of your query / traversal gathering the data as you traversed 'up' your hierarchy, where, if a property was not there, you obtain it from the parent otherwise use the one which exists.
If you are thinking of a 'hierarchy' in terms of a Java class hierarchy, for example you have a Person class which has Customer and User as subclasses, this does not generally translate into two distinct nodes within the graph. If you wanted to store the details for the instance 'Bob' as a 'Customer', you would typically only have one node with all the properties (related to both Person and Customer) in this single node. You may well have two Neo4j labels associated with this one 'Bob' node, (a 'Person' and 'Customer' label). This is one of the strategies employed by Spring Data Neo4j (SDN) in terms of representing a Java based hierarchy in Neo4j.
For more info on this you can see the SDN website here: http://docs.spring.io/spring-data/data-neo4j/docs/3.2.1.RELEASE/reference/html/, specifically the section on "Entity Type Representation".
Hope this helps
I'm gonna teach you a lesson! Start by looking at this tiny ad:
Devious Experiments for a Truly Passive Greenhouse!