- Source: GL_Group (subgroup), GL_GroupRole
- Destination: GL_Group
The traversable GL_MemberOf edge has two distinct uses in the graph:
1. Subgroup hierarchy — A GL_Group subgroup node has a GL_MemberOf edge to its parent GL_Group. This records the group namespace hierarchy and is used to navigate the group tree. Combined with GL_InheritRole, it enables reasoning about inherited access: a user with Owner in myorg has Owner in myorg/frontend by inheritance.
2. Role-to-group binding — Each GL_GroupRole node has a GL_MemberOf edge to its associated GL_Group. This connects the role nodes to their owning group, which is essential for traversal queries that need to identify which users have a given role in a group.
graph LR
parent("fa:fa-user-group GL_Group myorg")
sub("fa:fa-user-group GL_Group myorg/frontend")
role("fa:fa-user-tie GL_GroupRole myorg/Owner")
user("fa:fa-user GL_User alice")
sub -->|GL_MemberOf| parent
role -->|GL_MemberOf| parent
user -->|GL_HasRole| role