Skip to content

Commit

Permalink
Capture expected submodel classes via breaks down relationships (#342)
Browse files Browse the repository at this point in the history
* Capture expected submodel class via breaks down relationships.

* Add breaksDown relationship associated to RepositoryLink.

* Add line-separation between entities for readability.

* Add modelBreaksDownElement relationship to GeologicalModel schema.

* Add missing alias.

* Remove duplicate class.

* Address remaining validation issues.

* Address issues left behind by conflict-merge.
  • Loading branch information
diegoalexdiaz authored Oct 30, 2024
1 parent 358c031 commit 2c44329
Show file tree
Hide file tree
Showing 7 changed files with 203 additions and 3 deletions.
123 changes: 122 additions & 1 deletion Domains/0-Core/BisCore.ecschema.xml
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,116 @@
<Class class="ISubModeledElement" />
</Target>
</ECRelationshipClass>
<ECRelationshipClass typeName="DefinitionModelBreaksDownDefinitionPartition" displayLabel="DefinitionModel Sub-Models DefinitionPartition" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:DefinitionModel to the bis:DefinitionPartition that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="false">
<Class class="DefinitionModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="false">
<Class class="DefinitionPartition" />
</Target>
</ECRelationshipClass>
<ECRelationshipClass typeName="DefinitionModelBreaksDownDefinitionContainer" displayLabel="DefinitionModel Sub-Models DefinitionContainer" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:DefinitionModel to the bis:DefinitionContainer that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="false">
<Class class="DefinitionModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="true">
<Class class="DefinitionContainer" />
</Target>
</ECRelationshipClass>
<ECRelationshipClass typeName="DrawingModelBreaksDownTemplateRecipe2d" displayLabel="DrawingModel Sub-Models TemplateRecipe2d" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:DrawingModel to the bis:TemplateRecipe2d that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="false">
<Class class="DrawingModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="true">
<Class class="TemplateRecipe2d" />
</Target>
</ECRelationshipClass>
<ECRelationshipClass typeName="PhysicalModelBreaksDownTemplateRecipe3d" displayLabel="PhysicalModel Sub-Models TemplateRecipe2d" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:PhysicalModel to the bis:TemplateRecipe3d that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="false">
<Class class="PhysicalModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="true">
<Class class="TemplateRecipe3d" />
</Target>
</ECRelationshipClass>
<ECRelationshipClass typeName="DocumentListModelBreaksDownDocumentPartition" displayLabel="DocumentListModel Sub-Models DocumentPartition" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:DocumentListModel to the bis:DocumentPartition that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="false">
<Class class="DocumentListModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="true">
<Class class="DocumentPartition" />
</Target>
</ECRelationshipClass>
<ECRelationshipClass typeName="GroupInformationModelBreaksDownGroupInformationPartition" displayLabel="DocumentListModel Sub-Models GroupInformationPartition" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:GroupInformationModel to the bis:GroupInformationPartition that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="true">
<Class class="GroupInformationModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="true">
<Class class="GroupInformationPartition" />
</Target>
</ECRelationshipClass>
<ECRelationshipClass typeName="InformationRecordModelBreaksDownInformationRecordPartition" displayLabel="InformationRecordModel Sub-Models InformationRecordPartition" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:InformationRecordModel to the bis:InformationRecordPartition that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="true">
<Class class="InformationRecordModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="true">
<Class class="InformationRecordPartition" />
</Target>
</ECRelationshipClass>
<ECRelationshipClass typeName="LinkModelBreaksDownLinkPartition" displayLabel="LinkModel Sub-Models LinkPartition" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:LinkModel to the bis:LinkPartition that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="true">
<Class class="LinkModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="true">
<Class class="LinkPartition" />
</Target>
</ECRelationshipClass>
<ECRelationshipClass typeName="PhysicalModelBreaksDownPhysicalPartition" displayLabel="PhysicalModel Sub-Models PhysicalPartition" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:PhysicalModel to the bis:PhysicalPartition that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="true">
<Class class="PhysicalModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="true">
<Class class="PhysicalPartition" />
</Target>
</ECRelationshipClass>
<ECRelationshipClass typeName="GraphicalModel3dBreaksDownGraphicalPartition3d" displayLabel="GraphicalModel3d Sub-Models GraphicalPartition3d" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:GraphicalModel3d to the bis:GraphicalPartition3d that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="true">
<Class class="GraphicalModel3d"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="true">
<Class class="GraphicalPartition3d" />
</Target>
</ECRelationshipClass>
<ECRelationshipClass typeName="SpatialLocationModelBreaksDownSpatialLocationPartition" displayLabel="SpatialLocationModel Sub-Models SpatialLocationPartition" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:SpatialLocationModel to the bis:SpatialLocationPartition that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="true">
<Class class="SpatialLocationModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="true">
<Class class="SpatialLocationPartition" />
</Target>
</ECRelationshipClass>
<ECRelationshipClass typeName="PhysicalModelBreaksDownPhysicalPortion" strength="embedding" strengthDirection="backward" modifier="None" description="DEPRECATED">
<ECCustomAttributes>
<Deprecated xmlns="CoreCustomAttributes.01.00.03">
Expand All @@ -376,7 +486,8 @@
<Class class="PhysicalPortion" />
</Target>
</ECRelationshipClass>
<ECRelationshipClass typeName="DrawingModelBreaksDownDrawing" displayLabel="DrawingModel Sub-Models Drawing" strength="embedding" strengthDirection="backward" modifier="None">
<ECRelationshipClass typeName="DrawingModelBreaksDownDrawing" displayLabel="DrawingModel Sub-Models Drawing" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:DrawingModel to the bis:Drawing that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="sub-models" polymorphic="true">
<Class class="DrawingModel"/>
Expand All @@ -394,6 +505,16 @@
<Class class="Sheet" />
</Target>
</ECRelationshipClass>
<ECRelationshipClass typeName="ModelBreaksDownRepositoryLink" displayLabel="Model Sub-Models RepositoryLink" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:Model to the bis:RepositoryLink that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="true">
<Class class="Model"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="true">
<Class class="RepositoryLink" />
</Target>
</ECRelationshipClass>

<ECEntityClass typeName="Element" modifier="Abstract" description="Most abstract class and smallest individually identifiable building block for modeling Entities in a BIS repository.">
<!-- NOTE: Only platform can directly subclass from Element. Everyone else should pick the most appropriate superclass. -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,17 @@
<BaseClass>bis:ISubModeledElement</BaseClass>
<ECProperty propertyName="Description" typeName="string" displayLabel="Description" description="Description for this ClassificationTable"/>
</ECEntityClass>

<ECRelationshipClass typeName="DefinitionModelBreaksDownClassificationTable" displayLabel="DefinitionModel Sub-Models ClassificationTable" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:DefinitionModel to the ClassificationTable that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>bis:ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="false">
<Class class="bis:DefinitionModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="true">
<Class class="ClassificationTable" />
</Target>
</ECRelationshipClass>

<ECEntityClass typeName="Classification" displayLabel="Classification" description="An element that represents a single entry in a classification system">
<BaseClass>bis:DefinitionElement</BaseClass>
Expand Down
21 changes: 21 additions & 0 deletions Domains/1-Common/Grids/Grids.ecschema.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,17 @@
<BaseClass>bis:ISubModeledElement</BaseClass>
</ECEntityClass>

<ECRelationshipClass typeName="SpatialLocationModelBreaksDownGrid" displayLabel="SpatialLocationModel Sub-Models Grid" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:SpatialLocationModel to the Grid that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>bis:ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="false">
<Class class="bis:SpatialLocationModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="true">
<Class class="Grid" />
</Target>
</ECRelationshipClass>

<ECEntityClass typeName="GridAxis" modifier="Abstract" description="A bis:SpatialLocationElement which owns (typically non-intersecting) GridSurface elements.">
<BaseClass>bis:SpatialLocationElement</BaseClass>
<BaseClass>bis:IParentElement</BaseClass>
Expand Down Expand Up @@ -130,6 +141,16 @@
<BaseClass>bis:ISubModeledElement</BaseClass>
</ECEntityClass>

<ECRelationshipClass typeName="SpatialLocationModelBreaksDownGridSystem" displayLabel="SpatialLocationModel Sub-Models GridSystem" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a bis:SpatialLocationModel to the GridSystem that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>bis:ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="false">
<Class class="bis:SpatialLocationModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="true">
<Class class="GridSystem" />
</Target>
</ECRelationshipClass>

<ECEntityClass typeName="PlanGridSystem" modifier="Abstract" description="A GridSystem of Grids with 'planes' that are parallel to the local x-y plane.">
<BaseClass>GridSystem</BaseClass>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,15 @@
<HiddenClass xmlns="CoreCustomAttributes.01.00.00"/>
</ECCustomAttributes>
</ECEntityClass>
<ECRelationshipClass typeName="SpatialLocationModelBreaksDownDesignAlignments" strength="embedding" strengthDirection="Backward" modifier="Sealed" description="Relates a bis:SpatialLocationModel to the DesignAlignments that it sub-models.">
<BaseClass>bis:ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" polymorphic="false" roleLabel="breaks down">
<Class class="bis:SpatialLocationModel"/>
</Source>
<Target multiplicity="(1..1)" polymorphic="false" roleLabel="is broken down by">
<Class class="DesignAlignments"/>
</Target>
</ECRelationshipClass>
<ECEntityClass typeName="HorizontalAlignments" description="Horizontal/Top perspective on Alignments in an AlignmentModel that will be broken down in more detail in a separate HorizontalAlignmentModel.">
<BaseClass>bis:SpatialLocationElement</BaseClass>
<BaseClass>bis:ISubModeledElement</BaseClass>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,17 @@
<BaseClass>anlyt:AnalyticalModel</BaseClass>
</ECEntityClass>

<ECRelationshipClass typeName="GeologicalModelBreaksDownPartition" displayLabel="GeologicalModel Sub-Models GeologicAnalyticalPartition" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a GeologicalModel to the GeologicAnalyticalPartition that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>bis:ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="false">
<Class class="GeologicalModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="false">
<Class class="GeologicAnalyticalPartition" />
</Target>
</ECRelationshipClass>

<ECEntityClass typeName="GeologicElement3d" modifier="Abstract" description="An AnalyticalElement serving as common base class for all element-classes modeling Geological concepts.">
<BaseClass>anlyt:AnalyticalElement</BaseClass>
</ECEntityClass>
Expand Down
Loading

0 comments on commit 2c44329

Please sign in to comment.