如何解决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 有额外的规则和限制(例如,所有属性都必须具有 type
或 Property
的 Relationship
),因此并非所有 JSON-LD 片段都是有效的 NGSI-LD。
很像 JSON-LD 是 JSON 加上链接数据概念,NGSI-LD 是 NGSI-v2 加上链接数据概念。
NGSI-LD specification 描述了如何向上下文代理发出请求以及响应的预期格式。 NGSI 中有 27 个定义明确的操作。此外,NGSI-LD 定义了诸如订阅和注册以及属性和关系等术语的严格定义,时间戳应该如何只能在 observedAt
中保存,地理位置必须在 location
属性中作为 GeoJSON Point
等找到。
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 举报,一经查实,本站将立刻删除。