ISO 19135 Requirements for Identifiers

ISO 19135:2026 requires that every concept, concept version, register item, register item class, and change must have both types of identifiers:

Object Identifier

Non-Redirectable

An identifier that is permanently assigned to a specific object. The association never changes—once an object identifier points to an object, it always points to that same object.

Characteristics:

  • Non-redirectable (cannot point to a different object)
  • Permanent (does not change over time)
  • Only concerned with uniqueness, not meaning
  • Assigned at creation
Example:550e8400-e29b-41d4-a716-446655440000 (UUID)

This UUID will forever identify this specific concept version.

Functional Identifier

Redirectable

An identifier that reflects semantic intent and can be redirected to point to different objects over time while maintaining the original meaning of the identifier.

Characteristics:

  • Redirectable (can point to different objects over time)
  • Persistent in semantics (meaning persists even if target changes)
  • MUST support hierarchical specification
  • Enables semantic addressing
Example:/concepts/crs/wgs-84/current

This functional identifier means "the current version of WGS 84 CRS". As new versions are created, this identifier redirects to the latest.

Why Both Are Required

Object Identifiers

Provide permanent reference for citations and history

Functional Identifiers

Provide semantic access for current usage

Together

Enable both stability and flexibility

Hierarchical Identifier Requirement

ISO 19135:2026 requires that functional identifiers must support hierarchical specification. This means the identifier scheme must allow representation of multiple components.

What Hierarchy Means

A hierarchical identifier can represent:

  • The nature of the identified item
  • Parameters such as version
  • Parent/child relationships

Example Hierarchical Schemes

URI

https://example.org/register/concepts/meter/v2.0
└─domain─┘└─register─┘└─type─┘└─item─┘└─version┘

URN

urn:example:register:meter:2.0
└─nid──┘└─namespace──────┘└─hierarchical-spec─┘
Important: UUID is NOT hierarchical—it cannot represent components or hierarchy. UUIDs can be used for object identifiers, but functional identifiers must use a scheme that supports hierarchy (URI, URN, URL).

What Needs Both Types of Identifiers

EntityObject IdentifierFunctional Identifier
The Register itselfRequired
ConceptsRequiredRequired
Concept VersionsRequiredRequired
Register Item ClassesRequiredRequired
Register ItemsRequiredRequired
ChangesRequiredRequired

What Makes a Good Identifier?

FERIN requires identifiers to be:

  • Unique: No two items share the same identifier
  • Persistent: The identifier remains valid indefinitely
  • Consistent: Assigned using documented rules

The Persistence Challenge

"Persistent" is harder than it seems. An identifier is only as persistent as:

  • The organization that maintains it
  • The infrastructure that resolves it
  • The policies governing its use

Identifier Schemes Compared

SchemeProsConsBest For
UUID
  • Simple to generate
  • Guaranteed unique
  • No central authority
  • Not human-readable
  • No built-in resolution
  • NOT hierarchical (object IDs only)
Object identifiers
URN
  • Standard format
  • Designed for persistence
  • Namespace support (hierarchical)
  • Resolution not universal
  • Namespace registration needed
  • Complex syntax
Functional identifiers, long-term references
URL/URI
  • Universally resolvable
  • Familiar to users
  • Hierarchical by design
  • Can break if domain changes
  • Requires web infrastructure
  • Link rot risk
Functional identifiers, web-accessible registers
DOI
  • Persistent by design
  • Managed infrastructure
  • Citable in academia
  • Registration costs
  • Administrative overhead
  • Not suitable for all content
Academic, published content
Custom
  • Full control
  • Can match domain needs
  • No dependencies
  • All persistence burden on you
  • May not be recognized externally
  • Need to document thoroughly
Organization-specific registers

Namespace Design

Namespaces prevent identifier collisions across registers:

Namespace Patterns

Hierarchical

org.example.register.item

Organized by ownership/domain

Date-Based

2024.item.001

Organized by time of creation

Type-Based

country.US, currency.USD

Organized by content type

Best Practices

  • Include organization identifier in namespace
  • Document namespace rules clearly
  • Plan for future registers in same namespace
  • Avoid characters that cause problems in URLs

Persistence Strategies

How do you ensure identifiers remain valid over time?

Technical Strategies

  • Use stable domains: Register a dedicated domain for your identifiers, separate from your main website
  • Implement redirects: If infrastructure changes, maintain redirects from old URLs
  • Use resolution services: DOI, URN resolvers, or handle systems provide persistence infrastructure
  • Document fallbacks: If primary resolution fails, where can users look up the identifier?

Organizational Strategies

  • Identifier policy: Document the commitment to persistence in your register specification
  • Succession planning: What happens if your organization dissolves?
  • Escrow arrangements: For critical registers, consider third-party escrow of identifier mappings

Identifier Anti-Patterns

Semantic Identifiers

/users/john-smith - What happens when John Smith changes his name?

Better: /users/12345 with name as attribute

Database IDs

row-42 - Tied to specific database implementation

Better: Generate identifiers independently of storage

URLs That Change

https://app-v1.example.com/item/123 - What about v2?

Better: https://data.example.org/item/123

Reusing Identifiers

Reusing US when United States is deleted and later someone wants it for "Uruguay"

Better: Never reuse identifiers, mark as retired

Example Identifier Policies

Simple Policy (Internal Register)

Format: UUID
Generation: Automatic on creation
Resolution: API lookup only
Persistence: Guaranteed for register lifetime
Reuse: Never

Comprehensive Policy (Public Register)

Object ID Format: urn:{org}:{register}:{uuid}
Functional ID Format: {register}:{semantic-code}
Generation: Object automatic, Functional manual
Resolution: HTTP redirect to current content
Persistence: Guaranteed indefinitely
Succession: Escrow with [designated organization]
Reuse: Never; retired codes marked unavailable

Related Topics