【问题标题】:How to implement a FIWARE project如何实施 FIWARE 项目
【发布时间】:2022-08-02 23:49:30
【问题描述】:

大家好,在完成有关 NGSI-LD 的教程后,请访问: https://github.com/fiware/tutorials.NGSI-LD/ 我目前正在尝试实现我的数据模型并面临多桩问题。

首先我知道 JSON、JSON-LD 和 NGSI-LD 是什么,以及上下文代理和 MongoDB 如何协同工作的基础知识。

我的问题是如何设置这样的项目。我没有找到任何关于如何设置项目的教程。我需要知道的要点是:

  • 如何设置 orion 上下文代理
  • 如何将上下文文件提供给上下文代理
  • 如何设置 MongoDB
  • 如何将以上所有内容连接到一个项目中

现在,我尝试使用以下教程将我的数据模型转换为 json-ld 和 ngsi-ld: https://github.com/FIWARE/tutorials.Understanding-At-Context/tree/ba6ac22ce329ed8eaac6ef5f01266048dc84d244

之后,我从 CRUD-OPerations 之类的教程中删除了数据模型,并插入了我的数据模型。但是当我开始本教程并发出 POST 请求时,它会接受任何数据,而忽略数据模型。我可以使用不存在的属性创建数据模型中不存在的实体。如果我使用默认数据模型开始一个教程,也会出现同样的问题。所以它似乎总是忽略上下文文件。

在我用 POST 写入一些数据并用 GET 读取(两者都工作得很好)并关闭项目之后,下一个问题发生了。重新启动教程后,我写入的所有数据都将被删除。

我真的没有完全理解 FIWARE 还是我做错了什么?

我将不胜感激链接到详细解释的任何信息。

    标签: fiware fiware-orion


    【解决方案1】:

    here 所述,NGSI-LD interface 是一个灵活的 API,可输出各种 JSON 和JSON-LD 格式并用于数据交换。教程描述了正确使用仅接口.它们不包括生产部署。

    重新启动教程后,我写入的所有数据都将被删除。

    教程就是这样 - 他们从一个干净的石板开始。 docker-file 中的 Mongo-DB 实例没有 persistent volume 并自行清理。

    它接受任何数据,忽略数据模型。

    那是因为 JSON-LD @context 不习惯于 validate JSON data - 你需要一个 JSON schema。从技术上讲,NGSI-LD core context @context 文件中的 @vocab 元素将任何未知元素推送到所谓的默认上下文 https://uri.etsi.org/ngsi-ld/default-context/ 上。 @context 文件只是提供了一种将属性名称标准化为 IRI 的机制。假设您已经为您的用例创建了 Swagger/Open API 文件,那么您可以使用 Swagger editor 来生成服务器或客户端代码存根。在 Java 中这样做会产生一个 POJO,它只接受模型的属性。

    如何设置 orion 上下文代理

    您可以使用提供的docker-compose 作为入门的基础,但为了在 Kubernetes 上进行适当的大规模部署,建议使用提供的Helm ChartsOrion-LD documentation 提供更多细节。

    如何将上下文文件提供给上下文代理

    您将@context 文件放在公共Web 服务器上。如何托管 @context 文件取决于您。教程为此使用HTTPD@context 背后的主要思想是,您正在发布一组商定的 IRI,这些 IRI 对应于您的数据中的属性。 Smart Data ModelsSchema.orgGS1 和许多其他机构生成 IRI,您应该重用它们并链接到它们或发布您自己的 @context 描述您自己的世界。

    一旦@context 只需将Link 标头附加到每个上下文代理请求。

    'Link: <http://path/to/my/context/ngsi-context.jsonld>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"'
    

    如何设置 MongoDB

    您可以阅读有关官方 Mongo-DB 图像 here 的信息 - 那里有很多讨论 persistence-storage 的教程

    如果您为正在使用的每个 NGSILD-Tenant 添加索引,您将获得更好的性能 - 默认称为 orion

        conn = new Mongo();db.createCollection("orion");
        db = conn.getDB("orion");
        db.createCollection("entities");
        db.entities.createIndex({"_id.servicePath": 1, "_id.id": 1, "_id.type": 1}, {unique: true});
        db.entities.createIndex({"_id.type": 1});
        db.entities.createIndex({"_id.id": 1});
    

    如何将以上所有内容连接到一个项目

    教程慢慢建立了一个玩具例子,但显然水平非常有限。这是一个非常广泛的主题 - 您最好通过 FIWARE 市场或您当地的 FIWARE iHub 进一步询问 training or consultancy

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      • 2022-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多