我见过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
。
答案 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>
<强>参考强>