Class: Llmemory::LongTerm::GraphBased::ConflictResolver
- Inherits:
-
Object
- Object
- Llmemory::LongTerm::GraphBased::ConflictResolver
- Defined in:
- lib/llmemory/long_term/graph_based/conflict_resolver.rb
Constant Summary collapse
- EXCLUSIVE_PREDICATES =
%w[works_at lives_in current_job current_city employer residence].freeze
Instance Method Summary collapse
- #exclusive_predicate?(predicate) ⇒ Boolean
-
#initialize(knowledge_graph) ⇒ ConflictResolver
constructor
A new instance of ConflictResolver.
- #resolve(new_edge) ⇒ Object
Constructor Details
#initialize(knowledge_graph) ⇒ ConflictResolver
Returns a new instance of ConflictResolver.
11 12 13 |
# File 'lib/llmemory/long_term/graph_based/conflict_resolver.rb', line 11 def initialize(knowledge_graph) @graph = knowledge_graph end |
Instance Method Details
#exclusive_predicate?(predicate) ⇒ Boolean
27 28 29 |
# File 'lib/llmemory/long_term/graph_based/conflict_resolver.rb', line 27 def exclusive_predicate?(predicate) EXCLUSIVE_PREDICATES.include?(predicate.to_s.downcase) end |
#resolve(new_edge) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/llmemory/long_term/graph_based/conflict_resolver.rb', line 15 def resolve(new_edge) return [] unless exclusive_predicate?(new_edge.predicate) subject_id = new_edge.subject_id existing = @graph.find_edges(subject: subject_id, predicate: new_edge.predicate, include_archived: false) to_archive = existing.reject { |e| e.target_id == new_edge.target_id } to_archive.each do |e| @graph.archive_edge(e.id, reason: "replaced by #{new_edge.target_id}") end to_archive.map(&:id) end |