5.4.2 Manipulation d'éléments génériques de transformation

A l'usage du système, il est apparu que certains motifs particuliers revenaient souvent dans les requêtes. Nous avons donc implémenté un mécanisme permettant de produire ces motifs comme des modèles qui pouvaient ensuite être adaptés par l'utilisateur.

La liste de ces motifs est donnée dans le Tableau 2. Ils se répartissent entre motifs de la clause construct et motifs de la clause where (qui incluent des conditions de filtre). Un libellé indicatif de chacun de ces motifs est proposé dans la colonne "désignation".

Tableau 2 : Motifs génériques de requêtes
Clause CONSTRUCT Désignation
Ajoute une nouvelle propriété à une ressource R1_P1_V1
Ajoute un nouveau lien entre deux ressources R1_L1_R2
Ajoute une nouvelle ressource liée à n précédentes
(Si n=0 : permet d'ajouter des annotations dans la trace)
A_LN_RN
Clause WHERE
Conditions sur une ressource 
Une ressource est d’un certain type R1_T_T1
Une ressource possède une certaine propriété R1_P1_V
Une ressource n’est pas d’un certain type R1_notT_T1
Une ressource ne possède pas une certaine propriété R1_notP1_V
Une ressource possède une propriété qui respecte une condition sur sa valeur. R1_P1_V1
Une ressource n’est suivie d’aucune autre d’un certain type pendant une certaine durée. R1_notS_R2
Une ressource n’est précédée d’aucune autre d’un certain type pendant une certaine durée R1_notP_R2
Conditions sur deux ressources 
Deux ressources sont liées par un lien  R1_L1_R2
Une ressource d’un type 1 est suivie par une autre d’un type 2 sans autre ressource du type 2 entre les deux R1_notR2_R3
Conditions sur trois ressources
Il existe au moins une ressource d’un certain type entre deux autres liées par un lien.
(On doit écarter les autres occurrences de la ressource intermédiaire sinon on a une réponse pour chaque occurrence de la ressource intermédiaire)
R1_R2_R3

AbstractXML offre la possibilité d'enregistrer de nouveaux motifs au fur et à mesure qu'ils sont découverts. L'utilisateur indique la description du motif et le code Sparql générique associé. Une fois enregistrés, les motifs apparaissent dans les listes déroulantes (3) de la Figure 65 du paragraphe 5.2.5. Lorsque l'utilisateur choisit un motif dans ces listes, celui-ci est inséré dans la zone de saisie de la requête. Par exemple le motif "ajouter une nouvelle propriété à une ressource" insert dans la partie construct le triplet :

(?r1 propriété valeur)

L'utilisateur peut ensuite modifier le terme "propriété" par le nom de la propriété désirée, et le terme "valeur" par la valeur désirée ou par une variable faisant référence à une valeur sélectionnée dans la clause where. S'il veut utiliser la même propriété qu'une propriété déjà existante dans un autre observé, il peut afficher cet observé dans la zone de visualisation de la trace dans la partie haute de l'écran, et effectuer un copier/coller du nom de cette propriété. Il peut également modifier la référence de ressource ?r1 en fonction du reste de la requête.

L'idéal, bien entendu, serait de pouvoir épargner complètement à l'utilisateur l'édition du code Sparql. Actuellement nous ne pouvons qu'imaginer des pistes de départ pour s'engager dans cette voie. Nous les discutons au paragraphe 7.1.