From b5ecb2c36b1950dca8dc12618f4e2dc3c3e57ed6 Mon Sep 17 00:00:00 2001 From: Seth Fitzsimmons Date: Mon, 24 Aug 2026 13:39:16 -0700 Subject: [PATCH] feat(transportation)!: make segment connectors required `connectors` was optional with a `[]` default that its own `min_length=2` constraint rejected. Pydantic does not validate defaults unless `validate_default=True`, so the invalid value was accepted on the way in and refused on the way back out: a segment built without connectors dumped to `connectors: []`, which re-validation rejected. Every segment is physically connected to at least two connectors, and the published data agrees -- across all 350,469,378 segments in release 2026-08-19.0 there is not one null, empty, or single-element `connectors`. So the field becomes required rather than optional-with-a-default, and moves up beside `subtype` in the model's required section. The YAML schema gains `connectors` in its segment `required` list, dropping the matching `default: []` beside `minItems: 2`. Every valid segment example gains a two-connector array, and so does every segment counterexample that was not testing connectors, so each keeps failing only for the defect it names. Both corpora are updated: `reference/` (read by the test suite) and the root `examples/`/`counterexamples/` trees (the docs site symlinks `examples/`). `theme-type-mismatch.json` is left alone -- it declares `theme: buildings` with `type: segment` and never reaches a segment arm. Fixes #669 Signed-off-by: Seth Fitzsimmons --- .../common/names/names-invalid-language.yaml | 5 +++++ .../common/names/names-invalid-variant.yaml | 5 +++++ .../transportation/segment/bad-geometry-type.json | 4 ++++ .../segment/bad-lr-width-missing-items.json | 4 ++++ .../transportation/segment/bad-lr-width.json | 4 ++++ .../transportation/segment/missing-subtype.json | 6 +++++- .../transportation/segment/missing-version.json | 6 +++++- .../segment/property-subtype-mismatch.yaml | 5 +++++ .../transportation/segment/rail/bad-rail-class.json | 6 +++++- .../segment/rail/bad-rail-flags-duplicate-flag.json | 4 ++++ .../segment/rail/bad-rail-flags-invalid-flag.json | 4 ++++ .../transportation/segment/road/bad-road-class.json | 6 +++++- .../segment/road/bad-road-flags-duplicate-flag.json | 4 ++++ .../segment/road/bad-road-flags-invalid-flag.json | 4 ++++ .../road/bad-road-flags-invalid-is_private-flag.json | 4 ++++ .../road/bad-road-flags-invalid-string-value.json | 4 ++++ .../road/bad-road-invalid-temporal-scoping.json | 4 ++++ .../road/bad-road-surface-invalid-rule-value.json | 4 ++++ .../access/bad-access-unsupported-properties.yaml | 5 +++++ .../unsupported-properties.yaml | 5 +++++ .../speed_limits/bad-speed-limits-empty-rule.json | 4 ++++ .../speed_limits/bad-speed-limits-invalid-type.json | 4 ++++ .../names/names-lexically-valid-language-tag.yaml | 5 +++++ examples/common/timestamp/timestamp-leap-second.yaml | 5 +++++ .../docusaurus/access-restriction-01-blanket.yaml | 5 +++++ ...access-restriction-02-private-with-deliveries.yaml | 5 +++++ ...estriction-03-motor-vehicles-destination-only.yaml | 5 +++++ .../docusaurus/access-restriction-04-axle-limit.yaml | 5 +++++ .../transportation/docusaurus/geometric-scoping.yaml | 5 +++++ .../docusaurus/speed-limits-01-simple.yaml | 5 +++++ .../docusaurus/speed-limits-02-directional.yaml | 5 +++++ .../docusaurus/speed-limits-03-variable-max.yaml | 5 +++++ .../docusaurus/subjective-heading-scoping.yaml | 5 +++++ .../docusaurus/subjective-status-scoping.yaml | 5 +++++ .../docusaurus/subjective-usage-purpose-scoping.yaml | 5 +++++ .../subjective-vehicle-attributes-scoping.yaml | 5 +++++ .../transportation/docusaurus/temporal-scoping.yaml | 5 +++++ .../transportation/segment/missing-update-time.json | 6 +++++- .../transportation/segment/rail/rail-freight.yaml | 5 +++++ examples/transportation/segment/rail/rail-tunnel.yaml | 5 +++++ .../road/restrictions/road-restrictions-access.yaml | 5 +++++ .../road-restrictions-prohibited-transitions.yaml | 5 +++++ .../restrictions/road-restrictions-speed-limits.yaml | 5 +++++ .../transportation/segment/road/road-abandoned.yaml | 5 +++++ .../segment/road/road-acesss-restriction.yaml | 5 +++++ examples/transportation/segment/road/road-alley.yaml | 5 +++++ .../transportation/segment/road/road-covered.yaml | 5 +++++ .../transportation/segment/road/road-indoors.yaml | 5 +++++ examples/transportation/segment/road/road-level.yaml | 5 +++++ examples/transportation/segment/road/road-path.yaml | 5 +++++ .../changelog.d/669.breaking.md | 1 + .../overture/schema/transportation/segment/_common.py | 11 ++++++----- .../tests/segment_baseline_schema.json | 8 ++++---- .../common/names/names-invalid-language.yaml | 5 +++++ .../common/names/names-invalid-variant.yaml | 5 +++++ .../transportation/segment/bad-geometry-type.json | 4 ++++ .../segment/bad-lr-width-missing-items.json | 4 ++++ .../transportation/segment/bad-lr-width.json | 4 ++++ .../segment/bad-rail-flags-wrong-subtype.yaml | 5 +++++ .../transportation/segment/missing-subtype.json | 6 +++++- .../transportation/segment/missing-version.json | 6 +++++- .../segment/property-subtype-mismatch.yaml | 5 +++++ .../segment/rail/bad-rail-class-invalid.yaml | 5 +++++ .../transportation/segment/rail/bad-rail-class.json | 6 +++++- .../segment/rail/bad-rail-flags-duplicate-flag.json | 4 ++++ .../segment/rail/bad-rail-flags-invalid-flag.json | 4 ++++ .../segment/road/bad-road-class-invalid.yaml | 5 +++++ .../transportation/segment/road/bad-road-class.json | 6 +++++- .../segment/road/bad-road-flags-duplicate-flag.json | 4 ++++ .../segment/road/bad-road-flags-invalid-flag.json | 4 ++++ .../road/bad-road-flags-invalid-is_private-flag.json | 4 ++++ .../road/bad-road-flags-invalid-string-value.json | 4 ++++ .../road/bad-road-invalid-temporal-scoping.json | 4 ++++ .../road/bad-road-surface-invalid-rule-value.json | 4 ++++ .../access/bad-access-unsupported-properties.yaml | 5 +++++ .../unsupported-properties.yaml | 5 +++++ .../speed_limits/bad-speed-limits-empty-rule.json | 4 ++++ .../speed_limits/bad-speed-limits-invalid-type.json | 4 ++++ .../names/names-lexically-valid-language-tag.yaml | 5 +++++ .../common/timestamp/timestamp-leap-second.yaml | 5 +++++ .../docusaurus/access-restriction-01-blanket.yaml | 5 +++++ ...access-restriction-02-private-with-deliveries.yaml | 5 +++++ ...estriction-03-motor-vehicles-destination-only.yaml | 5 +++++ .../docusaurus/access-restriction-04-axle-limit.yaml | 5 +++++ .../transportation/docusaurus/geometric-scoping.yaml | 5 +++++ .../docusaurus/speed-limits-01-simple.yaml | 5 +++++ .../docusaurus/speed-limits-02-directional.yaml | 5 +++++ .../docusaurus/speed-limits-03-variable-max.yaml | 5 +++++ .../docusaurus/subjective-heading-scoping.yaml | 5 +++++ .../docusaurus/subjective-status-scoping.yaml | 5 +++++ .../docusaurus/subjective-usage-purpose-scoping.yaml | 5 +++++ .../subjective-vehicle-attributes-scoping.yaml | 5 +++++ .../transportation/docusaurus/temporal-scoping.yaml | 5 +++++ .../transportation/segment/missing-update-time.json | 6 +++++- .../transportation/segment/rail/rail-freight.yaml | 5 +++++ .../transportation/segment/rail/rail-tunnel.yaml | 5 +++++ .../road/restrictions/road-restrictions-access.yaml | 5 +++++ .../road-restrictions-prohibited-transitions.yaml | 5 +++++ .../restrictions/road-restrictions-speed-limits.yaml | 5 +++++ .../transportation/segment/road/road-abandoned.yaml | 5 +++++ .../segment/road/road-acesss-restriction.yaml | 5 +++++ .../transportation/segment/road/road-alley.yaml | 5 +++++ .../transportation/segment/road/road-covered.yaml | 5 +++++ .../transportation/segment/road/road-indoors.yaml | 5 +++++ .../transportation/segment/road/road-level.yaml | 5 +++++ .../transportation/segment/road/road-path.yaml | 5 +++++ schema/transportation/segment.yaml | 3 +-- 107 files changed, 501 insertions(+), 21 deletions(-) create mode 100644 packages/overture-schema-theme-transportation/changelog.d/669.breaking.md diff --git a/counterexamples/common/names/names-invalid-language.yaml b/counterexamples/common/names/names-invalid-language.yaml index e3345152d..01a43481a 100644 --- a/counterexamples/common/names/names-invalid-language.yaml +++ b/counterexamples/common/names/names-invalid-language.yaml @@ -10,6 +10,11 @@ properties: version: 1 subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 names: primary: Foo common: diff --git a/counterexamples/common/names/names-invalid-variant.yaml b/counterexamples/common/names/names-invalid-variant.yaml index 5949ecd0a..3714a66d8 100644 --- a/counterexamples/common/names/names-invalid-variant.yaml +++ b/counterexamples/common/names/names-invalid-variant.yaml @@ -10,6 +10,11 @@ properties: version: 1 subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 names: primary: Bar rules: diff --git a/counterexamples/transportation/segment/bad-geometry-type.json b/counterexamples/transportation/segment/bad-geometry-type.json index 050848739..b6b86fb8a 100644 --- a/counterexamples/transportation/segment/bad-geometry-type.json +++ b/counterexamples/transportation/segment/bad-geometry-type.json @@ -12,6 +12,10 @@ "theme": "transportation", "type": "segment", "subtype": "water", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "version": 15 } } diff --git a/counterexamples/transportation/segment/bad-lr-width-missing-items.json b/counterexamples/transportation/segment/bad-lr-width-missing-items.json index 4f66c9fd3..f4daf28d7 100644 --- a/counterexamples/transportation/segment/bad-lr-width-missing-items.json +++ b/counterexamples/transportation/segment/bad-lr-width-missing-items.json @@ -11,6 +11,10 @@ "version": 26, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "width_rules": [], "ext_expected_errors": [ "minItems: got 0, want 1" diff --git a/counterexamples/transportation/segment/bad-lr-width.json b/counterexamples/transportation/segment/bad-lr-width.json index d09dff370..d6e95cbd5 100644 --- a/counterexamples/transportation/segment/bad-lr-width.json +++ b/counterexamples/transportation/segment/bad-lr-width.json @@ -11,6 +11,10 @@ "version": 26, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "width_rules": [ { "between" : [0, 0.5], diff --git a/counterexamples/transportation/segment/missing-subtype.json b/counterexamples/transportation/segment/missing-subtype.json index f1e248232..b43a7d684 100644 --- a/counterexamples/transportation/segment/missing-subtype.json +++ b/counterexamples/transportation/segment/missing-subtype.json @@ -11,6 +11,10 @@ ], "theme": "transportation", "type": "segment", - "version": 26 + "version": 26, + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ] } } diff --git a/counterexamples/transportation/segment/missing-version.json b/counterexamples/transportation/segment/missing-version.json index 6c8f16768..0c7c013c3 100644 --- a/counterexamples/transportation/segment/missing-version.json +++ b/counterexamples/transportation/segment/missing-version.json @@ -11,6 +11,10 @@ ], "theme": "transportation", "type": "segment", - "subtype": "water" + "subtype": "water", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ] } } diff --git a/counterexamples/transportation/segment/property-subtype-mismatch.yaml b/counterexamples/transportation/segment/property-subtype-mismatch.yaml index 125526b27..cdfd4d64b 100644 --- a/counterexamples/transportation/segment/property-subtype-mismatch.yaml +++ b/counterexamples/transportation/segment/property-subtype-mismatch.yaml @@ -10,6 +10,11 @@ properties: version: 1 # Segment of subtype rail has a road flag (should be disallowed) subtype: rail + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 road_flags: - values: [is_indoor] ext_expected_errors: diff --git a/counterexamples/transportation/segment/rail/bad-rail-class.json b/counterexamples/transportation/segment/rail/bad-rail-class.json index bfac6b188..3845cc89e 100644 --- a/counterexamples/transportation/segment/rail/bad-rail-class.json +++ b/counterexamples/transportation/segment/rail/bad-rail-class.json @@ -13,6 +13,10 @@ "type": "segment", "version": 18, "subtype": "rail", - "class": "foo" + "class": "foo", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ] } } diff --git a/counterexamples/transportation/segment/rail/bad-rail-flags-duplicate-flag.json b/counterexamples/transportation/segment/rail/bad-rail-flags-duplicate-flag.json index e60cb3dee..fa42d2431 100644 --- a/counterexamples/transportation/segment/rail/bad-rail-flags-duplicate-flag.json +++ b/counterexamples/transportation/segment/rail/bad-rail-flags-duplicate-flag.json @@ -14,6 +14,10 @@ "version": 19, "subtype": "rail", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "rail_flags": [ { "values": ["is_freight", "is_freight"] diff --git a/counterexamples/transportation/segment/rail/bad-rail-flags-invalid-flag.json b/counterexamples/transportation/segment/rail/bad-rail-flags-invalid-flag.json index 6616098c2..64e630ecf 100644 --- a/counterexamples/transportation/segment/rail/bad-rail-flags-invalid-flag.json +++ b/counterexamples/transportation/segment/rail/bad-rail-flags-invalid-flag.json @@ -14,6 +14,10 @@ "version": 20, "subtype": "rail", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "rail_flags": [ { "values": ["foo"] diff --git a/counterexamples/transportation/segment/road/bad-road-class.json b/counterexamples/transportation/segment/road/bad-road-class.json index 99ae8f720..ba7a68842 100644 --- a/counterexamples/transportation/segment/road/bad-road-class.json +++ b/counterexamples/transportation/segment/road/bad-road-class.json @@ -13,6 +13,10 @@ "type": "segment", "version": 18, "subtype": "road", - "class": "foo" + "class": "foo", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ] } } diff --git a/counterexamples/transportation/segment/road/bad-road-flags-duplicate-flag.json b/counterexamples/transportation/segment/road/bad-road-flags-duplicate-flag.json index 7be03fcca..b4f2178ee 100644 --- a/counterexamples/transportation/segment/road/bad-road-flags-duplicate-flag.json +++ b/counterexamples/transportation/segment/road/bad-road-flags-duplicate-flag.json @@ -14,6 +14,10 @@ "version": 19, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "road_flags": [ { "values": ["is_tunnel", "is_tunnel"] diff --git a/counterexamples/transportation/segment/road/bad-road-flags-invalid-flag.json b/counterexamples/transportation/segment/road/bad-road-flags-invalid-flag.json index 52d961a14..1f284a860 100644 --- a/counterexamples/transportation/segment/road/bad-road-flags-invalid-flag.json +++ b/counterexamples/transportation/segment/road/bad-road-flags-invalid-flag.json @@ -14,6 +14,10 @@ "version": 20, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "road_flags": [ { "values": ["foo"] diff --git a/counterexamples/transportation/segment/road/bad-road-flags-invalid-is_private-flag.json b/counterexamples/transportation/segment/road/bad-road-flags-invalid-is_private-flag.json index f300935e5..021cba366 100644 --- a/counterexamples/transportation/segment/road/bad-road-flags-invalid-is_private-flag.json +++ b/counterexamples/transportation/segment/road/bad-road-flags-invalid-is_private-flag.json @@ -11,6 +11,10 @@ "version": 20, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "road_flags": [ { "values": ["is_private"] diff --git a/counterexamples/transportation/segment/road/bad-road-flags-invalid-string-value.json b/counterexamples/transportation/segment/road/bad-road-flags-invalid-string-value.json index 3cb0ac37f..147faa3d2 100644 --- a/counterexamples/transportation/segment/road/bad-road-flags-invalid-string-value.json +++ b/counterexamples/transportation/segment/road/bad-road-flags-invalid-string-value.json @@ -14,6 +14,10 @@ "version": 20, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "road_flags": ["is_tunnel"] } } diff --git a/counterexamples/transportation/segment/road/bad-road-invalid-temporal-scoping.json b/counterexamples/transportation/segment/road/bad-road-invalid-temporal-scoping.json index 258526782..0abd3d1b3 100644 --- a/counterexamples/transportation/segment/road/bad-road-invalid-temporal-scoping.json +++ b/counterexamples/transportation/segment/road/bad-road-invalid-temporal-scoping.json @@ -11,6 +11,10 @@ "version": 20, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "road_flags": [ { "values": ["is_bridge"] diff --git a/counterexamples/transportation/segment/road/bad-road-surface-invalid-rule-value.json b/counterexamples/transportation/segment/road/bad-road-surface-invalid-rule-value.json index 3c29cd43f..2c929767c 100644 --- a/counterexamples/transportation/segment/road/bad-road-surface-invalid-rule-value.json +++ b/counterexamples/transportation/segment/road/bad-road-surface-invalid-rule-value.json @@ -11,6 +11,10 @@ "version": 23, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "road_surface": [ { "value": "hot mess" diff --git a/counterexamples/transportation/segment/road/restrictions/access/bad-access-unsupported-properties.yaml b/counterexamples/transportation/segment/road/restrictions/access/bad-access-unsupported-properties.yaml index eccb7a9e9..b39cdc4bf 100644 --- a/counterexamples/transportation/segment/road/restrictions/access/bad-access-unsupported-properties.yaml +++ b/counterexamples/transportation/segment/road/restrictions/access/bad-access-unsupported-properties.yaml @@ -8,6 +8,11 @@ properties: type: segment subtype: road class: tertiary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 version: 1 access_restrictions: - foo: bar diff --git a/counterexamples/transportation/segment/road/restrictions/prohibited_transitions/unsupported-properties.yaml b/counterexamples/transportation/segment/road/restrictions/prohibited_transitions/unsupported-properties.yaml index c96e13923..6936bf1a3 100644 --- a/counterexamples/transportation/segment/road/restrictions/prohibited_transitions/unsupported-properties.yaml +++ b/counterexamples/transportation/segment/road/restrictions/prohibited_transitions/unsupported-properties.yaml @@ -8,6 +8,11 @@ properties: type: segment subtype: road class: residential + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 version: 1 prohibited_transitions: - sequence: diff --git a/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-empty-rule.json b/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-empty-rule.json index 833e57006..f212c9e38 100644 --- a/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-empty-rule.json +++ b/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-empty-rule.json @@ -11,6 +11,10 @@ "version": 26, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "speed_limits": [ {} ], diff --git a/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-invalid-type.json b/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-invalid-type.json index 02d230881..04f155b0d 100644 --- a/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-invalid-type.json +++ b/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-invalid-type.json @@ -11,6 +11,10 @@ "version": 0, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "speed_limits": {}, "ext_expected_errors": [ "'/properties/speed_limits' [S#/$defs/propertyContainers/speedLimitsContainer/type]: got object, want array" diff --git a/examples/common/names/names-lexically-valid-language-tag.yaml b/examples/common/names/names-lexically-valid-language-tag.yaml index a20a315ac..dbd74326d 100644 --- a/examples/common/names/names-lexically-valid-language-tag.yaml +++ b/examples/common/names/names-lexically-valid-language-tag.yaml @@ -10,6 +10,11 @@ properties: version: 1 subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 names: primary: foo common: diff --git a/examples/common/timestamp/timestamp-leap-second.yaml b/examples/common/timestamp/timestamp-leap-second.yaml index 14b6d7d7f..0d4465f8f 100644 --- a/examples/common/timestamp/timestamp-leap-second.yaml +++ b/examples/common/timestamp/timestamp-leap-second.yaml @@ -9,4 +9,9 @@ properties: type: segment subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 version: 1 diff --git a/examples/transportation/docusaurus/access-restriction-01-blanket.yaml b/examples/transportation/docusaurus/access-restriction-01-blanket.yaml index 87cac406a..47133c706 100644 --- a/examples/transportation/docusaurus/access-restriction-01-blanket.yaml +++ b/examples/transportation/docusaurus/access-restriction-01-blanket.yaml @@ -12,5 +12,10 @@ properties: version: 1 subtype: road class: residential + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied diff --git a/examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml b/examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml index 80a02ad75..aeb0b8c41 100644 --- a/examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml +++ b/examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml @@ -12,6 +12,11 @@ properties: version: 1 subtype: road class: residential + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied - access_type: allowed diff --git a/examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml b/examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml index a494b2e22..1f20c202e 100644 --- a/examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml +++ b/examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml @@ -12,6 +12,11 @@ properties: version: 1 subtype: road class: residential + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied when: { mode: [motor_vehicle] } diff --git a/examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml b/examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml index 4a176d983..ea78bf00d 100644 --- a/examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml +++ b/examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml @@ -12,6 +12,11 @@ properties: version: 1 subtype: road class: motorway + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied when: diff --git a/examples/transportation/docusaurus/geometric-scoping.yaml b/examples/transportation/docusaurus/geometric-scoping.yaml index 86f5f58d7..d9547e0cc 100644 --- a/examples/transportation/docusaurus/geometric-scoping.yaml +++ b/examples/transportation/docusaurus/geometric-scoping.yaml @@ -10,6 +10,11 @@ properties: version: 1 subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 speed_limits: - between: [0, 0.15] max_speed: diff --git a/examples/transportation/docusaurus/speed-limits-01-simple.yaml b/examples/transportation/docusaurus/speed-limits-01-simple.yaml index 30bea71ce..e13aa6c74 100644 --- a/examples/transportation/docusaurus/speed-limits-01-simple.yaml +++ b/examples/transportation/docusaurus/speed-limits-01-simple.yaml @@ -12,6 +12,11 @@ properties: version: 1 subtype: road class: residential + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 speed_limits: - max_speed: value: 30 diff --git a/examples/transportation/docusaurus/speed-limits-02-directional.yaml b/examples/transportation/docusaurus/speed-limits-02-directional.yaml index 8f30bb69a..eed35c7fc 100644 --- a/examples/transportation/docusaurus/speed-limits-02-directional.yaml +++ b/examples/transportation/docusaurus/speed-limits-02-directional.yaml @@ -12,6 +12,11 @@ properties: version: 2 subtype: road class: secondary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 speed_limits: - max_speed: {value: 70, unit: "mph"} - when: diff --git a/examples/transportation/docusaurus/speed-limits-03-variable-max.yaml b/examples/transportation/docusaurus/speed-limits-03-variable-max.yaml index 0aeca3887..34960bd16 100644 --- a/examples/transportation/docusaurus/speed-limits-03-variable-max.yaml +++ b/examples/transportation/docusaurus/speed-limits-03-variable-max.yaml @@ -14,6 +14,11 @@ properties: version: 1 subtype: road class: motorway + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 speed_limits: - max_speed: value: 100 diff --git a/examples/transportation/docusaurus/subjective-heading-scoping.yaml b/examples/transportation/docusaurus/subjective-heading-scoping.yaml index d01d0bf80..3d3c04fdb 100644 --- a/examples/transportation/docusaurus/subjective-heading-scoping.yaml +++ b/examples/transportation/docusaurus/subjective-heading-scoping.yaml @@ -16,6 +16,11 @@ properties: version: 2 subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied when: { heading: backward } diff --git a/examples/transportation/docusaurus/subjective-status-scoping.yaml b/examples/transportation/docusaurus/subjective-status-scoping.yaml index d2f86bdf3..f25bc02e3 100644 --- a/examples/transportation/docusaurus/subjective-status-scoping.yaml +++ b/examples/transportation/docusaurus/subjective-status-scoping.yaml @@ -13,6 +13,11 @@ properties: version: 1 subtype: road class: tertiary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied - access_type: allowed diff --git a/examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml b/examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml index 8cef7b3ba..fe85f2282 100644 --- a/examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml +++ b/examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml @@ -12,6 +12,11 @@ properties: version: 1 subtype: road class: tertiary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied - access_type: allowed diff --git a/examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml b/examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml index 44e4563e0..298849865 100644 --- a/examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml +++ b/examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml @@ -13,6 +13,11 @@ properties: version: 1 subtype: road class: residential + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied when: diff --git a/examples/transportation/docusaurus/temporal-scoping.yaml b/examples/transportation/docusaurus/temporal-scoping.yaml index c8a56dd4b..c25681a77 100644 --- a/examples/transportation/docusaurus/temporal-scoping.yaml +++ b/examples/transportation/docusaurus/temporal-scoping.yaml @@ -13,6 +13,11 @@ properties: version: 2 subtype: road class: unknown + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied when: diff --git a/examples/transportation/segment/missing-update-time.json b/examples/transportation/segment/missing-update-time.json index d564bdbf7..be9a0c584 100644 --- a/examples/transportation/segment/missing-update-time.json +++ b/examples/transportation/segment/missing-update-time.json @@ -11,6 +11,10 @@ "theme": "transportation", "type": "segment", "version": 27, - "subtype": "water" + "subtype": "water", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ] } } diff --git a/examples/transportation/segment/rail/rail-freight.yaml b/examples/transportation/segment/rail/rail-freight.yaml index 41bf6f75a..e2b16afd5 100644 --- a/examples/transportation/segment/rail/rail-freight.yaml +++ b/examples/transportation/segment/rail/rail-freight.yaml @@ -12,6 +12,11 @@ properties: version: 3 subtype: rail class: standard_gauge + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 names: primary: Generic Rail Name rail_flags: diff --git a/examples/transportation/segment/rail/rail-tunnel.yaml b/examples/transportation/segment/rail/rail-tunnel.yaml index 6f9df9c3e..943f53d17 100644 --- a/examples/transportation/segment/rail/rail-tunnel.yaml +++ b/examples/transportation/segment/rail/rail-tunnel.yaml @@ -12,6 +12,11 @@ properties: version: 3 subtype: rail class: subway + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 names: primary: Generic Rail Name rail_flags: diff --git a/examples/transportation/segment/road/restrictions/road-restrictions-access.yaml b/examples/transportation/segment/road/restrictions/road-restrictions-access.yaml index 9b4c623f2..53f1aa8ab 100644 --- a/examples/transportation/segment/road/restrictions/road-restrictions-access.yaml +++ b/examples/transportation/segment/road/restrictions/road-restrictions-access.yaml @@ -9,6 +9,11 @@ properties: type: segment subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 version: 2 access_restrictions: - access_type: denied diff --git a/examples/transportation/segment/road/restrictions/road-restrictions-prohibited-transitions.yaml b/examples/transportation/segment/road/restrictions/road-restrictions-prohibited-transitions.yaml index ea7f8c7c7..be8e2add8 100644 --- a/examples/transportation/segment/road/restrictions/road-restrictions-prohibited-transitions.yaml +++ b/examples/transportation/segment/road/restrictions/road-restrictions-prohibited-transitions.yaml @@ -9,6 +9,11 @@ properties: type: segment subtype: road class: secondary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 version: 2 prohibited_transitions: - sequence: diff --git a/examples/transportation/segment/road/restrictions/road-restrictions-speed-limits.yaml b/examples/transportation/segment/road/restrictions/road-restrictions-speed-limits.yaml index ac229da48..0f17269d8 100644 --- a/examples/transportation/segment/road/restrictions/road-restrictions-speed-limits.yaml +++ b/examples/transportation/segment/road/restrictions/road-restrictions-speed-limits.yaml @@ -9,6 +9,11 @@ properties: type: segment subtype: road class: tertiary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 version: 3 speed_limits: - max_speed: {value: 20, unit: 'km/h'} diff --git a/examples/transportation/segment/road/road-abandoned.yaml b/examples/transportation/segment/road/road-abandoned.yaml index de6b0207f..3882f1922 100644 --- a/examples/transportation/segment/road/road-abandoned.yaml +++ b/examples/transportation/segment/road/road-abandoned.yaml @@ -11,6 +11,11 @@ properties: version: 3 subtype: road class: tertiary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 road_surface: - value: gravel road_flags: diff --git a/examples/transportation/segment/road/road-acesss-restriction.yaml b/examples/transportation/segment/road/road-acesss-restriction.yaml index 345ccafaf..aaf55203b 100644 --- a/examples/transportation/segment/road/road-acesss-restriction.yaml +++ b/examples/transportation/segment/road/road-acesss-restriction.yaml @@ -17,6 +17,11 @@ properties: version: 5 subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied - access_type: designated diff --git a/examples/transportation/segment/road/road-alley.yaml b/examples/transportation/segment/road/road-alley.yaml index 84c7ff6d8..118c64b1a 100644 --- a/examples/transportation/segment/road/road-alley.yaml +++ b/examples/transportation/segment/road/road-alley.yaml @@ -10,6 +10,11 @@ properties: version: 5 subtype: road class: service + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 subclass_rules: - value: alley between: [0, 0.5] diff --git a/examples/transportation/segment/road/road-covered.yaml b/examples/transportation/segment/road/road-covered.yaml index 5083fa330..483eb28ce 100644 --- a/examples/transportation/segment/road/road-covered.yaml +++ b/examples/transportation/segment/road/road-covered.yaml @@ -11,6 +11,11 @@ properties: version: 3 subtype: road class: tertiary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 road_surface: - value: paved road_flags: diff --git a/examples/transportation/segment/road/road-indoors.yaml b/examples/transportation/segment/road/road-indoors.yaml index 218934cce..74a8767c1 100644 --- a/examples/transportation/segment/road/road-indoors.yaml +++ b/examples/transportation/segment/road/road-indoors.yaml @@ -11,6 +11,11 @@ properties: version: 1 subtype: road class: tertiary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 road_surface: - value: unknown road_flags: diff --git a/examples/transportation/segment/road/road-level.yaml b/examples/transportation/segment/road/road-level.yaml index c3233db78..af48a1b07 100644 --- a/examples/transportation/segment/road/road-level.yaml +++ b/examples/transportation/segment/road/road-level.yaml @@ -10,6 +10,11 @@ properties: subtype: road version: 2 class: residential + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 level_rules: - value: -1 between: [0, 0.5] diff --git a/examples/transportation/segment/road/road-path.yaml b/examples/transportation/segment/road/road-path.yaml index e892f5c4b..8b3b7ffca 100644 --- a/examples/transportation/segment/road/road-path.yaml +++ b/examples/transportation/segment/road/road-path.yaml @@ -10,3 +10,8 @@ properties: version: 5 subtype: road class: path + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 diff --git a/packages/overture-schema-theme-transportation/changelog.d/669.breaking.md b/packages/overture-schema-theme-transportation/changelog.d/669.breaking.md new file mode 100644 index 000000000..0b5ad114d --- /dev/null +++ b/packages/overture-schema-theme-transportation/changelog.d/669.breaking.md @@ -0,0 +1 @@ +Made segment `connectors` a required field. It previously defaulted to an empty list, a value its own `min_length=2` constraint rejected, so a segment without connectors failed re-validation after a dump. Every segment in published Overture data already carries two or more connectors. diff --git a/packages/overture-schema-theme-transportation/src/overture/schema/transportation/segment/_common.py b/packages/overture-schema-theme-transportation/src/overture/schema/transportation/segment/_common.py index 8c21c8317..03c27bbae 100644 --- a/packages/overture-schema-theme-transportation/src/overture/schema/transportation/segment/_common.py +++ b/packages/overture-schema-theme-transportation/src/overture/schema/transportation/segment/_common.py @@ -168,12 +168,9 @@ class TransportationSegment( SegmentSubtype, Field(description="Broad category of transportation segment.") ] - # Optional - - access_restrictions: AccessRules | None = None # Contains the GERS ID and relative position between 0 and 1 of a connector feature along the segment. connectors: Annotated[ - list[ConnectorReference] | None, + list[ConnectorReference], Field( min_length=2, description=textwrap.dedent(""" @@ -184,7 +181,11 @@ class TransportationSegment( """).strip(), ), UniqueItemsConstraint(), - ] = [] + ] + + # Optional + + access_restrictions: AccessRules | None = None level_rules: LevelRules | None = None diff --git a/packages/overture-schema-theme-transportation/tests/segment_baseline_schema.json b/packages/overture-schema-theme-transportation/tests/segment_baseline_schema.json index a8c7d9304..8ca8c61d3 100644 --- a/packages/overture-schema-theme-transportation/tests/segment_baseline_schema.json +++ b/packages/overture-schema-theme-transportation/tests/segment_baseline_schema.json @@ -630,7 +630,6 @@ "$ref": "#/$defs/RailClass" }, "connectors": { - "default": [], "description": "List of connectors which this segment is physically connected to and their\nrelative location. Each connector is a possible routing decision point,\nmeaning it defines a place along the segment in which there is possibility to\ntransition to other segments which share the same connector.", "items": { "$ref": "#/$defs/ConnectorReference" @@ -700,6 +699,7 @@ "type", "version", "subtype", + "connectors", "class" ], "type": "object" @@ -884,7 +884,6 @@ "$ref": "#/$defs/RoadClass" }, "connectors": { - "default": [], "description": "List of connectors which this segment is physically connected to and their\nrelative location. Each connector is a possible routing decision point,\nmeaning it defines a place along the segment in which there is possibility to\ntransition to other segments which share the same connector.", "items": { "$ref": "#/$defs/ConnectorReference" @@ -1019,6 +1018,7 @@ "type", "version", "subtype", + "connectors", "class" ], "type": "object" @@ -1618,7 +1618,6 @@ "uniqueItems": true }, "connectors": { - "default": [], "description": "List of connectors which this segment is physically connected to and their\nrelative location. Each connector is a possible routing decision point,\nmeaning it defines a place along the segment in which there is possibility to\ntransition to other segments which share the same connector.", "items": { "$ref": "#/$defs/ConnectorReference" @@ -1677,7 +1676,8 @@ "theme", "type", "version", - "subtype" + "subtype", + "connectors" ], "type": "object" }, diff --git a/reference/counterexamples/common/names/names-invalid-language.yaml b/reference/counterexamples/common/names/names-invalid-language.yaml index e3345152d..01a43481a 100644 --- a/reference/counterexamples/common/names/names-invalid-language.yaml +++ b/reference/counterexamples/common/names/names-invalid-language.yaml @@ -10,6 +10,11 @@ properties: version: 1 subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 names: primary: Foo common: diff --git a/reference/counterexamples/common/names/names-invalid-variant.yaml b/reference/counterexamples/common/names/names-invalid-variant.yaml index 5949ecd0a..3714a66d8 100644 --- a/reference/counterexamples/common/names/names-invalid-variant.yaml +++ b/reference/counterexamples/common/names/names-invalid-variant.yaml @@ -10,6 +10,11 @@ properties: version: 1 subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 names: primary: Bar rules: diff --git a/reference/counterexamples/transportation/segment/bad-geometry-type.json b/reference/counterexamples/transportation/segment/bad-geometry-type.json index 050848739..b6b86fb8a 100644 --- a/reference/counterexamples/transportation/segment/bad-geometry-type.json +++ b/reference/counterexamples/transportation/segment/bad-geometry-type.json @@ -12,6 +12,10 @@ "theme": "transportation", "type": "segment", "subtype": "water", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "version": 15 } } diff --git a/reference/counterexamples/transportation/segment/bad-lr-width-missing-items.json b/reference/counterexamples/transportation/segment/bad-lr-width-missing-items.json index 4f66c9fd3..f4daf28d7 100644 --- a/reference/counterexamples/transportation/segment/bad-lr-width-missing-items.json +++ b/reference/counterexamples/transportation/segment/bad-lr-width-missing-items.json @@ -11,6 +11,10 @@ "version": 26, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "width_rules": [], "ext_expected_errors": [ "minItems: got 0, want 1" diff --git a/reference/counterexamples/transportation/segment/bad-lr-width.json b/reference/counterexamples/transportation/segment/bad-lr-width.json index d09dff370..d6e95cbd5 100644 --- a/reference/counterexamples/transportation/segment/bad-lr-width.json +++ b/reference/counterexamples/transportation/segment/bad-lr-width.json @@ -11,6 +11,10 @@ "version": 26, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "width_rules": [ { "between" : [0, 0.5], diff --git a/reference/counterexamples/transportation/segment/bad-rail-flags-wrong-subtype.yaml b/reference/counterexamples/transportation/segment/bad-rail-flags-wrong-subtype.yaml index deb23f73f..5655bf27e 100644 --- a/reference/counterexamples/transportation/segment/bad-rail-flags-wrong-subtype.yaml +++ b/reference/counterexamples/transportation/segment/bad-rail-flags-wrong-subtype.yaml @@ -11,6 +11,11 @@ properties: type: segment version: 1 subtype: road # This is road subtype, but we're using rail_flags + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 rail_flags: - values: [is_bridge] ext_expected_errors: diff --git a/reference/counterexamples/transportation/segment/missing-subtype.json b/reference/counterexamples/transportation/segment/missing-subtype.json index f1e248232..b43a7d684 100644 --- a/reference/counterexamples/transportation/segment/missing-subtype.json +++ b/reference/counterexamples/transportation/segment/missing-subtype.json @@ -11,6 +11,10 @@ ], "theme": "transportation", "type": "segment", - "version": 26 + "version": 26, + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ] } } diff --git a/reference/counterexamples/transportation/segment/missing-version.json b/reference/counterexamples/transportation/segment/missing-version.json index 6c8f16768..0c7c013c3 100644 --- a/reference/counterexamples/transportation/segment/missing-version.json +++ b/reference/counterexamples/transportation/segment/missing-version.json @@ -11,6 +11,10 @@ ], "theme": "transportation", "type": "segment", - "subtype": "water" + "subtype": "water", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ] } } diff --git a/reference/counterexamples/transportation/segment/property-subtype-mismatch.yaml b/reference/counterexamples/transportation/segment/property-subtype-mismatch.yaml index 125526b27..cdfd4d64b 100644 --- a/reference/counterexamples/transportation/segment/property-subtype-mismatch.yaml +++ b/reference/counterexamples/transportation/segment/property-subtype-mismatch.yaml @@ -10,6 +10,11 @@ properties: version: 1 # Segment of subtype rail has a road flag (should be disallowed) subtype: rail + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 road_flags: - values: [is_indoor] ext_expected_errors: diff --git a/reference/counterexamples/transportation/segment/rail/bad-rail-class-invalid.yaml b/reference/counterexamples/transportation/segment/rail/bad-rail-class-invalid.yaml index 0c2b90842..5db595932 100644 --- a/reference/counterexamples/transportation/segment/rail/bad-rail-class-invalid.yaml +++ b/reference/counterexamples/transportation/segment/rail/bad-rail-class-invalid.yaml @@ -12,5 +12,10 @@ properties: version: 1 subtype: rail class: invalid_rail_class # This should trigger Pydantic validation error + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 ext_expected_errors: - "value must be one of 'funicular', 'light_rail', 'monorail', 'narrow_gauge', 'standard_gauge', 'subway', 'tram', 'unknown'" diff --git a/reference/counterexamples/transportation/segment/rail/bad-rail-class.json b/reference/counterexamples/transportation/segment/rail/bad-rail-class.json index bfac6b188..3845cc89e 100644 --- a/reference/counterexamples/transportation/segment/rail/bad-rail-class.json +++ b/reference/counterexamples/transportation/segment/rail/bad-rail-class.json @@ -13,6 +13,10 @@ "type": "segment", "version": 18, "subtype": "rail", - "class": "foo" + "class": "foo", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ] } } diff --git a/reference/counterexamples/transportation/segment/rail/bad-rail-flags-duplicate-flag.json b/reference/counterexamples/transportation/segment/rail/bad-rail-flags-duplicate-flag.json index cf35ce37b..dc747ba05 100644 --- a/reference/counterexamples/transportation/segment/rail/bad-rail-flags-duplicate-flag.json +++ b/reference/counterexamples/transportation/segment/rail/bad-rail-flags-duplicate-flag.json @@ -14,6 +14,10 @@ "version": 19, "subtype": "rail", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "rail_flags": [ { "values": ["is_freight", "is_freight"] diff --git a/reference/counterexamples/transportation/segment/rail/bad-rail-flags-invalid-flag.json b/reference/counterexamples/transportation/segment/rail/bad-rail-flags-invalid-flag.json index 6616098c2..64e630ecf 100644 --- a/reference/counterexamples/transportation/segment/rail/bad-rail-flags-invalid-flag.json +++ b/reference/counterexamples/transportation/segment/rail/bad-rail-flags-invalid-flag.json @@ -14,6 +14,10 @@ "version": 20, "subtype": "rail", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "rail_flags": [ { "values": ["foo"] diff --git a/reference/counterexamples/transportation/segment/road/bad-road-class-invalid.yaml b/reference/counterexamples/transportation/segment/road/bad-road-class-invalid.yaml index 99049aeb0..6b8264747 100644 --- a/reference/counterexamples/transportation/segment/road/bad-road-class-invalid.yaml +++ b/reference/counterexamples/transportation/segment/road/bad-road-class-invalid.yaml @@ -12,5 +12,10 @@ properties: version: 1 subtype: road class: invalid_road_class # This should trigger Pydantic validation error + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 ext_expected_errors: - "value must be one of 'motorway', 'primary', 'secondary', 'tertiary', 'residential', 'living_street', 'trunk', 'unclassified', 'service', 'pedestrian', 'footway', 'steps', 'path', 'track', 'cycleway', 'bridleway', 'unknown'" diff --git a/reference/counterexamples/transportation/segment/road/bad-road-class.json b/reference/counterexamples/transportation/segment/road/bad-road-class.json index 99ae8f720..ba7a68842 100644 --- a/reference/counterexamples/transportation/segment/road/bad-road-class.json +++ b/reference/counterexamples/transportation/segment/road/bad-road-class.json @@ -13,6 +13,10 @@ "type": "segment", "version": 18, "subtype": "road", - "class": "foo" + "class": "foo", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ] } } diff --git a/reference/counterexamples/transportation/segment/road/bad-road-flags-duplicate-flag.json b/reference/counterexamples/transportation/segment/road/bad-road-flags-duplicate-flag.json index 7eaa5190b..b06a8728f 100644 --- a/reference/counterexamples/transportation/segment/road/bad-road-flags-duplicate-flag.json +++ b/reference/counterexamples/transportation/segment/road/bad-road-flags-duplicate-flag.json @@ -14,6 +14,10 @@ "version": 19, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "road_flags": [ { "values": ["is_tunnel", "is_tunnel"] diff --git a/reference/counterexamples/transportation/segment/road/bad-road-flags-invalid-flag.json b/reference/counterexamples/transportation/segment/road/bad-road-flags-invalid-flag.json index 52d961a14..1f284a860 100644 --- a/reference/counterexamples/transportation/segment/road/bad-road-flags-invalid-flag.json +++ b/reference/counterexamples/transportation/segment/road/bad-road-flags-invalid-flag.json @@ -14,6 +14,10 @@ "version": 20, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "road_flags": [ { "values": ["foo"] diff --git a/reference/counterexamples/transportation/segment/road/bad-road-flags-invalid-is_private-flag.json b/reference/counterexamples/transportation/segment/road/bad-road-flags-invalid-is_private-flag.json index f300935e5..021cba366 100644 --- a/reference/counterexamples/transportation/segment/road/bad-road-flags-invalid-is_private-flag.json +++ b/reference/counterexamples/transportation/segment/road/bad-road-flags-invalid-is_private-flag.json @@ -11,6 +11,10 @@ "version": 20, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "road_flags": [ { "values": ["is_private"] diff --git a/reference/counterexamples/transportation/segment/road/bad-road-flags-invalid-string-value.json b/reference/counterexamples/transportation/segment/road/bad-road-flags-invalid-string-value.json index 3cb0ac37f..147faa3d2 100644 --- a/reference/counterexamples/transportation/segment/road/bad-road-flags-invalid-string-value.json +++ b/reference/counterexamples/transportation/segment/road/bad-road-flags-invalid-string-value.json @@ -14,6 +14,10 @@ "version": 20, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "road_flags": ["is_tunnel"] } } diff --git a/reference/counterexamples/transportation/segment/road/bad-road-invalid-temporal-scoping.json b/reference/counterexamples/transportation/segment/road/bad-road-invalid-temporal-scoping.json index 6cf09907b..2ab704492 100644 --- a/reference/counterexamples/transportation/segment/road/bad-road-invalid-temporal-scoping.json +++ b/reference/counterexamples/transportation/segment/road/bad-road-invalid-temporal-scoping.json @@ -11,6 +11,10 @@ "version": 20, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "road_flags": [ { "values": ["is_bridge"] diff --git a/reference/counterexamples/transportation/segment/road/bad-road-surface-invalid-rule-value.json b/reference/counterexamples/transportation/segment/road/bad-road-surface-invalid-rule-value.json index 3c29cd43f..2c929767c 100644 --- a/reference/counterexamples/transportation/segment/road/bad-road-surface-invalid-rule-value.json +++ b/reference/counterexamples/transportation/segment/road/bad-road-surface-invalid-rule-value.json @@ -11,6 +11,10 @@ "version": 23, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "road_surface": [ { "value": "hot mess" diff --git a/reference/counterexamples/transportation/segment/road/restrictions/access/bad-access-unsupported-properties.yaml b/reference/counterexamples/transportation/segment/road/restrictions/access/bad-access-unsupported-properties.yaml index 6c2dfcaef..32530c113 100644 --- a/reference/counterexamples/transportation/segment/road/restrictions/access/bad-access-unsupported-properties.yaml +++ b/reference/counterexamples/transportation/segment/road/restrictions/access/bad-access-unsupported-properties.yaml @@ -8,6 +8,11 @@ properties: type: segment subtype: road class: tertiary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 version: 1 access_restrictions: - foo: bar diff --git a/reference/counterexamples/transportation/segment/road/restrictions/prohibited_transitions/unsupported-properties.yaml b/reference/counterexamples/transportation/segment/road/restrictions/prohibited_transitions/unsupported-properties.yaml index 538ca108a..f4fbff9a6 100644 --- a/reference/counterexamples/transportation/segment/road/restrictions/prohibited_transitions/unsupported-properties.yaml +++ b/reference/counterexamples/transportation/segment/road/restrictions/prohibited_transitions/unsupported-properties.yaml @@ -8,6 +8,11 @@ properties: type: segment subtype: road class: residential + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 version: 1 prohibited_transitions: - sequence: diff --git a/reference/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-empty-rule.json b/reference/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-empty-rule.json index eaf9f1a5b..c6230a1a1 100644 --- a/reference/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-empty-rule.json +++ b/reference/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-empty-rule.json @@ -14,6 +14,10 @@ "version": 26, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "speed_limits": [{}], "ext_description": "road segment where road.restrictions.speed_limits contains an empty rule", "ext_expected_errors": [ diff --git a/reference/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-invalid-type.json b/reference/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-invalid-type.json index 3bffd7da1..457f31b4a 100644 --- a/reference/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-invalid-type.json +++ b/reference/counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-invalid-type.json @@ -11,6 +11,10 @@ "version": 0, "subtype": "road", "class": "primary", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ], "speed_limits": {}, "ext_expected_errors": [ "got object, want array" diff --git a/reference/examples/common/names/names-lexically-valid-language-tag.yaml b/reference/examples/common/names/names-lexically-valid-language-tag.yaml index a20a315ac..dbd74326d 100644 --- a/reference/examples/common/names/names-lexically-valid-language-tag.yaml +++ b/reference/examples/common/names/names-lexically-valid-language-tag.yaml @@ -10,6 +10,11 @@ properties: version: 1 subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 names: primary: foo common: diff --git a/reference/examples/common/timestamp/timestamp-leap-second.yaml b/reference/examples/common/timestamp/timestamp-leap-second.yaml index 14b6d7d7f..0d4465f8f 100644 --- a/reference/examples/common/timestamp/timestamp-leap-second.yaml +++ b/reference/examples/common/timestamp/timestamp-leap-second.yaml @@ -9,4 +9,9 @@ properties: type: segment subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 version: 1 diff --git a/reference/examples/transportation/docusaurus/access-restriction-01-blanket.yaml b/reference/examples/transportation/docusaurus/access-restriction-01-blanket.yaml index 87cac406a..47133c706 100644 --- a/reference/examples/transportation/docusaurus/access-restriction-01-blanket.yaml +++ b/reference/examples/transportation/docusaurus/access-restriction-01-blanket.yaml @@ -12,5 +12,10 @@ properties: version: 1 subtype: road class: residential + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied diff --git a/reference/examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml b/reference/examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml index 80a02ad75..aeb0b8c41 100644 --- a/reference/examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml +++ b/reference/examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml @@ -12,6 +12,11 @@ properties: version: 1 subtype: road class: residential + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied - access_type: allowed diff --git a/reference/examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml b/reference/examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml index a494b2e22..1f20c202e 100644 --- a/reference/examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml +++ b/reference/examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml @@ -12,6 +12,11 @@ properties: version: 1 subtype: road class: residential + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied when: { mode: [motor_vehicle] } diff --git a/reference/examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml b/reference/examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml index 4a176d983..ea78bf00d 100644 --- a/reference/examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml +++ b/reference/examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml @@ -12,6 +12,11 @@ properties: version: 1 subtype: road class: motorway + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied when: diff --git a/reference/examples/transportation/docusaurus/geometric-scoping.yaml b/reference/examples/transportation/docusaurus/geometric-scoping.yaml index 86f5f58d7..d9547e0cc 100644 --- a/reference/examples/transportation/docusaurus/geometric-scoping.yaml +++ b/reference/examples/transportation/docusaurus/geometric-scoping.yaml @@ -10,6 +10,11 @@ properties: version: 1 subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 speed_limits: - between: [0, 0.15] max_speed: diff --git a/reference/examples/transportation/docusaurus/speed-limits-01-simple.yaml b/reference/examples/transportation/docusaurus/speed-limits-01-simple.yaml index 30bea71ce..e13aa6c74 100644 --- a/reference/examples/transportation/docusaurus/speed-limits-01-simple.yaml +++ b/reference/examples/transportation/docusaurus/speed-limits-01-simple.yaml @@ -12,6 +12,11 @@ properties: version: 1 subtype: road class: residential + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 speed_limits: - max_speed: value: 30 diff --git a/reference/examples/transportation/docusaurus/speed-limits-02-directional.yaml b/reference/examples/transportation/docusaurus/speed-limits-02-directional.yaml index 8f30bb69a..eed35c7fc 100644 --- a/reference/examples/transportation/docusaurus/speed-limits-02-directional.yaml +++ b/reference/examples/transportation/docusaurus/speed-limits-02-directional.yaml @@ -12,6 +12,11 @@ properties: version: 2 subtype: road class: secondary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 speed_limits: - max_speed: {value: 70, unit: "mph"} - when: diff --git a/reference/examples/transportation/docusaurus/speed-limits-03-variable-max.yaml b/reference/examples/transportation/docusaurus/speed-limits-03-variable-max.yaml index 0aeca3887..34960bd16 100644 --- a/reference/examples/transportation/docusaurus/speed-limits-03-variable-max.yaml +++ b/reference/examples/transportation/docusaurus/speed-limits-03-variable-max.yaml @@ -14,6 +14,11 @@ properties: version: 1 subtype: road class: motorway + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 speed_limits: - max_speed: value: 100 diff --git a/reference/examples/transportation/docusaurus/subjective-heading-scoping.yaml b/reference/examples/transportation/docusaurus/subjective-heading-scoping.yaml index d01d0bf80..3d3c04fdb 100644 --- a/reference/examples/transportation/docusaurus/subjective-heading-scoping.yaml +++ b/reference/examples/transportation/docusaurus/subjective-heading-scoping.yaml @@ -16,6 +16,11 @@ properties: version: 2 subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied when: { heading: backward } diff --git a/reference/examples/transportation/docusaurus/subjective-status-scoping.yaml b/reference/examples/transportation/docusaurus/subjective-status-scoping.yaml index d2f86bdf3..f25bc02e3 100644 --- a/reference/examples/transportation/docusaurus/subjective-status-scoping.yaml +++ b/reference/examples/transportation/docusaurus/subjective-status-scoping.yaml @@ -13,6 +13,11 @@ properties: version: 1 subtype: road class: tertiary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied - access_type: allowed diff --git a/reference/examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml b/reference/examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml index 8cef7b3ba..fe85f2282 100644 --- a/reference/examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml +++ b/reference/examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml @@ -12,6 +12,11 @@ properties: version: 1 subtype: road class: tertiary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied - access_type: allowed diff --git a/reference/examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml b/reference/examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml index 44e4563e0..298849865 100644 --- a/reference/examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml +++ b/reference/examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml @@ -13,6 +13,11 @@ properties: version: 1 subtype: road class: residential + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied when: diff --git a/reference/examples/transportation/docusaurus/temporal-scoping.yaml b/reference/examples/transportation/docusaurus/temporal-scoping.yaml index c8a56dd4b..c25681a77 100644 --- a/reference/examples/transportation/docusaurus/temporal-scoping.yaml +++ b/reference/examples/transportation/docusaurus/temporal-scoping.yaml @@ -13,6 +13,11 @@ properties: version: 2 subtype: road class: unknown + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied when: diff --git a/reference/examples/transportation/segment/missing-update-time.json b/reference/examples/transportation/segment/missing-update-time.json index d564bdbf7..be9a0c584 100644 --- a/reference/examples/transportation/segment/missing-update-time.json +++ b/reference/examples/transportation/segment/missing-update-time.json @@ -11,6 +11,10 @@ "theme": "transportation", "type": "segment", "version": 27, - "subtype": "water" + "subtype": "water", + "connectors": [ + { "connector_id": "fooConnector", "at": 0 }, + { "connector_id": "barConnector", "at": 1 } + ] } } diff --git a/reference/examples/transportation/segment/rail/rail-freight.yaml b/reference/examples/transportation/segment/rail/rail-freight.yaml index 41bf6f75a..e2b16afd5 100644 --- a/reference/examples/transportation/segment/rail/rail-freight.yaml +++ b/reference/examples/transportation/segment/rail/rail-freight.yaml @@ -12,6 +12,11 @@ properties: version: 3 subtype: rail class: standard_gauge + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 names: primary: Generic Rail Name rail_flags: diff --git a/reference/examples/transportation/segment/rail/rail-tunnel.yaml b/reference/examples/transportation/segment/rail/rail-tunnel.yaml index 6f9df9c3e..943f53d17 100644 --- a/reference/examples/transportation/segment/rail/rail-tunnel.yaml +++ b/reference/examples/transportation/segment/rail/rail-tunnel.yaml @@ -12,6 +12,11 @@ properties: version: 3 subtype: rail class: subway + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 names: primary: Generic Rail Name rail_flags: diff --git a/reference/examples/transportation/segment/road/restrictions/road-restrictions-access.yaml b/reference/examples/transportation/segment/road/restrictions/road-restrictions-access.yaml index 9b4c623f2..53f1aa8ab 100644 --- a/reference/examples/transportation/segment/road/restrictions/road-restrictions-access.yaml +++ b/reference/examples/transportation/segment/road/restrictions/road-restrictions-access.yaml @@ -9,6 +9,11 @@ properties: type: segment subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 version: 2 access_restrictions: - access_type: denied diff --git a/reference/examples/transportation/segment/road/restrictions/road-restrictions-prohibited-transitions.yaml b/reference/examples/transportation/segment/road/restrictions/road-restrictions-prohibited-transitions.yaml index ea7f8c7c7..be8e2add8 100644 --- a/reference/examples/transportation/segment/road/restrictions/road-restrictions-prohibited-transitions.yaml +++ b/reference/examples/transportation/segment/road/restrictions/road-restrictions-prohibited-transitions.yaml @@ -9,6 +9,11 @@ properties: type: segment subtype: road class: secondary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 version: 2 prohibited_transitions: - sequence: diff --git a/reference/examples/transportation/segment/road/restrictions/road-restrictions-speed-limits.yaml b/reference/examples/transportation/segment/road/restrictions/road-restrictions-speed-limits.yaml index ac229da48..0f17269d8 100644 --- a/reference/examples/transportation/segment/road/restrictions/road-restrictions-speed-limits.yaml +++ b/reference/examples/transportation/segment/road/restrictions/road-restrictions-speed-limits.yaml @@ -9,6 +9,11 @@ properties: type: segment subtype: road class: tertiary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 version: 3 speed_limits: - max_speed: {value: 20, unit: 'km/h'} diff --git a/reference/examples/transportation/segment/road/road-abandoned.yaml b/reference/examples/transportation/segment/road/road-abandoned.yaml index de6b0207f..3882f1922 100644 --- a/reference/examples/transportation/segment/road/road-abandoned.yaml +++ b/reference/examples/transportation/segment/road/road-abandoned.yaml @@ -11,6 +11,11 @@ properties: version: 3 subtype: road class: tertiary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 road_surface: - value: gravel road_flags: diff --git a/reference/examples/transportation/segment/road/road-acesss-restriction.yaml b/reference/examples/transportation/segment/road/road-acesss-restriction.yaml index 345ccafaf..aaf55203b 100644 --- a/reference/examples/transportation/segment/road/road-acesss-restriction.yaml +++ b/reference/examples/transportation/segment/road/road-acesss-restriction.yaml @@ -17,6 +17,11 @@ properties: version: 5 subtype: road class: primary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 access_restrictions: - access_type: denied - access_type: designated diff --git a/reference/examples/transportation/segment/road/road-alley.yaml b/reference/examples/transportation/segment/road/road-alley.yaml index 84c7ff6d8..118c64b1a 100644 --- a/reference/examples/transportation/segment/road/road-alley.yaml +++ b/reference/examples/transportation/segment/road/road-alley.yaml @@ -10,6 +10,11 @@ properties: version: 5 subtype: road class: service + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 subclass_rules: - value: alley between: [0, 0.5] diff --git a/reference/examples/transportation/segment/road/road-covered.yaml b/reference/examples/transportation/segment/road/road-covered.yaml index 5083fa330..483eb28ce 100644 --- a/reference/examples/transportation/segment/road/road-covered.yaml +++ b/reference/examples/transportation/segment/road/road-covered.yaml @@ -11,6 +11,11 @@ properties: version: 3 subtype: road class: tertiary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 road_surface: - value: paved road_flags: diff --git a/reference/examples/transportation/segment/road/road-indoors.yaml b/reference/examples/transportation/segment/road/road-indoors.yaml index 218934cce..74a8767c1 100644 --- a/reference/examples/transportation/segment/road/road-indoors.yaml +++ b/reference/examples/transportation/segment/road/road-indoors.yaml @@ -11,6 +11,11 @@ properties: version: 1 subtype: road class: tertiary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 road_surface: - value: unknown road_flags: diff --git a/reference/examples/transportation/segment/road/road-level.yaml b/reference/examples/transportation/segment/road/road-level.yaml index c3233db78..af48a1b07 100644 --- a/reference/examples/transportation/segment/road/road-level.yaml +++ b/reference/examples/transportation/segment/road/road-level.yaml @@ -10,6 +10,11 @@ properties: subtype: road version: 2 class: residential + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 level_rules: - value: -1 between: [0, 0.5] diff --git a/reference/examples/transportation/segment/road/road-path.yaml b/reference/examples/transportation/segment/road/road-path.yaml index e892f5c4b..8b3b7ffca 100644 --- a/reference/examples/transportation/segment/road/road-path.yaml +++ b/reference/examples/transportation/segment/road/road-path.yaml @@ -10,3 +10,8 @@ properties: version: 5 subtype: road class: path + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 diff --git a/schema/transportation/segment.yaml b/schema/transportation/segment.yaml index 4a959a1a6..86e68043d 100644 --- a/schema/transportation/segment.yaml +++ b/schema/transportation/segment.yaml @@ -17,7 +17,7 @@ properties: - "$ref": https://geojson.org/schema/LineString.json properties: unevaluatedProperties: false - required: [subtype] + required: [subtype, connectors] allOf: - title: "Common Segment Properties" properties: @@ -76,7 +76,6 @@ properties: at: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/linearlyReferencedPosition" } uniqueItems: true minItems: 2 - default: [] "$defs": propertyDefinitions: destinationLabelType: