MobilityDB 1.1 is a major revision with respect to the initial version 1.0. The most important change in version 1.1 was to extract the core functionality for temporal and spatiotemporal data management from MobilityDB into the Mobility Engine Open Source (MEOS) C library. In this way, the same fonctionality provided by MobilityDB in a database environement is available in a C program to be used, for example, in a streaming environment. The MEOS library for mobility management provides similar functionality as the Geometry Engine Open Source (GEOS) C/C++ library for computational geometry. In addition, wrappers for the MEOS library in other programming languages are available, in particular for Python with PyMEOS. Wrappers for C#, Java, and Javascript are being developed.
Several changes were necessary with respect to MobilityDB version 1.0 to enable the above. An important one was the definition of new data types span
and spanset
, which provide similar functionality to the PostgreSQL data types range
and multirange
but can also be used in various programming languages regardless of PostgreSQL. These are template types, which means that they are containers of other types, in a similar way as lists and arrays contains values of other types. Furthermore, a new template data type set
was also added. Therefore, the types timestampset
, period
, and periodset
in version 1.0 are replaced by the types tstzset
, tstzspan
, and tstzspanset
in version 1.1. The name of the constructor functions for these types was modified accordingly.
Finally, the API of MEOS and MobilityDB was streamlined to improve usability. We detail next the most important changes in the API.
The semantics of functions duration
and timespan
has changed. These functions now return, respectively, an interval
and a tstzspan
.
Functions atTimestamp
, atTimestampSet
, atPeriod
, and atPeriodSet
were all renamed to atTime
.
Functions minusTimestamp
, minusTimestampSet
, minusPeriod
, and minusPeriodSet
were all renamed to minusTime
.
Functions atValue
, atValues
, atRange
, and atRanges
were all renamed to atValues
.
Functions minusValue
, minusValues
, minusRange
, and minusRanges
were all renamed to minusValues
.
Functions contains
, disjoint
, dwithin
, intersects
, and touches
were renamed, respectively, to eContains
, eDisjoint
, eDwithin
, eIntersects
, and eTouches
.