ชื่อทรัพยากรสากล (Uniform Resource Name)
สรุปใจความสำคัญ
- URN เป็นตัวระบุทรัพยากรที่คงทน (Persistent Identifier) และไม่ขึ้นกับตำแหน่งที่ตั้งของทรัพยากร
- แตกต่างจาก URL ตรงที่ URN ระบุ 'ชื่อ' ของทรัพยากร ในขณะที่ URL ระบุ 'ตำแหน่ง' ของทรัพยากร
- ปัจจุบัน URN และ URL ถูกจัดเป็นประเภทย่อยของ Uniform Resource Identifier (URI)
- การจดทะเบียนเนมสเปซ (NID) ของ URN ต้องดำเนินการผ่าน IANA เพื่อป้องกันการซ้ำซ้อนกันทั่วโลก
ชื่อทรัพยากรสากล หรือ Uniform Resource Name (URN) คือตัวระบุทรัพยากรสากล (Uniform Resource Identifier หรือ URI) ประเภทหนึ่งที่ใช้รูปแบบ (Scheme) แบบ urn: โดยมีวัตถุประสงค์หลักเพื่อเป็นตัวระบุที่คงทน (Persistent Identifier) และมีความเป็นเอกลักษณ์ทั่วโลก ซึ่งถูกกำหนดขึ้นภายในเนมสเปซ (Namespace) ที่ระบุไว้ เพื่อให้สามารถระบุถึงทรัพยากรนั้นได้ในระยะยาว แม้ว่าทรัพยากรดังกล่าวจะถูกย้ายตำแหน่ง หรือไม่สามารถเข้าถึงได้ในขณะนั้นก็ตาม
ลักษณะสำคัญของ URN คือไม่สามารถใช้เพื่อระบุตำแหน่งที่ตั้งของทรัพยากรได้โดยตรง และไม่จำเป็นต้องสามารถแปลงเป็นที่อยู่ที่เข้าถึงได้ (Resolvable) เสมอไป เนื่องจาก URN ทำหน้าที่เป็นเพียงแม่แบบที่ตัววิเคราะห์ (Parser) อื่นๆ จะนำไปใช้เพื่อค้นหาทรัพยากรต่อไป
ความสัมพันธ์ระหว่าง URI, URN และ URL
ในยุคเริ่มต้น URN ถูกออกแบบมาให้เป็นส่วนหนึ่งของสถาปัตยกรรมข้อมูลสามส่วนสำหรับอินเทอร์เน็ต ร่วมกับ Uniform Resource Locators (URLs) และ Uniform Resource Characteristics (URCs) ซึ่งเป็นโครงสร้างข้อมูลเมตา (Metadata framework) อย่างไรก็ตาม URC ไม่เคยถูกนำมาใช้งานจริงในระดับกว้างและถูกแทนที่ด้วยเทคโนโลยีอื่น เช่น Resource Description Framework (RDF)
ตามมาตรฐาน RFC 1737 และ RFC 2141 ในอดีตมีการแบ่งแยก URN ออกจาก URL อย่างชัดเจน โดย URL จะระบุทรัพยากรผ่านการระบุตำแหน่งที่ตั้ง (Location) ภายใต้โปรโตคอลการเข้าถึงเฉพาะ เช่น HTTP หรือ FTP ในขณะที่ URN ถูกออกแบบมาให้เป็นตัวระบุที่ไม่ขึ้นกับตำแหน่งที่ตั้ง (Location-independent) และมีความคงทนสูง
มุมมองร่วมสมัย (Contemporary View)
ตั้งแต่ปี 2005 ตามมาตรฐาน RFC 3986 การใช้คำว่า "Uniform Resource Name" และ "Uniform Resource Locator" ในมาตรฐานทางเทคนิคเริ่มถูกลดบทบาทลง และหันมาใช้คำว่า Uniform Resource Identifier (URI) ซึ่งครอบคลุมทั้งสองรูปแบบ ตามข้อเสนอของกลุ่มทำงานร่วมระหว่าง World Wide Web Consortium (W3C) และ Internet Engineering Task Force (IETF)
ในมุมมองปัจจุบัน URI ทุกตัวทำหน้าที่ระบุหรือตั้งชื่อทรัพยากร โดยที่ URI บางตัวทำหน้าที่เป็น "ตัวระบุตำแหน่ง" (Locators) ซึ่งสามารถแปลงเป็นตัวแทนของทรัพยากรได้ผ่านโปรโตคอลที่กำหนด ส่วน URI อื่นๆ ไม่ใช่ตัวระบุตำแหน่งและไม่จำเป็นต้องแปลงค่าได้ ซึ่งตัวระบุประเภทนี้มักจะมีความคงทนมากกว่า เนื่องจากไม่ผูกติดกับตำแหน่งที่ตั้งที่อาจเปลี่ยนแปลงได้
รูปแบบและไวยากรณ์ของ URN
URI ที่ใช้รูปแบบ urn: จะมีโครงสร้างไวยากรณ์ที่เฉพาะเจาะจง ดังนี้:

