For me atm, a Node is a parent, if a hierarchical reference exist, especially if it is a subtype of HasChild, like "HasComponent".
In a normal case, a Node has one parent (if there is a hierarichal reference).Now to my understanding problem:
A machine "Mill" has a FunctionalGroupType, example "FG01_A" witch contains a component "FG01_Vessel".
Also DI is supported, so "Mill" has a "Components" Object, where "FG01_Vessel" exist as well.
"FG01_Vessel" now has two "ComponentOf" references. To "FG01_A" and "Components".
Are both nodes a parent now?
Is there an intended way to identify the parent/s from the "ChildNodes" point of view?
Or is it a special case (and are there even more)?
Would a method like "node.get_parent()" have to return both nodes in such a case?
UA is a full mesh network of nodes which means many of the assumptions from tree networks do not apply.
A Node can have many parents.
You cannot determine which one is the primary parent by following references.
That said, if the reference types are different the semantics are different.
i.e. a Node that is the target of HasComponent and Organizes references is tightly bound to the HasComponent source so you could call that the "parent". However, there could be more that one HasComponent reference.
If a reference/browsename specified in the type definition then that the parent from the type definition could be the "parent" but child nodes can be shared across multiple instances of a type definition which means multiple parents.