Need to obtain XSD for result set.

Demographics

Correct statements about AQL 'being for EHR' to be broader (i.e. will work for demographics)

Example population queries for demographics

Also - need to query across EHR and Demographics together; is this embedded queries?

HF: what does conformance def look like for AQL? Be careful of extensions.

HF/TB: related: need the concept of Post in demographics

Problems

Cartesian problem / permutation explosion - need semantics defined (refer to Seref Arikan analysis)

Related: Ian - want to be able to say things like '40 kg' rather than 2 paths.

Link / Reference-following

BN:

HF: in fact we do EHR CONTAINS COMPOSITION (probably take out 'EHR CONTAINs'? to get consistency); but: EHR => compositions etc is logical containment

could we have an 'IN' operator to cover all logical 'containment'?

Ian:

Link depth issue.

TB: need marked up Ref Model to indicate what links to follow.

Pablo: if we want to state conditions (e.g. Contains / Where) on LINK targets - it's a nested sub-query

Analytics requirements

Birger:

Bostjan: - keep AQL parser and processor simpler - potentially implement via params in service interface

Birger - counter-argument - lose semantic integrity of queries if broken up via API params

Ian: harder to sell AQL if aggregate operators like SUM, UNION, are in AQL

Erik: maybe consider meta-land to wrap AQL statements

Birger: ?analytics specific flavour of AQL

Iago: no good way to do patient subsetting for GDL; need AQL subsetting to be efficient 

Bjorn: best way to define set in pop queries, esp for use in GDL

TB: model of optimisation / efficiency of AQL

Birger: could imagine EHR persistence impls that are optimised for analytics.

UPDATE / DELETE / INSERT

Question of UPDATE and DELETE i.e. modifying AQL statements as per SQL

Birger: in terms of mindshare - potential users of AQL see AQL as deficient 

HF: keep it simple

Dynamic Result Set Structures

Sebastian Iancu: want to generate an on-the-fly return structure e.g.


SELECT
FROM ...
	e/data[at0003]/items[at0004]/items[at0005] as Hashmap(
		/name/value as Key,
		/value as Object( 
			/magnitude as Magn,
			/units as Units
		)
	)
FROM
	COMPOSITION c

Birger: better to do post-processing to achieve this result.

Sebastian: could apply to UPDATE as well.

Possible ways to do this: GraphQL?

MS etc has e.g . JSON export of SQL results.

Bjorn: 'APL' - AQL Processing Language: need a processing pipeline concept

Erik: would be easy to add a post-processing script to run after a Query execute in REST API; can use more 'types', i.e. 'aql', 'aql-in-xquery' or whatever

Work group