class See5::Schema
Attributes
attributes[R]
class_attribute[R]
Public Class Methods
from_dataset(data, class_attribute: nil)
click to toggle source
Infers a schema from a dataset
# File lib/see5/schema.rb, line 27 def self.from_dataset(data, class_attribute: nil) classes = data.map { |record| record[class_attribute.to_sym] }.uniq attributes = {} data.each do |record| record.each do |key, value| if !attributes.include?(key) attributes[key] = [value] elsif !attributes[key].include?(value) attributes[key].append(value) end end end new(classes: classes, attributes: attributes, class_attribute: class_attribute) end
new(classes:, attributes:, class_attribute: nil)
click to toggle source
# File lib/see5/schema.rb, line 7 def initialize(classes:, attributes:, class_attribute: nil) @classes = classes @attributes = attributes @class_attribute = class_attribute&.to_sym || :class_attribute # if the class attribute doesn't exist in the attributes, add it unless @attributes.key?(@class_attribute) @attributes[@class_attribute] = @classes end end
Public Instance Methods
names_file_contents()
click to toggle source
# File lib/see5/schema.rb, line 18 def names_file_contents class_attribute.to_s + # TODO: continuous class attribute "\n" + attributes.map do |attr, vals| "#{attr}: #{vals.join(',')}" end.join("\n") end