summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2011-02-11 16:34:41 +0100
committermguetlein <martin.guetlein@gmail.com>2011-02-11 16:34:41 +0100
commit1898a5353d790a17c3065e4349435642e1b7f701 (patch)
tree44b1a235dbe7daeab94657ff82620ae6edc30a69
parent3c7e4de0e3f4c9bbf8df55c88f155b40f575b3ab (diff)
adjust parser that dataset = daset.to_rdf.from rdf
-rw-r--r--lib/parser.rb20
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]]