- Scheme: ส่วนนำคือ
urn:ซึ่งไม่คำนึงถึงตัวพิมพ์เล็กหรือใหญ่ (Case-insensitive) - NID (Namespace Identifier): ตัวระบุเนมสเปซ ประกอบด้วยตัวอักษร ตัวเลข และเครื่องหมายยัติภังค์ (-)
- NSS (Namespace Specific String): สตริงเฉพาะเนมสเปซ ซึ่งการตีความจะขึ้นอยู่กับเนมสเปซที่ระบุ โดยสามารถประกอบด้วยตัวอักษร ASCII ตัวเลข และเครื่องหมายวรรคตอนบางชนิด หากมีตัวอักษรที่ไม่อนุญาตจะต้องใช้การเข้ารหัสแบบเปอร์เซ็นต์ (Percent-encoding)
ในปี 2017 มีการปรับปรุงไวยากรณ์ตามมาตรฐาน RFC 8141 ดังนี้:
- อนุญาตให้ใช้เครื่องหมายทับ (/) ใน NSS เพื่อรองรับชื่อที่มีเครื่องหมายทับจากระบบระบุตัวตนอื่น
- เพิ่มส่วนประกอบ q-component เพื่อให้สามารถส่งพารามิเตอร์ไปยังทรัพยากรที่ถูกระบุชื่อได้
- เพิ่มส่วนประกอบ r-component เพื่อส่งพารามิเตอร์ไปยังตัวแปลงค่า (Resolvers) แม้ว่าการใช้งานส่วนนี้จะยังต้องรอการกำหนดมาตรฐานในอนาคต
เนมสเปซ (Namespaces)
เพื่อให้มั่นใจว่าเนมสเปซของ URN มีความเป็นเอกลักษณ์ทั่วโลก ตัวระบุเนมสเปซ (NID) จะต้องได้รับการจดทะเบียนกับ IANA (Internet Assigned Numbers Authority) โดยแบ่งออกเป็นสองประเภทหลัก:
1. เนมสเปซแบบทางการ (Formal Namespaces)
เป็นเนมสเปซที่คาดว่าผู้ใช้ทางอินเทอร์เน็ตจะได้รับประโยชน์จากการเผยแพร่ และต้องปฏิบัติตามข้อกำหนดที่เข้มงวด เช่น ต้องไม่เป็น NID ที่จดทะเบียนไว้แล้ว, ต้องมีความยาวมากกว่าสองตัวอักษร และต้องไม่เริ่มต้นด้วยรูปแบบที่กำหนดไว้ (เช่น urn- หรือ XY-)
2. เนมสเปซแบบไม่เป็นทางการ (Informal Namespaces)
เป็นเนมสเปซที่ใช้สำหรับการระบุทรัพยากรในขอบเขตที่จำกัดกว่า หรือใช้เพื่อวัตถุประสงค์เฉพาะทาง
ตัวอย่างที่พบบ่อยของ URN คือ urn:isbn: ซึ่งใช้สำหรับระบุหนังสือผ่านหมายเลขมาตรฐานสากลประจำหนังสือ (ISBN)
คำถามที่พบบ่อย
URN แตกต่างจาก URL อย่างไร?
URL (Uniform Resource Locator) ทำหน้าที่ระบุตำแหน่งที่ตั้งของทรัพยากรบนอินเทอร์เน็ตเพื่อให้เข้าถึงได้โดยตรงผ่านโปรโตคอล เช่น HTTP ในขณะที่ URN (Uniform Resource Name) ทำหน้าที่ระบุชื่อหรือตัวตนของทรัพยากรอย่างคงทน โดยไม่สนใจว่าทรัพยากรนั้นจะอยู่ที่ไหนหรือจะย้ายไปที่ใด
URN สามารถใช้เปิดเว็บไซต์ได้ทันทีเหมือน URL หรือไม่?
ไม่ URN ไม่ใช่ตัวระบุตำแหน่ง (Locator) ดังนั้นจึงไม่สามารถใช้ระบุตำแหน่งเพื่อเข้าถึงทรัพยากรได้โดยตรง แต่ต้องอาศัยตัวแปลงค่า (Resolver) หรือระบบค้นหาอื่นเพื่อเปลี่ยน URN ให้เป็น URL หรือที่อยู่ที่เข้าถึงได้
ทำไมต้องใช้ URN แทนที่จะใช้ URL เพียงอย่างเดียว?
เพราะ URL อาจเปลี่ยนแปลงได้หากทรัพยากรถูกย้ายเซิร์ฟเวอร์หรือเปลี่ยนชื่อโดเมน ซึ่งจะทำให้เกิดปัญหา 'ลิงก์เสีย' (Broken Link) แต่ URN ถูกออกแบบมาให้คงทนถาวร แม้ทรัพยากรจะย้ายที่อยู่หรือเปลี่ยนสถานะ URN ของทรัพยากรนั้นจะยังคงเดิมเสมอ
ตัวอย่างของ URN ที่ใช้ในชีวิตจริงคืออะไร?
ตัวอย่างที่ชัดเจนที่สุดคือ urn:isbn: ตามด้วยหมายเลข ISBN ของหนังสือ ซึ่งไม่ว่าหนังสือเล่มนั้นจะถูกขายในร้านค้าออนไลน์แห่งใด หรือเก็บไว้ในห้องสมุดใด หมายเลข ISBN จะยังคงระบุถึงหนังสือเล่มนั้นเสมอ
