Skip to main content
Version: 2.0-rc2

URN Format

Model Management manages all model artifacts through global identities: every artifact has a unique, stable and versionable URN that exists independently of storage location, file names or registry technology.

The identities simultaneously serve as:

  • Registry keys
  • Reference targets for JSON Schema $ref
  • Stored artifact references
  • Foundation for the dependency graph

Structure​

urn:core:<scope>:<owner>:<artifact-type>:<domain>:<name>:<version>
SegmentMeaningExamples
urn:coreCORE namespace—
scopeScope of validityplatform, tenant, standard, dataset, project
ownerPublishercivitas, stadt-muenster, xoev
artifact-typeArtifact typedatastructure, mapping, pipeline, datasource, datasink, dataset
domainDomain hierarchy (dot-separated)common, mobility.parking, environment.air
nameTechnical nameGeoPoint, ParkingSensor, WeatherObservation
versionSemantic version1.0.0, 1.1.0, 2.0.0

Examples​

urn:core:platform:civitas:datastructure:common:GeoPoint:1.0.0
urn:core:tenant:stadt-muenster:datastructure:mobility.parking:ParkingSensor:1.0.0
urn:core:tenant:stadt-muenster:mapping:mobility.parking:ParkingSensorToNgsi:1.0.0
urn:core:tenant:stadt-muenster:pipeline:mobility.parking:ParkingImport:1.0.0
urn:core:standard:xoev:datastructure:xmeld:Meldeanschrift:1.7

The standard scope marks external standard models imported unmodified (e.g. XÖV standards from XRepository).

A DataStructure's exchange format (JSON Schema or XSD) is not encoded in the URN. Both use the datastructure artifact type; the format is a per-version representation, not an identity (see XML/XSD Integration). A client-supplied urn:core:…:xsd:… (an XSD artifact-type URN) is rejected with HTTP 400.

Logical vs. versioned identity​

Model Management distinguishes two forms of the same identity:

FormExampleRepresents
Logical URN (no version)urn:core:platform:civitas:datastructure:common:GeoPointThe domain concept
Versioned URNurn:core:platform:civitas:datastructure:common:GeoPoint:1.0.0A concrete version

The logical URN is the artifact's stored identity and the key of the in-memory caches; the version segment maps to a stored artifact_version. The dependency graph is version-precise: its nodes are versioned URNs and the dependency endpoints report concrete versions (a logical or :latest query resolves to the current version).

The latest reference token​

A reference between artifacts may pin a concrete version (…:Foo:1.0.0) or use the latest token (…:Foo:latest) to always track the target's current (highest-SemVer) version. latest is valid as a reference target and as a read id (GET …?id=…:Foo:latest), resolving to the current version at read time; self/HAL links and Location headers always return the concrete version, so latest stays a client→server input. It is not a writable identity — an artifact is always authored at a concrete version, and a client-supplied :latest (like a legacy :xsd:) identity is rejected with 400.

Usage in JSON Schema​

Every JSON Schema carries the CORE URNCORE URNThe global identity Model Management assigns to every model artifact: a unique, stable and versionable URN that exists independently of storage location, file names or registry technology. as its $id — the document is fully self-describing:

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:core:platform:civitas:datastructure:common:GeoPoint:1.0.0",
"title": "GeoPoint"
}

The backend respects an existing CORE URNCORE URNThe global identity Model Management assigns to every model artifact: a unique, stable and versionable URN that exists independently of storage location, file names or registry technology. as $id. If none is present, Model Forge generates one from the title field using the configured namespace segments (see Configuration).

Schemas reference other schemas directly through their CORE URNCORE URNThe global identity Model Management assigns to every model artifact: a unique, stable and versionable URN that exists independently of storage location, file names or registry technology.:

{
"properties": {
"location": {
"$ref": "urn:core:platform:civitas:datastructure:common:GeoPoint:1.0.0"
}
}
}

From these references Model Management automatically registers the dependency-graph edges and stores the full reference graph (including cycles) as artifact references.

Usage in Mappings and Pipelines​

Mappings reference the participating DataStructures by URN:

{
"$schema": "https://civitasconnect.digital/core/mapping/v1",
"id": "urn:core:platform:civitas:mapping:common:sensor-to-observation:1.0.0",
"source": "urn:core:platform:civitas:datastructure:common:SensorReading:1.0.0",
"target": "urn:core:platform:civitas:datastructure:common:Observation:1.0.0"
}

Pipeline nodes reference DataSources, Mappings and DataSinks by URN:

{
"id": "n-source",
"kind": "source",
"sourceRef": "urn:core:platform:civitas:datasource:common:mqtt-temperature:1.0.0"
}

Mapping to the registry​

The artifact registry addresses artifacts by their stored identity, all derived mechanically from the URN:

Registry columnDerived from
artifact_typeartifact type segment (datastructure, mapping, …)
logical_urnlogical URN (without version)
artifact_version.versionversion segment

The URN remains the domain source of truth; PostgreSQL is the technical persistence.