URN Mapping — Machine-Readable Identifiers for Every Standard
URN Mapping — Machine-Readable Identifiers for Every Standard
Every PubID can be mapped to a canonical URN (Uniform Resource Name), providing a stable, location-independent identifier suitable for machine interchange. Here’s how it works.
What are URNs?
URNs are defined by RFC 8141 and follow the pattern urn:[namespace]:[specific-string]. Unlike URLs, URNs don’t point to a location — they provide a persistent name for a resource.
PubID URN Patterns
Each publisher maps their PubID to a URN using a namespace and format specific to their schema.
ISO
ISO 9001:2015 → urn:iso:std:iso:9001:ed-5:enISO/IEC 17031-1:2020 → urn:iso:std:iso-iec:17031:-1:ed-1ISO 9001:2015/Amd 1:2024 → urn:iso:std:iso:9001:ed-5:amd:1:v1IEC
IEC 61131-3:2013 → urn:iec:std:iec:61131:-3:ed-3IEC 60050-111/AMD1/FRAG1 ED2 → urn:iec:std:iec:60050:111:ed-2:amd:1:frag:1IEEE
IEEE Std 802.3-2018 → urn:ieee:std:802.3-2018Round-Trip Guarantee
PubIDs are designed for round-trip fidelity in both human-readable and URN formats:
Input: "ISO 9001:2015" → Parse → Object → Render (PubID) → "ISO 9001:2015" ✓ → Parse → Object → Render (URN) → "urn:iso:std:iso:9001:ed-5:en" ✓This means you can convert between PubID string and URN representation without losing information.
Benefits
- Machine interchange — Systems can exchange identifiers in a standardized format
- Resolution — URNs can serve as keys for identifier resolution services
- Uniqueness — URNs provide globally unique, collision-free identifiers
- Stability — URNs are location-independent and persist regardless of where documents are hosted
Using URNs in the Library
require 'pubid'
id = Pubid::Iso.parse("ISO 9001:2015")id.to_urn # => "urn:iso:std:iso:9001:ed-5:en"
id = Pubid::Iec.parse("IEC 61131-3:2013")id.to_urn # => "urn:iec:std:iec:61131:-3:ed-3"Learn More
- URN Mapping reference — Full URN patterns and examples
- Try the playground — See URN output in real time
- API Reference —
to_urnand other serialization methods