@context中json-ld @id和@type有什么区别?

时间:2014-06-20 00:21:07

标签: json-ld

我在这里复制json-ld standard的一部分示例:

{
  "@context":
  {
    "foaf": "http://xmlns.com/foaf/0.1/",
    "picture": { "@id": "foaf:depiction", "@type": "@id" }
  },
  "picture": "http://twitter.com/account/profile_image/markuslanthaler"
}

我不明白,为什么我们应该在@context中使用@id。它应该是:

{
  "@context":
  {
    "foaf": "http://xmlns.com/foaf/0.1/",
    "picture": { "@type": ["@id", "foaf:depiction"] }
  },
  "picture": "http://twitter.com/account/profile_image/markuslanthaler"
}

你有任何解释吗?

1 个答案:

答案 0 :(得分:4)

@id告诉JSON-LD处理器如何扩展术语。如果您使用@vocab,或者该术语是紧凑的IRI形式,则可以省略。

@type告诉处理器如何处理JSON-LD文档中正文中使用的术语的普通字符串值。它可以是类似xsd数据类型,@ id或@vocab。最后两个是非常相似的,除了一个是针对文档库进行评估而另一个是作为词汇表术语进行评估。

如果上下文中术语定义的值是字符串而不是对象,则它只是用于指定仅具有@id的对象的简写。 不要将上下文视为rdfs / owl词汇,而是将其作为一种前缀机制。