考虑这样的情况:您想要命名一些知识,并且希望将其放入知识图格式中,例如资源描述框架(RDF)。但是,您没有电子邮件、Web 域或访问命名空间权限来为 RDF 知识图生成 URI。
这分别排除了tag uris、cool uris和大多数其他方案。
由于上述原因,我对一些可能的选择并不完全满意:
我正在寻找的内容在本地计算机上以独特的方式标识一个概念,当与其他人通信时,这意味着该概念名称只能在该单一通信中被解释为唯一的,并且在更改为之前可能无法与其他知识图集成全球独一无二。它也不依赖于任何名称空间权限或电子邮件(也需要注册)。这样的计划是否存在(也许是非正式的)?考虑到这些限制,你会做什么?
编辑:只是想澄清我对电子邮件和网络域的看法。电子邮件很简单,注册过程完全自动化 - 您可以立即注册。但是,您依赖该组织来维护电子邮件注册表,不会将您踢出(例如,如果您的电子邮件帐户处于非活动状态),也不会倒闭。个人网络域需要订阅,并且不应要求数据发布者也支付维护费。当他们不再想支付费用时,这可能会导致注销,并且如果其他用户将这些 URI 重复用于其他目的,数据现在可能会变得不明确。像 yourName.github.io 这样的免费网络域名具有与电子邮件地址相同的问题。
一个非常有趣的问题!是的,确实有一个针对本地通信特定资源 \xe2\x80\x92 的标准化 URI 方案cid:,但我强烈建议不要这样做将它用于 RDF,因为你不能真正期望设计用于 RDF 的软件能够理解它。您只能在内部使用它,并且可以mid:在 URI 离开系统时将其转换,但为什么呢?这不是 RDF 应该如何工作的,最好从一开始就选择一个稳定的 URI。
有几个因素会影响 URI 的选择:
\n让我们看看根据这些标准有哪些选项:
\nhttp(s):httpURI 应该指向某个地方。对于抽象资源,你无法找到资源本身,但至少可以找到它的描述。http://localhost/仅当您在那里运行 HTTP 服务器时才有意义。http://localhost/myConcept,因为它是本地URI。在 RDF 世界中,这意味着什么,这并不是很明显,因为 URI 应该是全局唯一的。你可以给它赋予一个含义,但你仍然无法完全控制它。对于http,您应该拥有一个可用的权限,并且您应该运行一个可以解析这些 URI 的 Web 服务器,最好只要您打算使用它们,最好是永远使用它们。您可以免费获得一个,但如果您不想使用,还可以使用吗?是的!
如果您有一个唯一的 IP 地址,例如10.13.139.173,您可以直接使用它,如 中http://10.13.139.173/myConcept,或者您可以将其转换为域(请参阅此处)并 make http://173.139.13.10.in-addr.arpa/myConcept。然而,您仍然应该保证 IP 地址永远不会被重新分配给其他人,否则您将破坏第 2 点(当然还有第 1 点)。
创建.onion隐藏服务!这些是标准化且独特的,因此您可以永远免费使用它们,并且能够证明这一点,只要您不介意拥有像http://ofj09pokr8fypnybesnuuc62ygw12abxe2lapry3zgi2si8rvt61r2yv.onion/myConcept.
file:fileURI 应指向文件。没有解析机制,但预计您可以打开任何file:///URI,并且如果权限已知,则使用某种平台定义的机制与目标计算机进行通信。http适用于此。在全球范围内只能表示“每个人的文件系统中的file:///myConcept文件”之类的内容,这是您不能用于自己的实体的内容。myConceptfile:///C:/Windows/notepad.exe,但是这在您的情况下没有多大用处。fileURI 用于文件。将其用于其他用途可能只会导致混乱。将fileURI 用于文件以外的抽象事物是一个漫长的过程,即使在这种情况下,您也必须解决与httpURI 相同的问题,因此最好还是使用它们。
tag:httpURI 的保证之外,由于tagURI 的时间部分,如果您失去了对权限的控制,您不会冒其他人重新定义其含义的风险。httpURI 一样。总而言之,这些 URI 与httpURI 非常相似,但不需要维护服务器来保持它们的活动和良好定义。我认为这是本地使用标识符的最佳解决方案。如果您可以随时拥有域名或电子邮件地址,那么使用它们就足够了。您也可以在这里使用.onion域名,这样您就拥有了tag:ofj09pokr8fypnybesnuuc62ygw12abxe2lapry3zgi2si8rvt61r2yv.onion,2023:myConcept.
urn:uuid:uuidURN 通常可用于任何资源。实际上,您关于在 UUID \xe2\x80\x92 中包含人类可读组件的说法是错误的,您忘记了#!假设你选择来表示你的词汇,那么使用你想要的任何东西urn:uuid:e45f8769-8f64-4301-8c3a-12272eaa3f75都没有什么问题。urn:uuid:e45f8769-8f64-4301-8c3a-12272eaa3f75#myConcept单独的 URI 方案无法控制片段,因此如果基本 URI 是“您的”,请选择具有您想要的任何层次结构的任何片段。这是第二好的解决方案;它更短,但没有传达您想要的“本地”含义,并且您只能控制片段。
data:dataURI 可以在本地取消对其存储的数据的引用。file是的,就像URI 一样,应该data:仅用于数据,即旨在使用某种媒体类型解释的字节序列。不要将其用于非数据的抽象事物。虽然您可能会从 URI 中获得一些唯一性data:application/x.my.very.special.namespace,myConcept,但它本质上仍然是 9 个字节的序列。
magnet:,urn:sha1:,ni:ETC。它们基于哈希值,因此如果您没有哈希值,则使用它们没有意义。
\n我还知道一些其他类型的 URI,所以让我们也看一下它们:
\nurn:oid:OID 具有层次结构,您可以免费获得一个来创建自己的层次结构,您甚至可以将其用于带有计数器和其他内容的临时标识符。否则与 相同urn:uuid:。
urn:urn-5:这是一个鲜为人知但很酷的非正式 URN 命名空间,它允许您使用随机字节作为标识,但允许本地部分,因此(据我所知),您可以使用类似urn:urn-5:9Q8Vb+6gDOz6IpWyNnfKdVmA6gQ:myConcept. 该规范在“计数器”之后调用该部分:,但如果生成的 URN 有效,则允许使用任意字符串,因此您当然也可以使用任何路径和任何片段(或?=用于某种查询)。我想说这是第三个最佳解决方案\xe2\x80\x92 它是完全去中心化的,似乎是为此目的而制作的,具有您需要的部件,但它并不是很出名。
urn:publicid:这是另一个很酷的 URN 命名空间,旨在由 SGML/XML PUBLIC 标识符组成。这些没有任何特定的强制结构(如果您想使用它,则有 FPI),并且我假设系统是“先到先得”,因为您几乎可以使用任何东西来生成这些标识符(或你可以使用这个工具)。我认为这是第四个最佳解决方案,但它又有点晦涩,而且有点“狂野西部”,因为(除非您使用经过验证的 FPI)您必须想出自己足够强大的方法确保您创建的名称只是您自己的。
\n| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |