任何人都可以提供CURIE的良好解释以及如何使用它们吗?

时间:2015-01-26 17:02:43

标签: json api hateoas hal-json curie

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

此外,以下是CURIE的合法使用吗?或者它应该仅用于提供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

2 个答案:

答案 0 :(得分:8)

根据HAL spec的第7页,curies是建议的方法,用于链接给定资源的文档:

  

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

     

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

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

以上说明了这种关系   " http://docs.acme.com/relations/小部件"缩写为   " ACME:窗口小部件"通过CURIE语法。

CURIE spec本身与记录资源没有任何关系,旨在实现紧凑的URI。

要回答您的问题,我对规范的解释会表明您已合法地使用了居里语法,但没有在HAL的上下文中使用。

答案 1 :(得分:1)

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

  

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

例如:

  

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

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>

<强>参考