Source code for graphrag_sdk.schema.from_graph

from falkordb import Graph
from .entity import Entity
from .relation import Relation

import builtins

# Create a schema from an ontology graph
[docs] def schema_from_graph(s, g:Graph): # Validate arguments if not isinstance(g, Graph): raise Exception("Invalid argument, g is expected to be a Graph") # Fetch entities q = "MATCH (n) RETURN n" res = g.query(q).result_set for row in res: n = row[0] name = n.labels[0] e = s.add_entity(name) for prop in n.properties: name = prop prop = n.properties[prop] type = getattr(builtins, prop[0]) desc = prop[1] unique = prop[2] mandatory = prop[3] e.add_attribute(name, type, desc, unique, mandatory) # Fetch relations q = "MATCH (src)-[e]->(dest) RETURN src, e, dest" res = g.query(q).result_set for row in res: src = row[0].labels[0] r = row[1].relation dest = row[2].labels[0] src = s.get_entity(src) dest = s.get_entity(dest) s.add_relation(r, src, dest) # Make sure schema is valid s.validate()