...
The information model was built as a gello_model and an XSD schema.
Here is the gello_model:
Package OntoEngineering
Imports iso_21090_datatypes
class Geometry extends Any
name: String
code: CD -- square, rectangle, circle, triangle, cylinder, cone, sphere, line , cube, cuboid
area: PQ --derived
width: PQ
length: PQ
height: PQ
volume: PQ --derived
radius: PQ
circumference: PQ
describingFunction: String
--all horizontal relationships done up to here
class BuiltThing extends Any
code: CD
hasGeometry: Sequence(Geometry)
hasBehaviour: Behaviour
hasRole: Role
component: Sequence(Component)
tensileStrength: PQ
btArea: PQ
btWidth: PQ
btLength: PQ
btVolume: PQ
btRadius: PQ
btCircumference: PQ
btFluxEmmission: PQ
spaceType: CD -- negative, positive, negAndPos
constructionMaterial: CD -- wood, steel
constructionMethod: CD -- extruded, printed, cast, milled
elasticity: PQ
class Part extends BuiltThing
partID: String
usedWith: Sequence(Part)
class Behaviour extends Any
class Role extends Any
participant1: Part
participant2: Part
roleType: CD -- fasten, support, join
class Component extends Part
componentID: String
class Fastener extends Part --reference https://fastenerengineering.com/what-are-pins/
type: CD --mechanical, electromagnetic, adhesive
class Pin extends Fastener
pinType: CD -- dowel, slotted, coiled (spiral), grooved, split, cotter
chamfer: Chamfer
class Chamfer extends Any
angle: PQ
chamferLength: PQ
turnOffDistance: PQ
chamferLocation: CD -- proximal, distal
class SpringPin extends Pin --new
springStrength: PQ
class SlottedPin extends SpringPin
sheetRevolutionDeg: PQ
compressionTolerance: PQ
class CoiledPin extends SpringPin
-- sheetRevolutionDeg > 360 deg
class GroovedPin extends Pin
grooveNumber: Integer --usually 3 -- done
groove: Sequence(Component)
class CotterPin extends Any
taper: Geometry
class SplitPin extends Pin
end: Sequence(Component)
class Bush extends Part
-- spaceType = negative
interferenceMeasure: PQ
chamfer: Chamfer
class InfrastructureRoot extends Any
builtThing: Sequence(BuiltThing)
EndPackage
...
A xml file was created that accords with the model:. The OIDs in the CD's codeSystem and the codeSystemName attributes in this example and the next are made up.
<GroovedPin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<type
code="5336670848"
codeSystem="2.16.840.1.113883.6.8"
codeSystemName="OntoEValueDomain">
<displayName value = "Mechanical" />
</type>
<pinType
code="9377156411"
codeSystem="2.16.840.1.113883.6.8"
codeSystemName="OntoEValueDomain">
<displayName value = "Grooved Pin" />
</pinType>
<partID value = '6787982-A'/>
<hasGeometry>
<code
code="7573194557"
codeSystem="2.16.840.1.113883.6.8"
codeSystemName="OntoEValueDomain">
<displayName value = "Cylinder"/>
</code>
</hasGeometry>
<spaceType
code="8494431267"
codeSystem="2.16.840.1.113883.6.8"
codeSystemName="OntoEValueDomain">
<displayName value = "PositiveSpace"/>
</spaceType>
<btLength xsi:type = "PQ" value = "100" unit = "mm" />
<btRadius xsi:type = "PQ" value = "10" unit = "mm" />
<hasRole>
<roleType code="4514449250"
codeSystem="2.16.840.1.113883.6.8"
codeSystemName="OntoEValueDomain">
<displayName value = "Fasten"/>
</roleType>
</hasRole>
<usedWith>
<partID value = '89u207-F'/>
<code
code="7715218853"
codeSystem="2.16.840.1.113883.6.8"
codeSystemName="OntoEValueDomain">
<displayName value = "Bush"/>
</code>
</usedWith>
<component>
<componentID value = 'Groove1'/>
<hasGeometry>
<code
code="7573194557"
codeSystem="2.16.840.1.113883.6.8"
codeSystemName="OntoEValueDomain">
<displayName value = "Cylinder"/>
</code>
</hasGeometry>
<spaceType
code="8999051355"
codeSystem="2.16.840.1.113883.6.8"
codeSystemName="OntoEValueDomain">
<displayName value = "NegativeSpace"/>
</spaceType>
<btLength xsi:type = "PQ" value = "75" unit = "mm" />
<btRadius xsi:type = "PQ" value = "4" unit = "mm" />
</component>
<grooveNumber value = '1' />
</GroovedPin>
...