Top of the World

BIS repositories have a strict hierarchical organization. This page describes the top of that hierarchy and how it functions as a table of contents for the repository as a whole. This table of contents consists of:

  • RepositoryModel
  • Subjects
  • InformationPartitionElements

RepositoryModel

Every BIS repository has exactly one RepositoryModel that defines the top of the hierarchy. Elements can be inserted into or updated within the RepositoryModel, but the RepositoryModel itself cannot be deleted. The RepositoryModel sub-models the root Subject of a BIS repository.

The RepositoryModel is the only Model in a BIS repository that sub-models an Element contained within itself (the root Subject). Due to implementation details, this was easier than the RepositoryModel not sub-modeling any Element.

Subjects

Subjects are Elements that are used to identify things that the repository is about. The Subject class cannot be specialized (subclassed). The most important capabilities of Subject are:

  • It can have a UserLabel (inherited from Element)
  • It can have a Description
  • It can have child Subjects
  • It can have child InformationPartitionElements

Subjects only exist in the RepositoryModel.

Every BIS repository has exactly one root Subject that describes what the repository as a whole is about.

  • The root Subject - like all Subjects - is contained by the RepositoryModel.
  • The root Subject has no parent element as it is the top of the Subject hierarchy.
  • The root Subject can be updated, but it cannot be deleted.
  • the root Subject is sub-modeled by the RepositoryModel.

Child Subjects (optional) can be introduced to further organize the contents of the repository.

  • Child Subjects - like all Subjects - are contained by the RepositoryModel.
  • Child Subjects have another Subject as a parent.

InformationPartitionElements

As discussed in Modeling Perspectives Subjects can be viewed and modeled from multiple modeling perspectives (physical, functional, analytical, etc.). InformationPartitionElements are used to "partition" a Subject into different modeling perspectives.

When it is determined that a Subject is to be modeled from a particular modeling perspective, an InformationPartitionElement of the appropriate modeling perspective is added as a child of the Subject. That InformationPartitionElement is the start of a Model hierarchy representing the modeling perspective. The InformationPartitionElement is sub-modeled by a Model of the same modeling perspective.

It is usually expected for a Subject to have only one InformationPartitionElement instance of a given modeling perspective, but it is not enforced. When such need arises, it is typically better addressed via child Subjects, each owning a different InformationPartitionElement instance of the same modeling perspective.

InformationPartitionElements always have a parent Subject and are never used outside of the RepositoryModel.


| Next: Single Responsible-Party Principle |:---

Last Updated: 21 November, 2022