rake_helper.rb revision 8bd94b280f010b03b81073252c647910aec9b321
bc9e15ca07956db262187916be61f3567167e1c6Eugen Kuksamodule RakeHelper
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa module LogicGraph
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa def self.import(email = nil)
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa user = User.find_all_by_admin(true).first
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa user = User.find_by_email! email unless email.nil?
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa Dir.mktmpdir do |dir|
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa Dir.chdir(dir) do
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa system("#{Settings.hets.executable_path} -G")
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa LogicgraphParser.parse(File.open(File.join(dir, 'LogicGraph.xml')),
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa logic: Proc.new{ |h| save(user, h) },
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa language: Proc.new{ |h| save(user, h) },
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa logic_mapping: Proc.new{ |h| save(user, h) },
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa support: Proc.new{ |h| save(user, h) })
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa protected
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa def self.save(user, symbol)
bc9e15ca07956db262187916be61f3567167e1c6Eugen Kuksa symbol.user = user if symbol.has_attribute? "user_id"
bc9e15ca07956db262187916be61f3567167e1c6Eugen Kuksa begin
bc9e15ca07956db262187916be61f3567167e1c6Eugen Kuksa symbol.save!
bc9e15ca07956db262187916be61f3567167e1c6Eugen Kuksa rescue ActiveRecord::RecordInvalid => e
bc9e15ca07956db262187916be61f3567167e1c6Eugen Kuksa puts "Validation-Error: #{e.record} (#{e.message})"
bc9e15ca07956db262187916be61f3567167e1c6Eugen Kuksa end
bc9e15ca07956db262187916be61f3567167e1c6Eugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa module Generate
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa def self.categories
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa ontology = meta_repository.ontologies.
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa where("name ilike '%Domain Fields Core'").first
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa if ontology
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa ontology.create_categories
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa else
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa ontology = download_from_ontohub_meta(
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa 'Domain_Fields_Core.owl', 'categories.owl')
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa ontology.create_categories
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa def self.proof_statuses
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa meta_repository
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa download_from_ontohub_meta('proof_statuses.owl', 'proof_statuses.owl')
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa ProofStatus.refresh_statuses
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa def self.owl_ontology_class_hierarchies
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa # clean up
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa SymbolGroup.destroy_all
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa # generating new
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa logics = Logic.where(name: ["OWL2", "OWL"])
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa ontologies = Ontology.where(logic_id: logics)
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa ontologies.each do |ontology|
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa begin
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa TarjanTree.for(ontology)
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa rescue ActiveRecord::RecordNotFound => e
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa puts "Could not create symbol tree for: #{ontology.name} (#{ontology.id}) caused #{e}"
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa def self.class_hierachy_for_specific_ontology
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa ontology = Ontology.find!(args.ontology_id)
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa #cleaning up to prevent duplicated symbol_groups
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa ontology.symbol_groups.destroy_all
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa #generating new
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa begin
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa TarjanTree.for(ontology)
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa rescue ActiveRecord::RecordNotFound => e
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa puts "Could not create entity tree for: #{ontology.name} (#{ontology.id}) caused #{e}"
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa def self.metadata
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa Settings.formality_levels.each { |t| update_or_create_by_name(FormalityLevel, t.to_h) }
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa Settings.license_models.each { |t| update_or_create_by_name(LicenseModel, t.to_h) }
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa Settings.ontology_types.each { |t| update_or_create_by_name(OntologyType, t.to_h) }
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa Settings.tasks.each { |t| update_or_create_by_name(Task, t.to_h) }
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa protected
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa def self.update_or_create_by_name(klass, h)
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa x = klass.find_by_name(h[:name])
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa if x.nil?
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa x = klass.create!(h)
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa else
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa x.update_attributes!(h)
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa x
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
bc9e15ca07956db262187916be61f3567167e1c6Eugen Kuksa
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa def self.meta_repository
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa Repository.where(name: 'meta').
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa first_or_create!(description: 'Meta ontologies for Ontohub')
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
bc9e15ca07956db262187916be61f3567167e1c6Eugen Kuksa
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa def self.download_from_ontohub_meta(source_file, target_file)
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa meta_repository
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa user = User.where(admin: true).first
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa filepath = "#{Rails.root}/spec/fixtures/seeds/#{target_file}"
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa basename = File.basename(filepath)
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa if ENV['DOWNLOAD_FIXTURES']
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa source_url =
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa "https://ontohub.org/repositories/meta/master/download/#{source_file}"
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa temp_file = Tempfile.new([target_file, File.extname(target_file)]).path
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa if system("wget -O #{temp_file} #{source_url}")
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa filepath = temp_file
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa else
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa puts 'No connection to ontohub.org. Using local file for the current task.'
bc9e15ca07956db262187916be61f3567167e1c6Eugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa end
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa version = meta_repository.
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa save_file(filepath, basename, "Add #{basename}.", user, do_not_parse: true)
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa version.parse
994db9f9453a462e4235246a79f9a7fd2769a93fEugen Kuksa version.ontology
bc9e15ca07956db262187916be61f3567167e1c6Eugen Kuksa end
bc9e15ca07956db262187916be61f3567167e1c6Eugen Kuksa end
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa module Hets
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa def self.recreate_instances
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa HetsInstance.all.each(&:destroy)
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa create_instances
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa end
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa def self.create_instances
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa Settings.hets.instance_urls.each do |hets_url|
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa uri = URI(hets_url)
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa name = uri.host
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa name += ":#{uri.port}" if uri.port
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa HetsInstance.create(name: name, uri: uri.to_s, state: 'free', queue_size: 0)
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa end
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa end
8bd94b280f010b03b81073252c647910aec9b321Eugen Kuksa end
bc9e15ca07956db262187916be61f3567167e1c6Eugen Kuksaend