Skip to content

Commit fe49b80

Browse files
docs(ogc): simplify change-level framework to two levels, clarify inventory columns
1 parent 9f89d6a commit fe49b80

1 file changed

Lines changed: 24 additions & 28 deletions

File tree

docs/ogc_conventions.md

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Covers OGC **Feature** layer IDs and titles — `core/pygeoapi.py`,
2323

2424
## Governing standard
2525

26-
**Authority:** USGS NWIS site-type vocabulary.
26+
**Authority:** USGS NWIS site-type vocabulary.
2727

2828
**Why this standard:** it's an established, published vocabulary — adopting it
2929
avoids inventing a new framework. The Bureau has also previously used USGS
@@ -94,15 +94,13 @@ deliberate, structural deviations, not naming defects:
9494

9595
Before renaming any layer, decide which level applies. A layer's row in the
9696
inventory below may need more than one level at once — e.g. Level 1 for its
97-
title and Level 2/3 for its ID, if both need to change.
97+
title and Level 2 for its ID, if both need to change.
98+
9899

99100
- **Level 1 — Cosmetic only.** Update `title`/`description`, leave the layer
100101
ID (and therefore the URL) unchanged. Non-breaking, ship anytime.
101-
- **Level 2 — ID rename with grace period.** Rename the ID, keep the old ID
102-
alive as an alias for 90 days, with `Deprecation`, `Sunset`, and `Link`
103-
response headers pointing at the new ID.
104-
- **Level 3 — Hard rename, no alias.** Only safe if no external consumers are
105-
confirmed on the current ID.
102+
- **Level 2 — Hard rename.** Rename the ID directly, no alias or grace
103+
period.
106104

107105
## Applying this to new layers
108106

