Skip to content

Commit 18c2e28

Browse files
authored
Merge pull request #1009 from opengeospatial/cp-part5
Prepare Part 5 for v1.0.0 Merge as decided in the meeting 2025-07-14
2 parents 81d8953 + 2f9320e commit 18c2e28

11 files changed

+71
-42
lines changed

extensions/schemas/standard/23-058.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@
4949
[cols = "^", frame = "none", grid = "none"]
5050
|===
5151
|*Copyright notice*
52-
|Copyright (C) 2024 Open Geospatial Consortium
53-
|To obtain additional rights of use, visit http://www.opengeospatial.org/legal/
52+
|Copyright (C) 2025 Open Geospatial Consortium
53+
|To obtain additional rights of use, visit https://www.ogc.org/legal/
5454
|===
5555

5656
[cols = "^", frame = "none"]
@@ -109,7 +109,7 @@ include::clause_6_overview.adoc[]
109109

110110
include::clause_7_schemas.adoc[]
111111

112-
include::clause_8_core_roles_for_features.adoc[]
112+
include::clause_8_advanced_property_roles.adoc[]
113113

114114
include::clause_9_references.adoc[]
115115

extensions/schemas/standard/annex_bibliography.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
[[ogc-link-relations]] Open Geospatial Consortium (OGC). **OGC Link Relation Type Register** [online, viewed 2023-10-14], Available at http://www.opengis.net/def/rel
99

10-
[[OpenAPI]] OpenAPI Initiative (OAI). **OpenAPI Specification 3.0** [online, viewed 2023-10-14]. 2020. Available at http://spec.openapis.org/oas/v3.0.3
10+
[[OpenAPI]] OpenAPI Initiative (OAI). **OpenAPI Specification 3.1** [online, viewed 2025-07-14]. 2024. Available at http://spec.openapis.org/oas/v3.1.1
1111

1212
[[rfc6906]] Internet Engineering Task Force (IETF). RFC 6906: **The 'profile' Link Relation Type**. Edited by E. Wilde. 2013. Available at https://www.rfc-editor.org/rfc/rfc6906.html
1313

extensions/schemas/standard/clause_0_front_material.adoc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ The main reasons for using JSON Schema are:
2525
2626
This Standard specifies basic provisions for schemas that are applicable to any type of geospatial data as well as general provision for profiles. These provisions are not specific to features and as such could be copied in or moved to OGC API - Common in the future.
2727

28-
Additional provisions are added for <<rc_core-roles-features,schemas for feature data>>.
28+
Additional provisions are added for <<rc_advanced-property-roles,schemas for feature data>>.
2929

3030
In OGC Web APIs, geospatial data is shared in collections (path `/collections/{collectionId}`). The schema of items in a collection provides information as to how to interact with the collection.
3131

@@ -73,7 +73,10 @@ Recipients of this document are requested to submit, with their comments, notifi
7373
The following organizations submitted this document to the Open Geospatial Consortium (OGC):
7474

7575
* CubeWerx Inc.
76+
* Ecere Corporation
7677
* interactive instruments
78+
* Meteorological Service of Canada
79+
* Natural Resources Canada
7780
7881
[big]*v. Submitters*
7982

@@ -83,4 +86,7 @@ All questions regarding this submission should be directed to the editors or the
8386
|*Name* |*Affiliation*
8487
|Panagiotis (Peter) A. Vretanos _(editor)_ |CubeWerx Inc.
8588
|Clemens Portele _(editor)_ |interactive instruments
89+
|Jérôme Jacovella-St-Louis|Ecere Corporation
90+
|Joost van Ulden |Natural Resources Canada
91+
|Tom Kralidis |Meteorological Service of Canada
8692
|===

extensions/schemas/standard/clause_10_returnables_and_receivables.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,5 @@ This requirements class supports clients that want to discover the list of resou
3636
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
3737
^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code `200`.
3838
^|B |For responses that use `application/schema+json` as the `Content-Type` of the response, the response SHALL conform to <<rc_schemas>>.
39+
^|C |The "additionalProperties" member with a value of "true" (the default) or "false" is used to state the expected behavior with respect to properties that are not explicitly declared in the schema. If "additionalProperties" is set to "false", properties that are not explicitly declared in the schema SHALL NOT be allowed, otherwise they SHALL be allowed.
3940
|===

