jsonW: o formato de dados que a Wortic criou para a era da IA
O jsonW junta linha, coluna e texto num modelo só, com tipos de dinheiro e medida, 14 recursos de busca e IA, permissão por coluna, linha e célula e transmissão pós-quântica. Veja exemplos para loja, clínica, escritório e indústria.

Toda empresa que usa inteligência artificial esbarra no mesmo problema: os dados moram em formatos diferentes para cada momento. O JSON serve para trocar mensagens entre sistemas, o CSV ou o Parquet para guardar tabelas grandes, outro formato para transmitir em tempo real, um banco à parte para as buscas por significado que a IA faz e mais uma camada para dizer quem pode ver o quê. Cada passagem de um formato para o outro custa tempo, memória e, às vezes, um dado que muda de tipo no caminho: o preço que vira texto, o CPF que perde o zero da frente, o peso que ninguém sabe se estava em gramas ou quilos.
Foi para resolver isso que a Wortic criou o jsonW (json Wondrous), o formato de dados que já roda dentro dos nossos sistemas e que agora está aberto para qualquer empresa usar em jsonw.org. Este artigo explica, com exemplos de negócios reais, o que ele faz, como as permissões funcionam e por que ele foi pensado para a era da IA e da computação quântica.
Um modelo de dados, três formas
O jsonW tem três formas que se convertem sem perda nenhuma, porque são o mesmo modelo visto de três jeitos:
flowchart LR
M(("um modelo<br/>de dados"))
M --- L["<b>Linha</b><br/>binária, valor após valor<br/><i>mensagem · evento · tempo real</i>"]
M --- C["<b>Coluna</b><br/>arquivo .jsw em blocos, lido por mmap<br/><i>lote · histórico · treino · busca</i>"]
M --- T["<b>Texto</b><br/>jsonW-texto, todo JSON vale<br/><i>gente lendo e escrevendo</i>"]
- Linha: um valor depois do outro, em binário. É a forma das mensagens, dos eventos e de tudo que acontece em tempo real. Ocupa o lugar do JSON, do MessagePack, do CBOR e do Protobuf.
- Coluna: o arquivo
.jsw, organizado em blocos por coluna e lido direto do disco pormmap, sem copiar. É a forma do lote grande, do histórico, do treino de modelos e da busca. Ocupa o lugar do JSONL, do CSV e do Parquet. - Texto: o jsonW-texto, para gente ler e escrever. Todo JSON válido que a sua empresa já tem é jsonW-texto válido.
Veja o mesmo registro de uma loja, como a ferramenta wjsw mostra de verdade:
{id:1,produto:"Café especial",preco:12.50 BRL,peso:250 g,sku:"CAF-0250",criado:t"2026-11-09T01:00:00.000000Z"}
{id:2,produto:"Pão de queijo",preco:8.90 BRL,peso:1000 g,sku:"PDQ-1000",criado:t"2026-11-09T01:05:00.000000Z"}
Na entrada, o segundo produto veio com o peso escrito como "1 kg". Como a coluna foi declarada em gramas, o jsonW converteu para 1000 g na hora de gravar. O preço guarda a moeda junto com o valor, o SKU é guardado byte a byte e a data é exata em microssegundos. Para voltar ao JSON, um comando só (wjsw para-texto dados.jsw --json) devolve tudo, sem perder nada.
Os tipos que o JSON não tem
Um sistema de gestão lida o dia inteiro com dinheiro, peso, volume, documentos e datas. No JSON, tudo isso vira número solto ou texto, e o erro só aparece depois, no relatório ou na nota fiscal. No jsonW, cada coluna declara o seu tipo num esquema de uma linha, e o valor é conferido na hora de gravar:
- Decimal exato (
decimal[2]): nunca passa por ponto flutuante. R$ 12,50 continua 12,50, sem o famoso 12,4999999. - Dinheiro (
dinheiro): cada valor leva a moeda pelo padrão ISO 4217 (BRL, USD, EUR e outras). Somar real com dólar é recusado, porque não existe taxa de câmbio escondida. - Medida (
medidaoumedida[kg]): 73 unidades de comprimento, massa, volume, energia, tempo, área, dados, velocidade, temperatura, potência, pressão, carbono e densidade. Uma coluna em quilos aceita "500 g" e grava 0,5 kg; uma medida de outra grandeza é recusada. - Código (
codigo): para CNPJ, chave de acesso, placa e SKU. É guardado byte a byte, sem normalizar nem aparar, e o zero da frente nunca some. - Vírgula ou ponto: quem lê aceita "1.234,56" e "1,234.56". Um servidor configurado em português não troca o separador sem você saber.
- Texto completo: acento, emoji e qualquer caractere, exatamente como chegaram.
- Vetor e tensor: os números que a IA usa para buscar por significado e os pesos de modelos, guardados de forma contínua no arquivo.
- Mídia: áudio, imagem e vídeo com hash, tipo, tamanho e duração, levados no formato aberto de cada um.
Campo novo entra com valor vazio nos registros antigos, e um nome nunca muda de tipo. Por isso um arquivo antigo é lido por um sistema novo e vice-versa, sem migração.
Exemplos de uso por tipo de negócio
Supermercado, açougue e hortifruti
O preço sai em dinheiro, o peso em medida[kg] e o código de barras em codigo. A balança manda "350 g" e o sistema grava 0,35 kg, sem conversão à mão. Para achar os produtos acima de um peso, o comando wjsw filtrar estoque.jsw "peso > 0.5" pula blocos inteiros que não têm nenhum produto nessa faixa. Para ver o que mudou de preço de ontem para hoje, wjsw comparar ontem.jsw hoje.jsw sku devolve o que só existe em um, o que só existe no outro e o que mudou.
Clínicas e consultórios
A ficha do paciente tem dado pessoal. No esquema, a coluna do CPF é marcada com +pessoal e a do valor da consulta com +escopo(financeiro). A recepção abre a agenda e não vê nenhum dos dois; o financeiro vê os valores, mas não o CPF; só quem tem o escopo pessoal vê o documento. O dado que a pessoa não pode ver nem sai do servidor.
Escritórios de advocacia
A busca por significado encontra decisões parecidas com o caso, mesmo quando as palavras são outras. O léxico reconhece no texto os termos jurídicos de uma tabela própria do escritório, sem depender de acento ou maiúscula. E a custódia por hash prova, a qualquer momento, que um documento guardado não foi alterado nem um byte desde que entrou.
Indústria e ESG
Consumo em kWh, combustível em litros e emissões em tCO2e são unidades nativas, com conversão exata entre múltiplos. A grade de interpolação multilinear calcula um fator que depende de duas ou três variáveis ao mesmo tempo, como temperatura e carga, direto do arquivo.
Sistemas com vários clientes
Num sistema que atende muitas empresas, cada linha tem a coluna tenant. A credencial de cada cliente carrega o tenant dele, e o arquivo só entrega as linhas daquele cliente, pulando blocos inteiros dos outros. Não depende de alguém lembrar de pôr um filtro na consulta.
IA em tempo real
Um agente grava as conversas e eventos num arquivo enquanto outro processo lê o mesmo arquivo ao vivo, como um tail -f que nunca vê um bloco pela metade. Modelos que geram áudio, imagem e vídeo mandam o resultado em pedaços pelo mesmo formato, com 0,04% de envelope e avisos de progresso enquanto geram.
Os 14 recursos, um por um
- Busca por termos. Vetor esparso com IDF, o mesmo cálculo dos buscadores: acha o documento pelas palavras que importam.
- Busca por significado. Cosseno sobre vetores densos (
vf16,vq8): acha "troca de mercadoria" quando o cliente escreveu "quero devolver". - Grade multilinear. Interpolação bilinear, trilinear e além, para tabelas de preço, frete ou fatores que dependem de várias entradas.
- Nota por pedido. Um pedido de uma linha combina pesos, cosseno, esparso ou grade: por exemplo, preço mais baixo vale mais e avaliação alta vale o dobro.
- As k melhores. Devolve as k linhas de maior nota, sempre na mesma ordem: nota maior primeiro e, no empate, a linha menor.
- Zonas. Cada bloco guarda o mínimo e o máximo de cada coluna, e a busca pula os blocos que não podem ter a resposta.
- Dicionário. Texto que se repete (cidade, categoria, status) é guardado uma vez só por arquivo.
- Índice por chave. Vai direto à linha de um código de produto ou de um pedido, sem varrer o arquivo.
- Léxico. Uma tabela de termos vira um autômato Aho-Corasick lido direto do disco, que casa palavra inteira sem acento e sem maiúscula.
- Gravação viva. Um processo lê enquanto outro grava, em tempo real.
- Vivo, apagado e histórico. Gravar de novo a mesma chave edita; gravar com
_apagadoexclui; compactar regrava só o que vale, e o histórico fica no arquivo original. - Visão por permissão. Coluna, linha e célula, conforme a credencial de quem lê (detalhes abaixo).
- Custódia. crc32c e SHA-256 (ou BLAKE3) em cadeia: qualquer dado, zona ou dicionário trocado falha no
wjsw conferir. - Leitura remota parcial. Com o cabeçalho e o rodapé de um arquivo na nuvem, o leitor baixa só os blocos das linhas que vai ler.
Permissões: o que a sessão não pode ver não sai do servidor
A maior parte dos vazamentos de dados não vem de invasão sofisticada, e sim de uma consulta que trouxe mais do que devia. No jsonW, a permissão está dentro do próprio formato, em quatro camadas:
sequenceDiagram
autonumber
participant App as Aplicação
participant S as Servidor (wjsw, wjsw-cgi ou SDK)
participant F as arquivo .jsw
App->>S: pedido + credencial assinada (HMAC-SHA256)
S->>S: confere assinatura, validade, nonce e sequência
S->>F: abre só os blocos do tenant da credencial
F-->>S: linhas do cliente
S->>S: esconde colunas +pessoal e +escopo(x) sem o escopo
S-->>App: só o que essa sessão pode ver
1. A credencial
Quem lê apresenta uma credencial assinada com HMAC-SHA256. Ela carrega quem emitiu, quem está usando, o cliente (tenant), os escopos e a validade. A assinatura é conferida em tempo constante, para não dar pista a quem tenta adivinhar, e cada uso leva um número único e uma sequência, para que uma credencial copiada não possa ser repetida. Tudo isso vai por cima do TLS, não no lugar dele.
2. A coluna
No esquema, a coluna marcada com +escopo(x) só aparece para quem tem o escopo x. A marcada com +pessoal é dado pessoal, e fica escondida de quem não tem o escopo pessoal. Um esquema de clínica fica assim:
paciente:texto,cpf:codigo?+pessoal,valor:dinheiro+escopo(financeiro),data:tempo,tenant:dic
3. A linha
Se o arquivo tem a coluna tenant (ou tenant_id), só as linhas do cliente da credencial aparecem. Como cada bloco sabe quais clientes tem, os blocos dos outros nem são abertos. Só uma credencial com tenant:todos, a da administração, vê todos.
4. A célula
A célula é a soma das duas: uma pessoa pode ver a linha do próprio cliente sem ver a coluna de dado pessoal dela. Na clínica do exemplo, a recepção da unidade A vê a agenda da unidade A, sem CPF e sem valor; o financeiro da unidade A vê o valor, sem CPF; nenhuma das duas vê a unidade B.
O ponto central é onde isso acontece: no servidor, antes de responder. O dado escondido não vai para o navegador nem para a IA com a promessa de que alguém vai esconder depois.
Um arquivo que não quebra
- Só anexa: cada bloco se sustenta sozinho. Se a gravação for cortada no meio, perde-se só o último bloco, e
wjsw repararrefaz o fim. - Acesso direto: lê (linha, campo) sem decodificar o resto, em paralelo por bloco, com o mesmo mapa de memória compartilhado entre processos.
- Compressão: em três níveis (nenhuma, rápida e máxima).
- Leitor blindado: limites conferidos em todo índice, aninhamento máximo de 1000 níveis e teste com arquivos forjados.
O resultado do wjsw conferir num arquivo íntegro é direto: "ok: 2 linhas, 1 blocos, sha256 e crc32c conferidos".
A ferramenta wjsw na prática
wjsw de-texto "id:i64,produto:texto,preco:dinheiro,peso:medida[g]" dados.jsonl dados.jsw
wjsw ver dados.jsw # linhas em jsonW-texto
wjsw info dados.jsw # esquema, blocos, tamanho e hash
wjsw conferir dados.jsw # custódia inteira
wjsw para-texto dados.jsw --json # de volta para JSON, sem perda
wjsw filtrar dados.jsw "peso > 500" # as zonas pulam blocos inteiros
wjsw calcular dados.jsw --por produto --valor id
wjsw comparar ontem.jsw hoje.jsw id # só em um, só no outro, mudou, iguais
wjsw avaliar dados.jsw pesos "preco=-1,nota=2" 10
wjsw reconhecer termos.jsw "texto a classificar" --json
Menor e muito mais rápido
Medido com 100 mil registros, o arquivo jsonW ficou 4,9 vezes menor que o JSONL dos mesmos dados, e ler um campo de uma linha foi 3.281 vezes mais rápido, porque o formato em colunas vai direto ao valor sem decodificar o resto. A comparação foi feita contra o nosso próprio leitor de JSON; bibliotecas de JSON mais otimizadas diminuem a diferença de gravar e ler tudo, mas não a do acesso direto. Quem quiser conferir roda wjsw medir na própria máquina.
Pronto para a computação quântica
Quando o jsonW transmite dados entre sistemas, ele usa QUIC com TLS 1.3 e troca de chaves pós-quântica X25519MLKEM768, que combina a curva clássica com o ML-KEM padronizado pelo NIST. Vários fluxos andam na mesma conexão, com controle de crédito e retomada se a rede cair. Para conferir os arquivos e as credenciais, o jsonW usa só hash e HMAC de 256 bits, que continuam seguros contra um computador quântico. É a mesma linha do nosso Manifesto Quântico: proteger hoje os dados que alguém poderia guardar para quebrar amanhã.
Com os bancos que você já tem
O jsonW não pede para trocar de banco. O wcon tira os dados do banco para um arquivo .jsw e devolve do .jsw para o banco, ida e volta sem perda, falando com PostgreSQL, MySQL, MariaDB, SQLite, Redis, Valkey e MongoDB. O esquema sai do próprio banco: numeric vira decimal exato, bigint continua inteiro de 64 bits, timestamptz vira tempo em microssegundos UTC e os vetores do pgvector viram vetores do jsonW, prontos para a busca por significado.
flowchart LR
PG[(PostgreSQL)] <--> W{{wcon}}
MY[(MySQL · MariaDB)] <--> W
SQ[(SQLite)] <--> W
RD[(Redis · Valkey)] <--> W
MG[(MongoDB)] <--> W
W <--> J["arquivo .jsw"]
J -- "HTTP Range" --> R["wremoto<br/>R2 · S3 · HTTP"]
O valor sempre viaja como dado, com o tamanho na frente (COPY binário, parâmetro ligado, prepared statement, BSON), nunca montado dentro de um comando, e a senha vem de um arquivo, nunca da linha de comando. A volta é uma transação só: se algo falha, nada é gravado. A ida e volta foi conferida célula a célula no PostgreSQL 14, 16 e 18 (md5 igual nos dois lados), no MariaDB 11.8, no SQLite, no Redis 7 e no MongoDB 7, inclusive com tentativa de injeção, emoji e texto da direita para a esquerda.
WSQL_URL=postgresql://papel@host:5432/banco wcon pg "select * from vendas" vendas.jsw wcon pg-gravar vendas.jsw public.vendas wcon sqlite app.db "select * from clientes" clientes.jsw
No Cloudflare R2, sem baixar o arquivo inteiro
Um .jsw guardado no Cloudflare R2 (ou em qualquer S3) pode ser consultado ali mesmo. O wremoto baixa o cabeçalho e o rodapé e, depois, só os blocos das linhas que a pergunta precisa; as zonas do rodapé dizem quais blocos nem podem ter a resposta, e esses não são baixados. Como o R2 não cobra a saída de dados, ler um pedaço de um arquivo de 10 GB custa o que custa o pedaço. Cada pedido vai assinado em AWS SigV4, e o mesmo arquivo pode ser entregue pelo próprio R2, por um Worker ou por qualquer CDN.
sequenceDiagram
autonumber
participant W as wremoto
participant R as R2 / S3
W->>R: Range: cabeçalho e rodapé (esquema, blocos, zonas)
R-->>W: poucos KB
W->>W: zonas: quais blocos podem ter "preco > 100"?
W->>R: Range: só esses blocos
R-->>W: os blocos pedidos, nada mais
export WJSW_R2_CRED=~/.cred/r2 wremoto info r2://meu-bucket/vendas.jsw wremoto filtrar r2://meu-bucket/vendas.jsw "preco > 100"
Na linguagem que você já usa
Há SDKs para C, C++, Node.js, Python, PHP, Go, Rust, Java, Kotlin e Swift, todos sobre a mesma biblioteca em C e conferidos pela mesma prova, byte a byte. Em Python, gravar e ler fica assim:
No Node.js, o jsonW está no npm: npm install @wortictecnologia/jsonw instala o SDK já compilado para macOS e Linux, com os tipos do TypeScript e o comando jsonw. Página do pacote: npmjs.com/package/@wortictecnologia/jsonw.
import jsonw
with jsonw.Escritor("vendas.jsw", "id:i64,produto:texto,preco:dinheiro") as w:
w.gravar({"id": 1, "produto": "Café especial", "preco": "12,50 BRL"})
with jsonw.Leitor("vendas.jsw") as r:
print(r.campo(0, "preco")) # acesso direto, sem decodificar o resto
r.conferir()
Grátis para usar e claro sobre o que conta
A Licença de Uso Sustentável do jsonW libera o uso dentro do seu produto. Só não vale revender o próprio jsonW como serviço nem fazer engenharia reversa do núcleo. Na primeira vez que roda em cada máquina, a ferramenta wjsw avisa só a versão e a plataforma, para sabermos quantas instalações existem; nada de nome, caminho, dado ou IP é guardado, e dá para desligar antes com JSONW_SEM_PING=1. A biblioteca e os SDKs nunca acessam a rede.
Como começar
- Baixe a ferramenta e o SDK da sua linguagem no repositório público.
- Converta um JSONL que você já tem com
wjsw de-textoe compare o tamanho e o tempo de leitura. - Declare as colunas com os tipos certos (dinheiro, medida, código) e marque as permissões (
+pessoal,+escopo,tenant).
Dentro da Wortic, o jsonW já guarda o índice que os nossos agentes consultam, os modelos de IA que rodam na nossa infraestrutura e a borda que recebe o tráfego dos sistemas. É por isso que os 100 sistemas da Wortic respondem rápido mesmo com muitos dados: a base deles fala jsonW.
Perguntas frequentes
O que é o jsonW?
É um formato de dados criado e mantido pela Wortic, com três formas sem conversão entre elas: linha para tempo real, coluna para arquivo e busca, e texto para pessoas. Todo JSON válido é jsonW válido. O site é jsonw.org.
O jsonW substitui o JSON?
Ele aceita todo JSON como entrada e volta para JSON sem perda, então convive com o que a empresa já usa. A vantagem aparece no arquivo em colunas, que é 4,9 vezes menor que o JSONL e lê um campo milhares de vezes mais rápido.
O jsonW é seguro contra computação quântica?
A transmissão usa QUIC com TLS 1.3 e troca de chaves pós-quântica X25519MLKEM768, e a custódia dos arquivos usa só hash e HMAC de 256 bits, que seguem seguros contra ataques quânticos.
Posso usar o jsonW na minha empresa?
Sim. A ferramenta e os SDKs para 10 linguagens estão no repositório público developer-wortic/jsonw no GitHub, com uso grátis dentro do seu produto. Só não é permitido revender o jsonW como serviço.
Qual a relação do jsonW com os sistemas da Wortic?
Os sistemas de gestão com IA da Wortic usam o jsonW por dentro, no índice dos agentes, nos modelos de IA e na borda da infraestrutura. Quem contrata um dos 100 sistemas da Wortic já usa o jsonW sem precisar instalar nada.
Como funcionam as permissões do jsonW?
Por credencial assinada com HMAC-SHA256, que carrega cliente, escopos e validade. A coluna marcada com +escopo(x) só aparece para quem tem o escopo x, a marcada com +pessoal fica escondida sem o escopo pessoal, e com a coluna tenant só as linhas do cliente da credencial aparecem. O dado escondido não sai do servidor.
Que tipos de dado o jsonW tem que o JSON não tem?
Decimal exato, dinheiro com a moeda em cada valor, medida com 73 unidades e conversão ao gravar, código guardado byte a byte (CNPJ, SKU, placa), vetores e tensores para IA e mídia.
O jsonW serve para um sistema com vários clientes?
Sim. Com a coluna tenant, cada credencial só lê as linhas do próprio cliente, e os blocos dos outros clientes nem são abertos. É assim que os sistemas da Wortic separam os dados de cada empresa.
Fontes
- jsonW: site oficial
- Repositório público do jsonW no GitHub
- Documentação pública do jsonW
- NIST FIPS 203: o padrão ML-KEM
- RFC 9221: datagramas não confiáveis no QUIC
- Manifesto Quântico da Wortic
Conheça: jsonW (json Wondrous): o formato de dados da Wortic.
Quer isso funcionando na sua empresa?
Um consultor da Wortic olha o seu caso e mostra o caminho, sem compromisso.
Falar com um consultorEquipe editorial
Equipe editorial da Wortic especializada em automacao, IA, ERP, CRM e crescimento operacional.
- Automacao com IA
- Gestao empresarial
- CRM
- ERP
- Marketing digital


