forked from bSI-InfraRoom/IFC-Specification
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathti-bridge.mvdxml
2213 lines (2155 loc) · 107 KB
/
ti-bridge.mvdxml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8"?>
<mvdXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://buildingsmart-tech.org/mvd/XML/1.1" xsi:schemaLocation="http://standards.buildingsmart.org/MVD/RELEASE/mvdXML/v1-1/mvdXML_V1.1.xsd" uuid="df5ef63d-e378-44ae-bcae-654ee1d5aec2" name="mvd">
<Templates>
<ConceptTemplate uuid="a322fdd7-cd28-4ea7-8797-f6cf124ab3d6" name="Partial Templates" applicableSchema="IFC4">
<Definitions>
<Definition>
<Body><![CDATA[Partial concept templates are described herein to indicate usage of common data types, which are then incorporated into other templates.]]>
</Body>
</Definition>
</Definitions>
<SubTemplates>
<ConceptTemplate uuid="f77f739d-c1f1-4bc5-95c3-b7585e0a9f54" name="Geometry" applicableSchema="IFC4" applicableEntity="IfcGeometricRepresentationItem">
<Definitions>
<Definition>
<Body><![CDATA[Geometric items are used to describe shape representations of products.]]>
</Body>
</Definition>
</Definitions>
<SubTemplates>
<ConceptTemplate uuid="d1bbb094-d206-43eb-861d-d30b55524748" name="Curve Axis Geometry" applicableSchema="IFC4" applicableEntity="IfcBoundedCurve">
<SubTemplates>
<ConceptTemplate uuid="cf0d4709-dc5b-484e-ae24-946553d6a4e1" name="Gradient Curve" applicableSchema="IFC4" applicableEntity="IfcGradientCurve">
<Definitions>
<Definition>
<Body><![CDATA[Curve geometry based on a 2D horizontal projection as an _IfcCompositeCurve_ referencing _IfcCurveSegment_ occurrences. The vertical profile is represented by another independent list of _IfcCurveSegment_ occurrences.]]>
</Body>
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="BaseCurve">
<EntityRules>
<EntityRule EntityName="IfcCompositeCurve">
<AttributeRules>
<AttributeRule RuleID="CompositeSegments" AttributeName="Segments">
<EntityRules>
<EntityRule EntityName="IfcCurveSegment">
<References>
<Template ref="0a3d3dd9-f726-42f4-ab52-250f4c89b546" />
</References>
</EntityRule>
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule RuleID="VerticalSegments" AttributeName="Segments">
<EntityRules>
<EntityRule EntityName="IfcCurveSegment">
<References>
<Template ref="0a3d3dd9-f726-42f4-ab52-250f4c89b546" />
</References>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
</SubTemplates>
</ConceptTemplate>
<ConceptTemplate uuid="2a8cab53-ed00-4d33-ac5f-85ae1dbf3ff7" name="Curve Segment Geometry" applicableSchema="IFC4" applicableEntity="IfcCurveSegment">
<SubTemplates>
<ConceptTemplate uuid="0a3d3dd9-f726-42f4-ab52-250f4c89b546" name="Arc Segment" applicableSchema="IFC4" applicableEntity="IfcCurveSegment">
<Rules>
<AttributeRule AttributeName="ParentCurve">
<EntityRules>
<EntityRule EntityName="IfcCircle">
<AttributeRules>
<AttributeRule AttributeName="Radius">
<EntityRules>
<EntityRule EntityName="IfcPositiveLengthMeasure" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SegmentStart">
<EntityRules>
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SegmentLength">
<EntityRules>
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="fba4e3b1-2735-4c54-8d9e-88f5b4a4d90c" name="Bloss Transition Segment" applicableSchema="IFC4" applicableEntity="IfcCurveSegment">
<Definitions>
<Definition>
<Body><![CDATA[The Bloss transition segment is a special case of a fifht order spiral where the curvature rate of change is a cubic function and the terms are dependent on the length L measured from the inflection point. The parameter value is defined as the deflection i.e. bearing angle &Theta.
Only the cubic and quadratic terms are populated with the following values:
QubicTerm = L/³√2
QuadraticTerm = L/√3]]>
</Body>
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="ParentCurve">
<EntityRules>
<EntityRule EntityName="IfcThirdOrderPolynomialSpiral">
<AttributeRules>
<AttributeRule AttributeName="QubicTerm">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="QuadraticTerm">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="bd1f5ac4-e795-4de7-b5aa-8551fe51086d" name="Clothoid Transition Segment" applicableSchema="IFC4" applicableEntity="IfcCurveSegment">
<Definitions>
<Definition>
<Body><![CDATA[A clothoid segment is based on the IfcClothoid where the value for the clothoid constant is specified as √L and L is the length measured from the inflection point.]]>
</Body>
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="ParentCurve">
<EntityRules>
<EntityRule EntityName="IfcClothoid">
<AttributeRules>
<AttributeRule AttributeName="ClothoidConstant">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SegmentStart">
<EntityRules>
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SegmentLength">
<EntityRules>
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="f6b094a5-1e21-4e00-ad19-e01945296016" name="Cosine Spiral Transition Segment" applicableSchema="IFC4" applicableEntity="IfcCurveSegment">
<Definitions>
<Definition>
<Body><![CDATA[The cosine transition segment is a special case of a spiral where the curvature rate of change is a cosine function and the terms are dependent on the length L measured from the inflection point. The parameter value is defined as the deflection i.e. bearing angle &Theta.
The values of its individual terms dependent on segment length L:
CosineTerm = L
Constant = 1]]>
</Body>
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="ParentCurve">
<EntityRules>
<EntityRule EntityName="IfcCosineSpiral">
<AttributeRules>
<AttributeRule AttributeName="CosineTerm">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="ConstantTerm">
<EntityRules>
<EntityRule EntityName="IfcReal" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SegmentStart">
<EntityRules>
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SegmentLength">
<EntityRules>
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="27d2cc42-f560-4879-9c8e-3547bcadf796" name="Cubic Transition Segment" applicableSchema="IFC4" applicableEntity="IfcCurveSegment">
<Definitions>
<Definition>
<Body><![CDATA[The cubic transition segment is modelled with _IfcPolynomialCurve_ with certain restrictions. The size of the attribute CoefficientsY is restricted to 4. The cubic term is on position 4. In general, the CoefficietsX size would be restricted to 2 and values specified as [0, 1]. This produces the following result:
y = CoefficientsX[3]*x³, where other values in CoefficientsY are 0.]]>
</Body>
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="ParentCurve">
<EntityRules>
<EntityRule EntityName="IfcPolynomialCurve">
<AttributeRules>
<AttributeRule AttributeName="CoefficientsX">
<EntityRules>
<EntityRule EntityName="IfcReal" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="CoefficientsY">
<EntityRules>
<EntityRule EntityName="IfcReal" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="90c1a22a-f0a0-4cfe-a9d3-ee01a5743618" name="Helmert Transition Segment" applicableSchema="IFC4" applicableEntity="IfcCurveSegment">
<Definitions>
<Definition>
<Body><![CDATA[The Helmert transition segment is a special case of a fourth order spiral where the curvature rate of change is a quadratic function and the terms are dependent on the length L measured from the inflection point. The parameter value is defined as the deflection i.e. bearing angle &Theta.
The terms for the first half of the segment:
QuadraticTerm = L/√2
rest are 0.
Terms for the second half of the segment:
QuadraticTerm = -L/√2
LinearTerm = L/4
Constant = -1
SegmentStart is the bearing angle at start and Segment length is the bearing angle at the end of the segment.]]>
</Body>
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="ParentCurve">
<EntityRules>
<EntityRule EntityName="IfcSecondOrderPolynomialSpiral">
<AttributeRules>
<AttributeRule RuleID="QuadraticTerm" AttributeName="QuadraticTerm">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
</EntityRules>
</AttributeRule>
<AttributeRule RuleID="LinearTerm" AttributeName="LinearTerm">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
</EntityRules>
</AttributeRule>
<AttributeRule RuleID="Constant" AttributeName="ConstantTerm">
<EntityRules>
<EntityRule EntityName="IfcReal" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SegmentStart">
<EntityRules>
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SegmentLength">
<EntityRules>
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="a767cb6d-90b4-4397-8804-39cd3d5ed390" name="Linear Segment" applicableSchema="IFC4" applicableEntity="IfcCurveSegment">
<Rules>
<AttributeRule AttributeName="ParentCurve">
<EntityRules>
<EntityRule EntityName="IfcPolyline" />
<EntityRule EntityName="IfcLine" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SegmentStart">
<EntityRules>
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SegmentLength">
<EntityRules>
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="cd1ee45e-f96e-464a-a324-478d74bb894b" name="Parabolic Transition Segment" applicableSchema="IFC4" applicableEntity="IfcCurveSegment">
<Definitions>
<Definition>
<Body><![CDATA[The parabolic transition segment is modelled with _IfcPolynomialCurve_ with certain restrictions. The size of the attribute CoefficientsY is restricted to 3. The quadratic term is on position 3. In general, the CoefficientsX size would be restricted to 2 and values specified as [0, 1]. This produces the following result:
y = CoefficientsX[3]*x², where other values in CoefficientsY are 0.]]>
</Body>
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="ParentCurve">
<EntityRules>
<EntityRule EntityName="IfcPolynomialCurve">
<AttributeRules>
<AttributeRule AttributeName="CoefficientsX">
<EntityRules>
<EntityRule EntityName="IfcReal" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="CoefficientsY">
<EntityRules>
<EntityRule EntityName="IfcReal" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="a5c0cd3d-2fd4-40eb-b118-5d5e1795e711" name="Sine Spiral Transition Segment" applicableSchema="IFC4" applicableEntity="IfcCurveSegment">
<Definitions>
<Definition>
<Body><![CDATA[The sine transition segment is a special case of a spiral where the curvature rate of change is a sine function and the terms are dependent on the length L measured from the inflection point. The parameter value is defined as the deflection i.e. bearing angle &Theta.
The values of its individual terms are identical and equal to the lenght of the segment L:
SineTerm = L
LinearTerm = L]]>
</Body>
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="ParentCurve">
<EntityRules>
<EntityRule EntityName="IfcSineSpiral">
<AttributeRules>
<AttributeRule AttributeName="SineTerm">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="LinearTerm">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SegmentStart">
<EntityRules>
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SegmentLength">
<EntityRules>
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="48d363f4-e6a7-4b02-9ddd-af9b44fb50ce" name="Viennese Bend Transition Segment" applicableSchema="IFC4" applicableEntity="IfcCurveSegment">
<Definitions>
<Definition>
<Body><![CDATA[The Viennese Bend (R) transition segment is a kinematic high performance transition. The horizontal curvature is assembled by the baseformula and a term depending on the height of the gravity center line relative to the track plane and by the applied cant values at the start and the end of the segment.
The x/y coordinates can be calculated using a 7th order polynominal spiral.]]>
</Body>
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="ParentCurve">
<EntityRules>
<EntityRule EntityName="IfcSeventhOrderPolynomialSpiral">
<AttributeRules>
<AttributeRule AttributeName="ConstantTerm">
<EntityRules>
<EntityRule EntityName="IfcReal" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="QuadraticTerm">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="CubicTerm">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="QuarticTerm">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="QuinticTerm">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SexticTerm">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SepticTerm">
<EntityRules>
<EntityRule EntityName="IfcLengthMeasure" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SegmentStart">
<EntityRules>
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="SegmentLength">
<EntityRules>
<EntityRule EntityName="IfcParameterValue" />
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
</SubTemplates>
</ConceptTemplate>
</SubTemplates>
</ConceptTemplate>
<ConceptTemplate uuid="d9ea8f0e-f629-46b2-adf5-941da7bcc8bc" name="Material Definition" applicableSchema="IFC4" applicableEntity="IfcMaterialDefinition">
<SubTemplates>
<ConceptTemplate uuid="5986b61a-b79f-44e0-a93f-9fddf470a4e1" name="Material" applicableSchema="IFC4" applicableEntity="IfcMaterial">
<Rules>
<AttributeRule RuleID="MaterialName" AttributeName="Name">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="Description">
<EntityRules>
<EntityRule EntityName="IfcText" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="Category">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
</SubTemplates>
</ConceptTemplate>
</SubTemplates>
</ConceptTemplate>
<ConceptTemplate uuid="4b385464-b99a-42bc-a17a-a0a647a1ab5b" name="Object Association" applicableSchema="IFC4" applicableEntity="IfcObjectDefinition">
<Definitions>
<Definition>
<Body><![CDATA[The concept of an _Object Association_ provides the means to associate sources of information (most notably a classification, library, document, approval, contraint, or material) to objects definitions. The information associated may reside internally or externally in regard of the project data.]]>
</Body>
</Definition>
</Definitions>
<SubTemplates>
<ConceptTemplate uuid="ea2a63be-fd0d-426d-863b-52c3970ca585" name="Material Association" applicableSchema="IFC4" applicableEntity="IfcObjectDefinition">
<Definitions>
<Definition>
<Body><![CDATA[Any product or product type can have associated materials indicating the physical composition of an object.
> EXAMPLE An object can be comprised of a single material or a set of materials with a particular layout. Several examples include: > * a slab may have an associated layer of concrete;
> * a beam may have an associated I-Shape profile of steel;
> * a door may have associated constituents for framing and glazing;
> * a port may have an associated profile and/or material flowing through it such as hot water.
Materials can have representations for surface styles indicating colors, textures, and light reflectance for 3D rendering. Materials can have representations for fill styles indicating colors, tiles, and hatch patterns for 2D rendering. Materials can have properties such as density, elasticity, thermal resistance, and others as defined in this specification. Materials can also be classified according to a referenced industry standard.
> EXAMPLE Material information can also be given at object type, defining the common material data for all occurrences of the same type. It is then accessible by the inverse _IsTypedBy_ relationship pointing via _HasAssociations_ and via _IfcRelAssociatesMaterial.RelatingMaterial_ to the material information. If both are given, then the material directly assigned to object occurrence overrides the material assigned to object type.]]>
</Body>
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="HasAssociations">
<EntityRules>
<EntityRule EntityName="IfcRelAssociatesMaterial">
<AttributeRules>
<AttributeRule AttributeName="RelatingMaterial" />
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
<SubTemplates>
<ConceptTemplate uuid="5f39a814-44a0-4fb3-8dc6-ddaa0560fc54" name="Material Single" applicableSchema="IFC4" applicableEntity="IfcObjectDefinition">
<Definitions>
<Definition>
<Body><![CDATA[Materials are directly associated with products and product types to indicate a uniform material for the entire object.]]>
</Body>
</Definition>
<Definition>
<Body lang="tt"><![CDATA[<TemplateRules operator="and">
<TemplateRule Parameters="MaterialName[Value]='steel'"/>
</TemplateRules>]]>
</Body>
<Link lang="tt" href="" />
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="HasAssociations">
<EntityRules>
<EntityRule EntityName="IfcRelAssociatesMaterial">
<AttributeRules>
<AttributeRule AttributeName="RelatingMaterial">
<EntityRules>
<EntityRule EntityName="IfcMaterial">
<References>
<Template ref="5986b61a-b79f-44e0-a93f-9fddf470a4e1" />
</References>
</EntityRule>
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
</SubTemplates>
</ConceptTemplate>
</SubTemplates>
</ConceptTemplate>
<ConceptTemplate uuid="ccb45aa2-74e1-46e8-8e35-ca5e5d7cc9dd" name="Object Attributes" applicableSchema="IFC4" applicableEntity="IfcRoot">
<Definitions>
<Definition>
<Body><![CDATA[All entities having semantic significance derive from _IfcRoot_, where instances are identifiable within a data set using a compressed globally unique identifier (IFC-GUID). This identifier must never change during the lifetime of an object, which allows data to be merged, versioned, or referenced from other locations.
Resource-level instances (not deriving from _IfcRoot_) do not have any identity, such that two instances having identical state are considered equal. For example, if an object has coordinates described by an _IfcCartesianPoint_ instance, another object with the same coordinates may have a separate instance of _IfcCartesianPoint_ or share the same instance; such difference is a matter of data storage optimization and does not imply any semantic relationship. This also implies that non-rooted instances may only exist if referenced by at least one rooted instance through either a direct attribute or inverse attribute, or following a chain of attribute references on instances.
The distinction between rooted and non-rooted (resource-level) entities achieves several goals:
{ .ref}
* File size may be reduced by interning (sharing) non-rooted data instances;
* Database retrieval may be more efficient by storing non-rooted data local to rooted data instances;
* Storage size may be reduced by avoiding IFC-GUID storage for items not requiring direct retrieval;
* Comparisons of differences may be done at a higher level where the context of such change is apparent;
* Implementations may treat non-rooted data instances as immutable for efficiency or simplified usage.]]>
</Body>
</Definition>
</Definitions>
<SubTemplates>
<ConceptTemplate uuid="25248261-98df-4d0a-9364-5653575ca421" name="Object Predefined Type" applicableSchema="IFC4" applicableEntity="IfcObject">
<Definitions>
<Definition>
<Body><![CDATA[Many object occurrences have an attribute named _PredefinedType_ being a specific enumeration. Such predefined type essentially provides another level of "classification by inheritance" to further differentiate objects without the need for additional sub types. Predefined types are not just informational; various rules apply such as applicable property sets, part composition, and distribution ports.Such predefined types are added by selecting the correct enumerator for the attribute _PredefinedType_. If a custom value is needed, the attribute _ObjectType_ has to be used to define such custom type, whereas the _PredefinedType_ is set to _USERDEFINED_.
The main attributes to be provided for a _Object Occurrence Predefined Type_ are:
* _PredefinedType_: holds the entity specific enumeration of predefined types to further classify the entity
* _ObjectType_: allows for a custom value, if no applicable enumerator can be found
If the object is typed by an _IfcTypeObject_, then the _PredefinedType_ at the _IfcObject_ occurrence shall only be used if the _PredefinedType_ at _IfcTypeObject_ is set to _NOTDEFINED_.]]>
</Body>
</Definition>
<Definition>
<Body lang="tt"><![CDATA[<TemplateRules operator="and">
<TemplateRules operator="or">
<!-- Other checking type attribute on object or occurrence -->
<TemplateRule Parameters="PredefinedType[Value]='USERDEFINED' AND UserDefinedType[Value]='Aussteifung'"/>
<TemplateRules operator="and">
<TemplateRules operator="nor">
<TemplateRule Parameters="PredefinedType[Value]='USERDEFINED' OR UserDefinedType[Value]='Aussteifung'"/>
</TemplateRules>
<TemplateRules operator="or">
<TemplateRule Parameters="TypePredefinedType[Value]='USERDEFINED' AND TypeUserdefinedType[Value]='Aussteifung'"/>
</TemplateRules>
</TemplateRules>
</TemplateRules>
</TemplateRules>]]>
</Body>
<Link lang="tt" href="" />
</Definition>
</Definitions>
<Rules>
<AttributeRule RuleID="UserDefinedType" AttributeName="ObjectType">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
<AttributeRule RuleID="PredefinedType" AttributeName="PredefinedType" />
<AttributeRule AttributeName="IsTypedBy">
<EntityRules>
<EntityRule EntityName="IfcRelDefinesByType">
<AttributeRules>
<AttributeRule AttributeName="RelatingType">
<EntityRules>
<EntityRule EntityName="IfcTypeObject">
<AttributeRules>
<AttributeRule RuleID="TypeUserdefinedType" AttributeName="ElementType" />
<AttributeRule RuleID="TypePredefinedType" AttributeName="PredefinedType" />
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="c19ec186-9cfd-47fc-a4d4-9fb35008d04a" name="Object User Identity" applicableSchema="IFC4" applicableEntity="IfcObject">
<Definitions>
<Definition>
<Body><![CDATA[An object may be labeled for human identification where the _Name_ may indicate a well-known identifier. While there is no restriction on usage of such identifier, it is recommended the _Name_ is unique within it's containing scope. Further guidance on usage is provided at specific entities; for example, for spaces, the _Name_ may reflect a room number. An object may have a description provided via the _Description_ attribute that provides further context in identifying or locating the object.
Specific subtypes introduce additional attributes for _User Identity_.
* Spatial objects may be further identified via the _LongName_ attribute. This value should generally correspond to building signage describing floor levels or rooms. While the _Name_ attribute generally provides a coded or abbreviated identifier, the _LongName_ provides a functional name for the location such as "Reception Area". See concept template _Spatial Element Occurrence Attributes_
* Physical elements may be further identified via the _Tag_ attribute. This is a human readable identifier such as an element or item number While there is no restriction on usage of such tags, it is recommended the _Tag_ is unique within it's containing scope. See concept template _Element Occurrence Attributes_]]>
</Body>
</Definition>
<Definition>
<Body lang="tt"><![CDATA[<TemplateRules operator="and">
<TemplateRule Parameters="ObjectName[Value]='Member_1-001'"></TemplateRule>
</TemplateRules> ]]>
</Body>
<Link lang="tt" href="" />
</Definition>
</Definitions>
<Rules>
<AttributeRule RuleID="ObjectName" AttributeName="Name">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
<AttributeRule RuleID="ObjectDescription" AttributeName="Description">
<EntityRules>
<EntityRule EntityName="IfcText" />
</EntityRules>
</AttributeRule>
<AttributeRule AttributeName="IsTypedBy">
<EntityRules>
<EntityRule EntityName="IfcRelDefinesByType">
<AttributeRules>
<AttributeRule AttributeName="RelatingType">
<EntityRules>
<EntityRule EntityName="IfcTypeObject">
<AttributeRules>
<AttributeRule RuleID="TypeName" AttributeName="Name">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
<AttributeRule RuleID="TypeDescription" AttributeName="Description">
<EntityRules>
<EntityRule EntityName="IfcText" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
</SubTemplates>
</ConceptTemplate>
<ConceptTemplate uuid="5098cd13-bf4b-473a-a846-a60f69e9b738" name="Object Composition" applicableSchema="IFC4" applicableEntity="IfcObjectDefinition">
<Definitions>
<Definition>
<Body><![CDATA[Objects may be composed into parts to indicate levels of detail, such as a building having multiple storeys, a framed wall having studs, or a task having subtasks. Composition may form a hierarchy of multiple levels, where an object must have a single parent, or if a top-level object then declared within the single project or a project library.]]>
</Body>
</Definition>
</Definitions>
<SubTemplates>
<ConceptTemplate uuid="02eefcc6-b26c-4f20-9c7c-c30ae74eb9a9" name="Aggregation" applicableSchema="IFC4" applicableEntity="IfcObjectDefinition">
<Definitions>
<Definition>
<Body><![CDATA[An aggregation indicates an internal unordered part composition relationship between the whole structure, referred to as the "composite", and the subordinate components, referred to as the "parts". The concept of aggregation is used in various ways. Examples are:
* Aggregation is used on building elements to indicate parts such as studs within a wall;
* Aggregation is used on spatial elements to indicate a spatial structure such as a story within a building;
* Aggregation is used on systems to indicate subsystems such as branch circuits.
Aggregation is a bi-directional relationship, the relationship from the composite to its parts is called Decomposition, and the relationship from the part to its composite is called Composition.]]>
</Body>
</Definition>
</Definitions>
<SubTemplates>
<ConceptTemplate uuid="8c0fd2f7-71bb-4e6e-8fdb-0c02b352f14a" name="Spatial Composition" applicableSchema="IFC4" applicableEntity="IfcSpatialElement">
<Definitions>
<Definition>
<Body><![CDATA[Provision of a spatial structure of the project by aggregating spatial elements. The spatial structure is a hierarchical tree of spatial elements ultimately assigned to the project. Composition refers to the relationship to a higher level element (e.g. this storey is part of a building or this road segment is part of a road).
> NOTE The link between the highest level spatial element(s) and the project is provided by this concept through _IfcRelAggregates_ and not through declaration using _IfcRelDeclares_. This is a known anomaly intruduced to maintain compatibility with earlier versions of this standard.
The project spatial structure may be made up of a selection of different spatial structure elements with the most generic and simplest form from high to low level as follows: _IfcProject_, _IfcSite_, _IfcFacility_ (or any of its subtypes), _IfcFacilityPart_ (or _IfcBuildingStorey in the case of buildings), and _IfcSpace_ with _IfcSite_, _FacilityPart_ and _IfcSpace_ being optional levels. Therefore a spatial structure element should only be part of an element at the same or higher level, with the exception of _IfcFacility_ which can be part of an _IfcFacilityPart_ to allow for the regional or longitudinal division of a higjh level facility in to sections which can then contain one or more smaller functional facilities.
Where possible the relevant subtype of _IfcFacility_ should be used to describe the spatial structure element in question. When a adequate subtype of _IfcFacility_ with predefined or user defined type is not available the higher level, generic _IfcFacility_ entity can be instantiated with the relevant and agreed typing identifier defined in _IfcFacility.ObjectType_. This allows for nearly full coverage of built environment domains and/or scenarios that have yet to be addressed with specific extensions.
In addition to the identified spatial structure elements _IfcSpatialZone_ can be used to provide cross domain or functional zones within a project, these elements are included into the hierarchy using the _Spatial Containment_ concept (_IfcRelContainedInSpatialStructure_) and can be aggregated into a functional hierarchy in the same manner as other spatial structure elements with the constraint that an _IfcSpatialZone_ can only composed under another _IfcSpatialZone_.]]>
</Body>
</Definition>
<Definition>
<Body lang="tt"><![CDATA[<TemplateRules operator="and">
<TemplateRule Parameters="RelatingObject[Type]='IfcProject' AND ProjectName[Value]='Wall test project' "/>
<!-- <TemplateRule Parameters="RelatingObject[Type]='IfcSpatialElement' AND SpatialElementName[Value]='Wall test building' "/> -->
</TemplateRules>]]>
</Body>
<Link lang="tt" href="" />
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="Decomposes">
<EntityRules>
<EntityRule EntityName="IfcRelAggregates">
<AttributeRules>
<AttributeRule RuleID="RelatingObject" AttributeName="RelatingObject">
<EntityRules>
<EntityRule EntityName="IfcProject">
<AttributeRules>
<AttributeRule RuleID="ProjectName" AttributeName="Name">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
<EntityRule EntityName="IfcSpatialElement">
<AttributeRules>
<AttributeRule RuleID="SpatialElementName" AttributeName="Name">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="667f8443-ecce-4a8d-a63f-931fab0453e0" name="Spatial Decomposition" applicableSchema="IFC4" applicableEntity="IfcObjectDefinition">
<Definitions>
<Definition>
<Body><![CDATA[Provision of a spatial structure of the project by aggregating spatial elements. The spatial structure is a hierarchical tree of spatial elements ultimately assigned to the project. Decomposition refers to the relationship to a lower level element (e.g. this storey has spaces or this road has road segments).
> NOTE The link between the project and the highest level spatial element is provided by this concept through _IfcRelAggregates_ and not through declaration using _IfcRelDeclares_. This is a known anomaly intruduced to maintain compatibility with earlier versions of this standard.
The project spatial structure may be made up of a selection of different spatial structure elements with the most generic and simplest form from low to high level as follows: _IfcSpace_, _IfcFacilityPart_ (or _IfcBuildingStorey in the case of buildings), _IfcFacility_ (or any of its subtypes), _IfcSite_ and _IfcProject_ with _IfcSite_, _FacilityPart_ and _IfcSpace_ being optional levels. Therefore a spatial structure element should only be part of an element at the same or higher level, with the exception of _IfcFacility_ which can be part of an _IfcFacilityPart_ to allow for the regional or longitudinal division of a high level facility in to sections which can then contain one or more smaller functional facilities.
Where possible the relevant subtype of _IfcFacility_ should be used to describe the spatial structure element in question. When a adequate subtype of _IfcFacility_ with predefined or user defined type is not available the higher level, generic _IfcFacility_ entity can be instantiated with the relevant and agreed typing identifier defined in _IfcFacility.ObjectType_. This allows for nearly full coverage of built environment domains and/or scenarios that have yet to be addressed with specific extensions.
In addition to the identified spatial structure elements _IfcSpatialZone_ can be used to provide cross domain or functional zones within a project, these elements are included into the hierarchy using the _Spatial Containment_ concept (_IfcRelContainedInSpatialStructure_) and can be aggregated into a functional hierarchy in the same manner as other spatial structure elements with the constraint that an _IfcSpatialZone_ can only composed under another _IfcSpatialZone_.]]>
</Body>
</Definition>
<Definition>
<Body lang="tt"><![CDATA[<TemplateRules operator="and">
<TemplateRule Parameters="RelatedObjects[Size]=4 AND RelatedObjects[Type]='IfcBuildingStorey'"/>
<TemplateRule Parameters="SpatialElementName[Value]='UG' OR SpatialElementName[Value]='EG' OR SpatialElementName[Value]='OG1' OR SpatialElementName[Value]='DG'"/>
</TemplateRules>]]>
</Body>
<Link lang="tt" href="" />
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="IsDecomposedBy">
<EntityRules>
<EntityRule EntityName="IfcRelAggregates">
<AttributeRules>
<AttributeRule RuleID="RelatedObjects" AttributeName="RelatedObjects">
<EntityRules>
<EntityRule EntityName="IfcSpatialElement">
<AttributeRules>
<AttributeRule RuleID="SpatialElementName" AttributeName="Name">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
</SubTemplates>
</ConceptTemplate>
</SubTemplates>
</ConceptTemplate>
<ConceptTemplate uuid="252a5fa6-cc5b-4d30-bd0c-35e22e336499" name="Object Connectivity" applicableSchema="IFC4" applicableEntity="IfcObject">
<Definitions>
<Definition>
<Body><![CDATA[{ .std}
Objects may participate in various connectivity relationships with other objects.]]>
</Body>
</Definition>
</Definitions>
<SubTemplates>
<ConceptTemplate uuid="ef118425-5976-45d8-ad41-05925adc6905" name="Alignment" applicableSchema="IFC4" applicableEntity="IfcProduct">
<Rules>
<AttributeRule AttributeName="PositionedRelativeTo">
<EntityRules>
<EntityRule EntityName="IfcRelPositions">
<AttributeRules>
<AttributeRule AttributeName="RelatingPositioningElement">
<EntityRules>
<EntityRule EntityName="IfcReferent">
<References>
<Template ref="6dc82845-b142-4624-a9a5-37d1e4995761" />
</References>
<AttributeRules>
<AttributeRule RuleID="Station" AttributeName="Name" />
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="6dc82845-b142-4624-a9a5-37d1e4995761" name="Product Relative Positioning" applicableSchema="IFC4" applicableEntity="IfcProduct">
<Definitions>
<Definition>
<Body><![CDATA[An _IfcProduct_ can be placed relative to a positioning element such as _IfcAlignment_, _IfcGrid_ or _IfcReferent_.]]>
</Body>
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="PositionedRelativeTo">
<EntityRules>
<EntityRule EntityName="IfcRelPositions">
<AttributeRules>
<AttributeRule RuleID="PositioningElement" AttributeName="RelatingPositioningElement">
<EntityRules>
<EntityRule EntityName="IfcPositioningElement">
<AttributeRules>
<AttributeRule RuleID="PositioningElementIdentifier" AttributeName="Name">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="1cdcaa9f-85d5-42cf-9aaf-0fd663b14ee8" name="Product Span Positioning" applicableSchema="IFC4" applicableEntity="IfcProduct">
<Definitions>
<Definition>
<Body><![CDATA[An _IfcProduct_ can be placed relative to two _IfcReferent_s, which indicate the start and end positions of the product along a linear section.]]>
</Body>
</Definition>
</Definitions>
<Rules>
<AttributeRule RuleID="StartPositionedRelativeTo" AttributeName="PositionedRelativeTo">
<EntityRules>
<EntityRule EntityName="IfcRelPositions">
<AttributeRules>
<AttributeRule AttributeName="RelatingPositioningElement">
<EntityRules>
<EntityRule EntityName="IfcReferent">
<AttributeRules>
<AttributeRule RuleID="StartPositionType" AttributeName="PredefinedType">
<EntityRules>
<EntityRule EntityName="IfcReferentTypeEnum" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule RuleID="StartPositionName" AttributeName="Name">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule RuleID="EndPositionedRelativeTo" AttributeName="PositionedRelativeTo">
<EntityRules>
<EntityRule EntityName="IfcRelPositions">
<AttributeRules>
<AttributeRule AttributeName="RelatingPositioningElement">
<EntityRules>
<EntityRule EntityName="IfcReferent">
<AttributeRules>
<AttributeRule RuleID="EndPositionType" AttributeName="PredefinedType">
<EntityRules>
<EntityRule EntityName="IfcReferentTypeEnum" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
<AttributeRule RuleID="EndPositionName" AttributeName="Name">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
<ConceptTemplate uuid="81bc486c-1976-4e11-a469-cff2f70f123e" name="Spatial Structure" applicableSchema="IFC4" applicableEntity="IfcObject">
<Definitions>
<Definition>
<Body><![CDATA[Spatial structures, such as site, building, storey, or spaces, may contain physical elements, including building elements, distribution elements, and furnishing elements. The containment relationship between the physical elements and the spatial structures is hierarchical, i.e. a physical element shall only be contained within a single spatial structure.
> EXAMPLE An _IfcBeam_ is placed within the spatial hierarchy using the objectified relationship _IfcRelContainedInSpatialStructure_, refering to it by its inverse attribute _SELF\IfcElement.ContainedInStructure_. Subtypes of _IfcSpatialStructureElement_ are valid spatial containers, with _IfcBuildingStorey_ being the default container.
The spatial containment relationship, together with the Spatial decomposition relationship, being hierarchical as well, establishes the hiearchical project tree structure in a building information model.
> EXAMPLE The _IfcBuildingStorey_ that logically contains the _IfcBeam_ decomposes the _IfcBuilding_ using the _IfcRelAggregates_ relationship. Therefore the _IfcBeam_ is also indirectly contained in the building.]]>
</Body>
</Definition>
</Definitions>
<SubTemplates>
<ConceptTemplate uuid="61dd08ed-fd01-4955-9337-8afd284a0e6f" name="Spatial Container" applicableSchema="IFC4" applicableEntity="IfcSpatialElement">
<Definitions>
<Definition>
<Body><![CDATA[The _Spatial Container_ concept defines a spatial element as being the spatial container for physical elements, or other elements being directly related to the spatial container, such as annotations or grids.
> EXAMPLE A building story is a logical spatial container of building elements, distribution elements, or furnishing elements.
The _Spatial Container_ concept is realized by using the _IfcRelContainedInSpatialStructure_ objectified relationship between subtypes of _IfcSpatialElement_ and the elements contained. The inverse relationship _ContainsElements_ at the subtypes of _IfcSpatialElement_ refers to the contained physical elements.]]>
</Body>
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="ContainsElements">
<EntityRules>
<EntityRule EntityName="IfcRelContainedInSpatialStructure">
<AttributeRules>
<AttributeRule RuleID="Type" AttributeName="RelatedElements">
<EntityRules>
<EntityRule EntityName="IfcProduct" />
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>
</SubTemplates>
</ConceptTemplate>
</SubTemplates>
</ConceptTemplate>
<ConceptTemplate uuid="0e8b1397-1ac6-41e1-a6d0-f2b34688cb61" name="Product Shape" applicableSchema="IFC4" applicableEntity="IfcProduct">
<Definitions>
<Definition>
<Body><![CDATA[A product is an occurence of a physical or virtual object with finite spatial extent that may have a shape representation as one of its characteristics. The concepts within the group of _Product Shape_ define how a shape is created to represent different geometric and topological representations.]]>
</Body>
</Definition>
</Definitions>
<SubTemplates>
<ConceptTemplate uuid="13f96914-1ad4-41d4-ba99-411a9ecbf567" name="Product Geometric Representation" applicableSchema="IFC4" applicableEntity="IfcProduct">
<Definitions>
<Definition>
<Body><![CDATA[The shape of products may be represented in multiple ways for different purposes. Each representation has a well-known string identifier and a particular representation context. There may be multiple representation contexts to describe a shape at various levels of detail. Most building elements have a 'Body' representation which defines or approximates the physical shape and volume. In addition to physical building elements, non-physical elements may have representations such as spaces and openings.]]>
</Body>
</Definition>
</Definitions>
<Rules>
<AttributeRule AttributeName="Representation">
<EntityRules>
<EntityRule EntityName="IfcProductDefinitionShape">
<AttributeRules>
<AttributeRule AttributeName="Name" />