catopt-graph-graph-calculus.../core/ontology.py

32 lines
571 B
Python

from __future__ import annotations
from dataclasses import dataclass
from typing import Any, Callable, Optional
@dataclass
class Object:
id: str
model: dict
@dataclass
class Morphism:
id: str
source: str # Object.id
target: str # Object.id
contract_name: str
contract_version: str
payload: dict
@dataclass
class Functor:
id: str
name: str
transform: Optional[Callable[[dict], dict]] = None
def apply(self, data: dict) -> dict:
if self.transform:
return self.transform(data)
return data