extensions/schemas/standard/clause_13_profile_parameter.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ To request one or more profiles, a query parameter "profile" can be used:
2323
[width="90%",cols="2,7a"]
2424
|===
2525
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
26-
^|A |The GET operation on selected resources SHALL support a query parameter "profile" with the following characteristics (using an OpenAPI Specification 3.0 fragment):
26+
^|A |The GET operation on selected resources SHALL support a query parameter "profile" with the following characteristics (using an OpenAPI Specification 3.1 fragment):
2727
2828
[source,YAML]
2929
----

extensions/schemas/standard/clause_14_profile_references.adoc

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
The Requirements Class "Profiles for references" specifies three profiles for representing references to other resources.
66

7-
NOTE: As with <<rc_references>>, this requirements class can probably be generalized to cover also other types of references, but this requires a better understanding about the types of references that have to be supported.
7+
The requirements stated in this Standard cover only simple cases. More complex cases, such as references to geospatial data in different collections, are not covered.
88

99
[cols="2,7",width="90%"]
1010
|===
@@ -30,13 +30,9 @@ For features, the query parameter "profile" will be applicable to the GET operat
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:
34-
35-
- 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" with a string value (a fixed collection).
3634
|===
3735

38-
NOTE: What should be provided, if "x-ogc-collectionId" is an array (that is, the referenced resources/features may be in different collections)? A string that combines the `collectionId` and `resourceId`? An object with `collectionId` and `resourceId` properties?
39-
4036
[[example_14_1]]
4137
.Encoding of a road accident feature in GeoJSON and profile "rel-as-key"
4238
====

extensions/schemas/standard/clause_2_conformance.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This Standard defines the following requirements classes, grouped by their stand
44

55
* Schema for a collection of data
66
** <<rc_schemas>> specifies basic provisions for schemas of items in a collection of geospatial data, for example, features, and the representation of a schema in JSON Schema.
7-
** <<rc_core-roles-features>> specifies additional property roles for feature data.
7+
** <<rc_advanced-property-roles>> specifies additional property roles for geospatial data, in particular, feature data.
88
** <<rc_references>> specifies additional provisions for properties that reference another resource.
99
** <<rc_profile-codelists>> specifies two profiles for representing values from a codelist in a schema.
1010
** <<rc_profile-domains>> specifies two profiles for representing value domains of a property in a schema.
@@ -25,13 +25,13 @@ Conformance with this Standard shall be checked using all the relevant tests spe
2525
|===
2626
|Conformance class |URI
2727
|Schemas |`\http://www.opengis.net/spec/{standard}/{m_n}/conf/schemas`
28-
|Core roles for features |`\http://www.opengis.net/spec/{standard}/{m_n}/conf/core-roles-features`
28+
|Core roles for features |`\http://www.opengis.net/spec/{standard}/{m_n}/conf/advanced-property-roles`
2929
|References |`\http://www.opengis.net/spec/{standard}/{m_n}/conf/references`
3030
|Returnables and Receivables |`\http://www.opengis.net/spec/{standard}/{m_n}/conf/returnables-and-receivables`
3131
|Queryables |`\http://www.opengis.net/spec/{standard}/{m_n}/conf/queryables`
3232
|Sortables |`\http://www.opengis.net/spec/{standard}/{m_n}/conf/sortables`
3333
|Profile query parameter |`\http://www.opengis.net/spec/{standard}/{m_n}/conf/profile-parameter`
34-
|Profiles for feature references |`\http://www.opengis.net/spec/{standard}/{m_n}/conf/profile-references`
34+
|Profiles for references |`\http://www.opengis.net/spec/{standard}/{m_n}/conf/profile-references`
3535
|Profiles for codelists |`\http://www.opengis.net/spec/{standard}/{m_n}/conf/profile-codelists`
3636
|Profiles for value domains |`\http://www.opengis.net/spec/{standard}/{m_n}/conf/profile-domains`
3737
|===

extensions/schemas/standard/clause_6_overview.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,4 @@ Profiles are a general mechanism that allows to support variations in the resour
6767

6868
To request one or more profiles, a query parameter "profile" can be used. The server determines the applicable profile(s) for the selected media type.
6969

70-
In total, four profiles are specified for schemas and three profiles are specified for feature data.
70+
In total, four profiles are specified for schemas and three profiles are specified for geospatial data.

