Conformance matrix

How BellaDPP maps to the clauses of the six published CEN/CENELEC JTC 24 DPP standards. Every row either points to an endpoint/file or plainly says “not implemented”.

36 clauses · met: 34 · Last updated: 21 Ağustos 2026

Machine-readable form (JSON)

EN 18216 — Data exchange

Clause topic Status Evidence
Passport served in machine-readable form Met GET api/public/dpp/{identifier}/jsonld → PublicController.cs:95 (Bella.API/Controllers/PublicController.cs:95)
Anonymous (unauthenticated) access Met Tüm PublicController uçları [AllowAnonymous]
Content-type declaration Met /jsonld ve /credential application/ld+json döner; ana /dpp/{identifier} ucu Accept: application/ld+json ile anlamsal gövdeyi, YALNIZ application/json istendiğinde zarfsız saf pasaportu döner. Zarf ({success, data}) geriye dönük uyum için varsayılan kalır (PublicController.cs (Bella.API/Controllers/PublicController.cs))
Content negotiation (format chosen by Accept header) Met GS1 Digital Link ucunda: Accept: application/ld+json → JSON-LD, aksi halde insan sayfasına 302 (Gs1DigitalLinkController.cs (Bella.API/Controllers/Gs1DigitalLinkController.cs)). /jsonld yolu geriye dönük uyumluluk için korunur.
Linkset Met Accept: application/linkset+json ile /01/{gtin}[/21/{serial}] RFC 9264 linkset döner: pasaport sayfası, JSON-LD, PDF, sertifikalar, (birim düzeyinde) EPCIS ve imzalıysa VC. Bağlantı tipleri tam GS1 URI'si (Gs1LinksetBuilder.cs (Bella.Business/Helpers/Gs1LinksetBuilder.cs), test: Gs1LinksetTests.cs (Bella.Tests/Business/Gs1LinksetTests.cs))
Language selection Met ?lang= — tr/en/es/fr/zh, PublicDppManager.cs (Bella.Business/Concrete/PublicDppManager.cs) SupportedLanguages

EN 18219 — Identifiers

Clause topic Status Evidence
Product model identifier (GTIN / AI 01) Met Product.Gtin, kök düzeyde GET /01/{gtin} (+ api/public/gs1/… eski yol)
Item identifier (serial / AI 21) Met ProductItem, kök düzeyde GET /01/{gtin}/21/{serial}
Batch/lot identifier Met ProductItem.BatchNumber
Persistent passport identifier Met DppPassport.PassportIdentifier, JSON-LD'de dpp:passportIdentifier
Economic operator identifier Met did:web yayımcı kimliği (/.well-known/did.json) + Company.EuOperatorRegistrationNumber (EN 18219 kayıt numarası) ve Company.EconomicOperatorId (EORI). Registry gövdesinde economicOperator.registrationNumber olarak gider (RegistryManager.cs (Bella.Business/Concrete/RegistryManager.cs))
Facility identifier Met Company.FacilityId — firma ekranından girilir, registry gönderiminde kullanılır; boşsa gönderim ön kontrolde DURDURULUR (sentetik URN üretilmez)
Gümrük emtia kodu (HS/TARIC) — Registry Md. 8 (2026/1778) Met Product.CommodityCode; ürün diyalogu + Excel içe/dışa aktarım; registry gövdesinde commodityCode. Boşsa gönderim ön kontrolde durur ve kuyrukta eksik olarak görünür
Parti↔model kimlik bağı — Registry Md. 8(4)-(5) (2026/1778) Met Registry gövdesinde identifiers{granularity=model, model, batch}; pasaport model düzeyinde, parti no varsa modele bağlı gider, olmayan düzey uydurulmaz
Sürüm içerik özeti — Registry kayıt kanıtı Md. 9 (2026/1778) Met DppVersion.ContentHash = SHA-256(anlık görüntü), yayında hesaplanır (IcerikOzeti.cs (Bella.Business/Helpers/IcerikOzeti.cs)); registry gövdesinde versionHash, sürüm listesinde contentHash

EN 18220 — Data carrier

Clause topic Status Evidence
Optical carrier generation Met QR (QRCoder, ECC Q, PNG+SVG) ve Data Matrix ECC 200 (ZXing, SVG) — QrManager.cs (Bella.Business/Concrete/QrManager.cs), VeriTasiyiciBuilder.cs (Bella.Business/Helpers/VeriTasiyiciBuilder.cs)
Carrier encodes a persistent web address Met GTIN varsa taşıyıcı {taban}/01/{gtin} kodlar (GS1 Digital Link, kök düzeyinde çözülür). GTIN yoksa iç adrese düşer ve panel bunu açıkça uyarır — sessizce standart dışı kod basılmaz.
Data Matrix Met ECC 200, kare biçim, SVG çıktı — GET api/dpp/{id}/carriers
NFC / RFID Met NDEF URI kaydı (TNF=1, RTD='U') hex olarak üretilir; etikete yazma işi kodlayıcı cihaza aittir (sunucunun donanım erişimi yok)
Carrier independence (same data from different carriers) Met Üç taşıyıcı da AYNI adresi taşır; testle korunur (VeriTasiyiciTests.cs (Bella.Tests/Business/VeriTasiyiciTests.cs))