@@ -111,56 +109,54 @@ Check any newly-added layer against the [do/don't rules](#do--dont-rules)
111109

112110
## Current layer inventory
113111

114-
Every layer this catalog publishes. "Recommended" columns are `N/A` where the
115-
current ID/title already conforms.
112+
Every layer this catalog publishes. "Proposed" columns are `N/A` where the
113+
current ID/title already conforms. "Title" is the pygeoapi `title` field (the
114+
human-readable display name).
116115

117116
### Group A — thing-type layers (`core/pygeoapi.py`)
118117

119-
| Layer ID | Recommended ID | Layer Name | Recommended Name | Level | Rationale |
118+
| Layer ID | Proposed ID | Layer Title | Proposed Title | Level | Rationale |
120119
|---|---|---|---|---|---|
121120
| `water_wells` | N/A | Water Wells | N/A | N/A | Conforms (USGS `GW`) |
122121
| `springs` | N/A | Springs | N/A | N/A | Conforms (USGS `SP`) |
123-
| `diversions_surface_water` | `surface_water_diversions` | Surface Water Diversions | N/A | 2 or 3 | Word-order inversion in the ID; title already correct. Matches USGS `FA-DV` (Diversion) |
122+
| `diversions_surface_water` | `surface_water_diversions` | Surface Water Diversions | N/A | 2 | Word-order inversion in the ID; title already correct. Matches USGS `FA-DV` (Diversion) |
124123
| `ephemeral_streams` | N/A | Ephemeral Streams | N/A | N/A | Conforms |
125-
| `lakes_ponds_reservoirs` | `lakes_and_reservoirs` | Lakes, Ponds, and Reservoirs | Lakes and Reservoirs | 1 and 2/3 | USGS's `LK` category doesn't separately name ponds, so consolidating the title is consistent with the standard |
124+
| `lakes_ponds_reservoirs` | `lakes_and_reservoirs` | Lakes, Ponds, and Reservoirs | Lakes and Reservoirs | 1 and 2 | USGS's `LK` category doesn't separately name ponds, so consolidating the title is consistent with the standard |
126125
| `meteorological_stations` | N/A | Meteorological Stations | N/A | N/A | Conforms (USGS `AT`) |
127-
| `outfalls_wastewater_return_flow` | `wastewater_outfalls` | Outfalls and Return Flow | N/A | 2 or 3 | ID reads as a description, not a name; title is already fine |
126+
| `outfalls_wastewater_return_flow` | `wastewater_outfalls` | Outfalls and Return Flow | N/A | 2 | ID reads as a description, not a name; title is already fine |
128127
| `perennial_streams` | N/A | Perennial Streams | N/A | N/A | Conforms |
129-
| `rock_sample_locations` | `rock_sample_sites` | Rock Sample Locations | Rock Sample Sites | 1 and 2/3 | USGS uses "site" consistently |
130-
| `soil_gas_sample_locations` | `soil_gas_sample_sites` | Soil Gas Sample Locations | Soil Gas Sample Sites | 1 and 2/3 | USGS uses "site" consistently |
128+
| `rock_sample_locations` | `rock_sample_sites` | Rock Sample Locations | Rock Sample Sites | 1 and 2 | USGS uses "site" consistently |
129+
| `soil_gas_sample_locations` | `soil_gas_sample_sites` | Soil Gas Sample Locations | Soil Gas Sample Sites | 1 and 2 | USGS uses "site" consistently |
131130
| `other_things` *(internal-only)* | N/A | Other Thing Types | N/A | N/A | "Thing" jargon resolved by removing from the public catalog, not renaming |
132131

133132
### Group B — analytic layers (`core/pygeoapi-config.yml`)
134133

135-
| Layer ID | Recommended ID | Layer Name | Recommended Name | Level | Rationale |
134+
| Layer ID | Proposed ID | Layer Title | Proposed Title | Level | Rationale |
136135
|---|---|---|---|---|---|
137-
| `latest_tds_wells` | `water_well_latest_total_dissolved_solids` | Latest TDS (Water Wells) | Latest Total Dissolved Solids (Water Wells) | 1 and 2/3 | `tds` unexplained abbreviation in both ID and title |
136+
| `latest_tds_wells` | `water_well_latest_total_dissolved_solids` | Latest TDS (Water Wells) | Latest Total Dissolved Solids (Water Wells) | 1 and 2 | `tds` unexplained abbreviation in both ID and title |
138137
| `depth_to_water_trend_wells` | N/A | Depth to Water Trend (Water Wells) | N/A | N/A | Conforms |
139138
| `water_elevation_wells` | N/A | Water Elevation (Water Wells) | N/A | N/A | Conforms |
140139
| `water_well_summary` | N/A | Water Well Summary | N/A | N/A | Conforms |
141140
| `well_water_column` | N/A | Well Water Column (Water Wells) | N/A | N/A | Conforms — plain English, matches its description (standing water column per well). ⚠️ *needs review*: doesn't follow the `water_well_` prefix direction |
142-
| `major_chemistry_results` | `water_well_major_chemistry` | Major Chemistry (Water Wells) | N/A | 2 or 3 | Missing `water_well_` prefix; "Results" is redundant — every layer is a result |
143-
| `minor_chemistry_wells` | `water_well_minor_chemistry` | Minor Chemistry (Water Wells) | N/A | 2 or 3 | Should mirror the recommended `water_well_major_chemistry` for its sibling layer |
141+
| `major_chemistry_results` | `water_well_major_chemistry` | Major Chemistry (Water Wells) | N/A | 2 | Missing `water_well_` prefix; "Results" is redundant — every layer is a result |
142+
| `minor_chemistry_wells` | `water_well_minor_chemistry` | Minor Chemistry (Water Wells) | N/A | 2 | Should mirror the recommended `water_well_major_chemistry` for its sibling layer |
144143
| `actively_monitored_wells` | N/A | Actively Monitored Wells | N/A | N/A | Not renamed — see [Deviations](#deviations-from-usgs-nwis-conventions) |
145144
| `project_areas` | N/A | Project Areas | N/A | N/A | Conforms |
146-
| `geothermal_wells_bht` | `geothermal_wells_bottom_hole_temperature` | Geothermal Wells — Bottom-Hole Temperature | N/A | 2 or 3 | ⚠️ *needs review*: `bht` abbreviation in the ID only; title already spells it out |
145+
| `geothermal_wells_bht` | `geothermal_wells_bottom_hole_temperature` | Geothermal Wells — Bottom-Hole Temperature | N/A | 2 | ⚠️ *needs review*: `bht` abbreviation in the ID only; title already spells it out |
147146
| `geothermal_wells_temperature_profile` | N/A | Geothermal Wells — Temperature-Depth Profile | N/A | N/A | Conforms |
148-
| `bht_measurements` | `bottom_hole_temperature_measurements` | BHT Measurements | Bottom-Hole Temperature Measurements | 1 and 2/3 | ⚠️ *needs review*: `bht` abbreviation in both ID and title |
149-
| `temp_depth_measurements` | `temperature_depth_measurements` | Temperature-Depth Measurements | N/A | 2 or 3 | ⚠️ *needs review*: `temp` abbreviation in the ID only; title already spells it out |
147+
| `bht_measurements` | `bottom_hole_temperature_measurements` | BHT Measurements | Bottom-Hole Temperature Measurements | 1 and 2 | ⚠️ *needs review*: `bht` abbreviation in both ID and title |
148+
| `temp_depth_measurements` | `temperature_depth_measurements` | Temperature-Depth Measurements | N/A | 2 | ⚠️ *needs review*: `temp` abbreviation in the ID only; title already spells it out |
150149
| `heat_flow` | N/A | Heat Flow | N/A | N/A | Conforms |
151-
| `dst` | `drill_stem_tests` | Drill Stem Tests | N/A | 2 or 3 | ⚠️ *needs review*: ID is a bare abbreviation; title already spells it out — recommended ID matches the title exactly |
150+
| `dst` | `drill_stem_tests` | Drill Stem Tests | N/A | 2 | ⚠️ *needs review*: ID is a bare abbreviation; title already spells it out — recommended ID matches the title exactly |
152151

153152
### Internal-only (`core/pygeoapi-config-internal.yml`)
154153

155-
| Layer ID | Recommended ID | Layer Name | Recommended Name | Level | Rationale |
154+
| Layer ID | Proposed ID | Layer Title | Proposed Title | Level | Rationale |
156155
|---|---|---|---|---|---|
157156
| `locations` | N/A | Locations | N/A | N/A | Conforms. Hidden from public catalog — scope decision, not a naming fix |
158-
| `avg_tds_wells` | `water_well_average_total_dissolved_solids` | Average TDS (Water Wells) | Average Total Dissolved Solids (Water Wells) | 1 and 2/3 | ⚠️ *needs review*: `avg` and `tds` both unexplained abbreviations; hidden from public catalog but the rule still applies for internal consumers |
157+
| `avg_tds_wells` | `water_well_average_total_dissolved_solids` | Average TDS (Water Wells) | Average Total Dissolved Solids (Water Wells) | 1 and 2 | ⚠️ *needs review*: `avg` and `tds` both unexplained abbreviations; hidden from public catalog but the rule still applies for internal consumers |
159158
| `latest_depth_to_water_wells` | N/A | Latest Depth to Water (Water Wells) | N/A | N/A | Conforms. Hidden from public catalog — audit flagged it as redundant with `water_well_summary`, not a naming defect |
160159

161-
162-
163-
164160
## References
165161

166162
1. GeoCat/GeoServer layer naming guidance (<https://docs.geocat.net/map/2021/setup/names/index.html#layer-naming-coverage-resources>)

0 commit comments

Comments
 (0)