extensions/schemas/standard/clause_7_schemas.adoc

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22
[#rc_{req-class}]
33
== Requirements Class "Schemas"
44

5-
The Requirements Class "Schemas" specifies basic provisions for schemas of items in a data collection, such as the features in a feature collection, and the representation of a schema in JSON Schema. The schema represents a logical model, independent of the format in which the web resource is encoded.
5+
The Requirements Class "Schemas" specifies basic provisions for schemas for a collection of geospatial data, such as the features in a feature collection, and the representation of a schema in JSON Schema.
6+
7+
The schema represents a logical model, independent of the format in which the data is encoded when a representation is requested via a HTTP request.
68

79
[cols="2,7",width="90%"]
810
|===
911
^|*Requirements Class* |http://www.opengis.net/spec/{standard}/{m_n}/req/{req-class}
10-
|Target type |Schema for a collection of data
12+
|Target type |Schema for a collection of geospatial data
1113
|Dependency |<<json-schema,JSON Schema: A Media Type for Describing JSON Documents>>
1214
|Indirect Dependency |<<json-schema-validation,JSON Schema Validation: A Vocabulary for Structural Validation of JSON>>
1315
|Indirect Dependency |<<ogc06_103r4,Simple feature access - Part 1: Common architecture>>
@@ -40,12 +42,11 @@ In addition to the JSON Schema data types, geospatial data typically also uses s
4042
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
4143
^|A |Each property SHALL include a "type" member, except for spatial properties.
4244
^|B |Each spatial property SHALL not include a "type" or "$ref" member.
43-
^|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 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.
45+
^|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.
4446
^|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).
4547
^|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.
4648
^|F |Properties that are only applicable when creating new data or updating existing data SHALL include "writeOnly: true".
4749
^|G |Properties that are only applicable when data is fetched SHALL include "readOnly: true".
48-
^|H |The "additionalProperties" member with a value of "true" (the default) or "false" is used to state the expected behavior with respect to properties that are not explicitly declared in the schema. If "additionalProperties" is set to "false", properties that are not explicitly declared in the schema SHALL NOT be allowed, otherwise they SHALL be allowed.
4950
|===
5051

5152
The following recommendations are intended to simplify parsing a schema and to help understanding the meaning and representation of the properties:
@@ -66,17 +67,19 @@ The following recommendations are intended to simplify parsing a schema and to h
6667
^|J |Properties that represent a 64-bit signed integer SHOULD be represented as an integer with format "int64" (defined in OpenAPI 3.1).
6768
^|K |Properties that represent a 32-bit unsigned integer SHOULD be represented as an integer with format "uint32".
6869
^|L |Properties that represent a 64-bit unsigned integer SHOULD be represented as an integer with format "uint64".
69-
^|M |In general, "format" values SHOULD be from the JSON Schema specifciation, the OpenAPI 3.1 specification or the OGC format register (to be established).
70+
^|M |In general, "format" values SHOULD be from the JSON Schema specifciation, the OpenAPI 3.1 specification or the OGC format register.
7071
^|N |For string properties, "minLength", "maxLength", "enum" and/or "pattern" SHOULD be provided, where applicable.
7172
^|O |For numeric properties, "multipleOf", "minimum", "exclusiveMinimum", "maximum", "exclusiveMaximum" SHOULD be provided, where applicable.
7273
^|P |For integer properties that represent enumerated values (except for codelist values), "enum" SHOULD be provided.
7374
^|Q |For string or integer properties that represent codelist values, one of the profiles "codelist-inline" or "codelist-ref" (see <<rc_profile-codelists>>) SHOULD be applied.
74-
^|R |For array properties, the property SHOULD consist of items that are strings or numbers.
75+
^|R |For array properties, the property SHOULD consist of items that are strings, numbers or objects.
7576
^|S |Required properties SHOULD be included in "required".
7677
^|T |The JSON Schema keywords SHOULD be constrained to those mentioned in this recommendation, requirement `/req/{req-class}/properties` and requirements in the _additional keywords_ section below.
7778
^|U |"$ref" SHOULD NOT be used, schemas that are reused SHOULD be dereferenced and represented inline.
7879
|===
7980

