summaryrefslogtreecommitdiff
path: root/lib/dataset.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dataset.rb')
-rw-r--r--lib/dataset.rb68
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 = []