バーコードは製品ではありません。 prodid が製品です。
あらゆる物理的な製品に、永続的でオープンな識別子を。すべてのバーコードと部品番号がそこに解決され、製品についてのすべての情報には、それを述べたソースが付いています。
仕様は英語でのみ公開されており、英語の本文が規範となります。
Item · Acme
Trail Jacket
ネイビー · M · TR, DE で販売
- material100% recycled polyester✓ acme.example
- weight480 g✓ acme.example
- nameAcme Trail Jacket, navy, Mlapsed · shop.example
課題
4 つのコード、1 着のジャケット、互いのつながりはなし。
製品は、新しい市場に出るたび、入数が変わるたび、パッケージが変わるたびに新しいバーコードを得ます。そのデータはそれぞれ別のシステムに散らばっています。2 つのシステムの内容が食い違えば、片方が黙って上書きされます。
prodid は製品そのものに識別子を与えます。バーコードが変わっても、それは変わりません。
09506000134352
DE と TR の販売単位
別の GTIN
同じジャケットの 2 着パック
別の GTIN
来年のパッケージ
TJ-2041-NVY-M
メーカー部品番号
1 つのバリアント
9p2d4kv7mq3nbhxf
再利用されず、削除されません。ここを指していたコードはすべて有効なままです。
モデル
ファミリー、バリアント、アイテム。コードはそれらを指しますが、それら自身ではありません。
各階層にはそれぞれ opid があります。何もエンコードしない 16 文字なので、製品について何が変わっても間違いにはなりません。
family · 3n7k2q9vdfhb4mta
Acme Trail Jacket
人が普段その製品と呼ぶもの。
variant · 9p2d4kv7mq3nbhxf
ネイビー · M サイズ
色、サイズなどの属性の 1 つの組み合わせ。
item · kq7m3v9dn2hb4t5x
DE と TR の販売単位
バーコードが印刷されている物。
- gtin09506000134352
- mpnTJ-2041-NVY-M
- skuTJ-2041-NVY-M
新しいパッケージは、同じバリアント、同じファミリーの下に、新しいバーコードを持つ新しいアイテムを追加します。古いアイテムを指していたものは何も壊れません。
仕組み
あなたのドメインで公開し、prodid がインデックスし、誰でも解決できる。
01 · 公開
ドメイン上の 3 つのもの
- /.well-known/prodid.json
- /prodid/items.ndjson
- _prodid TXT "v=prodid0; host=…"
ディスカバリー文書、1 行に 1 製品のフィード、そしてドメインがあなたのものであることを示す DNS レコード。
公開の方法 →02 · インデックス
検証、照合、帰属
- すべての行をスキーマで検証
- 既存の opid に照合、または新しく発行
- すべての項目をあなたのドメインのクレームとして保存
小売業者、登録機関、オープンデータセットも同じ方法でソースになります。メーカーの上ではなく、横に並びます。
クレームの仕組み →03 · 解決
製品に印刷された 1 つの URL
prodid.org/01/09506000134352
ブラウザ → 読みやすいビュー
API → JSON レコード
パスは GS1 Digital Link の構文なので、そのままラベルの QR コードにできます。
解決の仕組み →
クレーム
すべての情報に出典があり、食い違いは見えたままです。
何も 1 つの「真実」にまとめられることはありません。ソースが公開をやめても、そのクレームは削除されず、lapsed として印が付いたまま残ります。
| 属性 | 値 | ソース | 信頼 | 確認開始 |
|---|---|---|---|---|
| name | Trail Jacket | acme.example | verified | 2026-09-14 |
| brand | Acme | acme.example | verified | 2026-09-14 |
| material | 100% recycled polyester | acme.example | verified | 2026-09-14 |
| weight | 480 g | acme.example | verified | 2026-09-14 |
| media | image · CC-BY-4.0 | acme.example | verified | 2026-09-14 |
| markets | TR, DE | acme.example | verified | 2026-09-14 |
| name | Acme Trail Jacket, navy, M | shop.example | unverified · lapsed | 2026-08-02 |
- authoritative
- ドメインを管理し、ブランド所有者として確認済み。
- verified
- DNS または自分のサイトで、ドメインの管理を証明済み。
- unverified
- ドメインのないホスト名、データセット、またはコミュニティの投稿。
GET /01/09506000134352 HTTP/1.1
Host: prodid.org
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
Content-Location: /id/kq7m3v9dn2hb4t5x{
"$type": "org.prodid.entity",
"version": 1,
"opid": "kq7m3v9dn2hb4t5x",
"kind": "item",
"parents": {
"family": "3n7k2q9vdfhb4mta",
"variant": "9p2d4kv7mq3nbhxf"
},
"identifiers": [
{
"scheme": "gtin",
"value": "09506000134352"
},
{
"scheme": "mpn",
"value": "TJ-2041-NVY-M",
"scope": "acme"
},
{
"scheme": "sku",
"value": "TJ-2041-NVY-M",
"scope": "acme.example"
}
],
"claims": [
{
"property": "name",
"value": "Trail Jacket",
"lang": "en",
"source": {
"name": "acme.example",
"trust": "verified",
"lapsed": false
},
"seen_at": "2026-09-14T09:12:03Z"
},
{
"property": "brand",
"value": "Acme",
"source": {
"name": "acme.example",
"trust": "verified",
"lapsed": false
},
"seen_at": "2026-09-14T09:12:03Z"
},
{
"property": "properties.material",
"value": "100% recycled polyester",
"lang": "en",
"source": {
"name": "acme.example",
"trust": "verified",
"lapsed": false
},
"seen_at": "2026-09-14T09:12:03Z"
},
{
"property": "properties.weight",
"value": {
"value": 480,
"unit": "g"
},
"source": {
"name": "acme.example",
"trust": "verified",
"lapsed": false
},
"seen_at": "2026-09-14T09:12:03Z"
},
{
"property": "markets",
"value": "TR",
"source": {
"name": "acme.example",
"trust": "verified",
"lapsed": false
},
"seen_at": "2026-09-14T09:12:03Z"
},
{
"property": "markets",
"value": "DE",
"source": {
"name": "acme.example",
"trust": "verified",
"lapsed": false
},
"seen_at": "2026-09-14T09:12:03Z"
},
{
"property": "name",
"value": "Acme Trail Jacket, navy, M",
"lang": "en",
"source": {
"name": "shop.example",
"trust": "unverified",
"lapsed": true
},
"seen_at": "2026-08-02T17:41:55Z"
},
{
"property": "media",
"value": {
"sha256": "e3943ea26ce08ae81809e62936dc4f934fa04da6cd57bd9ab2a90b79da751c09",
"url": "https://acme.example/img/tj2041-navy.webp",
"media_url": "https://media.prodid.org/sha256/e3943ea26ce08ae81809e62936dc4f934fa04da6cd57bd9ab2a90b79da751c09",
"license": "CC-BY-4.0",
"kind": "image"
},
"source": {
"name": "acme.example",
"trust": "verified",
"lapsed": false
},
"seen_at": "2026-09-14T09:12:03Z"
}
]
}対象
データを作る人と、データを必要とする人。
EU デジタル製品パスポートについて。 ESPR はパスポートを製品上のデータキャリアから参照できることを求めており、GS1 Digital Link はそのために標準化が進むキャリア構文の 1 つです。prodid はパスポートサービスではなく、ここで公開してもいかなる規制への適合にもなりません。行うのは同じ基盤です。製品ごとに機械可読なレコードを、あなたが管理する安定したアドレスに。
現状
プロジェクトの実際の状況。
Spec v1。インデックスとホスト型パブリッシャーは prodid.org で稼働しています。誰でも、自分のドメインからでもホスト型でも公開できます。
- 安定
仕様 v1。 変更は追加のみで、それ以外の変更は v2 になります。v0 のディスカバリー文書は 2027-01-26 00:00 UTC まで受け付けます。仕様を読み、間違いがあれば教えてください。
- Canary と 1 つのデータセット
まだパブリッシャーのカタログはインデックスされていません。 インデックスには 2 つのソースがあります。公開、取得、解決をエンドツーエンドで確かめるプロジェクト自身の canary canary.prodid.org と、5 件の Wikidata 項目に限った試験的な取り込み dataset:wikidata(unverified、CC0-1.0)です。
- 設計どおり
インデックスは置き換え可能です。 仕様、スキーマ、opid、コードの対応付けは CC0 です。各クレームはそのソースのライセンスを保ちます。情報はそれを公開したドメインにあるので、誰でも再取得でき、印刷されたコードは意味を保ち続けます。
バーコードより長く続く ID を、あなたの製品に。
自分のドメインに 2 つのファイルと 1 つの DNS レコードを置くか、ドメインなしでホスト型サイトを使います。