summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Maunz <andreas@maunz.de>2012-10-31 15:35:34 +0100
committerAndreas Maunz <andreas@maunz.de>2012-10-31 15:35:34 +0100
commit8a2b749ccef94b229a32ec716c93388f5c7495d7 (patch)
tree81699a92364e76240354e6f67876a46d5291dc10 /lib
parent3c7161c8c7ff4193245eb4a7b428712def99b22e (diff)
Fixed get for dataset from RDF
Diffstat (limited to 'lib')
-rw-r--r--lib/dataset.rb12
-rw-r--r--lib/opentox.rb4
-rw-r--r--lib/utils/rdf/dataset.rb14
3 files changed, 23 insertions, 7 deletions
diff --git a/lib/dataset.rb b/lib/dataset.rb
index 4351dc5..288e4d3 100644
--- a/lib/dataset.rb
+++ b/lib/dataset.rb
@@ -29,17 +29,21 @@ module OpenTox
def get(force_no_backend_query=false)
have_rdf = (force_no_backend_query and @rdf.size>0)
- super() unless have_rdf
ordered = (have_rdf or OpenTox::Dataset.ordered?(@uri))
+ super() if (!have_rdf and !ordered)
@features = []
@compounds = []
@data_entries = []
# AM: read ordered dataset from RDF
if ordered
- @uri = s[0].uri.to_s if have_rdf # AM: must rewrite URI
- @compounds = find_compounds_rdf
- @features = find_features_rdf
+ # Read only some data as rdf
+ unless have_rdf
+ self.parse_rdfxml( RestClient.get([@uri,"allnde"].join("/"),{:accept => "application/rdf+xml"}), true )
+ end
+ @compounds = self.find_compounds_rdf
+ @features = self.find_features_rdf
+
numeric_features = @features.collect{|f|
f.get
f[RDF.type].include?(RDF::OT.NumericFeature) or f[RDF.type].include?(RDF::OT.Substructure)
diff --git a/lib/opentox.rb b/lib/opentox.rb
index faa7b58..0f29c30 100644
--- a/lib/opentox.rb
+++ b/lib/opentox.rb
@@ -130,8 +130,8 @@ module OpenTox
RDF_FORMATS.each do |format|
# rdf parse methods for all formats e.g. parse_rdfxml
- send :define_method, "parse_#{format}".to_sym do |rdf|
- @rdf = RDF::Graph.new
+ send :define_method, "parse_#{format}".to_sym do |rdf,init=true|
+ @rdf = RDF::Graph.new if init
RDF::Reader.for(format).new(rdf) do |reader|
reader.each_statement{ |statement| @rdf << statement }
end
diff --git a/lib/utils/rdf/dataset.rb b/lib/utils/rdf/dataset.rb
index e101b67..2cb32a9 100644
--- a/lib/utils/rdf/dataset.rb
+++ b/lib/utils/rdf/dataset.rb
@@ -47,7 +47,7 @@ module OpenTox
# Query a dataset URI for ordered status
# by loading its metadata (OpenTox compliant)
# @param [String] uri Dataset uri
- # @return [TrueClass,FalseClass] status Whether the dataset is ordered
+ # @return [TrueClass, FalseClass] status Whether the dataset is ordered
def self.ordered?(uri)
ds = OpenTox::Dataset.new # dummy
ds.parse_rdfxml(RestClient.get([uri,"metadata"].join("/"),{:accept => "application/rdf+xml"}))
@@ -57,5 +57,17 @@ module OpenTox
query.execute(ds.rdf).size>0
end
+ # Load dataset URI from given RDF (slow)
+ # @param [String] rdf RDF
+ # @return [String] uri URI
+ def self.uri_from_rdf(rdf)
+ ds = OpenTox::Dataset.new # dummy
+ ds.parse_rdfxml(rdf)
+ query = RDF::Query.new do
+ pattern [:dataset, RDF.type, RDF::OT.Dataset]
+ end
+ query.execute(ds.rdf).collect { |s| s.dataset.to_s }[0]
+ end
+
end
end