Data Model Migration
Migrating identifiers, versions, relations, and change tracking to the FERIN framework.
Identifier Migration
The 2026 edition introduces two types of identifiers while maintaining backward compatibility with existing identifier patterns.
Object Identifier
RequiredA non-redirectable identifier permanently assigned to a specific object. This is what your existing identifiers become.
- Never changes once assigned
- Directly maps to your current identifiers
- Example:
urn:ogc:def:crs:EPSG::4326
Functional Identifier
OptionalA redirectable identifier that always reflects the original intent. Useful for stable external references.
- Can be redirected to different targets
- Enables semantic stability across changes
- Example:
/crs/wgs84→ redirects to current version
Migration Strategy
- Preserve existing identifiers as object identifiers
Your current identifier scheme works as-is for object identifiers.
- Evaluate functional identifier need
Consider adding functional identifiers if you need stable external references that survive content changes.
- Update documentation
Document your identifier scheme clearly in the register specification.
Version Model Migration
The 2026 edition requires minimum two-layer versioning (major/minor). Your existing version model may need adaptation.
2015 Version Model
2026 Version Model
Migration Strategies
Semantic Versioning
1.2.3Use major.minor.patch for fine-grained version tracking.
Date-Based Versioning
2026.02.15Use year.month for temporal version identification.
Sequential Versioning
1.0 → 2.0Simple sequential major versions with optional minor.
Version Migration Steps
- Parse existing version strings to determine structure
- Define mapping rules (e.g., "v1" → major=1, minor=null)
- Apply mapping consistently across all items
- Ensure dateOfLastChange is populated for all items
Relations Migration
The 2026 edition significantly expands the relations model. Your existing predecessor/successor relationships map to the new model.
| 2015 Relation | 2026 Relation | Type | Notes |
|---|---|---|---|
| predecessor | supersedes | Concept version → Concept version | Current item supersedes the predecessor |
| successor | superseded by | Concept version → Concept version | Current item is superseded by the successor |
| new | inherits | Concept → Concept | Property inheritance between concepts |
| new | has part | Concept → Concept | Partitive relationship |
| new | has version | Concept → Concept version | Links concept to its versions |
Relation Migration Checklist
- ☐ Inventory all existing predecessor/successor links
- ☐ Map to supersedes/superseded-by relations
- ☐ Evaluate need for new relation types (inheritance, partitive)
- ☐ Update relation storage schema
- ☐ Test relation queries work correctly
Change Tracking Migration
The 2026 edition formalizes change tracking with explicit Change objects. Your existing change history can be migrated to this model.
2026 Change Object
{
"changeId": "chg-001",
"changeType": "substantive",
"dateTime": "2025-01-15T10:30:00Z",
"description": "Updated definition to clarify scope",
"affectedItems": ["EPSG:4326"],
"proposal": {
"proposalId": "prop-2024-42",
"proposer": "OGC"
}
}Change History Migration
If your 2015 system tracked changes (from Extended conformance):
- Extract all change records with timestamps
- Create Change objects linking to affected items
- Link changes to proposals if available
- Preserve chronological ordering
If you didn't track changes formally:
- Create a single "migration" change record
- Document that pre-migration history is not available
- Begin tracking changes going forward