Allowing parallel edges in graph projection when using graph completion search (#599)

<!-- .github/pull_request_template.md -->

## Description
Allows parallell edges in graph projection when using graph completion
search

## DCO Affirmation
I affirm that all code in every commit of this pull request conforms to
the terms of the Topoteretes Developer Certificate of Origin


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Refactor**
- Streamlined the process for updating connections within the
application’s graph. The update now ensures that every connection is
consistently recorded and propagated without performing duplicate
checks.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
hajdul88 2025-03-04 12:37:26 +01:00 committed by GitHub
parent e3f3d49a3b
commit 5eef212668
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 13 deletions

View file

@ -35,12 +35,9 @@ class CogneeGraph(CogneeAbstractGraph):
raise EntityAlreadyExistsError(message=f"Node with id {node.id} already exists.") raise EntityAlreadyExistsError(message=f"Node with id {node.id} already exists.")
def add_edge(self, edge: Edge) -> None: def add_edge(self, edge: Edge) -> None:
if edge not in self.edges: self.edges.append(edge)
self.edges.append(edge) edge.node1.add_skeleton_edge(edge)
edge.node1.add_skeleton_edge(edge) edge.node2.add_skeleton_edge(edge)
edge.node2.add_skeleton_edge(edge)
else:
logger.debug(f"Edge {edge} already exists in the graph.")
def get_node(self, node_id: str) -> Node: def get_node(self, node_id: str) -> Node:
return self.nodes.get(node_id, None) return self.nodes.get(node_id, None)

View file

@ -41,13 +41,12 @@ class Node:
self.skeleton_neighbours.remove(neighbor) self.skeleton_neighbours.remove(neighbor)
def add_skeleton_edge(self, edge: "Edge") -> None: def add_skeleton_edge(self, edge: "Edge") -> None:
if edge not in self.skeleton_edges: self.skeleton_edges.append(edge)
self.skeleton_edges.append(edge) # Add neighbor
# Add neighbor if edge.node1 == self:
if edge.node1 == self: self.add_skeleton_neighbor(edge.node2)
self.add_skeleton_neighbor(edge.node2) elif edge.node2 == self:
elif edge.node2 == self: self.add_skeleton_neighbor(edge.node1)
self.add_skeleton_neighbor(edge.node1)
def remove_skeleton_edge(self, edge: "Edge") -> None: def remove_skeleton_edge(self, edge: "Edge") -> None:
if edge in self.skeleton_edges: if edge in self.skeleton_edges: