Plataforma

Uma camada de contexto NGSI-LD federada com aplicação de políticas e conectores de espaço de dados, adaptadores para os sistemas que já opera, e modelos de dados que mantêm o seu significado em todos eles.

A camada de contexto

Cada sistema que liga mantém a sua própria base de dados. Por cima deles corremos um context broker NGSI-LD que guarda uma descrição de cada coisa real: uma rua, uma subestação, um sensor, uma sala. As suas aplicações passam então a fazer uma pergunta ao broker em vez de fazerem doze perguntas diferentes a doze sistemas.

Uma entidade NGSI-LD leva consigo as suas propriedades, as suas relações e o seu @context. Isso basta para que uma consulta como “todos os sensores de temperatura neste bairro e o edifício a que pertencem” atravesse fronteiras de sistemas sem código de cola escrito para a ocasião.

GET /ngsi-ld/v1/entities/urn:ngsi-ld:Streetlight:BB-1042
{
  "id": "urn:ngsi-ld:Streetlight:BB-1042",
  "type": "Streetlight",
  "powerState": { "type": "Property", "value": "off",
                    "observedAt": "2026-08-30T19:04:00Z" },
  "location": { "type": "GeoProperty",
                 "value": { "type": "Point", "coordinates": [19.146, 48.736] } },
  "refRoadSegment": { "type": "Relationship",
                       "object": "urn:ngsi-ld:RoadSegment:BB-Nam-SNP" },
  "@context": ["https://smartdatamodels.org/context.jsonld"]
}
Um candeeiro de rua como entidade NGSI-LD: um estado, uma localização, uma relação com a via onde está.

Três formas de ligar uma aplicação

O sítio onde os dados ficam depois de chegarem decide quanta duplicação e sincronização o projeto carrega, por isso classificamos cada aplicação num de três tipos antes de se construir seja o que for.

  • Sem estado. A aplicação não guarda dados próprios. Lê do broker e escreve de volta nele, e o broker é a única fonte de verdade.
  • Cópia parcial. A aplicação precisa de um subconjunto das entidades na sua própria base de dados, para pesquisa de texto integral ou análise pesada para a qual o broker não foi construído. Mantemos esse subconjunto sincronizado e documentamos o que é copiado.
  • Propriedade da aplicação. A aplicação já fala NGSI-LD e mantém os seus dados. O broker guarda um registo que aponta para ela e reencaminha as consultas correspondentes, por isso um sistema de um fornecedor entra na plataforma sem que nada fique guardado duas vezes.

Como os brokers partilham

Um único broker para toda a organização raramente é aceite. Os departamentos são donos dos seus dados e têm cuidado em entregá-los, o que é razoável. Por isso os brokers registam-se uns nos outros como fontes de contexto: uma consulta chega a um broker, segue para o broker ou adaptador que detém aquelas entidades, e volta como uma única resposta unida.

A empresa de águas mantém a sua base de dados e as suas regras de acesso. Um painel da cidade continua a mostrar dados de água ao lado de contagens de trânsito. Verificamos que nada foi copiado em vez de o assumir: a mesma consulta restringida às entidades guardadas localmente devolve apenas o que aquele broker possui.

consulta uma resposta Trânsito context broker mantém os seus dados registado como fonte de contexto Água context broker mantém os seus dados Energia context broker mantém os seus dados
Uma consulta chega a um broker e é respondida pelos três. Nenhum dado foi copiado.

Quem vê o quê

O NGSI-LD deixa o controlo de acessos de fora da norma de propósito. Nós acrescentamo-lo no gateway à frente do broker. Cada regra nomeia um sujeito, uma ação, um recurso e uma condição: este parceiro pode consultar estes tipos de entidade dentro deste âmbito. O gateway confronta cada pedido com o motor de políticas e, se o motor não estiver acessível, o pedido é recusado em vez de deixado passar.

O que conta para um gémeo partilhado é a forma como a regra é aplicada. O gateway não filtra a resposta a posteriori. Reescreve a consulta antes de o broker a ver, para que a consulta só possa corresponder a entidades a que quem chama tem direito, seja o que for que tenha escrito. Um parceiro que peça um âmbito que não pode ler recebe o subconjunto permitido e mais nada, e a resposta continua a ser uma resposta NGSI-LD comum. Os clientes sem modificações por trás continuam a funcionar.

