"$schema": https://json-schema.org/draft/2020-12/schema title: OGC Building Blocks Register metadata schema type: object required: - name - status - dateTimeAddition - itemClass - version properties: itemIdentifier: description: Unique identifier for this Building Block. type: string name: description: User-friendly name for this Building Block. type: string abstract: description: Brief documentation about this Building Block. type: string status: description: Status of this Building Block. enum: - retired - superseded - experimental - stable - under-development - invalid - reserved - submitted # Note: maybe these dateTime's could be normalized as { operations: { operationType: 'dateTime' } } dateTimeAddition: description: Date and time when this Building Block was added to the Register. type: string format: date-time pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[\+-]\d{2}:\d{2})?$' dateTimeSupersession: description: Date and time when this Building Block was superseded in the Register. type: string format: date-time pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[\+-]\d{2}:\d{2})?$' dateTimeRetirement: description: Date and time when this Building Block was retired from the Register. type: string format: date-time pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[\+-]\d{2}:\d{2})?$' dateTimeInvalidation: description: Date and time when this Building Block was invalidated in the Register. type: string format: date-time pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[\+-]\d{2}:\d{2})?$' itemClass: description: Type of Building Block. enum: - schema # Full JSON Schema object / feature type - datatype # Simple JSON Schema data type - path # OpenAPI path - parameter # OpenAPI parameter - header # OpenAPI header - cookie # OpenAPI cookie - response # OpenAPI response object - api # Partial or full OpenAPI document - model # Ontology or data model register: description: Register to which this Building Block belongs. type: string version: description: Version for this Building Block. type: string dateOfLastChange: description: Latest modification date for this Building Block. type: string format: date pattern: '^\d{4}-\d{2}-\d{2}$' sources: description: Sources or references for the Building Block definition. type: array items: type: object required: - title properties: title: description: Title of the source. type: string link: description: Link to the source document. type: string format: uri link: description: Link to a website or additional documentation for this Building Block. type: string format: uri links: description: List of links to websites or additional documentation for this Building Block. type: array items: type: object required: - title - href properties: title: description: Title for the link type: string href: description: URL for the link type: string format: uri rel: description: Relationship to the linked document type: string notes: description: Additional notes or comments type: string tags: description: List of tags attached to this Building Block. type: array items: type: string concept: description: Link to RDF resources corresponding to the concept represented in this Building Block type: array items: type: string format: uri rdfType: description: RDF types (or classes) for instances of this Building Block type: array items: type: string format: uri schema: description: URL for the JSON schema of this Building Block. type: string openAPIDocument: description: URL or path to OpenAPI document type: string ldContext: description: Link to JSON-LD document with @context for this Building Block. type: string format: uri ontology: description: Link to RDF document containing the ontology for this Building Block type: string format: uri examples: description: List of examples showing how to use this Building Block. type: array predecessor: description: Identifier or URI of the predecessor of this Building Block. type: string successor: description: Identifier or URI of the predecessor of this Building Block. type: string isProfileOf: description: | Identifier of another Building Block that this Building Block is a profile of, or list thereof. Profiling in this context is akin to inheritance. oneOf: - type: string - type: array items: type: string dependsOn: description: Identifiers of other Building Blocks that this Building Block depends on type: array items: type: string seeAlso: description: Identifier or URI of other Building Blocks that may be of interest type: array items: type: string requirementClasses: description: URI(s) of requirement classes that can be used to validate this Building Block type: array items: type: string format: uri superBBlock: description: Whether this is a Super Building Block, aggregating the schema of its descendants type: boolean group: description: An identifier to group Building Blocks together type: string shaclShapes: description: List of SHACL files to use for RDF validation. Can be URLs or file paths. type: array items: type: string shaclRules: description: Legacy alias for `shaclShapes`. type: array items: type: string shaclClosures: description: | List of RDF files or URLs that will be used as SHACL closures for RDF validation. They will be merged with the SHACL closures for every snippet, if any. type: array items: type: string extends: description: | Used to declare that the schema for this Building Block extends another one. The schemas will be joined with an "allOf" declaration. oneOf: - description: Identifier of the base Building Block to extend type: string - type: object required: - itemIdentifier properties: itemIdentifier: description: Identifier of the base Building Block to extend type: string path: description: | Property path where the schema for this Building Block will be inserted, in the format "a.b.c.d". If a property is an array, "prop[]" notation can be used (e.g., "a.b[].c.d[]"). type: string highlighted: description: | Whether this Building Block should be "highlighted" or "featured" within the register, potentially used as an entry point for the collection type: boolean conformanceClasses: description: | List of conformance classes (URIs) that this building block refers to. type: array items: type: string pattern: '^https?://.*' semanticUplift: description: Deprecated - configuration should go in semantic-uplift.yaml not: true resources: description: | List of external resources associated with this Building Block that don't fit in other dedicated properties (e.g. schema, ontology, ldContext). type: array items: type: object required: [role, ref, format] properties: title: description: Human-readable title for the resource. type: string role: description: Role or relationship of this resource to the Building Block. Can be a well-known role name or a URI. oneOf: - enum: [constraints, example, guidance, mapping, schema, specification, validation, vocabulary, data] - type: string format: uri pattern: ^https?://.* ref: description: | File name (relative to the Building Block directory) or URL for the resource. type: string format: description: MIME type for the resource (e.g. application/json, text/turtle). type: string pattern: '^\w+/[\w.+\-]+$' conformsTo: description: URI of a profile or specification that the resource conforms to. type: string pattern: '^[a-zA-Z][a-zA-Z0-9+\-.]*:.+' rdfData: description: | Deprecated. Use 'resources' with role 'data' instead. Array of file names (relative to the Building Block directory) or URLs with RDF content for this Building Block. deprecated: true type: array items: type: string extensionPoints: description: | Extension points can be defined using a base building block and declaring specializations for other building blocks referenced by the base one. type: object required: - baseBuildingBlock - extensions properties: baseBuildingBlock: description: Base building block to extend type: string extensions: description: Map of "source building block -> specialized building block" extensions type: object minProperties: 1 patternProperties: '.*': type: string