ProPare Digital Product Passport Solution Guide

a prototype digital product passport infrastructure

Ver 1.15
28 February 2023

1. Background

Within a couple of years, the EU is expected to implement new legislation requiring all products to have a product passport, which will provide reliable sustainability data – right down to the smallest component. Now the ProPare project aims to develop the underlying digital product passport infrastructure. The solution is based on an open, competition-neutral, and global standard. The ambition in the long run is that it will be useable for linking all types of data to products, regardless of industry, company or product category. The ProPare project is conducted in a broad collaboration between Axfoundation, Swedish Trade Federation, Ecolabelling Sweden AB, GS1 Sweden who is part of the global standards organization GS1 as well as trading companies, brand owners, producers, third-party certifiers and technology developers.

2. Solution

The ProPare project aims to develop the underlying digital product passport infrastructure. The basis for this is a resolver function based on an open, competition-neutral and global standard. Through an open infrastructure all stakeholders – suppliers and retailers as well as public authorities and consumers – can obtain reliable sustainability data on products in real–time, regardless of industry, company or product category.

3. Purpose of this document

The purpose of this document is to provide guidance for the parties involved in the ProPare project. The goal is to give a better understanding of the proposed set-up of the GS1 Sweden Resolver, App and Data sources respectively, to achieve the project goal.

Figure 1: Map of the solution infrastructure
  1. A person uses a smartphone (or a scanner) with an App to scan a 2D barcode on a product
  2. The App sends a request to the GS1 Sweden Resolver to find out where to find information about the product.
  3. The Resolver returns one or more links to where the information can be found. Different types of information can be found in different online places (Data Sources)
  4. The App looks in the Data sources and collects the information it can and wants.
  5. The App presents the information from the Data sources in a human readable manner.

When a product is scanned (1 in the Infrastructure) the App must know where to ask for more information about the product (2). In this project, the recommended solution is for the manufacturer to put a QR code (or Data Matrix) on the product including a Digital Link to id.gs1.se and the product GS1 Identifier (GTIN).

The digital link to be used in this project should have the following digital link encoded (with the product’s real GTIN entered at the end, after /01/): https://id.gs1.se/01/9506000134352

5. The GS1 Sweden Resolver

The Resolver is a GS1 Digital Link Standard compliant online service. It has a database of GTINs and their related links. One GTIN can have more than one link, they are defined by their different ”link types”.

An example: GTIN 9506000134369 has a link with link type gs1:pip (Product Information Page) and the link is: https://dalgiardino.com/extra-virgin-olive-oil/. In the resolver this is stored like this:
01 9506000134369 gs1:pip https://dalgiardino.com/extra-virgin-olive-oil/

This project will use the following two link types:

  • gs1:pip (Product Information Page)
  • gs1:certificationInfo (Certification Information)

The GTINs and the related links participating in this project need to be sent to GS1 Sweden to be uploaded into the GS1 Sweden resolver. This will be done by emailing an excel file with the following format (the GTINs and links shown here are examples):

identificationKeyitemDescriptionlinkTypetargetUrl
09506000134369Dal Giardino Extra Virgin Olive Oil Exclusive Selection 1Lgs1:piphttps://dalgiardino.com/extra-virgin-olive-oil/
09506000134376Dal Giardino Medicinal Compound 50 x 200mggs1:piphttps://dalgiardino.com/medicinal-compound/
09506000134376Dal Giardino Medicinal Compound 50 x 200mggs1:certificationInfohttps://dalgiardino.com/medicinal-compound/certificate

Guide to the columns in the chart above:

  • The IdentificationKey is the GTIN of the product.
  • The ItemDescription is a resolver-internal product name used. It is not shown to the end-consumer of data and it is only used when up- and downloading links into the resolver.
  • linkType in this project is gs1:pip or gs1:certificationInfo
  • targetUrl is the link that the App should go to, to find the information about this GTIN

