Aller au contenu principal
Tous les articles
14 juin 202615 min de lectureÉquipe Reasoning Layer

Le modèle du monde qui manque à l'IA, et le moteur conçu pour le porter

modèle du monderaisonnementIA de confiancegraphe de connaissancesbancs d'essai

Les LLM hallucinent parce qu'ils n'ont aucun modèle du monde, seulement un modèle du texte. Ils prédisent ce qu'il est plausible de dire ensuite, sans aucune vérité terrain pour se contrôler et sans aucun moyen de dire je ne sais pas. Le remède n'est ni un modèle plus gros ni un prompt plus astucieux ; c'est d'ancrer l'agent dans un véritable modèle du monde lisible par la machine, et de placer en dessous une couche capable à la fois de contenir ce modèle fidèlement (n-aire, pas seulement des triplets) et de raisonner dessus complètement, à grande vitesse. Cette couche, c'est la pièce qui manque encore à la pile de l'IA, et c'est ce que nous avons conçu ReasoningLayer pour être : la couche de raisonnement pour une IA à laquelle vous pouvez réellement faire confiance. Cet article en est le plaidoyer, et la preuve, mesurée face aux moteurs de connaissance les plus rapides du domaine.

(Ce sont des résultats mesurés, et les cas où un concurrent l'emporte sont signalés aussi clairement que ceux où nous l'emportons.)

TL;DR : la version non technique.

  • Le problème. L'IA d'aujourd'hui invente des choses. Elle manie les mots avec aisance mais n'a aucun modèle du monde pour se contrôler, et aucun moyen honnête de dire « je ne sais pas ».
  • La solution. Placez en dessous une couche de raisonnement : un système qui contient un modèle structuré de votre monde, en déduit les conséquences de ce qu'il sait, et montre son cheminement pour chaque réponse.
  • Ce qu'est ReasoningLayer. Un seul moteur qui stocke votre connaissance et raisonne dessus, de sorte qu'il ne se contente pas de trouver des faits, il dérive ceux qui en découlent mais que personne n'a écrits, et détecte les contradictions.
  • Pourquoi il est différent. Dans des tests en confrontation directe, c'est le plus rapide face à six moteurs comparables et l'un des rares à raisonner complètement et correctement ; il contient un modèle complet du monde (la plupart en sont incapables) ; il apprend à l'instant où vous lui dites quelque chose (sans réentraînement) ; il sait admettre quand il n'est pas sûr au lieu de deviner ; et vos données restent sur votre propre infrastructure.
  • Honnêteté préservée. Chaque résultat est recoupé avec d'autres moteurs indépendants, nous nommons les cas où un concurrent l'emporte, et nous documentons même un bug que les tests ont révélé dans notre propre moteur.
  • En résumé. Le « graphe de contexte » que tout le monde finance aide l'IA à trouver les bons faits ; une couche de raisonnement, c'est ce qui lui permet d'avoir raison, et de le prouver. Une réponse que vous pouvez vérifier est une réponse à laquelle vous pouvez vous fier.

La suite de cet article est le plaidoyer complet, chiffres à l'appui, mais si vous n'êtes pas technique, les exemples du quotidien juste en dessous et les encadrés en clair tout au long portent l'argument entier à eux seuls.

Deux exemples viraux rendent l'échec concret. Demandez à un chatbot : « Le lavage auto est à 50 mètres de chez moi. Je veux laver ma voiture. Devrais-je y aller à pied ou en voiture ? » La réponse honnête est en voiture : la voiture est ce que l'on lave, donc la voiture doit s'y rendre. Pourtant cette question est devenue virale en 2025 précisément parce que tant de modèles répondaient à pied : ils avaient associé le schéma courte distance + comment s'y rendre = suggérer la marche et manqué le seul fait qu'un enfant connaît, à savoir qu'on ne peut pas laver la voiture qu'on a laissée à la maison. (Les plus gros modèles « de réflexion » y arrivent souvent désormais ; beaucoup de plus petits échouent encore.) La vieille énigme du chirurgien échoue de la même façon, mais par l'autre bout : un père et son fils ont un accident, le père meurt, le chirurgien dit : « Je ne peux pas l'opérer, c'est mon fils. » Modifiez-la pour que la réponse soit donnée d'emblée (le chirurgien est le père du garçon), ou rendez-la franchement absurde, et les meilleurs modèles lâchent encore la chute mémorisée, « le chirurgien est sa mère », écrasant un fait énoncé dans la phrase même.

Même cause profonde dans les deux cas : le modèle complète du texte, il ne consulte pas un modèle de la situation. Donnez-lui un modèle du monde et aucune des deux erreurs ne survit. « L'objectif est de laver la voiture » plus « une voiture qu'on lave doit se trouver au lavage auto » force en voiture ; « ce chirurgien est le père » plus « une personne a exactement un père » fait de « le père est aussi la mère » une contradiction nette que le moteur refuse au lieu de la narrer. Cet écart, entre prédire des mots et raisonner sur un modèle explicite du monde, est le sujet entier de cet article.

Pourquoi cela compte maintenant : les ontologies sont la façon d'empêcher l'IA d'inventer#

Cet échec n'est pas une aspérité que davantage d'entraînement viendra poncer. Un corpus de travaux grandissant le traite comme une limite structurelle du fonctionnement des LLM. Le remède dominant consiste à cesser de laisser le modèle répondre de mémoire seule et plutôt à l'ancrer dans une couche de connaissance structurée et vérifiable, un graphe de connaissances adossé à une ontologie (le règlement formel d'un domaine). Les preuves et l'élan sont réels :

Mais voici le hic dont parle cet article. Une ontologie ne vaut que ce que vaut le moteur capable d'en calculer les conséquences, complètement, et assez vite pour servir en production. Quantité de systèmes prétendent « utiliser un graphe de connaissances » tout en (a) se contentant de stocker des faits sans jamais raisonner, ou (b) raisonnant de façon si incomplète ou si lente que c'est inutilisable à grande échelle. Donc la vraie question n'est pas « avez-vous un graphe de connaissances ? ». C'est « votre triplestore raisonne-t-il correctement, passe-t-il à l'échelle, et peut-il seulement contenir un modèle complet du monde ? » Les deux premiers points, nous les mesurons en confrontation directe dans les trois benchmarks ci-dessous (révélation : la plupart des moteurs échouent à l'une ou l'autre moitié) ; le troisième, porter un vrai modèle du monde comme SUMO qui exige plus que des triplets binaires, est l'endroit où la conception de ReasoningLayer s'écarte du reste du domaine, et nous y revenons juste après les benchmarks.

D'abord, les mots simples : triplestore, ontologie, moteur de raisonnement#

Un fait (un « triplet »). Les graphes de connaissances stockent l'information sous forme de millions de petits faits en trois parties, sujet → relation → valeur :

Christopher Nolan → a réalisé → Inception.

Un triplestore. La base de données qui contient ces faits et répond aux questions par motif : demandez « ?film → réalisé par → Christopher Nolan » et elle renvoie tout ce qui correspond. (Le langage de requête est SPARQL, le SQL des toiles de faits.) C'est ce qui se trouve derrière l'encadré-réponse lorsque vous cherchez sur Google « films réalisés par Christopher Nolan ».

Une ontologie : la vraie définition. Une ontologie est le règlement formel et lisible par la machine d'un domaine : quels types de choses existent, comment elles se relient et, la partie qui compte, les règles logiques qui disent ce qui doit être vrai. Ce n'est pas les données. Dans une ontologie universitaire :

  • les données sont « Bob est un étudiant en master », « Bob suit CS101 » ;
  • l'ontologie est le règlement : « tout étudiant en master est un étudiant », « faire partie de quelque chose est transitif », « un membre du corps enseignant est quiconque enseigne un cours. »

Les ontologies s'écrivent en OWL (le Web Ontology Language du W3C). Les deux benchmarks de raisonnement ci-dessous livrent une vraie ontologie OWL d'une université. Voyez une ontologie comme du bon sens lisible par la machine pour un domaine.

Un moteur de raisonnement. Le moteur qui lit ces règles OWL et calcule tous les faits qu'elles impliquent, des faits que personne n'a écrits. Un simple triplestore ne trouve que les faits littéralement stockés ; un moteur de raisonnement renvoie aussi ceux qui en découlent logiquement. Cette différence, c'est tout l'enjeu, et c'est ce que mesurent les Tests 2 et 3. (OWL possède un profil efficace standard, OWL 2 RL, conçu pour qu'une machine puisse calculer tous les faits impliqués complètement et à l'échelle, la cible que vise un moteur de raisonnement sérieux. Le Test 3, c'est exactement ce profil.)

