diff options
Diffstat (limited to 'lib/feature.rb')
-rw-r--r-- | lib/feature.rb | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/lib/feature.rb b/lib/feature.rb index b631e46..4ba58ce 100644 --- a/lib/feature.rb +++ b/lib/feature.rb @@ -2,6 +2,8 @@ module OpenTox class Feature include OpenTox + attr_accessor :subjectid + # Find a feature # @param [String] uri Feature URI # @return [OpenTox::Task] Feature object @@ -13,31 +15,31 @@ module OpenTox else feature.add_metadata Parser::Owl::Dataset.new(uri).load_metadata end + feature.subjectid = subjectid feature end - + # provides feature type, possible types are "regression" or "classification" # @return [String] feature type, unknown if OT.isA property is unknown/ not set def feature_type + raise OpenTox::BadRequestError.new("rdf type of feature '"+uri.to_s+"' not set") unless metadata[RDF.type] if metadata[RDF.type].flatten.include?(OT.NominalFeature) "classification" elsif metadata[RDF.type].flatten.include?(OT.NumericFeature) "regression" - else - #"unknown" - metadata[RDF.type].inspect - end -=begin - case metadata[RDF.type] - when /NominalFeature/ - "classification" - when /NumericFeature/ - "regression" + elsif metadata[OWL.sameAs] + metadata[OWL.sameAs].each do |f| + begin + type = Feature.find(f, subjectid).feature_type + return type unless type=="unknown" + rescue => ex + LOGGER.warn "could not load same-as-feature '"+f.to_s+"' for feature '"+uri.to_s+"' : "+ex.message.to_s + end + end + "unknown" else "unknown" end -=end end - end end |