• Aucun résultat trouvé

Expression des conditions de dépendance par rapport à la localisation

Chapitre III Langage d’expression des requêtes dépendant de la localisation

4. Expression des conditions de dépendance par rapport à la localisation

La dépendance des résultats par rapport à la localisation du client implique la prise en compte des conditions suivantes :

- Conditions de proximité. - Conditions d’orientation.

- Conditions sur la localisation du client mobile.

Toutes les requêtes RDL impliquent au moins une condition de proximité. Comme le montre la règle ci-dessous, les conditions d’orientation orientation_cond et ceux de la localisation du client loc_client_prediction_cond sont optionnelles. Puisqu’il est possible

d’interroger des données relatives à plusieurs objets cibles dans une même requête (e.g. hôpital, commissariat, routes barrées), plusieurs conditions de proximité et d’orientation peuvent être impliquées. C’est pour cette raison que des accolades entourent ces conditions. Nous expliquons dans la suite chacune des conditions citées.

loc_dependence_cond ::= proximity_cond [(“AND”|”OR”) orientation_cond]

{(“AND”|”OR”) proximity_cond [(“AND”|”OR”)orientation_cond]} [(“AND”|”OR”) loc_client_prediction_cond].

4.1. Conditions de proximité

Une condition de proximité peut être formulée de trois manières :

- La recherche de tous les objets cibles dont la localisation est inférieure à une distance query_dist (aussi appelée recherche dans une zone).

- La recherche des plus proches voisins parmi les objets cibles.

- La recherche des objets cibles dont le temps mis pour les atteindre est inférieur à une durée access_time.

Voici les règles de production correspondant aux conditions de proximité :

proximity_cond ::= zone_cond | nearest_neighbor_cond | time_access_cond .

zone_cond ::= “CLOSE TO DISTANCE” “(“ target_object_name “,” query_dist distance_unit “)”. nearest_neighbor_cond ::= “CLOSEST NEIGHBORS “(“ target_object_name “,” [nb_neighbor]“)” . time_access_cond ::= “REACHABLE WITHIN” “(“ target_object_name “,” access_time time_unit “,” [speed speed_unit] “)” .

distance_unit ::= “KM” | “M”. time_unit ::= “H”| “MN” | “S” speed_unit ::= “KM/H” | “M/S”

Notons que trois opérateurs permettant d’exprimer la proximité sont introduits : CLOSE TO

DISTANCE, CLOSEST NEIGHBORS et REACHABLE WITHIN.

L’opérateur CLOSE TO DISTANCE permet de préciser que les localisations des objets cibles doivent être à une distance (vis-à-vis de la localisation du client) inférieure à la distance

query_dist prise comme paramètre. Le nom de l’objet cible est également pris comme

paramètre, vu que des conditions de proximité peuvent concerner plusieurs objets cibles. Soit la requête Q1 : « sélectionner les noms et les adresses des

hôpitaux qui se trouvent à moins de 15 km de ma position ». Elle est exprimée avec le langage LDQL de la manière suivante :

SELECT name, address FROM hospital

L’opérateur CLOSEST NEIGHBORS permet de vérifier si un objet cible fait partie des

Nb_Neighbors objets les plus proches de la localisation du client. Ainsi, sont pris comme

paramètres, le nom de l’objet cible et le nombre Nb_Neighbors de plus proches voisins demandés.

La requête Q2 : « sélectionner le nom et l’adresse des 3

hôpitaux les plus proches » s’exprime de la manière suivante :

SELECT name, address FROM Hospital

WHERE CLOSEST NEIGHBORS (Hospital,3) ;

L’opérateur REACHABLE WITHIN prend comme paramètres le nom de l’objet cible, une durée access_time et une vitesse speed. Cet opérateur permet de vérifier si le temps mis pour atteindre la localisation de l’objet cible à partir de la localisation du client avec la vitesse

speed est inférieur à la durée access_time. La vitesse est un paramètre optionnel ; si elle n’est

pas précisée par l’utilisateur lors de l’expression de la requête, une valeur par défaut est affectée lors du traitement de la requête (e.g. la vitesse maximum du client mobile).

Cet opérateur donne la possibilité d’exprimer des requêtes RDL-spatio-temporelles. Par exemple la requête Q3 : « sélectionner les noms et les adresses des

hôpitaux que je peux atteindre en 10 minutes à une vitesse de 70 km/h » s’exprime de la manière suivante :

SELECT name, address FROM Hospital

WHERE REACHABLE WITHIN (hospital, 10 mn, 70 km/h);

4.2. Conditions d’orientations

Un utilisateur peut demander des résultats dépendant de sa localisation, mais aussi d’une certaine orientation. Comme le montre les règles ci-dessous, l’orientation peut dépendre de la direction actuelle du client (e.g. devant moi, à ma droite). Elle peut également être indépendante de sa direction actuelle (e.g les points cardinaux nord, sud, est, ouest).

orientation_cond ::= “DIRECTION” “(“ target_object_name ”,” dir ”)” . dir ::= client_dep_dir | cardinal_dir .

client_dep_dir ::= (“IN FRONT” | “BEHIND” | “LEFT” |”RIGHT”|”IN FRONT LEFT”||”IN FRONT RIGHT”| “BEHIND LEFT”| “BEHIND RIGHT” ) .

cardinal_dir ::= (“NORTH” | “SOUTH” | “WEST” | “EAST”|”NORTH EAST”|”NORTH WEST”| “SOUTH EAST”| SOUTH WEST”).

L’opérateur d’orientation DIRECTION permet de préciser que la localisation de l’objet cible doit être dans la direction demandée. Cet opérateur prend comme paramètres le nom de l’objet cible et un des symboles terminaux définis par la grammaire (e.g IN FRONT, NORTH) pour indiquer la direction désirée.

Maintenant, nous pouvons exprimer la requête Q4 : « sélectionner les

hôpitaux situés à moins de 5km de ma position et qui se trouvent dans ma direction »

SELECT name, address FROM hospital

WHERE CLOSE TO DISTANCE(hospital,5km) AND DIRECTION (hospital, IN FRONT);

4.3. Conditions sur la localisation du client

Comme nous l’avons déjà précisé, les requêtes RDL impliquent la localisation du client mobile. C’est par rapport à cette localisation que les conditions de proximité et éventuellement d’orientation sont vérifiées. Par défaut, c’est la localisation actuelle du client qui est prise en compte. Néanmoins, dans certains cas, le client peut soumettre une requête RDL qui porte sur sa localisation future. Par exemple, pour anticiper une décision, un utilisateur soumet la requête Q5 : « quel est l’hôpital le plus proche de

l’endroit dans lequel je serai dans 10 minutes en roulant à 70 km/h dans la direction nord ».

Loc_client_prediction_cond::=“POSITON IN”“(“prediction_time time_unit”,”[dir]“,”[speed speed_unit]“)”.

L’opérateur POSITON IN prend comme paramètres une valeur temporelle prediction_time, éventuellement une direction dir et une vitesse speed. Il s’agit d’indiquer que la localisation par rapport à laquelle sont vérifiées les conditions de proximité et d’orientation doit être égale à la localisation future du client à l’instant t + prediction_time (t étant l’instant d’envoi de la requête).. La requête Q5 s’exprime de la manière suivante :

SELECT name, address FROM hospital

WHERE CLOSEST NEIGHBORS (hospital,1) and POSITION IN (10mn,NORTH,70km/h)