In this demonstration, we present a web-based system to illustrate the contact tracing query (CTQ) in a spatio-temporal database. Consider the following scenario. Let be the historical mobility traces (or equivalently trajectories) of users for the last days, obtained from GPS-enabled phones or mobile signals through triangulations. Thus, each user is represented as a sequence of time stamped locations denoting her visited places in different times , respectively. Let be the mobility traces (or the trajectory) of a newly identified COVID-19 infected user, which is the query in our system. The objective of the CTQ is to identify a set of users who have been in direct contact with at any point of time, and subsequently find users who came into contact with the already contacted users.
To process variants of trajectory related queries such as range, join, nearest-neighbor, etc., a large body of trajectory indexing techniques have been proposed in the literature [8, 1, 13, 4]. These indexes are variants of traditional spatio-temporal indexes such as -tree  or quad-tree . These indexes are tailored for answering different types of queries. Though it may seem that the CTQ can be solved by using existing indexes designed for range queries, running repetitive range queries for different points of the query trajectory in the CTQ will make it extremely in-efficient. This is due to the following two reasons: (i) the mobility traces or historical trajectories of a user are usually a set of time-stamped dispersed point locations covering a large area, which is different than the normal point data such as POIs (Point of Interest) or trajectory data such as taxi trips, and thus very hard to prune using traditional indexes, (ii) if a user’s travel history matches with the query at any instance then the user will be a candidate answer, and we need to run the process recursively as this user may have subsequently infected others.
To answer the CTQ efficiently, we propose a two-level index structure, namely -tree, that exploits the strengths of both quad-tree and R-tree. In the first level, we use a quad-tree to partition the points of historical trajectories, where the location of a trajectory point is specified by the of the smallest quad-tree block that contains the point. Similarly, the timestamp of each location of a trajectory is mapped to a that corresponds to a time bucket containing the timestamp of the trajectory point. After that, we transform each trajectory as a sequence of tuples. We consider this mapping as a transformation to a new coordinate system for the trajectory points. Next, we apply an R-tree on the trajectory points, represented by the new coordinate system, for grouping and saving them in disk. Finally, we present an efficient divide-and-conquer approach to answer CTQ, where a query is recursively divided and run through different levels of the index to find the users who match in both space and time.
We develop an interactive web-based system that demonstrates all the above steps of processing CTQ. We use PostgreSQL, an open source database, to host our huge trajectory database at the back-end. Then we build our index and query processing techniques in the middleware. Finally, as a front-end, we build a web-based interactive system that uses a map-based visualization for taking inputs from a user and displaying the output results of CTQ.
The rest of the paper is organized as follows. We formally define the CTQ in Section 2. We discuss our proposed index in detail in Section 3. Then we discuss the query processing algorithm in Section 4. We provide the details of our experimental evaluation in Section 5. Finally we present some related body of works in section 6 and conclude the paper in Section 7.
2 Problem Formulation
Let be the trajectory dataset, where each user is represented as a sequence of time stamped locations denoting her visited places in different times , respectively. Let be the query user who is infected with the Coronavirus.
Condition of meets : Let and be the two sequence of time-stamped locations of and , respectively. Let and be the spatial distance and temporal distance measuring functions between two locations and two time-stamps, respectively. Now, for any , if and , then we say the trajectory meets the trajectory . Here, and , are spatial (euclidean) and temporal distance thresholds, respectively.
The objective of the CTQ is to identify the set of users where each user has potentially been exposed to the Coronavirus. We define the set as follows.
Let be the set of users where each user met with at any timestamp in the last days. We say that was exposed at time . Here, the subscript zero (0) in denotes that, the number of intermediate carriers (of the virus) between user and is zero (i.e was infected by the query user ).
Let be the set of users where each user met with any user at timestamp . We define as the time of exposure for user .
In a similar manner, we can define the set of users recursively where each user was exposed to some user . Then, we define the set as:
Here, is an integer that denotes the maximum allowed depth for the recursion and is passed as a parameter for CTQ.
Based on the above definitions, we formally define our contact tracing query as follows.
Definition. CTQ. Given a set of user trajectories, a COVID-19 infected user trajectory , a spatial proximity threshold , a temporal proximity threshold , and an integer , a CTQ query finds a set of users such that ; where is the set of users who were exposed to the query user through ‘’ number of intermediate carrier users.
3 The Proposed Index
The trajectories in our datasets can be very long (e.g., last 14 days of mobility traces of each user) and may cover large areas. Using an R-tree to index the two spatial and one temporal dimension of these trajectories might not be useful as each trajectory’s MBR (Minimum Bounding Rectangle) will most likely overlap with too many other trajectorys’ MBRs, making the pruning scheme of the R-tree ineffective. On the other hand, if we use a quadtree to index all points of the trajectories, the points of a single trajectory may end up in many quadrant of the quadtree blocks, and thereby making it hard to decide which of those trajectories should be stored together in a disk block to facilitate faster retrieval of candidate users.
The key intuition of our proposed index is, the trajectories whose points are co-located at the overlapping time-instant are likely to match with the same query. Based on this observation, we present a two-level index, the Quad R (QR) tree, that combines the strengths of both quadtree and R-tree.
First, the spatial data space is recursively partitioned using quadtree, where each leaf quadtree block does not contain more than points. Then we use a space filling curve, specifically a z-curve (Morton order), to number these leaf quadtree blocks. We call such a number, the of the block. Thus, in the spatial domain each trajectory is represented as a list of s. Similarly, each timestamp of a trajectory is mapped to a time bucket and assigned a number . Thereby, each trajectory can now be represented as sequence of ( tuples. This new mapping of trajectories can be seen as a transformation to a new coordinate system, where -axis represents spatial dimension and -axis represent temporal dimension, and each trajectory is represented as a set of points in that space.
In the next step, we use an R-tree to group trajectories based on their sets of points in the transformed space. Essentially, each set of points in this new space is represented as an MBR, and the R-tree groups close-by MBRs in a leaf node. Each leaf node of the constructed R-tree is stored in a disk-page. We maintain this disk-page id in all the corresponding leaf-blocks of the first level quadtree that contain a point of the trajectories stored in this disk-page. In the quadtree block, we also maintain associated temporal ids denoting the time range of trajectory points stored in the corresponding disk-page. Note that, we do not keep the hierarchical structure of R-tree for query processing, rather we only use the R-tree for grouping of similar trajectories in the transformed space.
Figure 1 and Figure 2 show the construction process of the QR-tree. Figure 1(a) shows an example with four user trajectories, , where . The space is first divided into four quadrants . As contains more than trajectory points, this block is further divided into . We then apply z-ordering to number these quadtree blocks as . After that each time-stamp of points in the trajectories is assigned time-bucket number between and . After that Figure 1(b) shows the new representation of trajectories as a sequence of tuples. These points are then mapped into a new co-ordinate system in a two-dimensional space (Figure 2(a)), where we can see points of four trajectories in four different colors, and each set of points of a single trajectory is represented as an MBR. These MBRs are grouped together to form an R-tree. Each leaf level node, corresponds to a disk-page. Finally, we maintain these disk-page references in different level quadtree blocks of the QR-tree, as shown in (Figure 2(b)). For example, with , disk-page id is assigned along with time-bucket ids and .
We make further improvement on the proposed QR-tree index, where we augment the index by adding another top-level quadtree. The intuition behind adding this top level quadtree is two fold: (i) it partitions the entire sets of trajectories into different groups based on their extents, thus the index will have better pruning capability, (ii) since a longer trajectory will most likely contain more points than a shorter trajectory, maintaining different length trajecotory in a single R-tree is challenge as trajectories of different length may occupy different storage spaces in the disk.
In our proposed QR-tree, a trajectory is stored under any non-leaf or leaf nodes based on their extents. In this case, we recursively partition the space, and a trajectory is stored in a quadtree block that fully contains it. Thus, long trajectories are stored in the upper level quadtree blocks than shorter trajectories are stored in lower level trajectory blocks. For all the trajectories in a single quadtree block, we apply QR-tree strategy to organize them in disk. Since we use two quadtrees and one R-tree in the index, we refer this index as QR-tree.
4 Processing CTQ
In this section, we present an algorithm for processing CTQ using our proposed QR-tree. Intuitively, the quadtree of QR-tree supports faster range query around query trajectory points, while R-tree grouping ensures the lower I/O overhead. We apply a spatial pruning followed by a temporal pruning using QR-tree, where the irrelevant quadtree nodes are pruned first, and then the time buckets are used to further prune the R-tree blocks to be retrieved. For simplicity, we present the first level contact tracing, where the task is to find users who were directly exposed to .
4.1 CTQ Matching Algorithm
Algorithm 1 describes the pseudocode for a divide-and-conquer algorithm for the CTQ. A user can be infected by , if a point of is within a threshold distance and a threshold time from any point of . So to facilitate this spatio-temporal range search, we consider an extended minimum bounding rectangle (EMBR) (in terms of space) of every points of to include the infectious region of .
Initially, the function is called with the root node of the QR-tree and . It finds the relevant child nodes of that intersect with (or EMBRs of ) in the function (Line 1). Thus, quadtree nodes that are within spatial distance threshold from are considered. If a child node does not intersect with the EMBR, it can be safely pruned. Otherwise, each unpruned child node of and the corresponding components of , are passed to matchCT function according to Algorithm 1 (Line 1).
The recursive method has two base conditions: (i) when is empty (there is no point left in that subspace for repeated division (Line 1)); and (ii) when is a leaf node. In case of a leaf node, the possibly infectious time buckets corresponding to the points in are calculated with the function . This function returns all the possible time windows within temporal range starting from that of each point of . Then the exposure of the trajectories stored in the disk blocks mapped to the node and entries of temporal bucket are computed with .
The function evaluateContacts is used to determine which trajectories meet with . To compute it, first we need to retrieve trajectories which have transformed coordinates (), for each entry . So we look up our in memory QR-tree index and obtain a list of relevant nodes (i.e. disk block ids). We the fetch the trajectories stored in those disk blocks. For each user trajectory , we compute whether the user meets with . The trajectory is included in the exposed set if it meets with .
The above algorithm supports contact tracing by passing the depth level in as a recursion depth parameter. Initially the parameter is set to 0. Then in the aforementioned second base condition, we can call recursively for each of the computed exposed trajectories with depth parameter incremented by 1, until it has reached .
5 Experimental Evaluation
In this section, we compare the QR-tree with a baseline (BL) approach, where we use a 3D R-tree (for location and timestamp) for indexing. We use it as our baseline because, in contrast to other methods, a trajectory is saved in an Rtree leaf as a single object. This is ideal for retrieving the whole trajectory during the processing of CTQ. We use the mobility traces from the CDR data collected by Grameenphone Ltd between June 19, 2012 and July 18, 2012 , hereafter referred to as BD Cellphone, as our default dataset. Besides, we use Foursquare check-in dataset  of New York city, hereafter referred to as NYF, to evaluate performance of CTQ in a different spatio-temporal domain. We use JDK 1.8 for implementing our algorithms, which were run in Intel core i5-3570K processor (3.4 GHz) and 8 GB of RAM.
Performance Evaluation and Parameterization. The parameters we varied, their ranges and default values (in bold) are shown in Table 1. We have varied a single parameter in each experiment while the others are assigned their default values. We measure the impact of the parameters on runtime and I/O cost i.e. # of disk blocks accessed in CTQ processing. We configure the quadtree nodes to hold upto 128 points, and R-tree blocks to hold upto 4 trajectories. For each set of experiments, we run 100 CTQ and present the average result.
|# of Points Per Query Trajectory||1-50, 51-100, 101-200, 200|
|# of Trajectories Indexed||10k, 25k, 50k, 100k|
|Spatial Distance Threshold ()||1m, 2m, 4m, 10m|
|Temporal Distance Threshold ()||1 min, 15 min, 30 min, 1 hour, 3 hour|
|Maximum Recursion Depth ()||1, 2, 3|
Note that, the choice of spatial and temporal range thresholds is mostly application specific. We have varied them in the aforementioned range mainly to demonstrate the performance of our work. For COVID-19, 1 meter was considered as the maximum distance for transmission via respiratory droplets , which is suggested as 2 meters in some other studies. Besides, there is an evidence, but perhaps no concrete proof of transmission by aerosolized respiratory fluids, which is in fact likely to travel farther. So we have varied the spatial range upto 10 meters, considering situations of indoor environment. On the other hand, there is still no authentic information on the temporal threshold for COVID-19 transmission. To the best of our knowledge, research works are still going on in this topic. We have varied it from as low as 1 min upto 3 hours, since the upper range is suggested so according to a study  in the New England Journal of Medicine. However, upon availability of more legitimate information about spatial and temporal thresholds, our algorithm should work just fine with the updated parameter values, without any modification in its design.
5.1 Experiment with BD Cellphone
(i) No. of points per query trajectory: Our algorithm using the QR-tree index outperforms the baseline by orders of magnitude in terms of both runtime (Figure (a)a) and by orders of magnitude in terms of I/O cost (Figure (c)c). As the number of points in query trajectory increases, more user trajectories at different blocks are expected to be processed. So runtime as well as I/O should increase in both the approaches, as reflected in the graph (Figure (a)a, (c)c).
(ii) No. of indexed trajectories: The QR-tree outperforms the baseline by around orders of magnitude in terms of runtime (Figure (b)b) and by around order of magnitude (Figure (d)d) in terms of disk I/O cost. Both the approaches follow an increasing trend with the increase in the number of indexed trajectories. This is because more trajectories require more disk blocks to be stored. So a higher number of disk blocks, i.e., larger number of trajectories, are expected to be retrieved in query processing, requiring more time to be processed.
(iii) Spatio-temporal thresholds (, ): When we vary spatial () or temporal distance thresholds (), QR-tree works better than the baseline by at around orders of magnitude in terms of runtime (Figure (a)a, (b)b) and by at least order of magnitude (Figure (c)c, (d)d) in terms of disk I/O cost.
(iv) Maximum recursion depth (): The performance of the QR-tree is significantly important when we consider multiple levels of CTQ, that is, when we consider exposure from already exposed users upto a certain level, instead of confirmed patients only. The QR-tree outperforms baseline approach by orders of magnitude in terms of runtime (Figure (a)a) and by around orders of magnitude in terms of I/O cost (Figure (b)b) when we vary maximum recursion depth level, . More importantly, note that, the QR-tree can provide results in tens of seconds in case of upto three levels of exposure while the baseline would require thousands of seconds to do that. The benefits of I/O may seem misleading for higher depth levels (Figure (b)b) because the CTQ processing gets saturated in terms of disk block access, i.e. it accesses almost all the blocks in both approaches (baseline being marginally higher) to retrieve potential candidate trajectories. For this reason, the baseline approach has a somewhat flat tail for already accessing all the disk blocks. But running the experiment with higher number of trajectories to demonstrate this I/O gain is not feasible because of the intractable runtime of the baseline method. Besides, instead of default temporal distance threshold () value of 15 minutes, we have used = 1 minute for running this experiment to keep the results demonstrable.
5.2 Experiments with Nyf
The NYF dataset is significantly smaller than the BD Cellphone dataset. We report only the impacts of varying spatio-temporal distance thresholds in the experiments with this dataset since varying the other parameters would be of little value for the dataset size.
(iii) Spatio-temporal thresholds (, ): The QR-tree works better than the baseline by at around orders of magnitude in terms of runtime (Figure (a)a, (b)b) and by around orders of magnitude (Figure (c)c, (d)d) in terms of I/O cost. So the performance of QR-tree is comparatively even better for NYF dataset. The I/O graph of baseline looks flat because all the disk blocks have been accessed by it whatever the parameter values are. This is because the dataset spans over a longer temporal domain than that of BD Cellphone.
5.3 Evaluation of QR-tree
In a real system, the performance gain by our proposed index will largely be attributed to the lower I/O cost. This is not simulated in the runtime experiments. So the merits demonstrated for the QR-tree is very likely to be manifold to what is reported in case of a real deployment.
The further enhancement we have proposed on the QR-tree, namely the QR-tree works slightly better in terms of I/O cost specially when we deal with larger number of trajectories, as demonstrated in Figure 7. Note that, this experiment is run by indexing 50k, 100k, 150k and 200k trajectories respectively. The QR-tree achieves reduction in the number of disk blocks accessed, specially for higher number of trajectories. So, though the CTQ processing using the QR-tree needs multiple levels of tree traversal, marginally lower I/O overhead can eventually result in better runtime performance as well, which is subject to further experiments in real systems.
6 Related Works
The works related to ours mostly encompass studies in trajectory indexing in spatio-temporal domain and some query processing using these indexes. Besides there are many ongoing researches in contact tracing with the outbreak of COVID-19 pandemic, most of which attempt to solve the challenge from different perspectives.
6.1 Spatio-temporal Trajectory Indexing
Indexing of moving objects i.e. storing trajectory data efficiently has received considerable attention throughout the last two decades. Mokbel et al. present a summary of spatio-temporal indexing methods in their survey  according to some of the earlier studies in this field. They point out three techniques that have been used to index historic trajectory data. These are augmentation of temporal index with existing spatial index, combining both spatial and temporal access in a single structure and indexing mainly based on temporal information while treating spatial index as secondary. Nguyen-Dinh et al. extend the work in  and summarize the indexing methods adopted in 2003-2010 period according to the aforementioned categories. Mahmood et al. focus on the more recent techniques in , in succession of the previous works. We describe some of these indexing methodologies briefly and present comparative arguments of the relevant ones with our work. The details and more elaborate discussion can be found in , ,  and the research works they have addressed in these studies.
RT-tree, 3D R-tree etc. indexing methods deal with temporal information along with spatial data as summarized in . RT-tree  simply augments the time interval information with the MBRs of R-tree. So it achieves a performance as good as R-tree for spatial queries but the temporal queries often span the whole tree. Our proposed contact tracing query need to process both spatial and temporal ranges, so it would be inefficient for our purpose. On the other hand, 3D R-tree  considers temporal attribute as an additional dimension with the spatial R-tree, processing spatial and temporal queries alike. We have used this approach as our baseline method for its potential applicability to our proposed query. Spatio-temporal R-tree (STR-tree)  is another approach to index spatio-temporal data with R-tree at the core but with different insertion and splitting strategy. It focuses on both spatial locality and trajectory preservation based on a configurable parameter . However different segments of a trajectory may be stored in different nodes or spatio-temporally close trajectories may be grouped separately in this approach, both of which can deteriorate the performance of our proposed query processing.
Some trajectory oriented access methods puts more emphasis on grouping the points of each trajectory together. TB-tree , SETI  etc. adopt such mechanisms. Spatial queries and keeping spatially closed objects together are not among their primary concerns as stated in .
Trajectory-bundle tree (TB-tree) strictly emphasizes on trajectory preservation and gives up on spatial locality if needed. It is also built on top of R-tree, which means, the MBRs of TB-tree overlap a lot in contrary to its minimization as would be done in regular R-tree. This structure can deal with trajectory based queries involving topology with spatio-temporal attributes like area, time etc. or those based on navigation quite efficiently. But in the contact tracing query we need both trajectory interaction in terms of spatio-temporal locality and trajectory preservation for its efficient processing. So it not readily applicable to our problem as well. Besides, both TB-tree and STR-tree retrieves trajectory segments incrementally . If someone is infected in our case, her whole trajectory needs to be retrieved, which would be costly using these indexes.
The indexing mechanism SETI, proposed in  addresses the scalability issues of existing indexing schemes. It presents a two level index structure: the first level index partitions the spatial domain into static, uniform and non-overlapping cells, the second level index uses a traditional R-tree to index the time domain. Using the first index, the segments of each trajectory are assigned to the cells, according to their spatial coordinates. If a segment spans multiple cells then it is split at the cell boundary. Then, the time span of the segments (i.e the minimum and the maximum timestamp) in each cell are saved in an R-tree. So, effectively the spatial and temporal dimensions are decoupled in the process. The authors mainly discussed range queries with their proposed index where a spatial and then a temporal filtering is done using the first and second level index respectively. After that, a refinement step retrieves the desired trajectories. The index also supports efficient insert, delete and update.
The Start-End timestamp B-tree (SEB-tree)  is another trajectory oriented indexing similar to SETI. The space is partitioned into overlapping zones which are indexed using SEB-tree considering only start and end timestamps. The moving objects are mapped to their zones using hashing. But unlike SETI, SEB-tree works on the two dimensional points instead of the trajectories.
Some of the other indexing schemes  presents for indexing historic trajectory data include MR-tree, HR-tree, MV3R-tree etc. These indexes disintegrate spatial and temporal dimensions as they aim at storing spatial attributes of the trajectories at different timestamps in different R-trees.
 presents some specialized indexing methods besides some improvements on the previous works. The MTSB-tree  has its similarity with SETI in terms of spatio-temporal organization with the difference that it uses Time-Split B-tree (TSB-tree) for temporal indexing of trajectory segments instead of R-tree based temporal index of SETI. So trajectory segments are sorted in increasing order of time. FNR-tree and MON-tree use multiple R-trees to store object movement locations and time intervals. The latter one also uses a hash structure for mapping object movement lines to the lower level temporal R-tree. GS-tree indexes trajectories in a constrained graph by dividing them into nodes and edges. It is a balanced binary tree that discriminates time dimension from the spatial counterpart. Here a leaf node represents MBR of edges and points to two different data structures for spatial and temporal dimensions. The Compressive Start-End tree (CSE-tree)  divides space in disjoint regions like SETI and maintains temporal indexes for each of these regions. It considers time intervals as two dimensional points and maintains separate B+ trees for indexing end times followed by start times to group trajectory segments. Polar tree is specialized to index direction of the moving objects. It uses an in-memory unbalanced binary tree to index orientation of objects with respect to a given focal point. It can efficiently determine if many objects get close to or far from a reference site. Besides, RTR-tree and TPR-tree provides better support for range queries in euclidean space in indoor environments. The other indexing methods studied in the survey are out of scope of this literature as they bear little resemblance to our work.
 describes some of the more recent works in trajectory indexing. TrajStore partitions trajectories and clusters spatio-temporally close segments together on the disk. TrajTree also relies on trajectory segmentation where leaf nodes contain sub-trajectories and non-leaves hold sequences of the bounding boxes of their child nodes. Most of the other spatio-temporal indexes are specialized and application specific. For instance, UTH and UT deals with trajectories with uncertain portions, PARINET is specific to trajectories along road networks, TRIFL optimizes trajectory indexing in flash storage and so on.
6.2 State of the Art Queries
The common queries in spatio-temporal domain can be classified into two broad categories, coordinate based query and trajectory based query. Coordinate based queries include point spefic query, range query, nearest neighbor search etc. while trajectory based query can involves topology or navigational details. Coordinate based queries have been addressed since the earlier works in the spatio-temporal trajectory domain like RT-tree, 3D R-tree  etc., which were improved later in more efficient indexes like SETI, SEB-tree etc. Trajectory oriented queries where trajectory preservation can play an important role was addressed and efficiently processed using STR-tree, TB-tree in . The later indexes proposes improvements in both directions, works with new queries like -NN (e.g. TrajTree), but these queries do not align with the proposed novel contact tracing query since both spatio-temporal range search and whole trajectory retrieval are of utmost importance here.
A query somewhat similar to the contact tracing query (CTQ) is presented in , which the authors call trajectory multi-range query (MRQ). The goal of MRQ is to find the set of trajectories that go through a set of given spatio-temporal ranges. We can consider CTQ as a multi-range query over trajectories too, where there is a query spatio-temporal range for each point of the CTQ query trajectory. However, there is a very important distinction between MRQ and CTQ. In MRQ, the resultant trajectories pass through all the given spatio-temporal ranges, whereas, in the case of CTQ, even if a trajectory goes through only one of the query spatio-temoral ranges, we need to return it and do further processing on it. Also, in CTQ we consider indirect contact/exposure to the query trajectory which is not considered in MRQ.
6.3 Recent Progress in Contact Tracing
Since the start of the COVID-19 pandemic, governments have rolled out contact tracing apps () in order to contain the spread of the virus. The aim of these apps is to understand if a user was exposed to a known COVID infected person, and if so, notify her for testing and starting the quarantine process. A review of the existing technologies for contact tracing is presented in . Proximity based contact tracing apps use Bluetooth and WiFi to infer relative proximity to other users. Location based technologies, on the other hand, use GPS to locate the exact position of the users. Although GPS positioning is not very accurate in indoor spaces, that problem can be overcome with the additional use of crowd-sourced WiFi localisation. With modern WiFi access points the accuracy is good enough for contact tracing . However, both of these two technologies require a smartphone and an app to be installed by the user. The infrastructure and devices required by these methods may not be available in certain places, specially in developing countries. In such situations, using mobile operator’s infrastructure to locate the phone of a user is an option. This has the advantage of not requiring the user to do anything and the usage of existing infrastructure. However, there still remains the accuracy and privacy concerns.
We have proposed a novel CTQ in the context of spatio-temporal databases and developed a multi-level index, namely QR-tree, to efficiently process the CTQ. Experimental results show that the QR-tree based approach outperform the baseline by 1-2 orders of magnitude both in terms of processing time and I/O. In future, we plan to develop a system based on the proposed index and make it available for the community.
-  (2018) The maximum trajectory coverage query in spatial databases. PVLDB 12 (3), pp. 197–209. Cited by: §1.
-  (1990) The r*-tree: an efficient and robust access method for points and rectangles. In SIGMOD, pp. 322–331. Cited by: §1.
-  Can coronavirus spread through the air?. Note: https://tbsnews.net/coronavirus-chronicle/can-coronavirus-spread-through-air-60679Accessed: 2020-08-04 Cited by: §5.
-  (2003) Indexing large trajectory data sets with seti.. In CIDR, Vol. 75, pp. 76. Cited by: §1, §6.1, §6.1.
-  (2017) Estimating travel time of dhaka city from mobile phone call detail records. In ICTD, pp. 14:1–14:11. Cited by: §5.
-  (2020) Contact tracing: an overview of technologies and cyber risks. External Links: Cited by: §6.3.
-  (2019) Spatio-temporal access methods: a survey (2010-2017). GeoInformatica 23 (1), pp. 1–36. Cited by: §6.1, §6.1.
-  (2009) Indexing historical spatio-temporal data. In Encyclopedia of Database Systems, L. LIU and M. T. ÖZSU (Eds.), pp. 1448–1451. Cited by: §1.
-  (2003) Spatio-temporal access methods. IEEE Data Eng. Bull. 26 (2), pp. 40–49. Cited by: §6.1, §6.1, §6.1, §6.1, §6.2.
-  (2010) Spatio-temporal access methods: part 2 (2003-2010). Cited by: §6.1, §6.1.
-  (2000) Novel approaches to the indexing of moving object trajectories.. In VLDB, pp. 395–406. Cited by: §6.1, §6.1, §6.1, §6.2.
-  (1984) The quadtree and related hierarchical data structures. ACM Comput. Surv. 16 (2), pp. 187–260. Cited by: §1.
-  (2017) Trajectory similarity join in spatial networks. PVLDB 10 (11), pp. 1178–1189. Cited by: §1.
-  (2003) Seb-tree: an approach to index continuously moving objects. In International Conference on Mobile Data Management, pp. 340–344. Cited by: §6.1.
-  (2020-07) TraceTogether: Pandemic Response, Democracy, and Technology. East Asian Science, Technology and Society. Cited by: §6.3.
-  (1996) Spatio-temporal indexing for large multimedia applications. In Proceedings of the Third IEEE International Conference on Multimedia Computing and Systems, pp. 441–448. Cited by: §6.1.
-  Transmission of sars-cov-2: implications for infection prevention precautions. Note: https://www.who.int/news-room/commentaries/detail/transmission-of-sars-cov-2-implications-for-infection-prevention-precautionsAccessed: 2020-08-04 Cited by: §5.
-  (2020) Aerosol and surface stability of sars-cov-2 as compared with sars-cov-1. New England Journal of Medicine 382 (16), pp. 1564–1567. Cited by: §5.
-  (2008) A flexible spatio-temporal indexing scheme for large-scale gps track retrieval. In The Ninth International Conference on Mobile Data Management (mdm 2008), pp. 1–8. Cited by: §6.1.
-  (1990) An improved r-tree indexing structure for temporal spatial databases. In Proc. of the Intl. Symp. on Spatial Data Handling, SDH, pp. 1040–1049. Cited by: §6.1.
-  (2018) Efficient multi-range query processing on trajectories. In ER, Cited by: §6.2.
-  (2015) Modeling user activity preference by leveraging user spatial temporal characteristics in lbsns. IEEE Transactions on Systems, Man, and Cybernetics: Systems 45 (1), pp. 129–142. Cited by: §5.
-  (2005) Close pair queries in moving object databases. In Proceedings of the 13th annual ACM international workshop on Geographic information systems, pp. 2–11. Cited by: §6.1.