@@ -108,32 +108,32 @@ async def load_graph(self, filter_query="*"):
108108 return KnowledgeGraph (entities = entities , relations = relations )
109109
110110 async def create_entities (self , entities : List [Entity ]) -> List [Entity ]:
111- query = """
112- UNWIND $entities as entity
113- MERGE (e:Memory { name: entity.name })
114- SET e += entity {.type, .observations}
115- SET e:$( entity.type)
116- """
117-
118- entities_data = [ entity . model_dump () for entity in entities ]
119- self . neo4j_driver . execute_query ( query , { "entities" : entities_data })
111+ for entity in entities :
112+ query = f"""
113+ WITH $ entity as entity
114+ MERGE (e:Memory {{ name: entity.name }})
115+ SET e += entity {{ .type, .observations }}
116+ SET e: { entity . type }
117+ """
118+ self . neo4j_driver . execute_query ( query , { " entity" : entity . model_dump ()})
119+
120120 return entities
121121
122122 async def create_relations (self , relations : List [Relation ]) -> List [Relation ]:
123123 for relation in relations :
124- query = """
125- UNWIND $relations as relation
124+ query = f """
125+ WITH $relation as relation
126126 MATCH (from:Memory),(to:Memory)
127127 WHERE from.name = relation.source
128128 AND to.name = relation.target
129- MERGE (from)-[r:$( relation.relationType) ]->(to)
129+ MERGE (from)-[r:{ relation .relationType } ]->(to)
130130 """
131131
132132 self .neo4j_driver .execute_query (
133133 query ,
134- {"relations " : [ relation .model_dump () for relation in relations ] }
134+ {"relation " : relation .model_dump ()}
135135 )
136-
136+
137137 return relations
138138
139139 async def add_observations (self , observations : List [ObservationAddition ]) -> List [Dict [str , Any ]]:
@@ -176,17 +176,18 @@ async def delete_observations(self, deletions: List[ObservationDeletion]) -> Non
176176 )
177177
178178 async def delete_relations (self , relations : List [Relation ]) -> None :
179- query = """
180- UNWIND $relations as relation
181- MATCH (source:Memory)-[r:$(relation.relationType)]->(target:Memory)
182- WHERE source.name = relation.source
183- AND target.name = relation.target
184- DELETE r
185- """
186- self .neo4j_driver .execute_query (
187- query ,
188- {"relations" : [relation .model_dump () for relation in relations ]}
189- )
179+ for relation in relations :
180+ query = f"""
181+ WITH $relation as relation
182+ MATCH (source:Memory)-[r:{ relation .relationType } ]->(target:Memory)
183+ WHERE source.name = relation.source
184+ AND target.name = relation.target
185+ DELETE r
186+ """
187+ self .neo4j_driver .execute_query (
188+ query ,
189+ {"relation" : relation .model_dump ()}
190+ )
190191
191192 async def read_graph (self ) -> KnowledgeGraph :
192193 return await self .load_graph ()
0 commit comments