summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.de>2009-12-18 13:29:14 +0100
committerChristoph Helma <helma@in-silico.de>2009-12-18 13:29:14 +0100
commit03b1a477aca26a8ba662474f16c7427052067d4e (patch)
tree1f0682c5990c71c4a2b719e455df6d9e52c861f5
parenta5789305534c2a622a658e7ef14b016a1bac4bd6 (diff)
assignement of metadata fixed
-rw-r--r--lib/dataset.rb19
-rw-r--r--lib/owl.rb90
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')
diff --git a/lib/owl.rb b/lib/owl.rb
index d0d3ee0..c42f6ae 100644
--- a/lib/owl.rb
+++ b/lib/owl.rb
@@ -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