微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NGSI-LD 和 JSON-LD 的区别是什么?

如何解决NGSI-LD 和 JSON-LD 的区别是什么?

在 Fiware 教程中,我读到 NGSI-LD 不是 100% JSON-LD。你能解释一下有哪些区别吗?

解决方法

JSON-LD 是 JavaScript 对象表示法的扩展,它使链接数据概念能够以 JSON 表示,并提供人类和计算机可读的格式。这是 JSON-LD:

{
  "@context": "https://json-ld.org/contexts/person.jsonld","@id": "http://dbpedia.org/resource/John_Lennon","name": "John Lennon","born": "1940-10-09","spouse": "http://dbpedia.org/resource/Cynthia_Lennon"
}

这与 NGSI-LD 中表达的数据相同

{
   "@context":  [
     "https://json-ld.org/contexts/person.jsonld","https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld"
  ],"id": "http://dbpedia.org/resource/John_Lennon","type": "Person","name": {"type": "Property","value": "John Lennon"},"born": {"type": "Property","value": "1940-10-09"},"spouse": {
      "type": "Relationship","object": 
      "http://dbpedia.org/resource/Cynthia_Lennon"
   }
}

每个 NSGI-LD 负载都是有效的 JSON-LD。然而,NGSI-LD 有额外的规则和限制(例如,所有属性都必须具有 typePropertyRelationship),因此并非所有 JSON-LD 片段都是有效的 NGSI-LD。

很像 JSON-LD 是 JSON 加上链接数据概念,NGSI-LD 是 NGSI-v2 加上链接数据概念

NGSI-LD specification 描述了如何向上下文代理发出请求以及响应的预期格式。 NGSI 中有 27 个定义明确的操作。此外,NGSI-LD 定义了诸如订阅注册以及属性关系等术语的严格定义,时间戳应该如何只能在 observedAt 中保存,地理位置必须在 location 属性中作为 GeoJSON Point 等找到。

NGSI-LD Entities,Properties and Relationship

JSON-LD 仅是一种数据表示形式,除了具有 JSON 格式的属性和 @context 属性之外,它不假设如何访问有效负载或如何构建有效负载。

NGSI-LD 中的 Context-Broker 到 Context-Broker 操作可以假设核心上下文 https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld 被假定为请求的一部分并最后处理,因此总是覆盖其他 @context 元素。 @context 元素也可以使用 Link Header

表示

JSON-LD 表示必须始终包含一个 @context 属性(毕竟这是使它们成为 application/ld+json 而不仅仅是普通的 application/json 的原因)并且 @context 根据找到的元素数组的顺序。

NGSI-LD 请求也可能以 JSON application/json 和 GeoJSON application/geo+json 格式返回。

总之,NGSI-LD 是 JSON-LD 的扩展子集。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。