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.
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:
identity, land_use, constraints, activity_registers, derived_readings, share_exportfilled, refusedselection, dossier, share, exportnot_in_coverage, not_licensed, not_joinedobserved, joined, derived, refusedidentifier, normalized_address, point_in_polygon, containment, proximity, overlapsupported, contested, refutedhm:{country}:{region}:{jurisdiction}:{grain}:{local}) and the v1 part enumsship, simplify, derive, tile, linkdossier 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.
Not a closed catalog. pcdp.vocab.json sets illustrative.closed_catalog to false.
floor_area_m2, employment_interval, coverage_ratio. A new identifier may be added when a reading is specified. The schema requires these three and does not treat the list as exhaustive.hm:ca:on:welland:footprint:SYN-0142 and hm:us:ny:erie:parcel:SYN-999.00-1-1.1 are the synthetic walkthrough units from the architecture. They show the grammar. They are not observations of real land and not a parcel index.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:
same, alias, near, false_friendmunicipal, regional, provincial_or_state, federal, cross_border_registerparcel, footprint, address, register_unit, zone_polygon, jurisdiction_aggregatepremises_register_key: local_survey, local_directory, licence_register, regulatory, regulatory_cross_programlive_verified, documented, catalog_only, unverifiedAll 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.
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')))"