1.3 - Génération de résultats

Attention : Ce tutoriel est ancien, incomplet, et n'est pas mis à jour. Il ne contient pas toutes les nouveautés du système de template de Gecko 1.9 / Firefox 3.0 qui est largement simplifié et permet d'utiliser sqlite ou xml comme source de données. Aussi est-il préférable d'aller consulter la version anglaise sur developer.mozilla.org.

Lors de la phase de description des règles, le constructeur de gabarits se charge de définir une série d'informations telle que les résultats possibles disponibles, l'endroit où le contenu doit être généré, et les indications sur quoi faire lorsque la source de données RDF change. Ce réseau d'information est conservé durant la vie du gabarit à moins qu'il ne soit reconstruit. Le constructeur de gabarits utilise une méthode basée sur l'algorithme RETE (en) pour faire ses requêtes sur les données. Elle permet d'assurer des mises à jour facile des résultats lorsque, par exemple, une nouvelle entrée est ajoutée dans le graphe RDF. Plutôt que de reconstruire la totalité du gabarit, l'algorithme permet de ne ré-examiner que des parties spécifiques du réseau d'information. Une méthode similaire peut être utilisée lorsque des entrées RDF sont supprimées.

Le réseau d'information créé par le constructeur de gabarits contient plusieurs pièces différentes d'informations nécessaires. Pour le sujet de notre discussion, nous ne considèrerons que la liste des résultats possibles. Le constructeur commence avec un premier résultat possible, appelé la graine (NdT : seed). Le constructeur traite chacune des conditions des règles de façon séquentielle. Pour une condition particulière, il parcourt chaque résultat possible trouvé jusque là, et les accepte ou les rejette. Pour la première condition, seule la graine sera disponible comme résultat possible. À chaque étape, de nouveaux résultats possibles seront ajoutés, ou une autre information appartenant à un résultat existant sera ajoutée au réseau. Naturellement, un résultat rejeté sera supprimé. Dès que toutes les conditions ont été analysées, tous les résultats subsistant représentent les correspondances. Les correspondances sont le point final déclenchant la génération de contenu. Donc, en résumé :

  1. Démarrer avec un résultat possible en tant que graine ;
  2. Parcourir les résultats déterminés jusque là et les augmenter avec les données supplémentaires ;
  3. Ajouter tous nouveaux résultats possibles ;
  4. Supprimer tous résultats rejetés ;
  5. Répéter les étapes 2 à 4 pour chaque règle conditionnelle ;
  6. Une fois terminé, tous les résultats restant représentent les correspondances.

Chacun des résultats possibles est constitué d'une série de couples variable-valeur. Par exemple, un résultat pourrait ressembler à ceci :

(?nom = Fred, ?age = 5)

Ce résultat a deux variables, ?nom avec la valeur Fred et ?age avec la valeur 5. Les variables débutent par un point d'interrogation, et les valeurs sont des ressources RDF ou des littéraux. Ici, nous utiliserons des chaînes de caractères pour les valeurs afin de faciliter la lecture. Si nous avions deux résultats, ils pourraient ressembler à ceci :

(?nom = Fred, ?age = 5)
(?nom = Mary, ?age = 12)

C'est la représentation des résultats possibles que nous utiliserons dans les prochaines sections.

Plus tard, nous pourrions avoir une condition qui supprimerait des résultats tous les males. Ainsi, notre résultat après ce filtrage pourrait ressembler à ceci :

(?nom = Mary, ?age = 12, ?genre = Femelle)

Cette condition a supprimé Fred des résultats potentiels et ajouté la variable ?genre pour Mary. Il s'agit d'un fonctionnement typique d'une règle conditionnelle, par l'ajout de variables supplémentaires à un résultat et leurs filtrages par rapport à une valeur donnée. S'il s'agissait de la dernière condition, Mary deviendrait la correspondance à afficher.


Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.