Tout au long, notre mesure de la correction n'est jamais « parce qu'on le dit » ; c'est plusieurs moteurs indépendants produisant la réponse identique octet pour octet. Quand sept programmes distincts s'accordent, la réponse est juste.

Comment ça marche, en une image#

Voici le système entier sur une seule page, chaque pièce que la suite de cet article détaille, et comment elles s'emboîtent. Vous apportez quatre choses : vos données, vos règles et votre politique, les ontologies de domaine (OWL / SHACL) et un modèle du monde (SUMO). ReasoningLayer les unifie en un seul modèle, raisonne dessus pour calculer tout ce qui en découle logiquement, refusant de deviner quand il ne peut vraiment pas savoir, et sert à un LLM ou un agent des réponses qui arrivent avec leur preuve. La gouvernance, l'historique et le maintien de vos données sur votre propre infrastructure tournent sous tout cela.

CE QUE VOUS APPORTEZVos données & connaissancesVos règles & politiqueOntologies · OWL · SHACLModèle du monde · SUMOReasoningLayerun seul substrat · faits typés et n-aires (Ψ-terms)① UNIFIERdonnées, règles, ontologies & modèle du monde → un seul modèle② RAISONNERdériver chaque conséquence · imposer lescontraintes · détecter les contradictions③ CONNAÎTRE SES LIMITESse suspendre quand il ne peut savoir, sans devinerinterroge+ preuveQUI INTERROGELLM / Agents'ancre ici,obtient une réponse + sa preuve,ou un honnête « je ne sais pas »PARTOUT, SUR VOTRE INFRASTRUCTUREGouvernance & contrôle d'accès · Versionnement & provenance · Temporalité · Vos données ne quittent jamais votre contrôleVOS DONNÉES→ CONNAISSANCE → INSIGHT→ RÉPONSES DE CONFIANCE
Le moteur entier sur une page : vos données et vos règles s'unifient en un seul modèle, ReasoningLayer raisonne dessus, et un LLM obtient des réponses ancrées et prouvables, avec la gouvernance, l'historique et vos données sous votre contrôle de bout en bout.

Lisez-le de gauche à droite et c'est aussi l'arc auquel cet article revient sans cesse : vos données deviennent de la connaissance (unifiée et raisonnée), la connaissance devient de l'insight (les faits que personne n'a écrits, dérivés et vérifiés), et l'insight devient des réponses auxquelles vous pouvez vous fier (ancrées, prouvées et honnêtes sur leurs limites). La suite de l'article zoome sur chaque partie, d'abord les benchmarks qui prouvent que le raisonnement est complet et rapide, puis le modèle du monde, puis les propriétés de confiance.

Test 1, Vitesse : peut-il trouver des faits vite ? (WatDiv)#

📖 En clair#

Imaginez un énorme jeu de données de commerce en ligne, environ 11 millions de faits comme « L'utilisateur 42 a acheté le produit 9 », « Le produit 9 est fabriqué par le détaillant 7 », « L'utilisateur 42 a noté le produit 9 cinq étoiles. » Une question réaliste assemble plusieurs faits :

« Trouvez tout utilisateur ayant acheté un produit d'un détaillant de cette région et l'ayant noté 4 étoiles ou plus. »

WatDiv, ce sont 400 questions de ce type, certaines minuscules (« quel est le prix de ce seul produit ? »), certaines vastes (« déversez tous les achats correspondants du catalogue »). Aucun raisonnement ici : chaque fait est déjà écrit. Cela teste purement à quelle vitesse le moteur les trouve et les joint, et si tous les moteurs s'accordent sur la réponse.

Le résultat#

Correction : les 400 / 400 questions renvoient la réponse identique sur l'ensemble des sept moteurs.

Vitesse : les vraies millisecondes. Temps médian pour répondre à une question, par classe de difficulté. Les 20 modèles de requête de WatDiv (chacun exécuté de nombreuses fois) se regroupent en jointures sélectives (linéaire / étoile / flocon) et « complexes » (grands ensembles de résultats) :

Classe de requêteReasoningLayerVirtuosoGraphDBRDF4JOxigraphFusekiQLever
Linéaire (5)1,15 ms1,02 ms1,56 ms2,54 ms2,27 ms4,13 ms2,95 ms
Étoile (7)1,04 ms0,73 ms1,74 ms1,90 ms1,78 ms2,72 ms3,35 ms
Flocon (5)1,07 ms0,99 ms1,81 ms1,64 ms1,98 ms2,42 ms5,62 ms
Complexe (3)1,03 ms5,42 ms35,95 ms45,69 ms246,99 ms98,68 ms20,41 ms

Lisez la dernière ligne : sur les questions difficiles, ReasoningLayer répond en ~1 ms tandis que les autres prennent de 5 à 247 ms. Sur les faciles, tout le monde est autour de la milliseconde. Cumulé sur les 20 modèles, ReasoningLayer dépense 33 ms au total, contre 422 ms pour GraphDB, 594 ms pour RDF4J, 638 ms pour QLever, 1 610 ms pour Virtuoso, 7 602 ms pour Fuseki et 16 347 ms pour Oxigraph.

Le cas le plus net est « C3 », dont la réponse compte 440 398 lignes (« tout achat correspondant à un filtre large »), l'écart entre un résultat instantané et un indicateur qui tourne :

