""" Part of the BlackStar filesystem (bsfs) module. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ # imports import typing # bsfs imports from bsfs.schema import Schema from bsfs.triple_store import TripleStoreBase from bsfs.utils import URI, typename # inner-module imports from . import nodes as _nodes # exports __all__: typing.Sequence[str] = ( 'Graph', ) ## code ## class Graph(): """ """ # link to the triple storage backend. __backend: TripleStoreBase # user uri. __user: URI def __init__(self, backend: TripleStoreBase, user: URI): self.__backend = backend self.__user = user def __hash__(self) -> int: return hash((type(self), self.__backend, self.__user)) def __eq__(self, other) -> bool: return isinstance(other, type(self)) \ and self.__backend == other.__backend \ and self.__user == other.__user def __repr__(self) -> str: return f'{typename(self)}(backend={repr(self.__backend)}, user={self.__user})' def __str__(self) -> str: return f'{typename(self)}({str(self.__backend)}, {self.__user})' @property def schema(self) -> Schema: """Return the store's local schema.""" return self.__backend.schema """ def nodes(self, node_type: URI, guids: typing.Iterable[URI]) -> _nodes.Nodes: """ node_type = self.schema.node(node_type) # NOTE: Nodes constructor materializes guids. return _nodes.Nodes(self._backend, self._user, type_, guids) ## EOF ##