stable id special characters
# Copyright 2026 The Bitol Contributors
# SPDX-License-Identifier: Apache-2.0
version: 1.0.0
kind: DataContract
id: 5c0a7f16-2b48-4d31-9e6a-1f8c3b2d5a94
apiVersion: v3.2.0
status: active
name: stable_id_special_characters
description:
purpose: >-
RFC-0026a defines the `id` character rule as a denylist: an id cannot contain
`.`, `#`, `/`, `\`, `@`, `!`, `%`, `&` or `^`. Everything else is legal, including `:`,
which namespaced identifiers coming from a catalog or an ontology commonly use.
Guards the regression fixed alongside this example, where the schema implemented a far
narrower allowlist (`^[A-Za-z0-9_-]+$`) and rejected every id and every fully qualified
reference carrying a colon.
team:
- username: fdir_steward
id: fdir:ISU:TAD
role: owner
schema:
- id: fdir:dataset
name: dataset
physicalType: table
description: A schema object whose id is namespaced with colons.
relationships:
# A fully qualified reference is section/id/properties/id — the id segments
# carry colons here, so the reference regex has to accept them too.
- from: schema/fdir:dataset/properties/fdir:field
to: schema/fdir:other_dataset/properties/fdir:key
properties:
- id: fdir:field
name: field
logicalType: string
physicalType: varchar(64)
description: A property whose id is namespaced with colons.
- id: urn:uuid:0f6d2c11-4a7e-4a1d-9b3f-8c5e2a7d1b40
name: urn_style_id
logicalType: string
physicalType: varchar(64)
description: URNs are colon-separated and are legal ids under RFC-0026a.
- id: plain-id_1
name: plain_id
logicalType: string
physicalType: varchar(64)
description: The previously allowed character set stays valid.