SpaceObjectGraph

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:

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:

Ometeotl

A Python library to build complex multi-agent simulations, wargames, and AI-driven strategies