EN 18221 — Data storage and redundancy

Clause topic Status Evidence
Self-contained backup package Met BackupManager.cs (Bella.Business/Concrete/BackupManager.cs) — kimlikler + JSON-LD + VC + tüm versiyon snapshot'ları
Transferable to an independent third party Met Dpp:BackupEndpoint yapılandırıldıysa best-effort POST; yoksa operatör paketi indirir
Passport survives the operator disappearing Met Paket öz-yeterli — dış referans gerektirmez
Retention period declaration Met DppPassport.RetentionUntil — yayında hesaplanıp SAKLANIR (yayın tarihi + urun_omru_yil + Dpp:RetentionYears); JSON-LD'de dpp:retentionUntil ve /vocab'da tanımlı (DppSemanticBuilder.cs (Bella.Business/Helpers/DppSemanticBuilder.cs), test: JsonLd_SaklamaSuresiBeyani_CiktidaYerAlir)
Scheduled/automatic backups Met Hangfire recurring job dpp-scheduled-backup (her gece 02:30) → IBackupService.RunScheduledBackupAsync. Sağlayıcı ucu yoksa paketler Dpp:BackupDirectory altına DOSYA olarak yazılır; elle tetikleme POST api/backup/run

EN 18222 — Lifecycle data and API

Clause topic Status Evidence
Event model (EPCIS 2.0) Met EpcisManager.cs (Bella.Business/Concrete/EpcisManager.cs), bizStep/disposition
Item-level public event history Met GET api/public/epcis/01/{gtin}/21/{serial} → ham application/ld+json
Passport versioning Met DppPassport.Version, versiyon snapshot'ları ve fark görünümü
Downstream actors (repairer, recycler) writing events Met Tek kullanımlık, süreli, tek ürüne kapsamlı imzalı token (DownstreamActorToken.cs (Bella.Business/Helpers/DownstreamActorToken.cs)) → POST api/public/epcis/submit (anonim). Katkı moderasyon kuyruğuna düşer, onaylanana kadar public çıktıya girmez; kapsam ve tek kullanım testle korunur (AsagiAkisAktoruTests.cs (Bella.Tests/Business/AsagiAkisAktoruTests.cs))
Ownership / transfer history Met ProductOwnership — birim düzeyi sahiplik zinciri; public pasaportta seri no ile çözülen görünümde (ProductOwnershipManager.cs (Bella.Business/Concrete/ProductOwnershipManager.cs))

EN 18223 — Semantic model

Clause topic Status Evidence
JSON-LD output Met DppSemanticBuilder.cs (Bella.Business/Helpers/DppSemanticBuilder.cs) BuildJsonLd
Use of a common vocabulary Met schema.org terimleri doğrudan kullanılıyor (tekrarlanmıyor)
Own terms defined in a resolvable namespace Met Dpp:VocabularyUri → GET /vocab (VocabController.cs (Bella.API/Controllers/VocabController.cs)); çıktıdaki her dpp: terimi testle bu belgeye bağlı (JsonLd_HerDppTerimi_SozcukDagarcigindaTanimli)
GS1 Digital Link based @id Met @id = {base}/01/{gtin}, GTIN yoksa urn:bella:dpp:{identifier}
Mapping to the official EU DPP Core Ontology Not possible yet Ontoloji henüz yayımlanmadı. Yayımlandığında owl:equivalentProperty ile eşlenecek; sözcük dağarcığı belgesi bu sınırı kendi içinde beyan ediyor.
SHACL shapes (validation schema) Partial GET /shapes → SHACL NodeShape belgesi (DppShapesBuilder.cs (Bella.Business/Helpers/DppShapesBuilder.cs)); her pasaport için GET api/public/dpp/{identifier}/shacl-report → sh:ValidationReport. Şekiller ile doğrulayıcı TEK kaynaktan okur, ayrışamaz (test: ShaclSekilTests). Sınır: tam SHACL motoru değildir — desteklenen kısıtlar sh:datatype, sh:minCount, sh:maxCount, sh:minInclusive, sh:maxInclusive, sh:pattern, sh:minLength, sh:maxLength, sh:nodeKind, sh:in, sh:node; sh:or/sh:xone/sh:sparql/sh:qualifiedValueShape YOK ve belge bunu kendi içinde beyan eder. Dış RDF kütüphanesi bilerek eklenmedi (29.08.2026 kararı).

Draft texts — no conformance claimed

The texts below are still drafts (prEN). Conformance with an unpublished standard cannot be declared; our implementation follows the draft but makes no claim.

  • prEN 18239 — Katmanlı erişim
  • prEN 18246 — Veri bütünlüğü

Source document: UYUMLULUK-HARITASI.md in the repository root