Document identity
§ 1One local:code per government, holding one or more instruments. The jurisdiction says what kind of government it is, which decides what its legislature is called and what instruments are available to it; the profile declares the house style so nothing downstream has to guess it.
local:code
The root element. One per government.
- Appears in
(document root)- Contains
local:jurisdictionlocal:profilereferenceslocal:entitieslocal:instrument- How many
- Exactly one, as the document element.
- On downgrade to AKN
- Becomes akomaNtoso holding one act per instrument.
Attributes
None. This element carries its meaning by position and by what it contains.
<local:code xmlns:local="https://code.communityscale.io/ns/local/1.0"
xmlns="http://docs.oasis-open.org/legaldocml/ns/akn/3.0">
local:jurisdiction
The government this code belongs to.
- Appears in
local:code- Contains
local:placelocal:enablingFramework- How many
- One per code.
- On downgrade to AKN
- Kept in proprietary; AKN has no element for it.
Attributes
None. This element carries its meaning by position and by what it contains.
local:place
The government itself. The text content is the name as it is written; the attributes are what a machine needs.
- Appears in
local:jurisdiction- Text content
- The place name, e.g. Sherborn.
- How many
- One per jurisdiction.
- On downgrade to AKN
- Kept in proprietary.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@type |
required | city town township borough village county authority tribal and 4 more |
The kind of government, which decides what its legislature is called, which instrument types are available to it, and what state framework it acts under. A county is not a large city, and this is what lets one model carry both. |
@state |
required | Two-letter USPS code |
The state whose enabling framework the government acts under. |
@gnis |
optional | GNIS feature ID |
The federal identifier for the place, so the government resolves to something outside this document. |
local:enablingFramework
The state law under which this government legislates at all.
- Appears in
local:jurisdiction- Text content
- A citation, e.g. /us-ma/act/mgl.
- How many
- One per jurisdiction.
- On downgrade to AKN
- Kept in proprietary.
Attributes
None. This element carries its meaning by position and by what it contains.
local:profile
The house style, declared rather than detected. The converter and the renderer both read this, which is why a Title/Chapter/Article/Division code and a Part/Chapter/Article code round-trip through one code path.
- Appears in
local:codelocal:instrument- How many
- One per code; may be overridden per instrument.
- On downgrade to AKN
- Kept in proprietary.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@citation |
required | chapter-section dotted-decimal chapter-article-section dashed-triple flat alpha-chapter-section |
The shape of a section number, which is also the shape of the platform's URLs and the rule the eId scheme is derived from. |
@enumeration |
required | Ladder name from profiles.yaml |
The marker shapes the code descends through. 34 distinct ladders are in use across the corpus and the deepest runs nine rungs, so this cannot be a constant in a parser. |
@containers |
required | Hyphen-joined container ladder, e.g. title-chapter-article-division |
The containment vocabulary this government uses, in order. Chapter and article are near-universal, but 48% of codes use Part and 44% use Title. |
Instruments
§ 2An instrument is a body of text adopted as a whole by one body. 19% of codes in the corpus contain at least one chapter a legislature never voted on, and the difference decides what it takes to change a provision, so it is declared rather than inferred.
local:instrument
A body of text adopted as a whole by one body. In a published code this is usually a chapter.
- Appears in
local:code- Contains
local:adoptionmetanumheadinglocal:generalReferencesbody- How many
- One or more per code.
- On downgrade to AKN
- Becomes an AKN act carrying @name; FRBRsubtype already holds the same value.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@type |
required | ordinance bylaw regulation charter specialAct acceptance franchise policy and 1 more |
What kind of instrument this is, which is what decides who can change it. This is the single most consequential fact about any provision in a municipal code, and the incumbent format records it only as a sentence of English. |
@eId |
required | eId |
The instrument's identifier, e.g. chp_240. |
local:adoption
Who adopted this instrument, under what authority, and by what procedure.
- Appears in
local:instrument- Contains
local:bodylocal:authoritylocal:procedurelocal:date- How many
- One per instrument.
- On downgrade to AKN
- The date becomes a lifecycle eventRef and the body is already FRBRauthor; the authority and procedure have no AKN home and are kept in proprietary.
Attributes
None. This element carries its meaning by position and by what it contains.
local:body
The body that adopted it.
- Appears in
local:adoption- Text content
- The body's name as published, e.g. Town Meeting.
- How many
- One per adoption.
- On downgrade to AKN
- Already carried as FRBRauthor.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@role |
required | legislative executive administrative judicial |
Declared, never inferred. Classifying adopting bodies by name leaves 5,070 of the corpus's 20,308 adoption statements unresolved, because a Board of Selectmen legislates in some towns and administers in others. Curated per government from that government's charter. |
@refersTo |
required | Reference to a declared TLCOrganization |
The organization entity, so the body survives being renamed in prose. |
local:procedure
What it takes to change this instrument. The platform renders this as "what it takes to change this", and the comment workflow reads it to name the meeting a comment should go to.
- Appears in
local:adoption- How many
- One per adoption.
- On downgrade to AKN
- No AKN element exists; kept in proprietary and reported as lost.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@amendedBy |
required | town-meeting-article council-vote board-vote ballot charter-commissionrecommended; the list is open |
The action that amends it. |
@hearing |
optional | required none |
Whether a public hearing is a precondition. |
@majority |
optional | simple two-thirds three-quarters |
The margin the adopting body needs. |
@review |
optional | ma-attorney-general nonerecommended; the list is open |
A state-level review that must follow adoption before the change takes effect. |
local:date
A dated event in the instrument's life.
- Appears in
local:adoption- How many
- One or more per adoption.
- On downgrade to AKN
- Becomes a lifecycle eventRef.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@date |
required | ISO 8601 date |
The date the event happened. |
@type |
required | adoption effective codification repealrecommended; the list is open |
What kind of event it is. |
Typed notes
§ 5Akoma Ntoso has one note. CS-Local types notes as USLM does, because the corpus carries this material in 90% of codes and 41,320 paragraphs, and an editor's note and a source credit are not the same kind of statement.
local:editorialNote
The codifier speaking: renumbering, supersession, moves. Present in 90% of codes and 41,320 paragraphs, and load-bearing rather than decorative.
- Appears in
local:instrumentany hierarchical element- Contains
p- How many
- Any number.
- On downgrade to AKN
- Becomes note[refersTo=#noteclass_editorial].
Attributes
None. This element carries its meaning by position and by what it contains.
local:sourceCredit
The provenance note as published, verbatim, beside the parsed events. Seven written forms exist in the corpus and the parse is lossy, so the string is authoritative. Also used at schedule level, where it records the amendment that produced the state the schedule is in.
- Appears in
local:instrumentany hierarchical elementlocal:schedule- Contains
local:asPublishedlocal:event- How many
- Any number.
- On downgrade to AKN
- Becomes note[refersTo=#noteclass_sourceCredit] carrying the published string; the parsed events are reported as lost.
Attributes
None. This element carries its meaning by position and by what it contains.
<local:sourceCredit>
<local:asPublished>[Amended 4-25-2023 ATM by Art. 23]</local:asPublished>
<local:event date="2023-04-25" type="amendment" by="#org_town_meeting"
instrument="Art. 23"/>
</local:sourceCredit>
local:asPublished
The provenance note exactly as the code prints it. Authoritative over the parse.
- Appears in
local:sourceCredit- Text content
- The note, e.g. [Amended 4-25-2023 ATM by Art. 23].
- How many
- One per source credit.
- On downgrade to AKN
- Becomes the note's paragraph text.
Attributes
None. This element carries its meaning by position and by what it contains.
local:event
One parsed event from the published string.
- Appears in
local:sourceCredit- How many
- Any number.
- On downgrade to AKN
- Reported as lost; AKN keeps only the string.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@date |
required | ISO 8601 date |
When it happened. |
@type |
required | adoption amendment repeal insertion substitution renumberingrecommended; the list is open |
What was done. |
@by |
optional | Reference to a declared TLCOrganization |
The body that did it. |
@instrument |
optional | Free text |
The vehicle, e.g. Art. 23 or Ord. No. 314. |
@precision |
optional | day month year |
How exact the published date is. Many notes give a year alone, and recording that is not the same as asserting January 1. |
local:generalReferences
The cross-reference block at the head of a chapter, present in 45% of codes. The apparatus a reader uses to find related material.
- Appears in
local:instrument- Contains
p- How many
- At most one per instrument.
- On downgrade to AKN
- Becomes note[refersTo=#noteclass_generalReferences].
Attributes
None. This element carries its meaning by position and by what it contains.
local:disposition
The ordinance-to-location audit trail, present in 66% of codes: every ordinance ever adopted mapped to where it landed or why it was omitted. The only audit trail a code has.
- Appears in
local:instrument- Contains
ptable- How many
- Any number.
- On downgrade to AKN
- Becomes note[refersTo=#noteclass_disposition].
Attributes
None. This element carries its meaning by position and by what it contains.
local:derivation
Current numbering mapped to the prior codification, present in 27% of codes. What lets a citation from before the last recodification still resolve.
- Appears in
local:instrument- Contains
ptable- How many
- Any number.
- On downgrade to AKN
- Becomes note[refersTo=#noteclass_derivation].
Attributes
None. This element carries its meaning by position and by what it contains.
local:effectiveNote
An effective date that differs from the adoption date, after the CFR's EFFDNOT.
- Appears in
local:instrumentany hierarchical element- Contains
p- How many
- Any number.
- On downgrade to AKN
- Becomes note[refersTo=#noteclass_effectiveNote].
Attributes
None. This element carries its meaning by position and by what it contains.
The entity registry
§ 9.1The join between a schedule column header, the name a code uses in prose, and the key a map layer draws on. Declared once, for entities of any kind: zoning districts are the first kind, not the only one, since a stormwater chapter keys its schedules on watersheds and needs the same declaration rather than a parallel one.
local:entities
A registry of entities of one declared kind. Zoning districts are the first kind, not the only one: the same declaration serves a stormwater chapter's watersheds or a licensing chapter's premises.
- Appears in
local:codelocal:instrument- Contains
local:entity- How many
- Any number, one per kind.
- On downgrade to AKN
- Each entity becomes a TLCConcept; the registry element itself disappears.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@kind |
required | district watershed premises way overlay zonerecommended; the list is open |
What kind of thing this registry declares. Becomes the ontology path of the TLCConcept each entity downgrades to. |
@established |
optional | Reference to a provision |
The provision that creates these entities, if one provision creates them all. May be overridden per entity. |
local:entity
One identified thing that provisions refer to, schedules key on, and a map can draw.
- Appears in
local:entities- How many
- One or more per registry.
- On downgrade to AKN
- Becomes TLCConcept keeping eId and showAs. The code, class, map key, governing provisions and overlay relation have no AKN home and are reported as lost, which is most of why the registry exists.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@eId |
required | eId |
The identifier every reference resolves to, e.g. dist_ra. |
@showAs |
required | Free text |
The full name as the code writes it, e.g. Residence District A. |
@code |
required | Free text |
The abbreviation the code itself uses in schedule headers and prose, e.g. RA. District codes come in a handful of shapes across the corpus: bare letters, letter and digit, letter-dash-digit, with a thin tail of compounds. |
@map |
optional | Free text |
The value of the geometry layer's attribute, present only when a layer exists. It differs from @code whenever the map speaks its own dialect. Its absence is information: a district established by the code with no polygon is stated, not silent. |
@class |
optional | residential business commercial industrial mixed overlay special |
What kind of district or entity this is. |
@established |
optional | Reference to a provision |
The provision that creates this entity, overriding the registry's. |
@governedBy |
optional | References to provisions whitespace-separated list |
The provisions that regulate this entity, which are different provisions from the one that establishes it. For an overlay this is the whole answer: one line creates the Flood Plain District and another section is what it actually requires. |
@relation |
required when class="overlay" | supplements restricts replaces |
What this overlay does to the districts beneath it. A parcel is in an overlay and its base district at once, so resolving what may be built there means resolving the base district and then applying every overlay in its declared relation. |
@over |
optional | References to declared entities whitespace-separated list |
The districts this overlay sits on. Absent, the overlay applies wherever it is mapped. |
Normative schedules
§ 9.2 – 9.5A table that lays text out stays an Akoma Ntoso table and nothing more is claimed about it. A table that states rules additionally gets a local:schedule, whose axes bind to declared entities. Only 25% of zoning instruments publish these matrices inline; 22% publish them as an attachment the code merely points at and 17% as per-district prose, so a schedule lives beside its source whatever the source is, and declares where it came from.
local:schedule
A table that states rules, as structure. Sits beside the published expression rather than replacing it: where an inline table exists it remains untouched, because that is what the law is.
- Appears in
the provision that publishes the rule- Contains
local:sourceCreditlocal:provenancelocal:legendlocal:dimensionslocal:columnslocal:grouplocal:rowlocal:footnote- How many
- Any number per provision.
- On downgrade to AKN
- Dropped and reported with its cell count. The AKN table, where one exists, remains, so no meaning changes for an AKN consumer; the structured rules simply have no carrier.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@eId |
required | eId |
The schedule's identifier, e.g. schd_240-3.2. Footnote eIds derive from it. |
@type |
required | use dimensional parking sign landscaping other |
What kind of rules the schedule states. Typed rather than named, because the same table is called Use Regulations in the East and Use Table or Use Matrix in the West. |
@source |
required | Reference to a provision |
The provision that publishes these rules. When that provision holds an inline table the schedule is a parse of it; otherwise provenance is required. |
local:provenance
Where the rules came from, when they did not come from an inline table. Required whenever @source does not point at a provision containing one.
- Appears in
local:schedule- Contains
local:transcribedFromlocal:curatedFrom- How many
- At most one per schedule.
- On downgrade to AKN
- Dropped with the schedule.
Attributes
None. This element carries its meaning by position and by what it contains.
local:transcribedFrom
The attachment-only mode, 22% of zoning instruments: the rules exist as a PDF the code points at, so every number in them is otherwise unreachable to search, to the map, and to anyone reading the code online. A transcription says so, and says what it was checked against.
- Appears in
local:provenance- How many
- Any number.
- On downgrade to AKN
- Dropped with the schedule.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@href |
required | URI |
The attachment as published. |
@supplement |
optional | Free text |
The supplement the transcription was taken from, e.g. Supp 3, Aug 2025. |
@verified |
optional | ISO 8601 date |
When a person last checked the transcription against the source. |
local:curatedFrom
The prose mode, 17% of zoning instruments: use rules written as per-district sections of running text with no matrix anywhere. The schedule is an index over the prose, and each row's @source names the provision it was read from, so every cell is traceable to the sentence that justifies it.
- Appears in
local:provenance- How many
- Any number.
- On downgrade to AKN
- Dropped with the schedule.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@href |
optional | References to provisions whitespace-separated list |
The provisions the schedule was built from, where a single list covers it. |
local:legend
What the symbols in this schedule's cells mean. Declared per schedule and never assumed: 331 codes with a use matrix run 200 distinct symbol systems, the same glyph means "allowed", "accessory" or "agriculture permit" in different codes' own legends, and only 17% publish a legend a machine can read.
- Appears in
local:schedule- Contains
local:symbol- How many
- At most one per schedule; required where cells carry symbols.
- On downgrade to AKN
- Dropped with the schedule.
Attributes
None. This element carries its meaning by position and by what it contains.
local:symbol
One symbol and what it means here. The code is an opaque string whose meaning is given entirely by its outcome.
- Appears in
local:legend- Text content
- The meaning as the code publishes it, e.g. Allowable on special permit.
- How many
- One or more per legend.
- On downgrade to AKN
- Dropped with the schedule.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@code |
required | Free text |
The symbol as printed, e.g. P, SP, CUP, or an em dash. Carries no meaning of its own. |
@outcome |
required | permitted accessory approval prohibited not-applicable see |
What the symbol does to the use in that district. This is what makes a cell computable across jurisdictions that share no vocabulary. |
@approver |
required when outcome="approval" | Reference to a declared TLCOrganization |
The body that grants the approval, which connects the schedule to the instrument and procedure model: the platform can answer who says yes and by what process. |
@procedure |
optional | special-permit conditional-use site-plan variance |
The instrument the approval is granted by. |
local:dimensions
The columns of a dimensional schedule, declared before the rows use them.
- Appears in
local:schedule- Contains
local:dimension- How many
- At most one per schedule; required for type="dimensional".
- On downgrade to AKN
- Dropped with the schedule.
Attributes
None. This element carries its meaning by position and by what it contains.
local:dimension
One measurable requirement. About twenty concepts cover the dimension vocabulary of every inline dimensional matrix in the corpus, so the concept is normalized while the label stays exactly as published.
- Appears in
local:dimensions- Text content
- The label as printed, e.g. Minimum Lot Size.
- How many
- One or more.
- On downgrade to AKN
- Dropped with the schedule.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@key |
required | Token |
What cells in this schedule use to refer to this dimension. |
@concept |
optional | lot-area lot-width lot-depth frontage setback-front setback-side setback-rear height and 6 more |
The normalized concept, which is what makes one town's schedule comparable with another's. |
@bound |
optional | min max |
Whether the value is a floor or a ceiling. Carried separately from the label because "Minimum Lot Size" states it in prose and a machine should not parse prose. |
@unit |
optional | acre sqft ft story percent ratio du-per-acre |
The unit the values are in. |
@footnote |
optional | Markers declared in this schedule whitespace-separated list |
A note that applies to every cell in this column. Attaching it here rather than to each cell is what keeps a note that qualifies a whole column to one declaration. |
local:columns
The columns of a schedule whose axis is neither districts nor dimensions. Parking tables appear in 825 zoning instruments, more than twice as many as carry a use matrix, and sign and landscaping tables behind them; these are usually use by requirement.
- Appears in
local:schedule- Contains
local:column- How many
- At most one per schedule.
- On downgrade to AKN
- Dropped with the schedule.
Attributes
None. This element carries its meaning by position and by what it contains.
local:column
One generic column.
- Appears in
local:columns- How many
- One or more.
- On downgrade to AKN
- Dropped with the schedule.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@key |
required | Token |
What cells use to refer to this column. |
@label |
required | Free text |
The column heading as printed. |
@footnote |
optional | Markers declared in this schedule whitespace-separated list |
A note applying to the whole column. |
local:group
A band of rows under a heading. 73% of codes with a use matrix group their rows this way, and readers navigate by the bands, so the grouping is structure rather than styling.
- Appears in
local:schedule- Contains
local:row- How many
- Any number.
- On downgrade to AKN
- Dropped with the schedule.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@heading |
required | Free text |
The band heading as printed, e.g. Residential uses. |
@footnote |
optional | Markers declared in this schedule whitespace-separated list |
A note applying to every cell in the band. |
local:row
One row of the matrix: a use in a use schedule, a district in a dimensional schedule, a subject in a generic one.
- Appears in
local:schedulelocal:group- Contains
local:cell- How many
- One or more.
- On downgrade to AKN
- Dropped with the schedule.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@eId |
optional | eId |
The row's identifier, which is what a comment addressed to one line of a schedule anchors to. |
@num |
optional | Free text |
The row number as printed, e.g. 1 or 2A. Readers cite these, so they are kept as published rather than renumbered. |
@subject |
required when the row is not keyed by an entity | Free text |
What the row regulates, in the schedule's own words. |
@refersTo |
optional | Reference to a defined term |
The term this row regulates. Bound by identity because the wordings routinely differ: a schedule says "Single-family home" where the glossary says DWELLING, SINGLE-FAMILY, and matching on text fails silently. Optional, because plenty of rows name things a code never defines, though the share that bind is a useful measure of how well a schedule and its glossary agree. |
@entity |
required when the schedule is keyed by entity on the row axis | References to declared entities whitespace-separated list |
The entity this row states requirements for, in a dimensional schedule. |
@source |
optional | Reference to a provision |
The provision this row was read from, which is what makes the prose mode traceable. |
@footnote |
optional | Markers declared in this schedule whitespace-separated list |
A note applying to every cell in the row. |
local:cell
One cell. Uniform everywhere in the schedule vocabulary so a renderer never branches on cell shape. An absent cell means the source published nothing, which is distinct from a cell whose outcome is not-applicable, and both are preserved.
- Appears in
local:row- How many
- Any number per row.
- On downgrade to AKN
- Dropped with the schedule.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@entity |
required when the schedule is keyed by entity on the column axis | References to declared entities whitespace-separated list |
The entity this cell states a rule for. A list, because a source cell merged across several columns is common and one published cell should stay one cell rather than being duplicated per district. |
@dim |
required when type="dimensional" | A key declared in this schedule's dimensions |
Which dimension this cell gives a value for. |
@col |
required when the schedule declares generic columns | A key declared in this schedule's columns |
Which column this cell belongs to. |
@symbol |
optional | A code declared in this schedule's legend |
The permission symbol, in a use schedule. |
@value |
optional | Number |
The numeric value, in a dimensional schedule. |
@text |
optional | Free text |
The published words where the cell is not a number, e.g. "Not applicable" or an em dash. Carried rather than normalized away, because the words are what was adopted. |
@footnote |
optional | Markers declared in this schedule whitespace-separated list |
Notes qualifying this cell. A footnoted symbol is not the bare symbol, so a consumer resolving the outcome has to apply these. |
@see |
optional | Reference to a provision |
The provision that regulates this combination further. 29% of codes with a use matrix carry a per-use reference column. |
local:footnote
A note that qualifies the cells marking it. 45% of codes with a use matrix footnote individual cells, and those notes are frequently the rule rather than a gloss, so the marker is something a consumer must resolve rather than decoration.
- Appears in
local:schedule- Text content
- The note as published.
- How many
- Any number per schedule.
- On downgrade to AKN
- Dropped with the schedule.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@marker |
required | Free text |
The marker as printed, e.g. *, **, † or 3. Scoped to this schedule and unique within it. |
@effect |
required | clarifies conditions varies |
What this note does to the cells it marks. A cell's outcome is provisional until its footnotes are applied, and a consumer that meets an effect it does not recognize treats it as conditions, so an under-curated footnote degrades to a warning rather than a false yes. |
@eId |
optional | eId |
Document-unique identity, derived from the schedule and a slug of the marker, e.g. schd_240-3.2__fn_ast. Derived from the marker rather than from position so that inserting a footnote does not renumber its neighbours, which matters because comments anchor to eIds. |
@see |
optional | Reference to a provision |
Where the circumstance this note states is written out. |
Scope
A marker means nothing outside its own schedule. Resolution is a lookup in the declaring schedule and nowhere else, because codes reuse markers across their tables as a matter of course: of the codes carrying two or more footnoted matrices, 93% use the same marker on more than one of them, and one California code puts "b" on 91 different tables. Markers must be unique within one schedule, which is a validation error rather than a resolution rule. Document-unique identity lives in the eId instead.
Attributes on inherited elements
§ 6Two attributes CS-Local adds to Akoma Ntoso's own hierarchical elements. 73% of codes publish reserved placeholders and every code publishes repealed provisions, and both are published rather than dropped: a reserved number asserts that nothing is missing, and a repealed section is where a reader following an old citation lands.
@local:inForce
attributeWhether the provision is currently operative. Follows USLM's @inEffect rather than AKN's @status, which conflates the dispositions below. This is the boolean the renderer keys on.
- Appears in
any Akoma Ntoso hierarchical element- On downgrade to AKN
- A false value becomes @status="removed".
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
(value) |
optional | true false |
Defaults to true when absent. |
@local:disposition
attributeWhy a provision is not in force, or that it is. AKN's @status cannot express the difference between a number held in reserve and a section repealed and pointed elsewhere.
- Appears in
any Akoma Ntoso hierarchical element- On downgrade to AKN
- No AKN attribute carries it and a proprietary attribute is not possible on the same element, so it is reported as lost.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
(value) |
optional | current reserved deleted repealed superseded renumbered |
Defaults to current when absent. |
@local:coversFrom
attributeThe first number a provision stands for, when one published heading stands for a block of them. One publisher reserves numbers one at a time; the other publishes "Secs. 94-1—94-30. Reserved." as a single heading, and does it 7,884 times across 152,931 section numbers in 70% of its codes.
- Appears in
any Akoma Ntoso hierarchical element- On downgrade to AKN
- Reported as lost, along with the disposition it qualifies.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
(value) |
required when the provision stands for more than one number | A citation in the document's declared grammar |
Written as the code writes it. Declared together with coversTo, and only on a provision that also declares a disposition, since a span with no disposition asserts nothing. |
@local:coversTo
attributeThe last number a provision stands for. A citation to any number within the span resolves to this provision, which is the whole point: it is how a reader chasing a number is told it is deliberately empty rather than missing.
- Appears in
any Akoma Ntoso hierarchical element- On downgrade to AKN
- Reported as lost.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
(value) |
required when coversFrom is present | A citation in the document's declared grammar |
The end of the span, inclusive. |
<section eId="sec_94-1_thru_94-30" local:inForce="false"
local:disposition="reserved"
local:coversFrom="94-1" local:coversTo="94-30">
<num>94-1—94-30</num>
<heading>Reserved</heading>
</section>
@local:depth
attributeHow far below its section a rung sits, written only on the rungs Akoma Ntoso has no element for. AKN offers five below section; 17% of codes in the second corpus descend to a sixth or seventh, and repeating the last element would make two different depths into one.
- Appears in
hcontainer[@name="level"]- On downgrade to AKN
- Reported as lost. The hcontainer itself survives, so the nesting a reader sees is unchanged.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
(value) |
required | Integer greater than five |
Counted from the section, so the first rung below one is 1 and the overflow rungs are 6 and beyond. |
<hcontainer name="level" local:depth="6" eId="…__indent_a__level_i">
<num>i.</num>
<content><p>…</p></content>
</hcontainer>
Provenance
§ 10Source identifiers only, inside Akoma Ntoso's proprietary. Never drafting comments, reviewer names, or internal notes: the working document for Sherborn alone carries 28 of them, and the build fails if one appears in rendered output.
local:sourceSystem
The identifiers the source of a capture uses for it, so a later capture of the same instrument can be matched against this one.
- Appears in
proprietary- How many
- At most one per instrument.
- On downgrade to AKN
- Kept inside proprietary, which AKN already provides.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@customer |
optional | Free text |
The source's account identifier for this government, e.g. SH4020. |
@id |
optional | Free text |
The source's identifier for this instrument. |
@codeDate |
optional | ISO 8601 date |
The date the published code was current to. |
@captured |
optional | ISO 8601 date |
When we took the copy, which is not the same as the code date and must not be conflated with it. |
local:attachment
A file the published code refers to but does not contain, most often the schedule or the zoning map.
- Appears in
proprietary- How many
- Any number.
- On downgrade to AKN
- Kept inside proprietary.
Attributes
| Attribute | Requirement | Values | Meaning |
|---|---|---|---|
@href |
required | URI |
The attachment as published. |
Vocabularies
Closed vocabularies are validated: a value outside the list makes the document invalid. Open ones are recommendations, and a value outside them is legal but undeclared, which a consumer may treat as unknown rather than as an error.
Kinds of government
A county is not a large city: its legislature may be a Board of Supervisors, a County Council or a Board of Commissioners, it may have no charter, and in many states it can only legislate on subjects the state has delegated. The type is what lets one document model carry both without either being a special case.
city |
A municipal corporation, and the most common form |
town |
A municipality whose legislature, in New England, is usually a Town Meeting |
township |
A subdivision of a county, with powers that vary widely by state |
borough |
The municipal form used in Pennsylvania, New Jersey, Connecticut and Alaska |
village |
An incorporated place, typically smaller than a city |
county |
A subdivision of a state, often able to legislate only on delegated subjects |
authority |
A single-purpose body governed by its own board |
tribal |
A tribal government publishing its own code |
municipality |
Used where the state's own term for the form is simply municipality |
district |
A special-purpose district with rule-making power of its own |
metropolitan |
A regional or consolidated city-county government |
other |
A form none of the above describes |
Kinds of instrument
Required and closed. What distinguishes these is who can change them, which is the question a reader of any provision most needs answered.
ordinance |
Legislation of a city, county, township, borough or village |
bylaw |
Legislation of a New England town |
regulation |
Rules made by a board under delegated authority |
charter |
The instrument the government itself is made under |
specialAct |
State legislation for this government alone |
acceptance |
A local vote to adopt a state statute |
franchise |
A contract with a utility or operator |
policy |
Internal administrative policy |
ruleOfProcedure |
A body's rules for its own conduct |
Roles an adopting body plays
Declared per government at onboarding, from that government's charter, because the name of a body does not determine its role.
legislative |
Its vote makes law |
executive |
It administers, and may make rules under law |
administrative |
It makes rules under delegated authority |
judicial |
It adjudicates |
Citation grammars
The shape of a section number, which is also the shape of the platform's URLs. profiles.yaml carries each one's pattern.
chapter-section |
§ 1-14 |
dotted-decimal |
§ 14.05.030 |
chapter-article-section |
§ 240-4.5 |
dashed-triple |
§ 1-04-010 |
flat |
§ 112 |
alpha-chapter-section |
§ A676-3 |
Dispositions
Why a provision reads as it does. Published rather than dropped, because a reserved number asserts that nothing is missing and a repealed section is where a reader following an old citation lands.
current |
In force |
reserved |
A number held deliberately empty; 73% of codes publish these |
deleted |
Removed, with the published note kept in place |
repealed |
Repealed by a later instrument |
superseded |
Displaced by state law or another provision |
renumbered |
Moved; the old number stays as a landing point |
Entity classes
Recommended values for zoning districts. Open, since other kinds need their own.
residential |
Dwellings are the principal permitted use |
business |
Trade and services, often at a neighborhood scale |
commercial |
Larger-scale retail, office and service uses |
industrial |
Manufacturing, warehousing and related uses |
mixed |
Residential and non-residential uses together |
overlay |
Sits on top of other districts; must declare a relation and its governing text |
special |
A district that fits none of the above, such as open space or institutional |
What an overlay does
Required on an overlay. A parcel is in the overlay and its base district at once, so a consumer that cannot resolve the overlay must say so rather than answer from the base district alone.
supplements |
Adds uses or allowances the underlying district does not give |
restricts |
Adds constraints; the underlying rules still apply |
replaces |
Supersedes the underlying rules, for the subjects its text covers |
Kinds of schedule
use |
Use by district, cells carrying permission symbols |
dimensional |
District by dimension, cells carrying values |
parking |
Usually use by requirement; 825 zoning instruments carry one |
sign |
340 instruments |
landscaping |
218 instruments |
other |
Any other normative matrix, with declared generic columns |
Permission outcomes
Required and closed. Symbols are opaque strings and this is where their meaning lives, which is the only workable design given 200 distinct symbol systems across 331 codes.
permitted |
Allowed by right |
accessory |
Allowed as an accessory use |
approval |
Allowed on a discretionary approval; names the approver and procedure |
prohibited |
Not allowed |
not-applicable |
The combination cannot occur |
see |
Defers to a provision, which the cell's see attribute names |
Approval procedures
special-permit |
A discretionary permit granted by a named board after a hearing |
conditional-use |
The western equivalent, usually a conditional use permit |
site-plan |
Approval of the layout rather than of the use itself |
variance |
Relief from a requirement on a showing of hardship |
What a footnote does to the cell it marks
Required and closed. This is what makes a marker computable rather than decorative.
clarifies |
Defines a term or a measurement datum; the outcome and value stand |
conditions |
The outcome applies only subject to the stated circumstance; a permitted cell so marked must never be presented as an unconditional yes |
varies |
The value or outcome differs in stated circumstances; the text says how and see says where |
Dimension concepts
Recommended values. About twenty concepts cover the dimension axis of essentially every dimensional schedule, which is what makes one government's schedule comparable with another's.
lot-area |
The area of a lot |
lot-width |
The width of a lot, however the code measures it |
lot-depth |
The depth of a lot from front line to rear |
frontage |
The length of a lot along the way that serves it |
setback-front |
Required distance from the front lot line |
setback-side |
Required distance from a side lot line |
setback-rear |
Required distance from the rear lot line |
height |
Building height, in feet or in stories |
coverage-lot |
The share of a lot that may be covered |
coverage-building |
The share covered by buildings specifically |
far |
Floor area ratio: floor area relative to lot area |
open-space |
The share that must be left unbuilt |
density |
Dwelling units relative to land area |
impervious |
The share that may be impervious surface |
Units
acre |
Acres |
sqft |
Square feet |
ft |
Linear feet |
story |
Stories, which a code may count differently from height in feet |
percent |
A percentage, written as published |
ratio |
A bare ratio, as floor area ratio is written |
du-per-acre |
Dwelling units per acre |