Syntax

The best way to create maximal expressivity while keeping it brief and readable, from a syntax perspective, is to make it functional (behind the scenes) and monoidic. So that you can build a pipeline of transformations. And so on the top level FQL is a monoidic function: taking a list of nodes and producing a list of nodes.

FQL has taken the best-of-three-words by adopting the principles of three other languages: SQL (Linq), JSON and FHIRPath.

SQL and Linq

Because the main goal of FQL is to make complex FHIR data as accessible as possible for non technical people, it takes many principles from SQL. But since SQL is not functional, or at least not sequential, FQL has adopted the principles of Linq (Language Integrated Query from C#) with regards to SQL, to allow forming a pipeline.

FhirPath

FhirPath fit's the same monoidic principle of taking a list of nodes and producing a list of nodes, just on a single resources, it's not more than logic, to use this for projection within resources.

JSON

In order to select or define a set of fields and nested structures, JSON provides most of the syntax.