别名 JSON-LD 关键字并同时为其提供 @context
Alias a JSON-LD keyword and simultaneously provide a @context for it
我有以下 JSON 文档(基于 GitHub API 输出):
{
"@id": "https://github.com/octadocs/octadocs",
"license": {
"key": "mit",
"name": "MIT License",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit",
"node_id": "MDc6TGljZW5zZTEz"
}
}
使用 JSON-LD,我想从中检索以下三元组:
<https://github.com/octadocs/octadocs>
<https://octadocs.io/github/license>
<https://spdx.org/licenses/MIT> .
- 我可以将
license
解释为 https://octadocs.io/github/license
和 @vocab
(我想在全球范围内实际使用它,用于所有属性);
- 我可以为
spdx_id
指定 @type
使其值成为 IRI;
- 我终于可以用
@base
定义一个 @context
,将 MIT
字符串转换成 spdx.org 引用。
上下文:
{
"@base": "https://octadocs.io/github/",
"@vocab": "https://octadocs.io/github/",
"spdx_id": {
"@type": "@id",
"@context": {
"@base": "https://spdx.org/licenses/"
}
}
}
在 JSON-LD 游乐场看到一个 demonstration。
但是,这会创建一个与所需结构略有不同的结构:
<https://github.com/octadocs/octadocs> <https://octadocs.io/github/license> _:b0 .
_:b0 <https://octadocs.io/github/spdx_id> <https://spdx.org/licenses/MIT> .
我想避开空白节点。
这可以通过JSON-LD关键字别名来实现:
{
...,
"spdx_id": "@id"
}
但是如何同时
- 别名 属性,
- 并为其定义
@type
和 @context
之类的东西?
您要做的是删除 license
中的 @vocab
定义,将 spdx_id
别名为 @id
,并删除默认词汇表。这将 license
的对象值视为节点对象(真正的节点引用),因为 spdx_id
以外的所有键都将被忽略。见游乐场 link here.
{
"@context": {
"@base": "https://octadocs.io/github/",
"@vocab": "https://octadocs.io/github/",
"license": {
"@context": {
"@vocab": null,
"spdx_id": "@id"
}
}
},
"@id": "https://github.com/octadocs/octadocs",
"license": {
"key": "mit",
"name": "MIT License",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit",
"node_id": "MDc6TGljZW5zZTEz"
}
}
我有以下 JSON 文档(基于 GitHub API 输出):
{
"@id": "https://github.com/octadocs/octadocs",
"license": {
"key": "mit",
"name": "MIT License",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit",
"node_id": "MDc6TGljZW5zZTEz"
}
}
使用 JSON-LD,我想从中检索以下三元组:
<https://github.com/octadocs/octadocs>
<https://octadocs.io/github/license>
<https://spdx.org/licenses/MIT> .
- 我可以将
license
解释为https://octadocs.io/github/license
和@vocab
(我想在全球范围内实际使用它,用于所有属性); - 我可以为
spdx_id
指定@type
使其值成为 IRI; - 我终于可以用
@base
定义一个@context
,将MIT
字符串转换成 spdx.org 引用。
上下文:
{
"@base": "https://octadocs.io/github/",
"@vocab": "https://octadocs.io/github/",
"spdx_id": {
"@type": "@id",
"@context": {
"@base": "https://spdx.org/licenses/"
}
}
}
在 JSON-LD 游乐场看到一个 demonstration。
但是,这会创建一个与所需结构略有不同的结构:
<https://github.com/octadocs/octadocs> <https://octadocs.io/github/license> _:b0 .
_:b0 <https://octadocs.io/github/spdx_id> <https://spdx.org/licenses/MIT> .
我想避开空白节点。
这可以通过JSON-LD关键字别名来实现:
{
...,
"spdx_id": "@id"
}
但是如何同时
- 别名 属性,
- 并为其定义
@type
和@context
之类的东西?
您要做的是删除 license
中的 @vocab
定义,将 spdx_id
别名为 @id
,并删除默认词汇表。这将 license
的对象值视为节点对象(真正的节点引用),因为 spdx_id
以外的所有键都将被忽略。见游乐场 link here.
{
"@context": {
"@base": "https://octadocs.io/github/",
"@vocab": "https://octadocs.io/github/",
"license": {
"@context": {
"@vocab": null,
"spdx_id": "@id"
}
}
},
"@id": "https://github.com/octadocs/octadocs",
"license": {
"key": "mit",
"name": "MIT License",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit",
"node_id": "MDc6TGljZW5zZTEz"
}
}