@bentley/civil-physical-schema 1.0.3-dev.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"$schema":"https://dev.bentley.com/json_schemas/ec/32/ecschema","name":"CivilPhysical","version":"01.00.03","alias":"cvphys","description":"Main schema for the physical modeling of elements used in Civil infrastructure.","references":[{"name":"CoreCustomAttributes","version":"01.00.
|
|
1
|
+
{"$schema":"https://dev.bentley.com/json_schemas/ec/32/ecschema","name":"CivilPhysical","version":"01.00.03","alias":"cvphys","description":"Main schema for the physical modeling of elements used in Civil infrastructure.","references":[{"name":"CoreCustomAttributes","version":"01.00.04"},{"name":"BisCustomAttributes","version":"01.00.00"},{"name":"BisCore","version":"01.00.25"},{"name":"LinearReferencing","version":"02.00.03"},{"name":"CivilUnits","version":"01.00.00"}],"customAttributes":[{"className":"CoreCustomAttributes.ProductionStatus","SupportedUse":"FieldTesting"},{"className":"BisCustomAttributes.SchemaLayerInfo","Value":"DisciplinePhysical"}],"items":{"LayeredStructure":{"schemaItemType":"EntityClass","label":"Layered Structure","description":"A bis:PhysicalElement that assembles multiple layers, designed to provide durability, load distribution, and/or environmental resistance.","modifier":"Abstract","baseClass":"BisCore.PhysicalElement","mixins":["BisCore.IParentElement"]},"LayeredStructureType":{"schemaItemType":"EntityClass","label":"Layered Structure Type","description":"Defines a shared set of properties whose values vary per-type of Layered Structure rather than per-instance.","modifier":"Abstract","baseClass":"BisCore.PhysicalType"},"LayeredStructureIsOfType":{"schemaItemType":"RelationshipClass","description":"A type-instance relation; one that indicates that the specific LayeredStructure is an instance of the defined LayeredStructureType.","modifier":"None","baseClass":"BisCore.PhysicalElementIsOfType","strength":"Referencing","strengthDirection":"Forward","source":{"multiplicity":"(0..*)","roleLabel":"is of","polymorphic":true,"constraintClasses":["CivilPhysical.LayeredStructure"]},"target":{"multiplicity":"(0..1)","roleLabel":"is type of","polymorphic":true,"constraintClasses":["CivilPhysical.LayeredStructureType"]}},"LayeredStructureAssemblesLayers":{"schemaItemType":"RelationshipClass","description":"A relationship between a LayeredStructure and the constituent layers that it assembles.","modifier":"None","baseClass":"BisCore.PhysicalElementAssemblesElements","strength":"Embedding","strengthDirection":"Forward","source":{"multiplicity":"(0..1)","roleLabel":"assembles","polymorphic":true,"constraintClasses":["CivilPhysical.LayeredStructure"]},"target":{"multiplicity":"(0..*)","roleLabel":"is assembled by","polymorphic":true,"constraintClasses":["BisCore.PhysicalElement"]}},"LayeredStructureTypeComposesSubTypes":{"schemaItemType":"RelationshipClass","description":"A relationship used to identify the bis:PhysicalType instances that are sub-parts to compose a larger LayeredStructureType.","modifier":"Abstract","baseClass":"BisCore.PhysicalTypeComposesSubTypes","properties":[{"name":"SubTypeThickness","type":"PrimitiveProperty","description":"The thickness measurement of the sub-type.","label":"Thickness","kindOfQuantity":"CivilUnits.LENGTH_SHORT","typeName":"double"}],"strength":"Referencing","strengthDirection":"Forward","source":{"multiplicity":"(0..*)","roleLabel":"composes","polymorphic":true,"constraintClasses":["CivilPhysical.LayeredStructureType"]},"target":{"multiplicity":"(0..*)","roleLabel":"is composed by","polymorphic":true,"constraintClasses":["BisCore.PhysicalType"]}},"Course":{"schemaItemType":"EntityClass","label":"Course","description":"A bis:PhysicalElement modeling a typical layer assembled by a LayeredStructure, usually of a single material, whose length greatly exceeds its thickness and often also its width, laid on site on top of another horizontal or nearly horizontal element.","baseClass":"LinearReferencing.LinearPhysicalElement"},"CourseType":{"schemaItemType":"EntityClass","label":"Course Type","description":"Defines a shared set of properties whose values vary per-type of Course rather than per-instance.","baseClass":"BisCore.PhysicalType"},"CourseIsOfType":{"schemaItemType":"RelationshipClass","description":"A type-instance relation; one that indicates that the specific cp:Course is an instance of the defined cp:CourseType.","modifier":"None","baseClass":"BisCore.PhysicalElementIsOfType","strength":"Referencing","strengthDirection":"Forward","source":{"multiplicity":"(0..*)","roleLabel":"is of","polymorphic":true,"constraintClasses":["CivilPhysical.Course"]},"target":{"multiplicity":"(0..1)","roleLabel":"is type of","polymorphic":true,"constraintClasses":["CivilPhysical.CourseType"]}},"Curb":{"schemaItemType":"EntityClass","label":"Curb","description":"A bis:PhysicalElement intended to separate surfacings of different surfaces and to provide physical delineation or containment.","baseClass":"LinearReferencing.LinearPhysicalElement"},"CurbType":{"schemaItemType":"EntityClass","label":"Curb Type","description":"Defines a shared set of properties whose values vary per-type of Curb rather than per-instance.","baseClass":"BisCore.PhysicalType"},"CurbIsOfType":{"schemaItemType":"RelationshipClass","description":"A type-instance relation; one that indicates that the specific cp:Curb is an instance of the defined cp:CurbType.","modifier":"None","baseClass":"BisCore.PhysicalElementIsOfType","strength":"Referencing","strengthDirection":"Forward","source":{"multiplicity":"(0..*)","roleLabel":"is of","polymorphic":true,"constraintClasses":["CivilPhysical.Curb"]},"target":{"multiplicity":"(0..1)","roleLabel":"is type of","polymorphic":true,"constraintClasses":["CivilPhysical.CurbType"]}},"RetainingWall":{"schemaItemType":"EntityClass","label":"Retaining Wall","description":"A lr:LinearPhysicalElement modeling a structure built to hold back soil or other materials, supporting them laterally, preventing them from sliding or eroding away.","baseClass":"LinearReferencing.LinearPhysicalElement"},"RetainingWallType":{"schemaItemType":"EntityClass","label":"Retaining Wall Type","description":"Defines a shared set of properties whose values vary per-type of RetainingWall rather than per-instance.","baseClass":"BisCore.PhysicalType"},"RetainingWallIsOfType":{"schemaItemType":"RelationshipClass","description":"A type-instance relation; one that indicates that the specific cp:RetainingWall is an instance of the defined cp:RetainingWallType.","modifier":"None","baseClass":"BisCore.PhysicalElementIsOfType","strength":"Referencing","strengthDirection":"Forward","source":{"multiplicity":"(0..*)","roleLabel":"is of","polymorphic":true,"constraintClasses":["CivilPhysical.RetainingWall"]},"target":{"multiplicity":"(0..1)","roleLabel":"is type of","polymorphic":true,"constraintClasses":["CivilPhysical.RetainingWallType"]}},"SurfaceMarking":{"schemaItemType":"EntityClass","label":"Surface Marking","description":"A bis:PhysicalElement modeling markings on a surface.","baseClass":"BisCore.PhysicalElement"},"SurfaceMarkingType":{"schemaItemType":"EntityClass","label":"Surface Marking Type","description":"Defines a shared set of properties whose values vary per-type of SurfaceMarking rather than per-instance.","baseClass":"BisCore.PhysicalType"},"SurfaceMarkingIsOfType":{"schemaItemType":"RelationshipClass","description":"A type-instance relation; one that indicates that the specific SurfaceMarking is an instance of the defined SurfaceMarkingType.","modifier":"None","baseClass":"BisCore.PhysicalElementIsOfType","strength":"Referencing","strengthDirection":"Forward","source":{"multiplicity":"(0..*)","roleLabel":"is of","polymorphic":true,"constraintClasses":["CivilPhysical.SurfaceMarking"]},"target":{"multiplicity":"(0..1)","roleLabel":"is type of","polymorphic":true,"constraintClasses":["CivilPhysical.SurfaceMarkingType"]}}}}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
<ECCustomAttributes>
|
|
14
14
|
<ProductionStatus xmlns="CoreCustomAttributes.01.00.00">
|
|
15
|
-
<SupportedUse>
|
|
15
|
+
<SupportedUse>FieldTesting</SupportedUse>
|
|
16
16
|
</ProductionStatus>
|
|
17
17
|
<SchemaLayerInfo xmlns="BisCustomAttributes.01.00.00">
|
|
18
18
|
<Value>DisciplinePhysical</Value>
|
|
@@ -55,31 +55,6 @@
|
|
|
55
55
|
<ECProperty propertyName="SubTypeThickness" typeName="double" displayLabel="Thickness" kindOfQuantity="cvu:LENGTH_SHORT" description="The thickness measurement of the sub-type."/>
|
|
56
56
|
</ECRelationshipClass>
|
|
57
57
|
|
|
58
|
-
<ECEntityClass typeName="Pavement" displayLabel="Pavement" description="A LayeredStructure designed to support vehicular and/or pedestrian traffic, that provide durability, load distribution, and environmental resistance.">
|
|
59
|
-
<BaseClass>LayeredStructure</BaseClass>
|
|
60
|
-
</ECEntityClass>
|
|
61
|
-
<ECEntityClass typeName="PavementType" displayLabel="Pavement Type" description="Defines a shared set of properties whose values vary per-type of Pavement rather than per-instance.">
|
|
62
|
-
<BaseClass>LayeredStructureType</BaseClass>
|
|
63
|
-
</ECEntityClass>
|
|
64
|
-
<ECRelationshipClass typeName="PavementIsOfType" strength="referencing" modifier="None" description="A type-instance relation; one that indicates that the specific Pavement is an instance of the defined PavementType.">
|
|
65
|
-
<BaseClass>bis:PhysicalElementIsOfType</BaseClass>
|
|
66
|
-
<Source multiplicity="(0..*)" roleLabel="is of" polymorphic="true">
|
|
67
|
-
<Class class="Pavement" />
|
|
68
|
-
</Source>
|
|
69
|
-
<Target multiplicity="(0..1)" roleLabel="is type of" polymorphic="true">
|
|
70
|
-
<Class class="PavementType"/>
|
|
71
|
-
</Target>
|
|
72
|
-
</ECRelationshipClass>
|
|
73
|
-
<ECRelationshipClass typeName="PavementTypeComposesSubTypes" modifier="Abstract" strength="referencing" strengthDirection="forward" description="A relationship used to identify the bis:PhysicalType instances that are sub-parts to compose a larger PavementType.">
|
|
74
|
-
<BaseClass>bis:PhysicalTypeComposesSubTypes</BaseClass>
|
|
75
|
-
<Source multiplicity="(0..*)" roleLabel="composes" polymorphic="true">
|
|
76
|
-
<Class class="PavementType"/>
|
|
77
|
-
</Source>
|
|
78
|
-
<Target multiplicity="(0..*)" roleLabel="is composed by" polymorphic="true">
|
|
79
|
-
<Class class="bis:PhysicalType"/>
|
|
80
|
-
</Target>
|
|
81
|
-
</ECRelationshipClass>
|
|
82
|
-
|
|
83
58
|
<ECEntityClass typeName="Course" displayLabel="Course" description="A bis:PhysicalElement modeling a typical layer assembled by a LayeredStructure, usually of a single material, whose length greatly exceeds its thickness and often also its width, laid on site on top of another horizontal or nearly horizontal element.">
|
|
84
59
|
<BaseClass>lr:LinearPhysicalElement</BaseClass>
|
|
85
60
|
</ECEntityClass>
|
package/CivilPhysical.remarks.md
CHANGED
|
@@ -49,23 +49,11 @@ A `Curb` is typically a border of stone, concrete or other rigid material formed
|
|
|
49
49
|
|
|
50
50
|
Equivalent to [IfcKerb](http://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcKerb.htm).
|
|
51
51
|
|
|
52
|
-
### PavementType
|
|
53
|
-
|
|
54
|
-
Instances of `PavementType` provide an additional classification that can be applied to `Pavement`s.
|
|
55
|
-
|
|
56
|
-
Equivalent to [IfcPavementType](http://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPavementType.htm).
|
|
57
|
-
|
|
58
|
-
### Pavement
|
|
59
|
-
|
|
60
|
-
`Pavement` instances must be contained in `PhysicalModel`s.
|
|
61
|
-
|
|
62
|
-
Equivalent to [IfcPavement](http://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPavement.htm).
|
|
63
|
-
|
|
64
52
|
### LayeredStructureType
|
|
65
53
|
|
|
66
54
|
A `LayeredStructureType` associates the `bis:PhysicalType`s modeling the layers that it is composed of via the `LayeredStructureTypeComposesSubTypes` relationship. The _thickness_ and _order_ of each layer that a specifc `LayeredStructureType` is composed of is captured by the _SubTypeThickness_ and _MemberPriority_ properties of the `LayeredStructureTypeComposesSubTypes` table-relationship respectively.
|
|
67
55
|
|
|
68
|
-
Therefore, individual `bis:PhysicalType`s (e.g. `CourseType`) composing a `LayeredStructureType` do not capture a _thickness_ measurement by themselves; one needs to introduce the larger context (i.e. a `LayeredStructureType` they are composing - e.g.
|
|
56
|
+
Therefore, individual `bis:PhysicalType`s (e.g. `CourseType`) composing a `LayeredStructureType` do not capture a _thickness_ measurement by themselves; one needs to introduce the larger context (i.e. a `LayeredStructureType` they are composing - e.g. a particular Pavement Design) in order to capture their _thickness_ and _order_ with respect to the overall structure.
|
|
69
57
|
|
|
70
58
|
## Relationship Classes
|
|
71
59
|
|
|
@@ -73,4 +61,34 @@ Therefore, individual `bis:PhysicalType`s (e.g. `CourseType`) composing a `Layer
|
|
|
73
61
|
|
|
74
62
|
An instance of `LayeredStructureTypeComposesSubTypes` captures the _thickness_ and _order_ of a `bis:PhysicalType` at its target end-point (e.g. a `CourseType`) in context of a `LayeredStructureType` instance at its source end-point. They are captured on its _SubTypeThickness_ and _MemberPriority_ properties.
|
|
75
63
|
|
|
76
|
-
By convention, the top-layer of a `LayeredStructureType` shall have the _MemberPriority_ property of this relationship set to 0 (zero). The subsequent layer down shall have this property set to 1 (one), and so on.
|
|
64
|
+
By convention, the top-layer of a `LayeredStructureType` shall have the _MemberPriority_ property of this relationship set to 0 (zero). The subsequent layer down shall have this property set to 1 (one), and so on.
|
|
65
|
+
|
|
66
|
+
## Sample ECSQL queries
|
|
67
|
+
|
|
68
|
+
- Query for the _thickness_ of a particular layer (e.g. `Course`) in a `LayeredStructure` (e.g. Pavement).
|
|
69
|
+
|
|
70
|
+
```sql
|
|
71
|
+
SELECT
|
|
72
|
+
comp.SubTypeThickness [Layer Thickness]
|
|
73
|
+
FROM
|
|
74
|
+
bis.PhysicalElement layer INNER JOIN bis.PhysicalType pt ON layer.TypeDefinition.Id = pt.ECInstanceId
|
|
75
|
+
INNER JOIN cvphys.LayeredStructure structure ON structure.ECInstanceId = layer.Parent.Id
|
|
76
|
+
INNER JOIN cvphys.LayeredStructureType structType ON structure.TypeDefinition.Id = structType.ECInstanceId
|
|
77
|
+
INNER JOIN cvphys.LayeredStructureTypeComposesSubTypes comp ON comp.TargetECInstanceId = pt.ECInstanceId
|
|
78
|
+
AND comp.SourceECInstanceId = structType.ECInstanceId
|
|
79
|
+
WHERE
|
|
80
|
+
layer.ECInstanceId = :layerId
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
- Compute the overall _thickness_ of a particular `LayeredStructure` (e.g. Pavement).
|
|
84
|
+
|
|
85
|
+
```sql
|
|
86
|
+
SELECT
|
|
87
|
+
SUM(comp.SubTypeThickness) [Overall Thickness]
|
|
88
|
+
FROM
|
|
89
|
+
cvphys.LayeredStructure structure
|
|
90
|
+
INNER JOIN cvphys.LayeredStructureType structType ON structure.TypeDefinition.Id = structType.ECInstanceId
|
|
91
|
+
INNER JOIN cvphys.LayeredStructureTypeComposesSubTypes comp ON comp.SourceECInstanceId = structType.ECInstanceId
|
|
92
|
+
WHERE
|
|
93
|
+
structure.ECInstanceId = :layeredStructureId
|
|
94
|
+
```
|
|
Binary file
|