|
| 1 | +# Deployment-Linked Sampling Features Clarification (2026-06-08) |
| 2 | + |
| 3 | +| Field | Value | |
| 4 | +|---|---| |
| 5 | +| **Date** | 2026-06-08 | |
| 6 | +| **Author** | Codex | |
| 7 | +| **Status** | Clarification Note | |
| 8 | +| **Scope** | Distinguishing 1:1 system/deployment modeling from deployment-scoped `samplingFeatures` exposure | |
| 9 | +| **Related Reports** | [CSAPI_Deployed_Systems_Design_Pattern](CSAPI_Deployed_Systems_Design_Pattern.md), [CSAPI_Deployment_Modeling_Standards_Conformance](CSAPI_Deployment_Modeling_Standards_Conformance.md), [OSH_Sampling_Features_Implementation_Analysis](OSH_Sampling_Features_Implementation_Analysis.md) | |
| 10 | + |
| 11 | +--- |
| 12 | + |
| 13 | +## 1 The Question |
| 14 | + |
| 15 | +An external client/plugin question prompted this clarification: |
| 16 | + |
| 17 | +> If a server already models deployed systems using a 1:1 `System`:`Deployment` pattern, does that mean the server is already "attaching features to deployments"? |
| 18 | +
|
| 19 | +The answer is **not necessarily**. |
| 20 | + |
| 21 | +Creating a `Deployment` resource for a `System` and exposing `samplingFeatures` from that `Deployment` are related, but they are **not the same thing**. |
| 22 | + |
| 23 | +--- |
| 24 | + |
| 25 | +## 2 The Short Answer |
| 26 | + |
| 27 | +There are three distinct facts a server may or may not expose: |
| 28 | + |
| 29 | +1. A `System` exists. |
| 30 | +2. A corresponding `Deployment` exists. |
| 31 | +3. The `Deployment` exposes a `samplingFeatures` association. |
| 32 | + |
| 33 | +Many publisher patterns implemented so far focus on **(1) and (2)**. |
| 34 | + |
| 35 | +The question being asked by client developers is often about **(3)**: |
| 36 | + |
| 37 | +> Can a client start from the deployment and discover the associated sampling features directly from the deployment side of the resource graph? |
| 38 | +
|
| 39 | +That is a separate capability from merely creating a deployment record. |
| 40 | + |
| 41 | +--- |
| 42 | + |
| 43 | +## 3 Why the Confusion Happens |
| 44 | + |
| 45 | +The existing OS4CSAPI design work intentionally treats `Deployment` as the operational face of a `System` in many publisher patterns: |
| 46 | + |
| 47 | +- one operationally meaningful system |
| 48 | +- one corresponding deployment |
| 49 | +- often a 1:1 relationship for user-facing navigation |
| 50 | + |
| 51 | +This is the pattern described in [CSAPI_Deployed_Systems_Design_Pattern](CSAPI_Deployed_Systems_Design_Pattern.md). |
| 52 | + |
| 53 | +However, **a 1:1 deployment pattern does not automatically imply that all system associations are re-exposed from the deployment**. |
| 54 | + |
| 55 | +In other words: |
| 56 | + |
| 57 | +- `System A` may expose `/systems/{id}/samplingFeatures` |
| 58 | +- `Deployment A` may exist as the operational wrapper for `System A` |
| 59 | +- but `Deployment A` may still fail to expose `/deployments/{id}/samplingFeatures` |
| 60 | + |
| 61 | +The deployment exists, but deployment-scoped discovery is still incomplete. |
| 62 | + |
| 63 | +--- |
| 64 | + |
| 65 | +## 4 Standards Basis |
| 66 | + |
| 67 | +OGC API - Connected Systems Part 1 treats `Deployment` as a first-class feature resource with its own associations. |
| 68 | + |
| 69 | +Two standards facts matter here: |
| 70 | + |
| 71 | +### 4.1 Deployments can carry `samplingFeatures` |
| 72 | + |
| 73 | +Part 1 defines `samplingFeatures` as a valid `Deployment` association. |
| 74 | + |
| 75 | +In plain terms, a deployment can expose: |
| 76 | + |
| 77 | +- the systems deployed during the deployment |
| 78 | +- the features of interest observed/controlled during the deployment |
| 79 | +- the sampling features associated to systems deployed during the deployment |
| 80 | + |
| 81 | +This means Joana's request is **standards-aligned**, not a plugin-specific invention. |
| 82 | + |
| 83 | +### 4.2 Deployment location is not the same thing as sampling features |
| 84 | + |
| 85 | +Part 1 also explicitly distinguishes: |
| 86 | + |
| 87 | +- deployment `location` |
| 88 | +- sampling-feature geometry |
| 89 | + |
| 90 | +This distinction is important. A deployment can have a place/time context without that being equivalent to the geometry of the sampling footprint, sensor point, coverage polygon, or observed area. |
| 91 | + |
| 92 | +So "we already have deployment geometry" is **not** the same as "we already publish deployment-linked sampling features." |
| 93 | + |
| 94 | +--- |
| 95 | + |
| 96 | +## 5 What the 1:1 Pattern Gives You, and What It Does Not |
| 97 | + |
| 98 | +### 5.1 What it gives you |
| 99 | + |
| 100 | +A 1:1 `System`:`Deployment` pattern can provide: |
| 101 | + |
| 102 | +- operational naming |
| 103 | +- valid-time scoping |
| 104 | +- deployment hierarchy |
| 105 | +- deployment-scoped datastream or observation queries |
| 106 | +- continuity of operational role even when hardware changes |
| 107 | + |
| 108 | +These are the strengths already documented in the deployment design reports. |
| 109 | + |
| 110 | +### 5.2 What it does not give you automatically |
| 111 | + |
| 112 | +It does **not** automatically guarantee: |
| 113 | + |
| 114 | +- a `samplingFeatures` link in the deployment representation |
| 115 | +- a working `/deployments/{id}/samplingFeatures` traversal |
| 116 | +- deployment-scoped aggregation of sampling features across subdeployments |
| 117 | +- client discoverability of sampling features when the user navigates from deployments first |
| 118 | + |
| 119 | +Those behaviors must be **explicitly published**. |
| 120 | + |
| 121 | +--- |
| 122 | + |
| 123 | +## 6 What a Client Developer Usually Means by "Attach Features Also to Deployments" |
| 124 | + |
| 125 | +When a client developer asks for features "attached to deployments," they usually mean one or more of the following: |
| 126 | + |
| 127 | +1. The deployment representation contains a discoverable `samplingFeatures` association link. |
| 128 | +2. The nested route `/deployments/{id}/samplingFeatures` exists and returns useful results. |
| 129 | +3. A deployment-centered workflow can retrieve the same relevant feature geometry that is otherwise only discoverable from the system side. |
| 130 | + |
| 131 | +This is mainly a **resource-graph discoverability** request. |
| 132 | + |
| 133 | +It is not necessarily a demand for a different underlying data model. |
| 134 | + |
| 135 | +--- |
| 136 | + |
| 137 | +## 7 Practical Interpretation for OS4CSAPI Publishers |
| 138 | + |
| 139 | +If a publisher uses a 1:1 deployment pattern, then deployment-linked sampling features are often a **reasonable next publishing enhancement**, because: |
| 140 | + |
| 141 | +- the system-side association may already exist |
| 142 | +- the deployment is already treated as the operational face of the system |
| 143 | +- deployment-first client workflows become more complete and intuitive |
| 144 | + |
| 145 | +In many such cases, publishing deployment-linked sampling features is closer to: |
| 146 | + |
| 147 | +- exposing an already meaningful association from another traversal point |
| 148 | + |
| 149 | +than to: |
| 150 | + |
| 151 | +- inventing a wholly new modeling concept |
| 152 | + |
| 153 | +That said, it is still an implementation choice. The Part 1 association is useful and standards-grounded, but it is not the same thing as saying every deployment must always expose it in all publishers. |
| 154 | + |
| 155 | +--- |
| 156 | + |
| 157 | +## 8 Recommended Mental Model |
| 158 | + |
| 159 | +Use this distinction: |
| 160 | + |
| 161 | +### A. Modeling layer |
| 162 | + |
| 163 | +> Do we create deployments for deployed systems? |
| 164 | +
|
| 165 | +This is the 1:1 deployed-system pattern. |
| 166 | + |
| 167 | +### B. Association layer |
| 168 | + |
| 169 | +> Does a deployment explicitly publish `samplingFeatures` as an associated resource set? |
| 170 | +
|
| 171 | +This is the deployment-linked sampling-features question. |
| 172 | + |
| 173 | +### C. Client discoverability layer |
| 174 | + |
| 175 | +> Can a client starting from a deployment discover the relevant feature geometry without having to pivot manually to systems first? |
| 176 | +
|
| 177 | +This is usually what plugin authors care about most. |
| 178 | + |
| 179 | +--- |
| 180 | + |
| 181 | +## 9 Recommended Response Framing |
| 182 | + |
| 183 | +If asked whether "we already do this," the best accurate response is: |
| 184 | + |
| 185 | +> We often already model deployed systems with a 1:1 `System`:`Deployment` pattern, but that is not automatically the same as publishing deployment-linked `samplingFeatures`. The real question is whether the deployment resource itself exposes a discoverable `samplingFeatures` association or traversal. |
| 186 | +
|
| 187 | +That framing preserves the value of the existing deployed-system pattern while correctly identifying the missing capability. |
| 188 | + |
| 189 | +--- |
| 190 | + |
| 191 | +## 10 Bottom Line |
| 192 | + |
| 193 | +The likely misunderstanding is: |
| 194 | + |
| 195 | +- **internal assumption:** "we already create deployments, so deployments already have the same feature relationships" |
| 196 | +- **client expectation:** "if deployments are first-class operational resources, I should be able to discover sampling features from them directly" |
| 197 | + |
| 198 | +Those are not equivalent. |
| 199 | + |
| 200 | +A server can already be doing good deployment modeling and still have room to improve deployment-scoped sampling-feature discoverability. |
0 commit comments