Skip to content

Commit

Permalink
extract submission generate_rdf step to a file
Browse files Browse the repository at this point in the history
  • Loading branch information
syphax-bouazzouni committed Apr 20, 2024
1 parent 163f06a commit d773760
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 57 deletions.
67 changes: 10 additions & 57 deletions lib/ontologies_linked_data/models/ontology_submission.rb
Original file line number Diff line number Diff line change
Expand Up @@ -607,46 +607,6 @@ def generate_umls_metrics_file(tr_file_path = nil)
self.generate_metrics_file(class_count, indiv_count, prop_count)
end

def generate_rdf(logger, reasoning: true)
mime_type = nil

if self.hasOntologyLanguage.umls?
triples_file_path = self.triples_file_path
logger.info("Using UMLS turtle file found, skipping OWLAPI parse")
logger.flush
mime_type = LinkedData::MediaTypes.media_type_from_base(LinkedData::MediaTypes::TURTLE)
generate_umls_metrics_file(triples_file_path)
else
output_rdf = self.rdf_path

if File.exist?(output_rdf)
logger.info("deleting old owlapi.xrdf ..")
deleted = FileUtils.rm(output_rdf)

if deleted.length > 0
logger.info("deleted")
else
logger.info("error deleting owlapi.rdf")
end
end
owlapi = owlapi_parser(logger: logger)

owlapi.disable_reasoner if !reasoning
triples_file_path, missing_imports = owlapi.parse

if missing_imports && missing_imports.length > 0
self.missingImports = missing_imports

missing_imports.each do |imp|
logger.info("OWL_IMPORT_MISSING: #{imp}")
end
else
self.missingImports = nil
end
logger.flush
end
delete_and_append(triples_file_path, logger, mime_type)
end

def process_callbacks(logger, callbacks, action_name, &block)
callbacks.delete_if do |_, callback|
Expand Down Expand Up @@ -1544,7 +1504,7 @@ def delete(*args)
self.ontology.bring(:submissions)

if self.ontology.submissions.length > 0
prev_sub = self.ontology.latest_submission()
prev_sub = self.ontology.latest_submission

if prev_sub
prev_sub.index_terms(LinkedData::Parser.logger || Logger.new($stderr))
Expand Down Expand Up @@ -1719,17 +1679,6 @@ def parsable?(logger: Logger.new($stdout))
parsable
end

private

def owlapi_parser_input
path = if zipped?
self.zip_folder
else
self.uploadFilePath
end
File.expand_path(path)
end

def owlapi_parser(logger: Logger.new($stdout))
unzip_submission(logger)
LinkedData::Parser::OWLAPICommand.new(
Expand All @@ -1739,11 +1688,15 @@ def owlapi_parser(logger: Logger.new($stdout))
logger: logger)
end

def delete_and_append(triples_file_path, logger, mime_type = nil)
Goo.sparql_data_client.delete_graph(self.id)
Goo.sparql_data_client.put_triples(self.id, triples_file_path, mime_type)
logger.info("Triples #{triples_file_path} appended in #{self.id.to_ntriples}")
logger.flush
private

def owlapi_parser_input
path = if zipped?
self.zip_folder
else
self.uploadFilePath
end
File.expand_path(path)
end

def check_http_file(url)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
module LinkedData
module Services

class SubmissionRDFGenerator < OntologySubmissionProcess

def process(logger, options)
reasoning = options[:reasoning]

# Remove processing status types before starting RDF parsing etc.
@submission.submissionStatus = nil
status = LinkedData::Models::SubmissionStatus.find('UPLOADED').first
@submission.add_submission_status(status)
@submission.save

# Parse RDF
begin
unless @submission.valid?
error = 'Submission is not valid, it cannot be processed. Check errors.'
raise ArgumentError, error
end
unless @submission.uploadFilePath
error = 'Submission is missing an ontology file, cannot parse.'
raise ArgumentError, error
end
status = LinkedData::Models::SubmissionStatus.find('RDF').first
@submission.remove_submission_status(status) # remove RDF status before starting
generate_rdf(logger, reasoning: reasoning)
@submission.add_submission_status(status)
@submission.save
rescue StandardError => e
logger.error("#{e.class}: #{e.message}\n#{e.backtrace.join("\n\t")}")
logger.flush
@submission.add_submission_status(status.get_error_status)
@submission.save
# If RDF generation fails, no point of continuing
raise e
end
end

private

def generate_rdf(logger, reasoning: true)
mime_type = nil

if @submission.hasOntologyLanguage.umls?
triples_file_path = @submission.triples_file_path
logger.info("Using UMLS turtle file found, skipping OWLAPI parse")
logger.flush
mime_type = LinkedData::MediaTypes.media_type_from_base(LinkedData::MediaTypes::TURTLE)
SubmissionMetricsCalculator.new(@submission).generate_umls_metrics_file(triples_file_path)
else
output_rdf = @submission.rdf_path

if File.exist?(output_rdf)
logger.info("deleting old owlapi.xrdf ..")
deleted = FileUtils.rm(output_rdf)

if !deleted.empty?
logger.info("deleted")
else
logger.info("error deleting owlapi.rdf")
end
end

owlapi = @submission.owlapi_parser(logger: logger)
owlapi.disable_reasoner unless reasoning

triples_file_path, missing_imports = owlapi.parse

if missing_imports && !missing_imports.empty?
@submission.missingImports = missing_imports

missing_imports.each do |imp|
logger.info("OWL_IMPORT_MISSING: #{imp}")
end
else
@submission.missingImports = nil
end
logger.flush
end
delete_and_append(triples_file_path, logger, mime_type)
end

def delete_and_append(triples_file_path, logger, mime_type = nil)
Goo.sparql_data_client.delete_graph(@submission.id)
Goo.sparql_data_client.put_triples(@submission.id, triples_file_path, mime_type)
logger.info("Triples #{triples_file_path} appended in #{@submission.id.to_ntriples}")
logger.flush
end
end
end
end

0 comments on commit d773760

Please sign in to comment.