我的应用程序使用 urn:uuid 作为实体的 URI。当然,当我获得例如关于资源的 RDF 信息时,所引用的实体(主题或对象)将在 urn:uuid 模式中包含 URI。为了获取新实体的表示,可能以 REST 方式,我需要一个“解析器”,在某种程度上类似于用于 DOI 的 dx.doi.org。另一种情况可能是解析 isbn: URI,以便获得此 URI 的合理表示。
我的问题是关于 URI-to-representation-URL 解析的提议标准。
我的应用程序使用 urn:uuid 作为实体的 URI。当然,当我获得例如关于资源的 RDF 信息时,所引用的实体(主题或对象)将在 urn:uuid 模式中包含 URI。为了获取新实体的表示,可能以 REST 方式,我需要一个“解析器”,在某种程度上类似于用于 DOI 的 dx.doi.org。另一种情况可能是解析 isbn: URI,以便获得此 URI 的合理表示。
我的问题是关于 URI-to-representation-URL 解析的提议标准。
UUID 是一个普遍唯一的标识符,所以我看不出您如何能够将我刚刚生成的 uuid(例如 3136aa1a-fec8-11de-a55f-00003925d394)解析为有用的东西。
只有当您在某处管理 uuid 数据库时,您才能从中检索更多内容。或者你必须问每个人/每件事“你知道这个 uuid 吗?”
urn:uuid 定义定义了一个明确的唯一标识符空间,您可以使用它来定义真正唯一的东西。但由于其他人无法猜测其价值,因此您无法从中获取信息。
IETF 结束的 URN 工作组也做了一些解决 URN 的工作,并发布了很多关于这个主题的 RFC。参考文献列表包含在团体章程中。也许其中一些对你有帮助。
没有解决 URN 的标准(建议的或其他的)。它只是一个名称(统一资源名称),可能具有任意含义。
XML/RDF 使用确实解析的 URN 会造成一些混乱,因为它们恰好也是指向描述其含义的对象的 URL(统一资源定位器),但这只是一种约定。它们只需要是独一无二的,并且总是意味着同样的事情。
如果您正在开发应用程序,您可能需要考虑使用 URN,它也是具有固定含义的项目的可解析 URL,并在 urn:uuid 命名空间中随机生成 URN 来识别对象实例。
这听起来和 RDF 规范一样令人困惑:-)
快速示例:
Tiger: http://www.example.com/animals/tiger
Instance of a Tiger: urn:uuid:9a652678-4616-475d-af12-aca21cfbe06d
http://www.example.com/animals/tiger上可能有一个 HTML 页面,但不一定有。这只是一个约定。
[添加了额外的说明]
这里的区别在于 URN(名称)和 URL(位置)。
URN 只是命名一些东西。它不是任何东西的位置。
URL 是有效的 URN,因此您可以根据需要使用 URL 作为 URN。
在上面的例子中,我可以使用http://www.example.com/tigers/9a652678-4616-475d-af12-aca21cfbe06d作为我的老虎的名字。我可以在那个地址放点东西。但是我会放什么?您不能使用 http 下载老虎的实例!
RDF 中的约定是,如果 URN 也是 URL,它将指向一些定义名称含义的文档。
RDF 试图为您提供的是命名事物的约定,以确保当两个人使用相同的名称时,他们的意思是相同的。UUID 规范允许您为不太可能被其他任何东西使用的东西生成一个唯一的名称。但它只是一个名字,没有办法把它变成一个东西。
希望这可以帮助。
URN 存在的一个原因是让人们有机会创建标识符,而无需(隐式)负责维护描述底层资源的服务。您可以说,对于 RDF,这是一个优势,但不是必需的,但您也不太愿意使用特定的词汇表,例如,如果您发现那些 HTTP URL 不再可取消引用。
话虽如此,一些URN 可以追溯到它们的表示。这里有些例子:
ietf
命名空间定义了几个标识符方案urn:ietf:rfc:2648
,因此如果您实现特定模式,则可以解析类似的URI 。urn:ietf:params:xml:
资源的相应文件。urn:isbn:
(可以检索一些元数据,但我认为没有任何东西可以让您从其 ISBN 下载这本书)urn:oid:
,. 还有urn:publicid:
,其中一些标识符可以在 ISO 深处的某个地方找到。没有用于 URN 解析的通用机制,实际上也不存在(对于其他 URI 方案也是如此,例如tag:
)。
在我看来,专门谈论 UUID,最好的方法是根本不使用 URN。如果您想使用 Web 服务器进行解析,“标准”方式是使用genid
知名服务,因此您的主 URI 将是这样的:http://example.org/.well-known/genid/b47df9f0-a9c5-4e8a-9762-844a33ba7a3e
. 如果您在该位置托管 RDF,则在必要时添加该位置没有任何问题owl:sameAs <urn:uuid:b47df9f0-a9c5-4e8a-9762-844a33ba7a3e>
。
据我所知,目前只有一种方法用于创建传达“你知道这个 URN 吗?”这个问题的链接,嗯,有点:magnet:
链接。原则上没有什么要求您像通常发现的那样使用哈希,所以magnet:?xt=urn:uuid:b47df9f0-a9c5-4e8a-9762-844a33ba7a3e
只要您有自己的客户端可以处理,类似的东西可以工作。