diff options
author | Andreas Maunz <andreas@maunz.de> | 2012-10-23 12:37:18 +0200 |
---|---|---|
committer | Andreas Maunz <andreas@maunz.de> | 2012-10-23 12:37:18 +0200 |
commit | 06c5c8d8bb89bb777bfb64fdb7d954ef6ee9608c (patch) | |
tree | 142707fca2b0dd303e7931d9075502ab7a59dab9 /application.rb | |
parent | e8f7d10793dc370d306cf471278ef3f746ad5cc7 (diff) |
find_by_title() now generic
Diffstat (limited to 'application.rb')
-rw-r--r-- | application.rb | 45 |
1 files changed, 10 insertions, 35 deletions
diff --git a/application.rb b/application.rb index c6f2ccc..311224e 100644 --- a/application.rb +++ b/application.rb @@ -165,48 +165,23 @@ module OpenTox features = [] ignored_feature_indices = [] feature_names.each_with_index do |f,i| - feature_existing = OpenTox::Feature.find_by_title(f,{}) - feature_new = OpenTox::Feature.new File.join($feature[:uri], SecureRandom.uuid) - feature_new[RDF::DC.title] = f values = table.collect{|row| val=row[i+1]; val.strip! unless val.nil?; val }.uniq.compact types = values.collect{|v| feature_type(v)}.uniq - if values.size == 0 - # AM: 'Empty' feature + metadata = {} + if values.size == 0 # empty feature elsif values.size <= 5 # max classes - feature_new.append RDF.type, [ RDF::OT.NominalFeature, RDF::OT.StringFeature ] - feature_new.append RDF::OT.acceptValue, values + metadata[RDF.type] = [ RDF::OT.NominalFeature, RDF::OT.StringFeature ] + metadata[RDF::OT.acceptValue] = values end if types.size == 1 and types[0] == RDF::OT.NumericFeature - feature_new.append RDF.type, RDF::OT.NumericFeature + metadata[RDF.type] = [] unless metadata[RDF.type] + metadata[RDF.type] << RDF::OT.NumericFeature else - feature_new.append RDF.type, [ RDF::OT.NominalFeature, RDF::OT.StringFeature ] # only nominal type for mixed cases - feature_new.append RDF::OT.acceptValue, values - end - - # Check for equality of features - features_equal = true - if feature_new and feature_existing - [ RDF.type, RDF::OT.acceptValue ].each { |predicate| - unless ( - ( feature_new[predicate].nil? and - feature_existing[predicate].nil? ) or - ( feature_new[predicate] and - feature_existing[predicate] and - feature_new[predicate].sort == feature_existing[predicate].sort ) - ) - features_equal = false - end - } - end - - if features_equal - features << feature_existing - feature = feature_existing - else - features << feature_new - feature_new.put - feature = feature_new + metadata[RDF.type] = [ RDF::OT.NominalFeature, RDF::OT.StringFeature ] # only nominal type for mixed cases + metadata[RDF::OT.acceptValue] = values end + feature = OpenTox::Feature.find_by_title(f,metadata) # AM: find or generate + features << feature unless feature.nil? ntriples << "<#{feature.uri}> <#{RDF.type}> <#{RDF::OT.Feature}>." ntriples << "<#{feature.uri}> <#{RDF::OLO.index}> #{i} ." end |