summaryrefslogtreecommitdiff
path: root/lib/serializer.rb
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2010-11-11 10:42:48 +0100
committerChristoph Helma <helma@in-silico.ch>2010-11-11 10:42:48 +0100
commit91c95f8dc8f60a8f0029b970ef881eecee28401b (patch)
tree405b4da936104c12a1938b25aa6766b5a526b94e /lib/serializer.rb
parentb93002b4ea50ff7e357da08abd10577347ce2d5f (diff)
Documentation and API fixes for serializer and parser
Diffstat (limited to 'lib/serializer.rb')
-rw-r--r--lib/serializer.rb37
1 files changed, 33 insertions, 4 deletions
diff --git a/lib/serializer.rb b/lib/serializer.rb
index 3a9cb60..31aa0d1 100644
--- a/lib/serializer.rb
+++ b/lib/serializer.rb
@@ -3,9 +3,10 @@ require 'yajl'
module OpenTox
+ # Serialzer for various oputput formats
module Serializer
- # modelled according to to http://n2.talis.com/wiki/RDF_JSON_Specification
+ # OWL-DL Serializer, modelled according to to http://n2.talis.com/wiki/RDF_JSON_Specification
class Owl
attr_accessor :object
@@ -60,15 +61,21 @@ module OpenTox
@objects = Set.new
end
+ # Add a compound
+ # @param [String] uri Compound URI
def add_compound(uri)
@object[uri] = { RDF["type"] => [{ "type" => "uri", "value" => OT.Compound }] }
end
+ # Add a feature
+ # @param [String] uri Feature URI
def add_feature(uri,metadata)
@object[uri] = { RDF["type"] => [{ "type" => "uri", "value" => OT.Feature }] }
add_metadata uri, metadata
end
+ # Add a dataset
+ # @param [String] uri Dataset URI
def add_dataset(dataset)
@dataset = dataset.uri
@@ -89,6 +96,8 @@ module OpenTox
end
+ # Add a algorithm
+ # @param [String] uri Algorithm URI
def add_algorithm(uri,metadata)
@object[uri] = { RDF["type"] => [{ "type" => "uri", "value" => OT.Algorithm }] }
LOGGER.debug @object[uri]
@@ -96,12 +105,16 @@ module OpenTox
LOGGER.debug @object[uri]
end
+ # Add a model
+ # @param [String] uri Model URI
def add_model(uri,metadata,parameters)
@object[uri] = { RDF["type"] => [{ "type" => "uri", "value" => OT.Model }] }
add_metadata uri, metadata
add_parameters uri, parameters
end
+ # Add metadata
+ # @param [Hash] metadata
def add_metadata(uri,metadata)
id = 0
metadata.each do |u,v|
@@ -123,6 +136,10 @@ module OpenTox
end
end
+ # Add a data entry
+ # @param [String] compound Compound URI
+ # @param [String] feature Feature URI
+ # @param [Boolead,Float] value Feature value
def add_data_entry(compound,feature,value)
add_compound(compound) unless @object[compound]
add_feature(feature,{}) unless @object[feature]
@@ -158,11 +175,11 @@ module OpenTox
# Serializers
+ # Convert to N-Triples
+ # @return [text/plain] Object OWL-DL in N-Triples format
def to_ntriples
- #rdf_types
@triples = Set.new
- #LOGGER.debug @object.to_yaml
@object.each do |s,entry|
s = url(s) if type(s) == "uri"
entry.each do |p,objects|
@@ -183,11 +200,16 @@ module OpenTox
@triples.sort.collect{ |s| s.join(' ').concat(" .") }.join("\n")+"\n"
end
+ # Convert to RDF/XML
+ # @return [text/plain] Object OWL-DL in RDF/XML format
def to_rdfxml
Tempfile.open("owl-serializer"){|f| f.write(self.to_ntriples); @path = f.path}
`rapper -i ntriples -o rdfxml #{@path} 2>/dev/null`
end
+ # Convert to JSON as specified in http://n2.talis.com/wiki/RDF_JSON_Specification
+ # (Ambit services use a different JSON representation)
+ # @return [text/plain] Object OWL-DL in JSON format
def to_json
#rdf_types
Yajl::Encoder.encode(@object)
@@ -250,8 +272,11 @@ module OpenTox
end
+ # Serializer for spreadsheet formats
class Spreadsheets # to avoid nameclash with Spreadsheet gem
+ # Create a new spreadsheet serializer
+ # @param [OpenTox::Dataset] dataset Dataset object
def initialize(dataset)
@rows = []
@rows << ["SMILES"]
@@ -272,11 +297,15 @@ module OpenTox
end
end
+ # Convert to CSV string
+ # @return [String] CSV string
def to_csv
@rows.collect{|r| r.join(", ")}.join("\n")
end
- def to_xls
+ # Convert to spreadsheet workbook
+ # @return [Spreadsheet::Workbook] Workbook object (use the spreadsheet gemc to write a file)
+ def to_spreadsheet
Spreadsheet.client_encoding = 'UTF-8'
book = Spreadsheet::Workbook.new
sheet = book.create_worksheet(:name => '')