@@ -108,32 +108,32 @@ async def load_graph(self, filter_query="*"):
108
108
return KnowledgeGraph (entities = entities , relations = relations )
109
109
110
110
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
+
120
120
return entities
121
121
122
122
async def create_relations (self , relations : List [Relation ]) -> List [Relation ]:
123
123
for relation in relations :
124
- query = """
125
- UNWIND $relations as relation
124
+ query = f """
125
+ WITH $relation as relation
126
126
MATCH (from:Memory),(to:Memory)
127
127
WHERE from.name = relation.source
128
128
AND to.name = relation.target
129
- MERGE (from)-[r:$( relation.relationType) ]->(to)
129
+ MERGE (from)-[r:{ relation .relationType } ]->(to)
130
130
"""
131
131
132
132
self .neo4j_driver .execute_query (
133
133
query ,
134
- {"relations " : [ relation .model_dump () for relation in relations ] }
134
+ {"relation " : relation .model_dump ()}
135
135
)
136
-
136
+
137
137
return relations
138
138
139
139
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
176
176
)
177
177
178
178
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
+ )
190
191
191
192
async def read_graph (self ) -> KnowledgeGraph :
192
193
return await self .load_graph ()
0 commit comments