从 JSON 到 JSON-LD 而不更改源
From JSON to JSON-LD without changing the source
我的问题有'duplicates',但他们没有回答我的问题。
考虑第 6.13 段中描述的以下 JSON-LD 示例 - 来自 http://www.w3.org/TR/json-ld/ 的命名图:
{
"@context": {
"generatedAt": {
"@id": "http://www.w3.org/ns/prov#generatedAtTime",
"@type": "http://www.w3.org/2001/XMLSchema#date"
},
"Person": "http://xmlns.com/foaf/0.1/Person",
"name": "http://xmlns.com/foaf/0.1/name",
"knows": "http://xmlns.com/foaf/0.1/knows"
},
"@id": "http://example.org/graphs/73",
"generatedAt": "2012-04-09",
"@graph":
[
{
"@id": "http://manu.sporny.org/about#manu",
"@type": "Person",
"name": "Manu Sporny",
"knows": "http://greggkellogg.net/foaf#me"
},
{
"@id": "http://greggkellogg.net/foaf#me",
"@type": "Person",
"name": "Gregg Kellogg",
"knows": "http://manu.sporny.org/about#manu"
}
]
}
问题:
如果只从 JSON 部分开始,没有语义层会怎样:
[{
"name": "Manu Sporny",
"knows": "http://greggkellogg.net/foaf#me"
},
{
"name": "Gregg Kellogg",
"knows": "http://manu.sporny.org/about#manu"
}]
而你 link 使用 http link header 或 rdflib 解析来自单独文件或位置的 @context,那么你仍然没有 @id 和 @type在文档的其余部分。将那些缺失的 keys-values 注入到 json 字符串中不是一个干净的选择。这个想法是在不改变原来的 JSON 部分的情况下从 JSON 到 JSON-LD。
我认为它定义三重主题的方式必须使用@id 来映射到 IRI。 JSON 数据不太可能有@id key-values。那么这是否意味着如果不先添加密钥,所有 JSON 文件都无法解析为 JSON-LD?我想知道他们是怎么做到的。
有人有想法指出我正确的方向吗?
谢谢。
不,很遗憾,这是不可能的。然而,存在正是出于这个原因而创建的库和工具。 JSON-LD Macros就是这样一个图书馆。它允许对 JSON 对象进行声明性转换,使它们可用作 JSON-LD。因此,实际上,您所需要的只是在现成 JSON-LD 处理器之上的一个非常薄的层。
我的问题有'duplicates',但他们没有回答我的问题。
考虑第 6.13 段中描述的以下 JSON-LD 示例 - 来自 http://www.w3.org/TR/json-ld/ 的命名图:
{
"@context": {
"generatedAt": {
"@id": "http://www.w3.org/ns/prov#generatedAtTime",
"@type": "http://www.w3.org/2001/XMLSchema#date"
},
"Person": "http://xmlns.com/foaf/0.1/Person",
"name": "http://xmlns.com/foaf/0.1/name",
"knows": "http://xmlns.com/foaf/0.1/knows"
},
"@id": "http://example.org/graphs/73",
"generatedAt": "2012-04-09",
"@graph":
[
{
"@id": "http://manu.sporny.org/about#manu",
"@type": "Person",
"name": "Manu Sporny",
"knows": "http://greggkellogg.net/foaf#me"
},
{
"@id": "http://greggkellogg.net/foaf#me",
"@type": "Person",
"name": "Gregg Kellogg",
"knows": "http://manu.sporny.org/about#manu"
}
]
}
问题:
如果只从 JSON 部分开始,没有语义层会怎样:
[{
"name": "Manu Sporny",
"knows": "http://greggkellogg.net/foaf#me"
},
{
"name": "Gregg Kellogg",
"knows": "http://manu.sporny.org/about#manu"
}]
而你 link 使用 http link header 或 rdflib 解析来自单独文件或位置的 @context,那么你仍然没有 @id 和 @type在文档的其余部分。将那些缺失的 keys-values 注入到 json 字符串中不是一个干净的选择。这个想法是在不改变原来的 JSON 部分的情况下从 JSON 到 JSON-LD。
我认为它定义三重主题的方式必须使用@id 来映射到 IRI。 JSON 数据不太可能有@id key-values。那么这是否意味着如果不先添加密钥,所有 JSON 文件都无法解析为 JSON-LD?我想知道他们是怎么做到的。 有人有想法指出我正确的方向吗? 谢谢。
不,很遗憾,这是不可能的。然而,存在正是出于这个原因而创建的库和工具。 JSON-LD Macros就是这样一个图书馆。它允许对 JSON 对象进行声明性转换,使它们可用作 JSON-LD。因此,实际上,您所需要的只是在现成 JSON-LD 处理器之上的一个非常薄的层。