node_evaluator.rb revision a686bfa88234792b2dd2515da6a60aa110380916
bcb4e51a409d94ae670de96afb8483a4f7855294Stephan Boschmodule Hets
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen class NodeEvaluator < BaseNodeEvaluator
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen include NodeEvaluationHelper
b9f564d00b7a115f465ffd6840341c7b8f9bfc8aTimo Sirainen
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen attr_accessor :current_element
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen attr_accessor :internal_iri
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
436adac819e7cbeef04af08dcc6a4f3ecd4a1d9eMartti Rannanjärvi register :all, :end, to: :all_end
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen register :root, :start, to: :dgraph
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen register :ontology, :start, to: :ontology_start
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen register :ontology, :end, to: :ontology_end
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen register :import, :start, to: :import
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen register :symbol, :end, to: :symbol
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen register :axiom, :end, to: :axiom
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen register :imported_axiom, :end, to: :imported_axiom
19b9d763d1728ef5a1937087ee7220a1c94b7db0Timo Sirainen register :link, :end, to: :link
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen def dgraph(current_element)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen hets_evaluator.dgnode_count = current_element['dgnodes'].to_i
19b9d763d1728ef5a1937087ee7220a1c94b7db0Timo Sirainen end
19b9d763d1728ef5a1937087ee7220a1c94b7db0Timo Sirainen
19b9d763d1728ef5a1937087ee7220a1c94b7db0Timo Sirainen def all_end
19b9d763d1728ef5a1937087ee7220a1c94b7db0Timo Sirainen hets_evaluator.versions.compact.each do |version|
19b9d763d1728ef5a1937087ee7220a1c94b7db0Timo Sirainen version.save!
19b9d763d1728ef5a1937087ee7220a1c94b7db0Timo Sirainen version.ontology.update_version!(to: version)
19b9d763d1728ef5a1937087ee7220a1c94b7db0Timo Sirainen end
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen hets_evaluator.ontologies.each(&:create_translated_sentences)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen end
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen
4ca83616715c3bd417e34ced2c1d61852513e427Timo Sirainen def ontology_start(current_element)
c2d2161296e2361f97ee48b70b168602157069e6Timo Sirainen self.internal_iri = child_name = current_element['name']
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen ontohub_iri = generate_ontology_iri(internal_iri, current_element)
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen initiate_concurrency_handling(ontohub_iri)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen self.ontology = procure_ontology(current_element, internal_iri)
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen ontology.name = ontology.generate_name(current_element['name'])
6f0ce13784826b803cfcda771f07dc4813dc94b2Timo Sirainen
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen assign_language(ontology, current_element)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen assign_logic(ontology, current_element)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen
44fb32493e2a989358283426a6054662cafcc56bTimo Sirainen ontology.save!
44fb32493e2a989358283426a6054662cafcc56bTimo Sirainen
44fb32493e2a989358283426a6054662cafcc56bTimo Sirainen altIri = ontology.alternative_iris.where(iri: internal_iri).
44fb32493e2a989358283426a6054662cafcc56bTimo Sirainen first_or_create(ontology: ontology)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen self.logic_callback = ParsingCallback.determine_for(ontology)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen
6f0ce13784826b803cfcda771f07dc4813dc94b2Timo Sirainen logic_callback.ontology(current_element, ontology)
6f0ce13784826b803cfcda771f07dc4813dc94b2Timo Sirainen end
6f0ce13784826b803cfcda771f07dc4813dc94b2Timo Sirainen
6f0ce13784826b803cfcda771f07dc4813dc94b2Timo Sirainen def ontology_end(*ignore_args)
6f0ce13784826b803cfcda771f07dc4813dc94b2Timo Sirainen logic_callback.ontology_end({}, ontology)
6f0ce13784826b803cfcda771f07dc4813dc94b2Timo Sirainen
aa01480188ab99f2b37abea08898d5bacd4e0848Timo Sirainen ontology.current_version.state = 'done' if ontology.parent
44fb32493e2a989358283426a6054662cafcc56bTimo Sirainen ontology.save!
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen
44fb32493e2a989358283426a6054662cafcc56bTimo Sirainen finish_concurrency_handling
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen end
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen def symbol(current_element)
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen if logic_callback.pre_symbol(current_element)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen entity = ontology.entities.update_or_create_from_hash(current_element, hets_evaluator.now)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen ontology.entities_count += 1
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen logic_callback.symbol(current_element, entity)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen end
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen end
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen def axiom(current_element)
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen if logic_callback.pre_axiom(current_element)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen sentence = ontology.sentences.update_or_create_from_hash(current_element, hets_evaluator.now)
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen ontology.sentences_count += 1
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen logic_callback.axiom(current_element, sentence)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen end
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen end
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen def imported_axiom(current_element)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen if logic_callback.pre_axiom(current_element)
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen current_element['imported'] = true
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen sentence = ontology.sentences.update_or_create_from_hash(current_element, hets_evaluator.now)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen ontology.sentences_count += 1
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen logic_callback.axiom(current_element, sentence)
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen end
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen end
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen def link(current_element)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen if logic_callback.pre_link(current_element)
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen alias_iris_for_links!(current_element)
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen link = parent_ontology.links.update_or_create_from_hash(current_element, user, hets_evaluator.now)
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen logic_callback.link(current_element, link)
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen end
213a25b3a96d49c09df50248fd8d71d6faa6c9b8Timo Sirainen end
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen def import(current_element)
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen location = current_element['location']
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen source_iri = location ? location : internal_iri
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen begin
d22301419109ed4a38351715e6760011421dadecTimo Sirainen commit_oid = ExternalRepository.add_to_repository(
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen internal_iri,
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen "add reference #{Settings.OMS}: #{internal_iri} from #{source_iri}",
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen user, location: source_iri)
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen version = ontology.versions.build
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen version.user = user
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen version.do_not_parse!
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen version.commit_oid = commit_oid
f605df8a4c15cc7a11e16fdde994d51473700890Timo Sirainen version.state = 'done'
f605df8a4c15cc7a11e16fdde994d51473700890Timo Sirainen version.basepath = ontology.basepath
f605df8a4c15cc7a11e16fdde994d51473700890Timo Sirainen version.file_extension = ontology.file_extension
f605df8a4c15cc7a11e16fdde994d51473700890Timo Sirainen hets_evaluator.versions << version
f605df8a4c15cc7a11e16fdde994d51473700890Timo Sirainen rescue
f605df8a4c15cc7a11e16fdde994d51473700890Timo Sirainen ontology.present = false
f605df8a4c15cc7a11e16fdde994d51473700890Timo Sirainen end
f605df8a4c15cc7a11e16fdde994d51473700890Timo Sirainen end
d4002fe1f64d25a792f76fb102ef7dc519cd4e24Martti Rannanjärvi
d4002fe1f64d25a792f76fb102ef7dc519cd4e24Martti Rannanjärvi end
badb675af0ee245ffff36e5809ecc4e9526403d5Timo Sirainenend
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen