Skip to content

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.