Skip to main content

Module shapes

Module shapes 

Source
Expand description

The shape table both families are validated against.

Elements are property bags (cimmodel::Element) with no struct to downcast to, so the shapes are data and crate::bag interprets them, the same way classes are cimmodel::base::ClassDef rows interpreted by the decoder. cimgen emits the tables into cgmes_shapes.rs and nc_shapes.rs; with the dynamic-shapes feature they can be built from the SHACL TTL files at runtime instead.

Everything a consumer would have to compute per element is resolved when the table is built: target classes are already family-qualified CimDataset::by_type keys with abstract classes expanded to their concrete descendants, and paths are already the field keys the decoder stores.

Structs§

Branch
One branch of a Logic. It conforms when none of its checks fail — or, for [ sh:not X ] (negate), when at least one does. NCP writes material implication that way: sh:or ( [ sh:not conformsToNCProfile ] [ P required ] ).
Check
One constraint together with how to report it.
ClosedShape
The sh:closed half of a shape, kept separate because it carries its own message and severity.
Logic
A node-level sh:and / sh:or / sh:xone. The shape reports once, with its own name and message, when the combination does not hold; the branch checks carry no report text.
PropShape
One sh:property of a node shape: a path, and what must hold of its values.
ShapeDef
One sh:NodeShape.

Enums§

AltBranch
One branch of an Path::Alternative.
Constraint
A single check on the values a Path yields.
LogicOp
How a Logic combines its branches.
NodeKind
sh:nodeKind, restricted to the values the profiles actually use.
Path
Where a property shape’s values come from.
Step
One step of a Path::Chain.
Target
What a node shape applies to.