5.4.1.2. Fonctions de filtrage

Nous avons vu au paragraphe 4.4.5 que dans le langage Sparql, la clause where permettait d'inclure une condition filter. Cette condition permet de spécifier un critère de sélection des sous-graphes selon la valeur de certaines variables. Notre utilisation du moteur Sparql nous permet de définir des fonctions qui peuvent être utilisées dans la condition filter. Nous pouvons donc implémenter des fonctions spécifiques adaptées à notre usage pour les traces. Pour l'instant, nous avons implémenté deux fonctions :

  • MaxDelay(d1, d2, duration) : cette fonction permet d'exprimer le fait qu'un observé 2 suit un observé 1 dans un certain laps de temps. Elle renvoie "vrai" si et seulement si d1 < d2 < (d1 + duration).
  • TestOrder(?d1,?d2,?d3) : cette fonction permet d'exprimer une condition de séquentialité entre trois observés. Elle renvoie "vrai" si et seulement si d1 ≤ d2 ≤ d3.
  • CoOccurrence(?d1,?d2,?tBefore,?tAfter) : cette fonction permet d'exprimer une cooccurrence entre deux observés indépendamment de leur ordre chronologique. Elle renvoie "vrai" si et seulement si d1 - tBefore ≤ d2 ≤ d1 + tAfter.
  • CloserCoOccurrence(?d1,?d2,?dop,?tBefore,?tAfter) : cette fonction permet d'identifier un éventuel troisième observé co-occurrent à deux autres. Elle renvoie "vrai" si et seulement si d1 - tBefore ≤ dop ≤ d1 + tAfter et |dop - d1| < |d2 - d1|.