Class: Glossarist::V3::HyperedgeMember
- Inherits:
-
Lutaml::Model::Serializable
- Object
- Lutaml::Model::Serializable
- Glossarist::V3::HyperedgeMember
- 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
Constant Summary collapse
- DEFAULT_PRESENCE =
"required"- DEFAULT_COUNT =
"exactly_one"
Instance Method Summary collapse
-
#initialize ⇒ HyperedgeMember
constructor
A new instance of HyperedgeMember.
- #optional? ⇒ Boolean
- #required? ⇒ Boolean
- #validate! ⇒ Object
Constructor Details
#initialize ⇒ HyperedgeMember
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
63 64 65 |
# File 'lib/glossarist/v3/hyperedge_member.rb', line 63 def optional? presence == "optional" end |
#required? ⇒ 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 |