Graph.fetch()#
relationalai.std.graphs
#Graph.fetch() -> dict
Returns a dictionary with two keys, "nodes"
and "edges"
, containing the graph’s data.
.fetch()
is a blocking operation that queries the model and returns the data locally.
It may be slow and consume a lot of memory for large graphs.
Use .fetch()
to pass graph data to external libraries, such as alternative visualization tools.
Returns#
A dict
object.
Example#
#from pprint import pprint
import relationalai as rai
from relationalai.std.graphs import Graph
# Create a model with a 'Person' type.
model = rai.Model("socialNetwork")
Person = model.Type("Person")
# Add people to the model connected by a multi-valued 'follows' property.
with model.rule():
alice = Person.add(name="Alice")
bob = Person.add(name="Bob")
alice.follows.add(bob)
# Create a directed graph with 'Person' nodes and 'follows' edges.
graph = Graph(model)
graph.Node.extend(Person, label=Person.name)
graph.Edge.extend(Person.follows, label="follows")
# Fetch the graph.
# NOTE: Fetching the graph queries the model and returns the data locally.
# If the graph is large, fetching it may be slow and consume a lot of memory.
pprint(graph.fetch())
# Output:
# {'edges': defaultdict(<class 'dict'>,
# {('+0JKlsJxRGKBYFiMq/o/Sg', 'ru89MBnrLAPLQFVtoYdnfQ'): {'label': 'follows'}}),
# 'nodes': defaultdict(<class 'dict'>,
# {'+0JKlsJxRGKBYFiMq/o/Sg': {'label': 'Alice'},
# 'ru89MBnrLAPLQFVtoYdnfQ': {'label': 'Bob'}})}