Resumo

  • RFC 9880 descreve Things interagíveis pela rede e os tipos de dados envolvidos, sem escolher transporte ou serialização.
  • Resolução determinística, namespaces, extensões críticas e binding explícito reduzem surpresas de compatibilidade.

Um Thing SDF é o modelo de uma entidade com a qual se pode interagir. Objects organizam a estrutura; Properties representam dados lidos ou escritos; Actions representam operações; Events representam notificações. Isso define semântica e tipos de dados trocados, não o comportamento de rede. URL, ID numérico, formato de payload, modo de invocação, ordenação e confiabilidade são detalhes de um protocol binding ou de outro mecanismo de extensão. Portanto, o modelo SDF sozinho não define um protocolo, não garante interoperabilidade e não impõe um ecossistema de IoT, transporte ou serialização.

Também não sustenta afirmações sobre suporte de fornecedor ou produto implantado sem evidência primária separada.

O mapa de namespace associa nomes curtos a URI de namespace; defaultNamespace seleciona o namespace-alvo. Sem namespace padrão, as definições permanecem locais e não podem ser reutilizadas por outros modelos. Referências externas usam CURIEs com prefixos presentes no mapa; nomes SDF não recebem resolução comum de URI relativa. URI de namespace e de feature não precisam ser consultadas em tempo de execução para revelar sua semântica.

A resolução de sdfRef é uma etapa de pré-processamento. Copia-se a definição referenciada e aplica-se a definição que referencia como JSON Merge Patch. sdfRefs aninhados também precisam ser resolvidos, e um membro null pode remover conteúdo herdado. JSON Pointer fornece o endereçamento; JSON Merge Patch, a regra de combinação. O modelo totalmente desreferenciado é o modelo resolvido, uma entrada explícita para validação e binding.

O campo features nomeia extensões críticas que não podem ser ignoradas com segurança. sdfRequired declara quais affordances ou agrupamentos modelados precisam ser representados. Isso é diferente da capacidade de o binding transportar ou invocar essas affordances corretamente.

A divisão é importante para evitar lock-in. As restrições de dados básicas pertencem ao SDF. O binding pode acrescentar URLs, IDs, payloads, invocação, ordenação e confiabilidade. Se essas decisões forem presumidas, duas implementações podem resolver o mesmo modelo e trocar mensagens incompatíveis. RFC 9880 tampouco documenta resultados universais de implantação ou suporte.

Fontes