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

时间:2017-10-19 07:13:25

标签: 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"
  }
}

1 个答案:

答案 0 :(得分:1)

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