Aller au contenu
EN FR

Modes de requête et portée

Statut documentaire : architecture — voir Maturité et preuves.

L’enveloppe ask prend en charge trois modes de raisonnement. Les options de portée sont indépendantes du mode choisi.

Modes

Mode Usage
homomorphic la réponse recherchée existe déjà comme structure conceptuelle persistée ; c’est le mode par défaut
unifying plusieurs descriptions conceptuelles compatibles doivent être fusionnées en une valeur canonique
resolving un but doit être prouvé à partir de faits et de règles de style Horn
ask homomorphic .:#Person(p)[name='Ada'] return p;
ask unifying (.:#Pair(x, #right), .:#Pair(#left, y)) return (x, y);
ask resolving .:#reachable(#warehouseA, destination) return destination;

En mode homomorphic, un wildcard est une position non contrainte, pas une contrainte nil. Le mode unifying exige au moins deux opérandes et rejette les conflits de constructeur, d’arité ou de valeurs rigides. Le mode resolving peut produire plusieurs réponses à partir de clauses alternatives et de résolution récursive/tabulée lorsque le programme le permet.

Limite d’implémentation actuelle

La revue du code courant confirme la grammaire et le décodage des commandes pour homomorphic, unifying et resolving, ainsi qu’un moteur de résolution Horn testé. Les exécutions ask homomorphic et unifying disposent de tests dédiés. Le chemin direct ask resolving inspecté comporte encore un point d’intégration avant la compilation/exécution Horn ; il ne faut donc pas encore considérer ask resolving de bout en bout comme un chemin d’exécution public certifié. La syntaxe et le modèle de raisonnement sont documentés ici car ils appartiennent au guide déclaratif et à l’architecture courante ; vérifier la génération Runtime ciblée avant d’en dépendre.

Options de portée

  • instances / instances only incluent ou limitent aux instances ;
  • types / types only incluent ou limitent aux types ;
  • subtypes / subtypes only parcourent le type demandé et ses descendants ;
  • supertypes / supertypes only parcourent le type demandé et ses ancêtres ;
  • masked applique la politique active de masquage/visibilité.
ask homomorphic subtypes instances .:#Document(item)[title=title]
return (item, title);

Le parcours des sous-types et supertypes est un choix sémantique. Ne pas l’activer seulement pour compenser une déclaration de type imprécise : il peut modifier à la fois la sélection des candidats et le mapping des rôles.

Règle de sélection

Choisir d’abord le mode de raisonnement, puis ajouter uniquement la portée nécessaire à la question métier.