Uygunluk matrisi
BellaDPP’nin CEN/CENELEC JTC 24 tarafından yayımlanmış altı DPP standardının maddeleriyle kod tabanındaki karşılıkları. Her satır ya bir uca/dosyaya işaret eder ya da açıkça “yok” der.
36 madde · karşılanan: 34 · Son güncelleme: 21 Ağustos 2026
EN 18216 — Veri değişimi (data exchange)
| Madde konusu | Durum | Karşılık |
|---|---|---|
| Pasaportun makine-okunur biçimde sunulması | Karşılanıyor | GET api/public/dpp/{identifier}/jsonld → PublicController.cs:95 (Bella.API/Controllers/PublicController.cs:95) |
| Anonim (kimliksiz) erişim | Karşılanıyor | Tüm PublicController uçları [AllowAnonymous] |
| İçerik türü bildirimi | Karşılanıyor | /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)) |
| İçerik pazarlığı (Accept başlığına göre biçim seçimi) | Karşılanıyor | 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. |
| Bağlantı kümesi (linkset) | Karşılanıyor | 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)) |
| Dil seçimi | Karşılanıyor | ?lang= — tr/en/es/fr/zh, PublicDppManager.cs (Bella.Business/Concrete/PublicDppManager.cs) SupportedLanguages |
EN 18219 — Tanımlayıcılar (identifiers)
| Madde konusu | Durum | Karşılık |
|---|---|---|
| Ürün modeli tanımlayıcısı (GTIN / AI 01) | Karşılanıyor | Product.Gtin, kök düzeyde GET /01/{gtin} (+ api/public/gs1/… eski yol) |
| Birim tanımlayıcısı (seri no / AI 21) | Karşılanıyor | ProductItem, kök düzeyde GET /01/{gtin}/21/{serial} |
| Parti/lot tanımlayıcısı | Karşılanıyor | ProductItem.BatchNumber |
| Pasaportun kalıcı tanımlayıcısı | Karşılanıyor | DppPassport.PassportIdentifier, JSON-LD'de dpp:passportIdentifier |
| Ekonomik operatör tanımlayıcısı | Karşılanıyor | 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)) |
| Tesis (facility) tanımlayıcısı | Karşılanıyor | 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) | Karşılanıyor | 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) | Karşılanıyor | 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) | Karşılanıyor | 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 — Veri taşıyıcı (data carrier)
| Madde konusu | Durum | Karşılık |
|---|---|---|
| Görsel taşıyıcı üretimi | Karşılanıyor | 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) |
| Taşıyıcının kalıcı web adresi kodlaması | Karşılanıyor | 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 | Karşılanıyor | ECC 200, kare biçim, SVG çıktı — GET api/dpp/{id}/carriers |
| NFC / RFID | Karşılanıyor | NDEF URI kaydı (TNF=1, RTD='U') hex olarak üretilir; etikete yazma işi kodlayıcı cihaza aittir (sunucunun donanım erişimi yok) |
| Taşıyıcı-bağımsızlık (aynı veri farklı taşıyıcılardan) | Karşılanıyor | Üç taşıyıcı da AYNI adresi taşır; testle korunur (VeriTasiyiciTests.cs (Bella.Tests/Business/VeriTasiyiciTests.cs)) |
EN 18221 — Veri saklama ve yedeklilik (storage/backup)
| Madde konusu | Durum | Karşılık |
|---|---|---|
| Öz-yeterli yedek paketi | Karşılanıyor | BackupManager.cs (Bella.Business/Concrete/BackupManager.cs) — kimlikler + JSON-LD + VC + tüm versiyon snapshot'ları |
| Bağımsız üçüncü tarafa devredilebilirlik | Karşılanıyor | Dpp:BackupEndpoint yapılandırıldıysa best-effort POST; yoksa operatör paketi indirir |
| Operatör kaybolsa da pasaportun yaşaması | Karşılanıyor | Paket öz-yeterli — dış referans gerektirmez |
| Saklama süresi beyanı | Karşılanıyor | 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) |
| Yedeğin düzenli/otomatik alınması | Karşılanıyor | 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 — Yaşam döngüsü verisi ve API
| Madde konusu | Durum | Karşılık |
|---|---|---|
| Olay modeli (EPCIS 2.0) | Karşılanıyor | EpcisManager.cs (Bella.Business/Concrete/EpcisManager.cs), bizStep/disposition |
| Birim düzeyi public olay geçmişi | Karşılanıyor | GET api/public/epcis/01/{gtin}/21/{serial} → ham application/ld+json |
| Pasaport versiyonlama | Karşılanıyor | DppPassport.Version, versiyon snapshot'ları ve fark görünümü |
| Aşağı akış aktörlerinin (onarımcı, geri dönüşümcü) olay yazması | Karşılanıyor | 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)) |
| Sahiplik/el değiştirme geçmişi | Karşılanıyor | 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 — Semantik model
| Madde konusu | Durum | Karşılık |
|---|---|---|
| JSON-LD çıktısı | Karşılanıyor | DppSemanticBuilder.cs (Bella.Business/Helpers/DppSemanticBuilder.cs) BuildJsonLd |
| Ortak sözcük dağarcığı kullanımı | Karşılanıyor | schema.org terimleri doğrudan kullanılıyor (tekrarlanmıyor) |
| Kendi terimlerinin çözülebilir ad alanında tanımlı olması | Karşılanıyor | 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 tabanlı @id | Karşılanıyor | @id = {base}/01/{gtin}, GTIN yoksa urn:bella:dpp:{identifier} |
| Resmî AB DPP Core Ontology eşlemesi | Yok — yapılamaz | 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 şekilleri (doğrulama şeması) | Kısmen | 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ı). |
Taslak metinler — uygunluk iddiası edilmez
Aşağıdaki metinler henüz taslak (prEN) aşamasındadır. Yayımlanmamış bir standarda uygunluk beyan edilemez; uygulamamız taslağa göre kurulmuştur, iddia taşımaz.
- prEN 18239 — Katmanlı erişim
- prEN 18246 — Veri bütünlüğü
Kaynak belge: depo kökündeki UYUMLULUK-HARITASI.md