---
title: "JSON-LD para Passaportes Digitais de Produto (e onde o EPCIS 2.0 se encaixa) — qr3.app Blog"
description: "Um DPP só é útil para máquinas se for legível por máquina. Este guia mostra o JSON-LD real que um passaporte qr3 expõe através do resolver ao vivo, como um único URL serve simultaneamente humanos e máquinas por meio de negociação de conteúdo, e onde o padrão complementar de eventos EPCIS 2.0 se encaixa."
canonical: "https://qr3.app/pt/blog/dpp-json-ld-epcis/"
lang: "pt"
robots: "index,follow,max-image-preview:large,max-snippet:-1"
---

# JSON-LD para Passaportes Digitais de Produto (e onde o EPCIS 2.0 se encaixa) — qr3.app Blog

> Um DPP só é útil para máquinas se for legível por máquina. Este guia mostra o JSON-LD real que um passaporte qr3 expõe através do resolver ao vivo, como um único URL serve simultaneamente humanos e máquinas por meio de negociação de conteúdo, e onde o padrão complementar de eventos EPCIS 2.0 se encaixa.

Canonical: <https://qr3.app/pt/blog/dpp-json-ld-epcis/>

[← Blog](/pt/blog/) [Tutoriais](/pt/blog/category/tutorials/)

30 de maio de 2026 7 min de leitura [Tutoriais](/pt/blog/category/tutorials/) [dpp](/pt/blog/tag/dpp/)[json-ld](/pt/blog/tag/json-ld/)[epcis](/pt/blog/tag/epcis/)[gs1-digital-link](/pt/blog/tag/gs1-digital-link/)[interoperability](/pt/blog/tag/interoperability/)

# JSON-LD para Passaportes Digitais de Produto (e onde o EPCIS 2.0 se encaixa)

Um DPP só é útil para máquinas se for legível por máquina. Este guia mostra o JSON-LD real que um passaporte qr3 expõe através do resolver ao vivo, como um único URL serve simultaneamente humanos e máquinas por meio de negociação de conteúdo, e onde o padrão complementar de eventos EPCIS 2.0 se encaixa.

por **QR3 Redaktion**

![JSON-LD para Passaportes Digitais de Produto (e onde o EPCIS 2.0 se encaixa)](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-json-ld-epcis/hero.png)

Um Passaporte Digital de Produto destina-se a ser lido por pessoas *e* por máquinas: o sistema de receção de um reciclador, uma API alfandegária, um crawler de um marketplace, o script de um auditor de sustentabilidade. Uma página HTML apenas para humanos não é suficiente. O passaporte tem de ser **legível por máquina** — uma carga útil estruturada que um programa consiga analisar, ligar e sobre a qual consiga raciocinar sem recorrer a scraping.

Este guia destina-se a programadores que fazem a pergunta óbvia seguinte: *depois de ter um DPP, como é que uma máquina o lê de facto?* A resposta para o qr3 é JSON-LD através do resolver público. Vamos mostrar a resposta real, explicar como o mesmo URL serve humanos e máquinas, e depois situar o EPCIS 2.0 — o padrão complementar de eventos da GS1 — no seu contexto.

## O que significa legibilidade por máquina para um DPP

Legível por máquina é mais do que "devolver JSON". Para um passaporte de produto, significa três coisas:

- **Estruturado** — campos que um parser consegue endereçar (`gtin`, `name`, …), não prosa para fazer scraping.

- **Tipado e ligado** — termos ancorados a vocabulários partilhados, de modo a que `Product` signifique o mesmo para toda a gente. Isso é o *Linked Data* no JSON-LD.

- **Estável para obter** — um URL durável por item ao qual um script possa fazer `GET` durante toda a vida do produto.

