你能举个私人使用的URN的例子吗?

时间:2015-05-19 14:32:25

标签: uri web-standards urn

根据维基百科,

  

urn:<NID>:<NSS>

     

前导urn:序列不区分大小写。 <NID>   是命名空间标识符,它确定语法   <NSS>的解释,特定于命名空间的字符串。功能性   RFC 1737中描述了统一资源名称的要求。[5]

来源:http://en.wikipedia.org/wiki/Uniform_resource_name

然后继续说实验性NID的前缀为X-,但随后说:

  

RFC 6648不赞成对新ID名称使用“X-”表示法,但是   没有建议替换现有的“X-”名称,并且确实如此   不要覆盖需要使用“X-”的现有规范。 [7]

那么现在呢?

如果我想为私人系统中的某些标识符构建URN,我该如何正确命名它们?

我的直觉说x-前缀没有任何好处,因为两个开发人员可以轻松地开始使用urn:x-foo,如果他们只是选择了{{{}},那就不会有任何不同1}},除非很明显它没有在IANA正式注册。

因此,我们应该尝试制作一些独特的东西,并尽最大努力检查它是否正确。正确?

1 个答案:

答案 0 :(得分:2)

As far as I knowRFC 6648不会使experimental NIDs (as defined by RFC 3406)无效。

根据RFC 6648的建议,draft for the next RFC about URNs(当前)删除了实验性NID(使x-使用的URN无效)。

  

我的直觉说x-前缀没有任何好处,因为两个开发人员可以轻松地开始使用urn:x-foo,如果他们只是选择了{{{}},那就不会有任何不同1}},除非很明显它没有在IANA正式注册。

那么,RFC 3406 defines那个

  

没有规定避免实验性NID的碰撞

并且他们是

  

打算在内部或有限的实验环境中使用。

因此,首先,您不应该使用实验性NID,以便其他方(不了解您对这些实验性NID的使用/定义)会遇到它们。
换句话说:实验性NID的碰撞应该是没有问题的,因为每一方都应该只在内部或实验上使用它们,并且不应该期望能够对不受其控制的实验性NID做任何有用的事情。

所以......

  • 如果您只想将URN用于私人目的,您仍然可以使用urn:foo NID(遵循RFC 3406),直到它被新RFC淘汰。或者,您可以使用example NID

  • 来制作URN
  • 如果您想公开/认真地使用URN,您希望它们是唯一的(避免冲突)并定义(使其对其他作者和消费者有用)。那就是URN的重点,对吧?为此,您 注册您的NID。

  • 如果您不想注册,请不要使用URN。还有许多其他URI schemes可供使用(例如Tag URIs)。