RDF 中的本地概念应该使用什么 URI 方案?

Sve*_*igt 6 url rdf uri rdfs

考虑这样的情况:您想要命名一些知识,并且希望将其放入知识图格式中,例如资源描述框架(RDF)。但是,您没有电子邮件、Web 域或访问命名空间权限来为 RDF 知识图生成 URI

这分别排除了tag uriscool uris和大多数其他方案。

由于上述原因,我对一些可能的选择并不完全满意:

  1. http://localhost/myConcept 但这意味着一个可解析的位置。对于知识图谱的所有解释者来说,它也可能仍然意味着相同的概念。
  2. file:///myConcept文件方案,但这意味着存在可解析的物理位置。
  3. urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 uuid schema,但这不允许您在 URI 中放置人类可读的组件。如果 uuid 方案允许 urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6/myConcept 那就太好了
  4. Magnet uris被设想用来帮助本地机器和网络之间的通信。但它们仍然是一个草案,没有明确定义,并且示例重用了依赖于命名机构的其他方案。
  5. data:,myConcept数据方案,但这也取决于注册mime 类型,据我所知,没有任何抽象概念的 mime 类型。它还无法对任何类型的唯一性进行编码,例如编码文件的情况,或者传达该概念仅在本地是唯一的。
  6. 诸如 urn:sha1: 之类的非正式方案,但这意味着有一些内容需要进行哈希处理,并且名称相同但含义不同的概念将被分配相同的哈希值。

我正在寻找的内容在本地计算机上以独特的方式标识一个概念,当与其他人通信时,这意味着该概念名称只能在该单一通信中被解释为唯一的,并且在更改为之前可能无法与其他知识图集成全球独一无二。它也不依赖于任何名称空间权限或电子邮件(也需要注册)。这样的计划是否存在(也许是非正式的)?考虑到这些限制,你会做什么?

编辑:只是想澄清我对电子邮件和网络域的看法。电子邮件很简单,注册过程完全自动化 - 您可以立即注册。但是,您依赖该组织来维护电子邮件注册表,不会将您踢出(例如,如果您的电子邮件帐户处于非活动状态),也不会倒闭。个人网络域需要订阅,并且不应要求数据发布者也支付维护费。当他们不再想支付费用时,这可能会导致注销,并且如果其他用户将这些 URI 重复用于其他目的,数据现在可能会变得不明确。像 yourName.github.io 这样的免费网络域名具有与电子邮件地址相同的问题。

Ill*_*ack 5

一个非常有趣的问题!是的,确实有一个针对本地通信特定资源 \xe2\x80\x92 的标准化 URI 方案cid:,但我强烈建议不要这样做将它用于 RDF,因为你不能真正期望设计用于 RDF 的软件能够理解它。您只能在内部使用它,并且可以mid:在 URI 离开系统时将其转换,但为什么呢?这不是 RDF 应该如何工作的,最好从一开始就选择一个稳定的 URI。

\n

有几个因素会影响 URI 的选择:

\n
    \n
  1. URI 应该是可取消引用的吗?
  2. \n
  3. 其他人是否有可能为不同的事物选择相同的 URI?
  4. \n
  5. 是否希望其他人为同一事物选择相同的 URI?
  6. \n
  7. URI 应该是“显而易见的”,即用于该方案的用途吗?
  8. \n
\n

让我们看看根据这些标准有哪些选项:

\n

http(s):

\n
    \n
  1. 是的,httpURI 应该指向某个地方。对于抽象资源,你无法找到资源本身,但至少可以找到它的描述。http://localhost/仅当您在那里运行 HTTP 服务器时才有意义。
  2. \n
  3. 只要您控制该权限,其他用户就无权(就该词的某些含义而言)将其用于自己的目的。然而,所有用户都平等地有权使用http://localhost/myConcept,因为它是本地URI。在 RDF 世界中,这意味着什么,这并不是很明显,因为 URI 应该是全局唯一的。你可以给它赋予一个含义,但你仍然无法完全控制它。
  4. \n
  5. & 4. 在这里并不真正适用,因为 HTTP 通常用于任何资源/概念。
  6. \n
\n

对于http,您应该拥有一个可用的权限,并且您应该运行一个可以解析这些 URI 的 Web 服务器,最好只要您打算使用它们,最好是永远使用它们。您可以免费获得一个,但如果您不想使用,还可以使用吗?是的!

\n
    \n
  • 如果您有一个唯一的 IP 地址,例如10.13.139.173,您可以直接使用它,如 中http://10.13.139.173/myConcept,或者您可以将其转换为域(请参阅此处)并 make http://173.139.13.10.in-addr.arpa/myConcept。然而,您仍然应该保证 IP 地址永远不会被重新分配给其他人,否则您将破坏第 2 点(当然还有第 1 点)。

    \n
  • \n
  • 创建.onion隐藏服务!这些是标准化且独特的,因此您可以永远免费使用它们,并且能够证明这一点,只要您不介意拥有像http://ofj09pokr8fypnybesnuuc62ygw12abxe2lapry3zgi2si8rvt61r2yv.onion/myConcept.

    \n
  • \n