O JSON-LD (JSON for Linking Data) entrega os três. É JSON comum mais um `@context` que mapeia cada chave para um termo num vocabulário público — aqui [schema.org](https://schema.org) e o [GS1 Web Vocabulary](https://gs1.org/voc/). Um crawler que já entende schema.org entende o passaporte com zero integração personalizada.

## O DPP como JSON-LD (curl real + resposta verificada)

Todos os passaportes qr3 resolvem-se num URL GS1 Digital Link: `https://qr3.app/dpp/{gtin}/{serial}`. Adicione `?format=jsonld` para pedir a vista Linked Data. Contra a demo de bateria ao vivo:

```
curl -s "https://qr3.app/dpp/09520000000011/DEMO-BAT-01?format=jsonld"
```

devolve:

```
{
  "@context": ["https://schema.org", "https://gs1.org/voc/"],
  "@type": "Product",
  "gtin": "09520000000011",
  "name": "EcoMax 5000 (Demo)"
}
```

Três coisas a reter:

- `@context` é um **array** de dois vocabulários — schema.org para a web geral e `gs1.org/voc/` para os termos de produto da GS1. As chaves resolvem-se contra ambos.

- `@type: "Product"` diz a qualquer consumidor de Linked Data exatamente que tipo de entidade isto é.

- Os valores (`gtin`, `name`) são reais e estão ao vivo — esta é a carga útil efetiva, não um mock.

É esse precisamente o objetivo: o script de um reciclador não precisa de um cliente específico do qr3. Faz um `GET` HTTP, analisa o JSON-LD que já entende, e lê o GTIN e o nome do produto diretamente.

## Um URL, dois públicos: negociação de conteúdo

O mesmo URL `https://qr3.app/dpp/{gtin}/{serial}` serve um passaporte HTML acessível a humanos *e* a vista para máquinas — o servidor decide o que devolver com base no que o chamador pede. Duas formas de pedir:

| O que quer | Parâmetro de query | Ou cabeçalho Accept |
| --- | --- | --- |
| Página HTML para humanos | *(predefinição)* | `Accept: text/html` |
| JSON-LD (Linked Data) | `?format=jsonld` | `Accept: application/ld+json` |
| JSON simples | `?format=json` | — |
| Linkset (recursos relacionados) | `?format=linkset` | — |
| DCAT-AP (metadados do conjunto de dados) | `?format=dcat-ap` | — |

Assim, a câmara de um telemóvel que abre o QR aterra no passaporte HTML legível, enquanto um script pede ao URL *idêntico* o tipo `application/ld+json` e obtém dados estruturados:

```
# Vista para máquinas via negociação por cabeçalho — mesmo URL, sem query string
curl -s -H "Accept: application/ld+json" \
  "https://qr3.app/dpp/09520000000011/DEMO-BAT-01"
```

Um identificador, um URL, muitas representações. O GTIN/serial mantém-se estável; a *vista* adapta-se ao chamador. É exatamente isso que torna um DPP durável e interoperável ao mesmo tempo.

## Onde o EPCIS 2.0 se encaixa (eventos vs. passaporte)

Uma questão comum a seguir: *e o EPCIS — não é esse o padrão da GS1 para isto?* Distinção importante:

- Um **DPP** é a **descrição estática de um item de produto** — a sua identidade, materiais, pegada de carbono, reciclabilidade. Responde a *"o que é esta coisa?"* O JSON-LD acima é esse instantâneo.

- O **EPCIS 2.0** é o padrão da GS1 para **eventos da cadeia de abastecimento** — os dados de visibilidade sobre *o que aconteceu, onde, quando e porquê*: um item foi comissionado, expedido, recebido, reciclado. Responde a *"o que aconteceu a esta coisa, e onde está?"*

São **complementares, não concorrentes**. O passaporte diz-lhe que o produto é uma bateria de 5,2 kWh com 35% de conteúdo reciclado; um rasto de eventos EPCIS dir-lhe-ia que foi fabricada em Hamburgo numa determinada data, expedida através de um centro de distribuição e chegou a um reciclador. O próprio EPCIS 2.0 é compatível com JSON/JSON-LD, pelo que ambos partilham a mesma visão de mundo de Linked Data e os mesmos identificadores GS1 (GTIN + serial) como chave de junção.

> **Âmbito do qr3 (seja preciso):** o qr3 **produz o DPP como JSON-LD** — é isso que este artigo demonstra. O qr3 **não** fornece captura de eventos EPCIS nem endpoints EPCIS. Trate aqui o EPCIS 2.0 como o padrão *conceptual e complementar* que adotaria juntamente com um DPP para uma rastreabilidade completa da cadeia de abastecimento, e não como uma funcionalidade do qr3.

Assim, o modelo mental é: o DPP (qr3, JSON-LD) é a *ficha de identidade* do produto; o EPCIS 2.0 (sistema separado) é o seu *registo de viagem*. Os mesmos identificadores, duas perguntas respondidas.

## Gerar um DPP que expõe JSON-LD

Não precisa de fazer nada de especial para "ativar" o JSON-LD — crie o passaporte e o resolver serve automaticamente todas as representações:

```
import { QR3 } from "@qr3/sdk";

const client = new QR3({ apiKey: process.env.QR3_API_KEY! });

const passport = await client.dpp.create({
  gtin: "09520000000011",
  serial: "SN-00012345",
  product_name: "PowerCell 5 kWh LFP",
  manufacturer: "ExampleTech GmbH",
  origin_country: "DE",
  category: "battery",
  market_countries: ["DE", "FR", "AT"],
  status: "live",
  battery_data: {
    capacity_kwh: 5,
    carbon_footprint_kg: 62,
    recycled_content_pct: 12,
    recyclability_pct: 95,
  },
});

// O passaporte resolve-se agora em https://qr3.app/dpp/09520000000011/SN-00012345
// Humanos obtêm HTML; máquinas acrescentam ?format=jsonld (ou enviam Accept: application/ld+json).
console.log(passport.qr.svg); // O QR codifica o GS1 Digital Link para o resolver
```

Uma vez criado, o URL do item responde imediatamente a ambos os públicos — sem passo de publicação adicional para a vista de máquina.

## FAQ

**Porquê JSON-LD e não JSON simples?**
O JSON simples é estruturado mas não *autodescritivo*: um consumidor tem de aprender os nomes dos seus campos. O JSON-LD acrescenta `@context`, mapeando cada chave para termos schema.org / GS1, de modo a que qualquer consumidor de Linked Data o entenda sem uma integração personalizada. Se só precisar de uma leitura rápida, `?format=json` continua disponível.

**O qr3 implementa o EPCIS 2.0?**
Não. O qr3 produz o DPP como JSON-LD. O EPCIS 2.0 é o padrão da GS1 separado e complementar para *eventos* da cadeia de abastecimento; executá-lo-ia em paralelo, unido pelo GTIN + serial partilhados.

**Como é que obtenho a vista para máquinas?**
Acrescente `?format=jsonld` ao URL do resolver, ou envie `Accept: application/ld+json`. Ambos devolvem a mesma carga útil de Linked Data.

**O `@context` é estável?**
Fixa o schema.org mais o GS1 Web Vocabulary (`gs1.org/voc/`) — ambos vocabulários públicos e versionados, pelo que os consumidores podem confiar nos significados dos termos.

## Fontes

- [JSON-LD 1.1 (W3C Recommendation)](https://www.w3.org/TR/json-ld11/)

- [GS1 Web Vocabulary](https://www.gs1.org/voc/)

- [GS1 EPCIS and CBV 2.0](https://www.gs1.org/standards/epcis)

- [schema.org Product](https://schema.org/Product)

- [ESPR — Regulation (EU) 2024/1781](https://eur-lex.europa.eu/eli/reg/2024/1781/oj)

**Comece gratuitamente** e crie um DPP que expõe JSON-LD: [app.qr3.app/sign-up](https://app.qr3.app/sign-up)

São demonstrações funcionais com dados de produtos fictícios e GTIN de exemplo do prefixo GS1 952. Não comprovam identificadores de produto atribuídos, inscrição num registo ou certificação.

## Artigos relacionados

- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/gs1-digital-link-resolver/hero.png) Tutoriais O Resolver GS1 Digital Link, explicado (com um exemplo ao vivo) Um código QR de DPP não é um link para uma página web — é um GS1 Digital Link, e o resolver transforma um identificador em muitas respostas sensíveis ao contexto. Eis como funciona, com um passaporte ao vivo que pode consultar via curl agora mesmo.](/pt/blog/gs1-digital-link-resolver/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/gs1-resolver-test-suite-dpp-links/hero.png) Tutoriais Suíte de testes do Resolver GS1: verificar a robustez dos DPP-Links antes do go-live A suíte de testes GS1 estável permite verificar o Resolver 1.2. Teste redirecionamentos, conjuntos de links, CORS, idiomas e casos de erro antes do go-live.](/pt/blog/gs1-resolver-test-suite-dpp-links/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-battery-passport-2027-20260715/hero.png) Notícias do setor BatteryPass-Ready lança ambiente de testes para o Passaporte Digital de Baterias O consórcio BatteryPass-Ready lançou, em 24 de junho de 2026, um ambiente público de testes para o Passaporte Digital de Baterias, tendo em vista a obrigação da UE a partir de fevereiro de 2027.](/pt/blog/dpp-battery-passport-2027-20260715/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260713/hero.png) Notícias do setor Passaporte Digital de Baterias 2027: o que os fabricantes precisam saber agora Webinars, ferramentas de código aberto e novas normas: o passaporte de baterias da UE ganha impulso. Uma visão geral da situação em julho de 2026 e das questões em aberto até fevereiro de 2027.](/pt/blog/sector-20260713/)

[← Todos os artigos](/pt/blog/) [Começar gratuitamente](https://app.qr3.app/sign-up)
