Edge Models that have a type.
This is an abstract class representing an edge of a graph. Thus, it holds two Node_Models: a start and an end node. This edge also has a specific type.
This is an abstract class representing a node of a graph. It stores the incoming and outgoing edges of a node. It also has a list of all its children. This node has also a specific type.