has_Node (and its subproperties, has_Parent_Node and has_Child_Node) are designed for representing the relationship between an edge and a node. This may be a little confusing with has_Parent and has_Child, which represents the relationship between two nodes in a phylogeny. It might be useful to rename has_Node/has_Parent_Node/has_Child_Node to something that make it clearer that they relate to edges, and are not intended to create sets of things like the similarly named has_Element -- for example, users might expect SetOfNodes to be defined by has_Node rather than has_Element.
has_Node(and its subproperties,has_Parent_Nodeandhas_Child_Node) are designed for representing the relationship between an edge and a node. This may be a little confusing withhas_Parentandhas_Child, which represents the relationship between two nodes in a phylogeny. It might be useful to renamehas_Node/has_Parent_Node/has_Child_Nodeto something that make it clearer that they relate to edges, and are not intended to create sets of things like the similarly namedhas_Element-- for example, users might expectSetOfNodesto be defined byhas_Noderather thanhas_Element.