[英]Using the HAL vocab with JSON-LD
我想知道,有没有办法在JSON-LD中使用HAL概念?
我有当前的jsonld文档:
{
"@context": {
"hal": "http://stateless.co/hal#",
"schema": "http://schema.org",
"_links": {
"@id": "hal:link",
"@container": "@index"
}
},
"@type": ["schema:Person", "hal:Resource"],
"name": "Jon Snow",
"_links": {
"self": {
"href": "/users/123"
}
}
}
但我不确定如何定义href
具有@id
的@type
,依此类推......
有没有办法基于RDF(S)定义HAL词汇并以某种方式将其导入我的jsonld文档的@context中,或者我应该做其他什么?
(我试图描述具有各种属性的超链接,如链接关系,HTTP方法,接受的媒体类型,语言,IRI模板,输入字段等等......所以@id
类型不足以让我描述链接。)
正如Tomasz已经建议的那样,你应该考虑使用Hydra,因为它可以或多或少地达到你想要的效果。 您在问题中包含的示例使用Hydra和JSON-LD看起来有点像这样:
{
"@context": {
"schema": "http://schema.org",
"ex": "http://example.com/myvocab#"
},
"@id": "/users/123",
"@type": [ "schema:Person", "hydra:Resource" ],
"name": "Jon Snow",
"ex:link": { "@id": "/another-resource" }
}
由于不需要“自我”链接( @id
已明确指定),我添加了另一个链接, ex:link
。 因此,它的链接关系是http://example.com/myvocab#link
,它的“href”是/another-resource
。 如果您需要更详细地描述该链接/属性,您可以通过创建一个文档来定义它,其方式与描述其他内容完全相同(如Tomasz也已经解释过):
{
"@context": {
"ex": "http://example.com/myvocab#",
"hydra": "http://www.w3.org/ns/hydra#"
},
"@id": "ex:link",
"@type": "hydra:Link",
"hydra:title": "My new link relation",
"hydra:supportedOperation": [
{
"@type": "hydra:Operation",
"hydra:method": "POST",
"hydra:expects": ....
}
]
}
关于你的评论
顺便说一句。 我或多或少熟悉Hydra词汇,但我不喜欢将资源映射到服务器端语言的真实类和对象,并自动将操作参数转换为这些对象。 也许有可能以另一种方式使用Hydra词汇,但我没有时间去试验。
九头蛇真的只是一个词汇。 由您决定如何使用它。 我想你正在谈论上面的HydraBundle 。 这只是使用它的一种方式。 这只是一个概念证明,表明它很容易实现。 所以请不要对此感到困惑。
我想邀请您加入Hydra W3C社区小组 。 然后我们可以在邮件列表中更详细地讨论这个问题。
免责声明:我是Hydra的创始人,也是Hydra W3C社区团体的主席。
我想你可能会对Hydra感兴趣。 你试过吗?
它是描述超媒体链接和操作的词汇表。 以下是它如何适用于简单的父链接
{
"@context": {
"schema": "http://schema.org",
"parent": {
"@id": "/vocab#parent"
"@type": "@id"
}
},
"@id": "/users/123",
"@type": "schema:Person",
"name": "Jon Snow",
"parent": "/users/Ned_Stark"
}
请注意,您无需在表示中包含域外的任何数据。 相反,您描述了父谓词的含义
{
"@context": "http://www.w3.org/ns/hydra/context.jsonld",
"@id": "/vocab#parent",
"@type": "hydra:Link"
}
您还可以描述类的操作(HTTP方法,范围,域等)和属性。 此外,操作可以直接包含在表示中,也可以附加到类和proeprties上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.