81+
NOTE: The OGC format register needs to be established.
82+
8083
[#additional-keywords]
8184
=== Additional keywords
8285

extensions/schemas/standard/clause_8_core_roles_for_features.adoc renamed to extensions/schemas/standard/clause_8_advanced_property_roles.adoc

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
1-
:req-class: core-roles-features
1+
:req-class: advanced-property-roles
22
[#rc_{req-class}]
3-
== Requirements Class "Core roles for features"
3+
== Requirements Class "Advanced property roles"
44

5-
The Requirements Class "Core roles for features" specifies additional property roles for feature data.
5+
The Requirements Class "Advanced property roles" specifies additional property roles for geospatial data. These roles are in particular applicable to feature data.
66

77
[cols="2,7",width="90%"]
88
|===
99
^|*Requirements Class* |http://www.opengis.net/spec/{standard}/{m_n}/req/{req-class}
10-
|Target type |Schema for a feature collection
10+
|Target type |Schema for a collection of geospatial data
1111
|Dependency |<<rc_schemas>>
1212
|===
1313

14-
To understand how features are encoded in a specific format, additional property roles need to be identified in the logical schema. These roles depend on the format.
14+
To understand how geospatial data is represented in a specific data format, additional property roles need to be identified in the logical schema. The mapping of the roles to the data representation depends on the format.
1515

16-
For example, the role "primary-geometry" is needed in feature types with multiple spatial properties to decide:
16+
For example, the role "primary-geometry" is needed in feature types with multiple spatial properties to decide, for example:
1717

1818
* Which geometry is encoded as the geometry of a feature in formats such as FlatGeobuf, Shapefile or Mapbox Vector Tiles, which only support a single geometry; or,
1919
* Which geometry is encoded in the "geometry" member in GeoJSON.
2020
21-
The other roles specified in this requirements class support feature formats that support representing primary temporal information or the type of the feature, such as JSON-FG.
21+
The other roles specified in this requirements class support formats that support representing primary temporal information or the type, such as JSON-FG.
2222

2323
=== Primary geometry
2424

25-
If the features have multiple spatial properties, the role "primary-geometry" can be used to identify the primary geometry of the features.
25+
If the schema defines multiple spatial properties, the role "primary-geometry" can be used to identify the primary geometry property.
2626

2727
:req: role-primary-geometry
2828
[#{req-class}_{req}]
@@ -38,7 +38,7 @@ NOTE: Since only a single property can be tagged in the schema as the primary ge
3838

3939
=== Primary temporal information
4040

41-
If the features have multiple temporal properties, the roles "primary-instant", "primary-interval-start" and "primary-interval-end" can be used to identify the primary temporal information of the features.
41+
If the schema defines multiple temporal properties, the roles "primary-instant", "primary-interval-start" and "primary-interval-end" can be used to identify the primary temporal information.
4242

4343
:req: role-primary-instant
4444
[#{req-class}_{req}]
@@ -68,20 +68,29 @@ If the features have multiple temporal properties, the roles "primary-instant",
6868
^|B |At most one property in a schema SHALL have "x-ogc-role" with a value "primary-interval-end".
6969
|===
7070

71-
:req: primary-temporal-constraints
71+
:req: role-primary-interval
7272
[#{req-class}_{req}]
7373
[width="90%",cols="2,7a"]
7474
|===
7575
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
76-
^|A |If a schema has a property with role "primary-instant", the schema SHALL NOT have properties with role "primary-interval-start" or "primary-interval-end".
77-
^|B |If a schema has properties with both roles "primary-interval-start" and "primary-interval-end", both properties SHALL have the same temporal granularity ("date" or "date-time").
76+
^|A |A property with "x-ogc-role" set to "primary-interval" SHALL be a temporal property.
77+
^|B |At most one property in a schema SHALL have "x-ogc-role" with a value "primary-interval".
7878
|===
7979

80-
NOTE: FUTURE WORK? Consider adding a role "primary-interval" with a proper representation of an interval, e.g., the interval representation in JSON-FG (an array with two dates or timestamps).
80+
:req: primary-temporal-constraints
81+
[#{req-class}_{req}]
82+
[width="90%",cols="2,7a"]
83+
|===
84+
^|*Requirement {counter:req-num}* |/req/{req-class}/{req}
85+
^|A |If a schema has a property with role "primary-instant", the schema SHALL NOT have properties with role "primary-interval-start", "primary-interval-end", or "primary-interval".
86+
^|B |If a schema has a property with role "primary-interval", the schema SHALL NOT have properties with role "primary-interval-start", "primary-interval-end", or "primary-instant".
87+
^|C |If a schema has properties with both roles "primary-interval-start" and "primary-interval-end", both properties SHALL have the same temporal granularity ("date" or "date-time").
88+
^|D |If a schema has a property with only one the roles "primary-interval-start" or "primary-interval-end", the primary temporal information SHALL be the half-bounded interval with the specified start or end.
89+
|===
8190

82-
=== Feature type
91+
=== Type
8392

84-
If the features have a property that represents the feature type, the role "type" can be used for this property.
93+
If the data is organized as features with a property representing the feature type, the role "type" can be used for this property.
8594

8695
:req: role-type
8796
[#{req-class}_{req}]

0 commit comments

Comments
 (0)