13

我见过HAL 规范中描述的 CURIE 。乍一看,它看起来像是一种为 URI 提供模板的方法。但是,我也看到它突出地提到它可以用于访问rel. 哪一个?它只是一个模板机制吗?有没有人有一个好的用例的例子?

此外,以下是否是 CURIE 的合法使用?或者它应该只用于提供关于 a 的文档rel吗?

    { 
        "id": 1,
        "name": "Social Media Bundle",
        "_links": {
            "self": {
                "href": "http://my.api.com/bundles/1"
            },
            "curies": {
                "name": "bundle",
                "href": "http://my.api.com/bundles/1{rel}"
                "templated": true
            },
            "bundle:channels": {
                "href": "/channels"
            }
        }
    }

这里bundle:channels将扩展为http://my.api.com/bundles/1/channels.

4

2 回答 2

8

根据HAL 规范的第 7 页,居里是链接给定资源文档的建议方法:

自定义链接关系类型([RFC5988] 中的扩展关系类型)
应该是 URI,当在 Web 浏览器中取消引用时
,它以 HTML 页面的形式提供有关
目标资源的含义和/或行为的相关文档。这将提高
API 的可发现性。

CURIE 语法 [W3C.NOTE-curie-20101216] 可用于这些 URI 的简洁性。CURIE 是通过一
组链接对象在 HAL 文档中建立的,这些链接对象的关系类型为“curies”,位于根
资源对象上。这些链接包含一个带有标记
“rel”的 URI 模板,并通过“name”属性命名。

{
  "_links": {
    "self": { "href": "/orders" },
    "curies": [{
      "name": "acme",
      "href": "http://docs.acme.com/relations/{rel}",
      "templated": true
    }],
    "acme:widgets": { "href": "/widgets" }
  }
}

上面演示了通过 CURIE 语法将关系“http://docs.acme.com/relations/widgets”缩写为“acme:widgets”。

CURIE规范本身与记录资源没有任何关系,旨在启用紧凑的 URI。

为了回答你的问题,我对规范的解释表明你已经合法地使用了居里语法,但不是在 HAL 的上下文中。

于 2015-01-26T17:21:00.630 回答
1

CURIE是非 XML 语言中QName的替代品,它提供命名空间功能,用于使用基于语义数据(RDFa、JSON-LD、YAML 等)中的前缀/后缀映射的简写来描述 URL 关系,而不依赖于 XML 命名空间。

语义网通过词汇文档指定这一点,其中前缀与文档相关联,后缀用于基于此词汇创建 IRI。例如,IRI http://xmlns.com/foaf/0.1/指定一个词汇文档,名称是该词汇中的一个术语。将这两个项目连接在一起,您就有了一个词汇术语的明确标识符。紧凑的 URI 表达式或短形式是 foaf:name ,扩展形式是http://xmlns.com/foaf/0.1/name。此词汇术语标识某事物的给定名称,例如 - 人名。

例如:

如果在 RDF 中我想使用 Dublin Core creator 属性,那么我需要做的就是:

dc:creator

并且假设我将 dc 命名空间前缀定义为http://purl.org/dc/elements/1.1/,我已经有效地表示了以下 URI:

http://purl.org/dc/elements/1.1/creator

在 HTML 中,它看起来像这样:

<div prefix="dc:http://purl.org/DC/elements/1.0"> 
 <a property="dc:creator" href="http://example.com">IANA</a>
</div>

参考

于 2016-08-17T23:01:53.467 回答