Provides a way to create, remove and look for nodes and relationships using the cypher query language.
A node is created using an {@link EntityKey}. A node is labeled with {@link NodeLabel#ENTITY} and with the valuereturned by {@link EntityKey#getTable()}. The properties names and values of the node are the corresponding values of {@link EntityKey#getColumnNames()} and {@link EntityKey#getColumnValues()}
A relationship is created using an {@link AssociationKey} and a {@link RowKey}. The type of a new relationship is the value returned by {@link AssociationKey#getCollectionRole()}. The names and values of the properties of the relationship are the corresponding {@link RowKey#getColumnNames()} and {@link RowKey#getColumnValues()}.
This class must be thread-safe since it's used by the dialect as a reference.
@author Davide D'Alto