Holon Construction¶
6. Phase 2 — Construct and validate Product Holons¶
6.1 Objective¶
Phase 2 creates a bounded product-instance graph from authoritative product data and validates it against the applicable released semantic profiles. This phase runs in the product data plane.
6.2 Required inputs¶
A construction request requires, at minimum:
- a GTIN or other applicable GS1 identifier;
- a GPC Brick assignment and GPC release;
- authoritative populated product facts;
- the applicable GDSN and GPC semantic-release identifiers;
- the applicable SHACL profile release;
- target-market, language, batch/lot, serial or audience context where relevant;
- source and publisher provenance.
A GTIN alone is insufficient unless a service can resolve it to the relevant product data and GPC Brick.
6.3 Construction sequence¶
- Validate the identifier syntax and resolve any relevant GS1 Digital Link qualifiers.
- Retrieve the authoritative product record and its current classification.
- Load the applicable GPC Brick and ancestor chain.
- Select populated Brick-scoped facts for the product.
- Select applicable GDSN facts according to the Product Holon profile and data-access policy.
- Preserve structured records, units, language and explicit zero values.
- Attach relationships to parent, child or component Product Holons where required.
- Attach source, transformation and effective-time provenance.
- record the semantic and shape release identifiers.
- emit the Product Holon as a graph suitable for SHACL validation.
6.4 Product Holon instance structure¶
The following example is conceptual and uses readable logical names. The production reference artefacts bind these concepts to generated CURIEs and mapping records.
{
"@context": {
"ph": "https://example.org/product-holon/",
"gpc": "gpc:",
"gdsn": "gdsn:",
"prov": "http://www.w3.org/ns/prov#"
},
"@id": "https://example.com/01/09506000134352",
"@type": ["ph:ProductHolon", "gpc:10000030"],
"ph:identity": {
"ph:keyType": "GTIN",
"ph:value": "09506000134352"
},
"ph:classification": {
"ph:brick": "gpc:10000030",
"ph:label": "Cheese (Frozen)",
"ph:schemeVersion": "declared-by-release-manifest"
},
"ph:assertion": [
{ "ph:property": "gpc:20000031", "ph:value": "GOUDA" },
{ "ph:property": "gpc:20000192", "ph:value": "FIRM/SEMI-HARD" },
{ "ph:property": "gpc:20003081", "ph:value": "SEMI-HARD CHEESE" },
{ "ph:property": "gpc:20003080", "ph:value": "DIRECT CONSUMPTION" }
],
"prov:wasDerivedFrom": "urn:source-record:authoritative-product-record",
"ph:validationProfile": "urn:shape-release:gpc-brick-10000030-with-gdsn"
}
The example is not an assertion about a real commercial product. It demonstrates the bounded graph pattern established by the source evidence.
6.5 Brick-scoped attributes¶
Only Attribute Types defined for the selected Brick are included as category-specific facts. The source investigation showed that different Bricks have materially different profiles:
- Cheese (Frozen),
10000030: six Attribute Types in the demonstrated release; - Smartphones,
10001198: two Attribute Types; - Beer,
10000159: nine Attribute Types in the source run, with six reproduced in the supplied shape excerpt; - Sugar/Sugar Substitutes (Shelf Stable),
10000043: one Attribute Type.
The architecture follows the released source even when an enumeration appears outdated. For example, the demonstrated Smartphone System enumeration stops at 3 G. The semantic pipeline shall report and govern that source limitation; it shall not silently add 4 G or 5 G.
6.6 Cross-category GDSN facts¶
The current reference implementation adds a fixed, selected GDSN shape with eight properties across every tested Brick. The source comparison confirmed that this property set is identical for Cheese, Smartphones, Beer and Sugar. It includes GTIN, ingredient statement, recycled-content ratio, claim detail, allergen and nutrient structures.
This is a reference-implementation choice, not an architectural requirement that every category use the same eight properties. The fixed profile creates two known issues:
- some properties are inapplicable to a category, such as food-allergen slots for Smartphones;
- some clearly category-relevant GDSN properties are absent, including several cheese-related attributes found in the mapping evidence.
A production profile should therefore support a governed combination of cross-category core facts and category- or use-case-specific GDSN modules.
6.7 Structured records¶
The Product Holon shall preserve GDSN structure where that structure carries meaning. Allergen and nutrient data are not merely scalar strings. The real generated shape shows an allergen path through AllergenRelatedInformation and Allergen, while nutrient data passes through header/detail structures. Flattening may be appropriate for a publication view, but the source graph and the mapping record shall preserve how that flattening was derived.
6.8 Variety packs and composite products¶
GPC includes dedicated Variety Pack Bricks. The pack receives its own GTIN, classification and Product Holon. Constituent trade items retain their own GTINs, Bricks and Product Holons. GDSN trade-item hierarchy relationships link the parent and children, including quantities and component counts where supplied.
A composite Product Holon shall therefore reference child Product Holons rather than merge their category constraints. This supports independent validation, update and resolution of each constituent item.
6.9 SHACL validation¶
The validation service shall apply:
- the Brick-scoped GPC shape;
- the selected GDSN shape modules;
- identity and release-profile constraints;
- additional policy shapes where required for a publication or regulatory profile.
Validation shall return a machine-readable report with focus nodes, paths, constraint components and messages. A failing record shall not be silently repaired at the publication boundary.
6.10 Validation evidence¶
The source evidence records successful pySHACL tests in which:
- a conforming Cheese record returned
Conforms: True; - a deliberately invalid record returned
Conforms: False; - invalid firmness and nutrient codes were reported through
sh:InConstraintComponent; - a missing containment level was reported through
sh:MinCountConstraintComponent; - generated shapes for Cheese, Smartphones and Beer parsed and validated in the demonstrated generalisation check;
- the
gs1-gdsn-holontool incorporated parse, empty-graph, conforming-instance and broken-instance checks by default.
These results demonstrate the pattern, not full production conformance coverage.
6.11 Validation and truth¶
SHACL establishes conformity to the tested graph contract. It does not independently prove that the source assertion is factually correct. The architecture therefore requires both validation evidence and provenance. A valid but incorrectly sourced allergen assertion remains a data-governance failure.
6.12 Product Holon release states¶
A Product Holon may use the following proposed states:
| State | Meaning |
|---|---|
| Draft | Construction is incomplete or validation has not run. |
| Invalid | One or more required profiles fail. |
| Validated | Required profiles pass, but publication approval is pending. |
| Approved | Product and publication policies permit release. |
| Published | One or more representations have been released. |
| Superseded | A later Product Holon version has replaced this release. |
| Withdrawn | Publication is no longer authorised. |
6.13 Phase outputs¶
Phase 2 produces:
- a bounded Product Holon instance;
- a validation report;
- source and transformation provenance;
- links to parent or child Product Holons where applicable;
- a release status;
- the semantic and shape versions required by Phase 3 and Phase 4.
Part III — Governed semantic alignment¶
The next phase aligns GDSN/GPC semantics with target vocabularies through a governed semantic bridge. It covers reviewed mappings, structural transformations, publication routes, and bridge release controls.
Continue to Semantic Bridge for Phase 3.