symbols.rb revision 00c175adc24043fbcd4cd5e3769c9d13e31ff831
e59e09b5010f262228bbdeb92a79b733bf5854b3Stephen Gallagher def update_or_create_from_hash(hash, timestamp = Time.now)
b355dcb54194f498921743ca33304eac35d89718Stephen Gallagher raise ArgumentError, 'No hash given.' unless hash.is_a? Hash
52261fe16203dec6e6f69177c6d0a810b47d073fStephen Gallagher e = where(text: hash['text']).first_or_initialize
52261fe16203dec6e6f69177c6d0a810b47d073fStephen Gallagher "Using work-around to determine symbol name and kind: #{e.inspect}")
52261fe16203dec6e6f69177c6d0a810b47d073fStephen Gallagher if e2 = Symbol.where(text: hash['text']).first
52261fe16203dec6e6f69177c6d0a810b47d073fStephen Gallagher # remove path from range
52261fe16203dec6e6f69177c6d0a810b47d073fStephen Gallagher EEdge.where(key => symbols.where(kind: 'Class')).delete_all
52261fe16203dec6e6f69177c6d0a810b47d073fStephen Gallagher raise StandardError.new('Ontology is not OWL') unless owl?
52261fe16203dec6e6f69177c6d0a810b47d073fStephen Gallagher # Delete previous set of categories
52261fe16203dec6e6f69177c6d0a810b47d073fStephen Gallagher sentences.where("text LIKE '%SubClassOf%'").select do |sentence|
2ea6196484055397cc4bc011c5960f790431fa9dStephen Gallagher child_id = symbols.where('name = ? OR iri = ?', c1, c1).first.id
52261fe16203dec6e6f69177c6d0a810b47d073fStephen Gallagher parent_id = symbols.where('name = ? OR iri = ?', c2, c2).first.id
52261fe16203dec6e6f69177c6d0a810b47d073fStephen Gallagher EEdge.create! child_id: child_id, parent_id: parent_id
52261fe16203dec6e6f69177c6d0a810b47d073fStephen Gallagher if EEdge.where(child_id: child_id, parent_id: parent_id).first.nil?
52261fe16203dec6e6f69177c6d0a810b47d073fStephen Gallagher raise StandardError.new('Circle detected')