BIS is a set of object oriented relational schemas that define the data model for an iModel.
Like a table in a standard relational database adds support for single inheritance and polymorphism.
Like a link table or foreign key in a standard relational database adds support for single inheritance and polymorphism. Each relationship lists two Entity Classes as endpoints.
Added to a class defining what would be a column in a standard database.
A special kind of property which represents a Foreign Key for a Relationship Class.
A special type of class definition that can be a relationship endpoint and can add classes to an entity class. An Entity class may implement more than one mixin.
Like a row in a standard relational database it is the instantiation of an Entity or Relationship class.
For more on these core concepts checkout Modeling with BIS
An Element is an Entity class that serves as the base class for all data stored in an iModel.
Each Element may have one parent and any number of children, this parent/child hierarchy is used to build assemblies. This is defined using the Relationship Class ElementOwnsChildElements persisted using the navigation property Element.Parent
.
An Element Aspect Class is an Entity class that adds properties to a Instance of an Element.
There are two types of Aspect class, Unique Aspect and Multi Aspect. Only one instance of a Unique Aspect class may apply to an Element instance, any number of instances of an Multi Aspect may apply to a single Element instance.
Each Element Aspect Instance belongs to one and only one Element Instance and uses a navigation property ElementAspect.Element
to point back to the Element it belongs to. Unique Aspects use the ElementOwnsUniqueAspect relationship class and Multi Aspects use the ElementOwnsMultiAspects relationship
A Model is an Entity class that serves as a container for Elements. A Model and the Elements it contains 'break down' an Element providing a more detailed representation of that element.
These concepts help search for and understand data in an iModel
The Bis.PhysicalElement class is the base class for all elements that model real physical things.
The Functional.FunctionalElement class is the base class for all elements that define requirements of a system
Codes are unique, human readable identifiers for an Element. Not every Element Instance is required to have a code. Plant Tags are a good example of a use for code.
Type Definitions are special Element classes whose instances are used to represent catalog items (Like a Pump, Door or Beam) that have fixed values. The Type Definition is referenced by a normal Element instance using the TypeDefinition navigation property.
Categories group Element instances and is similar to levels in MicroStation, layers in AutoCAD and categories in Revit. Elements that can be categorized have a Category
navigation property
The ElementRefersToElements relationship class defines the primary link table used to relate two Elements together. It is used for things like grouping, linking drawings to the elements the represent, linking the functional and physical representations of an object.
Subject Elements define high level grouping of the data within an iModel. For example the Model Tree in Design Review is built using the subject hierarchy. See this Example Information Hierarchy for an idea of what they look like.