diff options
author | mguetlein <martin.guetlein@gmail.com> | 2011-02-11 16:34:41 +0100 |
---|---|---|
committer | mguetlein <martin.guetlein@gmail.com> | 2011-02-11 16:34:41 +0100 |
commit | 1898a5353d790a17c3065e4349435642e1b7f701 (patch) | |
tree | 44b1a235dbe7daeab94657ff82620ae6edc30a69 | |
parent | 3c7e4de0e3f4c9bbf8df55c88f155b40f575b3ab (diff) |
adjust parser that dataset = daset.to_rdf.from rdf
-rw-r--r-- | lib/parser.rb | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/lib/parser.rb b/lib/parser.rb index f79b5e2..d2beeac 100644 --- a/lib/parser.rb +++ b/lib/parser.rb @@ -172,8 +172,10 @@ module OpenTox entry[:values].each do |value_id| split = feature_values[value_id].split(/\^\^/) case split[-1] - when XSD.double + when XSD.double, XSD.float value = split.first.to_f + when XSD.boolean + value = split.first=~/(?i)true/ ? true : false else value = split.first end @@ -188,15 +190,23 @@ module OpenTox # Read only features from a dataset service. # @return [Hash] Internal features representation def load_features(subjectid=nil) - uri = File.join(@uri,"features") - uri += "?subjectid=#{CGI.escape(subjectid)}" if subjectid + if File.exist?(@uri) + file = File.new(@uri) + else + file = Tempfile.new("ot-rdfxml") + uri = File.join(@uri,"features") + file.puts OpenTox::RestClientWrapper.get uri,{:subjectid => subjectid,:accept => "application/rdf+xml"},nil,false + file.close + to_delete = file.path + end statements = [] features = Set.new - `rapper -i rdfxml -o ntriples #{uri} 2>/dev/null`.each_line do |line| + `rapper -i rdfxml -o ntriples #{file.path} 2>/dev/null`.each_line do |line| triple = line.chomp.split('> ').collect{|i| i.sub(/\s+.$/,'').gsub(/[<>"]/,'')}[0..2] statements << triple - features << triple[0] if triple[1] == RDF['type'] and triple[2] == OT.Feature + features << triple[0] if triple[1] == RDF['type'] and (triple[2] == OT.Feature || triple[2] == OT.NumericFeature) end + File.delete(to_delete) if to_delete statements.each do |triple| if features.include? triple[0] @dataset.features[triple[0]] = {} unless @dataset.features[triple[0]] |