[{"data":1,"prerenderedAt":1491},["ShallowReactive",2],{"navigation-docsEN":3,"navigation-blogEN":725,"blog-EN-\u002Fblog\u002Fdpp-conformance-testing-live":748,"docsNav-EN-\u002Fdocs":1291},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,22,41,53,74,88,114,128,156,167,182,206,412,428,572,647,662,718],{"title":10,"path":6,"stem":11,"description":12,"icon":13,"tags":14},"Documentation","docs\u002Findex","Introduction to documentation on EPCIS and OpenEPCIS tools","heroicons-outline:document-text",[15,16,17,18,19,20,21],"openepcis","epcis-2-0","epcis-documentation","epcis-standard","open-core","open-source","epcis-tools",{"title":23,"path":24,"stem":25,"children":26,"description":28,"icon":29,"tags":40},"Introduction","\u002Fdocs\u002Fintroduction","docs\u002F01.introduction\u002Findex",[27],{"title":23,"path":24,"stem":25,"description":28,"icon":29,"tags":30},"Why EPCIS is necessary and how it can help organizations of all sizes and types.","heroicons-outline:globe-alt",[16,31,32,33,34,35,36,37,38,39],"epcis","epcis-1-2","gs1-epcis-standard","supply-chain","traceability","data-sharing","tracking","tracing","visibility-events",[16,31,32,33,34,35,36,37,38,39],{"title":42,"path":43,"stem":44,"children":45,"description":47,"icon":48,"tags":52},"EPCIS","\u002Fdocs\u002Fepcis","docs\u002F02.epcis\u002Findex",[46],{"title":42,"path":43,"stem":44,"description":47,"icon":48,"tags":49},"Discover the specifics of EPCIS, how it works, and what OpenEPCIS is.","i-custom-open-epcis",[16,31,32,33,50,51,39],"iso-iec-19987","iso-iec-19988",[16,31,32,33,50,51,39],{"title":54,"path":55,"stem":56,"children":57,"description":59,"icon":60,"tags":73},"Format Converter","\u002Fdocs\u002Fformat-converter","docs\u002F03.format-converter\u002Findex",[58],{"title":54,"path":55,"stem":56,"description":59,"icon":60,"tags":61},"OpenEPCIS solution to convert EPCIS 2.0 and 1.2 document or single event from XML to JSON\u002FJSON-LD and vice versa.","heroicons-outline:arrows-right-left",[16,62,63,64,65,66,67,21,68,69,70,71,72],"json","json-ld","xml","events","format-converter","convert","convert-epcis-events","format","converter","epcis-tool","tools",[16,62,63,64,65,66,67,21,68,69,70,71,72],{"title":75,"path":76,"stem":77,"children":78,"description":80,"icon":81,"tags":87},"Version Converter","\u002Fdocs\u002Fversion-converter","docs\u002F04.version-converter\u002Findex",[79],{"title":75,"path":76,"stem":77,"description":80,"icon":81,"tags":82},"OpenEPCIS solution to convert EPCIS XML document from version 1.2 to 2.0 and vice versa.","heroicons:arrows-up-down",[16,32,62,63,64,65,83,67,21,84,85,86,70,71,72],"version-converter","convert-epcis-version","version","epcis-version",[16,32,62,63,64,65,83,67,21,84,85,86,70,71,72],{"title":89,"path":90,"stem":91,"children":92,"description":94,"icon":95,"tags":113},"Identifier Converter","\u002Fdocs\u002Fidentifier-converter","docs\u002F05.identifier-converter\u002Findex",[93],{"title":89,"path":90,"stem":91,"description":94,"icon":95,"tags":96},"OpenEPCIS solution to convert EPCIS instance or class identifier from URN to digital link WebURI and vice versa.","i-heroicons-link",[16,97,98,99,100,101,21,102,103,104,105,106,107,108,109,110,111,112],"gs1-digital-link","urn-format","epc-uri","epc","weburi","gs1-standard","gs1","sscc","gtin","giai","grai","gdti","lgtin","sgtin","gln","gcp",[16,97,98,99,100,101,21,102,103,104,105,106,107,108,109,110,111,112],{"title":115,"path":116,"stem":117,"children":118,"description":120,"icon":121,"tags":127},"Event Hash Generator","\u002Fdocs\u002Fevent-hash-generator","docs\u002F06.event-hash-generator\u002Findex",[119],{"title":115,"path":116,"stem":117,"description":120,"icon":121,"tags":122},"OpenEPCIS solution to generate unique event hash for EPCIS XML or JSON\u002FJSON-LD document or event list.","heroicons-outline:finger-print",[16,123,62,63,64,65,21,124,125,126,71,72],"event-hash","event","hash","generator",[16,123,62,63,64,65,21,124,125,126,71,72],{"title":129,"path":130,"stem":131,"children":132,"description":134,"icon":135,"tags":155},"Test Data Generator","\u002Fdocs\u002Ftest-data-generator","docs\u002F07.test-data-generator\u002Findex",[133,137],{"title":129,"path":130,"stem":131,"description":134,"icon":135,"tags":136},"OpenEPCIS solution to generate a large set of EPCIS test data events for all use cases\u002Fsupply chain requirements.","heroicons-outline:cog",[16,123,62,63,64,65,21,124,125,126,71,72],{"title":138,"path":139,"stem":140,"children":141,"description":143,"icon":144,"tags":154},"EPCIS Implementation Guidelines","\u002Fdocs\u002Ftest-data-generator\u002Fgs1-epcis-implementation-guidelines","docs\u002F07.test-data-generator\u002F01.gs1-epcis-implementation-guidelines\u002Findex",[142],{"title":138,"path":139,"stem":140,"description":143,"icon":144,"tags":145},"EPCIS event examples from the GS1 EPCIS and CBV implementation guidelines, modeled with the OpenEPCIS Test Data Generator.","heroicons-outline:badge-check",[16,62,63,146,21,147,148,149,35,150,151,152,153],"testing","test-data-generator","design","design-template","process-automation","compliance","supply-chain-management","load-tests",[16,62,63,146,21,147,148,149,35,150,151,152,153],[16,123,62,63,64,65,21,124,125,126,71,72],{"title":157,"path":158,"stem":159,"children":160,"description":162,"icon":163,"tags":166},"Test Resource Management","\u002Fdocs\u002Ftest-resource-management","docs\u002F08.test-resource-management\u002Findex",[161],{"title":157,"path":158,"stem":159,"description":162,"icon":163,"tags":164},"Collection of EPCIS 1.2\u002F2.0 documents\u002Fevents in XML\u002FJSON\u002FJSON-LD formats, intended for various testing purposes","heroicons-outline:archive-box",[16,62,63,146,21,165,35,150,151,152,153],"performance-tests",[16,62,63,146,21,165,35,150,151,152,153],{"title":168,"path":169,"stem":170,"children":171,"description":173,"icon":174,"tags":181},"Vocabulary Management","\u002Fdocs\u002Fvocabulary-management","docs\u002F09.vocabulary-management\u002Findex",[172],{"title":168,"path":169,"stem":170,"description":173,"icon":174,"tags":175},"Collection of standardized constants and strings for EPCIS event data.","heroicons-outline:book-open",[16,176,15,177,21,178,35,179,151,152,180],"constants","centralization","standardization","vocabulary","data-dictionary",[16,176,15,177,21,178,35,179,151,152,180],{"title":183,"path":184,"stem":185,"children":186,"description":188,"icon":189,"tags":205},"Dependency Management","\u002Fdocs\u002Fdependency-management","docs\u002F10.dependency-management\u002Findex",[187],{"title":183,"path":184,"stem":185,"description":188,"icon":189,"tags":190},"Centralized Maven Bill of Materials (BOM) for all the OpenEPCIS modules.","heroicons-outline:folder",[191,15,192,193,194,195,196,31,197,198,199,200,201,202,203,204],"maven-bom","dependency-management","java-dependencies","pom","software-dependencies","version-control","open-source-java","build-management","modular-software","dependency-resolution","java-libraries","maven-project","centralized-dependencies","dependency-consistency",[191,15,192,193,194,195,196,31,197,198,199,200,201,202,203,204],{"title":207,"path":208,"stem":209,"children":210,"description":212,"icon":213,"tags":411},"Digital Product Passport","\u002Fdocs\u002Fdigital-product-passport","docs\u002F11.digital-product-passport\u002Findex",[211,221,234,269,307,334,348,356,363,373,400],{"title":207,"path":208,"stem":209,"description":212,"icon":213,"tags":214},"Introduction to Digital Product Passport and how EPCIS enables product traceability for DPP compliance.","heroicons-outline:identification",[215,216,217,31,218,35,219,220],"digital-product-passport","dpp","eu-regulation","sustainability","circular-economy","gs1-web-vocabulary",{"title":222,"path":223,"stem":224,"children":225,"description":227,"icon":228,"tags":233},"ESPR Framework","\u002Fdocs\u002Fdigital-product-passport\u002Fespr-framework","docs\u002F11.digital-product-passport\u002F00.espr-framework\u002Findex",[226],{"title":222,"path":223,"stem":224,"description":227,"icon":228,"tags":229},"Guide to the EU Ecodesign for Sustainable Products Regulation (ESPR) 2024\u002F1781 and how OpenEPCIS supports Digital Product Passport requirements.","heroicons-outline:shield-check",[230,231,218,216,217,232],"espr","ecodesign","en-standards",[230,231,218,216,217,232],{"title":235,"path":236,"stem":237,"children":238,"description":240,"icon":241,"tags":268},"Battery DPP","\u002Fdocs\u002Fdigital-product-passport\u002Fbattery-dpp","docs\u002F11.digital-product-passport\u002F01.battery-dpp\u002Findex",[239,246,252,259],{"title":235,"path":236,"stem":237,"description":240,"icon":241,"tags":242},"GS1-native implementation of EU Battery Regulation 2023\u002F1542 Digital Product Passport using EPCIS 2.0","heroicons:battery-100",[243,244,216,31,103,35,218,245],"battery","eu-battery-regulation","due-diligence",{"title":247,"path":248,"stem":249,"description":250,"icon":174,"tags":251},"Implementation Guide","\u002Fdocs\u002Fdigital-product-passport\u002Fbattery-dpp\u002Fimplementation-guide","docs\u002F11.digital-product-passport\u002F01.battery-dpp\u002F01.implementation-guide","Step-by-step guide for implementing a GS1-native Battery Digital Product Passport with OpenEPCIS extensions",[243,244,216,31,220],{"title":253,"path":254,"stem":255,"description":256,"icon":257,"tags":258},"Event Types","\u002Fdocs\u002Fdigital-product-passport\u002Fbattery-dpp\u002Fevent-types","docs\u002F11.digital-product-passport\u002F01.battery-dpp\u002F02.event-types","Complete reference for all EPCIS event types and sensor measurements in the Battery DPP","heroicons-outline:collection",[243,31,65,39,216],{"title":260,"path":261,"stem":262,"description":263,"icon":13,"tags":264},"Complete Examples","\u002Fdocs\u002Fdigital-product-passport\u002Fbattery-dpp\u002Fcomplete-examples","docs\u002F11.digital-product-passport\u002F01.battery-dpp\u002F05.complete-examples","Reference Battery Digital Product Passport examples mapped to EU Battery Regulation 2023\u002F1542 Annex XIII",[243,265,266,63,267,245],"examples","annex-xiii","carbon-footprint",[243,244,216,31,103,35,218,245],{"title":270,"path":271,"stem":272,"children":273,"description":275,"icon":276,"tags":306},"EUDR","\u002Fdocs\u002Fdigital-product-passport\u002Feudr","docs\u002F11.digital-product-passport\u002F02.eudr\u002Findex",[274,281,287,292,300],{"title":270,"path":271,"stem":272,"description":275,"icon":276,"tags":277},"GS1-native implementation of EU Deforestation Regulation 2023\u002F1115 compliance using EPCIS 2.0","heroicons-outline:globe-europe-africa",[278,279,280,216,31,103,35,218,245],"eudr","deforestation","timber",{"title":247,"path":282,"stem":283,"description":284,"icon":285,"tags":286},"\u002Fdocs\u002Fdigital-product-passport\u002Feudr\u002Fimplementation-guide","docs\u002F11.digital-product-passport\u002F02.eudr\u002F01.implementation-guide","Step-by-step guide for implementing EU Deforestation Regulation compliance using GS1 standards",null,[278,279,280,216,31,245],{"title":253,"path":288,"stem":289,"description":290,"icon":285,"tags":291},"\u002Fdocs\u002Fdigital-product-passport\u002Feudr\u002Fevent-types","docs\u002F11.digital-product-passport\u002F02.eudr\u002F02.event-types","EPCIS event types for EU Deforestation Regulation compliance",[278,31,65,39,216],{"title":293,"path":294,"stem":295,"description":296,"icon":285,"tags":297},"URL Patterns","\u002Fdocs\u002Fdigital-product-passport\u002Feudr\u002Furl-patterns","docs\u002F11.digital-product-passport\u002F02.eudr\u002F03.url-patterns","GS1 Digital Link URL patterns for EUDR implementations",[278,97,298,299,216,245],"resolver","linkset",{"title":260,"path":301,"stem":302,"description":303,"icon":13,"tags":304},"\u002Fdocs\u002Fdigital-product-passport\u002Feudr\u002Fcomplete-examples","docs\u002F11.digital-product-passport\u002F02.eudr\u002F04.complete-examples","Reference EUDR examples — timber product passport, derived product, regulatory notification, harvesting \u002F origin-declaration \u002F processing \u002F supply-chain-transfer \u002F exemption events",[278,265,280,245,305],"geolocation",[278,279,280,216,31,103,35,218,245],{"title":308,"path":309,"stem":310,"children":311,"description":313,"icon":314,"tags":333},"Textile DPP","\u002Fdocs\u002Fdigital-product-passport\u002Ftextile","docs\u002F11.digital-product-passport\u002F03.textile\u002Findex",[312,320,327],{"title":308,"path":309,"stem":310,"description":313,"icon":314,"tags":315},"Digital Product Passport vocabulary for textiles and apparel under the EU Sustainable Textiles Strategy and ESPR 2024\u002F1781.","heroicons-outline:sparkles",[316,317,318,216,218,319],"textile","apparel","footwear","fibre-composition",{"title":247,"path":321,"stem":322,"description":323,"icon":324,"tags":325},"\u002Fdocs\u002Fdigital-product-passport\u002Ftextile\u002Fimplementation-guide","docs\u002F11.digital-product-passport\u002F03.textile\u002F01.implementation-guide","How to assemble a Textile Digital Product Passport against the published openepcis-dpp-ready textile vocabulary","heroicons-outline:scissors",[316,317,318,326],"implementation",{"title":260,"path":328,"stem":329,"description":330,"icon":13,"tags":331},"\u002Fdocs\u002Fdigital-product-passport\u002Ftextile\u002Fcomplete-examples","docs\u002F11.digital-product-passport\u002F03.textile\u002F02.complete-examples","Reference Textile Digital Product Passport documents covering apparel and footwear",[316,265,317,318,332,63],"fiber-composition",[316,317,318,216,218,319],{"title":335,"path":336,"stem":337,"children":338,"description":340,"icon":60,"tags":347},"Interoperability","\u002Fdocs\u002Fdigital-product-passport\u002Finteroperability","docs\u002F11.digital-product-passport\u002F04.interoperability\u002Findex",[339],{"title":335,"path":336,"stem":337,"description":340,"icon":60,"tags":341},"Guide to OpenEPCIS DPP interoperability with GS1, UNTP, CIRPASS2, and ESPR standards.",[342,343,103,344,230,345,346,220],"interoperability","untp","cirpass2","standards","alignment",[342,343,103,344,230,345,346,220],{"title":349,"path":350,"stem":351,"description":352,"icon":29,"tags":353},"DPP Resolution Flow","\u002Fdocs\u002Fdigital-product-passport\u002Fdpp-resolution-flow","docs\u002F11.digital-product-passport\u002F05.dpp-resolution-flow","How OpenEPCIS combined GS1 Digital Link, the IETF linkset format and content negotiation into one DPP resolution flow",[354,97,299,355,298],"walkthrough","content-negotiation",{"title":357,"path":358,"stem":359,"description":360,"icon":361,"tags":362},"Resolver Setup","\u002Fdocs\u002Fdigital-product-passport\u002Fresolver-setup","docs\u002F11.digital-product-passport\u002F06.resolver-setup","How to expose your DPP behind a GS1 Digital Link resolver","heroicons-outline:server",[298,97,299],{"title":364,"path":365,"stem":366,"description":367,"icon":368,"tags":369},"Multi-Component Example","\u002Fdocs\u002Fdigital-product-passport\u002Fmulti-component-example","docs\u002F11.digital-product-passport\u002F07.multi-component-example","How a composite product references separately-passported components via standard GS1 Digital Link and EPCIS aggregation","heroicons-outline:puzzle-piece",[370,371,372,344],"example","components","aggregation",{"title":374,"path":375,"stem":376,"children":377,"description":379,"icon":380,"tags":399},"Electronics DPP","\u002Fdocs\u002Fdigital-product-passport\u002Felectronics","docs\u002F11.digital-product-passport\u002F08.electronics\u002Findex",[378,387,392],{"title":374,"path":375,"stem":376,"description":379,"icon":380,"tags":381},"Digital Product Passport vocabulary for electronic devices under ESPR, the French Repairability Index, EU Right to Repair and WEEE.","heroicons-outline:device-phone-mobile",[382,383,384,385,386],"electronics","repairability","weee","energy-label","right-to-repair",{"title":247,"path":388,"stem":389,"description":390,"icon":174,"tags":391},"\u002Fdocs\u002Fdigital-product-passport\u002Felectronics\u002Fimplementation-guide","docs\u002F11.digital-product-passport\u002F08.electronics\u002F01.implementation-guide","How to assemble an Electronics Digital Product Passport against the published openepcis-dpp-ready electronics vocabulary",[382,326,383,384,385],{"title":260,"path":393,"stem":394,"description":395,"icon":13,"tags":396},"\u002Fdocs\u002Fdigital-product-passport\u002Felectronics\u002Fcomplete-examples","docs\u002F11.digital-product-passport\u002F08.electronics\u002F02.complete-examples","Reference Electronics Digital Product Passport documents covering smartphone, laptop, display and server",[382,265,397,398,63],"smartphone","laptop",[382,383,384,385,386],{"title":401,"path":402,"stem":403,"description":404,"icon":228,"tags":405},"Signed Passports","\u002Fdocs\u002Fdigital-product-passport\u002Fsigned-passports","docs\u002F11.digital-product-passport\u002F09.signed-passports","How OpenEPCIS signs product passports so that software nobody here wrote can verify them — W3C Data Integrity, did:web, and the canonicalization layer that decides whether a signature travels.",[406,407,408,409,342,410],"verifiable-credentials","data-integrity","did-web","canonicalization","trust",[215,216,217,31,218,35,219,220],{"title":413,"path":414,"stem":415,"children":416,"description":418,"icon":419,"tags":427},"Profile Checker","\u002Fdocs\u002Fprofile-checker","docs\u002F12.profile-checker\u002Findex",[417],{"title":413,"path":414,"stem":415,"description":418,"icon":419,"tags":420},"OpenEPCIS tool to define EPCIS event profiles as JSON Schema and validate EPCIS documents or events against them.","heroicons-outline:clipboard-document-check",[16,421,422,423,424,425,426,21,72],"event-profile","profile-checker","json-schema","validation","data-quality","conformance",[16,421,422,423,424,425,426,21,72],{"title":429,"path":430,"stem":431,"children":432,"description":434,"icon":435,"tags":571},"Digital Data Management","\u002Fdocs\u002Fdigital-data-management","docs\u002F13.digital-data-management\u002Findex",[433,440,452,462,473,484,493,505,515,526,535,547,559],{"title":429,"path":430,"stem":431,"description":434,"icon":435,"tags":436},"End-user guide to OpenEPCIS Digital Data Management — curate GS1 master data, publish digital product passports, manage resolver links and analyze scans.","heroicons-outline:circle-stack",[437,438,215,97,439,298],"ddm","master-data","catalog",{"title":441,"path":442,"stem":443,"description":444,"icon":445,"tags":446},"Getting Started","\u002Fdocs\u002Fdigital-data-management\u002Fgetting-started","docs\u002F13.digital-data-management\u002F01.getting-started","Signing in to Digital Data Management, finding your way around the catalog workspace, and setting up your profile and integration tokens.","heroicons-outline:rocket-launch",[437,447,448,449,450,451],"login","keycloak","workspace","roles","profile",{"title":453,"path":454,"stem":455,"description":456,"icon":457,"tags":458},"Products","\u002Fdocs\u002Fdigital-data-management\u002Fproduct-catalog","docs\u002F13.digital-data-management\u002F02.product-catalog","The DDM product catalog — creating products from a passport type, importing in bulk, and keeping the catalog tidy.","heroicons-outline:cube",[437,459,105,460,461,439],"products","passport-type","bulk-import",{"title":463,"path":464,"stem":465,"description":466,"icon":467,"tags":468},"Passport Editor","\u002Fdocs\u002Fdigital-data-management\u002Fpassport-editor","docs\u002F13.digital-data-management\u002F03.passport-editor","One editor for products, organizations and places — ontology-generated forms, rich field widgets, GS1 validation, access levels and full version history.","heroicons-outline:pencil-square",[437,469,63,424,470,471,472],"editor","gpc","access-level","versions",{"title":474,"path":475,"stem":476,"description":477,"icon":478,"tags":479},"Organizations & Places","\u002Fdocs\u002Fdigital-data-management\u002Forganizations-and-places","docs\u002F13.digital-data-management\u002F04.organizations-and-places","GLN-keyed party and location records in DDM — organization roles, primary locations, and the public GLN information pages.","heroicons-outline:building-office-2",[437,480,481,111,482,483],"organizations","places","party","location",{"title":485,"path":486,"stem":487,"description":488,"icon":489,"tags":490},"Linksets","\u002Fdocs\u002Fdigital-data-management\u002Flinksets","docs\u002F13.digital-data-management\u002F05.linksets","Managing the resolver links behind every scan — the linkset explorer, the ownership model, and templated links that adapt to the scanned code.","heroicons-outline:link",[437,299,97,298,491,492],"linktype","templated-links",{"title":494,"path":495,"stem":496,"description":497,"icon":498,"tags":499},"Public Passports","\u002Fdocs\u002Fdigital-data-management\u002Fpublic-passports","docs\u002F13.digital-data-management\u002F06.public-passports","What consumers see — the demo gallery, the passport viewer at model, lot and item level, and template-driven rendering.","heroicons-outline:qr-code",[437,500,501,502,503,504],"passport","qr-code","consumer","templates","digital-link",{"title":506,"path":507,"stem":508,"description":509,"icon":419,"tags":510},"Passport Templates","\u002Fdocs\u002Fdigital-data-management\u002Fpassport-templates","docs\u002F13.digital-data-management\u002F07.passport-templates","What each passport type asks for — field obligations, hidden fields and creation defaults, layered from shipped defaults to deployment and tenant overrides.",[437,503,511,512,513,514],"requirements","obligations","creation-defaults","dpp-ready",{"title":516,"path":517,"stem":518,"description":519,"icon":520,"tags":521},"Field Access","\u002Fdocs\u002Fdigital-data-management\u002Ffield-access","docs\u002F13.digital-data-management\u002F08.field-access","Deciding which data fields consumers, operators and authorities can see — tier by tier, with persona preview and a reviewer workflow.","heroicons-outline:lock-closed",[437,522,523,230,524,525],"field-access","access-tiers","governance","skos",{"title":527,"path":528,"stem":529,"description":530,"icon":29,"tags":531},"Resolver Domains","\u002Fdocs\u002Fdigital-data-management\u002Fresolver-domains","docs\u002F13.digital-data-management\u002F09.resolver-domains","Serving GS1 Digital Links from your own hostname — CNAME setup, verification, and test prefixes to try it without a GS1 license.",[437,298,532,533,534,112],"custom-domain","cname","dns",{"title":536,"path":537,"stem":538,"description":539,"icon":540,"tags":541},"GS1 Sync","\u002Fdocs\u002Fdigital-data-management\u002Fgs1-sync","docs\u002F13.digital-data-management\u002F10.gs1-sync","Publishing your catalog to GS1 Germany — service tokens, licensed prefixes, the key pool, Verified by GS1, and the per-record Sync tab.","heroicons-outline:arrow-path",[437,542,543,544,545,546],"gs1-germany","sync","service-token","key-pool","verified-by-gs1",{"title":548,"path":549,"stem":550,"description":551,"icon":552,"tags":553},"Scan Analytics","\u002Fdocs\u002Fdigital-data-management\u002Fscan-analytics","docs\u002F13.digital-data-management\u002F11.scan-analytics","What only a resolver can know — anonymous scan statistics, demand insights, and a live privacy report that shows exactly what is and is not collected.","heroicons-outline:chart-bar",[437,554,555,556,557,558],"scans","analytics","privacy","k-anonymity","insights",{"title":560,"path":561,"stem":562,"description":563,"icon":564,"tags":565},"Integration Tokens","\u002Fdocs\u002Fdigital-data-management\u002Fconnector-tokens","docs\u002F13.digital-data-management\u002F12.connector-tokens","How a machine gets its own long-lived credential for your catalog — issuing an offline token, naming it, seeing what it did, and revoking it when the system it belonged to is retired.","heroicons-outline:key",[437,566,567,568,569,570,448],"integration","offline-token","connector","erp","pim",[437,438,215,97,439,298],{"title":573,"path":574,"stem":575,"children":576,"description":578,"icon":579},"OpenEPCIS Overview","\u002Fdocs\u002Fplatform-overview","docs\u002F14.platform-overview\u002Findex",[577,580,586,592],{"title":573,"path":574,"stem":575,"description":578,"icon":579},"A GS1-conformant supply-chain data platform — Resolver, Masterdata, EPCIS Events — in open source and business editions.","lucide:layout-dashboard",{"title":581,"path":582,"stem":583,"description":584,"icon":585},"Architecture","\u002Fdocs\u002Fplatform-overview\u002Farchitecture","docs\u002F14.platform-overview\u002F01.architecture","How OpenEPCIS handles identity, isolation, events, and GS1 conformance — the four things that distinguish the platform.","lucide:cpu",{"title":587,"path":588,"stem":589,"description":590,"icon":591},"Feature Matrix","\u002Fdocs\u002Fplatform-overview\u002Ffeature-matrix","docs\u002F14.platform-overview\u002F02.feature-matrix","OpenEPCIS capabilities by edition, aligned to the relevant GS1 standards.","lucide:check-square",{"title":593,"path":594,"stem":595,"children":596,"description":598,"icon":599},"Modules","\u002Fdocs\u002Fplatform-overview\u002Fmodules","docs\u002F14.platform-overview\u002Fmodules\u002Findex",[597,600,607,615,623,629,635,641],{"title":593,"path":594,"stem":595,"description":598,"icon":599},"Seven module families that organise the OpenEPCIS platform — Resolver, Masterdata, EPCIS Events, Formats & Validation, Integration, Testdata, Platform.","lucide:layers",{"title":601,"path":602,"stem":603,"description":604,"icon":605,"tags":606},"GS1 Conformant Resolver","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fresolver","docs\u002F14.platform-overview\u002Fmodules\u002F01.resolver","Resolves GS1 Digital Link URIs to product information, masterdata, EPCIS endpoints, and twelve more standard link types.","lucide:link-2",[298,97,103,299,220],{"title":608,"path":609,"stem":610,"description":611,"icon":612,"tags":613},"GS1 Web Vocabulary & Masterdata","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fmasterdata","docs\u002F14.platform-overview\u002Fmodules\u002F02.masterdata","Web Vocabulary models, masterdata-to-resolver REST pattern, GS1 Germany Activate Plus \u002F GEPIR sync, and the event-driven masterdata bus.","lucide:database",[220,614,103,298,63],"masterdata",{"title":616,"path":617,"stem":618,"description":619,"icon":620,"tags":621},"EPCIS Events — Capture, Query, Subscriptions","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fepcis-events","docs\u002F14.platform-overview\u002Fmodules\u002F03.epcis-events","EPCIS 2.0 REST and SOAP, live streaming subscriptions, resilient pagination, OpenSearch event store.","lucide:activity",[39,16,31,65,622,35],"subscriptions",{"title":624,"path":625,"stem":626,"description":627,"icon":628},"Formats, Validation & Identity","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fformats","docs\u002F14.platform-overview\u002Fmodules\u002F04.formats","XML ↔ JSON-LD conversion, multi-layer validation, identifier translation, idempotent event hashing.","lucide:file-check",{"title":630,"path":631,"stem":632,"description":633,"icon":634},"Integration & Gateways","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fintegration","docs\u002F14.platform-overview\u002Fmodules\u002F05.integration","AS2 gateway for EDI partners, cloud storage, file service, natural-language AI assistant.","lucide:plug",{"title":636,"path":637,"stem":638,"description":639,"icon":640},"Testdata & Developer Tooling","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Ftestdata","docs\u002F14.platform-overview\u002Fmodules\u002F06.testdata","Synthetic EPCIS test event generation, reference event collections, conformance test suite, SDKs.","lucide:wrench",{"title":642,"path":643,"stem":644,"description":645,"icon":646},"Platform, Build & Observability","\u002Fdocs\u002Fplatform-overview\u002Fmodules\u002Fplatform","docs\u002F14.platform-overview\u002Fmodules\u002F07.platform","How OpenEPCIS is built, deployed, and observed.","lucide:server",{"title":648,"path":649,"stem":650,"children":651,"description":653,"icon":29,"tags":661},"Vision","\u002Fdocs\u002Fvision","docs\u002F15.vision\u002Findex",[652],{"title":648,"path":649,"stem":650,"description":653,"icon":29,"tags":654},"How UNTP, DIDs, Verifiable Credentials, and EPCIS work together to create unified product identity infrastructure for the connected supply chain.",[655,656,657,406,343,658,659,660],"vision","digital-twin","did","rfid","industry-4-0","web-3-0",[655,656,657,406,343,658,659,660],{"title":663,"path":664,"stem":665,"children":666,"description":668,"icon":540,"tags":717},"Connectors","\u002Fdocs\u002Fconnectors","docs\u002F16.connectors\u002Findex",[667,675,685,694,700,710],{"title":663,"path":664,"stem":665,"description":668,"icon":540,"tags":669},"Publish products from UnoPim, ERPNext, metasfresh or Odoo to a GS1 Digital Link, a digital product passport and EPCIS events.",[670,671,672,673,674,215,31,298],"connectors","unopim","odoo","erpnext","metasfresh",{"title":676,"path":677,"stem":678,"description":679,"icon":60,"tags":680},"How It Works","\u002Fdocs\u002Fconnectors\u002Fhow-a-connector-works","docs\u002F16.connectors\u002F01.how-a-connector-works","The mechanics of a connector — the outbound half that polls, maps and publishes, the inbound bridge that answers identity questions, and the design rules the code holds you to.",[670,543,681,682,683,684],"mapping","bridge","webhook","idempotency",{"title":686,"path":687,"stem":688,"description":689,"icon":690,"tags":691},"Identifiers","\u002Fdocs\u002Fconnectors\u002Fidentifiers-gtin-and-sku","docs\u002F16.connectors\u002F02.identifiers-gtin-and-sku","One product needs exactly one GS1 identifier — the GTIN. Where the connector finds it, why your SKU is a different thing, and how batch, serial and logistics-unit levels build on top.","heroicons-outline:hashtag",[670,105,692,109,110,104,693],"sku","check-digit",{"title":695,"path":696,"stem":697,"description":698,"icon":540,"tags":699},"UnoPim","\u002Fdocs\u002Fconnectors\u002Funopim","docs\u002F16.connectors\u002F03.unopim","The whole UnoPim route — what has to exist in the PIM, how the connection is configured, what the first sync publishes, and where the data surfaces in DDM and on the published passport page.",[670,671,570,105,681,683,500],{"title":701,"path":702,"stem":703,"description":704,"icon":228,"tags":705},"Events & Credentials","\u002Fdocs\u002Fconnectors\u002Fevents-credentials-and-representations","docs\u002F16.connectors\u002F04.events-credentials-and-representations","What happens after a record is published — how a movement in your source system becomes an EPCIS event, where UNTP answers the same question differently, and how a passport gains a signed, selectively disclosed representation.",[670,31,65,706,707,708,406,343,523,709],"event-types","transformation","error-declaration","representations",{"title":711,"path":712,"stem":713,"description":714,"icon":457,"tags":715},"Odoo walkthrough","\u002Fdocs\u002Fconnectors\u002Fodoo","docs\u002F16.connectors\u002F05.odoo","One warehouse day walked through end to end — goods in, packed onto a pallet, shipped, part of it back, the rest ground into another article, and one report taken back — with the screen and the EPCIS event it produces side by side.",[670,672,31,65,104,372,707,716],"tutorial",[670,671,672,673,674,215,31,298],{"title":719,"path":720,"stem":721,"children":722,"description":724,"icon":634},"API Reference","\u002Fdocs\u002Fapi-reference","docs\u002F17.api-reference\u002Findex",[723],{"title":719,"path":720,"stem":721,"description":724,"icon":634},"Interactive OpenAPI references for the GS1 Digital Link Resolver and the EPCIS 2.0 REST bindings.",[726],{"title":727,"path":728,"stem":729,"children":730,"page":747},"Blog","\u002Fblog","blog",[731,737,742],{"title":732,"path":733,"stem":734,"description":735,"icon":736},"The Web-based DPP doesn't need new infrastructure","\u002Fblog\u002Fdpp-stack-for-agents","blog\u002F01.dpp-stack-for-agents","Three GS1 standards — Digital Link, Web Vocabulary, Conformant Resolver — plus EPCIS 2.0 already cover the agent-facing layer of the Digital Product Passport.","heroicons-outline:newspaper",{"title":738,"path":739,"stem":740,"description":741,"icon":736},"Fascinating in Theory. It Just Doesn't Work in Practice.","\u002Fblog\u002Fblockchain-traceability","blog\u002F02.blockchain-traceability","Why blockchain is the wrong answer to traceability, and why it refuses to die anyway.",{"title":743,"path":744,"stem":745,"description":746,"icon":736},"Prove It: DPP Conformance Testing Is Live on the EU Test Bed","\u002Fblog\u002Fdpp-conformance-testing-live","blog\u002F03.dpp-conformance-testing-live","The European Commission now hosts a public validator for OpenEPCIS DPP-Ready passports. Free, no account, no vendor in the middle, and we would like to hear where the shapes get it wrong.",false,{"doc":749,"usedFallback":747},{"id":750,"title":743,"author":751,"body":752,"date":1269,"description":746,"extension":1270,"hero":780,"icon":736,"meta":1271,"navigation":1282,"originalLanguage":1283,"path":744,"seo":1284,"sitemap":1285,"stem":745,"tags":1286,"__hash__":1290},"blogEN\u002Fblog\u002F03.dpp-conformance-testing-live.md","Sven Böckelmann",{"type":753,"value":754,"toc":1259},"minimark",[755,759,763,774,781,784,787,792,795,798,801,812,816,819,822,828,834,840,843,847,850,890,893,1078,1085,1089,1092,1106,1116,1134,1137,1141,1144,1151,1155,1162,1169,1172,1180,1183,1186,1190,1193,1201,1210,1213,1217,1220,1226,1232,1238,1241,1244,1252,1255],[756,757,743],"h1",{"id":758},"prove-it-dpp-conformance-testing-is-live-on-the-eu-test-bed",[760,761,762],"p",{},"Here is a link. Open it, drop a Digital Product Passport into the form, and get a verdict:",[760,764,765],{},[766,767,768],"strong",{},[769,770,771],"a",{"href":771,"rel":772},"https:\u002F\u002Fwww.itb.ec.europa.eu\u002Fshacl\u002Fopenepcis\u002Fupload",[773],"nofollow",[760,775,776],{},[777,778],"img",{"alt":779,"src":780},"The OpenEPCIS DPP-Ready validator running on the European Commission's Interoperability Test Bed","\u002Fimg\u002Fblog\u002Fdpp-validator-itb.webp",[760,782,783],{},"It runs on European Commission infrastructure. It is free, it needs no account, and there is no vendor in the middle. It tells you whether a passport conforms to the OpenEPCIS DPP-Ready shapes, with the same engine, the same shapes and the same verdict for everyone who asks.",[760,785,786],{},"The useful part is the independence: a claim about a passport can now be settled by a machine that belongs to neither side of the conversation.",[788,789,791],"h2",{"id":790},"a-specification-nobody-can-check-is-a-pdf-with-ambitions","A specification nobody can check is a PDF with ambitions",[760,793,794],{},"The DPP space has no shortage of models. Everyone has a data model, a profile, an alignment, a mapping table, a slide with boxes and arrows. What almost nobody has is the boring half: a way for a third party to take a document, hand it to a machine neither side controls, and get back an answer that both sides accept.",[760,796,797],{},"Without that, \"we support the standard\" is a statement of intent. Intent is where interoperability projects go to die, slowly, in a meeting where two implementers are each right about different things and nobody can show it.",[760,799,800],{},"Once the check exists, a few things get cheaper for everyone. The supplier runs the file instead of arguing about it. The buyer can point at a validation type instead of writing bespoke acceptance criteria into a contract. The solution provider avoids a bilateral test cycle with every single customer, which is a cost that rarely appears in a business case and is paid anyway. One upload replaces a correspondence.",[760,802,803,804,807,808,811],{},"Keep the two words straight, because they get mixed constantly. ",[766,805,806],{},"Compliance"," is meeting a regulatory requirement, the ESPR or the Battery Regulation. ",[766,809,810],{},"Conformance"," is adhering to a published specification. A validator can only ever give you the second. It is still the half that makes the first tractable, because a regulator, an auditor or a customer asking \"does this passport carry what it must\" needs a repeatable answer, and repeatable answers come from machines running published rules.",[788,813,815],{"id":814},"why-it-is-open","Why it is open",[760,817,818],{},"A conformance check that is closed puts whoever runs it in the position of deciding what passes, and whoever charges for it in the position of deciding who gets to ask. For a check tied to public regulation, that seems like the wrong arrangement, and it falls hardest on the companies with the least slack: the small manufacturer, the supplier three tiers down, the project that just wants to interoperate.",[760,820,821],{},"Three properties follow from that, and you can verify all three today.",[760,823,824,827],{},[766,825,826],{},"The rules are readable."," Every constraint the validator applies is published as SHACL in a public repository, derived from published ontologies. When your passport fails you get the constraint, the node and the reason, so you can read the shape that rejected you and disagree with it.",[760,829,830,833],{},[766,831,832],{},"The verdict is not ours to give."," We wrote the shapes and we do not operate the service that applies them. The European Commission does, on its own infrastructure, with its own off-the-shelf validator. We cannot make a passport pass, and neither can anyone else. That separation is the reason for using the Test Bed rather than hosting this ourselves.",[760,835,836,839],{},[766,837,838],{},"It costs nothing and asks nothing."," No account, no registration, no usage tier. Upload a file, read the report, close the tab.",[760,841,842],{},"The shapes are Apache-2.0, the bundle sits in a repository anyone can fork, and the validator image is a standard Commission artifact, so none of this depends on OpenEPCIS continuing to exist.",[788,844,846],{"id":845},"what-it-actually-validates","What it actually validates",[760,848,849],{},"Sixteen validation types. Pick the one that matches your passport:",[851,852,853,861,864,878],"ul",{},[854,855,856,860],"li",{},[857,858,859],"code",{},"dpp.core"," for the cross-cutting ESPR core",[854,862,863],{},"one per regulation module: battery, textile, electronics, detergent, EUDR, packaging, construction products, the ESPR iron and steel product group, and US FSMA §204",[854,865,866,869,870,873,874,877],{},[857,867,868],{},"eu.battery.model",", ",[857,871,872],{},".batch"," and ",[857,875,876],{},".item"," for the three EN 18223 granularity levels, because obligations genuinely differ by level. A model passport has no serial number. An item passport resolves model and party identifiers up the Digital Link hierarchy instead of restating them.",[854,879,880,869,883,873,886,889],{},[857,881,882],{},"eu.battery.ev",[857,884,885],{},".lmt",[857,887,888],{},".industrial"," for the EC battery passport category guidance",[760,891,892],{},"Submit JSON-LD, Turtle, RDF\u002FXML or N-Triples. There is a web form, a REST API and a SOAP endpoint, the last one being what the Test Bed's own test engine speaks. The REST API is the interesting one for you, because it turns conformance into a build step:",[894,895,900],"pre",{"className":896,"code":897,"language":898,"meta":899,"style":899},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast monokai","curl -s -X POST https:\u002F\u002Fwww.itb.ec.europa.eu\u002Fshacl\u002Fopenepcis\u002Fapi\u002Fvalidate \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d \"{\\\"contentToValidate\\\":\\\"$(base64 \u003C my-passport.jsonld | tr -d '\\n')\\\",\n       \\\"embeddingMethod\\\":\\\"BASE64\\\",\n       \\\"validationType\\\":\\\"eu.textile\\\",\n       \\\"contentSyntax\\\":\\\"application\u002Fld+json\\\",\n       \\\"reportSyntax\\\":\\\"application\u002Fjson\\\"}\"\n","bash","",[857,901,902,929,940,992,1014,1035,1056],{"__ignoreMap":899},[903,904,907,911,915,918,922,925],"span",{"class":905,"line":906},"line",1,[903,908,910],{"class":909},"sqej0","curl",[903,912,914],{"class":913},"sCHB2"," -s",[903,916,917],{"class":913}," -X",[903,919,921],{"class":920},"sQH_i"," POST",[903,923,924],{"class":920}," https:\u002F\u002Fwww.itb.ec.europa.eu\u002Fshacl\u002Fopenepcis\u002Fapi\u002Fvalidate",[903,926,928],{"class":927},"sCYDO"," \\\n",[903,930,932,935,938],{"class":905,"line":931},2,[903,933,934],{"class":913},"  -H",[903,936,937],{"class":920}," 'Content-Type: application\u002Fjson'",[903,939,928],{"class":927},[903,941,943,946,949,952,955,957,960,962,965,968,972,975,978,981,984,987,989],{"class":905,"line":942},3,[903,944,945],{"class":913},"  -d",[903,947,948],{"class":920}," \"{",[903,950,951],{"class":927},"\\\"",[903,953,954],{"class":920},"contentToValidate",[903,956,951],{"class":927},[903,958,959],{"class":920},":",[903,961,951],{"class":927},[903,963,964],{"class":920},"$(",[903,966,967],{"class":909},"base64",[903,969,971],{"class":970},"skuvz"," \u003C",[903,973,974],{"class":920}," my-passport.jsonld ",[903,976,977],{"class":970},"|",[903,979,980],{"class":909}," tr",[903,982,983],{"class":913}," -d",[903,985,986],{"class":920}," '\\n')",[903,988,951],{"class":927},[903,990,991],{"class":920},",\n",[903,993,995,998,1001,1003,1005,1007,1010,1012],{"class":905,"line":994},4,[903,996,997],{"class":927},"       \\\"",[903,999,1000],{"class":920},"embeddingMethod",[903,1002,951],{"class":927},[903,1004,959],{"class":920},[903,1006,951],{"class":927},[903,1008,1009],{"class":920},"BASE64",[903,1011,951],{"class":927},[903,1013,991],{"class":920},[903,1015,1017,1019,1022,1024,1026,1028,1031,1033],{"class":905,"line":1016},5,[903,1018,997],{"class":927},[903,1020,1021],{"class":920},"validationType",[903,1023,951],{"class":927},[903,1025,959],{"class":920},[903,1027,951],{"class":927},[903,1029,1030],{"class":920},"eu.textile",[903,1032,951],{"class":927},[903,1034,991],{"class":920},[903,1036,1038,1040,1043,1045,1047,1049,1052,1054],{"class":905,"line":1037},6,[903,1039,997],{"class":927},[903,1041,1042],{"class":920},"contentSyntax",[903,1044,951],{"class":927},[903,1046,959],{"class":920},[903,1048,951],{"class":927},[903,1050,1051],{"class":920},"application\u002Fld+json",[903,1053,951],{"class":927},[903,1055,991],{"class":920},[903,1057,1059,1061,1064,1066,1068,1070,1073,1075],{"class":905,"line":1058},7,[903,1060,997],{"class":927},[903,1062,1063],{"class":920},"reportSyntax",[903,1065,951],{"class":927},[903,1067,959],{"class":920},[903,1069,951],{"class":927},[903,1071,1072],{"class":920},"application\u002Fjson",[903,1074,951],{"class":927},[903,1076,1077],{"class":920},"}\"\n",[760,1079,1080,1081,1084],{},"Put that in your pipeline and your passports stop drifting. A ",[857,1082,1083],{},"sh:Violation"," fails you. Warnings and info results are reported and tolerated, deliberately, because the conditional and optional data points of the EC readiness shapes live at those severities and a gate that failed on them could never go green.",[788,1086,1088],{"id":1087},"the-interesting-part-what-a-hosted-validator-cannot-do","The interesting part: what a hosted validator cannot do",[760,1090,1091],{},"This is where it stops being a deployment story and becomes an engineering one. Our shapes are authored against the ontologies, layered the way the vocabulary is layered. A stock hosted validator cannot run them as authored, and we measured three reasons rather than guessing at them.",[760,1093,1094,1097,1098,1101,1102,1105],{},[766,1095,1096],{},"It applies no RDFS entailment."," The module ontologies specialise core properties with ",[857,1099,1100],{},"rdfs:subPropertyOf",", and the core shapes state the obligation on the superproperty. Nothing in the delivery chain applies that axiom, so a document stating only the specialised property comes back non-conformant. The bundle is therefore rewritten into plain SHACL Core: every such path becomes an ",[857,1103,1104],{},"sh:alternativePath"," over the property and its specialisations, and targets are extended the same way. The authored shapes stay layer-clean, and the published bundle needs no reasoner.",[760,1107,1108,1115],{},[766,1109,1110,1111,1114],{},"It cannot flip ",[857,1112,1113],{},"sh:deactivated"," per request."," The granularity and category shapes ship deactivated and get activated one set at a time, which is impossible per request on a hosted service. So the generator emits one pre-activated copy per validation type. That is why three battery granularity levels are three types rather than one type with a switch.",[760,1117,1118,1121,1122,1125,1126,1129,1130,1133],{},[766,1119,1120],{},"It needs the class hierarchy in the data graph."," ",[857,1123,1124],{},"sh:class"," and the subclass resolution behind ",[857,1127,1128],{},"sh:targetClass"," are evaluated over the data, and the hierarchy plus the code-list individuals live in the ontology. Every type therefore ships a ",[857,1131,1132],{},"background.ttl",", which the validator merges in before validating. Without it the shapes are vacuous in one direction and wrong in the other.",[760,1135,1136],{},"None of that is visible when you upload a file, which is the point. It is also why the bundle is generated from the ontologies on every build rather than hand-maintained, with a drift gate that fails the build when the two disagree.",[788,1138,1140],{"id":1139},"how-we-know-the-shapes-are-not-empty","How we know the shapes are not empty",[760,1142,1143],{},"A validator that says SUCCESS to everything is worse than no validator, and from the outside it looks identical to a good one. So the suite proves the negative case too.",[760,1145,1146,1147,1150],{},"Every reference passport we publish, 46 of them, goes through the real Commission validator image on every run. Alongside them run 73 test suite fixtures, of which ",[766,1148,1149],{},"27 are deliberately broken",", each derived from a correct passport by exactly one documented mutation: a granularity mismatch, a missing economic operator role, an out-of-range fraction, a missing required property read straight out of the shapes. Every one of them must fail. If an upstream change ever makes a mutation stop violating, the build goes red instead of the suite quietly asserting nothing.",[788,1152,1154],{"id":1153},"the-full-chain-green","The full chain, green",[760,1156,1157,1158,1161],{},"The validator is the half you can use today. The other half went live alongside it: the ",[766,1159,1160],{},"OpenEPCIS community"," on the Test Bed, where a conformance statement gets recorded against a specification rather than merely computed.",[760,1163,1164,1165,1168],{},"Sixteen specifications, one per validation type. The ",[857,1166,1167],{},"DPPDataProvider"," actor under each. The GITB test suite deployed as a shared suite and linked to all sixteen, 32 test cases in total. A system under test carrying sixteen conformance statements for the reference passports we publish.",[760,1170,1171],{},"Then we pressed go on all sixteen self-tests:",[894,1173,1178],{"className":1174,"code":1176,"language":1177},[1175],"language-text","dpp.core                 SUCCESS\neu.battery               SUCCESS\neu.battery.model         SUCCESS\neu.battery.batch         SUCCESS\neu.battery.item          SUCCESS\neu.battery.ev            SUCCESS\neu.battery.lmt           SUCCESS\neu.battery.industrial    SUCCESS\neu.cpr                   SUCCESS\neu.detergent             SUCCESS\neu.electronics           SUCCESS\neu.eudr                  SUCCESS\neu.iron-steel            SUCCESS\neu.ppwr                  SUCCESS\neu.textile               SUCCESS\nus.fsma204               SUCCESS\n\n16\u002F16\n","text",[857,1179,1176],{"__ignoreMap":899},[760,1181,1182],{},"Every link in that chain belongs to someone else. The Commission's test engine calls the Commission's hosted validator over the public internet, loads our shapes, fetches our contexts from ref.openepcis.org, validates our published passports, and separately insists that the deliberately broken ones fail. Nothing in that sentence runs on our laptops.",[760,1184,1185],{},"The community is provisioned from the repository too, by a script that reads the same configuration the validator serves, so rebuilding it is one command and the Test Bed cannot quietly drift away from the shapes.",[788,1187,1189],{"id":1188},"open-and-it-updates-itself","Open, and it updates itself",[760,1191,1192],{},"The validator configuration lives in its own public repository:",[760,1194,1195],{},[766,1196,1197],{},[769,1198,1199],{"href":1199,"rel":1200},"https:\u002F\u002Fgithub.com\u002Fopenepcis\u002Fvalidator-resources-openepcis",[773],[760,1202,1203,1204,1209],{},"Apache-2.0, the shapes and the configuration exactly as the Commission serves them. It is a mirror, generated from ",[769,1205,1208],{"href":1206,"rel":1207},"https:\u002F\u002Fgithub.com\u002Fopenepcis\u002Fopenepcis-dpp-ready",[773],"openepcis-dpp-ready"," where the ontologies are the source of truth, and a webhook redeploys the live service within a couple of minutes of a push. Shapes improve, the public validator follows, with no release dance.",[760,1211,1212],{},"One honest caveat: the Test Bed UI runs Monday to Friday, 05:00 to 20:00 CET, and carries no SLA, so treat it as what it is, a shared public good, used fairly. The validator itself answers around the clock.",[788,1214,1216],{"id":1215},"what-you-can-use-and-what-would-help-us","What you can use, and what would help us",[760,1218,1219],{},"Three things are available, and none of them need a conversation with us first.",[760,1221,1222,1225],{},[766,1223,1224],{},"The validator."," For your own passports, in your pipeline, in a procurement checklist, or in a workshop where two parties read the same requirement differently.",[760,1227,1228,1231],{},[766,1229,1230],{},"A conformance statement."," The community on the Test Bed is set up. If you would like your system recorded as conforming to one of the sixteen specifications, get in touch and we will add you as an organisation in it.",[760,1233,1234,1237],{},[766,1235,1236],{},"A regulation we do not cover yet."," If your product group is missing and you can bring the requirements, we will model it in the open, with the same layering, shapes and tests as the existing modules.",[760,1239,1240],{},"What would help us most is the opposite direction: finding out where the shapes are wrong.",[760,1242,1243],{},"Sixteen green results show that our passports satisfy our own reading of the regulations. That reading can be mistaken, and we will not discover it from our own examples. The interesting cases are real passports from real products, built by people who read the ESPR, a sectoral regulation or the EN 182xx series differently than we did.",[760,1245,1246,1247,1251],{},"So if the validator rejects something you believe is correct, please open an issue on ",[769,1248,1208],{"href":1249,"rel":1250},"https:\u002F\u002Fgithub.com\u002Fopenepcis\u002Fopenepcis-dpp-ready\u002Fissues",[773]," with the document and the report. The same goes for a shape that accepts something it should reject, a confusing label, a missing validation type, or a disagreement with the granularity model. Those reports are the main way the shapes improve, and there are only so many passports we can think of on our own.",[760,1253,1254],{},"Thanks to the Interoperability Test Bed team, who onboarded the project, host the validator and answered a long list of questions. A free, Commission-operated conformance service is a good thing for this field to have, and it is worth using.",[1256,1257,1258],"style",{},"html pre.shiki code .sqej0, html code.shiki .sqej0{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFB757;--shiki-sepia:#A6E22E}html pre.shiki code .sCHB2, html code.shiki .sCHB2{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF;--shiki-sepia:#AE81FF}html pre.shiki code .sQH_i, html code.shiki .sQH_i{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF;--shiki-sepia:#E6DB74}html pre.shiki code .sCYDO, html code.shiki .sCYDO{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492;--shiki-sepia:#AE81FF}html pre.shiki code .skuvz, html code.shiki .skuvz{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492;--shiki-sepia:#F92672}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":899,"searchDepth":931,"depth":931,"links":1260},[1261,1262,1263,1264,1265,1266,1267,1268],{"id":790,"depth":931,"text":791},{"id":814,"depth":931,"text":815},{"id":845,"depth":931,"text":846},{"id":1087,"depth":931,"text":1088},{"id":1139,"depth":931,"text":1140},{"id":1153,"depth":931,"text":1154},{"id":1188,"depth":931,"text":1189},{"id":1215,"depth":931,"text":1216},"2026-10-05T00:00:00.000Z","md",{"head":1272,"readingTime":1277},{"meta":1273},[1274],{"name":1275,"content":1276},"keywords","Digital Product Passport, conformance testing, SHACL, Interoperability Test Bed, ITB, ESPR, GS1, validation, JSON-LD, GITB, open source",{"text":1278,"minutes":1279,"time":1280,"words":1281},"10 min read",9.045,542700,1809,true,"en",{"title":743,"description":746},{"loc":744},[216,426,1287,146,230,103,1288,1289],"shacl","ontology","itb","hDEmaMGQMYVSKy2a42Db610i5fyfXrr0AemtaSq8trI",[1292],{"title":5,"path":6,"stem":7,"children":1293},[1294,1296,1301,1306,1311,1316,1321,1326,1336,1341,1346,1351,1416,1421,1450,1468,1473,1488],{"title":10,"path":6,"stem":11,"description":12,"icon":13,"tags":1295},[15,16,17,18,19,20,21],{"title":23,"path":24,"stem":25,"children":1297,"description":28,"icon":29,"tags":1300},[1298],{"title":23,"path":24,"stem":25,"description":28,"icon":29,"tags":1299},[16,31,32,33,34,35,36,37,38,39],[16,31,32,33,34,35,36,37,38,39],{"title":42,"path":43,"stem":44,"children":1302,"description":47,"icon":48,"tags":1305},[1303],{"title":42,"path":43,"stem":44,"description":47,"icon":48,"tags":1304},[16,31,32,33,50,51,39],[16,31,32,33,50,51,39],{"title":54,"path":55,"stem":56,"children":1307,"description":59,"icon":60,"tags":1310},[1308],{"title":54,"path":55,"stem":56,"description":59,"icon":60,"tags":1309},[16,62,63,64,65,66,67,21,68,69,70,71,72],[16,62,63,64,65,66,67,21,68,69,70,71,72],{"title":75,"path":76,"stem":77,"children":1312,"description":80,"icon":81,"tags":1315},[1313],{"title":75,"path":76,"stem":77,"description":80,"icon":81,"tags":1314},[16,32,62,63,64,65,83,67,21,84,85,86,70,71,72],[16,32,62,63,64,65,83,67,21,84,85,86,70,71,72],{"title":89,"path":90,"stem":91,"children":1317,"description":94,"icon":95,"tags":1320},[1318],{"title":89,"path":90,"stem":91,"description":94,"icon":95,"tags":1319},[16,97,98,99,100,101,21,102,103,104,105,106,107,108,109,110,111,112],[16,97,98,99,100,101,21,102,103,104,105,106,107,108,109,110,111,112],{"title":115,"path":116,"stem":117,"children":1322,"description":120,"icon":121,"tags":1325},[1323],{"title":115,"path":116,"stem":117,"description":120,"icon":121,"tags":1324},[16,123,62,63,64,65,21,124,125,126,71,72],[16,123,62,63,64,65,21,124,125,126,71,72],{"title":129,"path":130,"stem":131,"children":1327,"description":134,"icon":135,"tags":1335},[1328,1330],{"title":129,"path":130,"stem":131,"description":134,"icon":135,"tags":1329},[16,123,62,63,64,65,21,124,125,126,71,72],{"title":138,"path":139,"stem":140,"children":1331,"description":143,"icon":144,"tags":1334},[1332],{"title":138,"path":139,"stem":140,"description":143,"icon":144,"tags":1333},[16,62,63,146,21,147,148,149,35,150,151,152,153],[16,62,63,146,21,147,148,149,35,150,151,152,153],[16,123,62,63,64,65,21,124,125,126,71,72],{"title":157,"path":158,"stem":159,"children":1337,"description":162,"icon":163,"tags":1340},[1338],{"title":157,"path":158,"stem":159,"description":162,"icon":163,"tags":1339},[16,62,63,146,21,165,35,150,151,152,153],[16,62,63,146,21,165,35,150,151,152,153],{"title":168,"path":169,"stem":170,"children":1342,"description":173,"icon":174,"tags":1345},[1343],{"title":168,"path":169,"stem":170,"description":173,"icon":174,"tags":1344},[16,176,15,177,21,178,35,179,151,152,180],[16,176,15,177,21,178,35,179,151,152,180],{"title":183,"path":184,"stem":185,"children":1347,"description":188,"icon":189,"tags":1350},[1348],{"title":183,"path":184,"stem":185,"description":188,"icon":189,"tags":1349},[191,15,192,193,194,195,196,31,197,198,199,200,201,202,203,204],[191,15,192,193,194,195,196,31,197,198,199,200,201,202,203,204],{"title":207,"path":208,"stem":209,"children":1352,"description":212,"icon":213,"tags":1415},[1353,1355,1360,1371,1384,1393,1398,1400,1402,1404,1413],{"title":207,"path":208,"stem":209,"description":212,"icon":213,"tags":1354},[215,216,217,31,218,35,219,220],{"title":222,"path":223,"stem":224,"children":1356,"description":227,"icon":228,"tags":1359},[1357],{"title":222,"path":223,"stem":224,"description":227,"icon":228,"tags":1358},[230,231,218,216,217,232],[230,231,218,216,217,232],{"title":235,"path":236,"stem":237,"children":1361,"description":240,"icon":241,"tags":1370},[1362,1364,1366,1368],{"title":235,"path":236,"stem":237,"description":240,"icon":241,"tags":1363},[243,244,216,31,103,35,218,245],{"title":247,"path":248,"stem":249,"description":250,"icon":174,"tags":1365},[243,244,216,31,220],{"title":253,"path":254,"stem":255,"description":256,"icon":257,"tags":1367},[243,31,65,39,216],{"title":260,"path":261,"stem":262,"description":263,"icon":13,"tags":1369},[243,265,266,63,267,245],[243,244,216,31,103,35,218,245],{"title":270,"path":271,"stem":272,"children":1372,"description":275,"icon":276,"tags":1383},[1373,1375,1377,1379,1381],{"title":270,"path":271,"stem":272,"description":275,"icon":276,"tags":1374},[278,279,280,216,31,103,35,218,245],{"title":247,"path":282,"stem":283,"description":284,"icon":285,"tags":1376},[278,279,280,216,31,245],{"title":253,"path":288,"stem":289,"description":290,"icon":285,"tags":1378},[278,31,65,39,216],{"title":293,"path":294,"stem":295,"description":296,"icon":285,"tags":1380},[278,97,298,299,216,245],{"title":260,"path":301,"stem":302,"description":303,"icon":13,"tags":1382},[278,265,280,245,305],[278,279,280,216,31,103,35,218,245],{"title":308,"path":309,"stem":310,"children":1385,"description":313,"icon":314,"tags":1392},[1386,1388,1390],{"title":308,"path":309,"stem":310,"description":313,"icon":314,"tags":1387},[316,317,318,216,218,319],{"title":247,"path":321,"stem":322,"description":323,"icon":324,"tags":1389},[316,317,318,326],{"title":260,"path":328,"stem":329,"description":330,"icon":13,"tags":1391},[316,265,317,318,332,63],[316,317,318,216,218,319],{"title":335,"path":336,"stem":337,"children":1394,"description":340,"icon":60,"tags":1397},[1395],{"title":335,"path":336,"stem":337,"description":340,"icon":60,"tags":1396},[342,343,103,344,230,345,346,220],[342,343,103,344,230,345,346,220],{"title":349,"path":350,"stem":351,"description":352,"icon":29,"tags":1399},[354,97,299,355,298],{"title":357,"path":358,"stem":359,"description":360,"icon":361,"tags":1401},[298,97,299],{"title":364,"path":365,"stem":366,"description":367,"icon":368,"tags":1403},[370,371,372,344],{"title":374,"path":375,"stem":376,"children":1405,"description":379,"icon":380,"tags":1412},[1406,1408,1410],{"title":374,"path":375,"stem":376,"description":379,"icon":380,"tags":1407},[382,383,384,385,386],{"title":247,"path":388,"stem":389,"description":390,"icon":174,"tags":1409},[382,326,383,384,385],{"title":260,"path":393,"stem":394,"description":395,"icon":13,"tags":1411},[382,265,397,398,63],[382,383,384,385,386],{"title":401,"path":402,"stem":403,"description":404,"icon":228,"tags":1414},[406,407,408,409,342,410],[215,216,217,31,218,35,219,220],{"title":413,"path":414,"stem":415,"children":1417,"description":418,"icon":419,"tags":1420},[1418],{"title":413,"path":414,"stem":415,"description":418,"icon":419,"tags":1419},[16,421,422,423,424,425,426,21,72],[16,421,422,423,424,425,426,21,72],{"title":429,"path":430,"stem":431,"children":1422,"description":434,"icon":435,"tags":1449},[1423,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447],{"title":429,"path":430,"stem":431,"description":434,"icon":435,"tags":1424},[437,438,215,97,439,298],{"title":441,"path":442,"stem":443,"description":444,"icon":445,"tags":1426},[437,447,448,449,450,451],{"title":453,"path":454,"stem":455,"description":456,"icon":457,"tags":1428},[437,459,105,460,461,439],{"title":463,"path":464,"stem":465,"description":466,"icon":467,"tags":1430},[437,469,63,424,470,471,472],{"title":474,"path":475,"stem":476,"description":477,"icon":478,"tags":1432},[437,480,481,111,482,483],{"title":485,"path":486,"stem":487,"description":488,"icon":489,"tags":1434},[437,299,97,298,491,492],{"title":494,"path":495,"stem":496,"description":497,"icon":498,"tags":1436},[437,500,501,502,503,504],{"title":506,"path":507,"stem":508,"description":509,"icon":419,"tags":1438},[437,503,511,512,513,514],{"title":516,"path":517,"stem":518,"description":519,"icon":520,"tags":1440},[437,522,523,230,524,525],{"title":527,"path":528,"stem":529,"description":530,"icon":29,"tags":1442},[437,298,532,533,534,112],{"title":536,"path":537,"stem":538,"description":539,"icon":540,"tags":1444},[437,542,543,544,545,546],{"title":548,"path":549,"stem":550,"description":551,"icon":552,"tags":1446},[437,554,555,556,557,558],{"title":560,"path":561,"stem":562,"description":563,"icon":564,"tags":1448},[437,566,567,568,569,570,448],[437,438,215,97,439,298],{"title":573,"path":574,"stem":575,"children":1451,"description":578,"icon":579},[1452,1453,1454,1455],{"title":573,"path":574,"stem":575,"description":578,"icon":579},{"title":581,"path":582,"stem":583,"description":584,"icon":585},{"title":587,"path":588,"stem":589,"description":590,"icon":591},{"title":593,"path":594,"stem":595,"children":1456,"description":598,"icon":599},[1457,1458,1460,1462,1464,1465,1466,1467],{"title":593,"path":594,"stem":595,"description":598,"icon":599},{"title":601,"path":602,"stem":603,"description":604,"icon":605,"tags":1459},[298,97,103,299,220],{"title":608,"path":609,"stem":610,"description":611,"icon":612,"tags":1461},[220,614,103,298,63],{"title":616,"path":617,"stem":618,"description":619,"icon":620,"tags":1463},[39,16,31,65,622,35],{"title":624,"path":625,"stem":626,"description":627,"icon":628},{"title":630,"path":631,"stem":632,"description":633,"icon":634},{"title":636,"path":637,"stem":638,"description":639,"icon":640},{"title":642,"path":643,"stem":644,"description":645,"icon":646},{"title":648,"path":649,"stem":650,"children":1469,"description":653,"icon":29,"tags":1472},[1470],{"title":648,"path":649,"stem":650,"description":653,"icon":29,"tags":1471},[655,656,657,406,343,658,659,660],[655,656,657,406,343,658,659,660],{"title":663,"path":664,"stem":665,"children":1474,"description":668,"icon":540,"tags":1487},[1475,1477,1479,1481,1483,1485],{"title":663,"path":664,"stem":665,"description":668,"icon":540,"tags":1476},[670,671,672,673,674,215,31,298],{"title":676,"path":677,"stem":678,"description":679,"icon":60,"tags":1478},[670,543,681,682,683,684],{"title":686,"path":687,"stem":688,"description":689,"icon":690,"tags":1480},[670,105,692,109,110,104,693],{"title":695,"path":696,"stem":697,"description":698,"icon":540,"tags":1482},[670,671,570,105,681,683,500],{"title":701,"path":702,"stem":703,"description":704,"icon":228,"tags":1484},[670,31,65,706,707,708,406,343,523,709],{"title":711,"path":712,"stem":713,"description":714,"icon":457,"tags":1486},[670,672,31,65,104,372,707,716],[670,671,672,673,674,215,31,298],{"title":719,"path":720,"stem":721,"children":1489,"description":724,"icon":634},[1490],{"title":719,"path":720,"stem":721,"description":724,"icon":634},1791212957516]