Entre organizações

Dentro de uma organização, a federação entre brokers chega. Entre uma cidade e a sua região, ou uma fábrica e a sua concessionária, o proprietário quer um contrato antes de o primeiro byte se mexer. Cada organização corre um conector do Dataspace Protocol ao lado do seu broker. O conector do consumidor pede o catálogo, negoceia a oferta e recebe um ponto de transferência; a federação do broker passa então a apontar para esse ponto em vez de apontar diretamente para o outro lado.

A negociação acontece uma vez por relação e demora alguns segundos. Depois disso, uma consulta federada através do conector custa mais 2 ms do que a federação simples entre brokers para uma entidade e 4 ms para dez, medido entre três organizações sobre uma rede alargada. Não é a soberania que torna a federação cara.

Adaptadores e ingestão

A maior parte do trabalho em qualquer projeto está por baixo do broker.

  • IoT e telemetria: fluxos MQTT, LoRaWAN e OPC UA, normalizados em entidades e atualizados à medida que as medições chegam. Um fluxo de transportes públicos com cerca de 400 veículos, a uma mensagem por veículo por segundo, é uma carga normal.
  • Geoespacial: camadas WFS, GeoJSON e PostGIS, para que as entidades mantenham geometria a sério em vez de um par de coordenadas.
  • Observações de sensores: OGC SensorThings e serviços compatíveis com STA para séries temporais.
  • Cadastros e ficheiros: bases de dados de ativos, exportações CSV, extratos BIM e IFC, registos cadastrais.
MQTT LoRaWAN OPC UA SCADA WFS · PostGIS GeoJSON SensorThings STA CSV · IFC BIM Adaptador normaliza NGSI-LD entidades, prontas a consultar
O que alimenta o contexto: protocolos para dentro, entidades NGSI-LD para fora.

Modelos que mantêm o significado

Uma entidade só viaja entre sistemas se ambos entenderem o mesmo por ela. Assentamos nos Smart Data Models publicados onde encaixam e estendemo-los onde não encaixam, e cada extensão fica escrita como parte da entrega. Os contextos JSON-LD resultantes são seus, versiona-os como qualquer outro artefacto e leva-os consigo.

O acordo sobre um IRI de modelo é o que faz o trabalho. Quando duas organizações publicaram a mesma leitura de PM2.5 com nomes de atributo diferentes, cada uma mapeada para o modelo partilhado, um consumidor recebeu as duas sob uma única chave sem código de tradução pelo caminho. Um atributo que ninguém tinha mapeado ficou à parte, e esse é o resultado correto: a plataforma mostra a falha de vocabulário em vez de a esconder.

Como se opera

A stack é de código aberto: Scorpio como context broker, Apache APISIX e Open Policy Agent para a aplicação de políticas, Keycloak para identidade, uma distribuição do Eclipse Dataspace Components como conector, tudo sobre Kubernetes. Corre no seu cluster, num cluster gerido numa região da UE à sua escolha, ou num único servidor para um piloto. Recebe a implantação como código, os modelos, os adaptadores e um manual escrito para alguém que não esteve no projeto. Substitua-nos mais tarde e continua tudo a funcionar.

O que ainda não existe

Preferimos que ouça isto de nós. As consultas federadas cobrem o estado atual das entidades de um parceiro; o histórico ainda tem de ser replicado antes de poder ser desenhado num gráfico. Escrever no gémeo de um parceiro sob contrato está desenhado e ainda não entregue, por isso hoje um parceiro lê. Sob carga programática sustentada, o caminho federado serve cerca de um quarto do débito de uma consulta direta, o que está muito acima do que os painéis precisam e vale a pena saber antes de lhe pôr uma API pública à frente.

O que deixamos a outros

Não vendemos gémeos, painéis nem equipamentos. A visualização vai para a ferramenta que as suas equipas já abrem de manhã, e nós entregamos-lhe um contexto unido de onde desenhar.

Pergunte sobre os seus sistemas