Skip to content

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:en
ISO/IEC 17031-1:2020 → urn:iso:std:iso-iec:17031:-1:ed-1
ISO 9001:2015/Amd 1:2024 → urn:iso:std:iso:9001:ed-5:amd:1:v1

#IEC

IEC 61131-3:2013 → urn:iec:std:iec:61131:-3:ed-3
IEC 60050-111/AMD1/FRAG1 ED2 → urn:iec:std:iec:60050:111:ed-2:amd:1:frag:1

#IEEE

IEEE Std 802.3-2018 → urn:ieee:std:802.3-2018

#Round-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

  1. Machine interchange — Systems can exchange identifiers in a standardized format
  2. Resolution — URNs can serve as keys for identifier resolution services
  3. Uniqueness — URNs provide globally unique, collision-free identifiers
  4. 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

esc
navigate   openSearch by Pagefind