# QB4 MobOLAP: A Vocabulary Extension for Mobility OLAP on the Semantic Web
## 3 Research Methods
### Mobility Operator  
Mobility data types have operators and functions associated with this type. These operators can be classified, including projection to a domain or range, boolean predicates, interaction with a domain or range, spatial operations, temporal operations, the rate of change, mobility aggregation, and lifting function aggregation. Projection to a domain or range function is a function that is used to define the temporal types. These operations are DeffTime, RangeValues, Trajectory, and Traverse. These operations can be defined as:  
\[\text{DefTime: moving}(\alpha)\rightarrow\text{periods}\]  
for \(\alpha\in\{\text{boolean, integer, real, text, point, region}\}\). DeffTime is a function that gives moving as a constructor function that returns, for a given argument type \(\alpha\), the type whose values are partial functions from instant into \(\alpha\). An example of the DeffTime function is DeffTime(Delivery323), which returns \(\{\)(2019-09-03 07:05:04, 2019-09-03 07:05:10), (2019-09-03 07:05:11, 2019-09-03 07:05:13)\(\}\). \[\text{RangeValues: moving}(\alpha)\rightarrow\text{range}(\alpha)\]  
for \(\alpha\in\{\text{boolean, integer, real, text, point, region}\}\). The RangeValues is a projection of moving values into its range; for example, moving real returns a set of real intervals. The range is a constructor function that returns for an argument type \(\alpha\), the corresponding type whose values are sets of intervals over \(\alpha\). The RangeValues function can be instantiated, for example, to:  
\[\text{RangeValues:moving}(\text{integer})\rightarrow\text{range}(\text{integer})\]  
An example of the RangeValues function is RangeValues(Delivery323), which returns \(\{\)(0,20)\(\}\). \[\text{RangeValues: moving}(\text{point})\rightarrow\text{range}(\text{point})\]  
An example of the RangeValues function is RangeValues(DeliveryPath323), which returns \(\{\)(-7.7737022 110.4307821),(-7.7753163 110.4306087)\(\}\). \[\text{Trajectory: moving}(\text{point})\rightarrow\text{line}\]  
Trajectory: moving}(region)\rightarrow\text{region}\]  
The Trajectory function is a function that has a moving point or a moving region as a parameter. This function projects into the range (the 2D space). For a moving point, this projection is usually a curve in the 2D plane, and for a moving region, it is a region; line and region are spatial types. For example, the Trajectory function for a moving point, Trajectory(DeliveryPath323), will return the line (\(-\)7.7737022 110.4307821, \(-\)7.7737022 110.4307821, \(-\)7.7753163 110.4306087), while the Trajectory function for a moving region will return the region. Figure 2 shows another example of the trajectory of two routes, RouteT and RouteS, that intersect at time 8:20. The boolean predicate function is a function that returns a boolean type. Examples of boolean predicate functions include IsDefinedAt and IsHasValue. These operations can be defined as:  
IsDefinedAt: moving(\(\alpha\)), time type \(\rightarrow\) boolean  
for \(\alpha\in\) {boolean, integer, real, text, point, region}. The function IsDefinedAt will check whether the moving(\(\alpha\)) is defined at an instant or an interval of time. For example, IsDefinedAt(DeliveryPath323,\"2019-09-03 07:05:04\") returns the boolean value true. IsHasValue: moving(\(\alpha\)), \(\alpha\rightarrow\) boolean  
Function IsHasValue will check whether the moving(\(\alpha\)) is had a value of \(\alpha\). For example, IsHasValue(Delivery323,10) returns the boolean value false. The term \"interaction with a domain or range function\" refers to a class of functions that access and interact with the domain and range of temporal types--the operations AtInstant and AtPeriod return values at a specified time or set of time intervals.