b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehasemodule ParsingCallback::OWL
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehase IDENTIFIERS = %w(OWL OWL2)
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehase
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehase def self.defined_for?(logic_name)
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehase IDENTIFIERS.include?(logic_name)
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehase end
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehase
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehase class Callback < ParsingCallback::GenericCallback
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehase
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase def pre_axiom(hash)
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase if is_annotation_sentence?(hash)
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase m = hash['text'].match(%r{
151a86e6ccf772e932db2a15868dc1d96d9bb345Model Renamer Class:\s+(?<symbol_name>.+?) # Symbol Identifier
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase \s+
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase Annotations:\s+(?<annotation_type>label|comment) # the type of annotation
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase \s+
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase "(?<annotation>.*)" # The actual annotation
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase \s*
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase (?<additionals>[^\s].*) # optional, e.g. a language tag like @pt}xm)
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase if m
335258a6512a35cb1bb18c1d1693fd35016616bdModel Renamer symbol = OntologyMember::Symbol.where(name: m['symbol_name']).first
24895ff745d12312997751cd6fdfc5aae60ee5c8Tim Reddehase case m['annotation_type']
24895ff745d12312997751cd6fdfc5aae60ee5c8Tim Reddehase when 'label'
67ea9fccbdc154cf2418f16ab8883ccfcbc77b51Model Renamer symbol.label = m['annotation']
67ea9fccbdc154cf2418f16ab8883ccfcbc77b51Model Renamer symbol.save
24895ff745d12312997751cd6fdfc5aae60ee5c8Tim Reddehase when 'comment'
67ea9fccbdc154cf2418f16ab8883ccfcbc77b51Model Renamer symbol.comment = m['annotation']
67ea9fccbdc154cf2418f16ab8883ccfcbc77b51Model Renamer symbol.save
67ea9fccbdc154cf2418f16ab8883ccfcbc77b51Model Renamer end if symbol
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase end
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase false
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase else
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase true
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase end
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase end
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehase def axiom(hash, axiom)
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehase end
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehase
24030f5daafbb03a841797705f4f3296e8f0a11aSascha Graef def ontology_end(hash, ontology)
24030f5daafbb03a841797705f4f3296e8f0a11aSascha Graef begin
e7b98e9afc1566c16deab31c630a1f272b549f1dTim Reddehase TarjanTree.for(ontology)
116feb7d9f82e0fc61cf897afbc6a8e6ddd2038dhenning mueller rescue ActiveRecord::RecordNotFound => e
67ea9fccbdc154cf2418f16ab8883ccfcbc77b51Model Renamer Rails.logger.warn "Could not create symbol tree for: #{ontology.name} (#{ontology.id}) caused #{e}"
24030f5daafbb03a841797705f4f3296e8f0a11aSascha Graef end
24030f5daafbb03a841797705f4f3296e8f0a11aSascha Graef end
24030f5daafbb03a841797705f4f3296e8f0a11aSascha Graef
29bee53fe5db437d7b8386cfa99d673ed9f68341Tim Reddehase private
29bee53fe5db437d7b8386cfa99d673ed9f68341Tim Reddehase def is_annotation_sentence?(axiom_hash)
29bee53fe5db437d7b8386cfa99d673ed9f68341Tim Reddehase axiom_hash['symbol_hashes'].each do |hash|
29bee53fe5db437d7b8386cfa99d673ed9f68341Tim Reddehase return true if hash['kind'] == 'AnnotationProperty'
29bee53fe5db437d7b8386cfa99d673ed9f68341Tim Reddehase end
29bee53fe5db437d7b8386cfa99d673ed9f68341Tim Reddehase false
29bee53fe5db437d7b8386cfa99d673ed9f68341Tim Reddehase end
29bee53fe5db437d7b8386cfa99d673ed9f68341Tim Reddehase
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehase end
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehase
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehaseend