When no volume is provided, create by default a volume containing the
whole space.
This simplifies handling later on, as there is no checks and on-the-fly
generation of that value necessary. This also remove life time issues as
the volume is always present with the same life time as the rest of the
Filter.
This is used to wrap the filters within an implicit bounding box,
which corresponds to the view port optionally provided by the users.
The intersection is automatically computed between the query results
and the ViewPort, whenever it is specified.
* Refactor the code, Update to the Service API REST JSON objects on disk.
* Connect to the DB data model and engine to execute queries.
* Remove the syntactic sugar around implicit `inside` operation on
shapes, as it introduces issues.
* Adaptation of the grammar to make more regular w.r.t reference space
names placement.
* Implemented Type check
* Implemented prediction of the result set cardinality. This assumes:
+ A space is not infinite, this is required to compute complementary
sets as we can compute the whole space volume.
+ Density is mostly uniform, this allows us to assume the number of
results is related with a constant factor to the volume in space
of the selection.
+ The prediction is approximated by using the most pessimistic
resulting cardinality for each operator, in order to keep the
operation simple, and fast, at the expense of the precision.
* Implemented execution, which calls into a DB abstraction layer. That
layer is currently mostly empty. Execution is also implemented in a
naive way, and should most likely be optimised.