GS1 Sweden will provide each link provider (brand owner) with a template-Excel to be filled in and emailed back. GS1 Sweden will work with the Certification company to define the link pattern for the certificationInfo links.

6. The App

The app should enable the user/consumer to scan a barcode (marked 1 in the Solution infrastructure figure). The App should use the complete link in the QR code and send a request to the GS1 Resolver (2) asking for all the links related to the GTIN in the barcode. This is done by sending a query like this: https://id.gs1.se/01/9506000134352?linkType=all (i.e. by adding “?linkType=all” at the end of the url.

When the app receives the response (from the GS1 Sweden Resolver) with the links related to that GTIN, the App should first go to the link with linkType gs1:pip.

Note it can exist several links for a specific linkType due different Mime-Type, IANA Language or Context.

If there are several linkType gs1:pip returned, the app selects the link with Mime-Type = ‘application/json’ if exists, otherwise Mime-Type = ’text/html’.

If there is no response for that GTIN the App should notify the user ”This product is not part of this project”.

If however, the App gets a link with linkType gs1:pip, then the App should go to the pip-website. The App should find the json content on the page and read the agreed upon data elements regarding the product (see list of data with GS1 web vocabulary in the next section). The App will present all the machine-readable data it finds, in the human-readable UI of the App.

If any of the data source – brands mandatory attributes are not populated, the App should nofity the user “There are not enough info about this product”.

In certain cases the App will see on the Product information page (the link with linktype=gs1:pip) that there is data that gs1:packagingMarkedLabelAccreditation equals ”SVANEN”. In these cases the App should reach out to the link (that has been provided by the GS1 Sweden Resolver) with linktype=gs1:certificationInfo. On the certification page (hosted by the certification agency) the App should read certification data related to the product (json-content with an attribute set as defined in the web vocabulary in the next section of this document). If data is found the App should merge this information with the data from the product information page and show this in an integrated way as human readable in the App UI.

7. The Data sources – Brands

For this project the Data sources need to have machine-readable data that the App can access to be able to process and display as human readable in its UI. This can be done in several ways. One way is for the brand owners to use existing product information pages on their websites and add machine readable content in the header of the existing page. Another way is to create a new, separate website with only machine readable content and direct “machines” to that site, while directing “humans” to the existing product information site.

