Skip to content

Latest commit

 

History

History
92 lines (60 loc) · 3.91 KB

sep_051.md

File metadata and controls

92 lines (60 loc) · 3.91 KB

SEP 051 -- Rename TopLevel to AggregateRoot

SEP
Title Rename TopLevel to AggregateRoot
Authors James McLaughlin (james@mclgh.net)
Editor
Type Data Model
SBOL Version SBOL 3.0.1
Replaces
Status Withdrawn
Created 11-Nov-2020
Last modified 11-Nov-2020
Issue

Abstract

Since SBOL 1.0, SBOL has had the concept of a "top level", defined in the SBOL 3.0 specification as objects that are not nested inside any other object via composite aggregation. While the term "top level" is an SBOL invention, the classification of such objects is already established in software engineering, particularly in the context of domain-driven design where they are termed "aggregate roots". This SEP proposes the term "aggregate root" is adopted in place of "top level".

1. Rationale


  • The term "top level" in SBOL derives from the nested XML representation, in which such objects appear at the top level of the XML document tree. However, as of SBOL 3.0 other serializations are recommended for use with SBOL, many of which do not support such nesting and therefore have no such concept of document levels.

  • The terms "aggregate" and "aggregate root" are already established in software engineering, but "top level" is not. SBOL should try to fall in line with existing conventions where possible.

  • The specification already describes the concept of "top level" in terms of aggregation, so the term "aggregate root" would refer nicely back to this definition.

2. Specification


Replace all occurrences of "top level" and "TopLevel" with "aggregate root" and "AggregateRoot" respectively. For example, the following fragment:

TopLevel objects are not nested inside any other object via composite aggregation 21 (represented by a filled diamond arrowhead on the UML diagrams). Instead of nesting, composite TopLevel objects 22 refer to subordinate TopLevel objects by their URIs using shared aggregation (represented by an open-faced/non- 23 filled diamond arrowhead on the UML diagrams).

becomes

AggregateRoot objects are not nested inside any other object via composite aggregation 21 (represented by a filled diamond arrowhead on the UML diagrams). Instead of nesting, composite AggregateRoot objects 22 refer to subordinate AggregateRoot objects by their URIs using shared aggregation (represented by an open-faced/non- 23 filled diamond arrowhead on the UML diagrams).

3. Example or Use Case


4. Backwards Compatibility


This is only a specification change and therefore should be fully backward compatible with SBOL 3.0.

5. Discussion


6. Competing SEPs


None.

References

None.

Copyright

CC0
To the extent possible under law, SBOL developers has waived all copyright and related or neighboring rights to SEP 050. This work is published from: United Kingdom.