Skip to content

Commit 7da4f58

Browse files
committed
add Abstract Test Suite
1 parent 18c2e28 commit 7da4f58

12 files changed

Lines changed: 1259 additions & 50 deletions

extensions/schemas/standard/annex_ats.adoc

Lines changed: 1208 additions & 1 deletion
Large diffs are not rendered by default.

extensions/schemas/standard/annex_history.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@
88
|2023-10-22 |1.0.0-SNAPSHOT |C. Portele |all |initial version
99
|2024-03-07 |1.0.0-draft.1 |C. Portele |all |draft for OAB review
1010
|2024-06-04 |1.0.0-draft.2 |P. Vretanos, C. Portele |all |draft for Public Comment
11+
|2025-09-xx |1.0.0-draft.3 |P. Vretanos, C. Portele |all |draft for OGC approval process
1112
|===

extensions/schemas/standard/clause_10_returnables_and_receivables.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,23 @@ The Requirements Class "Returnables and Receivables" specifies the web resources
1414
This requirements class supports clients that want to discover the list of resource properties with their types and constraints that is returned when fetching a representation of the resource or when creating a new or updating an existing resource.
1515

1616
:req: link
17-
[#{req-class}_{req}]
17+
[#req_{req-class}_{req}]
1818
[width="90%",cols="2,7a"]
1919
|===
2020
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
2121
^|A |A Returnables and Receivables resource SHALL be referenced from all Collection resources with a link with the link relation type `\http://www.opengis.net/def/rel/ogc/1.0/schema`.
2222
|===
2323
2424
:req: op
25-
[#{req-class}_{req}]
25+
[#req_{req-class}_{req}]
2626
[width="90%",cols="2,7a"]
2727
|===
2828
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
2929
^|A |The Returnables and Receivables resource SHALL support the HTTP GET operation and the media type `application/schema+json`.
3030
|===
3131
3232
:req: response
33-
[#{req-class}_{req}]
33+
[#req_{req-class}_{req}]
3434
[width="90%",cols="2,7a"]
3535
|===
3636
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}

extensions/schemas/standard/clause_11_queryables.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,23 @@ OGC API Standards do not assume that the content schema of a resource being quer
1818
In addition, a <<publisher-def,publisher>> may want to support <<queryable-def,queryables>> that are not directly represented as resource properties in the content schema of the resource. Or the <<publisher-def,publisher>> may want to restrict filtering on certain properties. For example, because the backend datastore has not been configured to allow high-performance queries on those properties.
1919

2020
:req: link
21-
[#{req-class}_{req}]
21+
[#req_{req-class}_{req}]
2222
[width="90%",cols="2,7a"]
2323
|===
2424
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
2525
^|A |A Queryables resource SHALL be referenced from all Collection resources with a link with the link relation type `\http://www.opengis.net/def/rel/ogc/1.0/queryables`.
2626
|===
2727
2828
:req: op
29-
[#{req-class}_{req}]
29+
[#req_{req-class}_{req}]
3030
[width="90%",cols="2,7a"]
3131
|===
3232
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
3333
^|A |The Queryables resource SHALL support the HTTP GET operation and the media type `application/schema+json`.
3434
|===
3535
3636
:req: response
37-
[#{req-class}_{req}]
37+
[#req_{req-class}_{req}]
3838
[width="90%",cols="2,7a"]
3939
|===
4040
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}

extensions/schemas/standard/clause_12_sortables.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,23 @@ OGC API Standards do not assume that the content schema of a resource being quer
1818
In addition, a <<publisher-def,publisher>> may want to support <<sortable-def,sortable>> that are not directly represented as resource properties in the content schema of the resource. Or the <<publisher-def,publisher>> may want to restrict sorting on certain properties. For example, because the backend datastore has not been configured to allow high-performance queries on those properties.
1919

2020
:req: link
21-
[#{req-class}_{req}]
21+
[#req_{req-class}_{req}]
2222
[width="90%",cols="2,7a"]
2323
|===
2424
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
2525
^|A |A Sortables resource SHALL be referenced from all Collection resources with a link with the link relation type `\http://www.opengis.net/def/rel/ogc/1.0/sortables`.
2626
|===
2727
2828
:req: op
29-
[#{req-class}_{req}]
29+
[#req_{req-class}_{req}]
3030
[width="90%",cols="2,7a"]
3131
|===
3232
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
3333
^|A |The Sortables resource SHALL support the HTTP GET operation and the media type `application/schema+json`.
3434
|===
3535
3636
:req: response
37-
[#{req-class}_{req}]
37+
[#req_{req-class}_{req}]
3838
[width="90%",cols="2,7a"]
3939
|===
4040
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}

extensions/schemas/standard/clause_13_profile_parameter.adoc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ A profile is defined not to alter the semantics of the resource representation i
1919
To request one or more profiles, a query parameter "profile" can be used:
2020

2121
:req: profile-param
22-
[#{req-class}_{req}]
22+
[#req_{req-class}_{req}]
2323
[width="90%",cols="2,7a"]
2424
|===
2525
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
@@ -67,7 +67,7 @@ Different media types have different characteristics. A consequence is that it c
6767
The server will select the profile(s) of the response, if any, from the list of profiles supported for the media type and resource.
6868
6969
:rec: profile-negotiation
70-
[#{req-class}_{rec}]
70+
[#rec_{req-class}_{rec}]
7171
[width="90%",cols="2,7a"]
7272
|===
7373
^|*Recommendation {counter:rec-num}* |/rec/{req-class}/{rec}
@@ -76,7 +76,7 @@ The server will select the profile(s) of the response, if any, from the list of
7676
|===
7777
7878
:req: profile-param-response
79-
[#{req-class}_{req}]
79+
[#req_{req-class}_{req}]
8080
[width="90%",cols="2,7a"]
8181
|===
8282
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
@@ -85,7 +85,7 @@ The server will select the profile(s) of the response, if any, from the list of
8585
|===
8686
8787
:rec: profile-link-header
88-
[#{req-class}_{rec}]
88+
[#rec_{req-class}_{rec}]
8989
[width="90%",cols="2,7a"]
9090
|===
9191
^|*Recommendation {counter:rec-num}* |/rec/{req-class}/{rec}

extensions/schemas/standard/clause_14_profile_references.adoc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ The requirements stated in this Standard cover only simple cases. More complex c
1616
|===
1717

1818
:req: ref-profiles
19-
[#{req-class}_{req}]
19+
[#req_{req-class}_{req}]
2020
[width="90%",cols="2,7a"]
2121
|===
2222
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
@@ -26,11 +26,11 @@ The requirements stated in this Standard cover only simple cases. More complex c
2626
For features, the query parameter "profile" will be applicable to the GET operation on the paths `/collections/{collectionId}/items` and `/collections/{collectionId}/items/{resourceId}`.
2727
2828
:req: rel-as-key
29-
[#{req-class}_{req}]
29+
[#req_{req-class}_{req}]
3030
[width="90%",cols="2,7a"]
3131
|===
3232
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
33-
^|A |In the profile "rel-as-key" (`\http://www.opengis.net/def/profile/OGC/0/rel-as-key`) a reference in the response SHALL be represented by the `resourceId` of the referenced resource (a string or integer, depending on the type of the identifier property in the referenced collection), if the property with role "reference" has the keyword "x-ogc-collectionId" with a string value (a fixed collection).
33+
^|A |In the profile "rel-as-key" (`\http://www.opengis.net/def/profile/OGC/0/rel-as-key`) a reference in the response SHALL be represented by the `resourceId` of the referenced resource (a string or integer, depending on the type of the identifier property in the referenced collection), if the property with role "reference" has the keyword "x-ogc-collectionId".
3434
|===
3535
3636
[[example_14_1]]
@@ -67,7 +67,7 @@ The examples in this Clause use the <<example_9_1,example road accident feature
6767
====
6868
6969
:req: rel-as-uri
70-
[#{req-class}_{req}]
70+
[#req_{req-class}_{req}]
7171
[width="90%",cols="2,7a"]
7272
|===
7373
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
@@ -106,7 +106,7 @@ The examples in this Clause use the <<example_9_1,example road accident feature
106106
====
107107
108108
:req: rel-as-link
109-
[#{req-class}_{req}]
109+
[#req_{req-class}_{req}]
110110
[width="90%",cols="2,7a"]
111111
|===
112112
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
@@ -156,7 +156,7 @@ Servers will typically not support the profile "rel-as-link" for media types tha
156156
"rel-as-link" will typically be the most useful representation, if a human user interacts with the resource. This is because of the possibility to include a descriptive label of the referenced resource. Of course, this only applies if the server can provide a meaningful title for each link, in which case this information can help the user to understand the referenced resource.
157157
158158
:rec: default
159-
[#{req-class}_{rec}]
159+
[#rec_{req-class}_{rec}]
160160
[width="90%",cols="2,7a"]
161161
|===
162162
^|*Recommendation {counter:rec-num}* |/rec/{req-class}/{rec}

extensions/schemas/standard/clause_15_profile_codelists.adoc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,23 @@ The two profiles are:
2121
|===
2222

2323
:req: consistency
24-
[#{req-class}_{req}]
24+
[#req_{req-class}_{req}]
2525
[width="90%",cols="2,7a"]
2626
|===
2727
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
2828
^|A |All codelist-valued properties in a schema SHALL use the same profile.
2929
|===
3030
3131
:rec: profile-link-header
32-
[#{req-class}_{rec}]
32+
[#rec_{req-class}_{rec}]
3333
[width="90%",cols="2,7a"]
3434
|===
3535
^|*Recommendation {counter:rec-num}* |/rec/{req-class}/{rec}
3636
^|A |The response SHOULD include a link to the applied codelist profile in the HTTP response headers.
3737
|===
3838
3939
:req: codelist-inline
40-
[#{req-class}_{req}]
40+
[#req_{req-class}_{req}]
4141
[width="90%",cols="2,7a"]
4242
|===
4343
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
@@ -46,7 +46,7 @@ The two profiles are:
4646
|===
4747
4848
:rec: codelist-inline-title
49-
[#{req-class}_{rec}]
49+
[#rec_{req-class}_{rec}]
5050
[width="90%",cols="2,7a"]
5151
|===
5252
^|*Recommendation {counter:rec-num}* |/req/{req-class}/{rec}
@@ -88,7 +88,7 @@ The two profiles are:
8888
====
8989
9090
:req: codelist-ref
91-
[#{req-class}_{req}]
91+
[#req_{req-class}_{req}]
9292
[width="90%",cols="2,7a"]
9393
|===
9494
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}

extensions/schemas/standard/clause_16_profile_domains.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,23 +51,23 @@ The valid domain is static and can be cached for longer periods of time. Dependi
5151
|===
5252

5353
:req: consistency
54-
[#{req-class}_{req}]
54+
[#req_{req-class}_{req}]
5555
[width="90%",cols="2,7a"]
5656
|===
5757
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
5858
^|A |All properties with constraint keywords in a schema SHALL use the same profile.
5959
|===
6060
6161
:rec: profile-link-header
62-
[#{req-class}_{rec}]
62+
[#rec_{req-class}_{rec}]
6363
[width="90%",cols="2,7a"]
6464
|===
6565
^|*Recommendation {counter:rec-num}* |/rec/{req-class}/{rec}
6666
^|A |The response SHOULD include a link to the applied domain profile in the HTTP response headers.
6767
|===
6868
6969
:req: actual-domain
70-
[#{req-class}_{req}]
70+
[#req_{req-class}_{req}]
7171
[width="90%",cols="2,7a"]
7272
|===
7373
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}

extensions/schemas/standard/clause_7_schemas.adoc

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ The schema represents a logical model, independent of the format in which the da
2121
=== Schema representation
2222

2323
:req: json-schema
24-
[#{req-class}_{req}]
24+
[#req_{req-class}_{req}]
2525
[width="90%",cols="2,7a"]
2626
|===
2727
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
@@ -36,17 +36,18 @@ The schema represents a logical model, independent of the format in which the da
3636
In addition to the JSON Schema data types, geospatial data typically also uses spatial and temporal data types.
3737
3838
:req: properties
39-
[#{req-class}_{req}]
39+
[#req_{req-class}_{req}]
4040
[width="90%",cols="2,7a"]
4141
|===
4242
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
4343
^|A |Each property SHALL include a "type" member, except for spatial properties.
4444
^|B |Each spatial property SHALL not include a "type" or "$ref" member.
4545
^|C |Each spatial property SHALL include a "format" member with a string value "geometry", followed by a hyphen, followed by the name of the geometry type in lower case. I.e., the values for the core Simple Feature geometry types are: "geometry-point", "geometry-multipoint", "geometry-linestring", "geometry-multilinestring", "geometry-polygon", "geometry-multipolygon", and "geometry-geometrycollection". In addition, the following special values are supported: "geometry-any" as the wildcard for any geometry type, "geometry-point-or-multipoint" for a Point or MultiPoint, "geometry-linestring-or-multilinestring" for a LineString or MultiLineString, and "geometry-polygon-or-multipolygon" for a Polygon or MultiPolygon.
46-
^|D |Each temporal property SHALL be a "string" literal with the appropriate format (e.g., "date-time" or "date" for instances, depending on the temporal granularity).
47-
^|E |As a general rule, if the data type of a property has to be more specific than the JSON Schema data types ("number", "integer", "string"), the "format" keyword SHALL be used.
48-
^|F |Properties that are only applicable when creating new data or updating existing data SHALL include "writeOnly: true".
49-
^|G |Properties that are only applicable when data is fetched SHALL include "readOnly: true".
46+
^|D |Each temporal property that represents an instant (including the start or end of an interval) SHALL be a "string" literal with the appropriate format (e.g., "date-time" or "date", depending on the temporal granularity).
47+
^|E |Each temporal property that represents an interval SHALL either be a "string" literal with format "interval-iso8601" (two instants with the same granularity separated by a "/") or an array with format "interval-array" consisting of two "string"s representing the interval start and end instants. In both variants, unbounded interval ends are represented by the string "..".
48+
^|F |As a general rule, if the data type of a property has to be more specific than the JSON Schema data types ("number", "integer", "string"), the "format" keyword SHALL be used.
49+
^|G |Properties that are only applicable when creating new data or updating existing data SHALL include "writeOnly: true".
50+
^|H |Properties that are only applicable when data is fetched SHALL include "readOnly: true".
5051
|===
5152
5253
The following recommendations are intended to simplify parsing a schema and to help understanding the meaning and representation of the properties:
@@ -88,7 +89,7 @@ NOTE: The OGC format register needs to be established.
8889
In order to be able to map the logical schema to a format-specific schema, extensions to the JSON Schema vocabulary are needed.
8990

9091
:req: additional-keywords
91-
[#{req-class}_{req}]
92+
[#req_{req-class}_{req}]
9293
[width="90%",cols="2,7a"]
9394
|===
9495
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
@@ -100,7 +101,7 @@ CAUTION: The next version of JSON Schema will likely restrict the use of additio
100101
==== Properties with a specific role
101102

102103
:req: role
103-
[#{req-class}_{req}]
104+
[#req_{req-class}_{req}]
104105
[width="90%",cols="2,7a"]
105106
|===
106107
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
@@ -109,7 +110,7 @@ CAUTION: The next version of JSON Schema will likely restrict the use of additio
109110
|===
110111

111112
:req: role-id
112-
[#{req-class}_{req}]
113+
[#req_{req-class}_{req}]
113114
[width="90%",cols="2,7a"]
114115
|===
115116
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
@@ -127,7 +128,7 @@ For cases, where the properties of the resource should be ordered in some repres
127128
- the representation of the data in a format that requires a specific order of properties (e.g., XML based on an XML Schema that uses a `sequence` for the property elements).
128129

129130
:req: property-seq
130-
[#{req-class}_{req}]
131+
[#req_{req-class}_{req}]
131132
[width="90%",cols="2,7a"]
132133
|===
133134
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
@@ -136,7 +137,7 @@ For cases, where the properties of the resource should be ordered in some repres
136137
|===
137138

138139
:rec: property-seq-unique
139-
[#{req-class}_{rec}]
140+
[#rec_{req-class}_{rec}]
140141
[width="90%",cols="2,7a"]
141142
|===
142143
^|*Recommendation {counter:rec-num}* |/req/{req-class}/{rec}
@@ -148,7 +149,7 @@ For cases, where the properties of the resource should be ordered in some repres
148149
In geospatial data, numeric property values often represent a measurement and have a unit of measure. For fixed units, this can be expressed in the schema using the keyword "x-ogc-unit".
149150

150151
:req: unit
151-
[#{req-class}_{req}]
152+
[#req_{req-class}_{req}]
152153
[width="90%",cols="2,7a"]
153154
|===
154155
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
@@ -169,7 +170,7 @@ NOTE: For example, the value for hectopascal is `hPa` in UCUM and `\https://qudt
169170
==== Semantic definition of a property
170171

171172
:req: definition
172-
[#{req-class}_{req}]
173+
[#req_{req-class}_{req}]
173174
[width="90%",cols="2,7a"]
174175
|===
175176
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
@@ -180,7 +181,7 @@ NOTE: For example, the value for hectopascal is `hPa` in UCUM and `\https://qudt
180181
==== Special null values
181182

182183
:req: nullvalues
183-
[#{req-class}_{req}]
184+
[#req_{req-class}_{req}]
184185
[width="90%",cols="2,7a"]
185186
|===
186187
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}

0 commit comments

Comments
 (0)