MoteurTemps pour renvoyer 440 398 lignes
ReasoningLayer12,8 ms (un clin d'œil)
GraphDB334 ms
QLever452 ms
RDF4J487 ms
Virtuoso1,58 s
Fuseki7,4 s
Oxigraph16,0 s

Là où nous ne l'emportons pas, en toute honnêteté. Vous le voyez dans le tableau ci-dessus : sur les classes sélectives, Virtuoso est un cheveu plus rapide que ReasoningLayer, jointures en étoile 0,73 ms contre nos 1,04 ms, et sur ces minuscules requêtes, tout moteur rapide est déjà plus vif que l'œil. Résumé équitable : ReasoningLayer et Virtuoso font jeu égal en tête sur les requêtes triviales (Virtuoso devance d'un rien) ; ReasoningLayer est seul devant sur tout ce qui est substantiel : requêtes complexes en 1,03 ms contre 5,42 ms et plus pour Virtuoso.

Les règles qu'un moteur de raisonnement doit appliquer, en termes du quotidien#

Les Tests 2 et 3 vérifient si un moteur sait dériver des faits non écrits en appliquant les règles d'une ontologie. Le tableau ci-dessous est tout type de règle que ces tests (18 questions OWL2Bench, plus LUBM) exercent, sans rien omettre, chacune accompagnée d'un exemple en clair. Vous n'avez pas besoin de le mémoriser : parcourez la colonne de droite pour en saisir l'esprit et poursuivez. La seule chose qui compte, c'est qu'un moteur de raisonnement complet doit gérer chacune d'elles, et, comme le montrent les résultats, la plupart des moteurs n'y parviennent pas.

Règle (terme OWL)Ce que cela signifieExemple du quotidien
Sub-class (est une sorte de)tout A est aussi un BUn caniche est une sorte de chien → tout caniche est un chien. Donc « lister les chiens » doit inclure les caniches.
Sub-property (est une sorte de relation)une relation en implique une autre« est la mère de » est une sorte de « est un parent de » → si Marie est la mère de Tom, elle est son parent.
Transitive (s'enchaîne pas à pas)si A→B et B→C, alors A→CLe café est à l'intérieur du bâtiment ; le bâtiment est à Paris → le café est à Paris. Le moteur doit suivre la chaîne, aussi longue soit-elle.
Inverse (dans l'autre sens)si A se relie à B, B se relie en retour à A (sous un autre nom)Si Alice a écrit le livre, le livre a été écrit par Alice, même si une seule direction a été enregistrée.
Symmetric (mutuelle)si A se relie à B, alors B se relie à A (même nom)Si Alice est mariée à Bob, Bob est marié à Alice.
Asymmetric (à sens unique seulement)si A se relie à B, B ne peut pas se relier en retour à ASi Acme est une filiale de Globex, Globex ne peut pas être une filiale d'Acme.
Irreflexive (jamais à soi-même)rien ne se relie à soi-même de cette façonPersonne n'est son propre directeur de thèse.
Property chain (un raccourci sur plusieurs étapes)une étape puis une autre en implique une troisièmeInscrit dans un département qui fait partie d'une université → vous êtes membre de cette université (et de chaque niveau intermédiaire).
Equivalence (symétrique et transitive)une relation qui regroupe discrètement tout le monde en grappes« partage une ville d'origine avec », cela se propage à tous ceux de la même ville, transformant quelques liens en une vaste toile de paires.
Some-values-from (∃, défini par quelque chose que vous faites)faire X au moins une fois fait de vous un YQuiconque enseigne au moins un cours est membre du corps enseignant, même si personne ne l'a étiqueté comme tel.
All-values-from (∀, défini par ce qui est vrai de tous vos liens)une catégorie dont chaque lien doit être d'un certain typeUn collège pour femmes est un collège où chaque étudiant inscrit est une femme.
Max-cardinality (au plus N)appartenance plafonnée par un décompteUn étudiant « à charge légère » est celui qui suit au plus N cours.
Has-value (une valeur fixe)appartenance par une valeur spécifiqueQuiconque a pour format de cricket favori « T20 » est un fan de T20.
Complement (la catégorie opposée)ne PAS être dans une catégorie vous place dans une autreUne discipline « non scientifique » est exactement une discipline qui n'est pas une science.
Union (l'un ou l'autre type)être soit A soit B fait de vous un CUn parent est une mère ou un père → toute mère est un parent.
Functional (au plus un)une chose ne peut avoir qu'une seule valeur iciVous avez exactement une mère biologique ; si deux noms apparaissent, ce doit être la même personne.
Inverse-functional (un identifiant unique)une valeur désigne une seule choseDeux comptes avec le même numéro de passeport appartiennent à la même personne.

Un moteur de raisonnement qui gère cela renvoie la réponse complète et correcte. Un moteur qui ne le fait pas renvoie silencieusement une réponse plus courte, fausse, et paraît « rapide » uniquement parce qu'il a sauté le travail.

Deux nuances honnêtes. (1) Quelques-unes de ces règles sont des règles de cohérence plutôt que des génératrices de faits : asymmetric et irreflexive, par exemple, servent surtout au moteur à détecter une contradiction (signaler si les données prétendent jamais que Bob se dirige lui-même) plutôt qu'à ajouter de nouveaux membres. (2) À l'échelle de ce jeu de données, une poignée des règles « de catégorie » (complement, all-values-from, max-cardinality, has-value) dérivent légitimement aucun nouveau membre, la réponse correcte est une liste vide, et la vérification consiste alors à ce que les moteurs de raisonnement complets s'accordent à dire qu'elle est vide (un moteur négligent pourrait inventer à tort des membres). Les deux exercent tout de même le moteur : il doit appliquer la règle correctement pour obtenir la bonne réponse, vide ou non.

Test 2, Raisonnement : calcule-t-il les faits non écrits ? (LUBM)#

📖 En clair#

Une base universitaire enregistre « Bob est un GraduateStudent. » Elle n'enregistre pas « Bob est un Student. » Vous savez instantanément que tout étudiant en master est un étudiant ; c'est la règle sub-class du tableau ci-dessus. Demandez « lister tous les Students » et il y a deux sortes de bases de données :

  • un moteur avec raisonnement répond « …y compris Bob, parce que c'est un étudiant en master », la liste complète ;
  • un moteur sans raisonnement ne renvoie que les personnes littéralement étiquetées « Student » et abandonne silencieusement Bob, et des milliers d'autres comme lui.

LUBM, ce sont 14 questions universitaires qui exigent exactement ces règles, sub-class (GraduateStudent → Student), transitive (« le labo d'IA fait partie du département CS, qui fait partie de l'Université → le labo d'IA fait partie de l'Université »), inverse (« a obtenu un diplôme de » ⇄ « a pour ancien élève »), et quelques restrictions du type « défini par ce que vous faites ».

Le résultat#

MoteurRaisonnementCorrect et complet
ReasoningLayeroui14 / 14
GraphDB 10.8oui14 / 14
Fuseki / Jenaoui14 / 14
RDF4Jpartiel6 / 14
Virtuoso 7.2partiel5 / 14, et une réponse est fausse (surcompte)
Oxigraphaucun4 / 14 (uniquement les questions ne nécessitant aucun raisonnement)
QLeveraucun4 / 14 (uniquement les questions ne nécessitant aucun raisonnement)

Seuls trois moteurs raisonnent complètement, ReasoningLayer, GraphDB, Fuseki, et tous trois renvoient les réponses identiques (cet accord est l'étalon-or). Les quatre du bas ne paraissent rapides que parce qu'ils laissent Bob de côté. Parmi les trois réellement corrects, voici le vrai temps par question, en millisecondes (médiane à chaud) :

QuestionReasoningLayerGraphDBFuseki / Jena
Q11,21 ms1,77 ms4,24 ms
Q21,10 ms1,66 ms1 528,95 ms
Q30,93 ms1,56 ms4,33 ms
Q41,14 ms1,89 ms25,26 ms
Q51,41 ms3,02 ms112,53 ms
Q67,17 ms11,80 ms24,05 ms
Q71,13 ms1,90 ms17,02 ms
Q811,98 ms31,61 ms2 680,98 ms
Q92,90 ms9,26 ms5 271,97 ms
Q101,03 ms1,19 ms3,29 ms
Q110,99 ms1,44 ms38,42 ms
Q121,00 ms1,23 ms126,34 ms
Q131,00 ms1,02 ms2,63 ms
Q145,40 ms8,45 ms18,91 ms
les 1438 ms78 ms9 859 ms

ReasoningLayer est le plus rapide sur chacune des 14, toutes en 38 ms au total, contre 78 ms pour GraphDB et 9 859 ms pour Fuseki (Q9 à elle seule : 2,9 ms contre 5,3 secondes pour Fuseki). Tous trois renvoient les mêmes réponses ; ReasoningLayer y arrive simplement le premier.

Ce que demande réellement chacune des 14 questions LUBM, cliquez pour déplier
#Ce qu'elle demande (en clair)Ce qu'elle nécessite
Q1Étudiants en master suivant un cours de master précisrien, une simple recherche
Q2Étudiants en master appartenant à un département d'une université dont ils détiennent un diplôme de licence (un triangle)une grosse jointure, sans raisonnement (aucune correspondance dans ce jeu de données)
Q3Toutes les publications d'un maître de conférencesune simple recherche
Q4Quiconque est professeur, quel que soit le rangsub-class (professeur titulaire / associé / assistant… sont tous des professeurs)
Q5Quiconque est une personne, un étudiant, un membre du corps enseignant, du personnel…sub-class
Q6Tout étudiant, y compris quiconque suit un courssub-class + « défini par ce que vous faites »
Q7Étudiants suivant un cours enseigné par un professeur associé donnésub-class
Q8Étudiants d'un département, avec leur e-mailsub-class
Q9Étudiants dont le directeur enseigne un cours qu'ils suivent (un triangle)sub-class, la requête la plus lourde
Q10Étudiants suivant un cours de master précissub-class (seuls les étudiants en master suivent les cours de master)
Q11Groupes de recherche appartenant, directement ou indirectement, à une universitétransitive
Q12Les directeurs de départements d'une universitétransitive + sub-property + une restriction, la plus difficile
Q13Personnes qui sont d'anciens élèves d'une universitéinverse + sub-class
Q14Tout étudiant de premier cycleune simple recherche, le plus grand résultat simple

« 14 / 14 » signifie que le moteur a renvoyé la réponse complète et correcte aux quatorze. Les quatre moteurs sans raisonnement obtiennent un score inférieur parce qu'ils sautent les étapes sub-class, transitive et inverse, et abandonnent silencieusement les réponses que ces étapes auraient ajoutées.

Test 3 : Les règles difficiles (OWL2Bench, le profil OWL 2 RL)#

📖 En clair#

LUBM utilise les règles faciles. OWL2Bench utilise les véritablement difficiles, et bien moins de moteurs survivent. Deux exemples réels du benchmark :

La chaîne d'appartenance (où nous avons trouvé un bug dans notre propre moteur). La base sait « Alice est inscrite au département CS » et « le département CS fait partie de Star University », mais personne n'a écrit « Alice est membre de Star University. » La règle property-chain dit : inscrit dans quelque chose qui fait partie d'une organisation → membre de cette organisation. Le moteur doit donc dériver l'appartenance d'Alice, et, parce que « fait partie de » est elle-même transitive (département → collège → université), à chaque niveau au-dessus. Un même étudiant appartient à plusieurs organisations à la fois, donc le moteur doit toutes les conserver.

L'explosion de la ville d'origine (où un concurrent échoue entièrement). « Partage une ville d'origine avec » est symétrique et transitive, une règle d'equivalence. Si Alice partage une ville avec Bob, et Bob avec Carol, alors Alice partage avec Carol, dans les deux sens. Quelques milliers de personnes explosent discrètement en 1,3 million de faits par paire que le moteur doit calculer.

OWL2Bench, ce sont 18 questions de ce genre. La réponse de référence est celle sur laquelle les deux moteurs de raisonnement OWL complets, ReasoningLayer et le standard du secteur GraphDB, s'accordent ; ils s'accordent sur les 18.

Le résultat#

MoteurRaisonnementCorrect et complet (vs référence)
ReasoningLayerOWL 2 RL complet18 / 18
GraphDB 10.8OWL 2 RL complet18 / 18 (la référence)
Jena / Fusekibasique seulement11 / 18
Oxigraphaucun8 / 18
Jena / Fusekiréglage le plus puissantne termine jamais

ReasoningLayer renvoie la réponse identique octet pour octet à GraphDB sur les 18 questions, et est plus rapide sur 16 d'entre elles (~2× en moyenne). Les deux où GraphDB fait jeu égal ou nous devance d'un rien sont une simple recherche à un seul fait et une grosse jointure à quatre voies, nommées, non cachées. Sur la question de la ville d'origine à 1,3 million de paires, ReasoningLayer est le plus rapide des deux (1,4 s contre 1,8 s).

Ce que teste chacune des 18 questions OWL2Bench, cliquez pour déplier
#La règle qu'elle teste (du tableau ci-dessus)Réponse correcte (lignes)
Q2Property chain7 421
Q3Transitive55
Q4Functional (donnée)2 486
Q5Has-value0
Q7Inverse1 684
Q8Asymmetric6
Q9Complement0
Q10Symmetric666
Q11Irreflexive2 422
Q12Union2 494
Q13All-values-from0
Q14Max-cardinality0
Q15Inverse-functional21
Q16Functional (objet)21
Q19Some-values-from858
Q20Equivalence, « partage une ville d'origine »1 311 932
Q21Jointure multi-sauts + property chain145
Q22Jointure multi-sauts + rôle106

Chaque ligne correspond à une règle du tableau plus haut dans cet article. « 18 / 18 » signifie qu'un moteur a tout réussi, y compris les quatre dont la réponse correcte est de 0 ligne (où un moteur négligent inventerait des membres), et Q20, où « partage une ville d'origine » explose en 1,3 million de paires.

Apache Jena est la mise en garde par l'exemple : son moteur de raisonnement basique termine mais n'atteint que 11/18 (pas de chaînes, pas de propriétés transitives/symétriques, pas d'équivalence). Son moteur le plus puissant, sur les mêmes données, ne renvoie jamais même la première réponse, il reste bloqué indéfiniment sur l'explosion de la ville d'origine. (Notons que Jena traite LUBM sans souci ; c'est cette famille de règles plus difficiles qui le casse, ce qui est tout l'enjeu des « moteurs de raisonnement qui passent réellement à l'échelle ».)

Nous mangeons notre propre nourriture pour chien#

La chose la plus digne de confiance que nous puissions dire, c'est que ce benchmark a révélé un vrai bug dans ReasoningLayer, et nous l'avons corrigé avant d'écrire ceci. Sur la question de la chaîne d'appartenance, ReasoningLayer rapportait d'abord 2 486 appartenances ; GraphDB en rapportait 7 421. Nous n'avons pas masqué l'écart, nous avons découvert que nous ne conservions qu'une appartenance par étudiant au lieu de la chaîne entière, reconstruit cette partie du moteur, et nous correspondons désormais à GraphDB exactement. Après le correctif, l'ensemble du filet de sécurité est au vert :

  • OWL2Bench (raisonnement difficile) : 18/18, identique à GraphDB
  • LUBM (raisonnement basique) : 14/14, toujours identique à GraphDB
  • Conformité W3C SPARQL : 630/630 (SPARQL 1.1) et 267/267 (SPARQL 1.2), ReasoningLayer passe le standard du secteur intégralement, y compris la suite plus récente SPARQL 1.2 / RDF-star (triplets cités, chaînes de langue directionnelles, tout y est), pas seulement nos propres benchmarks
  • 64 tests unitaires de raisonnement (8 ajoutés pour le correctif)

Un benchmark qu'on ne peut pas échouer n'est pas un benchmark.

Au-delà d'OWL : un seul substrat pour RDF, OWL, SHACL et SUMO#

Les benchmarks ci-dessus prouvent que ReasoningLayer effectue le raisonnement standard correctement et vite. Mais la raison pour laquelle nous avons conçu un nouveau moteur à partir de zéro va plus loin, et c'est la partie qui compte le plus pour résoudre l'hallucination de l'IA.

Nous nous sommes appuyés tout au long sur l'expression modèle du monde ; voici à quoi ressemble vraiment le plus complet d'entre eux. Un véritable modèle du monde explicite quels types de choses existent, comment elles se relient, ce qui est possible et ce qui est contradictoire. Le plus large qui existe est SUMO, la Suggested Upper Merged Ontology : un modèle de plus haut niveau des agents, des processus, des objets, du temps et de la causalité, l'échafaudage de bon sens auquel s'accroche une ontologie de domaine.

Voici l'écart de représentation. SUMO est écrit en SUO-KIF, un langage qui est d'ordre supérieur et n-aire, ses relations prennent un nombre quelconque d'arguments et il énonce des règles générales. Les faits du monde réel sont comme cela : « John a acheté une voiture d'occasion à Mary pour 5 000 $ le 3 mars » est un seul fait à cinq rôles (acheteur, vendeur, article, prix, date). RDF et OWL reposent sur des relations binaires : l'unité native est sujet → relation → valeur. RDF et OWL peuvent bien sûr encoder un achat n-aire, mais ils le font par un pattern : introduire un nœud artificiel « Achat #57 », puis attacher l'acheteur, le vendeur, l'article, le prix et la date par des triplets séparés. Cela fonctionne, et c'est le pattern W3C standard pour les relations n-aires, mais la relation n-aire n'est plus l'unité native que le moteur stocke, interroge et prouve. Et lorsque SUMO est traduit dans l'export SUMO.owl auto-généré, les relations n-aires et les règles générales sont nécessairement approximées ou supprimées parce que les propriétés objet OWL sont binaires. Vous obtenez une ombre OWL utile du modèle du monde, pas le modèle SUO-KIF complet.

Chaque moteur que nous avons mesuré est un triplestore RDF/OWL (GraphDB, Virtuoso, Fuseki/Jena, RDF4J, Oxigraph, QLever). Ils peuvent stocker des relations n-aires via des encodages RDF/OWL, mais ils ne les portent pas comme faits n-aires natifs, et ils ne chargent pas SUMO SUO-KIF complet comme l'objet sur lequel ils raisonnent. Leur substrat natif est binaire par construction.

ReasoningLayer repose sur un substrat différent. Son cœur est un terme typé, un Ψ-terme : une chose d'un type (tiré d'un treillis de types à héritage multiple) portant des rôles nommés, ce qui est nativement n-aire. Ce seul formalisme est assez expressif pour porter tous les standards à la fois, dans un seul moteur :

StandardCe que c'estDans ReasoningLayer
RDFle modèle de données en tripletsnatif (le cas binaire n'est qu'un terme à 2 rôles)
OWL / OWL 2 RLrègles d'ontologie + raisonnementnatif + raisonné (les benchmarks ci-dessus)
SHACLvalidation de forme des donnéesnatif (validation + réparation)
SUMO / SUO-KIFle modèle du monde n-aire, d'ordre supérieurimporté directement, une relation (rel a₁ … aₙ) devient un seul Ψ-terme aux rôles arg1 … argₙ ; ses règles de Horn s'activent dans le même moteur de raisonnement que les benchmarks ont utilisé ; la queue d'ordre supérieur / temporelle est préservée, non supprimée

Ainsi l'achat n-aire ci-dessus est un seul Ψ-terme, Buy(buyer: John, seller: Mary, item: car, price: 5000, date: 3-March), fidèle et directement interrogeable, et le bon sens des rôles de cas de SUMO (agent, patient, instrument, destination…) se pose de la même façon.

Pour être clair : c'est « et », pas « à la place de ». SUMO ne remplace pas OWL ; vous avez besoin des deux, comme couches complémentaires d'une même pile :

SUMO (le modèle du monde fondamental et n-aire : agents, processus, temps, causalité) → OWL / OWL 2 RL (les ontologies de domaine interopérables + un raisonnement rapide, décidable, complet, la couche dans laquelle le monde publie réellement ses données, et la couche que nos benchmarks prouvent) → SHACL (validation) → vos données.

OWL est essentiel et irremplaçable : c'est le standard W3C que parle chaque jeu de données, vocabulaire et graphe d'entreprise, et OWL 2 RL est le rare point d'équilibre qui est à la fois expressif et complet à l'échelle (c'est ce que sont les résultats 14/14 et 18/18 ci-dessus). SUMO ajoute l'ampleur que OWL ne porte pas nativement comme OWL, le modèle de plus haut niveau n-aire, mais la logique complète de SUMO n'est pas efficacement décidable, donc c'est la couche d'ancrage, pas la bête de somme du raisonnement rapide. L'enjeu n'est pas SUMO contre OWL ; c'est que ReasoningLayer fait tourner toute la pile sur un seul substrat, de sorte que vous n'avez jamais à arbitrer entre les standards et la vitesse d'OWL et la portée du modèle du monde de SUMO.

Pourquoi un seul substrat, et pourquoi à partir de zéro en Rust. La pile habituelle boulonne un moteur de raisonnement sur un triplestore, ou fait tourner un moteur différent par standard, ce qui est la façon de finir soit expressif soit rapide, jamais les deux. ReasoningLayer place RDF, OWL, SHACL et SUMO sur un seul formalisme : un treillis de types, des Ψ-termes aux rôles nommés, et la résiduation (le moteur se suspend sur ce qu'il ne peut pas encore trancher au lieu de deviner). C'est ce qui lui permet d'être complet vis-à-vis des standards et rapide à la fois, et c'est pourquoi le moteur a été écrit entièrement à partir de zéro en Rust plutôt que superposé à un magasin RDF existant : un moteur dont le seul objet natif est le triplet n'est pas le bon substrat pour un modèle du monde n-aire natif.

Voici ce substrat avec le vrai benchmark à l'intérieur, non pas un schéma, mais la visualisation propre à ReasoningLayer, rendue en direct dans votre navigateur par nodus (notre moteur de graphes) à partir du jeu de données LUBM chargé dans le moteur de raisonnement. Le treillis de types est l'ontologie universitaire sur laquelle il calcule réellement, GraduateStudent sous Student sous Person, Department et University sous Organization. L'hypergraphe de termes est un étudiant en master tenu comme un unique Ψ-terme n-aire : chaque rôle nommé (advisor, takesCourse, memberOf, degreeFrom, undergraduateDegreeFrom…) est un rayon du même fait, chaque polygone marque un Ψ-terme, et là où deux rôles pointent vers la même chose, le moteur conserve un seul nœud partagé. RDF peut encoder cette forme ; ici, c'est l'objet natif que le raisonneur manipule.

En direct · rendu par nodus
Ψ-terme (un fait n-aire)rôle nomméun terme + tous ses rôles
Chargement de la vue moteur en direct…

chaque Ψ-term est un fait n-aire ; les liens étiquetés sont ses rôles nommés, et deux rôles aboutissant au même terme, c'est de la coréférence · survolez un nœud ou un lien pour savoir ce que c'est · faites glisser pour déplacer · zoomez avec les commandes + / −

En direct, dans votre navigateur, la visualisation propre à ReasoningLayer (rendue par nodus) du véritable benchmark LUBM chargé dans le moteur : un étudiant en master tenu comme un unique Ψ-term n-aire (ses rôles nommés dessinés en polygone), et le treillis de sortes sur lequel le moteur raisonne. Survolez n'importe quoi pour voir ce que c'est ; changez de vue pour comparer.

Voilà le vrai argument derrière les chiffres : pour ancrer l'IA et briser l'hallucination, il vous faut un véritable modèle du monde (SUMO + OWL + vos données), et une couche capable à la fois de le contenir fidèlement et de raisonner dessus à grande vitesse, non pas un magasin passif, mais la couche de raisonnement qui manque à la pile de l'IA. C'est ce que ReasoningLayer est conçu pour être.

(Note de portée, en toute honnêteté : cette section porte sur la puissance de représentation, pas sur un benchmark en confrontation directe : il n'existe pas de benchmark SUMO multi-moteurs standard parce que les autres moteurs ne peuvent pas le charger nativement. Le raisonnement OWL/RDF est mesuré, ci-dessus ; le support natif SUMO/n-aire est une capacité architecturale du substrat, le fragment de Horn + n-aire s'exécutant aujourd'hui et le fragment d'ordre supérieur étant capturé pour des travaux ultérieurs.)

Au-delà de SPARQL : un seul langage pour tout, RLQL#

Un modèle du monde que vous pouvez contenir n'est que la moitié du travail ; vous devez encore lui poser des questions et énoncer ses règles. Le Web sémantique vous remet trois langages distincts pour cela : SPARQL pour interroger, OWL pour définir la sémantique ontologique, SHACL pour valider les formes, et ils sont mûrs, standard, et méritent d'être conservés. Mais ils ne forment pas un seul langage d'exécution pour un moteur de preuve flou, temporel, contraint et résidué. OWL est en monde ouvert et logiquement riche ; SHACL est un langage de validation RDF ; SPARQL est un langage de requête de graphes. Aucun des trois, isolément, n'est conçu pour exprimer toute la surface opérationnelle dont la connaissance réelle a souvent besoin : qu'un symptôme est à peu près comme un autre, qu'une valeur n'est pas encore connue et doit réveiller plus tard un but suspendu, qu'un événement est venu avant un autre, qu'un planning doit être résolu sous une toile de contraintes, ou ce qui se serait passé sous un autre traitement.

La réalité n'est pas nette. La médecine, le risque, la similarité et la politique sont affaires de degré ; les données arrivent incomplètes ; les faits sont temporels ; la planification et l'allocation sont des contraintes ; et les décisions qui comptent sont causales. Donc, aux côtés du substrat, nous avons conçu un seul langage pour tout exprimer, RLQL, le ReasoningLayer Query Language, tournant sur le même moteur de Ψ-termes que les benchmarks ci-dessus utilisent, dans une seule surface cohérente (62 familles d'instructions, pas un tas d'ajouts). Il parle RDF, OWL et SHACL, puis continue là où ils s'arrêtent :

Ce que la connaissance réelle a besoin de direOWL / SHACL / SPARQLRLQL
Vérité graduelle / floue, « assez proche », un degré dans [0,1]net seulement, un motif correspond ou noncorrespondance graduelle native : MATCH ~0.8 …, FUZZY TOP k plus proches correspondances classées
« Je ne sais pas, encore », suspendre au lieu d'échouerOWL est en monde ouvert, mais ne suspend pas une requête pour la réveiller quand la valeur arriverésiduation : AWAIT … THEN … WHEN … suspend et se réveille quand le fait arrive
Règles comme données, stocker, interroger et raisonner sur les règles elles-mêmesles règles sont une couche externe (SWRL/SPIN), non unifiable avec les donnéeshomoïconique DERIVE, une règle est un Ψ-terme ; CHAIN les exécute jusqu'à un point fixe
Temps, avant / pendant / chevauchea posteriori : précalculer les intervalles en triplets supplémentaires, puis filtrer… BEFORE …, l'algèbre des intervalles d'Allen intégrée
Contraintes, réellement résoudre, pas seulement déclarer une cardinalitéOWL énonce la cardinalité ; rien ne résoutCONSTRAINT … ; SOLVE, un véritable solveur à domaines finis / PPC
Cause et « et si ? », interventions, contrefactuelsaucun équivalentCOUNTERFACTUAL …, CAUSES … -> …, à la Pearl
Correspondance consciente des sous-types, chaque paire de types a une borne inférieureRDFS est un ordre partiel ; nécessite des UNION / clôtures matérialiséesle treillis de types : person(…) correspond à tout sous-type, GLB/LUB calculées au moment de la requête

Parce que les règles en RLQL sont écrites dans le langage même que les faits et les requêtes, elles sont homoïconiques, comme nous l'avons noté plus tôt, enseigner au moteur quelque chose de nouveau est une modification de la base de connaissances, pas un nouveau sous-système. Voici la partie qu'aucun triplestore ne peut exprimer, en un court parcours :

-- Un seul moteur, un seul langage. Un tour de ce que les triplets nets ne peuvent dire :
MATCH ~0.8 symptom(of: ?Disease);                    -- flou : "assez proche", un degré, pas oui/non
MATCH FUZZY TOP 5 ~0.7 concept(label: ?L);           -- k plus proches gradués, classés par similarité
AWAIT clearance(holder: ?P, level: ?L)               -- résiduation : suspendre au lieu de deviner...
  THEN grant(holder: ?P) WHEN ?L >= 3;               -- ...et se réveiller quand le fait manquant arrive
DERIVE member(of: ?Org) WHEN enrolled(in: ?D),       -- une règle qui EST une donnée (homoïconique)...
       part_of(?D, ?Org) WITH CERTAINTY 0.9;
CHAIN MAX 100;                                        -- ...exécuter en chaînage avant jusqu'à un point fixe
MATCH ?S : event() BEFORE ?D : event();              -- temporel : algèbre des intervalles d'Allen
CONSTRAINT ALL_DIFFERENT(?X, ?Y, ?Z); SOLVE;         -- contraintes, réellement résolues
COUNTERFACTUAL recovered(patient: ?P)                -- causal : "que se serait-il passé si...?"
  GIVEN treatment(patient: ?P, drug: "A");

La seule ligne qu'un triplestore ne peut littéralement pas écrire est la troisième. La résiduation, suspendre au lieu d'échouer, est la forme, au niveau du langage, de l'honnêteté autour de laquelle tout cet article tourne : lorsque RLQL manque de l'information pour trancher, il ne devine pas et ne supprime pas silencieusement la ligne ; il enregistre l'obligation et se réveille quand le fait manquant finit par arriver. C'est « un moteur qui sait ce qu'il ne sait pas », exprimé dans le langage de requête lui-même, l'opposé structurel d'un LLM qui comble la lacune avec aplomb.

Cadrage honnête, et « et », pas « à la place de » encore une fois. RLQL est non standard, et son écosystème est naissant à côté des 25 ans d'outillage, de fédération et de praticiens formés de SPARQL. C'est exactement pourquoi ReasoningLayer ne vous oblige jamais à abandonner les standards : il parle aussi SPARQL, votre requête est analysée et traduite sur le même moteur de Ψ-termes (c'est le test de conformité W3C évoqué plus haut), de sorte que vos RDF, OWL et SPARQL existants suivent intacts. RLQL est simplement ce qui attend dès l'instant où les triplets nets s'épuisent, le seul langage pour les degrés flous, les inconnues suspendues, le temps, les contraintes et la cause que la pile du Web sémantique n'a jamais été conçue pour porter. (Une réserve honnête : la portée de RLQL est une capacité architecturale du moteur, pas l'un des benchmarks en confrontation directe ci-dessus, il n'existe aucun standard multi-moteurs pour la mesurer, précisément parce que les autres moteurs n'offrent pas ces constructions à comparer.)

Tout le monde a financé le graphe de contexte. La couche de raisonnement manque toujours.#

Il y a une raison pour laquelle cette distinction mérite un article entier : le marché a énormément parié sur une de ses moitiés. La primitive en vogue de 2024-2026 est le graphe de contexte, un graphe des documents, personnes, projets, outils et événements d'une entreprise, dans lequel un agent LLM puise, afin de répondre avec un contexte ancré et pertinent plutôt qu'en devinant de mémoire. Glean bâtit son produit sur un « Enterprise Graph » qu'il appelle ouvertement un graphe de contexte ; Writer vend un Knowledge Graph « graph-based RAG » ; le GraphRAG de Microsoft extrait un graphe d'entités pour alimenter le prompt ; des moteurs de mémoire d'agents comme Zep / Graphiti proposent un « service de couche mémoire pour agents IA ». Anthropic a même donné un nom à la pratique en septembre 2025 : « context engineering ».

Et l'argent est réel. Le financement raconte l'histoire :

EntrepriseTourValorisationQuand
Glean150 M$ série F7,2 Md$juin 2025
Writer200 M$ série C1,9 Md$novembre 2024
Hebbia130 M$ série B (menée par a16z)non divulguéejuillet 2024

C'est une bonne technologie et nous n'y sommes pas opposés, un graphe de contexte est la bonne façon de trouver les faits pertinents et de remettre à un agent un ancrage traçable et à jour plutôt qu'une supposition par similarité vectorielle. Mais regardez de près ce que fait chacun de ces systèmes : il récupère et ancre. Il fait remonter des faits écrits quelque part et les relie par leurs relations. Ce qu'il ne fait pas, c'est dériver le fait qui en découle logiquement mais n'a jamais été écrit, le GraduateStudent qui est par conséquent un Student, l'appartenance qui se propage le long de toute une chaîne organisationnelle, la contradiction qui prouve que deux enregistrements désignent la même personne. Cela, c'est du raisonnement, et un graphe de récupération ne le fait pas, quelle que soit la quantité de contexte qu'il rapporte.

La littérature de recherche est sans détour sur l'écart. L'état de l'art relu par les pairs de NAACL 2024 sur les graphes de connaissances et l'hallucination constate que l'augmentation par KG atténue l'hallucination, ne l'élimine jamais. Un état de l'art de 2025 sur RAG, le raisonnement et les systèmes agentiques est plus tranchant : « s'appuyer sur l'une ou l'autre approche seule reste insuffisant. Le RAG complète efficacement la connaissance factuelle mais ne peut garantir un raisonnement logiquement cohérent », et il nomme toute une classe d'« hallucinations à base logique », des réponses fausses même lorsque chaque fait récupéré est correct, parce que l'étape de raisonnement est défaillante. La récupération peut même introduire ses propres erreurs. Plus de contexte est nécessaire ; ce n'est manifestement pas suffisant. (En toute justice envers le domaine : ces états de l'art entendent « raisonnement » au sens large, chaîne de pensée, outils, méthodes symboliques, pas notre moteur particulier. La forme de leur constat est la nôtre ; l'architecture ci-dessous est notre propre argument.)

Cela n'aide pas que le marketing brouille la ligne, le graphe de Glean est vendu sous la bannière du « multi-hop reasoning ». Mais la récupération multi-sauts (parcourir le graphe, collecter les faits connectés, laisser le LLM les assembler) n'est pas l'inférence multi-sauts (appliquer les règles de l'ontologie jusqu'à avoir calculé l'ensemble complet et clos des conséquences, contradictions comprises). L'une trouve ce qui est déjà là ; l'autre calcule ce qui doit être vrai. Les benchmarks plus haut dans cet article mesurent exactement la seconde chose, et la plupart des moteurs y échouent.

C'est la couche qui manque toujours, et c'est « et », pas « à la place de ». Vous voulez un graphe de contexte pour trouver les faits pertinents et une couche de raisonnement pour en dériver et en vérifier les conséquences. La réponse habituelle consiste à câbler deux systèmes ensemble : un produit de graphe de contexte pour la récupération, autre chose pour la logique. ReasoningLayer les fusionne en un seul. Il est un graphe de contexte en son cœur, la même toile d'entités et de relations que captent ces produits financés (vos documents, personnes, projets, outils et événements), et parce que ses termes sont nativement n-aires, temporels et versionnés, il contient cette toile plus fidèlement qu'un triplet binaire ne le pourrait jamais. Il ne s'arrête simplement pas à la récupération.

Sur le substrat même, il ajoute tout ce qu'un graphe purement de récupération laisse de côté : il dérive les faits qui en découlent mais n'ont jamais été écrits (le raisonnement OWL 2 RL complet que mesurent les benchmarks ci-dessus), impose les contraintes que les données doivent satisfaire (SHACL), ancre le tout dans un modèle du monde n-aire (SUMO + OWL + vos données), porte le temps, le versionnement et la provenance de sorte que chaque réponse est auditable telle qu'à n'importe quel instant, tranche qui peut voir et faire quoi dans le même moteur (gouvernance), et, par conception, se suspend sur ce qu'il ne peut vraiment pas déterminer au lieu de deviner. Un graphe de contexte rend un agent mieux informé. Le même graphe, portant tout cela, est ce qui lui permet d'avoir raison, et d'être honnête sur les cas où il n'est pas sûr.

Donc oui : ReasoningLayer peut être votre graphe de contexte, mais un graphe de contexte seul n'allait jamais suffire. C'est tout l'enjeu.

La couche de raisonnement qui manquait à l'IA#

Les standards et la vitesse sont le minimum requis. La raison pour laquelle le substrat de ReasoningLayer compte pour une IA digne de confiance, c'est que le même moteur gère les choses que le monde réel (et une véritable couche de raisonnement pour l'IA) exige réellement, dont aucune n'a été pensée pour un simple triplestore :

  • Apprend sans entraînement, et se personnalise à votre monde. Aucun fine-tune, aucune passe de gradient, aucune attente d'un réentraînement : vous enseignez au moteur en énonçant un fait ou en ajoutant une règle, et la toute prochaine requête le reflète. Parce que les règles sont des données écrites dans le même langage que les faits (elles sont homoïconiques), l'adapter à votre domaine (votre ontologie), vos besoins (vos règles) et votre politique (votre accès et votre gouvernance) est une modification de la base de connaissances, pas une passe d'entraînement, instantanée, auditable, réversible. Là où un LLM cuit sa connaissance au moment de l'entraînement et ne peut qu'être orienté à l'inférence, ReasoningLayer change ce qui est vrai à l'instant où vous le lui dites, par tenant, par domaine.
  • Données incomplètes, il sait ce qu'il ne sait pas. ReasoningLayer peut raisonner en monde ouvert, un fait manquant est traité comme inconnu, jamais supposé faux en silence, et, plus profondément, il résidue : une règle ou une requête qui manque d'information se suspend et attend au lieu d'échouer ou de deviner. Une affirmation atterrit dans l'un de trois états, entraînée, réfutée ou indéterminée, et le moteur ne réduira pas discrètement indéterminée à fausse (le geste même qui fait que les bases de données ordinaires, et les LLM, paraissent sûrs d'eux quand ils ne devraient pas l'être). Quelle hypothèse s'applique est un choix délibéré, par requête : monde ouvert pour un raisonnement honnête sous connaissance partielle, ou monde clos (négation par l'échec) lorsque « absent signifie faux » est exactement ce que vous voulez, « signalez toute commande sans approbation enregistrée ». C'est l'opposé d'un LLM, qui comble la lacune quoi qu'il arrive ; un moteur qui s'abstient quand il ne sait pas, sauf si vous lui dites explicitement de supposer le contraire, est l'antidote structurel à l'hallucination, gravé dans le formalisme, pas boulonné par-dessus.
  • Vérité graduelle, il raisonne en degrés, pas seulement en vrai/faux. Le monde réel est flou : un symptôme est à peu près comme un autre, un risque est plutôt élevé, deux enregistrements sont probablement la même personne. ReasoningLayer associe et raisonne avec des degrés dans [0,1], unification floue, subsomption graduelle, similarité entre types autrement incomparables, et plus proches correspondances classées, au lieu de forcer chaque question dans un oui/non net. Là où un triplestore ne peut filtrer que sur des scores précalculés ailleurs, le raisonnement gradué est natif au moteur et adressable directement depuis RLQL (MATCH ~0.8 …, FUZZY TOP k, comme montré plus haut). Pour ancrer l'IA, cela signifie qu'il peut peser les preuves et répondre « proche, et voici la confiance », plutôt que de se rabattre sur une correspondance exacte fragile, et cela se compose avec tout le reste ici : une correspondance floue résidue encore quand elle manque d'information, porte encore la provenance, respecte encore la gouvernance.
  • Détecte les contradictions, il refuse au lieu de narrer. C'est l'énigme du chirurgien du début de cet article, rendue mécanique : affirmez « ce chirurgien est le père du garçon » à côté de « une personne a exactement un père » et un second père, différent, et le moteur rapporte l'incohérence au lieu de la lisser en prose fluide. La vérification de contradictions est une opération de première classe, désentraînement, vérifications de cohérence sur les faits affirmés, et un cœur de satisfaisabilité en logique de description, de sorte que les enregistrements conflictuels, les contraintes violées et les états impossibles surgissent comme des erreurs à résoudre, pas comme des réponses à l'allure plausible. Un LLM n'a aucune notion de « ces deux affirmations ne peuvent pas être vraies en même temps » ; un moteur de raisonnement, si, et il le dit.
  • Temporalité, des faits qui tiennent dans le temps. « John a travaillé chez Acme de 2019 à 2023 » n'est pas un triplet intemporel ; la vérité dépend de quand vous demandez. ReasoningLayer modélise le temps en première classe, de sorte que le moteur peut répondre « telle qu'à » un instant et raisonner sur le changement, l'ordre et la durée.
  • Versionnement et provenance, répondez à « que savions-nous, et pourquoi, et quand ? » Les faits et les dérivations qui les ont produits sont versionnés et auditables. Pour une IA digne de confiance, cela signifie une véritable piste d'audit : chaque réponse peut être tracée jusqu'aux faits et règles dont elle provient, et reproduite telle qu'à n'importe quel état passé, pas une boîte noire.
  • Une preuve que vous pouvez revérifier, pas un « faites-moi confiance ». Chaque dérivation peut être exportée comme une preuve vérifiable par machine, vers les assistants de preuve Coq, Lean 4 et Isabelle/HOL, et vers les formats de certificat SMT/SAT (LFSC, DRAT, Alethe), de sorte qu'un tiers peut vérifier le raisonnement du moteur dans un prouveur indépendant qui ne connaît rien à ReasoningLayer. C'est la forme littérale du refrain de cet article : une réponse que vous pouvez vérifier est une réponse à laquelle vous pouvez vous fier. Là où le « raisonnement » d'un LLM est une narration infalsifiable, une dérivation ici est un certificat que quiconque peut auditer.
  • Gouvernance, politique et contrôle d'accès sont du raisonnement, pas de la plomberie. Qui peut voir un fait, qui peut agir dessus, quelle règle s'applique dans quel tenant, ce sont des dérivations, pas des indicateurs de configuration boulonnés en bordure. Parce que la politique vit comme une donnée dans le même moteur, « cet agent peut-il lire ceci ? » est répondu, et prouvé, par le même moteur de raisonnement qui répond à tout le reste, avec les octrois, les refus et les habilitations modélisés comme des règles au lieu d'être éparpillés dans le code applicatif. (C'est exactement le moteur derrière notre contrôle d'accès explicable.)
  • Souveraineté des données, votre modèle du monde reste le vôtre. La connaissance, les règles et le raisonnement tournent là où vous les placez, sur site, dans votre région, en isolement total si nécessaire, pas derrière l'API de quelqu'un d'autre. Pour les domaines régulés (santé, finance, secteur public, défense), c'est la ligne entre un système que vous pouvez réellement déployer et un système que vous ne pouvez pas : le modèle du monde sur lequel un agent raisonne ne quitte jamais votre contrôle, et chaque réponse reste auditable sur votre propre infrastructure. Et « là où vous le placez » peut être à l'intérieur de votre propre application : le même moteur est aussi livré comme bibliothèque embarquée, Rust, Python et TypeScript, et même WebAssembly dans le navigateur, de sorte qu'il peut tourner en processus, sans serveur et sans aucun saut réseau, pas seulement comme un service que vous hébergez.
  • Échelle et concurrence, conçu pour la production, pas pour une démo. Concurrence multi-version (les lecteurs ne bloquent jamais les écrivains), marqueurs de réplication pour des lectures cohérentes entre réplicas, et la performance sur plusieurs millions de triplets que vous avez vue plus haut (10,9 M de triplets ; clôtures de 1,4 M de faits dérivés en quelques secondes). Il est conçu pour rester rapide à mesure que la connaissance, et la charge, croissent.

Mis bout à bout avec le reste de cet article, c'est un seul moteur qui ancre l'IA dans un véritable modèle du monde (SUMO + OWL + SHACL + vos données, n-aire, sur un seul substrat), raisonne dessus complètement et plus vite que les moteurs de référence, connaît les limites de sa propre connaissance (monde ouvert + résiduation) et raisonne en degrés là où le monde est flou plutôt que de forcer un oui/non net, signale les contradictions au lieu de les narrer, se souvient de quand les choses étaient vraies et pourquoi il les a conclues, avec des preuves que vous pouvez revérifier dans un prouveur indépendant, impose qui peut voir et faire quoi, s'adapte à votre domaine et votre politique à l'instant où vous énoncez un nouveau fait ou une nouvelle règle (sans réentraînement), et garde le modèle du monde entier sous votre contrôle, à l'échelle de la production. Cette combinaison, et non une seule fonctionnalité, est la couche de raisonnement qui manquait à une IA ancrée, évolutive et digne de confiance, et c'est ce que ReasoningLayer est conçu pour être.

Comment lire ces chiffres honnêtement#

  • Les vitesses sont un instantané, une seule exécution sur un seul ordinateur portable (un Apple M4 Max) ; les chiffres en millisecondes fluctuent d'une exécution à l'autre. Les résultats de correction (400/400, 14/14, 18/18) sont les affirmations solides que nous défendons.
  • « Correct » signifie que des moteurs indépendants s'accordent, jamais simplement notre propre parole.
  • L'épreuve était équitable. Même machine, même protocole ; le test de vitesse (WatDiv) a le raisonnement désactivé sur chaque moteur ; ReasoningLayer tourne sans rien qui le flatterait (audit désactivé, aucun cache supplémentaire).
  • Ce que nous n'avons pas prétendu. Ce sont les tailles publiées standard pour chaque benchmark ; les exécutions de vitesse à plus grande échelle sont des travaux ultérieurs. Un moteur de raisonnement commercial (RDFox) est entièrement laissé de côté parce que sa licence d'essai interdit de publier des chiffres de benchmark, donc nous ne le faisons pas.
  • Mesuré vs architectural. Les trois tests en confrontation directe mesurent le raisonnement et la vitesse OWL/RDF, c'est la partie avec des chiffres concurrents. Les capacités du substrat (SUMO/n-aire natif, monde ouvert + résiduation, temporalité, versionnement) sont réelles dans le moteur mais sont des propriétés architecturales, pas une partie de ces exécutions en confrontation directe, il n'existe aucun benchmark multi-moteurs standard pour elles, en grande partie parce que les autres moteurs ne les offrent pas pour comparer.

En résumé#

Les ontologies et les graphes de connaissances deviennent la façon standard de garder l'IA honnête, mais seulement si le moteur en dessous sait calculer les conséquences de l'ontologie complètement et à l'échelle. C'est la barre que ces benchmarks fixent, et la plupart des moteurs n'en franchissent que la moitié :

  • Vitesse : ReasoningLayer est le plus rapide au global dans un champ de sept moteurs (ReasoningLayer plus six moteurs RDF), ~1 ms sur les questions complexes là où les autres prennent 5 à 247 ms, tout en faisant jeu égal avec Virtuoso (~0,7 à 1 ms) sur les requêtes triviales.
  • Raisonnement : c'est l'un des trois seuls moteurs à raisonner complètement, et le plus rapide d'entre eux, les 14 questions de raisonnement basique en 38 ms contre 78 ms pour GraphDB et 9,9 s pour Fuseki, et sur le profil difficile OWL 2 RL il égale la référence du secteur réponse pour réponse à environ deux fois la vitesse, là où les moteurs de raisonnement rivaux soit échouent, soit ne terminent jamais.
  • Confiance : chaque affirmation de correction est recoupée entre moteurs indépendants, ReasoningLayer passe intégralement les suites officielles du W3C, SPARQL 1.1 (630/630) et SPARQL 1.2 (267/267), et le seul bug qu'un benchmark a trouvé, nous l'avons corrigé et documenté.
  • Modèle du monde : sur un seul substrat, ReasoningLayer porte RDF, OWL, SHACL et SUMO, l'ontologie de plus haut niveau n-aire et d'ordre supérieur que les magasins RDF/OWL peuvent seulement encoder ou approximer plutôt que porter comme règles n-aires natives de style SUO-KIF. C'est le modèle du monde complet dont une IA a besoin pour être ancrée, pas juste une tranche de domaine.

Pour ancrer l'IA et briser l'hallucination, il vous faut un véritable modèle du monde, le bon sens de SUMO + les règles de domaine d'OWL + vos données, et une couche capable à la fois de le contenir fidèlement (n-aire, pas seulement des triplets) et de raisonner dessus à grande vitesse. Ce n'est pas un triplestore plus rapide, et ce n'est pas un plus gros tas de contexte récupéré : c'est la couche de raisonnement qui manque encore à la pile de l'IA, la pièce qui transforme des faits stockés en réponses dérivées, prouvables et dignes de confiance. C'est l'écart que ReasoningLayer est conçu, à partir de zéro, en Rust, pour combler.

Prenez du recul par rapport aux benchmarks et aux tours de financement, et tout se ramène à un seul arc : il vous faut un moteur qui unifie vos données en connaissance, transforme cette connaissance en insight, et de cet insight génère tout ce à quoi vous pouvez vous fier, dérivé, non deviné ; prouvé, non affirmé ; ancré dans un modèle du monde, non dans un modèle du texte. Les données deviennent de la connaissance, la connaissance devient de l'insight, et l'insight devient des réponses sur lesquelles vous pouvez fonder une décision. C'est cela la couche de raisonnement, et c'est cela ReasoningLayer.

Voyez-le par vous-même#

Vous n'avez pas à nous croire sur parole pour quoi que ce soit, c'est voulu.

  • Regardez-le raisonner. Le terrain de jeu en direct fait tourner le moteur sur de vrais problèmes : demandez « qui peut accéder à ce fichier, et pourquoi ? » et la réponse revient avec la dérivation qui l'a produite, pas un simple oui-ou-non. ▶ Ouvrez le terrain de jeu, ou voyez le même moteur à l'œuvre sur le contrôle d'accès explicable et la planification interactive.
  • Apportez-nous votre question la plus difficile, la politique criblée d'exceptions, l'ontologie que personne ne sait calculer entièrement, l'agent à qui vous ne pouvez pas encore confier d'agir seul. 👉 Parlez-nous et nous la ferons tourner sur vos données.

Tout le plaidoyer en une ligne : une réponse que vous pouvez vérifier est une réponse à laquelle vous pouvez vous fier, et c'est à cela que sert une couche de raisonnement.

Annexe : jeux de données et versions des moteurs#

Jeux de données : WatDiv échelle-100 = 10 885 399 triplets ; LUBM-1 = 100 866 triplets ; OWL2Bench RL échelle-1 = 54 815 triplets. Moteurs (tous nativement arm64, un M4 Max / 128 Go) : ReasoningLayer origin/main ; Virtuoso OS 7.2.17 ; GraphDB 10.8.0 Free ; Eclipse RDF4J ; Oxigraph dernière version ; Apache Jena/Fuseki 5.5.0 ; QLever dernière version.

Pour aller plus loin (le dossier hallucination / graphe de connaissances)#

  • Sequeda et al., A Benchmark to Understand the Role of Knowledge Graphs on LLM Accuracy…, arXiv:2311.07509 · analyse data.world
  • Microsoft Research, GraphRAG: Unlocking LLM discovery on narrative private data, microsoft.com
  • Can Knowledge Graphs Reduce Hallucinations in LLMs? A Survey, NAACL 2024 (l'augmentation par KG atténue, n'élimine jamais, l'hallucination)
  • Li et al., Mitigating Hallucination in LLMs: RAG, Reasoning, and Agentic Systems, arXiv:2510.24476 (le dossier nécessaire-mais-pas-suffisant : récupération et raisonnement sont des couches distinctes et complémentaires)
  • Pan et al., Unifying Large Language Models and Knowledge Graphs: A Roadmap, arXiv:2306.08302 (IEEE TKDE 2024)
  • Glean, How do you build a context graph?, glean.com · Anthropic, Effective context engineering for AI agents, anthropic.com
  • Gartner sur l'adoption des technologies de graphes, couverture TechTarget
  • Ontology-Constrained Neural Reasoning in Enterprise Agentic Systems, arXiv:2604.00555