diff options
author | Christoph Helma <helma@in-silico.de> | 2009-12-18 13:29:14 +0100 |
---|---|---|
committer | Christoph Helma <helma@in-silico.de> | 2009-12-18 13:29:14 +0100 |
commit | 03b1a477aca26a8ba662474f16c7427052067d4e (patch) | |
tree | 1f0682c5990c71c4a2b719e455df6d9e52c861f5 /lib | |
parent | a5789305534c2a622a658e7ef14b016a1bac4bd6 (diff) |
assignement of metadata fixed
Diffstat (limited to 'lib')
-rw-r--r-- | lib/dataset.rb | 19 | ||||
-rw-r--r-- | lib/owl.rb | 90 |
2 files changed, 76 insertions, 33 deletions
diff --git a/lib/dataset.rb b/lib/dataset.rb index 895c9fc..b96f3e9 100644 --- a/lib/dataset.rb +++ b/lib/dataset.rb @@ -7,6 +7,13 @@ module OpenTox super end + def add(compound_uri,feature_uri,value) + c = self.find_or_create_compound compound_uri + f = self.find_or_create_feature feature_uri + v = self.find_or_create_value value + self.add_data_entry(c,f,v) + end + # find or create a new compound and return the resource def find_or_create_compound(uri) compound = @model.subject(DC["identifier"], uri) @@ -19,14 +26,14 @@ module OpenTox end # find or create a new feature and return the resource - def find_or_create_feature(f) - feature = @model.subject(DC["title"], f[:name].to_s) + def find_or_create_feature(uri) + feature = @model.subject(DC["identifier"], uri) if feature.nil? feature = @model.create_resource @model.add feature, RDF['type'], OT["Feature"] - @model.add feature, DC["identifier"], File.join("feature",feature.to_s.gsub(/[()]/,'')) # relative uri as we don know the final uri - @model.add feature, DC["title"], f[:name].to_s - @model.add feature, DC['source'], f[:source].to_s if f[:source] + @model.add feature, DC["identifier"], uri + @model.add feature, DC["title"], File.basename(uri) + @model.add feature, DC['source'], uri end feature end @@ -233,7 +240,7 @@ module OpenTox :identifier => self.identifier, :compounds => self.compounds.collect{|c| c.to_s.to_s.sub(/^\[(.*)\]$/,'\1')}, :features => self.features.collect{|f| f.to_s }, - :data_entries => self.data_entries, + #:data_entries => self.data_entries, =begin :tuples => self.compounds.collect{|c| compound_uri = c.to_s.to_s.sub(/^\[(.*)\]$/,'\1') @@ -2,7 +2,7 @@ module OpenTox module Owl - attr_reader :uri#, :model + attr_reader :uri def initialize @@ -13,12 +13,69 @@ module OpenTox # read OT Ontology #@parser.parse_into_model(@model,"http://opentox.org/data/documents/development/RDF%20files/OpenToxOntology/at_download/file") @parser.parse_string_into_model(@model,File.read(File.join(File.dirname(__FILE__),"opentox.owl")),'/') - #@model.add OT['ComplexValue'], RDF['type'], OWL["Class"] # added by ch + # reate an anonymous resource for metadata + # this has to be rewritten with an URI as soon as the resource has been saved at an definitive location + tmp = @model.create_resource + @model.add tmp, RDF['type'], OWL['Ontology'] + @model.add tmp, RDF['type'], OT[self.owl_class] + end + + def uri=(uri) + puts "assigning uri" + @uri = uri + uri = Redland::Uri.new(uri) + # rewrite uri + @model.subjects(RDF['type'],OT[self.owl_class]).each do |me| + @model.delete(me,RDF['type'],OT[self.owl_class]) + @model.add(uri,RDF['type'],OT[self.owl_class]) + id = @model.object(me, DC['identifier']) + @model.delete me, DC['identifier'], id + # find/replace metadata + @model.find(me, nil, nil) do |s,p,o| + @model.delete s,p,o + @model.add uri,p,o + end + @model.add uri, DC['identifier'], @uri + end + end + + def title + me = @model.subject(RDF['type'],OT[self.owl_class]) + @model.object(me, DC['title']).to_s unless me.nil? + end + + def title=(title) + me = @model.subject(RDF['type'],OT[self.owl_class]) + begin + t = @model.object(me, DC['title']) + @model.delete me, DC['title'], t + rescue + end + @model.add me, DC['title'], title + end + + def source + me = @model.subject(RDF['type'],OT[self.owl_class]) + @model.object(me, DC['source']).to_s unless me.nil? + end + + def source=(source) + me = @model.subject(RDF['type'],OT[self.owl_class]) + begin + t = @model.object(me, DC['source']) + @model.delete me, DC['source'], t + rescue + end + @model.add me, DC['source'], source + end + + def identifier + me = @model.subject(RDF['type'],OT[self.owl_class]) + @model.object(me, DC['identifier']).to_s unless me.nil? end def owl_class - self.class.to_s.sub(/^OpenTox::/,'') - #@model.subject RDF['type'], OT[self.class.to_s.sub(/^OpenTox::/,'')] + self.class.to_s.sub(/^OpenTox::/,'').sub(/::.*$/,'') end def read(uri) @@ -35,33 +92,10 @@ module OpenTox @model.to_string end - def uri=(uri) - @uri = uri - me = @model.subject(RDF['type'],OT[self.owl_class]) - identifier = @model.object(me, DC['identifier']) - @model.delete me, DC['identifier'], identifier - @model.add me, DC['identifier'], uri - end - def to_ntriples @serializer.model_to_string(Redland::Uri.new(@uri), @model) end - def title - me = @model.subject(RDF['type'],OT[self.owl_class]) - @model.object(me, DC['title']).to_s unless me.nil? - end - - def source - me = @model.subject(RDF['type'],OT[self.owl_class]) - @model.object(me, DC['source']).to_s unless me.nil? - end - - def identifier - me = @model.subject(RDF['type'],OT[self.owl_class]) - @model.object(me, DC['identifier']).to_s unless me.nil? - end - def parameters=(params) params.each do |name, settings| parameter = @model.create_resource @@ -72,6 +106,7 @@ module OpenTox end end +=begin def create_owl_statement(name,value) r = @model.create_resource dc_class = DC[name.gsub(/^[a-z]/) { |a| a.upcase }] # capitalize only the first letter @@ -89,6 +124,7 @@ module OpenTox raise "No method #{name}" end end +=end end |