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.
{
"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"]
}
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.
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.
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.