Reference
edcc-pemd.shapes
SHACL Shapes (3)
| Shape | Label | Target class | Properties |
|---|---|---|---|
| edcc:MaterialLotShape | Material lot shape | edcc:MaterialLot | 6 |
| edcc:MaterialPassportShape | Material passport shape | edcc:MaterialPassport | 7 |
| edcc:PEMDDiagnosticShape | PEMD diagnostic shape | edcc:PEMDDiagnostic | 7 |
Material lot shape
Validates a material lot identified by a PEMD diagnostic. Every lot MUST carry mass, material type, waste code, and reuse potential assessment.
Target class: edcc:MaterialLot
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| rdfs:label | xsd:string · 1 | 1..edcc:MaterialLot MUST declare rdfs:label (human-readable description, e.g. 'Bois charpente batiment A'). | |
| edcc:co2EmbodiedKg | xsd:decimal · 0 | 1..edcc:co2EmbodiedKg if present MUST be non-negative decimal (kg CO2eq). | |
| edcc:hasMaterial | 1 · 1 | edcc:Material..edcc:MaterialLot MUST link to exactly one edcc:Material type via edcc:hasMaterial. | |
| edcc:massKg | xsd:decimal · 1 | 1..edcc:MaterialLot MUST declare edcc:massKg (mass in kg, non-negative decimal). | |
| edcc:reusePotential | xsd:string · 1 | 1..edcc:MaterialLot MUST declare edcc:reusePotential from controlled vocabulary. | |
| edcc:wasteCode | edcc:MaterialLot MUST carry edcc:wasteCode (EWC 6-digit format: 'XX XX XX'). · 1 | 1..^[0-9]{2} [0-9]{2} [0-9]{2}$ |
Material passport shape
Validates a Digital Product Passport (DPP) for construction materials per EU Regulation 2024/1781. Every passport MUST identify the material lot, carry ISO 23386-aligned properties, and link to the regulatory control it evidences.
Target class: edcc:MaterialPassport
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| dcterms:created | xsd:date · 1 | 1..edcc:MaterialPassport MUST carry dcterms:created. | |
| dcterms:identifier | xsd:string · 1 | 1..edcc:MaterialPassport MUST carry dcterms:identifier (DPP unique ID). | |
| rdfs:label | xsd:string · 1 | 1..edcc:MaterialPassport MUST declare rdfs:label. | |
| prov:wasAttributedTo | sh:IRI · 1 | edcc:MaterialPassport MUST carry prov:wasAttributedTo (issuing authority)...* | |
| prov:wasDerivedFrom | 0 · edcc:PEMDDiagnostic | edcc:MaterialPassport SHOULD link to its source edcc:PEMDDiagnostic via prov:wasDerivedFrom...* | |
| evo:evidences | 1 · evo:Control | edcc:MaterialPassport MUST evidence at least one evo:Control (DPP regulatory requirement)...* | |
| edcc:passportOf | 1 · 1 | edcc:MaterialLot..edcc:MaterialPassport MUST link to exactly one edcc:MaterialLot. |
PEMD diagnostic shape
Validates structural integrity of a PEMD diagnostic evidence artifact. Every diagnostic MUST identify the assessed building, the diagnostician, carry at least one material lot, and declare its regulatory basis. Per Code de l'Environnement Art. L541-4-5 and RE2020.
Target class: edcc:PEMDDiagnostic
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| dcterms:created | xsd:date · 1 | 1..edcc:PEMDDiagnostic MUST carry dcterms:created (diagnostic date). | |
| dcterms:identifier | xsd:string · 1 | 1..edcc:PEMDDiagnostic MUST carry dcterms:identifier (unique diagnostic reference number). | |
| rdfs:label | xsd:string · 1 | 1..edcc:PEMDDiagnostic MUST declare exactly one rdfs:label (diagnostic report title). | |
| prov:wasAttributedTo | 1 · edcc:Stakeholder | edcc:PEMDDiagnostic MUST carry prov:wasAttributedTo (diagnostician who performed it)...* | |
| evo:evidences | 1 · evo:Control | edcc:PEMDDiagnostic MUST link to at least one evo:Control it evidences (regulatory basis: RE2020, AGEC, etc.)...* | |
| edcc:onBuilding | 1 · 1 | edcc:Building..edcc:PEMDDiagnostic MUST link to exactly one edcc:Building via edcc:onBuilding. | |
| edcc:producesLot | 1 · edcc:MaterialLot | edcc:PEMDDiagnostic MUST identify at least one edcc:MaterialLot via edcc:producesLot...* |
SPARQL example
# List all shapes and their target classes PREFIX sh: <http://www.w3.org/ns/shacl#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?shape ?label ?target WHERE { ?shape a sh:NodeShape ; rdfs:label ?label . OPTIONAL { ?shape sh:targetClass ?target } } ORDER BY ?label