heavymap

PCDP vocabulary

Machine-readable tokens for the architecture in the parent folder. Linear NA-14 for the PCDP catalog. Linear NA-22 for the joining-concept catalog. The prose documents are the source of truth (Linear NA-11 for the four-concept frame; ADR 0002 for joining concepts). If this tree and the prose disagree, change this tree to match the prose.

This folder does not fetch parcels, edit the Master Control Spreadsheet, draw UI, or publish a site.

Normative

Closed sets. Later normalize steps, UI, and tests should load these instead of retyping them.

pcdp.vocab.json is the annotated catalog. pcdp.schema.json locks that catalog and exports the same closed sets as JSON Schema $defs (band, bandLadder, uiSurface, refusalReason, evidenceGrade, joinMethod, assertionState, spineKey, and the smaller part enums).

Normative groups, all taken from the prose:

dossier is a surface. It is not a band. Evidence grade refused, rung status refused, and the assertion states are three different uses of the word. Dataset disposition derive is not evidence grade derived. The ladder token derived_readings belongs in dossier_bands; reading identifiers belong in the derived_readings column.

Illustrative

Not a closed catalog. pcdp.vocab.json sets illustrative.closed_catalog to false.

Joining concepts

Sibling catalog for the terminology layer. It does not add keys to pcdp.vocab.json. pcdp.schema.json stays strict (additionalProperties: false).

joining-concepts.vocab.json is the annotated catalog. joining-concepts.schema.json locks it and exports $defs for relation, authorityScale, claimGrain, registerFamily, evidenceLevel, and joiningConceptId.

Prose source of truth: ADR 0002. Closed sets:

All thirty concept ids from planning file 10 are in the catalog. establishment_register_key is an alias of premises_register_key, not a second id. planning_policy_overlay feeds constraints. jurisdiction_activity_aggregate does not attach to a spine unit.

deferred.normative is false. Default display genres and lot_area_m2 as a named reading stay there. Claim-grain here is wider than spine-key grain. The token regulatory inside register family is not a ladder band.

Check

From this directory, with jsonschema available:

python -c "import json, jsonschema; jsonschema.Draft202012Validator.check_schema(json.load(open('pcdp.schema.json'))); jsonschema.validate(json.load(open('pcdp.vocab.json')), json.load(open('pcdp.schema.json')))"
python -c "import json, jsonschema; jsonschema.Draft202012Validator.check_schema(json.load(open('joining-concepts.schema.json'))); jsonschema.validate(json.load(open('joining-concepts.vocab.json')), json.load(open('joining-concepts.schema.json')))"