summaryrefslogtreecommitdiff
path: root/application.rb
diff options
context:
space:
mode:
authorAndreas Maunz <andreas@maunz.de>2012-10-23 12:37:18 +0200
committerAndreas Maunz <andreas@maunz.de>2012-10-23 12:37:18 +0200
commit06c5c8d8bb89bb777bfb64fdb7d954ef6ee9608c (patch)
tree142707fca2b0dd303e7931d9075502ab7a59dab9 /application.rb
parente8f7d10793dc370d306cf471278ef3f746ad5cc7 (diff)
find_by_title() now generic
Diffstat (limited to 'application.rb')
-rw-r--r--application.rb45
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