【问题标题】:Can you give an example of a URN for private-use你能举一个私人使用的URN的例子吗
【发布时间】:2015-07-31 10:58:29
【问题描述】:

根据维基百科,

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,这与他们刚刚选择urn:foo 并没有什么不同,除了也许很明显,它没有在 IANA 正式注册。

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

【问题讨论】:

    标签: uri web-standards urn


    【解决方案1】:

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

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


    我的直觉告诉我,x- 前缀没有任何好处,因为两个开发人员可以很容易地开始使用urn:x-foo,这与他们刚刚选择urn:foo 并没有什么不同,除了也许很明显,它没有在 IANA 正式注册。

    嗯,RFC 3406 defines

    没有规定避免实验性 NID 的冲突

    他们是

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

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


    所以……

    • 如果您只想将 URN 用于私人目的,您仍然可以使用 X- NID(按照 RFC 3406),直到它被新的 RFC 淘汰。或者,您可以从 example NID 铸造 URN。

    • 如果您想公开/严肃地使用 URN,您希望它们是唯一的(避免冲突)和定义的(使它们对其他作者和消费者有用)。这就是 URN 的全部意义,对吧?为此,您必须注册您的 NID。

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

    【讨论】:

    • 我认为这会有所帮助,谢谢。我会等待更多的选票。对于与编程语言无关的完全限定名称,URN 看起来是一个不错的选择。因此,与其努力成为独一无二的,我应该努力保持它们的私密性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多