diff --git a/examples/base/water-body-disputed.yaml b/examples/base/water-body-disputed.yaml new file mode 100644 index 00000000..a8e777d3 --- /dev/null +++ b/examples/base/water-body-disputed.yaml @@ -0,0 +1,29 @@ +--- +type: Feature +geometry: + type: Polygon + coordinates: [[-91.8307764, 43.7899936], [-91.8309309, 43.7901326], [-91.8315202, 43.7906232], [-91.8320790, 43.7911798], [-91.8325770, 43.7917638], [-91.8328390, 43.7921615] ] +properties: + theme: base + type: water + subtype: ocean + class: ocean + names: + primary: Gulf of Gerdaus Mercator + rules: + - variant: disputed + language: en + value: Gulf of Cartographer's Tears + source_tags: + water: ocean + sources: + - record_id: w1234567 + property: "" + dataset: OpenStreetMap + is_salt: false + is_intermittent: false + is_disputed: true + perspectives: + mode: disputed_by + countries: [XX] # Random country disputing the actual feature + version: 0 diff --git a/schema/base/defs.yaml b/schema/base/defs.yaml index 930557fd..47d10f70 100644 --- a/schema/base/defs.yaml +++ b/schema/base/defs.yaml @@ -48,6 +48,22 @@ description: Common schema definitions the base theme (primarily from OSM) - unpaved - wood - woodchips + perspectives: + description: Political perspectives from which division is viewed. + type: object + unevaluatedProperties: false + required: [mode, countries] + properties: + mode: + description: Whether perspective holder accept or dispute this division. + type: string + enum: [accepted_by, disputed_by] + countries: + description: Countries holding the given mode of perspective. + type: array + items: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/iso3166_1Alpha2CountryCode" } + minItems: 1 + uniqueItems: true propertyContainers: osmPropertiesContainer: title: "OSM Properties" diff --git a/schema/base/water.yaml b/schema/base/water.yaml index 3db107ed..584f3aba 100644 --- a/schema/base/water.yaml +++ b/schema/base/water.yaml @@ -86,3 +86,44 @@ properties: is_intermittent: description: Is it intermittent water or not type: boolean + is_disputed: + description: >- + Indicator if there are entities disputing this division boundary. + Information about entities disputing this boundary should be included in perspectives + property. + + This property should also be true if boundary between two entities is unclear + and this is "best guess". So having it true and no perspectives gives map creators + reason not to fully trust the boundary, but use it if they have no other. + type: boolean + perspectives: + description: >- + Political perspectives from which this division boundary is considered + to be an accurate representation. + + If this property is absent, then this boundary is not known to + be disputed from any political perspective. Consequently, + there is only one boundary feature representing the entire + real world entity. + + If this property is present, it means the boundary represents + one of several alternative perspectives on the same real-world + entity. + + There are two modes of perspective: + + 1. `accepted_by` means the representation of the boundary is + accepted by the listed entities and would be included on + a map drawn from their perspective. + + 2. `disputed_by` means the representation of the boundary is + disputed by the listed entities and would be excluded + from a map drawn from their perspective. + + When drawing a map from the perspective of a given country, + one would start by gathering all the undisputed boundary + (with no `perspectives` property), and then adding to that + first all boundary explicitly accepted by the country, and + second all boundary not explicitly disputed by the country. + allOf: + - "$ref": "./defs.yaml#/$defs/propertyDefinitions/perspectives" diff --git a/schema/defs.yaml b/schema/defs.yaml index 9f98a935..3eb00fa8 100644 --- a/schema/defs.yaml +++ b/schema/defs.yaml @@ -198,6 +198,7 @@ description: Common schema definitions shared by all themes - official - alternate - short + - disputed language: { "$ref": "#/$defs/propertyDefinitions/language" } value: type: string