\n

file:

\n
    \n
  1. fileURI 应指向文件。没有解析机制,但预计您可以打开任何file:///URI,并且如果权限已知,则使用某种平台定义的机制与目标计算机进行通信。
  2. \n
  3. 与 for 相同的事情也http适用于此。在全球范围内只能表示“每个人的文件系统中的file:///myConcept文件”之类的内容,这是您不能用于自己的实体的内容。myConcept
  4. \n
  5. 是的,使用它来表示特定的常用文件可能是有意义的file:///C:/Windows/notepad.exe,但是这在您的情况下没有多大用处。
  6. \n
  7. fileURI 用于文件。将其用于其他用途可能只会导致混乱。
  8. \n
\n

fileURI 用于文件以外的抽象事物是一个漫长的过程,即使在这种情况下,您也必须解决与httpURI 相同的问题,因此最好还是使用它们。

\n

tag:

\n
    \n
  1. 不一定,但能够联系权威机构并在某处找到有关标签的信息是件好事。
  2. \n
  3. 不,除了httpURI 的保证之外,由于tagURI 的时间部分,如果您失去了对权限的控制,您不会冒其他人重新定义其含义的风险。
  4. \n
  5. & 4. 同样不相关,就像httpURI 一样。
  6. \n
\n

总而言之,这些 URI 与httpURI 非常相似,但不需要维护服务器来保持它们的活动和良好定义。我认为这是本地使用标识符的最佳解决方案。如果您可以随时拥有域名或电子邮件地址,那么使用它们就足够了。您也可以在这里使用.onion域名,这样您就拥有了tag:ofj09pokr8fypnybesnuuc62ygw12abxe2lapry3zgi2si8rvt61r2yv.onion,2023:myConcept.

\n

urn:uuid:

\n
    \n
  1. 不,URN 不可取消引用,它们是名称。
  2. \n
  3. UUID 必须相同,如果您选择随机 UUID,则这种情况极不可能发生。
  4. \n
  5. 仅当您使用基于哈希的 UUID 时,才可能发生这种情况,这是需要的,但可能不适用于您的情况。
  6. \n
  7. uuidURN 通常可用于任何资源。
  8. \n
\n

实际上,您关于在 UUID \xe2\x80\x92 中包含人类可读组件的说法是错误的,您忘记了#!假设你选择来表示你的词汇,那么使用你想要的任何东西urn:uuid:e45f8769-8f64-4301-8c3a-12272eaa3f75都没有什么问题。urn:uuid:e45f8769-8f64-4301-8c3a-12272eaa3f75#myConcept单独的 URI 方案无法控制片段,因此如果基本 URI 是“您的”,请选择具有您想要的任何层次结构的任何片段。这是第二好的解决方案;它更短,但没有传达您想要的“本地”含义,并且您只能控制片段。

\n

data:

\n
    \n
  1. 是的,dataURI 可以在本地取消对其存储的数据的引用。
  2. \n
  3. 不,给定的媒体类型和数据组合是 URI 所表示和编码的内容。
  4. \n
  5. 绝对是的,原因与上面相同。
  6. \n
  7. file是的,就像URI 一样,应该data:仅用于数据,即旨在使用某种媒体类型解释的字节序列。
  8. \n
\n

不要将其用于非数据的抽象事物。虽然您可能会从 URI 中获得一些唯一性data:application/x.my.very.special.namespace,myConcept,但它本质上仍然是 9 个字节的序列。

\n

magnet:urn:sha1:ni:ETC。

\n

它们基于哈希值,因此如果您没有哈希值,则使用它们没有意义。

\n

我还知道一些其他类型的 URI,所以让我们也看一下它们:

\n

urn:oid:

\n

OID 具有层次结构,您可以免费获得一个来创建自己的层次结构,您甚至可以将其用于带有计数器和其他内容的临时标识符。否则与 相同urn:uuid:

\n

urn:urn-5:

\n

这是一个鲜为人知但很酷的非正式 URN 命名空间,它允许您使用随机字节作为标识,但允许本地部分,因此(据我所知),您可以使用类似urn:urn-5:9Q8Vb+6gDOz6IpWyNnfKdVmA6gQ:myConcept. 该规范在“计数器”之后调用该部分:,但如果生成的 URN 有效,则允许使用任意字符串,因此您当然也可以使用任何路径和任何片段(或?=用于某种查询)。我想说这是第三个最佳解决方案\xe2\x80\x92 它是完全去中心化的,似乎是为此目的而制作的,具有您需要的部件,但它并不是很出名。

\n

urn:publicid:

\n

这是另一个很酷的 URN 命名空间,旨在由 SGML/XML PUBLIC 标识符组成。这些没有任何特定的强制结构(如果您想使用它,则有 FPI),并且我假设系统是“先到先得”,因为您几乎可以使用任何东西来生成这些标识符(或你可以使用这个工具)。我认为这是第四个最佳解决方案,但它又有点晦涩,而且有点“狂野西部”,因为(除非您使用经过验证的 FPI)您必须想出自己足够强大的方法确保您创建的名称只是您自己的。

\n