Source:
Local role: Graph holding spaces and object memberships.
Big-picture role: Deterministic topology service used by World and Sensor.
Inheritance:
- dataclass
Parameters and fields:
- spaces: Dict[ObjectId, Space]
- object_memberships: List[SpaceObjectMembership]
_membership_keys: set[...]
Methods:
- mutation:
add_space,add_object_membership,remove_object_membership - queries:
get_space,spaces_where_object_exists,shared_spaces_ids_for_objects,list_objects_in_space - serialization:
to_dict,from_dict
Example:
from ometeotl_core.model.spaces import SpaceObjectGraph, SpaceObjectMembership
graph = SpaceObjectGraph()
graph.add_space(space)
graph.add_object_membership(SpaceObjectMembership(
object_id="actor-1", space_id="zone-1", role="occupies"
))
graph.add_object_membership(SpaceObjectMembership(
object_id="resource-1", space_id="zone-1", role="stored_in"
))
objects = graph.list_objects_in_space("zone-1")
actor_spaces = graph.spaces_where_object_exists("actor-1")
shared = graph.shared_spaces_ids_for_objects(["actor-1", "resource-1"])
See also:
