A JSONiq é uma nova linguagem de consulta baseada em XQuery. De forma semelhante à SQL ou LINQ, a nova linguagem apresenta conceitos de suporte sintático como: let, for, where, group by e select. Vejamos um exemplo:
let $stats := db:find("stats") for $access in $stats where $access("response_time") > 5 group by $url := $access("url") return { "url": $url, "avg": avg($access("response_time")), "hits": count($access) }
A linguagem JSONiq suporta mais que apenas transformações de JSON para JSON. Pode-se usá-la para gerar ou fazer parser de XML, e até criar consultas que combinem as duas operações. Neste exemplo da documentação, podemos ver a JSONiq sendo utilizada como linguagem de template para gerar tabelas HTML.
Semelhante à linguagem XQuery, a JSONiq suporta janelas sobrepostas e não-sobrepostas. Esta funcionalidade é usada para quebrar os dados em partes de tamanho iguais, ou para que sejam usados em cálculos estatísticos, como as três últimas médias. Pode-se aprender mais sobre janelas em cascata e deslizantes na especificação da XPath.
Outra característica da JSONiq é a sua capacidade de atualizar dados em formato JSON. Neste exemplo, pode-se observar a propriedade status sendo adicionada nos registros em que nome "Deadbeat Jim" incide.
A JSONiq está disponível como parte do processador Zorba XQuery, que é distribuído sob a licença Apache 2. Já a JSONiq baseia-se na licença Atribuição-CompartilhaIgual 3.0 Não Adaptada.