STEMMA implements a generic Group concept that can model an organised real-world concept such as a regiment. It qualifies as a subject entity because historical sources may contain references to that group, irrespective of whether people, or any other subject entity, are mentioned within it.
A Group shares many of the same features as a Place, such as time-dependent hierarchical structure, non-hierarchical relationships, and alternative names.
A Set of subject entities (currently only Persons and Animals — see Extended Schema) can be associated with a Group over specific periods of time, and manipulated using Set operators to create derived Sets. One of the uses employing Sets is to model a Family concept. As the subject matter under Worldwide Family History Data explains, the concept of a family unit is very subjective, and has more in common with general membership of groups rather than lineage or marriage. See also Family Units, Happy Families, and Revisiting the Family Group.
Individual Persons and Animals can be linked to one-or-more Groups using the <MemberOf> element within their respective entities These specify a begin and end by either date or Event, and these default to the birth and death of that subject if the range is left open-ended. Set operators may be used to adjust the content based on other Groups. This happens after any explicit associations have been recorded and is primarily designed to support the creation of derived Groups. For instance, Persons in both Group A and B, or Persons in Group A but not B, etc.
<Group Key=’key’>
[ <Title> group-title </Title> ]
[ <Type> group-type </Type> ]
[ <SubType> group-subtype </SubType> ]
[ NAME_VARIANTS | { <GroupName [DATA_ATTRIBUTE] ... > group-name </GroupName> } ]
[ <ParentGroupLnk [RANGE_FROM] [RANGE_TO] Key=’key’>
[ TEXT_SEG ] ...
</ParentGroupLnk> ] ...
[ <Creation>
[ <JoinFrom Key=’key’/> ... ]
[ TEXT_SEG ] ...
</Creation> ]
[ <Demise>
[ <SplitTo Key=’key’/> ... ]
[ TEXT_SEG ] ...
</Demise> ]
[ EVENTLET ] ...
[ SOURCE_LNK ] ...
[ <RelatedTo>
<GroupLnk Key=’key’/> ...
[ TEXT_SEG ] ...
</RelatedTo> ]
[ <Operation Name=’group-op’ Key=’key’/> ] ...
[ EXTERNAL_ID ] ...
[ TEXT_SEG ] ...
</Group>
The <SplitTo>, <JoinFrom>, and <RelatedTo> elements are described further under Place.
Named items of information about the group as a whole that may be extracted from an associated source can be specified using the following Properties. These are defined here using the syntax used for Extended Properties.
<PropertyDef Name=’Name’ Type=’GroupRef’/>
The name of the group, as recorded in the supporting source.
Any custom Group properties can also be used in the context of GROUP_PROPERTY. See Extended Properties.
The <GroupName> element is provided as a much simplified alternative to the <Names> element for the case where there are no variations and the matched name is identical to just one canonical name. A group-name specified by a <GroupName> element is the equivalent of a ‘SemiFormal’ Canonical name provided by a <Names> element.
There is a broad set of group-types including Family, Education, and Military. There is also a set of predefined group-subtypes that includes those family-related ones discussed in the aforementioned section:
There are also predefined group-subtypes for Regiment, and Household (e.g. inclusive of boarders, lodgers, and staff). See Extended Vocabularies for creating custom group-types and group-subtypes.
The Person and Animal associations are time-dependent so each Group is not a static SET. When interrogated for membership, a date must therefore be provided.
Each group-op must be one of:
Union — (A U B)
Intersect — (A ∩ B)
Differ — (A U B) - (A ∩ B)
.
These are not time-dependent and so can be applied directly after all the Group associations have been loaded, or after a subsequent change in a Group association.