Jaql is a loosely typed functional language, with lazy evaluation. It's part of BigInsights, IBM's Hadoop based Big Data platform. The initial inspiration for Jaql was a JSON Query Language that provided query processing for semi-structured data, particularly nested data represented using the Jaql Data Model or JDM The JDM is a superset of JSON, a standard data model, that is similar to XML but much easier to work with. Jaql provides a complete solution environment and integration point for all the data storage, functions and capabilities of BigInsights; including flexible access to data and analytics. Jaql is the functional language that glues it all together. It also provides ways to reach out to external data and services such as relational databases, indexing services, text analytics, machine learning and so on. Jaql provides an elegant programming model for developing complex and reusable queries and transformations against JSON data structures; even very deeply nested data structures. As with SQL, Jaql is a declarative query language so you focus on what you want to achieve, not how it's done. Under the hood, Jaql automatically exploits the massive parallelism of MapReduce. You don't have to worry about the complexities of MapReduce programming. Jaql is an extensible language. It provides native functions and modules, that allow you to build up packages of re-usable logic that can be shared throughout your environment. So, when would you choose Jaql instead of another language? 1. Jaql is a good choice when your data is deeply nested, representing complex relationships. Jaql can work with arbitrarily nested data and can even handle data that varies in structure and content from record to record. 2. Jaql is a good choice when you need to combine programming models because it offers both the core Jaql syntax and you can embed SQL within your Jaql – that's like combining Hive and Pig together into one language 3. Jaql is a good choice when you need a modular language that lets you write native functions. You can parameterize and encapsulate any functionality of the language. and then package those functions into reusable modules to be shared across all of your applications. 4. Jaql is also a good choice when you need a full programming language with both flow-control and native functions and modules. You can develop full programs from the ground up using JAQL without requiring the use of another programming language to orchestrate your logic, which is particularly important for data flows.