owl.rb revision 24030f5daafbb03a841797705f4f3296e8f0a11a
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehasemodule ParsingCallback::OWL
b80fa42b7e42f3bdf0bd27063a5dd67389dcfcebTim Reddehase
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{
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase Class:\s+(?<entity_name><[^;]+>) # Entity/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
a85a5acd1c462f025cccba61b6fe7f7c41fe92a1Tim Reddehase entity = Entity.where(name: m['entity_name']).first
24895ff745d12312997751cd6fdfc5aae60ee5c8Tim Reddehase case m['annotation_type']
24895ff745d12312997751cd6fdfc5aae60ee5c8Tim Reddehase when 'label'
24895ff745d12312997751cd6fdfc5aae60ee5c8Tim Reddehase entity.label = m['annotation']
24895ff745d12312997751cd6fdfc5aae60ee5c8Tim Reddehase when 'comment'
24895ff745d12312997751cd6fdfc5aae60ee5c8Tim Reddehase entity.comment = m['annotation']
24895ff745d12312997751cd6fdfc5aae60ee5c8Tim Reddehase end if entity
24895ff745d12312997751cd6fdfc5aae60ee5c8Tim Reddehase entity.save
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
24030f5daafbb03a841797705f4f3296e8f0a11aSascha Graef ontology.create_entity_tree
24030f5daafbb03a841797705f4f3296e8f0a11aSascha Graef rescue StandardError => e
24030f5daafbb03a841797705f4f3296e8f0a11aSascha Graef puts "Could not create entity tree for: #{ontology.name} (#{ontology.id})"
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