Bagian aktif Presentation
26. Metadata
Status dokumen: Normative
Metadata menyediakan informasi tambahan yang tidak memengaruhi geometri dan tidak ikut dalam dependency graph resolver. Metadata digunakan oleh renderer, eksporter, atau tools eksternal.
Metadata bersifat non-authoritative terhadap bentuk geometri: jika metadata dihapus, geometri yang dihasilkan harus tetap identik.
26.1 Object Metadata
Setiap object dapat memiliki blok meta:
objects:
panel:
type: rect
size: [200mm, 100mm]
meta:
: final
: true
: "#333333"
: none
: 1
: P-001
: Main Bracket
: aluminum
: 2mm
: laser-cut
Rendering Metadata Fields
| Field | Tipe | Keterangan |
|---|---|---|
role | string | Drawing role (lihat 24. Drawing Roles) |
intent | string | Makna teknis/konstruktif ringan yang tidak mengubah geometri |
visible | boolean | Jika false, object tidak dirender |
stroke | string | Warna garis (CSS color) |
fill | string | Warna isi (CSS color atau none) |
strokeWidth | number | Tebal garis |
opacity | number | Transparansi 0.0–1.0 |
label | string | Label tampilan untuk debug |
Default Stroke Visibility
Jika object terlihat dan secara konseptual memiliki stroke, tetapi author tidak memberi strokeWidth eksplisit, renderer tetap harus memilih perilaku default yang menjaga garis tetap terlihat pada output umum.
Semantics normatif:
- tujuan default ini adalah menjaga object garis tetap terbaca walau scene bersatuan besar sedang di-fit, di-zoom-out, atau diproyeksikan ke viewport yang lebih kecil
- renderer boleh memakai teknik implementation-specific untuk mencapai tujuan tersebut, misalnya hairline, minimum visible stroke, atau mekanisme lain yang ekuivalen
- pada renderer SVG, teknik seperti non-scaling stroke adalah cara implementasi yang sah, tetapi bukan satu-satunya bentuk yang diwajibkan bahasa
- jika
strokeWidtheksplisit diberikan oleh author, nilai eksplisit itu menang atas kebijakan default visible stroke renderer - aturan ini berlaku untuk menjaga keterbacaan output presentasional, bukan untuk mengubah geometri
Construction Intent
meta.intent adalah surface semantik ringan untuk menyatakan fungsi teknis object tanpa mengubah geometri maupun memaksa perilaku renderer tertentu.
Vocabulary inti aktif v0.5:
datum
centerline
baseline
clearance-hole
cut-boundary
Semantics normatif:
intenttidak mengubah geometriintenttidak otomatis mengubah renderer, kecuali renderer memang memilih memanfaatkannyaintentmenjawab makna teknis object, sedangkanrolemenjawab perilaku presentasi/filtering- satu object sebaiknya membawa satu
intentutama, bukan daftar intent longgar - jika implementasi menerima nilai di luar vocabulary inti, nilai tersebut boleh diperlakukan sebagai metadata bebas, tetapi bukan bagian vocabulary normatif core
Contoh:
objects:
datumX:
type: line
from: A
to: B
meta:
: centerline
: datum
Manufacturing Metadata Fields
| Field | Keterangan |
|---|---|
material | Bahan, misal "aluminum", "steel" |
thickness | Ketebalan material |
process | Proses manufaktur, misal "laser-cut", "3d-print" |
partNo | Nomor part |
description | Deskripsi singkat |
26.2 Document Metadata
Metadata tingkat dokumen ditulis di root:
meta:
: Rear Panel
: Agus
: "1.0"
: "2026-06-05"
Catatan penting:
meta.versiondi sini adalah versi dokumen, revisi artefak, atau versi bisnis dokumenmeta.versionbukan versi DSL- versi DSL berada di
<root>.versiondan bersifat terpisah
Contoh pembedaan:
version: "0.4"
meta:
: Rear Panel
: "1.2"
Pada contoh di atas:
<root>.version = "0.4"berarti dokumen itu secara eksplisit meminta kontrak lama RelGeo DSL v0.4<root>.meta.version = "1.2"berarti revisi atau versi dokumen itu sendiri
26.3 Reusable Metadata Presets
Jika ingin menulis banyak meta object secara reusable, gunakan top-level metaPresets.
metaPresets adalah preset reusable untuk bundle meta object.
metaPresets:
:
stroke: "#999999"
strokeWidth: 1
dash: "4 2"
objects:
centerLine:
type: line
from: A
to: B
metaPreset: guideLine
Semantics:
metaPresetadalah shorthand untuk merge kemetametaPresetstidak mengubah geometrimeta.inherit, jika dipakai, di-resolve setelahmetaPreset- field
metayang ditulis langsung pada object menang di atas field darimetaPresetdan hasilmeta.inherit styles/styleboleh tetap diterima sebagai alias backward compatibility, tetapi nama utama kontrak aktif adalahmetaPresets/metaPreset
Urutan merge normatif:
metaPresets[metaPresetName] -> meta.inherit sources -> local meta fields
Contoh override:
constants:
inspectionOverlay:
dash: "4 2"
opacity: 0.7
objects:
centerLine:
type: line
from: A
to: B
metaPreset: guideLine
meta:
: inspectionOverlay
: 2
Hasil konseptual:
meta:
: "#999999"
: 2
: "4 2"
: 0.7
26.4 Metadata Inherit
meta boleh memakai inherit sebagai mekanisme reuse map metadata yang deterministik.
Contoh:
constants:
baseCutMeta:
stroke: "#0f172a"
strokeWidth: 1.5
inspectionOverlay:
dash: "4 2"
opacity: 0.7
objects:
panelCut:
type: path
meta:
:
- baseCutMeta
- inspectionOverlay
: laser-cut
Aturan minimum:
meta.inheritmenerima satu reference atau array reference berurutan- setiap source harus menghasilkan structured metadata map yang legal
meta.inheritselalu memakaishallow merge- jika berbentuk array, urutan item array adalah urutan merge normatif
- field lokal pada
metaselalu menang sebagai lapisan terakhir metaPreset,meta.inherit, danmetalokal tidak boleh memengaruhi geometri atau kontrak parameter
Catatan tooling:
- tooling boleh menampilkan asal field metadata, misalnya dari
metaPreset, dariinherit, atau dari local override - label seperti
inspectableboleh hidup sebagai kontrak tooling ringan, tetapi tidak mengubah aturan referensi bahasa
26.5 Semantics
- Metadata tidak boleh memengaruhi geometri, dependency graph, atau hasil resolver
- Metadata dapat diwariskan dari group/clone ke children (rendering merge)
- Field yang tidak dikenali oleh renderer diabaikan tanpa error
- Resolver tidak boleh menggunakan
metauntuk menghitung posisi, ukuran, atau relasi - Renderer boleh menafsirkan metadata secara berbeda selama tidak mengubah kontrak geometri
- Renderer harus menjaga keterbacaan default stroke untuk object yang terlihat walau
strokeWidthtidak ditulis, selama tidak bertentangan dengan nilai eksplisit author - Metadata harus bersifat opsional dan dapat diabaikan tanpa membuat geometri menjadi invalid