从 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 处理器之上的一个非常薄的层。