Class: Glossarist::V3::HyperedgeMember

Inherits:
Lutaml::Model::Serializable
  • Object
show all
Defined in:
lib/glossarist/v3/hyperedge_member.rb

Overview

HyperedgeMember — abstract base shape for members of any n-ary concept-system hyperedge (PartitiveMember, GenericMember, future AssociativeMember, SequentialMember).

Carries the shared ISO 704:2022 MECE dimensions on every member:

presence  required (default) | optional
count     exactly_one (default) | at_least_one | multiple

Type-specific extensions live on the leaves:

PartitiveMember — `is_delimiting` (Boolean): per ISO 704
§5.5.4.2.2, a part is or is not a delimiting part. Binary role.
GenericMember — `characteristic` (LocalizedString): per ISO 704
§5.5.4.2.1, each species carries a delimiting characteristic
text (e.g., "detecting movement by means of light sensors")
that distinguishes it from coordinate concepts under the
hyperedge's criterion of subdivision.

The combination (optional, at_least_one) is invalid and collapses to (optional, multiple). Multiplicity is the SSOT for the validation; this class delegates to it.

Direct Known Subclasses

GenericMember, PartitiveMember

Constant Summary collapse

DEFAULT_PRESENCE =
"required"
DEFAULT_COUNT =
"exactly_one"

Instance Method Summary collapse

Constructor Details

#initializeHyperedgeMember

Returns a new instance of HyperedgeMember.



43
44
45
46
47
48
49
50
51
# File 'lib/glossarist/v3/hyperedge_member.rb', line 43

def initialize(*)
  if instance_of?(HyperedgeMember)
    raise NotImplementedError,
          "HyperedgeMember is abstract; instantiate " \
          "PartitiveMember or GenericMember instead"
  end

  super
end

Instance Method Details

#optional?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/glossarist/v3/hyperedge_member.rb', line 63

def optional?
  presence == "optional"
end

#required?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/glossarist/v3/hyperedge_member.rb', line 59

def required?
  presence == "required"
end

#validate!Object



53
54
55
56
57
# File 'lib/glossarist/v3/hyperedge_member.rb', line 53

def validate!
  validate_ref!
  validate_presence_count!
  self
end