From 2aafed7543287c420a5aa2e751b8c74ad771d14c Mon Sep 17 00:00:00 2001 From: mr Date: Thu, 13 Jan 2011 12:01:19 +0100 Subject: A&A for GET requests --- lib/dataset.rb | 22 +++++++++++----------- lib/model.rb | 2 +- lib/opentox.rb | 8 ++++---- lib/parser.rb | 17 ++++++++++------- 4 files changed, 26 insertions(+), 23 deletions(-) diff --git a/lib/dataset.rb b/lib/dataset.rb index 52b41a7..a85c2b5 100644 --- a/lib/dataset.rb +++ b/lib/dataset.rb @@ -60,7 +60,7 @@ module OpenTox # @param [optional,String] uri URI of the dataset service, defaults to service specified in configuration # @return [Array] Array of dataset object without data (use one of the load_* methods to pull data from the server) def self.all(uri=CONFIG[:services]["opentox-dataset"], subjectid=nil) - RestClientWrapper.get(uri,{:accept => "text/uri-list",:subjectid => subjectid}).to_s.each_line.collect{|u| Dataset.new(u)} + RestClientWrapper.get(uri,{:accept => "text/uri-list",:subjectid => subjectid}).to_s.each_line.collect{|u| Dataset.new(u, subjectid)} end # Load YAML representation into the dataset @@ -77,10 +77,10 @@ module OpenTox # Load RDF/XML representation from a file # @param [String] file File with RDF/XML representation of the dataset # @return [OpenTox::Dataset] Dataset object with RDF/XML data - def load_rdfxml_file(file) - parser = Parser::Owl::Dataset.new @uri + def load_rdfxml_file(file, subjectid=nil) + parser = Parser::Owl::Dataset.new @uri, subjectid parser.uri = file.path - copy parser.load_uri + copy parser.load_uri(subjectid) end # Load CSV string (format specification: http://toxcreate.org/help) @@ -111,8 +111,8 @@ module OpenTox # Load and return only metadata of a Dataset object # @return [Hash] Metadata of the dataset - def load_metadata - add_metadata Parser::Owl::Dataset.new(@uri).load_metadata + def load_metadata(subjectid=nil) + add_metadata Parser::Owl::Dataset.new(@uri, subjectid).load_metadata(subjectid) self.uri = @uri if @uri # keep uri @metadata end @@ -122,8 +122,8 @@ module OpenTox if (CONFIG[:yaml_hosts].include?(URI.parse(@uri).host)) copy YAML.load(RestClientWrapper.get(@uri, {:accept => "application/x-yaml", :subjectid => subjectid})) else - parser = Parser::Owl::Dataset.new(@uri) - copy parser.load_uri + parser = Parser::Owl::Dataset.new(@uri, subjectid) + copy parser.load_uri(subjectid) end end @@ -138,9 +138,9 @@ module OpenTox # Load and return only features from the dataset service # @return [Hash] Features of the dataset - def load_features - parser = Parser::Owl::Dataset.new(@uri) - @features = parser.load_features + def load_features(subjectid=nil) + parser = Parser::Owl::Dataset.new(@uri, subjectid) + @features = parser.load_features(subjectid) @features end diff --git a/lib/model.rb b/lib/model.rb index 7aa3f5c..6ef4af2 100644 --- a/lib/model.rb +++ b/lib/model.rb @@ -99,7 +99,7 @@ module OpenTox OT.parameters => [{DC.title => "dataset_uri", OT.paramValue => dataset_uri}] }) d = Dataset.new(dataset_uri,subjectid) - d.load_compounds + d.load_compounds(subjectid) d.compounds.each do |compound_uri| predict(compound_uri,false,subjectid) end diff --git a/lib/opentox.rb b/lib/opentox.rb index 90683e5..f1af5c3 100644 --- a/lib/opentox.rb +++ b/lib/opentox.rb @@ -19,14 +19,14 @@ module OpenTox # Get all objects from a service # @return [Array] List of available URIs - def self.all(uri) - RestClientWrapper.get(uri,:accept => "text/uri-list").to_s.split(/\n/) + def self.all(uri, subjectid=nil) + RestClientWrapper.get(uri,:accept => "text/uri-list", :subjectid => subjectid).to_s.split(/\n/) end # Load (and return) metadata from object URI # @return [Hash] Metadata - def load_metadata - @metadata = Parser::Owl::Generic.new(@uri).load_metadata + def load_metadata(subjectid=nil) + @metadata = Parser::Owl::Generic.new(@uri).load_metadata(subjectid) @metadata end diff --git a/lib/parser.rb b/lib/parser.rb index b727412..a913cf2 100644 --- a/lib/parser.rb +++ b/lib/parser.rb @@ -29,14 +29,14 @@ module OpenTox # Read metadata from opentox service # @return [Hash] Object metadata - def load_metadata + def load_metadata(subjectid=nil) if @dataset uri = File.join(@uri,"metadata") else uri = @uri end - + uri += "?subjectid=#{CGI.escape(subjectid)}" if subjectid statements = [] parameter_ids = [] `rapper -i rdfxml -o ntriples #{uri} 2>/dev/null`.each_line do |line| @@ -71,9 +71,9 @@ module OpenTox # Create a new OWL-DL dataset parser # @param uri Dataset URI # @return [OpenTox::Parser::Owl::Dataset] OWL-DL parser - def initialize(uri) + def initialize(uri, subjectid=nil) super uri - @dataset = ::OpenTox::Dataset.new(@uri) + @dataset = ::OpenTox::Dataset.new(@uri, subjectid) end # Read data from dataset service. Files can be parsed by setting #uri to a filename (after initialization with a real URI) @@ -87,12 +87,14 @@ module OpenTox # dataset = parser.load_uri # dataset.save # @return [Hash] Internal dataset representation - def load_uri + def load_uri(subjectid=nil) + uri = @uri + uri += "?subjectid=#{CGI.escape(subjectid)}" if subjectid data = {} feature_values = {} feature = {} other_statements = {} - `rapper -i rdfxml -o ntriples #{@uri} 2>/dev/null`.each_line do |line| + `rapper -i rdfxml -o ntriples #{uri} 2>/dev/null`.each_line do |line| triple = line.chomp.split(' ',3) triple = triple[0..2].collect{|i| i.sub(/\s+.$/,'').gsub(/[<>"]/,'')} case triple[1] @@ -122,8 +124,9 @@ module OpenTox # Read only features from a dataset service. # @return [Hash] Internal features representation - def load_features + def load_features(subjectid=nil) uri = File.join(@uri,"features") + uri += "?subjectid=#{CGI.escape(subjectid)}" if subjectid statements = [] features = Set.new `rapper -i rdfxml -o ntriples #{uri} 2>/dev/null`.each_line do |line| -- cgit v1.2.3