Machine readable data in JSON-LD uses the GS1 web vocabulary (https://www.gs1.org/voc/)  to define which data is which. The GS1 web vocabulary is an extension to schema.org. The content of each JSON-LD file should be entered into the HTML of the page in this location between two <script> tags:

JSON-LD is an increasingly popular format for structuring data. It is a way of encoding Linked Data in JSON. It is composed of a set of name-value pairs, similar to regular JSON, but also includes an optional @context section.

The @context section is a vital part of JSON-LD as it provides a way to define and link terms from different vocabularies. This allows for greater semantic and contextual understanding of the data and provides an easy way to make the data understandable to both humans and machines.

Additionally, the @context section allows for data to be easily linked to other pieces of data, which can be important for various applications such as comparing values.

The @context property should be a ’root’ property of the document, not a child of another property, or in an element of an array.

Below is a list of the data that may be included in the JSON-LD (machine-readable content). Note that all data will not be included on all types of products, this is just a list to select from. For future applications different sets of data may be used, all with identifiers selected from GS1 web vocabulary. Some of the data is mandatory in this project, and these are marked as bold in the list below. If the machine readable content on the website does not contain all the mandatory data in the JSON format, the App will show what is found, but notify the user that “There is not enough info about this product”. For definitions (including machine readable), please visit www.gs1.org/voc.

CONTENTGS1 WEB VOCABULARY NAME
GTIN*gs1:gtin
Brand*gs1:brandName
Subbrandgs1:subBrandName
Brand Owner*gs1:brandOwner
Product Name*gs1:productName
Sizegs1:descriptiveSize
Heightgs1:inPackageHeight
Widthgs1:inPackageWidth
Depthgs1:inPackageDepth
Weightgs1:grossWeight
Countrygs1:countryOfOriginStatement
Product image*gs1:referencedFileURL
Certificationsgs1:packagingMarkedLabelAccreditation
*Mandatory data – without this data included, a notification to the user “There is not enough info about this product”“, will be presented by the App.

An example of the JSON file is presented in Appendix A.

8. The Data sources – Certification

In case the App has seen in data on the gs1:pip link that the product is certified by ”Svanen”, then the App must go to the Svanen site to verify this. In these cases the App should reach out to the link (that has been provided by the GS1 Sweden Resolver) with linktype= gs1:certificationInfo.

If there are several linkType gs1:certificationInfo returned, the app selects the link with Mime-Type = ‘application/json’ if exists, otherwise Mime-Type = ’text/html’.

On the certification page (hosted by the certification agency) the App should read data about the certification details related to the GTIN, including that the GTIN actually is certified with Svanen. This can be done in several ways, but the recommended way for this project is for the certification provider to provide machine readable JSON data on a site using the GS1 web vocabulary (https://www.gs1.org/voc/) to define which data is which. This is an extension to schema.org. The content of each JSON-LD file should be pasted into the HTML of the page in this location between two <script> tags:

The list of machine readable data that may be included on the site is shown below. All data elements do not have to be used, but license number and status are mandatory, and are marked as bold in the list below. For this project the mandatory data is gs1:certificationStatus which, if set to ”ACTIVE”, confirms that the product indeed is certified by Svanen.

CONTENTGS1 WEB VOCABULARY NAME
Certification agencygs1:certificationAgency
License number*gs1:certificationIdentification
Licenseegs1:certificationSubject
Status (active/inactive)*gs1:certificationStatus
Certification symbol imagegs1:referencedFileURL
*Mandatory data – without this data included, a notification to the user “Certification information not found“ will be presented by the App. Note, if all . pip mandatory attributes are populated these are presented by the App.

An example of the JSON file is presented in Appendix B.

Appendix A:
Example of JSON data Product information Page (Data Source Brands)

There is an example product which has JSON-LD embedded in this manner:  https://dalgiardino.com/risotto-rice-with-mushrooms/pip_example.html

There is an example product which has JSON-LD embedded in this manner:  https://dalgiardino.com/risotto-rice-with-mushrooms/pip_example.html

Appendix B:
Example of JSON data Certification Page (Data Source Certification)

Change log

VersionChange
ver 1.0 => ver 1.12All sections: Amended language and minor clarifications

Section 4: New example of QR code and digital link syntax

Section 6: Amended the description of the way the App looks for JSON content on the pip page, and also the flowchart. Amended language about what the App shows.

Section 7: Revised list of pip content to include product image.

Section 7 and 8: added link to https://www.gs1.org/voc/ and clarified that this is an extension to schema.org. Added that some data is mandatory and that if it’s not included the App will mark product passport as “incomplete”.

Appendix A and B: updated with data regarding product image, JSON files attached, and link to an example website with JSON-LD embedded.
ver 1.12 => ver 1.13Section 7: Product image link made mandatory
ver 1.13 => ver 1.14Section 7: language adjustments

Appendix A: Added GTIN as an attribute in the JSON examples for data source – Brands
ver 1.14 => ver 1.15Section 6:
Added clarification regarding several links for a specific linkType.
Added claification when not all mandatory attributes are populated by data source.
New version of flowdiagram.

Section 7: Added clarification how to specify the JSON-LD.

Appendix A: Changed attribute PackagingMarkedLabelAccreditationCode in the JSON examples for data source – Brands

Section 8: Added attribute “Certification symbol image”.

Appendix B: Added attribute referencedFileURL” in the JSON examples for data source – Certification.
Tillbaka till toppen