class RDF::Tabular::Schema

Constants

DEFAULTS
PROPERTIES
REQUIRED

Public Instance Methods

columns=(value) click to toggle source
# File lib/rdf/tabular/metadata.rb, line 1490
def columns=(value)
  object[:columns] = case value
  when Array
    number = 0
    value.map do |v|
      number += 1
      case v
      when Hash
        Column.new(v, **@options.merge(
          table: (parent if parent.is_a?(Table)),
          parent: self,
          context: nil,
          number: number))
      else
        v
      end
    end
  else
    log_warn "#{type} has invalid property 'columns': expected array of Column"
    []
  end

  unless object[:columns].all? {|v| v.is_a?(Column)}
    log_warn "#{type} has invalid property 'columns': expected array of Column"
    # Remove elements that aren't of the right types
    object[:columns] = object[:columns].select! {|v| v.is_a?(Column)}
  end
end
foreignKeys=(value) click to toggle source
# File lib/rdf/tabular/metadata.rb, line 1519
def foreignKeys=(value)
  object[:foreignKeys] = case value
  when Array then value
  else
    log_warn "#{type} has invalid property 'foreignKeys': expected array of ForeignKey"
    []
  end

  unless object[:foreignKeys].all? {|v| v.is_a?(Hash)}
    log_warn "#{type} has invalid property 'foreignKeys': expected array of ForeignKey"
    # Remove elements that aren't of the right types
    object[:foreignKeys] = object[:foreignKeys].select! {|v| v.is_a?(Hash)}
  end
end
foreign_keys_referencing(table) click to toggle source

List of foreign keys referencing the specified table

@param [Table] table @return [Array<Hash>]

# File lib/rdf/tabular/metadata.rb, line 1539
def foreign_keys_referencing(table)
  Array(foreignKeys).select do |fk|
    reference = fk['reference']
    if reference['resource']
      ref = context.base.join(reference['resource']).to_s
      table.url == ref
    else # schemaReference
      ref = context.base.join(reference['schemaReference']).to_s
      table.tableSchema.id == ref
    end
  end
end
to_atd() click to toggle source

Return Annotated Table representation

# File lib/rdf/tabular/metadata.rb, line 1553
def to_atd
  object.inject({
    "@id" => (id.to_s if id),
    "@type" => "Schema",
    "columns" => Array(columns).map(&:to_atd),
  }) do |memo, (k, v)|
    memo[k.to_s] ||= v
    memo
  end.delete_if {|k,v| v.nil? || v.is_a?(Metadata)}
end