[{"data":1,"prerenderedAt":2602},["ShallowReactive",2],{"navigation-docsEN":3,"blog-EN":483},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","/docs","docs",[9,21,39,51,72,86,112,126,153,164,179,203,391,467],{"title":10,"path":6,"stem":11,"description":12,"icon":13,"tags":14},"Documentation","docs/index","Introduction to documentation on EPCIS and OpenEPCIS tools","heroicons-outline:document-text",[15,16,17,18,19,20],"openepcis","epcis-2-0","epcis-documentation","epcis-standard","open-source","epcis-tools",{"title":22,"path":23,"stem":24,"children":25,"description":27,"icon":28,"tags":38},"Introduction","/docs/introduction","docs/01.introduction/index",[26],{"title":22,"path":23,"stem":24,"description":27,"icon":28,"tags":29},"Why EPCIS is necessary and how it can help organizations of all sizes and types.","heroicons-outline:globe-alt",[16,30,31,32,33,34,35,36,37],"epcis","epcis-1-2","gs1-epcis-standard","supply-chain","traceability","data-sharing","tracking","tracing",[16,30,31,32,33,34,35,36,37],{"title":40,"path":41,"stem":42,"children":43,"description":45,"icon":46,"tags":50},"EPCIS","/docs/epcis","docs/02.epcis/index",[44],{"title":40,"path":41,"stem":42,"description":45,"icon":46,"tags":47},"Discover the specifics of EPCIS, how it works, and what OpenEPCIS is.","i-custom-open-epcis",[16,30,31,32,48,49],"iso-iec-19987","iso-iec-19988",[16,30,31,32,48,49],{"title":52,"path":53,"stem":54,"children":55,"description":57,"icon":58,"tags":71},"Format Converter","/docs/format-converter","docs/03.format-converter/index",[56],{"title":52,"path":53,"stem":54,"description":57,"icon":58,"tags":59},"OpenEPCIS solution to convert EPCIS 2.0 and 1.2 document or single event from XML to JSON/JSON-LD and vice versa.","heroicons-outline:arrows-right-left",[16,60,61,62,63,64,65,20,66,67,68,69,70],"json","json-ld","xml","events","format-converter","convert","convert-epcis-events","format","converter","epcis-tool","tools",[16,60,61,62,63,64,65,20,66,67,68,69,70],{"title":73,"path":74,"stem":75,"children":76,"description":78,"icon":79,"tags":85},"Version Converter","/docs/version-converter","docs/04.version-converter/index",[77],{"title":73,"path":74,"stem":75,"description":78,"icon":79,"tags":80},"OpenEPCIS solution to convert EPCIS XML document from version 1.2 to 2.0 and vice versa.","heroicons:arrows-up-down",[16,31,60,61,62,63,81,65,20,82,83,84,68,69,70],"version-converter","convert-epcis-version","version","epcis-version",[16,31,60,61,62,63,81,65,20,82,83,84,68,69,70],{"title":87,"path":88,"stem":89,"children":90,"description":92,"icon":93,"tags":111},"Identifier Converter","/docs/identifier-converter","docs/05.identifier-converter/index",[91],{"title":87,"path":88,"stem":89,"description":92,"icon":93,"tags":94},"OpenEPCIS solution to convert EPCIS instance or class identifier from URN to digital link WebURI and vice versa.","i-heroicons-link",[16,95,96,97,98,99,20,100,101,102,103,104,105,106,107,108,109,110],"gs1-digital-link","urn-format","epc-uri","epc","weburi","gs1-standard","gs1","sscc","gtin","giai","grai","gdti","lgtin","sgtin","gln","gcp",[16,95,96,97,98,99,20,100,101,102,103,104,105,106,107,108,109,110],{"title":113,"path":114,"stem":115,"children":116,"description":118,"icon":119,"tags":125},"Event Hash Generator","/docs/event-hash-generator","docs/06.event-hash-generator/index",[117],{"title":113,"path":114,"stem":115,"description":118,"icon":119,"tags":120},"OpenEPCIS solution to generate unique event hash for EPCIS XML or JSON/JSON-LD document or event list.","heroicons-outline:finger-print",[16,121,60,61,62,63,20,122,123,124,69,70],"event-hash","event","hash","generator",[16,121,60,61,62,63,20,122,123,124,69,70],{"title":127,"path":128,"stem":129,"children":130,"description":132,"icon":133,"tags":152},"Test Data Generator","/docs/test-data-generator","docs/07.test-data-generator/index",[131,135],{"title":127,"path":128,"stem":129,"description":132,"icon":133,"tags":134},"OpenEPCIS solution to generate a large set of EPCIS test data events for all use cases/supply chain requirements.","heroicons-outline:cog",[16,121,60,61,62,63,20,122,123,124,69,70],{"title":136,"path":137,"stem":138,"children":139,"description":132,"icon":141,"tags":151},"EPCIS Implementation Guidelines","/docs/test-data-generator/gs1-epcis-implementation-guidelines","docs/07.test-data-generator/01.gs1-epcis-implementation-guidelines/index",[140],{"title":136,"path":137,"stem":138,"description":132,"icon":141,"tags":142},"heroicons-outline:badge-check",[16,60,61,143,20,144,145,146,34,147,148,149,150],"testing","test-data-generator","design","design-template","process-automation","compliance","supply-chain-management","load-tests",[16,60,61,143,20,144,145,146,34,147,148,149,150],[16,121,60,61,62,63,20,122,123,124,69,70],{"title":154,"path":155,"stem":156,"children":157,"description":159,"icon":160,"tags":163},"Test Resource Management","/docs/test-resource-management","docs/08.test-resource-management/index",[158],{"title":154,"path":155,"stem":156,"description":159,"icon":160,"tags":161},"Collection of EPCIS 1.2/2.0 documents/events in XML/JSON/JSON-LD formats, intended for various testing purposes","heroicons-outline:archive-box",[16,60,61,143,20,162,34,147,148,149,150],"performance-tests",[16,60,61,143,20,162,34,147,148,149,150],{"title":165,"path":166,"stem":167,"children":168,"description":170,"icon":171,"tags":178},"Vocabulary Management","/docs/vocabulary-management","docs/09.vocabulary-management/index",[169],{"title":165,"path":166,"stem":167,"description":170,"icon":171,"tags":172},"Collection of standardized constants and strings for EPCIS event data.","heroicons-outline:book-open",[16,173,15,174,20,175,34,176,148,149,177],"constants","centralization","standardization","vocabulary","data-dictionary",[16,173,15,174,20,175,34,176,148,149,177],{"title":180,"path":181,"stem":182,"children":183,"description":185,"icon":186,"tags":202},"Dependency Management","/docs/dependency-management","docs/10.dependency-management/index",[184],{"title":180,"path":181,"stem":182,"description":185,"icon":186,"tags":187},"Centralized Maven Bill of Materials (BOM) for all the OpenEPCIS modules.","heroicons-outline:folder",[188,15,189,190,191,192,193,30,194,195,196,197,198,199,200,201],"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",[188,15,189,190,191,192,193,30,194,195,196,197,198,199,200,201],{"title":204,"path":205,"stem":206,"children":207,"description":209,"icon":210,"tags":390},"Digital Product Passport","/docs/digital-product-passport","docs/11.digital-product-passport/index",[208,217,229,261,295,322,336,345,353,363],{"title":204,"path":205,"stem":206,"description":209,"icon":210,"tags":211},"Introduction to Digital Product Passport and how EPCIS enables product traceability for DPP compliance.","heroicons-outline:identification",[212,213,214,30,215,34,216],"digital-product-passport","dpp","eu-regulation","sustainability","circular-economy",{"title":218,"path":219,"stem":220,"children":221,"description":223,"icon":224,"tags":228},"ESPR Framework","/docs/digital-product-passport/espr-framework","docs/11.digital-product-passport/00.espr-framework/index",[222],{"title":218,"path":219,"stem":220,"description":223,"icon":224,"tags":225},"Guide to the EU Ecodesign for Sustainable Products Regulation (ESPR) 2024/1781 and how OpenEPCIS supports Digital Product Passport requirements.","heroicons-outline:shield-check",[226,227,215,213,214],"espr","ecodesign",[226,227,215,213,214],{"title":230,"path":231,"stem":232,"children":233,"description":235,"icon":236,"tags":260},"Battery DPP","/docs/digital-product-passport/battery-dpp","docs/11.digital-product-passport/01.battery-dpp/index",[234,240,245,251],{"title":230,"path":231,"stem":232,"description":235,"icon":236,"tags":237},"GS1-native implementation of EU Battery Regulation 2023/1542 Digital Product Passport using EPCIS 2.0","heroicons:battery-100",[238,239,213,30,101,34,215],"battery","eu-battery-regulation",{"title":241,"path":242,"stem":243,"description":244,"icon":171},"Implementation Guide","/docs/digital-product-passport/battery-dpp/implementation-guide","docs/11.digital-product-passport/01.battery-dpp/01.implementation-guide","Step-by-step guide for implementing a GS1-native Battery Digital Product Passport with OpenEPCIS extensions",{"title":246,"path":247,"stem":248,"description":249,"icon":250},"Event Types","/docs/digital-product-passport/battery-dpp/event-types","docs/11.digital-product-passport/01.battery-dpp/02.event-types","Complete reference for all EPCIS event types and sensor measurements in the Battery DPP","heroicons-outline:collection",{"title":252,"path":253,"stem":254,"description":255,"icon":13,"tags":256},"Complete Examples","/docs/digital-product-passport/battery-dpp/complete-examples","docs/11.digital-product-passport/01.battery-dpp/05.complete-examples","Reference Battery Digital Product Passport examples mapped to EU Battery Regulation 2023/1542 Annex XIII",[238,257,258,61,259],"examples","annex-xiii","carbon-footprint",[238,239,213,30,101,34,215],{"title":262,"path":263,"stem":264,"children":265,"description":267,"icon":268,"tags":294},"EUDR","/docs/digital-product-passport/eudr","docs/11.digital-product-passport/02.eudr/index",[266,273,278,282,287],{"title":262,"path":263,"stem":264,"description":267,"icon":268,"tags":269},"GS1-native implementation of EU Deforestation Regulation 2023/1115 compliance using EPCIS 2.0","heroicons-outline:globe-europe-africa",[270,271,272,213,30,101,34,215],"eudr","deforestation","timber",{"title":241,"path":274,"stem":275,"description":276,"icon":277},"/docs/digital-product-passport/eudr/implementation-guide","docs/11.digital-product-passport/02.eudr/01.implementation-guide","Step-by-step guide for implementing EU Deforestation Regulation compliance using GS1 standards",null,{"title":246,"path":279,"stem":280,"description":281,"icon":277},"/docs/digital-product-passport/eudr/event-types","docs/11.digital-product-passport/02.eudr/02.event-types","EPCIS event types for EU Deforestation Regulation compliance",{"title":283,"path":284,"stem":285,"description":286,"icon":277},"URL Patterns","/docs/digital-product-passport/eudr/url-patterns","docs/11.digital-product-passport/02.eudr/03.url-patterns","GS1 Digital Link URL patterns for EUDR implementations",{"title":252,"path":288,"stem":289,"description":290,"icon":13,"tags":291},"/docs/digital-product-passport/eudr/complete-examples","docs/11.digital-product-passport/02.eudr/04.complete-examples","Reference EUDR examples — timber product passport, derived product, regulatory notification, harvesting / origin-declaration / processing / supply-chain-transfer / exemption events",[270,257,272,292,293],"due-diligence","geolocation",[270,271,272,213,30,101,34,215],{"title":296,"path":297,"stem":298,"children":299,"description":301,"icon":302,"tags":321},"Textile DPP","/docs/digital-product-passport/textile","docs/11.digital-product-passport/03.textile/index",[300,308,315],{"title":296,"path":297,"stem":298,"description":301,"icon":302,"tags":303},"Digital Product Passport vocabulary for textiles and apparel under the EU Sustainable Textiles Strategy and ESPR 2024/1781.","heroicons-outline:sparkles",[304,305,306,213,215,307],"textile","apparel","footwear","fibre-composition",{"title":241,"path":309,"stem":310,"description":311,"icon":312,"tags":313},"/docs/digital-product-passport/textile/implementation-guide","docs/11.digital-product-passport/03.textile/01.implementation-guide","How to assemble a Textile Digital Product Passport against the published openepcis-dpp-ready textile vocabulary","heroicons-outline:scissors",[304,305,306,314],"implementation",{"title":252,"path":316,"stem":317,"description":318,"icon":13,"tags":319},"/docs/digital-product-passport/textile/complete-examples","docs/11.digital-product-passport/03.textile/02.complete-examples","Reference Textile Digital Product Passport documents covering apparel and footwear",[304,257,305,306,320,61],"fiber-composition",[304,305,306,213,215,307],{"title":323,"path":324,"stem":325,"children":326,"description":328,"icon":58,"tags":335},"Interoperability","/docs/digital-product-passport/interoperability","docs/11.digital-product-passport/04.interoperability/index",[327],{"title":323,"path":324,"stem":325,"description":328,"icon":58,"tags":329},"Guide to OpenEPCIS DPP interoperability with GS1, UNTP, CIRPASS2, and ESPR standards.",[330,331,101,332,226,333,334],"interoperability","untp","cirpass2","standards","alignment",[330,331,101,332,226,333,334],{"title":337,"path":338,"stem":339,"description":340,"icon":28,"tags":341},"DPP Resolution Flow","/docs/digital-product-passport/dpp-resolution-flow","docs/11.digital-product-passport/05.dpp-resolution-flow","How OpenEPCIS combined GS1 Digital Link, the IETF linkset format and content negotiation into one DPP resolution flow",[342,95,343,344],"walkthrough","linkset","content-negotiation",{"title":346,"path":347,"stem":348,"description":349,"icon":350,"tags":351},"Resolver Setup","/docs/digital-product-passport/resolver-setup","docs/11.digital-product-passport/06.resolver-setup","How to expose your DPP behind a GS1 Digital Link resolver","heroicons-outline:server",[352,95,343],"resolver",{"title":354,"path":355,"stem":356,"description":357,"icon":358,"tags":359},"Multi-Component Example","/docs/digital-product-passport/multi-component-example","docs/11.digital-product-passport/07.multi-component-example","How a composite product references separately-passported components via standard GS1 Digital Link and EPCIS aggregation","heroicons-outline:puzzle-piece",[360,361,362,332],"example","components","aggregation",{"title":364,"path":365,"stem":366,"children":367,"description":369,"icon":370,"tags":389},"Electronics DPP","/docs/digital-product-passport/electronics","docs/11.digital-product-passport/08.electronics/index",[368,377,382],{"title":364,"path":365,"stem":366,"description":369,"icon":370,"tags":371},"Digital Product Passport vocabulary for electronic devices under ESPR, the French Repairability Index, EU Right to Repair and WEEE.","heroicons-outline:device-phone-mobile",[372,373,374,375,376],"electronics","repairability","weee","energy-label","right-to-repair",{"title":241,"path":378,"stem":379,"description":380,"icon":171,"tags":381},"/docs/digital-product-passport/electronics/implementation-guide","docs/11.digital-product-passport/08.electronics/01.implementation-guide","How to assemble an Electronics Digital Product Passport against the published openepcis-dpp-ready electronics vocabulary",[372,314,373,374,375],{"title":252,"path":383,"stem":384,"description":385,"icon":13,"tags":386},"/docs/digital-product-passport/electronics/complete-examples","docs/11.digital-product-passport/08.electronics/02.complete-examples","Reference Electronics Digital Product Passport documents covering smartphone, laptop, display and server",[372,257,387,388,61],"smartphone","laptop",[372,373,374,375,376],[212,213,214,30,215,34,216],{"title":392,"path":393,"stem":394,"children":395,"description":397,"icon":398},"OpenEPCIS Overview","/docs/platform-overview","docs/14.platform-overview/index",[396,399,405,411,417],{"title":392,"path":393,"stem":394,"description":397,"icon":398},"A GS1-conformant supply-chain data platform — Resolver, Masterdata, EPCIS Events — in open source and business editions.","lucide:layout-dashboard",{"title":400,"path":401,"stem":402,"description":403,"icon":404},"Architecture","/docs/platform-overview/architecture","docs/14.platform-overview/01.architecture","How OpenEPCIS handles identity, isolation, events, and GS1 conformance — the four things that distinguish the platform.","lucide:cpu",{"title":406,"path":407,"stem":408,"description":409,"icon":410},"Feature Matrix","/docs/platform-overview/feature-matrix","docs/14.platform-overview/02.feature-matrix","OpenEPCIS capabilities by edition, aligned to the relevant GS1 standards.","lucide:check-square",{"title":412,"path":413,"stem":414,"description":415,"icon":416},"Roadmap","/docs/platform-overview/roadmap","docs/14.platform-overview/03.roadmap","Three horizons — Now, Next, Later. Skeleton awaiting user-confirmed dates.","lucide:map",{"title":418,"path":419,"stem":420,"children":421,"description":423,"icon":424},"Modules","/docs/platform-overview/modules","docs/14.platform-overview/modules/index",[422,425,431,437,443,449,455,461],{"title":418,"path":419,"stem":420,"description":423,"icon":424},"Seven module families that organise the OpenEPCIS platform — Resolver, Masterdata, EPCIS Events, Formats & Validation, Integration, Testdata, Platform.","lucide:layers",{"title":426,"path":427,"stem":428,"description":429,"icon":430},"GS1 Conformant Resolver","/docs/platform-overview/modules/resolver","docs/14.platform-overview/modules/01.resolver","Resolves GS1 Digital Link URIs to product information, masterdata, EPCIS endpoints, and twelve more standard link types.","lucide:link-2",{"title":432,"path":433,"stem":434,"description":435,"icon":436},"GS1 Web Vocabulary & Masterdata","/docs/platform-overview/modules/masterdata","docs/14.platform-overview/modules/02.masterdata","Web Vocabulary models, masterdata-to-resolver REST pattern, GS1 Germany Activate Plus / GEPIR sync, and the event-driven masterdata bus.","lucide:database",{"title":438,"path":439,"stem":440,"description":441,"icon":442},"EPCIS Events — Capture, Query, Subscriptions","/docs/platform-overview/modules/epcis-events","docs/14.platform-overview/modules/03.epcis-events","EPCIS 2.0 REST and SOAP, live streaming subscriptions, resilient pagination, OpenSearch event store.","lucide:activity",{"title":444,"path":445,"stem":446,"description":447,"icon":448},"Formats, Validation & Identity","/docs/platform-overview/modules/formats","docs/14.platform-overview/modules/04.formats","XML ↔ JSON-LD conversion, multi-layer validation, identifier translation, idempotent event hashing.","lucide:file-check",{"title":450,"path":451,"stem":452,"description":453,"icon":454},"Integration & Gateways","/docs/platform-overview/modules/integration","docs/14.platform-overview/modules/05.integration","Cloud storage, file service, natural-language AI assistant.","lucide:plug",{"title":456,"path":457,"stem":458,"description":459,"icon":460},"Testdata & Developer Tooling","/docs/platform-overview/modules/testdata","docs/14.platform-overview/modules/06.testdata","Synthetic EPCIS test event generation, reference event collections, conformance test suite, SDKs.","lucide:wrench",{"title":462,"path":463,"stem":464,"description":465,"icon":466},"Platform, Build & Observability","/docs/platform-overview/modules/platform","docs/14.platform-overview/modules/07.platform","How OpenEPCIS is built, deployed, and observed.","lucide:server",{"title":468,"path":469,"stem":470,"children":471,"description":473,"icon":28,"tags":482},"Vision","/docs/vision","docs/15.vision/index",[472],{"title":468,"path":469,"stem":470,"description":473,"icon":28,"tags":474},"How UNTP, DIDs, Verifiable Credentials, and EPCIS work together to create unified product identity infrastructure for the connected supply chain.",[475,476,477,478,331,479,480,481],"vision","digital-twin","did","verifiable-credentials","rfid","industry-4-0","web-3-0",[475,476,477,478,331,479,480,481],[484],{"id":485,"title":486,"author":487,"body":488,"date":2576,"description":2577,"extension":2578,"hero":498,"meta":2579,"navigation":2590,"path":2591,"seo":2592,"sitemap":2593,"stem":2594,"tags":2595,"__hash__":2601},"blogEN/blog/01.dpp-stack-for-agents.md","The Web-based DPP doesn't need new infrastructure","Sven Böckelmann",{"type":489,"value":490,"toc":2562},"minimark",[491,499,504,507,510,518,525,531,536,542,545,548,551,557,560,563,713,716,719,723,726,745,753,756,772,778,781,810,817,973,980,986,996,1001,1004,1010,1024,1044,1055,1058,1064,1068,1079,1094,1097,1303,1310,1313,1322,1328,1332,1342,1345,1350,1365,1675,1686,1689,1692,1698,1702,1713,1716,1721,1724,1966,1973,1976,1983,1986,1989,1993,1999,2038,2041,2044,2056,2060,2063,2069,2076,2082,2109,2112,2163,2170,2173,2176,2180,2188,2222,2225,2281,2299,2303,2312,2315,2437,2443,2446,2452,2456,2459,2462,2465,2468,2471,2512,2522,2525,2528,2533,2542,2553,2558],[492,493,494],"p",{},[495,496],"img",{"alt":497,"src":498},"Article Banner","/img/blog/3808829389.webp",[500,501,503],"h1",{"id":502},"the-web-based-dpp-doesnt-need-new-infrastructure-three-gs1-standards-already-cover-the-agent-facing-layer","The Web-based DPP doesn't need new infrastructure — three GS1 standards already cover the agent-facing layer",[492,505,506],{},"Walk into any DPP discussion in 2026 and you'll hear the same anxieties: regulatory deadlines, fragmented data, will-AI-eat-this. The conversations swirl around platforms, blockchains, walled gardens, \"trust frameworks\" — as if we were starting from zero.",[492,508,509],{},"We're not.",[492,511,512,513,517],{},"CEN/CENELEC JTC 24 has ratified the ",[514,515,516],"strong",{},"EN 18221 ff."," series for the Digital Product Passport. Eight standards covering identifiers, carriers, exchange protocols, persistence, APIs and interoperability. They are not aspirations. They are formal European norms, voted through, and ready to implement.",[492,519,520,521,524],{},"Three of them, in particular, form the stack that makes DPPs actually work for the customers who matter most: ",[514,522,523],{},"machines",".",[492,526,527,528,524],{},"This article unpacks all three, and spends real time on the one piece of the stack that most platform pitches treat as an afterthought but is actually the load-bearing wall: ",[514,529,530],{},"GS1 Digital Link",[532,533,535],"h2",{"id":534},"why-machines-are-now-the-customer","Why machines are now the customer",[492,537,538],{},[495,539],{"alt":540,"src":541},"Friendly robot agent waving hello","/img/blog/28598875_solid.webp",[492,543,544],{},"At GS1 Exchange in Cologne I made a claim that surprised a few people in the room (which has actually been obvious to me for more than a decade): the most important consumer of Digital Product Passport data won't be a human on a smartphone. It will be a machine, an agent.",[492,546,547],{},"By \"agent\" I mean the AI shopping assistants major retailers are quietly piloting. The agentic-commerce systems Salesforce, McKinsey and Deloitte have all published research on. The autonomous purchasing agents that look at a textile, a battery, a packaged food — and have to decide, in one shot, whether to buy it, route it, recall it, or trust it.",[492,549,550],{},"These agents do not read marketing copy. Show them this:",[552,553,554],"blockquote",{},[492,555,556],{},"\"A wardrobe essential, reimagined. Crafted from NarraNatureTex™, our signature heritage fibre for a soft, lived-in hand-feel…\"",[492,558,559],{},"…and ask \"what is the material?\" An LLM will guess. A purchasing agent that guesses costs money.",[492,561,562],{},"Show them this:",[564,565,569],"pre",{"className":566,"code":567,"language":60,"meta":568,"style":568},"language-json shiki shiki-themes material-theme-lighter github-light github-dark monokai","\"gs1:textileMaterialDescription\": {\n  \"en\": \"Cotton\",\n  \"de\": \"Baumwolle\",\n  \"fr\": \"Coton\",\n  \"es\": \"Algodón\",\n  \"nl\": \"Katoen\"\n}\n","",[570,571,572,595,624,645,666,687,707],"code",{"__ignoreMap":568},[573,574,577,581,585,587,591],"span",{"class":575,"line":576},"line",1,[573,578,580],{"class":579},"siCPE","\"",[573,582,584],{"class":583},"sLACW","gs1:textileMaterialDescription",[573,586,580],{"class":579},[573,588,590],{"class":589},"ss--_",": ",[573,592,594],{"class":593},"swvn1","{\n",[573,596,598,602,606,608,611,615,619,621],{"class":575,"line":597},2,[573,599,601],{"class":600},"saDeg","  \"",[573,603,605],{"class":604},"sEff5","en",[573,607,580],{"class":600},[573,609,610],{"class":593},":",[573,612,614],{"class":613},"sh1VR"," \"",[573,616,618],{"class":617},"sINAO","Cotton",[573,620,580],{"class":613},[573,622,623],{"class":593},",\n",[573,625,627,629,632,634,636,638,641,643],{"class":575,"line":626},3,[573,628,601],{"class":600},[573,630,631],{"class":604},"de",[573,633,580],{"class":600},[573,635,610],{"class":593},[573,637,614],{"class":613},[573,639,640],{"class":617},"Baumwolle",[573,642,580],{"class":613},[573,644,623],{"class":593},[573,646,648,650,653,655,657,659,662,664],{"class":575,"line":647},4,[573,649,601],{"class":600},[573,651,652],{"class":604},"fr",[573,654,580],{"class":600},[573,656,610],{"class":593},[573,658,614],{"class":613},[573,660,661],{"class":617},"Coton",[573,663,580],{"class":613},[573,665,623],{"class":593},[573,667,669,671,674,676,678,680,683,685],{"class":575,"line":668},5,[573,670,601],{"class":600},[573,672,673],{"class":604},"es",[573,675,580],{"class":600},[573,677,610],{"class":593},[573,679,614],{"class":613},[573,681,682],{"class":617},"Algodón",[573,684,580],{"class":613},[573,686,623],{"class":593},[573,688,690,692,695,697,699,701,704],{"class":575,"line":689},6,[573,691,601],{"class":600},[573,693,694],{"class":604},"nl",[573,696,580],{"class":600},[573,698,610],{"class":593},[573,700,614],{"class":613},[573,702,703],{"class":617},"Katoen",[573,705,706],{"class":613},"\"\n",[573,708,710],{"class":575,"line":709},7,[573,711,712],{"class":593},"}\n",[492,714,715],{},"…and the answer is unambiguous, multilingual, type-safe, queryable. The agent doesn't guess. It knows.",[492,717,718],{},"That's not a UX detail. It's the difference between data an agent can act on and data it has to guess at — and it scales from one product to a billion, in the same shape.",[532,720,722],{"id":721},"the-breakthrough-youve-already-been-using-gs1-digital-link","The breakthrough you've already been using: GS1 Digital Link",[492,724,725],{},"Before we get to the three standards, we have to talk about the URL syntax that makes the rest of the stack possible.",[492,727,728,729,732,733,736,737,740,741,744],{},"For thirty-plus years GS1 identifiers lived inside barcodes and EDI messages. The ",[570,730,731],{},"(01)"," GTIN, the ",[570,734,735],{},"(21)"," serial, the ",[570,738,739],{},"(10)"," batch, the ",[570,742,743],{},"(17)"," expiry — Application Identifiers, all parsable, all unambiguous, all alien to the web. To put them on the web you needed an EPC URN:",[564,746,751],{"className":747,"code":749,"language":750},[748],"language-text","urn:epc:id:sgtin:4068977.934335.19odefMoeoIbBwfuFZa5\n","text",[570,752,749],{"__ignoreMap":568},[492,754,755],{},"Technically correct. Practically opaque. Not dereferenceable. Not crawlable. Not a URL.",[492,757,758,766,767,771],{},[759,760,764],"a",{"href":761,"rel":762},"https://ref.gs1.org/standards/digital-link/",[763],"nofollow",[514,765,530],{}," does something almost embarrassingly obvious in retrospect: it expresses the same identifier as a ",[768,769,770],"em",{},"real"," URL.",[564,773,776],{"className":774,"code":775,"language":750},[748],"https://id.example.com/01/04068977934335/21/19odefMoeoIbBwfuFZa5\n",[570,777,775],{"__ignoreMap":568},[492,779,780],{},"Read it once and the structure tells you everything:",[782,783,784,791,801],"ul",{},[785,786,787,790],"li",{},[570,788,789],{},"https://id.example.com"," — a host, resolvable by every browser, every cURL, every fetch in every language since 1995",[785,792,793,796,797,800],{},[570,794,795],{},"/01/04068977934335"," — Application Identifier ",[570,798,799],{},"01"," is GTIN; the value follows",[785,802,803,796,806,809],{},[570,804,805],{},"/21/19odefMoeoIbBwfuFZa5",[570,807,808],{},"21"," is the serial",[492,811,812,813,816],{},"That's it. ",[514,814,815],{},"Path segments alternate AI and value."," Any GS1 identifier — and there are dozens — slots into the same shape:",[818,819,820,836],"table",{},[821,822,823],"thead",{},[824,825,826,830,833],"tr",{},[827,828,829],"th",{},"Identifier",[827,831,832],{},"Application Identifier",[827,834,835],{},"Digital Link path",[837,838,839,853,868,883,898,913,928,943,958],"tbody",{},[824,840,841,845,849],{},[842,843,844],"td",{},"GTIN (trade item)",[842,846,847],{},[570,848,731],{},[842,850,851],{},[570,852,795],{},[824,854,855,858,863],{},[842,856,857],{},"GTIN + serial (SGTIN)",[842,859,860],{},[570,861,862],{},"(01)(21)",[842,864,865],{},[570,866,867],{},"/01/04068977934335/21/SN-001",[824,869,870,873,878],{},[842,871,872],{},"GTIN + batch",[842,874,875],{},[570,876,877],{},"(01)(10)",[842,879,880],{},[570,881,882],{},"/01/04068977934335/10/LOT-A42",[824,884,885,888,893],{},[842,886,887],{},"SSCC (logistic unit)",[842,889,890],{},[570,891,892],{},"(00)",[842,894,895],{},[570,896,897],{},"/00/304068977000000017",[824,899,900,903,908],{},[842,901,902],{},"GLN (location)",[842,904,905],{},[570,906,907],{},"(414)",[842,909,910],{},[570,911,912],{},"/414/4068977000000",[824,914,915,918,923],{},[842,916,917],{},"GLN + extension",[842,919,920],{},[570,921,922],{},"(414)(254)",[842,924,925],{},[570,926,927],{},"/414/4068977000000/254/dock-7",[824,929,930,933,938],{},[842,931,932],{},"GRAI (returnable asset)",[842,934,935],{},[570,936,937],{},"(8003)",[842,939,940],{},[570,941,942],{},"/8003/04068977000000A42",[824,944,945,948,953],{},[842,946,947],{},"GIAI (individual asset)",[842,949,950],{},[570,951,952],{},"(8004)",[842,954,955],{},[570,956,957],{},"/8004/4068977-FORK-17",[824,959,960,963,968],{},[842,961,962],{},"GDTI (document)",[842,964,965],{},[570,966,967],{},"(253)",[842,969,970],{},[570,971,972],{},"/253/4068977000000DOC42",[492,974,975,976,979],{},"Non-ID key qualifiers — expiry, weight, best-before, country of origin — sit in the ",[514,977,978],{},"query string",", where qualifiers belong on the web:",[564,981,984],{"className":982,"code":983,"language":750},[748],"https://id.example.com/01/04068977934335/21/SN-001?17=261231&3103=001750\n",[570,985,983],{"__ignoreMap":568},[492,987,988,991,992,995],{},[570,989,990],{},"(17)=261231"," is \"expires 2026-12-31\", ",[570,993,994],{},"(3103)=001750"," is \"1.750 kg\". Same Application Identifiers as the barcode. Same values. Just expressed in the syntax the web already speaks.",[997,998,1000],"h3",{"id":999},"why-this-matters-more-than-it-looks","Why this matters more than it looks",[492,1002,1003],{},"Three things fall out of this design that no proprietary URL shortener can replicate:",[492,1005,1006,1009],{},[514,1007,1008],{},"1. Bidirectional mapping is mechanical."," A Digital Link URL maps to an EPC URN and back without semantic loss. The two are isomorphic — same identifier, two encodings, both standardised. Legacy EPCIS systems speak URN; web-native systems speak Digital Link; the bridge is a regex, not a vendor.",[492,1011,1012,1019,1020,1023],{},[514,1013,1014,1015,1018],{},"2. The same string is the QR target ",[768,1016,1017],{},"and"," the API endpoint."," A camera reads the QR, the browser opens the URL, the agent does an HTTP GET on the URL — and it's all the same string. No \"look up the GTIN, then look up where its data lives, then…\". The identifier ",[768,1021,1022],{},"is"," the locator.",[492,1025,1026,1029,1030,1033,1034,1033,1037,1033,1040,1043],{},[514,1027,1028],{},"3. Every HTTP tool ever written works on it."," ",[570,1031,1032],{},"curl",", ",[570,1035,1036],{},"wget",[570,1038,1039],{},"fetch()",[570,1041,1042],{},"requests.get()",", an Apache log line, a CDN cache key, an OpenAPI path, a load balancer rule. None of them needed a single line of GS1-aware code to handle a Digital Link URL. That is not a small thing — it is the entire reason the standard scales.",[492,1045,1046,1047,1050,1051,1054],{},"It is, in the original sense of the word, ",[514,1048,1049],{},"genius and obvious",": take an identifier scheme that already used hierarchical, prefix-stable, AI-tagged segments, and notice that this is ",[768,1052,1053],{},"exactly"," what URL paths are for. The barcode had been a URL all along. GS1 Digital Link just admits it.",[492,1056,1057],{},"This single design choice is what makes the next three standards work as a stack instead of as three disconnected specs.",[492,1059,1060],{},[495,1061],{"alt":1062,"src":1063},"Robot holding a knowledge graph — the ontology in one picture","/img/blog/1253774953.webp",[532,1065,1067],{"id":1066},"standard-1-gs1-web-vocabulary-the-language-agents-can-actually-read","Standard 1 — GS1 Web Vocabulary: the language agents can actually read",[492,1069,1070,1071,1078],{},"EN 18223 covers system interoperability, and at its heart sits the ",[514,1072,1073],{},[759,1074,1077],{"href":1075,"rel":1076},"https://ref.gs1.org/voc/",[763],"GS1 Web Vocabulary",": an ontology of GS1 concepts published as JSON-LD, aligned with schema.org, validatable with SHACL, queryable with SPARQL.",[492,1080,1081,1082,1033,1085,1033,1087,1033,1090,1093],{},"This is the part most platform pitches gloss over. Vocabulary isn't just labels — it's a knowledge graph. ",[570,1083,1084],{},"gs1:Clothing",[570,1086,584],{},[570,1088,1089],{},"gs1:countryOfOrigin",[570,1091,1092],{},"gs1:sizeCodes"," — every one is a node with defined semantics, regulatory anchoring, and a clear path to Linked Data.",[492,1095,1096],{},"A short example of what an agent actually receives:",[564,1098,1100],{"className":566,"code":1099,"language":60,"meta":568,"style":568},"{\n  \"@context\": \"https://ref.openepcis.io/extensions/eu/textile/context.jsonld\",\n  \"id\": \"https://id.example.com/01/04068977934335\",\n  \"type\": \"gs1:Clothing\",\n  \"gs1:textileMaterialDescription\": {\n    \"en\": \"Cotton\",\n    \"de\": \"Baumwolle\"\n  },\n  \"gs1:countryOfOrigin\": \"PT\",\n  \"eudr:dueDiligenceStatement\": {\n    \"id\": \"https://eudr.example.com/dds/REF-2026-00042\",\n    \"type\": \"eudr:DueDiligenceStatement\"\n  }\n}\n",[570,1101,1102,1106,1126,1146,1165,1178,1198,1214,1220,1240,1254,1274,1292,1298],{"__ignoreMap":568},[573,1103,1104],{"class":575,"line":576},[573,1105,594],{"class":593},[573,1107,1108,1110,1113,1115,1117,1119,1122,1124],{"class":575,"line":597},[573,1109,601],{"class":600},[573,1111,1112],{"class":604},"@context",[573,1114,580],{"class":600},[573,1116,610],{"class":593},[573,1118,614],{"class":613},[573,1120,1121],{"class":617},"https://ref.openepcis.io/extensions/eu/textile/context.jsonld",[573,1123,580],{"class":613},[573,1125,623],{"class":593},[573,1127,1128,1130,1133,1135,1137,1139,1142,1144],{"class":575,"line":626},[573,1129,601],{"class":600},[573,1131,1132],{"class":604},"id",[573,1134,580],{"class":600},[573,1136,610],{"class":593},[573,1138,614],{"class":613},[573,1140,1141],{"class":617},"https://id.example.com/01/04068977934335",[573,1143,580],{"class":613},[573,1145,623],{"class":593},[573,1147,1148,1150,1153,1155,1157,1159,1161,1163],{"class":575,"line":647},[573,1149,601],{"class":600},[573,1151,1152],{"class":604},"type",[573,1154,580],{"class":600},[573,1156,610],{"class":593},[573,1158,614],{"class":613},[573,1160,1084],{"class":617},[573,1162,580],{"class":613},[573,1164,623],{"class":593},[573,1166,1167,1169,1171,1173,1175],{"class":575,"line":668},[573,1168,601],{"class":600},[573,1170,584],{"class":604},[573,1172,580],{"class":600},[573,1174,610],{"class":593},[573,1176,1177],{"class":593}," {\n",[573,1179,1180,1183,1186,1188,1190,1192,1194,1196],{"class":575,"line":689},[573,1181,1182],{"class":600},"    \"",[573,1184,605],{"class":1185},"s_MOj",[573,1187,580],{"class":600},[573,1189,610],{"class":593},[573,1191,614],{"class":613},[573,1193,618],{"class":617},[573,1195,580],{"class":613},[573,1197,623],{"class":593},[573,1199,1200,1202,1204,1206,1208,1210,1212],{"class":575,"line":709},[573,1201,1182],{"class":600},[573,1203,631],{"class":1185},[573,1205,580],{"class":600},[573,1207,610],{"class":593},[573,1209,614],{"class":613},[573,1211,640],{"class":617},[573,1213,706],{"class":613},[573,1215,1217],{"class":575,"line":1216},8,[573,1218,1219],{"class":593},"  },\n",[573,1221,1223,1225,1227,1229,1231,1233,1236,1238],{"class":575,"line":1222},9,[573,1224,601],{"class":600},[573,1226,1089],{"class":604},[573,1228,580],{"class":600},[573,1230,610],{"class":593},[573,1232,614],{"class":613},[573,1234,1235],{"class":617},"PT",[573,1237,580],{"class":613},[573,1239,623],{"class":593},[573,1241,1243,1245,1248,1250,1252],{"class":575,"line":1242},10,[573,1244,601],{"class":600},[573,1246,1247],{"class":604},"eudr:dueDiligenceStatement",[573,1249,580],{"class":600},[573,1251,610],{"class":593},[573,1253,1177],{"class":593},[573,1255,1257,1259,1261,1263,1265,1267,1270,1272],{"class":575,"line":1256},11,[573,1258,1182],{"class":600},[573,1260,1132],{"class":1185},[573,1262,580],{"class":600},[573,1264,610],{"class":593},[573,1266,614],{"class":613},[573,1268,1269],{"class":617},"https://eudr.example.com/dds/REF-2026-00042",[573,1271,580],{"class":613},[573,1273,623],{"class":593},[573,1275,1277,1279,1281,1283,1285,1287,1290],{"class":575,"line":1276},12,[573,1278,1182],{"class":600},[573,1280,1152],{"class":1185},[573,1282,580],{"class":600},[573,1284,610],{"class":593},[573,1286,614],{"class":613},[573,1288,1289],{"class":617},"eudr:DueDiligenceStatement",[573,1291,706],{"class":613},[573,1293,1295],{"class":575,"line":1294},13,[573,1296,1297],{"class":593},"  }\n",[573,1299,1301],{"class":575,"line":1300},14,[573,1302,712],{"class":593},[492,1304,1305,1306,1309],{},"When an AI agent sees this, it doesn't have to translate marketing prose into intent. The semantics ",[768,1307,1308],{},"are"," the intent — which unlocks the downstream behaviour everyone wants from a DPP: authenticity checks, recall handling, sustainability scoring, customs decisions, automated buying.",[492,1311,1312],{},"Without an ontology, every brand reinvents its own data model and every agent has to relearn. With GS1 Web Vocabulary, the agent learns the language once — and reads every brand on the planet that conforms.",[492,1314,1315,1316,1321],{},"We've been building on top of it at OpenEPCIS, and you can browse the result live at ",[759,1317,1320],{"href":1318,"rel":1319},"https://ref.openepcis.io",[763],"ref.openepcis.io",". More on that below.",[492,1323,1324],{},[495,1325],{"alt":1326,"src":1327},"Line-art robot mascot holding a barcode card connected by dotted spokes to a central hub","/img/blog/2080698950.webp",[532,1329,1331],{"id":1330},"standard-2-gs1-conformant-resolver-identity-that-resolves-to-endpoints","Standard 2 — GS1 Conformant Resolver: identity that resolves to endpoints",[492,1333,1334,1335,1341],{},"EN 18216 covers data exchange, and the canonical answer is the ",[514,1336,1337],{},[759,1338,426],{"href":1339,"rel":1340},"https://ref.gs1.org/standards/resolver/",[763]," paired with GS1 Digital Link.",[492,1343,1344],{},"Take the Digital Link URL from earlier:",[564,1346,1348],{"className":1347,"code":775,"language":750},[748],[570,1349,775],{"__ignoreMap":568},[492,1351,1352,1353,1356,1357,1360,1361,1364],{},"That URL is more than a QR target. It is a ",[514,1354,1355],{},"federated discovery mechanism",". Hit it with an ",[570,1358,1359],{},"Accept: application/linkset+json"," header and you get back a structured ",[514,1362,1363],{},"link set"," — a list of typed endpoints the agent can interpret without any prior agreement with the brand:",[564,1366,1368],{"className":566,"code":1367,"language":60,"meta":568,"style":568},"{\n  \"linkset\": [{\n    \"anchor\": \"https://id.example.com/01/04068977934335/21/19odefMoeoIbBwfuFZa5\",\n    \"https://gs1.org/voc/pip\": [\n      { \"href\": \"https://example.com/products/sweater-001\", \"type\": \"text/html\", \"hreflang\": [\"en\",\"de\"] }\n    ],\n    \"https://gs1.org/voc/recyclingInfo\": [\n      { \"href\": \"https://example.com/recycle/textile/cotton\", \"type\": \"text/html\" }\n    ],\n    \"https://gs1.org/voc/epcis\": [\n      { \"href\": \"https://epcis.example.com/events?eq.epc=...\", \"type\": \"application/ld+json\" }\n    ],\n    \"https://eudr.example.com/voc/dueDiligence\": [\n      { \"href\": \"https://eudr.example.com/dds/REF-2026-00042\", \"type\": \"application/ld+json\" }\n    ]\n  }]\n}\n",[570,1369,1370,1374,1387,1407,1421,1495,1500,1513,1550,1554,1567,1605,1609,1622,1658,1664,1670],{"__ignoreMap":568},[573,1371,1372],{"class":575,"line":576},[573,1373,594],{"class":593},[573,1375,1376,1378,1380,1382,1384],{"class":575,"line":597},[573,1377,601],{"class":600},[573,1379,343],{"class":604},[573,1381,580],{"class":600},[573,1383,610],{"class":593},[573,1385,1386],{"class":593}," [{\n",[573,1388,1389,1391,1394,1396,1398,1400,1403,1405],{"class":575,"line":626},[573,1390,1182],{"class":600},[573,1392,1393],{"class":1185},"anchor",[573,1395,580],{"class":600},[573,1397,610],{"class":593},[573,1399,614],{"class":613},[573,1401,1402],{"class":617},"https://id.example.com/01/04068977934335/21/19odefMoeoIbBwfuFZa5",[573,1404,580],{"class":613},[573,1406,623],{"class":593},[573,1408,1409,1411,1414,1416,1418],{"class":575,"line":647},[573,1410,1182],{"class":600},[573,1412,1413],{"class":1185},"https://gs1.org/voc/pip",[573,1415,580],{"class":600},[573,1417,610],{"class":593},[573,1419,1420],{"class":593}," [\n",[573,1422,1423,1426,1428,1432,1434,1436,1438,1441,1443,1446,1448,1450,1452,1454,1456,1459,1461,1463,1465,1468,1470,1472,1475,1477,1479,1481,1483,1485,1487,1489,1492],{"class":575,"line":668},[573,1424,1425],{"class":593},"      {",[573,1427,614],{"class":600},[573,1429,1431],{"class":1430},"sTC9v","href",[573,1433,580],{"class":600},[573,1435,610],{"class":593},[573,1437,614],{"class":613},[573,1439,1440],{"class":617},"https://example.com/products/sweater-001",[573,1442,580],{"class":613},[573,1444,1445],{"class":593},",",[573,1447,614],{"class":600},[573,1449,1152],{"class":1430},[573,1451,580],{"class":600},[573,1453,610],{"class":593},[573,1455,614],{"class":613},[573,1457,1458],{"class":617},"text/html",[573,1460,580],{"class":613},[573,1462,1445],{"class":593},[573,1464,614],{"class":600},[573,1466,1467],{"class":1430},"hreflang",[573,1469,580],{"class":600},[573,1471,610],{"class":593},[573,1473,1474],{"class":593}," [",[573,1476,580],{"class":613},[573,1478,605],{"class":617},[573,1480,580],{"class":613},[573,1482,1445],{"class":593},[573,1484,580],{"class":613},[573,1486,631],{"class":617},[573,1488,580],{"class":613},[573,1490,1491],{"class":593},"]",[573,1493,1494],{"class":593}," }\n",[573,1496,1497],{"class":575,"line":689},[573,1498,1499],{"class":593},"    ],\n",[573,1501,1502,1504,1507,1509,1511],{"class":575,"line":709},[573,1503,1182],{"class":600},[573,1505,1506],{"class":1185},"https://gs1.org/voc/recyclingInfo",[573,1508,580],{"class":600},[573,1510,610],{"class":593},[573,1512,1420],{"class":593},[573,1514,1515,1517,1519,1521,1523,1525,1527,1530,1532,1534,1536,1538,1540,1542,1544,1546,1548],{"class":575,"line":1216},[573,1516,1425],{"class":593},[573,1518,614],{"class":600},[573,1520,1431],{"class":1430},[573,1522,580],{"class":600},[573,1524,610],{"class":593},[573,1526,614],{"class":613},[573,1528,1529],{"class":617},"https://example.com/recycle/textile/cotton",[573,1531,580],{"class":613},[573,1533,1445],{"class":593},[573,1535,614],{"class":600},[573,1537,1152],{"class":1430},[573,1539,580],{"class":600},[573,1541,610],{"class":593},[573,1543,614],{"class":613},[573,1545,1458],{"class":617},[573,1547,580],{"class":613},[573,1549,1494],{"class":593},[573,1551,1552],{"class":575,"line":1222},[573,1553,1499],{"class":593},[573,1555,1556,1558,1561,1563,1565],{"class":575,"line":1242},[573,1557,1182],{"class":600},[573,1559,1560],{"class":1185},"https://gs1.org/voc/epcis",[573,1562,580],{"class":600},[573,1564,610],{"class":593},[573,1566,1420],{"class":593},[573,1568,1569,1571,1573,1575,1577,1579,1581,1584,1586,1588,1590,1592,1594,1596,1598,1601,1603],{"class":575,"line":1256},[573,1570,1425],{"class":593},[573,1572,614],{"class":600},[573,1574,1431],{"class":1430},[573,1576,580],{"class":600},[573,1578,610],{"class":593},[573,1580,614],{"class":613},[573,1582,1583],{"class":617},"https://epcis.example.com/events?eq.epc=...",[573,1585,580],{"class":613},[573,1587,1445],{"class":593},[573,1589,614],{"class":600},[573,1591,1152],{"class":1430},[573,1593,580],{"class":600},[573,1595,610],{"class":593},[573,1597,614],{"class":613},[573,1599,1600],{"class":617},"application/ld+json",[573,1602,580],{"class":613},[573,1604,1494],{"class":593},[573,1606,1607],{"class":575,"line":1276},[573,1608,1499],{"class":593},[573,1610,1611,1613,1616,1618,1620],{"class":575,"line":1294},[573,1612,1182],{"class":600},[573,1614,1615],{"class":1185},"https://eudr.example.com/voc/dueDiligence",[573,1617,580],{"class":600},[573,1619,610],{"class":593},[573,1621,1420],{"class":593},[573,1623,1624,1626,1628,1630,1632,1634,1636,1638,1640,1642,1644,1646,1648,1650,1652,1654,1656],{"class":575,"line":1300},[573,1625,1425],{"class":593},[573,1627,614],{"class":600},[573,1629,1431],{"class":1430},[573,1631,580],{"class":600},[573,1633,610],{"class":593},[573,1635,614],{"class":613},[573,1637,1269],{"class":617},[573,1639,580],{"class":613},[573,1641,1445],{"class":593},[573,1643,614],{"class":600},[573,1645,1152],{"class":1430},[573,1647,580],{"class":600},[573,1649,610],{"class":593},[573,1651,614],{"class":613},[573,1653,1600],{"class":617},[573,1655,580],{"class":613},[573,1657,1494],{"class":593},[573,1659,1661],{"class":575,"line":1660},15,[573,1662,1663],{"class":593},"    ]\n",[573,1665,1667],{"class":575,"line":1666},16,[573,1668,1669],{"class":593},"  }]\n",[573,1671,1673],{"class":575,"line":1672},17,[573,1674,712],{"class":593},[492,1676,1677,1678,1681,1682,1685],{},"Each link relation tells the agent ",[768,1679,1680],{},"what kind of resource"," it is pointing at. Product information page. Recycling guidance. EPCIS event history. Compliance certificate. Standardised across every brand's resolver — that's what ",[768,1683,1684],{},"conformant"," means.",[492,1687,1688],{},"This is what traditional URL shorteners and walled gardens cannot replicate. An agent that learned to talk to one resolver can talk to all of them. A barcode that talks to a resolver becomes the front door of a DPP — no app, no platform lock-in, no proprietary SDK.",[492,1690,1691],{},"And — quietly — the same URL serves humans too. A browser following it without the JSON Accept header gets redirected to the right localised product page. One identifier. One URL. Two audiences. Same standard.",[492,1693,1694],{},[495,1695],{"alt":1696,"src":1697},"Robot scanning a barcoded parcel — What, When, Where, Why, How","/img/blog/522668867.webp",[532,1699,1701],{"id":1700},"standard-3-epcis-20-the-verified-history","Standard 3 — EPCIS 2.0: the verified history",[492,1703,1704,1705,1712],{},"EN 18221 and EN 18222 cover storage, persistence and APIs, and ",[514,1706,1707],{},[759,1708,1711],{"href":1709,"rel":1710},"https://ref.gs1.org/standards/epcis/",[763],"EPCIS 2.0"," is the implementation that makes them concrete.",[492,1714,1715],{},"EPCIS answers the five questions every supply-chain participant — and every AI agent — has to answer when they hand something on:",[492,1717,1718],{},[514,1719,1720],{},"What. When. Where. Why. How.",[492,1722,1723],{},"A simplified event:",[564,1725,1727],{"className":566,"code":1726,"language":60,"meta":568,"style":568},"{\n  \"@context\": [\"https://ref.gs1.org/standards/epcis/epcis-context.jsonld\"],\n  \"type\": \"ObjectEvent\",\n  \"eventTime\": \"2026-04-29T08:14:00Z\",\n  \"eventTimeZoneOffset\": \"+02:00\",\n  \"epcList\": [\n    \"https://id.example.com/01/04068977934335/21/19odefMoeoIbBwfuFZa5\"\n  ],\n  \"action\": \"OBSERVE\",\n  \"bizStep\": \"shipping\",\n  \"disposition\": \"in_transit\",\n  \"readPoint\":   { \"id\": \"https://id.example.com/414/4068977000000\" },\n  \"bizLocation\": { \"id\": \"https://id.example.com/414/4068977000000\" }\n}\n",[570,1728,1729,1733,1755,1774,1794,1814,1827,1835,1840,1860,1880,1900,1932,1962],{"__ignoreMap":568},[573,1730,1731],{"class":575,"line":576},[573,1732,594],{"class":593},[573,1734,1735,1737,1739,1741,1743,1745,1747,1750,1752],{"class":575,"line":597},[573,1736,601],{"class":600},[573,1738,1112],{"class":604},[573,1740,580],{"class":600},[573,1742,610],{"class":593},[573,1744,1474],{"class":593},[573,1746,580],{"class":613},[573,1748,1749],{"class":617},"https://ref.gs1.org/standards/epcis/epcis-context.jsonld",[573,1751,580],{"class":613},[573,1753,1754],{"class":593},"],\n",[573,1756,1757,1759,1761,1763,1765,1767,1770,1772],{"class":575,"line":626},[573,1758,601],{"class":600},[573,1760,1152],{"class":604},[573,1762,580],{"class":600},[573,1764,610],{"class":593},[573,1766,614],{"class":613},[573,1768,1769],{"class":617},"ObjectEvent",[573,1771,580],{"class":613},[573,1773,623],{"class":593},[573,1775,1776,1778,1781,1783,1785,1787,1790,1792],{"class":575,"line":647},[573,1777,601],{"class":600},[573,1779,1780],{"class":604},"eventTime",[573,1782,580],{"class":600},[573,1784,610],{"class":593},[573,1786,614],{"class":613},[573,1788,1789],{"class":617},"2026-04-29T08:14:00Z",[573,1791,580],{"class":613},[573,1793,623],{"class":593},[573,1795,1796,1798,1801,1803,1805,1807,1810,1812],{"class":575,"line":668},[573,1797,601],{"class":600},[573,1799,1800],{"class":604},"eventTimeZoneOffset",[573,1802,580],{"class":600},[573,1804,610],{"class":593},[573,1806,614],{"class":613},[573,1808,1809],{"class":617},"+02:00",[573,1811,580],{"class":613},[573,1813,623],{"class":593},[573,1815,1816,1818,1821,1823,1825],{"class":575,"line":689},[573,1817,601],{"class":600},[573,1819,1820],{"class":604},"epcList",[573,1822,580],{"class":600},[573,1824,610],{"class":593},[573,1826,1420],{"class":593},[573,1828,1829,1831,1833],{"class":575,"line":709},[573,1830,1182],{"class":613},[573,1832,1402],{"class":617},[573,1834,706],{"class":613},[573,1836,1837],{"class":575,"line":1216},[573,1838,1839],{"class":593},"  ],\n",[573,1841,1842,1844,1847,1849,1851,1853,1856,1858],{"class":575,"line":1222},[573,1843,601],{"class":600},[573,1845,1846],{"class":604},"action",[573,1848,580],{"class":600},[573,1850,610],{"class":593},[573,1852,614],{"class":613},[573,1854,1855],{"class":617},"OBSERVE",[573,1857,580],{"class":613},[573,1859,623],{"class":593},[573,1861,1862,1864,1867,1869,1871,1873,1876,1878],{"class":575,"line":1242},[573,1863,601],{"class":600},[573,1865,1866],{"class":604},"bizStep",[573,1868,580],{"class":600},[573,1870,610],{"class":593},[573,1872,614],{"class":613},[573,1874,1875],{"class":617},"shipping",[573,1877,580],{"class":613},[573,1879,623],{"class":593},[573,1881,1882,1884,1887,1889,1891,1893,1896,1898],{"class":575,"line":1256},[573,1883,601],{"class":600},[573,1885,1886],{"class":604},"disposition",[573,1888,580],{"class":600},[573,1890,610],{"class":593},[573,1892,614],{"class":613},[573,1894,1895],{"class":617},"in_transit",[573,1897,580],{"class":613},[573,1899,623],{"class":593},[573,1901,1902,1904,1907,1909,1911,1914,1916,1918,1920,1922,1924,1927,1929],{"class":575,"line":1276},[573,1903,601],{"class":600},[573,1905,1906],{"class":604},"readPoint",[573,1908,580],{"class":600},[573,1910,610],{"class":593},[573,1912,1913],{"class":593},"   {",[573,1915,614],{"class":600},[573,1917,1132],{"class":1185},[573,1919,580],{"class":600},[573,1921,610],{"class":593},[573,1923,614],{"class":613},[573,1925,1926],{"class":617},"https://id.example.com/414/4068977000000",[573,1928,580],{"class":613},[573,1930,1931],{"class":593}," },\n",[573,1933,1934,1936,1939,1941,1943,1946,1948,1950,1952,1954,1956,1958,1960],{"class":575,"line":1294},[573,1935,601],{"class":600},[573,1937,1938],{"class":604},"bizLocation",[573,1940,580],{"class":600},[573,1942,610],{"class":593},[573,1944,1945],{"class":593}," {",[573,1947,614],{"class":600},[573,1949,1132],{"class":1185},[573,1951,580],{"class":600},[573,1953,610],{"class":593},[573,1955,614],{"class":613},[573,1957,1926],{"class":617},[573,1959,580],{"class":613},[573,1961,1494],{"class":593},[573,1963,1964],{"class":575,"line":1300},[573,1965,712],{"class":593},[492,1967,1968,1969,1972],{},"Notice what every identifier in there has in common: they're all ",[514,1970,1971],{},"Digital Link URLs",". The same syntax that drove the barcode and the resolver now identifies the EPC, the read point, and the business location inside the event. One identifier scheme, top to bottom. Drop the EPC URL into a browser and you arrive at the same product. Drop it into the resolver and you get the link set. Drop it into EPCIS and you get the history. Same string, three different reads.",[492,1974,1975],{},"Each event is a JSON-LD document tied to a GTIN or serialised identity, time-stamped, geo-located, business-step labelled, and — as EN 18246 lands — cryptographically signed via W3C Verifiable Credentials.",[492,1977,1978,1979,1982],{},"Worth saying loudly: ",[514,1980,1981],{},"this is not a forecast."," EPCIS events have been driving supply-chain decisions for more than a decade — best-before predictions, FEFO routing, spoilage prevention, real money saved. The events are real, the repositories are real, the standard works.",[492,1984,1985],{},"What is new is the consumer of those events. Yesterday it was a temperature-monitoring service. Today it is an agentic purchasing system asking \"is this batch authentic, compliant, fresh, ethically sourced — yes or no?\"",[492,1987,1988],{},"Same events. New audience. Same answer: a verified, queryable, JSON-LD repository of what actually happened to this product.",[532,1990,1992],{"id":1991},"how-the-three-standards-lock-together","How the three standards lock together",[492,1994,1995,1996,524],{},"Treated separately, these standards each look like a niche concern. Treated together — and bound by Digital Link — they describe a single, coherent architecture: the ",[768,1997,1998],{},"Web DPP Stack",[2000,2001,2002,2014,2022,2030],"ol",{},[785,2003,2004,2006,2007,2010,2011,2013],{},[514,2005,530],{}," — the ",[768,2008,2009],{},"identity layer",": a web-native URL that ",[514,2012,1022],{}," the identifier",[785,2015,2016,2006,2018,2021],{},[514,2017,1077],{},[768,2019,2020],{},"semantic layer",": what the data means",[785,2023,2024,2006,2026,2029],{},[514,2025,426],{},[768,2027,2028],{},"discovery layer",": where the data lives",[785,2031,2032,2006,2034,2037],{},[514,2033,1711],{},[768,2035,2036],{},"temporal layer",": the verified history of what happened",[492,2039,2040],{},"Each layer needs the others. Without Digital Link, there is no shared addressing scheme — every layer would invent its own and the stack would be three boxes connected by glue code. Without the Vocabulary, the resolver returns opaque URLs. Without the resolver, the vocabulary has no distribution mechanism. Without EPCIS, you get static snapshots with no provenance.",[492,2042,2043],{},"Put them together and you get a Digital Product Passport machines can read, trust, and act on — at scale.",[552,2045,2046],{},[492,2047,2048,2051,2052,2055],{},[514,2049,2050],{},"A note on EDI and GDSN."," None of this replaces what already works. EDI and GDSN do the heavy lifting between trading partners today and they are not going anywhere. But both assume bilateral onboarding and signed agreements — they were never meant to be frictionless. The standards above add ",[514,2053,2054],{},"W3C-standards-based, role-based access for public and regulatory consumers"," on top of that foundation, for the strangers who increasingly need to read your product data: agents, customs, recall systems, regulators.",[532,2057,2059],{"id":2058},"the-real-work-mapping-legacy-data-into-the-regulated-space","The real work: mapping legacy data into the regulated space",[492,2061,2062],{},"Here is the part nobody puts on a conference slide. Your product data does not currently live in a JSON-LD graph aligned to GS1 Web Vocabulary. It lives in an ERP, in a PIM, in an EDI feed, in the GDSN data pool, or in a spreadsheet a procurement team has been editing since the beginning of time — maybe even still on paper. Neither the regulator nor the agent cares about any of that; they want the answer in the language of the regulation.",[492,2064,2065],{},[495,2066],{"alt":2067,"src":2068},"Overworked robot agent struggling with papers on desk","/img/blog/1501183894.webp",[492,2070,2071,2072,2075],{},"That gap — between the legacy schema you have and the regulated, semantic, machine-readable schema you ",[768,2073,2074],{},"need"," — is the actual DPP project, and nobody who ships a product escapes it.",[492,2077,2078,2079,524],{},"It is also where ",[514,2080,2081],{},"JSON-LD and the semantic web stack earn their keep",[492,2083,2084,2085,2088,2089,2092,2093,2096,2097,1029,2100,1029,2103,1029,2105,2108],{},"JSON-LD lets the ",[768,2086,2087],{},"same"," document carry the field your developer wrote and the meaning the regulator demands. SHACL validates it. SPARQL queries it. ",[570,2090,2091],{},"owl:equivalentClass"," and ",[570,2094,2095],{},"skos:exactMatch"," declare that ",[768,2098,2099],{},"your",[570,2101,2102],{},"material_code = \"CO\"",[768,2104,1022],{},[570,2106,2107],{},"gs1:cottonFibre",", without rewriting your source systems. The graph is the contract, not yet another bespoke integration.",[492,2110,2111],{},"Don't mistake \"no rewriting\" for \"no work\". Mapping a real product portfolio onto a regulated ontology is its own engineering programme. It involves:",[782,2113,2114,2123,2133,2139,2145,2151,2157],{},[785,2115,2116,2119,2120,2122],{},[514,2117,2118],{},"Regulatory interpretation"," — which classes and properties apply to ",[768,2121,2099],{}," product, under which directive, with which evidence requirements (textile composition declarations, battery passport carbon footprint, EUDR plot geolocation, FSMA 204 critical tracking events).",[785,2124,2125,2128,2129,2132],{},[514,2126,2127],{},"Schema reconciliation"," — your internal codes mapped against GS1 Web Vocabulary, the EU SEMIC Core Vocabularies and schema.org. Most of the work is deciding what ",[768,2130,2131],{},"isn't"," a 1:1 match and what to do about it.",[785,2134,2135,2138],{},[514,2136,2137],{},"Master-data hygiene"," — GTIN allocation policy, GLN cleanup, serialisation and batch numbering, party identifiers. The mapping is only as honest as the underlying master data.",[785,2140,2141,2144],{},[514,2142,2143],{},"Capture infrastructure"," — where do EPCIS events actually come from? ERP, MES, WMS, scanners, IoT? Every emitter is its own integration project.",[785,2146,2147,2150],{},[514,2148,2149],{},"Resolver hosting and link-set governance"," — who owns the link relations, who updates them, who's accountable when a recall URL goes stale.",[785,2152,2153,2156],{},[514,2154,2155],{},"Label, packaging and physical output"," — Digital Link URLs only matter once the QR or RFID actually carries them on the shelf.",[785,2158,2159,2162],{},[514,2160,2161],{},"Change management"," — regulations move, vocabularies evolve, your portfolio changes. The mapping is a living artefact, not a one-off.",[492,2164,2165,2166,2169],{},"Doing this ",[768,2167,2168],{},"once"," on a semantic foundation is the win — every downstream consumer (agent, customs officer, recall system, regulator) reads the same canonical truth, instead of you maintaining N bespoke integrations forever. Doing it on top of a proprietary platform locks you in, locks the regulator out, and locks the agent out too.",[492,2171,2172],{},"This is the technology choice that makes the rest of the stack possible. Without a semantic web foundation, every connector is a one-off; with it, every connector is a contribution to a shared graph.",[492,2174,2175],{},"This is the work we focus on at OpenEPCIS: building the mapping layer so a single JSON-LD document can answer the regulator, the customs system and the customer's agent without three separate integrations.",[532,2177,2179],{"id":2178},"openepcis-dpp-ready-the-mapping-layer-in-code","OpenEPCIS DPP-Ready: the mapping layer in code",[492,2181,2182,2187],{},[759,2183,2186],{"href":2184,"rel":2185},"https://github.com/openepcis/openepcis-dpp-ready",[763],"OpenEPCIS DPP-Ready"," is our Apache-2.0 contribution to the mapping work above. Not a platform, not a product — but the result of a multi-year, full-time effort by our team to read every relevant regulation, ratified European norm and current draft, reconcile their concepts against GS1 Web Vocabulary, the EU SEMIC Core Vocabularies and schema.org, and ship the alignment as code that other organisations can pull in instead of repeating the same exercise in isolation. What you get:",[782,2189,2190,2197,2207,2214],{},[785,2191,2192,2193,2196],{},"An ",[514,2194,2195],{},"ontology library"," of currently 120+ classes and 430+ properties, published as TTL and JSON-LD",[785,2198,2199,2202,2203,2092,2205],{},[514,2200,2201],{},"Cross-vocabulary alignment"," between GS1, the EU SEMIC Core Vocabularies and schema.org, expressed in ",[570,2204,2091],{},[570,2206,2095],{},[785,2208,2209,2210,2213],{},"A ",[514,2211,2212],{},"validator"," covering eight regulations today: Battery, EUDR, Textile, Electronics, CPR, PPWR, Detergents and FSMA 204",[785,2215,2216,2217],{},"A live browseable ontology at ",[514,2218,2219],{},[759,2220,1320],{"href":1318,"rel":2221},[763],[492,2223,2224],{},"A few design choices worth flagging:",[818,2226,2227,2237],{},[821,2228,2229],{},[824,2230,2231,2234],{},[827,2232,2233],{},"What it does",[827,2235,2236],{},"Why we built it that way",[837,2238,2239,2250,2261,2273],{},[824,2240,2241,2247],{},[842,2242,2243,2244],{},"Dereferenceable ontologies at ",[570,2245,2246],{},"https://ref.openepcis.io/extensions/...",[842,2248,2249],{},"Every class and property gets a stable, HTTP-resolvable URI",[824,2251,2252,2255],{},[842,2253,2254],{},"JSON-LD contexts shipped alongside the ontology",[842,2256,2257,2258,2260],{},"No bespoke context wiring per integration — point at ",[570,2259,1112],{}," and go",[824,2262,2263,2266],{},[842,2264,2265],{},"EPCIS 2.0 extension architecture",[842,2267,2268,2269,2272],{},"Regulation-specific behaviour activated via the ",[570,2270,2271],{},"GS1-Extensions"," header",[824,2274,2275,2278],{},[842,2276,2277],{},"Cross-standard alignment",[842,2279,2280],{},"Anchors out to UNTP, CIRPASS-2 and CEN/CENELEC JTC 24 instead of forking",[492,2282,2283,2284,2287,2288,2291,2292,2291,2295,2298],{},"The guiding rule: walk down the stack and use the ",[768,2285,2286],{},"most authoritative"," vocabulary that already covers your concept. Within Layer 1 we check ",[514,2289,2290],{},"GS1",", then ",[514,2293,2294],{},"SEMIC",[514,2296,2297],{},"schema.org",", and only mint a new IRI when none of the three has it. Less novelty is the goal, not more.",[532,2300,2302],{"id":2301},"a-tour-of-refopenepcisio","A tour of ref.openepcis.io",[492,2304,2305,2306,2311],{},"We've just made ",[514,2307,2308],{},[759,2309,1320],{"href":1318,"rel":2310},[763]," publicly browseable — a dereferenceable vocabulary site for the DPP ontologies we maintain.",[492,2313,2314],{},"The structure mirrors the regulation landscape:",[818,2316,2317,2327],{},[821,2318,2319],{},[824,2320,2321,2324],{},[827,2322,2323],{},"URL",[827,2325,2326],{},"What lives there",[837,2328,2329,2341,2353,2365,2377,2389,2401,2413,2425],{},[824,2330,2331,2338],{},[842,2332,2333],{},[759,2334,2337],{"href":2335,"rel":2336},"https://ref.openepcis.io/extensions/common/core/",[763],"ref.openepcis.io/extensions/common/core/",[842,2339,2340],{},"Cross-cutting classes and properties shared across regulations — units, parties, references, certificates",[824,2342,2343,2350],{},[842,2344,2345],{},[759,2346,2349],{"href":2347,"rel":2348},"https://ref.openepcis.io/extensions/eu/battery/",[763],"ref.openepcis.io/extensions/eu/battery/",[842,2351,2352],{},"EU Battery Regulation: chemistry, capacity, recycled content, carbon footprint",[824,2354,2355,2362],{},[842,2356,2357],{},[759,2358,2361],{"href":2359,"rel":2360},"https://ref.openepcis.io/extensions/eu/textile/",[763],"ref.openepcis.io/extensions/eu/textile/",[842,2363,2364],{},"EU Textile Regulation: fibre composition, country of origin, care, microfibre release",[824,2366,2367,2374],{},[842,2368,2369],{},[759,2370,2373],{"href":2371,"rel":2372},"https://ref.openepcis.io/extensions/eu/eudr/",[763],"ref.openepcis.io/extensions/eu/eudr/",[842,2375,2376],{},"EU Deforestation Regulation: due-diligence statements, geolocation of plots, commodity types",[824,2378,2379,2386],{},[842,2380,2381],{},[759,2382,2385],{"href":2383,"rel":2384},"https://ref.openepcis.io/extensions/eu/electronics/",[763],"ref.openepcis.io/extensions/eu/electronics/",[842,2387,2388],{},"Energy efficiency, repair index, spare-part availability",[824,2390,2391,2398],{},[842,2392,2393],{},[759,2394,2397],{"href":2395,"rel":2396},"https://ref.openepcis.io/extensions/eu/ppwr/",[763],"ref.openepcis.io/extensions/eu/ppwr/",[842,2399,2400],{},"Packaging and Packaging Waste Regulation",[824,2402,2403,2410],{},[842,2404,2405],{},[759,2406,2409],{"href":2407,"rel":2408},"https://ref.openepcis.io/extensions/eu/cpr/",[763],"ref.openepcis.io/extensions/eu/cpr/",[842,2411,2412],{},"Construction Products Regulation",[824,2414,2415,2422],{},[842,2416,2417],{},[759,2418,2421],{"href":2419,"rel":2420},"https://ref.openepcis.io/extensions/eu/detergents/",[763],"ref.openepcis.io/extensions/eu/detergents/",[842,2423,2424],{},"Detergents Regulation",[824,2426,2427,2434],{},[842,2428,2429],{},[759,2430,2433],{"href":2431,"rel":2432},"https://ref.openepcis.io/extensions/us/fsma204/",[763],"ref.openepcis.io/extensions/us/fsma204/",[842,2435,2436],{},"FSMA Section 204 (US food traceability)",[492,2438,2439,2440,2442],{},"Every page is generated from the TTL in the GitHub repository. The TTL is canonical; the website is just a view onto it. Each class and property has its own resolvable URI you can copy-paste into a JSON-LD ",[570,2441,1112],{},", validate against with SHACL, query with SPARQL, or hand to an LLM that already knows how to read RDF.",[492,2444,2445],{},"The point is mundane and important: a standard you can resolve in a browser, copy-paste a JSON-LD context from, and validate against — instead of a PDF that ages on a shared drive.",[492,2447,2448],{},[495,2449],{"alt":2450,"src":2451},"Robot agent with RDF and SHACL tools for leveraging the semantic web with JSON-LD","/img/blog/2521463370.webp",[532,2453,2455],{"id":2454},"what-this-means-for-your-dpp-roadmap","What this means for your DPP roadmap",[492,2457,2458],{},"Much of the DPP conversation is still framed as a platform choice. It mostly isn't one. The standards are documented, ratified, and there is working open-source code — ours and others' — that implements them today.",[492,2460,2461],{},"Eight ratified European standards. Three of them load-bearing for the agentic era, sitting on top of the EDI and GDSN rails the industry already trusts. None of them research projects waiting to be invented. And all of them held together by a single design decision — that a GS1 identifier is just a URL — that the rest of the web has been quietly waiting for since 1995.",[492,2463,2464],{},"GS1 Digital Link + GS1 Web Vocabulary + GS1 Conformant Resolver + EPCIS 2.0 — the identity, semantic, discovery and temporal layers — are what turn a regulated data file into something a machine can actually consume.",[492,2466,2467],{},"If your products carry a GTIN, you are already in this ecosystem. The DPP question is no longer whether to use these standards — it is how to map your existing data into them. The consumer at the other end is increasingly an agent, and an agent needs the data in a language it can read.",[492,2469,2470],{},"A practical sequence:",[2000,2472,2473,2479,2491,2500,2506],{},[785,2474,2475,2478],{},[514,2476,2477],{},"Pick one regulation that already applies to one of your products"," — Textile, Battery, EUDR, FSMA 204, whichever bites first. Scope it to a single product family, not the whole portfolio.",[785,2480,2481,2487,2488,2490],{},[514,2482,2483,2484,524],{},"Map that product family onto the corresponding ontology at ",[759,2485,1320],{"href":1318,"rel":2486},[763]," Field-by-field. Expect this to surface gaps in your master data — that ",[768,2489,1022],{}," the work, not an obstacle to it.",[785,2492,2493,1029,2496,2499],{},[514,2494,2495],{},"Issue Digital Link URLs for those products.",[570,2497,2498],{},"/01/\u003Cgtin>/21/\u003Cserial>"," is enough on paper; getting your serialisation, label printing, packaging line and ERP to actually emit those URLs is a real, cross-functional project that touches operations, not just IT.",[785,2501,2502,2505],{},[514,2503,2504],{},"Stand up a resolver"," that returns a link set per identifier. A static file per product is a valid first version, but the link relations and the documents they point at — product information page, recycling guidance, recall procedure, due diligence statement — are content that has to be authored, owned and kept current.",[785,2507,2508,2511],{},[514,2509,2510],{},"Wire EPCIS event emission into the lifecycle moments that matter"," — manufacture, ship, receive, sell, recall. This is capture infrastructure: ERP, MES, WMS, scanners, IoT — each one its own integration.",[492,2513,2514,2515,2518,2519,2521],{},"None of these steps requires a platform purchase or a research project, and that is the genuinely good news. But none of them is a weekend's work either. Steps 2, 3 and 5 are typically months of engineering and operational change for any organisation past prototype scale, and that's ",[768,2516,2517],{},"with"," OpenEPCIS DPP-Ready and the GS1 standards doing the heavy intellectual lifting underneath. The value of having ratified standards and a public ontology is not that the work disappears — it's that you do it ",[768,2520,2168],{},", on shared foundations, and every regulator, customs system and AI agent on the receiving end reads the same canonical answer.",[492,2523,2524],{},"That is the realistic shape of a DPP programme: bounded engineering on shared standards, instead of unbounded platform R&D.",[2526,2527],"hr",{},[492,2529,2530],{},[495,2531],{"alt":487,"src":2532},"/img/blog/foto_sven_quadrat.webp",[492,2534,2535],{},[768,2536,2537,2538,2541],{},"Sven Böckelmann is Tech Lead at benelog and a contributor to OpenEPCIS — an Apache-2.0 implementation of GS1 Web and Visibility standards. Browse the live DPP ontology at ",[759,2539,1320],{"href":1318,"rel":2540},[763],". The companion short-form version of this article is on LinkedIn.",[492,2543,2544],{},[768,2545,2546,2547,2552],{},"A note on the images: yes, they're AI-generated too — first sketched with Gemini, then refined locally in Draw Things with ",[759,2548,2551],{"href":2549,"rel":2550},"https://github.com/black-forest-labs/flux2",[763],"FLUX.2 [klein]",". Hope they weren't too distracting — felt fitting for an article about agents reading product data. ;-)",[492,2554,2555],{},[514,2556,2557],{},"#DigitalProductPassport #GS1 #EPCIS #DigitalLink #AgenticAI #LinkedData #SupplyChain #Ontology #JSONLD",[2559,2560,2561],"style",{},"html pre.shiki code .siCPE, html code.shiki .siCPE{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .sLACW, html code.shiki .sLACW{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .ss--_, html code.shiki .ss--_{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .swvn1, html code.shiki .swvn1{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .saDeg, html code.shiki .saDeg{--shiki-light:#39ADB5;--shiki-light-font-style:inherit;--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sEff5, html code.shiki .sEff5{--shiki-light:#9C3EDA;--shiki-light-font-style:inherit;--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sh1VR, html code.shiki .sh1VR{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#CFCFC2}html pre.shiki code .sINAO, html code.shiki .sINAO{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#CFCFC2}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);}html pre.shiki code .s_MOj, html code.shiki .s_MOj{--shiki-light:#E2931D;--shiki-light-font-style:inherit;--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sTC9v, html code.shiki .sTC9v{--shiki-light:#F76D47;--shiki-light-font-style:inherit;--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}",{"title":568,"searchDepth":597,"depth":597,"links":2563},[2564,2565,2568,2569,2570,2571,2572,2573,2574,2575],{"id":534,"depth":597,"text":535},{"id":721,"depth":597,"text":722,"children":2566},[2567],{"id":999,"depth":626,"text":1000},{"id":1066,"depth":597,"text":1067},{"id":1330,"depth":597,"text":1331},{"id":1700,"depth":597,"text":1701},{"id":1991,"depth":597,"text":1992},{"id":2058,"depth":597,"text":2059},{"id":2178,"depth":597,"text":2179},{"id":2301,"depth":597,"text":2302},{"id":2454,"depth":597,"text":2455},"2026-05-12T00:00:00.000Z","Three GS1 standards — Digital Link, Web Vocabulary, Conformant Resolver — plus EPCIS 2.0 already cover the agent-facing layer of the Digital Product Passport.","md",{"head":2580,"readingTime":2585},{"meta":2581},[2582],{"name":2583,"content":2584},"keywords","Digital Product Passport, GS1, EPCIS, Digital Link, Agentic AI, Linked Data, Ontology, JSON-LD, Supply Chain",{"text":2586,"minutes":2587,"time":2588,"words":2589},"17 min read",16.31,978600,3262,true,"/blog/dpp-stack-for-agents",{"title":486,"description":2577},{"loc":2591},"blog/01.dpp-stack-for-agents",[213,101,30,2596,2597,2598,2599,2600],"digital-link","agentic-ai","linked-data","ontology","jsonld","GwqNwrxF2C7x1E13gVgaUp7tKi6-UG9ofsm-xqXIZUU",1779384034830]