如何在 json-ld 中显式设置节点的命名空间



我定义了一个具有多个上下文的jsonld文件。每个上下文定义一个具有相同名称的术语。在 jsonld 文件上完成压缩时,所有具有相同名称的字段都位于同一命名空间中。

例如,使用下面的文件

{
    "@context": [
    {
        "name1": "http://example.org/name1/",
        "id" : {
            "@id" : "name:id",
            "@type" : "xsd:string"
        }
    },
    {
        "name2": "http://example.org/name2/",
        "identifier": {
            "@id": "name2"
        },
        "id" : {
            "@id" : "name2:id",
            "@type" : "xsd:string"
        }
    }],
    "@id": "http://example.org/1",
    "id" : "id/1",
    "identifier": {
        "id" : "identifier/1"
    }
}

压实后得到这个结果

{
  "@id" : "http://example.org/1",
  "http://example.org/name2/" : {
    "http://example.org/name2/id" : {
      "@type" : "xsd:string",
      "@value" : "identifier/1"
    }
  },
  "http://example.org/name2/id" : {
    "@type" : "xsd:string",
    "@value" : "id/1"
  }
}

但我会期待这个

{
  "@id" : "http://example.org/1",
  "http://example.org/name2/" : {
    "http://example.org/name2/id" : {
      "@type" : "xsd:string",
      "@value" : "identifier/1"
    }
  },
  "http://example.org/name1/id" : {  <== here name1
    "@type" : "xsd:string",
    "@value" : "id/1"
  }
}

上下文中定义的术语按顺序排列,最后一个上下文中遇到的术语获胜。在此示例中,我看不到在压缩时使用其他术语的任何方法。但是,您可能希望在 JSON-LD 1.1 中看到范围上下文,它确实为您提供了更大的灵活性。

最新更新