Every Digital Product Passport reached by scanning a GS1 QR code depends on one thing working correctly: the identifier in the code has to be well-formed, GS1-conformant, and reducible to a canonical form that every party agrees on. This library does that job.
It translates GS1 identifiers in both directions between EPC URN syntax and GS1 Digital Link Web URI syntax, at both instance and class level. Alongside the translation it returns the canonical Digital Link form on id.gs1.org, so identifiers captured against company-specific domains still compare and deduplicate correctly across systems.
A separate validator module checks identifiers against GS1 syntax rules, including check digit verification and Application Identifier constraints. Malformed identifiers fail at the boundary rather than propagating into a passport, a resolver entry or an event record. A QR code generator with configurable dimensions, colour and module shape is included for producing GS1 Digital Link carriers directly.
The library is usable three ways: as a plain Java dependency from Maven Central under io.openepcis, as a Quarkus extension with build-time optimisation and GraalVM native image support, and as a hosted REST API and web tool at tools.openepcis.io for anyone who wants to check an identifier without writing code.
Resolution tells you where a product’s data sits. A signature tells you who signed it. Neither tells you whether that party may speak for the identifier in the first place, and none of it works at all if the identifier itself is malformed. This library covers the syntactic floor that everything above it assumes.
It is deliberately narrow in scope and composes with resolvers, passport platforms and event repositories rather than duplicating them. Maintained by benelog GmbH & Co. KG, whose team co-chairs the GS1 EPCIS/CBV Standards Maintenance Group, and which additionally offers a commercially licensed GS1-conformant resolver service built on this open-source foundation.
