Skip to content

OO-LD dialect meta-schema + optional $vocabulary #41

Description

@simontaurus

Extends #6.

Problem

OO-LD's custom keywords (x-oold-range, x-oold-ref, x-oold-*, x-oold-multilang-*) are valid 2020-12 custom keywords, but nothing validates that they are well-formed, and a reference inside an unknown keyword is "undefined behavior" (Core §9.4.2). There is no stable, citable identity for the keywords.

Resolution (decision: thin, OPTIONAL vocabulary)

  1. Publish an OO-LD dialect meta-schema ("$schema": ".../2020-12/schema") that extends the standard 2020-12 meta-schema and adds syntax for @context, x-oold-range, x-oold-ref, x-oold-*, x-oold-multilang-*. It MUST re-list all standard 2020-12 vocabularies at its root (Core §8.1.2.2: vocabulary declarations are not inherited via $ref). This lets OO-LD schemas be validated as OO-LD schemas.
  2. Declare the OO-LD $vocabulary URI marked false (optional) so generic 2020-12 validators still process OO-LD schemas. Core §8.1.2: a true value makes non-supporting validators refuse the schema.
  3. Declaring x-oold-range/x-oold-ref as recognized keywords moves their references out of the §9.4.2 grey zone for dialect-aware tools.
  4. $vocabulary does not execute keyword logic anywhere (ajv needs addKeyword; Hyperjump / json-everything load dialects from $vocabulary). Ship behavior in the oold library.

Acceptance criteria

  • OO-LD dialect meta-schema published + an example OO-LD schema validates against it
  • $vocabulary declared optional; a generic 2020-12 validator still processes OO-LD schemas
  • x-oold-* keywords covered by the meta-schema syntax

Source: gap analysis #18.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    M1Spec v1.0 Releasedesign-decisionAn issue that requires team discussion and subsequent decision

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions