Class: Finitio::MultiRelationType

Inherits:
Type
  • Object
show all
Includes:
HeadingBasedType, RelBasedType
Defined in:
lib/finitio/type/multi_relation_type.rb

Overview

The MultiRelation type generator allows capturing sets of information facts, but allowing optional attributes. E. g.,

ColoredPoints = {{ point: Point, color :? Color }}

This class allows capturing those types, in a way similar to MultiTupleType:

ColoredPoints = MultiRelationType.new( Heading[...] )

A ruby Set is used as concrete representation, and will contain hashes that are valid representations of the associated multi tuple type:

R(ColoredPoints) = Set[ R({...}) ] = Set[Hash[...]]

Accordingly, the dress transformation function has the signature below. It expects an Enumerable as input and fails if any duplicate is found (after tuple transformation), or if any tuple fails at being transformed.

dress :: Alpha  -> ColoredPoints   throws TypeError
dress :: Object -> Set[Hash[...]]  throws TypeError

Constant Summary

Constants included from Metadata

Finitio::Metadata::EMPTY_METADATA

Instance Attribute Summary

Attributes included from HeadingBasedType

#heading

Instance Method Summary collapse

Methods included from RelBasedType

#dress, #generate_data, #include?, #representator, #to_json_schema

Methods included from HeadingBasedType

#==, #[], #hash, #initialize, #resolve_proxies, #unconstrained

Methods inherited from Type

#==, #anonymous?, #dress, #include?, #initialize, #name, #name=, #named?, #resolve_proxies, #to_s, #unconstrained

Methods included from Metadata

#metadata, #metadata=, #metadata?

Instance Method Details

#default_nameObject



29
30
31
# File 'lib/finitio/type/multi_relation_type.rb', line 29

def default_name
  "{{#{heading.to_name}}}"
end

#suppremum(other) ⇒ Object



33
34
35
# File 'lib/finitio/type/multi_relation_type.rb', line 33

def suppremum(other)
  super(other, RelationType, MultiRelationType)
end