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 onlyincluent ou limitent aux instances ;types/types onlyincluent ou limitent aux types ;subtypes/subtypes onlyparcourent le type demandé et ses descendants ;supertypes/supertypes onlyparcourent le type demandé et ses ancêtres ;maskedapplique 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.