Skip to content

Schema house style

Derived from this.i @p6mwk4. Applies to Bakobo-authored domain fields — the members of the a / e / r blocks beyond the ACDC envelope. Existing schemas adopt it when they next get a version bump; it is not a repo-wide rename.

Rules

  1. camelCase. The JSON default, and what GCD already uses for the relation facet (relationType, liableParty, presentsAs, exerciseMode).
  2. Expressive, but an obvious abbreviation beats the full word. "Obvious" = understood with no legend and no collision with a well-known other meaning.
  3. ✅ phys, virt, val, proto, geo — obvious.
  4. ❌ dom for domain — collides with the HTML DOM → use domain.
  5. Abbreviate freely; amputate never. An abbreviation shortens a word (information→info); it must not drop a word. liableParty stays — party alone loses the load-bearing "liable".
  6. Array-valued fields are plural. Pluralize the English word, then abbreviate: goals, protos, proofs, physGeos, virtGeos. An abbreviation whose plural is not itself clearly plural is rejected: jurisdiction stays jurisdictions, never juris (a bare juris does not read as a plural). Format-label plurals are the accepted exception — icals (iCalendar fragments) keeps the label rather than spelling it out.
  7. Never restyle the ACDC envelope. v / d / u / i / ri / s / a / e / r and block ds are fixed by ACDC. Their terseness earns its keep (universal, and in the compact form they are all that ships). Domain fields appear only in the expanded form, so their verbosity costs nothing on the wire.

Canonical abbreviations

Add to this list rather than inventing ad hoc. (Future schematools check_naming will read it.)

full abbrev
geographic / geography geo
physical phys
virtual virt
protocol proto
iCalendar (RFC 5545) fragment ical
value val
maximum / minimum max / min
datetime dt
identifier id
information info
reference ref
message msg
address addr

Worked example — GCD constraints (v1 c_* → v2)

In v2.0 these all live inside the constraints container (this.i @h4tqm7, @k7wd3m); the c_ prefix is dropped.

v1 v2 (a.constraints.*) array?
c_goal goals ✓
(new) acts ✓
(new) domains ✓
c_jur jurisdictions ✓
c_pgeo physGeos ✓
c_rgeo virtGeos ✓
c_ical icals ✓
c_upto monetaryLimit —
c_proto protos ✓
c_prove proofs ✓
c_after / c_before validFrom / validUntil —
c_human humanReview —

New v2.0 fields with no v1 c_* ancestor: the a-block siblings terminatingEvents and disclosables (@v3rk5p); the facet members role, relationType, liableParty, presentsAs, exerciseMode (@k7wd3m, @x4nq6t); and the r-block duties array (@m6tq4w).