diff options
Diffstat (limited to 'lib/dataset.rb')
-rw-r--r-- | lib/dataset.rb | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/lib/dataset.rb b/lib/dataset.rb index 09cafe2..f416921 100644 --- a/lib/dataset.rb +++ b/lib/dataset.rb @@ -120,7 +120,21 @@ module OpenTox resource = RestClient::Resource.new(@@config[:services]["opentox-dataset"], :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) uri = resource.post data, :content_type => content_type dataset = Dataset.new +<<<<<<< HEAD + dataset.read uri.to_s + dataset + end + + def self.find(uri) + dataset = Dataset.new + LOGGER.debug "Getting data from #{uri}" + data = `curl "#{uri}" 2> /dev/null` + #LOGGER.debug data + #data = RestClient.get(uri, :accept => 'application/rdf+xml') # unclear why this does not work for complex uris, Dataset.find works from irb + dataset.rdf = data +======= dataset.read uri.chomp.to_s +>>>>>>> helma/development dataset end @@ -132,6 +146,60 @@ module OpenTox features end +<<<<<<< HEAD + def data + data = {} + @model.subjects(RDF['type'], OT['DataEntry']).each do |data_entry| + compound_node = @model.object(data_entry, OT['compound']) + compound_uri = @model.object(compound_node, DC['identifier']).to_s + @model.find(data_entry, OT['values'], nil) do |s,p,values| + feature_node = @model.object values, OT['feature'] + feature_uri = @model.object(feature_node, DC['identifier']).to_s.sub(/\^\^.*$/,'') # remove XML datatype + type = @model.object(values, RDF['type']) + if type == OT['FeatureValue'] + value = @model.object(values, OT['value']).to_s + case value.to_s + when TRUE_REGEXP # defined in environment.rb + value = true + when FALSE_REGEXP # defined in environment.rb + value = false + when /.*\^\^<.*XMLSchema#.*>/ + case value.to_s + when /XMLSchema#string/ + value = value.to_s[0..(value.to_s.index("^^")-1)] + when /XMLSchema#double/ + value = value.to_s[0..(value.to_s.index("^^")-1)].to_f + else + LOGGER.warn " ILLEGAL TYPE "+compound_uri + " has value '" + value.to_s + "' for feature " + feature_uri + value = nil + end + else + LOGGER.warn compound_uri + " has value '" + value.to_s + "' for feature " + feature_uri + value = nil + end + data[compound_uri] = {} unless data[compound_uri] + data[compound_uri][feature_uri] = [] unless data[compound_uri][feature_uri] + data[compound_uri][feature_uri] << value unless value.nil? + elsif type == OT['Tuple'] + entry = {} + data[compound_uri] = {} unless data[compound_uri] + data[compound_uri][feature_uri] = [] unless data[compound_uri][feature_uri] + @model.find(values, OT['complexValue'],nil) do |s,p,complex_value| + name_node = @model.object complex_value, OT['feature'] + name = @model.object(name_node, DC['title']).to_s + value = @model.object(complex_value, OT['value']).to_s + v = value.sub(/\^\^.*$/,'') # remove XML datatype + v = v.to_f if v.match(/^[\.|\d]+$/) # guess numeric datatype + entry[name] = v + end + data[compound_uri][feature_uri] << entry + end + end + end + data + end +======= +>>>>>>> helma/development def compounds compounds = [] |