ISNAD · Supabase

Le modèle scientifique des données

Schéma relationnel simplifié et catalogue documentaire complet des tables, clés et fonctions de la plateforme.

Lecture fonctionnelle du modèle

La chaîne de connaissance, de la source à la restitution. Chaque étape indique les structures réellement présentes et la nature du lien avec l’étape précédente. Sur cette page : cette lecture fonctionnelle, le schéma relationnel simplifié (conceptuel : il ne prouve aucune garantie de base), le catalogue tiré de la base (structures réellement implémentées) et les éléments prévus, signalés comme tels.

Garantie du lien :clé étrangère vérifiéelien logique (pas de clé étrangère)prévu
  1. 1

    Source

    Implémentéclé étrangère vérifiée

    L’ouvrage ou le jeu de données d’où vient l’information.

    Un jeu de données référence sa source.

    Structures : data_sources · datasets · import_batches · processing_runs

  2. 2

    Édition

    Implémentéclé étrangère vérifiée

    L’édition précise d’un ouvrage savant (notices, commentaires).

    Une édition référence sa source savante ; les hadiths référencent leur jeu de données, pas une édition.

    Structures : knowledge_sources · source_editions

  3. 3

    Texte documentaire

    Implémentéclé étrangère vérifiée

    Recueil → livre → chapitre → hadith, avec le texte arabe conservé.

    Chaque niveau référence son parent (suppression en cascade recueil → livre → chapitre → hadith).

    Structures : collections · books · chapters · hadiths · knowledge_entries

  4. 4

    Chaîne

    Implémentéclé étrangère vérifiée

    L’isnād d’un hadith et ses maillons ordonnés.

    Une chaîne référence son hadith ; un maillon référence sa chaîne.

    Structures : hadith_chains · hadith_chain_nodes

  5. 5

    Narrateurs

    Implémentéclé étrangère vérifiée

    Le registre canonique des personnes et les mentions non résolues.

    Un maillon peut référencer un narrateur canonique ; sans identité établie, le champ reste vide. Maître et élève sont deux références vers le registre.

    Structures : narrators · external_narrators · narrator_transmissions · knowledge_entry_mentions · knowledge_entry_mention_candidates · knowledge_entry_mention_resolutions

  6. 6

    Assertions

    Implémentéclé étrangère vérifiée

    Des affirmations documentées sur un narrateur ou une notice, avec version précédente.

    Une assertion référence sa notice, son narrateur, son jeu de données et l’assertion qu’elle remplace.

    Structures : narrator_assertions · narrator_relation_assertions · commentary_passage_assertions · terminology_assertions

  7. 7

    Preuves

    Implémentéclé étrangère vérifiée

    Le passage, la source et l’édition qui soutiennent une assertion.

    Une preuve référence son assertion, son hadith, sa chaîne, son maillon, son édition et sa source.

    Structures : assertion_evidence · terminology_witnesses · commentary_assertion_evidence

  8. 8

    Divergences et rapprochements

    Implémentéclé étrangère vérifiée

    Traditions, variantes, thèmes, conflits et évaluations de confiance.

    Chaque objet référence les hadiths (ou le thème) concernés ; les versions se chaînent par une référence à la version remplacée.

    Structures : traditions · tradition_variants · tradition_relations · topics · hadith_topic_assertions · scientific_conflicts · confidence_assessments

  9. 9

    Raisonnement

    Implémentéclé étrangère vérifiée

    Le cas de raisonnement calculé sur un sujet précis ; l’analyse d’attribution.

    Référence le hadith sujet ; l’évaluation d’attribution référence son cas de raisonnement.

    Structures : reasoning_cases · attribution_assessments

  10. 10

    Dossier

    Implémentélien logique (pas de clé étrangère)

    Le dossier scientifique versionné d’un hadith (conclusion possible : non résolu).

    Référence son hadith et la version qu’il remplace. Le lien avec les cas de raisonnement, conflits et traditions passe par le hadith : lien logique, non une clé étrangère.

    Structures : scientific_dossiers

  11. 11

    Restitution

    Prévuprévu

    La page du hadith et ses panneaux ; la synthèse sourcée affichée avant les résultats.

    Lecture seule. Aucune structure dédiée à la synthèse n’existe encore.

    Structures : (panneaux existants) · (synthèse sourcée : prévu)

Schéma candidat « book_workshop » (atelier privé des ouvrages)

Préparé, non installé en PROD

Espace privé de préparation d’un ouvrage : sources immuables, segmentations, unités arabes, versions de traduction en ajout seul, décisions de revue et journal. Sa migration est une candidate conservée hors du répertoire des migrations actives : aucune de ces tables n’existe en production, le code qui les utilise est livré désactivé, et rien n’y devient public.

supabase/candidates/book-workshop/add_book_workshop.candidate.sql

Niveau technique (secondaire)

Ces sections détaillent les mécanismes. Elles ne dispensent pas de lire la chaîne ci-dessus.

Provenance

Jeux de données, lots d’import et exécutions de traitement sont référencés par les objets qu’ils produisent (notices, assertions, preuves). Le texte arabe documentaire n’est pas réécrit ; une traduction est une entrée dérivée séparée.

Empreintes (hash)

Une empreinte du texte source sert à contrôler qu’une citation, un passage ou une traduction se rapporte toujours au texte actuel : si le texte change, la traduction est marquée périmée et le lien de passage n’affiche plus de surlignage. C’est un contrôle d’intégrité, pas une anonymisation.

Versions

Assertions, notices, dossiers, cas de raisonnement, évaluations et passages de commentaire portent une référence vers la version qu’ils remplacent (clé étrangère). Rien n’est écrasé : l’historique reste consultable.

Statuts

Chaque famille a son vocabulaire fermé (par exemple : soutenu / non soutenu / contredit / non résolu pour le raisonnement ; candidat / confirmé pour les rapprochements). Un statut n’implique pas une validation humaine.

Frontières de couches

Les pages appellent des services serveur ; seuls les adaptateurs d’infrastructure lisent la base ; les règles scientifiques pures n’ont aucun accès aux données. Le navigateur ne lit pas les données métier directement.

Ce que ce schéma ne garantit pas
  • Un lien « logique » n’est pas contraint par la base.
  • Les tables de base du corpus (recueils, hadiths, chaînes, narrateurs) ne sont pas toutes définies dans les migrations versionnées du dépôt : le catalogue de production fait foi pour elles.
  • Les droits de lecture et les politiques par ligne se vérifient dans le catalogue, pas dans un diagramme.
  • Aucune interface générique « assertion scientifique » n’existe comme table : c’est une direction de conception, non une structure.

Clés étrangères vérifiées dans le catalogue de production (lecture seule) le 2026-09-22.

Diagramme fonctionnel de l’application

Trois lectures complémentaires. Chaque diagramme est accompagné de sa lecture textuelle ; les étapes en pointillé sont prévues mais pas encore disponibles.

1. Parcours de vérification d’une question

Ce que vit l’utilisateur, de la question à la restitution. Les étapes en pointillé ne sont pas encore disponibles.

Le diagramme peut se faire défiler horizontalement sur petit écran.

Lecture textuelle
  1. Saisie de la question — En arabe ou en français, texte libre ou référence.
  2. Compréhension et normalisation — La question est normalisée et, si besoin, reformulée en arabe documentaire ; l’interprétation est conservée avec sa version.
  3. Recherche dans le corpus — Recherche lexicale sur les textes documentaires ; une recherche partielle ou en échec est signalée comme telle, jamais comme « aucun résultat ».
  4. Passages et sources — Ouverture du hadith au passage trouvé ; le lien distingue le contexte des mots qui correspondent.
  5. Chaîne et narrateurs — Lecture de l’isnād et des narrateurs identifiés.
  6. Rapprochements, thèmes, divergences — Candidats de traditions, thèmes et conflits, présentés comme candidats tant qu’ils ne sont pas revus.
  7. Raisonnement et dossier — Conclusion documentée parmi : soutenu, non soutenu, contredit, non résolu.
  8. Synthèse sourcée (prévu)prévu — Réponse lisible affichée avant les résultats ; non disponible aujourd’hui.
  9. Contrôle humain et révision — Les propositions sont revues et décidées par des personnes, avec justification et historique.

2. Production et contrôle des connaissances

Comment une information entre dans la plateforme et devient une connaissance contrôlée.

Le diagramme peut se faire défiler horizontalement sur petit écran.

Lecture textuelle
  1. Source et édition — Ouvrage, édition et jeu de données d’origine.
  2. Texte documentaire — Le texte arabe est conservé tel quel, avec empreinte de contrôle.
  3. Chaîne et mentions — Décomposition de l’isnād en mentions de narrateurs.
  4. Candidats et preuves — Candidats classés par preuves positives et négatives ; jamais par simple ressemblance de nom.
  5. Décision de revue — Une personne confirme, rejette ou laisse ouvert ; auteur, date, justification et version sont conservés.
  6. Registre canonique — Seules les identités établies y sont inscrites.
  7. Assertions et divergences — Évaluations documentées, conflits et niveaux de confiance explicables.
  8. Raisonnement et dossier — Dossier versionné, éventuellement « non résolu ».
  9. Traduction française (branche) — Dérivée du texte source, versionnée, marquée périmée si la source change, révisée par un humain.

3. Rôle des modules et circulation des données

Les couches de l’application : chacune a un rôle et une seule direction de dépendance.

Le diagramme peut se faire défiler horizontalement sur petit écran.

Lecture textuelle
  1. Navigateur — Affichage et interactions ; ne parle jamais directement à la base pour le métier (seulement l’authentification).
  2. Pages et routes (app) — Paramètres d’URL, orchestration légère, pages introuvables et erreurs.
  3. Services et modèles de lecture (server) — Validation, autorisation, règles d’assemblage.
  4. Adaptateurs (infrastructure) — Seul endroit qui interroge la base et les fournisseurs.
  5. Base de données — Tables documentaires et scientifiques, droits et politiques de lecture.
  6. Règles pures (domain) — Règles scientifiques sans accès aux données.
  7. Fournisseur d’IA (interprétation de la question) — Utilisé uniquement pour reformuler la question ; jamais pour décider d’un fait scientifique.
  8. Administration — Passe par des points d’entrée serveur protégés (session vérifiée, droit administrateur).
Schéma relationnel simplifié

Tables, clés et relations

Chaque carte ne montre volontairement que le nom de la table, sa clé primaire et ses clés étrangères. Les colonnes métier sont décrites dans le catalogue situé sous le modèle.

61 tables115 relationsSchéma relevé le 2026-09-02

Corpus canonique

7
public

books

PK
id
FK
  • collection_idpublic.collections(id)
public

chapters

PK
id
FK
  • book_idpublic.books(id)
public

collections

PK
id
FK

Aucune clé étrangère

public

hadith_chain_nodes

PK
id
FK
  • chain_idpublic.hadith_chains(id)
  • external_narrator_ref_idpublic.external_narrators(id)
  • narrator_idpublic.narrators(id)
public

hadith_chains

PK
id
FK
  • hadith_idpublic.hadiths(id)
public

hadith_embeddings

PK
id
FK
  • hadith_idpublic.hadiths(id)
public

hadiths

PK
id
FK
  • chapter_idpublic.chapters(id)
  • dataset_idpublic.datasets(id)
  • import_batch_id + dataset_idpublic.import_batches(id + dataset_id)

Narrateurs et rijāl

12
public

narrator_appellations

PK
id
FK
  • narrator_idpublic.narrators(id)
public

narrator_collections

PK
id
FK
  • collection_idpublic.collections(id)
  • narrator_idpublic.narrators(id)
public

narrator_identities

PK
narrator_id
FK
  • narrator_idpublic.narrators(id)
public

narrator_identity_variants

PK
id
FK
  • narrator_idpublic.narrators(id)
public

narrator_kinships

PK
id
FK
  • narrator_idpublic.narrators(id)
  • related_narrator_idpublic.narrators(id)
public

narrator_locations

PK
id
FK
  • narrator_idpublic.narrators(id)
public

narrator_name_forms

PK
id
FK
  • feedback_idpublic.narrator_resolution_feedback(id)
  • narrator_idpublic.narrators(id)
public

narrator_nisbas

PK
id
FK
  • narrator_idpublic.narrators(id)
public

narrator_quality_profiles

PK
id
FK
  • narrator_idpublic.narrators(id)
  • processing_run_idpublic.processing_runs(id)
public

narrator_reliability

PK
narrator_id
FK
  • narrator_idpublic.narrators(id)
public

narrator_transmissions

PK
id
FK
  • collection_idpublic.collections(id)
  • student_idpublic.narrators(id)
  • teacher_idpublic.narrators(id)
public

narrators

PK
id
FK

Aucune clé étrangère

Connaissance et preuves

5
public

assertion_evidence

PK
id
FK
  • assertion_idpublic.narrator_assertions(id)
  • chain_idpublic.hadith_chains(id)
  • chain_node_idpublic.hadith_chain_nodes(id)
  • dataset_idpublic.datasets(id)
  • dataset_id + source_idpublic.datasets(id + source_id)
  • hadith_idpublic.hadiths(id)
  • source_idpublic.data_sources(id)
public

knowledge_entries

PK
id
FK
  • dataset_idpublic.datasets(id)
  • import_batch_idpublic.import_batches(id)
  • import_batch_id + dataset_idpublic.import_batches(id + dataset_id)
  • knowledge_source_idpublic.knowledge_sources(id)
  • narrator_idpublic.narrators(id)
  • processing_run_idpublic.processing_runs(id)
  • source_edition_idpublic.source_editions(id)
  • supersedes_entry_idpublic.knowledge_entries(id)
public

knowledge_sources

PK
id
FK

Aucune clé étrangère

public

narrator_assertions

PK
id
FK
  • dataset_idpublic.datasets(id)
  • dataset_id + source_idpublic.datasets(id + source_id)
  • external_narrator_ref_idpublic.external_narrators(id)
  • import_batch_id + dataset_idpublic.import_batches(id + dataset_id)
  • narrator_idpublic.narrators(id)
  • processing_run_idpublic.processing_runs(id)
  • source_idpublic.data_sources(id)
  • supersedes_assertion_idpublic.narrator_assertions(id)
public

source_editions

PK
id
FK
  • knowledge_source_idpublic.knowledge_sources(id)

Résolution et réconciliation

8
public

external_narrators

PK
id
FK
  • dataset_idpublic.datasets(id)
public

narrator_crosswalk

PK
id
FK
  • external_narrator_ref_idpublic.external_narrators(id)
  • ruwat_narrator_idpublic.narrators(id)
public

narrator_crosswalk_candidates

PK
id
FK
  • external_narrator_ref_idpublic.external_narrators(id)
  • ruwat_narrator_idpublic.narrators(id)
public

narrator_data_conflicts

PK
id
FK
  • assertion_a_idpublic.narrator_assertions(id)
  • assertion_b_idpublic.narrator_assertions(id)
  • narrator_idpublic.narrators(id)
  • processing_run_idpublic.processing_runs(id)
  • resolution_decision_idpublic.narrator_reconciliation_decisions(id)
public

narrator_reconciliation_decisions

PK
id
FK
  • projected_ruwat_narrator_idpublic.narrators(id)
  • crosswalk_id_usedpublic.narrator_crosswalk(id)
  • external_narrator_ref_idpublic.external_narrators(id)
  • narrator_idpublic.narrators(id)
  • processing_run_idpublic.processing_runs(id)
  • supersedes_decision_idpublic.narrator_reconciliation_decisions(id)
public

narrator_resolution_feedback

PK
id
FK
  • current_narrator_idpublic.narrators(id)
  • proposed_narrator_idpublic.narrators(id)
public

reconciliation_decision_assertions

PK
decision_idassertion_id
FK
  • assertion_idpublic.narrator_assertions(id)
  • crosswalk_id_usedpublic.narrator_crosswalk(id)
  • decision_idpublic.narrator_reconciliation_decisions(id)
public

resolution_feedback_audit

PK
id
FK
  • request_idpublic.narrator_resolution_feedback(id)

Commentaires

12
public

commentary_alignment_evidence

PK
id
FK
  • alignment_idpublic.commentary_alignments(id)
public

commentary_alignments

PK
id
FK
  • passage_idpublic.commentary_passages(id)
  • searched_dataset_idpublic.datasets(id)
  • searched_edition_idpublic.commentary_editions(id)
  • supersedes_alignment_idpublic.commentary_alignments(id)
  • target_idpublic.commentary_targets(id)
public

commentary_documents

PK
id
FK
  • data_source_idpublic.data_sources(id)
  • dataset_idpublic.datasets(id)
  • dataset_id + data_source_idpublic.datasets(id + source_id)
  • edition_idpublic.commentary_editions(id)
  • import_batch_id + dataset_idpublic.import_batches(id + dataset_id)
  • processing_run_idpublic.processing_runs(id)
  • supersedes_document_idpublic.commentary_documents(id)
public

commentary_editions

PK
id
FK
  • source_idpublic.commentary_sources(id)
public

commentary_fath_manifest

PK
id
FK

Aucune clé étrangère

public

commentary_passage_labels

PK
id
FK
  • passage_idpublic.commentary_passages(id)
public

commentary_passages

PK
id
FK
  • document_idpublic.commentary_documents(id)
  • quoted_collection_idpublic.collections(id)
  • supersedes_passage_idpublic.commentary_passages(id)
public

commentary_sources

PK
id
FK

Aucune clé étrangère

public

commentary_target_hadiths

PK
target_idhadith_id
FK
  • hadith_idpublic.hadiths(id)
  • target_idpublic.commentary_targets(id)
public

commentary_targets

PK
id
FK
  • chain_idpublic.hadith_chains(id)
  • chain_node_idpublic.hadith_chain_nodes(id)
  • chapter_idpublic.chapters(id)
  • hadith_idpublic.hadiths(id)
  • narrator_idpublic.narrators(id)
public

commentary_translations

PK
id
FK
  • source_passage_id + source_passage_versionpublic.commentary_passages(id + passage_version)
  • supersedes_translation_idpublic.commentary_translations(id)
public

commentary_validated_rules

PK
id
FK
  • supersedespublic.commentary_validated_rules(id)

Translittération

6
public

transliteration_aliases

PK
id
FK
  • lexicon_entry_idpublic.transliteration_lexicon(id)
public

transliteration_dry_run_runs

PK
id
FK
  • standard_idpublic.transliteration_standards(id)
public

transliteration_lexicon

PK
id
FK
  • dataset_idpublic.datasets(id)
  • source_idpublic.data_sources(id)
  • standard_idpublic.transliteration_standards(id)
public

transliteration_narrator_proposals

PK
id
FK
  • narrator_idpublic.narrators(id)
  • run_idpublic.transliteration_dry_run_runs(id)
public

transliteration_standards

PK
id
FK

Aucune clé étrangère

public

transliteration_stopwords

PK
id
FK
  • standard_idpublic.transliteration_standards(id)

Ingestion et provenance

4
public

data_sources

PK
id
FK

Aucune clé étrangère

public

datasets

PK
id
FK
  • source_idpublic.data_sources(id)
public

import_batches

PK
id
FK
  • dataset_idpublic.datasets(id)
public

processing_runs

PK
id
FK
  • dataset_idpublic.datasets(id)
  • import_batch_id + dataset_idpublic.import_batches(id + dataset_id)

Qualité

3
public

data_quality_snapshots

PK
id
FK

Aucune clé étrangère

public

quality_decisions

PK
id
FK
  • processing_run_idpublic.processing_runs(id)
public

quality_engine_state

PK
entity_typeentity_idengine
FK
  • last_run_idpublic.processing_runs(id)

Accès

1
public

admins

PK
user_id
FK

Aucune clé étrangère

Laboratoires

3
labs

hadithrank_grade_fidelity

PK
grade_tier
FK

Aucune clé étrangère

labs

hadithrank_narrator_override

PK
narrator_id
FK

Aucune clé étrangère

labs

hadithrank_run

PK
id
FK

Aucune clé étrangère

Dictionnaire de données

Catalogue des tables et fonctions

Ce catalogue documente la structure réellement présente dans Supabase. Les commentaires du schéma sont conservés ; lorsqu’un commentaire manque, une description fonctionnelle explicite le rôle de l’objet.

61 tables65 propres à ISNAD153 fournies par des extensions

Description de toutes les tables

Corpus canonique7 tables

public.books

Livres internes d’un recueil de hadith.

Clé primaire
id
Clés étrangères
  • collection_idpublic.collections(id)

public.chapters

Chapitres rattachés aux livres des recueils.

Clé primaire
id
Clés étrangères
  • book_idpublic.books(id)

public.collections

Recueils de hadith canoniques (Boukhari, Mouslim, etc.) référencés par sigle dans Tahdhib al-Kamal.

Clé primaire
id
Clés étrangères
Aucune clé étrangère.

public.hadith_chain_nodes

Maillons ordonnés d’une chaîne, conservant la mention source et le rattachement éventuel au narrateur canonique.

Clé primaire
id
Clés étrangères
  • chain_idpublic.hadith_chains(id)
  • external_narrator_ref_idpublic.external_narrators(id)
  • narrator_idpublic.narrators(id)

public.hadith_chains

Chaînes de transmission rattachées à un hadith.

Clé primaire
id
Clés étrangères
  • hadith_idpublic.hadiths(id)

public.hadith_embeddings

12B semantic search prototype: dense embeddings of hadiths.text_ar (language='ar' only today, text_fr is 0% populated) per candidate model. embedding is an unconstrained vector column (dimension enforced via the dimensions column + CHECK, not the column type) because this table holds multiple candidate models with different dims during evaluation. No ANN index yet -- exact brute-force search only, by design for this phase.

Clé primaire
id
Clés étrangères
  • hadith_idpublic.hadiths(id)

public.hadiths

Occurrences de hadith avec texte, référence documentaire et provenance d’import.

Clé primaire
id
Clés étrangères
  • chapter_idpublic.chapters(id)
  • dataset_idpublic.datasets(id)
  • import_batch_id + dataset_idpublic.import_batches(id + dataset_id)
Narrateurs et rijāl12 tables

public.narrator_appellations

Appellations structurées d’un narrateur : kunya, laqab et autres formes nominales.

Clé primaire
id
Clés étrangères
  • narrator_idpublic.narrators(id)

public.narrator_collections

Table de liaison entre narrateurs et recueils où ils apparaissent.

Clé primaire
id
Clés étrangères
  • collection_idpublic.collections(id)
  • narrator_idpublic.narrators(id)

public.narrator_identities

Extension structurée de l’identité canonique d’un narrateur.

Clé primaire
narrator_id
Clés étrangères
  • narrator_idpublic.narrators(id)

public.narrator_identity_variants

Variantes structurées d’identité conservées sans créer une nouvelle personne.

Clé primaire
id
Clés étrangères
  • narrator_idpublic.narrators(id)

public.narrator_kinships

Relations de parenté entre narrateurs canoniques.

Clé primaire
id
Clés étrangères
  • narrator_idpublic.narrators(id)
  • related_narrator_idpublic.narrators(id)

public.narrator_locations

Relations d’un narrateur avec des lieux, accompagnées de leur rôle et de leur statut d’attribution.

Clé primaire
id
Clés étrangères
  • narrator_idpublic.narrators(id)

public.narrator_name_forms

Formes nominales multiples pour une même identité (narrator_id) : un nom n'est qu'une représentation de la personne, jamais l'identité elle-même.

Clé primaire
id
Clés étrangères
  • feedback_idpublic.narrator_resolution_feedback(id)
  • narrator_idpublic.narrators(id)

public.narrator_nisbas

Nisbas et affiliations nominales rattachées à un narrateur.

Clé primaire
id
Clés étrangères
  • narrator_idpublic.narrators(id)

public.narrator_quality_profiles

Qualité des DONNÉES uniquement ; sans rapport avec jarh wa tadil ou authenticité du hadith.

Clé primaire
id
Clés étrangères
  • narrator_idpublic.narrators(id)
  • processing_run_idpublic.processing_runs(id)

public.narrator_reliability

Score critique (jarh wa ta'dil). Normalisation algorithmique interne a partir du martaba (echelle Taqrib al-Tahdhib), INDEPENDANTE de la tabaqa (narrators.generation_rank). Les pourcentages sont propres au systeme, pas attribues par Ibn Hajar.

Clé primaire
narrator_id
Clés étrangères
  • narrator_idpublic.narrators(id)

public.narrator_transmissions

Liens maître→élève extraits et vérifiés depuis les listes maîtres/élèves d'origine, avec niveau de confiance explicite.

Clé primaire
id
Clés étrangères
  • collection_idpublic.collections(id)
  • student_idpublic.narrators(id)
  • teacher_idpublic.narrators(id)

public.narrators

Narrateurs de hadith (rijal) — reconstruit depuis le jeu de données enrichi IdRap_datamodel_supabase.

Clé primaire
id
Clés étrangères
Aucune clé étrangère.
Connaissance et preuves5 tables

public.assertion_evidence

Preuves sourcées qui étayent ou contredisent une assertion sur un narrateur.

Clé primaire
id
Clés étrangères
  • assertion_idpublic.narrator_assertions(id)
  • chain_idpublic.hadith_chains(id)
  • chain_node_idpublic.hadith_chain_nodes(id)
  • dataset_idpublic.datasets(id)
  • dataset_id + source_idpublic.datasets(id + source_id)
  • hadith_idpublic.hadiths(id)
  • source_idpublic.data_sources(id)

public.knowledge_entries

Scientific notices (tarjama) from a knowledge_source. narrator_id is nullable: entries can be UNLINKED until canonical resolution.

Clé primaire
id
Clés étrangères
  • dataset_idpublic.datasets(id)
  • import_batch_idpublic.import_batches(id)
  • import_batch_id + dataset_idpublic.import_batches(id + dataset_id)
  • knowledge_source_idpublic.knowledge_sources(id)
  • narrator_idpublic.narrators(id)
  • processing_run_idpublic.processing_runs(id)
  • source_edition_idpublic.source_editions(id)
  • supersedes_entry_idpublic.knowledge_entries(id)

public.knowledge_sources

Scientific scholarly works (rijal, hadith commentary, etc.). Distinct from data_sources which tracks technical ingestion provenance.

Clé primaire
id
Clés étrangères
Aucune clé étrangère.

public.narrator_assertions

Assertions sourcées. CANONICAL_CURRENT signifie retenu actuellement par ISNAD, jamais vérité absolue.

Clé primaire
id
Clés étrangères
  • dataset_idpublic.datasets(id)
  • dataset_id + source_idpublic.datasets(id + source_id)
  • external_narrator_ref_idpublic.external_narrators(id)
  • import_batch_id + dataset_idpublic.import_batches(id + dataset_id)
  • narrator_idpublic.narrators(id)
  • processing_run_idpublic.processing_runs(id)
  • source_idpublic.data_sources(id)
  • supersedes_assertion_idpublic.narrator_assertions(id)

public.source_editions

Bibliographic editions of knowledge_sources. Coexists with commentary_editions; convergence is a future sprint.

Clé primaire
id
Clés étrangères
  • knowledge_source_idpublic.knowledge_sources(id)
Résolution et réconciliation8 tables

public.external_narrators

Mentions de narrateurs telles qu’elles existent dans un jeu de données externe, avant résolution canonique.

Clé primaire
id
Clés étrangères
  • dataset_idpublic.datasets(id)

public.narrator_crosswalk

Correspondances validées entre une mention externe et un narrateur canonique ISNAD.

Clé primaire
id
Clés étrangères
  • external_narrator_ref_idpublic.external_narrators(id)
  • ruwat_narrator_idpublic.narrators(id)

public.narrator_crosswalk_candidates

Candidats classés proposés pour résoudre une mention externe vers un narrateur canonique.

Clé primaire
id
Clés étrangères
  • external_narrator_ref_idpublic.external_narrators(id)
  • ruwat_narrator_idpublic.narrators(id)

public.narrator_data_conflicts

Conflits détectés entre deux assertions relatives à un même narrateur.

Clé primaire
id
Clés étrangères
  • assertion_a_idpublic.narrator_assertions(id)
  • assertion_b_idpublic.narrator_assertions(id)
  • narrator_idpublic.narrators(id)
  • processing_run_idpublic.processing_runs(id)
  • resolution_decision_idpublic.narrator_reconciliation_decisions(id)

public.narrator_reconciliation_decisions

Journal append-only des décisions automatiques ou humaines de réconciliation d’identité.

Clé primaire
id
Clés étrangères
  • projected_ruwat_narrator_idpublic.narrators(id)
  • crosswalk_id_usedpublic.narrator_crosswalk(id)
  • external_narrator_ref_idpublic.external_narrators(id)
  • narrator_idpublic.narrators(id)
  • processing_run_idpublic.processing_runs(id)
  • supersedes_decision_idpublic.narrator_reconciliation_decisions(id)

public.narrator_resolution_feedback

Demandes de validation humaine (confirmation/correction/proposition). PENDING/REJECTED/DUPLICATE/NEEDS_INFORMATION sans aucun effet sur le referentiel — seul APPROVED, via review_resolution_feedback(), peut enrichir narrator_name_forms.

Clé primaire
id
Clés étrangères
  • current_narrator_idpublic.narrators(id)
  • proposed_narrator_idpublic.narrators(id)

public.reconciliation_decision_assertions

Table de liaison entre décisions de réconciliation et assertions utilisées.

Clé primaire
decision_id + assertion_id
Clés étrangères
  • assertion_idpublic.narrator_assertions(id)
  • crosswalk_id_usedpublic.narrator_crosswalk(id)
  • decision_idpublic.narrator_reconciliation_decisions(id)

public.resolution_feedback_audit

Traçabilite complete des decisions administratives sur narrator_resolution_feedback. Alimentee uniquement par review_resolution_feedback().

Clé primaire
id
Clés étrangères
  • request_idpublic.narrator_resolution_feedback(id)
Commentaires12 tables

public.commentary_alignment_evidence

Preuves attachées à une décision d’alignement entre un passage de commentaire et sa cible.

Clé primaire
id
Clés étrangères
  • alignment_idpublic.commentary_alignments(id)

public.commentary_alignments

Decisions append-only. EXACT decrit la correspondance proposee ; HUMAN_VERIFIED decrit sa validation et reste independant.

Clé primaire
id
Clés étrangères
  • passage_idpublic.commentary_passages(id)
  • searched_dataset_idpublic.datasets(id)
  • searched_edition_idpublic.commentary_editions(id)
  • supersedes_alignment_idpublic.commentary_alignments(id)
  • target_idpublic.commentary_targets(id)

public.commentary_documents

Documents et témoins éditoriaux d’un commentaire, rattachés à une édition et à leur provenance technique.

Clé primaire
id
Clés étrangères
  • data_source_idpublic.data_sources(id)
  • dataset_idpublic.datasets(id)
  • dataset_id + data_source_idpublic.datasets(id + source_id)
  • edition_idpublic.commentary_editions(id)
  • import_batch_id + dataset_idpublic.import_batches(id + dataset_id)
  • processing_run_idpublic.processing_runs(id)
  • supersedes_document_idpublic.commentary_documents(id)

public.commentary_editions

Editions bibliographiques distinctes d une oeuvre. Aucune edition ne remplace un autre temoin.

Clé primaire
id
Clés étrangères
  • source_idpublic.commentary_sources(id)

public.commentary_fath_manifest

Inventaire d audit pre-ingestion du corpus GitHub derive Fath al-Bari (metadonnees et empreintes uniquement, jamais le texte complet). Rejouable de facon idempotente par (txt_path, repository_commit).

Clé primaire
id
Clés étrangères
Aucune clé étrangère.

public.commentary_passage_labels

Etiquetage multi-label autoritaire d'un passage : un passage_id donne peut porter plusieurs lignes/etiquettes (par exemple ISNAD et HADITH_QUOTE sur le meme empan de texte). commentary_passages.passage_kind ne stocke que l'etiquette dominante retenue, pour compatibilite avec le modele 14A/14B/14C.

Clé primaire
id
Clés étrangères
  • passage_idpublic.commentary_passages(id)

public.commentary_passages

Temoins textuels versionnes. COMMENTARY, QUOTED_HADITH et EDITORIAL_APPARATUS restent explicitement separes.

Clé primaire
id
Clés étrangères
  • document_idpublic.commentary_documents(id)
  • quoted_collection_idpublic.collections(id)
  • supersedes_passage_idpublic.commentary_passages(id)

public.commentary_sources

Oeuvres savantes abstraites. Une ligne represente une oeuvre, jamais une edition ou un fichier.

Clé primaire
id
Clés étrangères
Aucune clé étrangère.

public.commentary_target_hadiths

Liaison reservee exclusivement aux cibles MULTIPLE_HADITHS. Les cibles HADITH et MATN_SEGMENT utilisent commentary_targets.hadith_id.

Clé primaire
target_id + hadith_id
Clés étrangères
  • hadith_idpublic.hadiths(id)
  • target_idpublic.commentary_targets(id)

public.commentary_targets

Cibles scientifiques possibles d’un passage de commentaire : hadith, chaîne, maillon, narrateur ou chapitre.

Clé primaire
id
Clés étrangères
  • chain_idpublic.hadith_chains(id)
  • chain_node_idpublic.hadith_chain_nodes(id)
  • chapter_idpublic.chapters(id)
  • hadith_idpublic.hadiths(id)
  • narrator_idpublic.narrators(id)

public.commentary_translations

Traductions versionnees liees a une version precise du passage source. Le texte arabe n est jamais remplace.

Clé primaire
id
Clés étrangères
  • source_passage_id + source_passage_versionpublic.commentary_passages(id + passage_version)
  • supersedes_translation_idpublic.commentary_translations(id)

public.commentary_validated_rules

Couche connaissance/regles versionnee (etape 14D, section 10) : formalise en donnees queryables la logique auparavant codee en dur dans scripts/lib/fath-matching.mjs, et donne un domicile durable aux OBSERVATIONs/INFERENCEs derivees des runs industriels. Append-only ; supersession = nouvelle ligne, jamais UPDATE. Non cablee au moteur (lecture non implementee cote fath-evidence.mjs/fath-matching.mjs a ce stade).

Clé primaire
id
Clés étrangères
  • supersedespublic.commentary_validated_rules(id)
Translittération6 tables

public.transliteration_aliases

Variantes populaires (Abdallah, Abdullah, Abdoullah...) permettant de RETROUVER un canon du lexique. Ne determinent jamais la forme publiee : AFFICHAGE CANONIQUE STRICT != RECHERCHE TOLERANTE. Plusieurs alias d'une meme entree peuvent partager le meme alias_normalized (convergence volontaire, voir normalize_translit).

Clé primaire
id
Clés étrangères
  • lexicon_entry_idpublic.transliteration_lexicon(id)

public.transliteration_dry_run_runs

Une ligne par execution du dry-run de transliteration (scripts/validation/transliteration-dry-run.mjs). Aucun narrateur n'est modifie par ce dry-run : voir transliteration_narrator_proposals pour le detail.

Clé primaire
id
Clés étrangères
  • standard_idpublic.transliteration_standards(id)

public.transliteration_lexicon

Composants nominaux arabes -> forme latine canonique publiee (RUWAT-FR-TRANSLIT-V1). Seuls APPROVED/OVERRIDDEN font autorite pour l'affichage public (voir public_transliteration_lexicon). Ne represente jamais une identite de personne : plusieurs narrateurs partagent le meme composant.

Clé primaire
id
Clés étrangères
  • dataset_idpublic.datasets(id)
  • source_idpublic.data_sources(id)
  • standard_idpublic.transliteration_standards(id)

public.transliteration_narrator_proposals

Detail par narrateur d'un dry-run : audit structurel de la forme ACTUELLE (current_*) + proposition de canon (proposed_*). Jamais applique automatiquement a narrators.full_name_fr — voir CRITICAL INVARIANT dans la doc du standard.

Clé primaire
id
Clés étrangères
  • narrator_idpublic.narrators(id)
  • run_idpublic.transliteration_dry_run_runs(id)

public.transliteration_standards

Norme editoriale/technique versionnee pour les formes latines/francaises des narrateurs (RUWAT-FR-TRANSLIT-V1). Une future revision majeure devient une nouvelle ligne (V2), sans effacer V1.

Clé primaire
id
Clés étrangères
Aucune clé étrangère.

public.transliteration_stopwords

Tokens non-nominaux reconnus par le compositeur (section 4/24/25 du standard) : SKIP = ignore et continue (ponctuation/conjonction de liaison), STOP = arrete la composition du canon (marqueur editorial/de parente introduisant une clause differente, jamais absorbe dans le nom).

Clé primaire
id
Clés étrangères
  • standard_idpublic.transliteration_standards(id)
Ingestion et provenance4 tables

public.data_sources

Source documentaire ou technique. Une source technique immédiate ne vaut pas provenance bibliographique établie.

Clé primaire
id
Clés étrangères
Aucune clé étrangère.

public.datasets

Jeux de données versionnés rattachés à une source technique.

Clé primaire
id
Clés étrangères
  • source_idpublic.data_sources(id)

public.import_batches

Lots d’import d’un jeu de données, utilisés pour la traçabilité et l’idempotence.

Clé primaire
id
Clés étrangères
  • dataset_idpublic.datasets(id)

public.processing_runs

Exécutions versionnées des moteurs et traitements, avec état, paramètres et provenance.

Clé primaire
id
Clés étrangères
  • dataset_idpublic.datasets(id)
  • import_batch_id + dataset_idpublic.import_batches(id + dataset_id)
Qualité3 tables

public.data_quality_snapshots

Photographies datées des indicateurs de qualité des données.

Clé primaire
id
Clés étrangères
Aucune clé étrangère.

public.quality_decisions

Trace d audit append-only du Quality Engine (16A.3). "Decision courante" pour une entite/moteur = celle de created_at maximal. Aucune UPDATE/DELETE (trigger deny_update_delete).

Clé primaire
id
Clés étrangères
  • processing_run_idpublic.processing_runs(id)

public.quality_engine_state

Etat incremental du Quality Engine (16A.3). Mutable (upsert). Une entite est "dirty" si elle n a pas de ligne ici, ou si son input_hash courant differe, ou si engine_version differe.

Clé primaire
entity_type + entity_id + engine
Clés étrangères
  • last_run_idpublic.processing_runs(id)
Accès1 table

public.admins

Comptes Supabase Auth autorises a approuver/rejeter les demandes de narrator_resolution_feedback. Aucune ecriture publique.

Clé primaire
user_id
Clés étrangères
Aucune clé étrangère.
Laboratoires3 tables

labs.hadithrank_grade_fidelity

Correspondance grade critique (public.narrators.grade_tier) -> fidelite HadithRank. Modifiable sans toucher au metier.

Clé primaire
grade_tier
Clés étrangères
Aucune clé étrangère.

labs.hadithrank_narrator_override

Fidelite HadithRank fixee a la main pour un narrateur (id = public.narrators.id), avec citation du jarh. Prioritaire sur le bareme par grade.

Clé primaire
narrator_id
Clés étrangères
Aucune clé étrangère.

labs.hadithrank_run

Trace d'un calcul HadithRank : parametres, chaines d'entree, arbre annote, score. hadith_id nullable (mode texte libre).

Clé primaire
id
Clés étrangères
Aucune clé étrangère.

Description de toutes les fonctions

API, navigation et recherche6 fonctions

public.dashboard_collection_distribution

function

Alimente le tableau de bord : collection distribution.

Signature
public.dashboard_collection_distribution(limit_n integer)
Retour
TABLE(collection_id bigint, code text, name_fr text, name_ar text, narrator_count bigint)
Langage
sql

public.dashboard_generation_distribution

function

Alimente le tableau de bord : generation distribution.

Signature
public.dashboard_generation_distribution()
Retour
TABLE(generation_rank text, narrator_count bigint)
Langage
sql

public.dashboard_grade_distribution

function

Alimente le tableau de bord : grade distribution.

Signature
public.dashboard_grade_distribution()
Retour
TABLE(grade_tier text, narrator_count bigint)
Langage
sql

public.dashboard_region_distribution

function

Alimente le tableau de bord : region distribution.

Signature
public.dashboard_region_distribution(limit_n integer)
Retour
TABLE(region_ar text, region_fr text, narrator_count bigint)
Langage
sql

public.dashboard_top_connected

function

Alimente le tableau de bord : top connected.

Signature
public.dashboard_top_connected(limit_n integer)
Retour
TABLE(id bigint, full_name_ar text, full_name_fr text, affiliation_ar text, affiliation_fr text, kunya_ar text, kunya_fr text, qualifier_ar text, qualifier_fr text, grade_tier text, region_fr text, canonical_fr text, canonical_coverage_status text, canonical_structurally_valid boolean, connections bigint)
Langage
sql

public.dashboard_totals

function

Alimente le tableau de bord : totals.

Signature
public.dashboard_totals()
Retour
TABLE(total_narrators bigint, with_region bigint, with_grade bigint, strong_count bigint, weak_count bigint, total_transmissions bigint, total_collections bigint)
Langage
sql
Hadith et chaînes8 fonctions

public.browse_hadith_index

function

Index public DB-pagine des hadiths : ordre corpus, debut normalise du matn (huruf) ou Compagnon terminal convergent (mujam). Les numeros et source_key restent des donnees documentaires, jamais des cles scientifiques.

Signature
public.browse_hadith_index(p_collection_code text, p_book_id bigint, p_view text, p_letter text, p_query text, p_limit integer, p_offset integer)
Retour
jsonb
Langage
sql

public.extract_hadith_index_matn

function

Extrait d affichage non destructif : sous-chaine exacte apres le rapporteur terminal et, lorsqu elle est explicitement presente, apres la borne de parole du Prophete. Repli conservateur sur le texte source.

Signature
public.extract_hadith_index_matn(p_text_ar text, p_terminal_mention_ar text)
Retour
text
Langage
plpgsql

public.find_chain_edges

function

Routine PostgreSQL « find chain edges » propre à la plateforme.

Signature
public.find_chain_edges(candidate_ids bigint[])
Retour
TABLE(teacher_id bigint, student_id bigint, confidence_level text)
Langage
sql

public.get_narrator_hadith_occurrences

function

Occurrences relationnelles certaines d’un narrateur ISNAD dans le corpus, paginées avec leur chaîne et provenance.

Signature
public.get_narrator_hadith_occurrences(p_narrator_id bigint, p_page integer, p_limit integer)
Retour
jsonb
Langage
sql

public.labs_hadithrank_grade_fidelity

function

Pont lecture seule vers labs.hadithrank_grade_fidelity (laboratoire HadithRank).

Signature
public.labs_hadithrank_grade_fidelity()
Retour
SETOF labs.hadithrank_grade_fidelity
Langage
sql

public.labs_hadithrank_hadith_chains

function

Laboratoire HadithRank : chaines d'un hadith (public.hadith_chains/nodes/narrators) + fidelite override eventuelle. Lecture seule.

Signature
public.labs_hadithrank_hadith_chains(p_hadith_id bigint)
Retour
TABLE(chain_id bigint, chain_number integer, "position" integer, narrator_id bigint, mention text, grade_tier text, override_fidelity real)
Langage
sql

public.labs_hadithrank_narrator_overrides

function

Pont lecture seule vers labs.hadithrank_narrator_override (laboratoire HadithRank).

Signature
public.labs_hadithrank_narrator_overrides()
Retour
SETOF labs.hadithrank_narrator_override
Langage
sql

public.search_hadiths_arabic

function

Arabic lexical hadith matn search (12A v1). Tiered: exact substring on normalized_text_ar -> full-text (arabic ts_config, websearch_to_tsquery) -> trigram word_similarity fuzzy fallback on normalized_text_ar, each lower tier gated to skip once higher tiers already cover p_limit results. Returns match_tier + score so callers/benchmarks can see which tier matched. SECURITY INVOKER: relies on the existing public SELECT-only RLS policy on hadiths/chapters/books. text_fr is not searched (0% populated corpus-wide, see audit).

Signature
public.search_hadiths_arabic(p_query text, p_collection_id bigint, p_limit integer)
Retour
TABLE(id bigint, source_key text, collection_id bigint, chapter_id bigint, hadith_number integer, text_ar text, match_tier text, score real)
Langage
sql
Narrateurs, assertions et réconciliation16 fonctions

public.apply_crosswalk_decision

function

Applique crosswalk decision selon les règles de gouvernance.

Signature
public.apply_crosswalk_decision(p_external_narrator_ref_id bigint, p_status text, p_ruwat_narrator_id bigint, p_method text, p_reasons jsonb, p_processing_run_id uuid, p_decision_origin text, p_decision_reason text)
Retour
uuid
Langage
plpgsql

public.browse_narrator_dictionary

function

Parcourt narrator dictionary avec pagination et filtres.

Signature
public.browse_narrator_dictionary(p_initial text, p_limit integer, p_offset integer, filter_grade_tier text, filter_region_ar text, filter_generation text)
Retour
TABLE(id bigint, full_name_ar text, full_name_fr text, affiliation_ar text, affiliation_fr text, kunya_ar text, kunya_fr text, qualifier_ar text, qualifier_fr text, grade_ar text, grade_fr text, grade_tier text, region_ar text, region_fr text, generation_rank text, canonical_fr text, canonical_coverage_status text, canonical_structurally_valid boolean, total_count bigint)
Langage
sql

public.protect_crosswalk_projection

function

Déclencheur qui protège crosswalk projection contre une modification non autorisée.

Signature
public.protect_crosswalk_projection()
Retour
trigger
Langage
plpgsql

public.protect_narrator_assertion_observation

function

Déclencheur qui protège narrator assertion observation contre une modification non autorisée.

Signature
public.protect_narrator_assertion_observation()
Retour
trigger
Langage
plpgsql

public.review_narrator_assertion

function

Enregistre une décision de revue pour narrator assertion.

Signature
public.review_narrator_assertion(p_assertion_id uuid, p_canonical_status assertion_canonical_status, p_notes text)
Retour
void
Langage
plpgsql

public.review_resolution_feedback

function

Enregistre une décision de revue pour resolution feedback.

Signature
public.review_resolution_feedback(p_feedback_id bigint, p_decision text, p_review_comment text, p_admin_decision text)
Retour
narrator_resolution_feedback
Langage
plpgsql

public.search_narrator_candidates

function

Recherche narrator candidates.

Signature
public.search_narrator_candidates(query text, match_limit integer, filter_grade_tier text, filter_region_ar text, filter_generation text)
Retour
TABLE(id bigint, full_name_ar text, full_name_fr text, normalized_name_ar text, grade_ar text, grade_fr text, grade_tier text, region_ar text, region_fr text, generation_rank text, death_info_ar text, score real, match_tier text, connections integer, matched_form text, matched_form_type text, canonical_fr text, canonical_coverage_status text, canonical_structurally_valid boolean)
Langage
sql

public.search_narrator_candidates_translit

function

Recherche narrator candidates translit.

Signature
public.search_narrator_candidates_translit(query text, match_limit integer, filter_grade_tier text, filter_region_ar text, filter_generation text)
Retour
TABLE(id bigint, full_name_ar text, full_name_fr text, normalized_name_ar text, grade_ar text, grade_fr text, grade_tier text, region_ar text, region_fr text, generation_rank text, death_info_ar text, score real, match_tier text, connections integer, matched_form text, matched_form_type text)
Langage
sql

public.search_narrators

function

Recherche narrators.

Signature
public.search_narrators(query text, match_limit integer, filter_grade_tier text, filter_region_ar text, filter_generation text)
Retour
TABLE(id bigint, full_name_ar text, full_name_fr text, normalized_name_ar text, grade_ar text, grade_fr text, grade_tier text, region_ar text, region_fr text, generation_rank text, death_info_ar text, score real, match_tier text, connections integer, canonical_fr text, canonical_coverage_status text, canonical_structurally_valid boolean)
Langage
sql

public.search_narrators_translit

function

Recherche narrators translit.

Signature
public.search_narrators_translit(query text, match_limit integer, filter_grade_tier text, filter_region_ar text, filter_generation text)
Retour
TABLE(id bigint, full_name_ar text, full_name_fr text, normalized_name_ar text, grade_ar text, grade_fr text, grade_tier text, region_ar text, region_fr text, generation_rank text, death_info_ar text, score real, match_tier text, connections integer, canonical_fr text, canonical_coverage_status text, canonical_structurally_valid boolean)
Langage
sql

public.validate_assertion_supersession

function

Déclencheur qui valide assertion supersession avant écriture.

Signature
public.validate_assertion_supersession()
Retour
trigger
Langage
plpgsql

public.validate_data_conflict

function

Déclencheur qui valide data conflict avant écriture.

Signature
public.validate_data_conflict()
Retour
trigger
Langage
plpgsql

public.validate_decision_assertion

function

Déclencheur qui valide decision assertion avant écriture.

Signature
public.validate_decision_assertion()
Retour
trigger
Langage
plpgsql

public.validate_decision_cardinality

function

Déclencheur qui valide decision cardinality avant écriture.

Signature
public.validate_decision_cardinality()
Retour
trigger
Langage
plpgsql

public.validate_decision_supersession

function

Déclencheur qui valide decision supersession avant écriture.

Signature
public.validate_decision_supersession()
Retour
trigger
Langage
plpgsql

public.validate_narrator_assertion_value

function

Déclencheur qui valide narrator assertion value avant écriture.

Signature
public.validate_narrator_assertion_value()
Retour
trigger
Langage
plpgsql
Commentaires9 fonctions

public.validate_commentary_alignment_supersession

function

Déclencheur qui valide commentary alignment supersession avant écriture.

Signature
public.validate_commentary_alignment_supersession()
Retour
trigger
Langage
plpgsql

public.validate_commentary_document_supersession

function

Déclencheur qui valide commentary document supersession avant écriture.

Signature
public.validate_commentary_document_supersession()
Retour
trigger
Langage
plpgsql

public.validate_commentary_multiple_target_cardinality

function

Déclencheur qui valide commentary multiple target cardinality avant écriture.

Signature
public.validate_commentary_multiple_target_cardinality()
Retour
trigger
Langage
plpgsql

public.validate_commentary_passage_group

function

Déclencheur qui valide commentary passage group avant écriture.

Signature
public.validate_commentary_passage_group()
Retour
trigger
Langage
plpgsql

public.validate_commentary_passage_supersession

function

Déclencheur qui valide commentary passage supersession avant écriture.

Signature
public.validate_commentary_passage_supersession()
Retour
trigger
Langage
plpgsql

public.validate_commentary_target_hadith_type

function

Déclencheur qui valide commentary target hadith type avant écriture.

Signature
public.validate_commentary_target_hadith_type()
Retour
trigger
Langage
plpgsql

public.validate_commentary_translation_supersession

function

Déclencheur qui valide commentary translation supersession avant écriture.

Signature
public.validate_commentary_translation_supersession()
Retour
trigger
Langage
plpgsql

public.validate_commentary_validated_rule_evidence

function

Déclencheur qui valide commentary validated rule evidence avant écriture.

Signature
public.validate_commentary_validated_rule_evidence()
Retour
trigger
Langage
plpgsql

public.validate_commentary_validated_rule_supersession

function

Déclencheur qui valide commentary validated rule supersession avant écriture.

Signature
public.validate_commentary_validated_rule_supersession()
Retour
trigger
Langage
plpgsql
Arabe et translittération13 fonctions

public.append_transliteration_dry_run_proposals

function

Ajoute transliteration dry run proposals au journal concerné.

Signature
public.append_transliteration_dry_run_proposals(p_run_id bigint, p_proposals jsonb)
Retour
integer
Langage
plpgsql

public.arabic_initial

function

Routine PostgreSQL « arabic initial » propre à la plateforme.

Signature
public.arabic_initial(text)
Retour
text
Langage
sql

public.batch_approve_transliteration_lexicon

function

Routine PostgreSQL « batch approve transliteration lexicon » propre à la plateforme.

Signature
public.batch_approve_transliteration_lexicon(p_lexicon_ids bigint[], p_notes text)
Retour
integer
Langage
plpgsql

public.compute_transliteration_quality_metrics

function

Calcule transliteration quality metrics.

Signature
public.compute_transliteration_quality_metrics()
Retour
jsonb
Langage
sql

public.get_admin_transliteration_impact_queue

function

Retourne admin transliteration impact queue.

Signature
public.get_admin_transliteration_impact_queue(p_limit integer)
Retour
jsonb
Langage
plpgsql

public.get_admin_transliteration_quality

function

Retourne admin transliteration quality.

Signature
public.get_admin_transliteration_quality(p_coverage_status text, p_limit integer)
Retour
jsonb
Langage
plpgsql

public.get_public_transliteration_stats

function

Retourne public transliteration stats.

Signature
public.get_public_transliteration_stats()
Retour
jsonb
Langage
sql

public.normalize_ar_matn

function

Generic Arabic matn normalization for hadiths.text_ar: trim, strip tashkeel diacritics, decode/strip HTML entities, canonicalize hamza/alif-maqsura/ta-marbuta orthographic variants, collapse punctuation/whitespace. Deliberately excludes the narrator-specific transforms in normalize_ar_query() (ابن->بن fold, ابا/ابي->ابو kunya fold, honorific-phrase stripping) which would corrupt matn text. IMMUTABLE: feeds a stored generated column on hadiths.

Signature
public.normalize_ar_matn(input text)
Retour
text
Langage
plpgsql

public.normalize_ar_query

function

Normalisation arabe canonique (hamza, ta marbuta, alif maqsura, ابن/بن, cas grammaticaux de abu, honorifiques) appliquée à la fois à la requête et à normalized_name_ar, pour garantir une comparaison cohérente.

Signature
public.normalize_ar_query(input text)
Retour
text
Langage
plpgsql

public.record_transliteration_dry_run

function

Enregistre transliteration dry run avec sa traçabilité.

Signature
public.record_transliteration_dry_run(p_standard_code text, p_git_commit text, p_resolver_version text, p_summary jsonb, p_proposals jsonb)
Retour
jsonb
Langage
plpgsql

public.set_transliteration_lexicon_review_status

function

Définit transliteration lexicon review status.

Signature
public.set_transliteration_lexicon_review_status(p_lexicon_id bigint, p_review_status text, p_notes text)
Retour
transliteration_lexicon
Langage
plpgsql

public.start_transliteration_dry_run

function

Démarre et trace transliteration dry run.

Signature
public.start_transliteration_dry_run(p_standard_code text, p_git_commit text, p_resolver_version text, p_summary jsonb)
Retour
bigint
Langage
plpgsql

public.validate_name_structure

function

Miroir SQL de validateNameStructure (src/domain/narrator-identity/nominalTransliteration.ts). Utilise par le dry-run de dechet structurel des 8862 narrateurs et disponible pour une future validation cote UI sans aller-retour Node.

Signature
public.validate_name_structure(value text)
Retour
jsonb
Langage
plpgsql
Qualité des données5 fonctions

public.compute_data_quality_metrics

function

Calcule data quality metrics.

Signature
public.compute_data_quality_metrics()
Retour
jsonb
Langage
sql

public.create_data_quality_snapshot

function

Crée data quality snapshot.

Signature
public.create_data_quality_snapshot(p_git_commit text, p_resolver_version text)
Retour
jsonb
Langage
plpgsql

public.get_admin_data_quality

function

Retourne admin data quality.

Signature
public.get_admin_data_quality(p_status text, p_limit integer)
Retour
jsonb
Langage
plpgsql

public.get_public_quality_statistics

function

Retourne public quality statistics.

Signature
public.get_public_quality_statistics()
Retour
jsonb
Langage
sql

public.validate_quality_run

function

Déclencheur qui valide quality run avant écriture.

Signature
public.validate_quality_run()
Retour
trigger
Langage
plpgsql
Intégrité et déclencheurs4 fonctions

public.deny_update_delete

function

Déclencheur qui interdit update delete.

Signature
public.deny_update_delete()
Retour
trigger
Langage
plpgsql

public.protect_terminal_processing_run

function

Déclencheur qui protège terminal processing run contre une modification non autorisée.

Signature
public.protect_terminal_processing_run()
Retour
trigger
Langage
plpgsql

public.set_updated_at

function

Déclencheur d’intégrité pour set updated at.

Signature
public.set_updated_at()
Retour
trigger
Langage
plpgsql

public.validate_effective_canonical_cardinality

function

Déclencheur qui valide effective canonical cardinality avant écriture.

Signature
public.validate_effective_canonical_cardinality()
Retour
trigger
Langage
plpgsql
Utilitaires de la plateforme4 fonctions

public.compute_night_shift_provenance_metrics

function

Calcule night shift provenance metrics.

Signature
public.compute_night_shift_provenance_metrics()
Retour
jsonb
Langage
plpgsql

public.immutable_unaccent

function

Routine PostgreSQL « immutable unaccent » propre à la plateforme.

Signature
public.immutable_unaccent(text)
Retour
text
Langage
sql

public.is_admin

function

Indique si admin.

Signature
public.is_admin()
Retour
boolean
Langage
sql

public.normalize_translit

function

Squelette consonantique translittération-insensible (fr/en) utilisé pour retrouver un narrateur à partir d'un isnad collé en anglais ou en français.

Signature
public.normalize_translit(input text)
Retour
text
Langage
plpgsql
Extensions PostgreSQL153 fonctions

public.array_to_halfvec

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.array_to_halfvec(double precision[], integer, boolean)
Retour
halfvec
Extension
vector

public.array_to_halfvec

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.array_to_halfvec(integer[], integer, boolean)
Retour
halfvec
Extension
vector

public.array_to_halfvec

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.array_to_halfvec(numeric[], integer, boolean)
Retour
halfvec
Extension
vector

public.array_to_halfvec

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.array_to_halfvec(real[], integer, boolean)
Retour
halfvec
Extension
vector

public.array_to_sparsevec

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.array_to_sparsevec(double precision[], integer, boolean)
Retour
sparsevec
Extension
vector

public.array_to_sparsevec

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.array_to_sparsevec(integer[], integer, boolean)
Retour
sparsevec
Extension
vector

public.array_to_sparsevec

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.array_to_sparsevec(numeric[], integer, boolean)
Retour
sparsevec
Extension
vector

public.array_to_sparsevec

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.array_to_sparsevec(real[], integer, boolean)
Retour
sparsevec
Extension
vector

public.array_to_vector

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.array_to_vector(double precision[], integer, boolean)
Retour
vector
Extension
vector

public.array_to_vector

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.array_to_vector(integer[], integer, boolean)
Retour
vector
Extension
vector

public.array_to_vector

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.array_to_vector(numeric[], integer, boolean)
Retour
vector
Extension
vector

public.array_to_vector

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.array_to_vector(real[], integer, boolean)
Retour
vector
Extension
vector

public.avg

aggregate

Routine fournie par l’extension PostgreSQL vector.

Signature
public.avg(halfvec)
Retour
halfvec
Extension
vector

public.avg

aggregate

Routine fournie par l’extension PostgreSQL vector.

Signature
public.avg(vector)
Retour
vector
Extension
vector

public.binary_quantize

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.binary_quantize(halfvec)
Retour
bit
Extension
vector

public.binary_quantize

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.binary_quantize(vector)
Retour
bit
Extension
vector

public.cosine_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.cosine_distance(halfvec, halfvec)
Retour
double precision
Extension
vector

public.cosine_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.cosine_distance(sparsevec, sparsevec)
Retour
double precision
Extension
vector

public.cosine_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.cosine_distance(vector, vector)
Retour
double precision
Extension
vector

public.gin_extract_query_trgm

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gin_extract_query_trgm(text, internal, smallint, internal, internal, internal, internal)
Retour
internal
Extension
pg_trgm

public.gin_extract_value_trgm

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gin_extract_value_trgm(text, internal)
Retour
internal
Extension
pg_trgm

public.gin_trgm_consistent

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gin_trgm_consistent(internal, smallint, text, integer, internal, internal, internal, internal)
Retour
boolean
Extension
pg_trgm

public.gin_trgm_triconsistent

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gin_trgm_triconsistent(internal, smallint, text, integer, internal, internal, internal)
Retour
"char"
Extension
pg_trgm

public.gtrgm_compress

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gtrgm_compress(internal)
Retour
internal
Extension
pg_trgm

public.gtrgm_consistent

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gtrgm_consistent(internal, text, smallint, oid, internal)
Retour
boolean
Extension
pg_trgm

public.gtrgm_decompress

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gtrgm_decompress(internal)
Retour
internal
Extension
pg_trgm

public.gtrgm_distance

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gtrgm_distance(internal, text, smallint, oid, internal)
Retour
double precision
Extension
pg_trgm

public.gtrgm_in

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gtrgm_in(cstring)
Retour
gtrgm
Extension
pg_trgm

public.gtrgm_options

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gtrgm_options(internal)
Retour
void
Extension
pg_trgm

public.gtrgm_out

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gtrgm_out(gtrgm)
Retour
cstring
Extension
pg_trgm

public.gtrgm_penalty

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gtrgm_penalty(internal, internal, internal)
Retour
internal
Extension
pg_trgm

public.gtrgm_picksplit

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gtrgm_picksplit(internal, internal)
Retour
internal
Extension
pg_trgm

public.gtrgm_same

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gtrgm_same(gtrgm, gtrgm, internal)
Retour
internal
Extension
pg_trgm

public.gtrgm_union

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.gtrgm_union(internal, internal)
Retour
gtrgm
Extension
pg_trgm

public.halfvec

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec(halfvec, integer, boolean)
Retour
halfvec
Extension
vector

public.halfvec_accum

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_accum(double precision[], halfvec)
Retour
double precision[]
Extension
vector

public.halfvec_add

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_add(halfvec, halfvec)
Retour
halfvec
Extension
vector

public.halfvec_avg

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_avg(double precision[])
Retour
halfvec
Extension
vector

public.halfvec_cmp

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_cmp(halfvec, halfvec)
Retour
integer
Extension
vector

public.halfvec_combine

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_combine(double precision[], double precision[])
Retour
double precision[]
Extension
vector

public.halfvec_concat

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_concat(halfvec, halfvec)
Retour
halfvec
Extension
vector

public.halfvec_eq

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_eq(halfvec, halfvec)
Retour
boolean
Extension
vector

public.halfvec_ge

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_ge(halfvec, halfvec)
Retour
boolean
Extension
vector

public.halfvec_gt

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_gt(halfvec, halfvec)
Retour
boolean
Extension
vector

public.halfvec_in

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_in(cstring, oid, integer)
Retour
halfvec
Extension
vector

public.halfvec_l2_squared_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_l2_squared_distance(halfvec, halfvec)
Retour
double precision
Extension
vector

public.halfvec_le

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_le(halfvec, halfvec)
Retour
boolean
Extension
vector

public.halfvec_lt

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_lt(halfvec, halfvec)
Retour
boolean
Extension
vector

public.halfvec_mul

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_mul(halfvec, halfvec)
Retour
halfvec
Extension
vector

public.halfvec_ne

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_ne(halfvec, halfvec)
Retour
boolean
Extension
vector

public.halfvec_negative_inner_product

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_negative_inner_product(halfvec, halfvec)
Retour
double precision
Extension
vector

public.halfvec_out

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_out(halfvec)
Retour
cstring
Extension
vector

public.halfvec_recv

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_recv(internal, oid, integer)
Retour
halfvec
Extension
vector

public.halfvec_send

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_send(halfvec)
Retour
bytea
Extension
vector

public.halfvec_spherical_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_spherical_distance(halfvec, halfvec)
Retour
double precision
Extension
vector

public.halfvec_sub

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_sub(halfvec, halfvec)
Retour
halfvec
Extension
vector

public.halfvec_to_float4

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_to_float4(halfvec, integer, boolean)
Retour
real[]
Extension
vector

public.halfvec_to_sparsevec

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_to_sparsevec(halfvec, integer, boolean)
Retour
sparsevec
Extension
vector

public.halfvec_to_vector

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_to_vector(halfvec, integer, boolean)
Retour
vector
Extension
vector

public.halfvec_typmod_in

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.halfvec_typmod_in(cstring[])
Retour
integer
Extension
vector

public.hamming_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.hamming_distance(bit, bit)
Retour
double precision
Extension
vector

public.hnsw_bit_support

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.hnsw_bit_support(internal)
Retour
internal
Extension
vector

public.hnsw_halfvec_support

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.hnsw_halfvec_support(internal)
Retour
internal
Extension
vector

public.hnsw_sparsevec_support

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.hnsw_sparsevec_support(internal)
Retour
internal
Extension
vector

public.hnswhandler

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.hnswhandler(internal)
Retour
index_am_handler
Extension
vector

public.inner_product

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.inner_product(halfvec, halfvec)
Retour
double precision
Extension
vector

public.inner_product

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.inner_product(sparsevec, sparsevec)
Retour
double precision
Extension
vector

public.inner_product

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.inner_product(vector, vector)
Retour
double precision
Extension
vector

public.ivfflat_bit_support

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.ivfflat_bit_support(internal)
Retour
internal
Extension
vector

public.ivfflat_halfvec_support

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.ivfflat_halfvec_support(internal)
Retour
internal
Extension
vector

public.ivfflathandler

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.ivfflathandler(internal)
Retour
index_am_handler
Extension
vector

public.jaccard_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.jaccard_distance(bit, bit)
Retour
double precision
Extension
vector

public.l1_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.l1_distance(halfvec, halfvec)
Retour
double precision
Extension
vector

public.l1_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.l1_distance(sparsevec, sparsevec)
Retour
double precision
Extension
vector

public.l1_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.l1_distance(vector, vector)
Retour
double precision
Extension
vector

public.l2_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.l2_distance(halfvec, halfvec)
Retour
double precision
Extension
vector

public.l2_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.l2_distance(sparsevec, sparsevec)
Retour
double precision
Extension
vector

public.l2_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.l2_distance(vector, vector)
Retour
double precision
Extension
vector

public.l2_norm

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.l2_norm(halfvec)
Retour
double precision
Extension
vector

public.l2_norm

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.l2_norm(sparsevec)
Retour
double precision
Extension
vector

public.l2_normalize

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.l2_normalize(halfvec)
Retour
halfvec
Extension
vector

public.l2_normalize

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.l2_normalize(sparsevec)
Retour
sparsevec
Extension
vector

public.l2_normalize

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.l2_normalize(vector)
Retour
vector
Extension
vector

public.set_limit

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.set_limit(real)
Retour
real
Extension
pg_trgm

public.show_limit

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.show_limit()
Retour
real
Extension
pg_trgm

public.show_trgm

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.show_trgm(text)
Retour
text[]
Extension
pg_trgm

public.similarity

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.similarity(text, text)
Retour
real
Extension
pg_trgm

public.similarity_dist

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.similarity_dist(text, text)
Retour
real
Extension
pg_trgm

public.similarity_op

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.similarity_op(text, text)
Retour
boolean
Extension
pg_trgm

public.sparsevec

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec(sparsevec, integer, boolean)
Retour
sparsevec
Extension
vector

public.sparsevec_cmp

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_cmp(sparsevec, sparsevec)
Retour
integer
Extension
vector

public.sparsevec_eq

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_eq(sparsevec, sparsevec)
Retour
boolean
Extension
vector

public.sparsevec_ge

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_ge(sparsevec, sparsevec)
Retour
boolean
Extension
vector

public.sparsevec_gt

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_gt(sparsevec, sparsevec)
Retour
boolean
Extension
vector

public.sparsevec_in

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_in(cstring, oid, integer)
Retour
sparsevec
Extension
vector

public.sparsevec_l2_squared_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_l2_squared_distance(sparsevec, sparsevec)
Retour
double precision
Extension
vector

public.sparsevec_le

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_le(sparsevec, sparsevec)
Retour
boolean
Extension
vector

public.sparsevec_lt

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_lt(sparsevec, sparsevec)
Retour
boolean
Extension
vector

public.sparsevec_ne

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_ne(sparsevec, sparsevec)
Retour
boolean
Extension
vector

public.sparsevec_negative_inner_product

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_negative_inner_product(sparsevec, sparsevec)
Retour
double precision
Extension
vector

public.sparsevec_out

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_out(sparsevec)
Retour
cstring
Extension
vector

public.sparsevec_recv

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_recv(internal, oid, integer)
Retour
sparsevec
Extension
vector

public.sparsevec_send

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_send(sparsevec)
Retour
bytea
Extension
vector

public.sparsevec_to_halfvec

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_to_halfvec(sparsevec, integer, boolean)
Retour
halfvec
Extension
vector

public.sparsevec_to_vector

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_to_vector(sparsevec, integer, boolean)
Retour
vector
Extension
vector

public.sparsevec_typmod_in

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sparsevec_typmod_in(cstring[])
Retour
integer
Extension
vector

public.strict_word_similarity

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.strict_word_similarity(text, text)
Retour
real
Extension
pg_trgm

public.strict_word_similarity_commutator_op

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.strict_word_similarity_commutator_op(text, text)
Retour
boolean
Extension
pg_trgm

public.strict_word_similarity_dist_commutator_op

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.strict_word_similarity_dist_commutator_op(text, text)
Retour
real
Extension
pg_trgm

public.strict_word_similarity_dist_op

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.strict_word_similarity_dist_op(text, text)
Retour
real
Extension
pg_trgm

public.strict_word_similarity_op

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.strict_word_similarity_op(text, text)
Retour
boolean
Extension
pg_trgm

public.subvector

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.subvector(halfvec, integer, integer)
Retour
halfvec
Extension
vector

public.subvector

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.subvector(vector, integer, integer)
Retour
vector
Extension
vector

public.sum

aggregate

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sum(halfvec)
Retour
halfvec
Extension
vector

public.sum

aggregate

Routine fournie par l’extension PostgreSQL vector.

Signature
public.sum(vector)
Retour
vector
Extension
vector

public.unaccent

function

Routine fournie par l’extension PostgreSQL unaccent.

Signature
public.unaccent(regdictionary, text)
Retour
text
Extension
unaccent

public.unaccent

function

Routine fournie par l’extension PostgreSQL unaccent.

Signature
public.unaccent(text)
Retour
text
Extension
unaccent

public.unaccent_init

function

Routine fournie par l’extension PostgreSQL unaccent.

Signature
public.unaccent_init(internal)
Retour
internal
Extension
unaccent

public.unaccent_lexize

function

Routine fournie par l’extension PostgreSQL unaccent.

Signature
public.unaccent_lexize(internal, internal, internal, internal)
Retour
internal
Extension
unaccent

public.vector

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector(vector, integer, boolean)
Retour
vector
Extension
vector

public.vector_accum

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_accum(double precision[], vector)
Retour
double precision[]
Extension
vector

public.vector_add

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_add(vector, vector)
Retour
vector
Extension
vector

public.vector_avg

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_avg(double precision[])
Retour
vector
Extension
vector

public.vector_cmp

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_cmp(vector, vector)
Retour
integer
Extension
vector

public.vector_combine

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_combine(double precision[], double precision[])
Retour
double precision[]
Extension
vector

public.vector_concat

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_concat(vector, vector)
Retour
vector
Extension
vector

public.vector_dims

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_dims(halfvec)
Retour
integer
Extension
vector

public.vector_dims

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_dims(vector)
Retour
integer
Extension
vector

public.vector_eq

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_eq(vector, vector)
Retour
boolean
Extension
vector

public.vector_ge

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_ge(vector, vector)
Retour
boolean
Extension
vector

public.vector_gt

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_gt(vector, vector)
Retour
boolean
Extension
vector

public.vector_in

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_in(cstring, oid, integer)
Retour
vector
Extension
vector

public.vector_l2_squared_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_l2_squared_distance(vector, vector)
Retour
double precision
Extension
vector

public.vector_le

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_le(vector, vector)
Retour
boolean
Extension
vector

public.vector_lt

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_lt(vector, vector)
Retour
boolean
Extension
vector

public.vector_mul

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_mul(vector, vector)
Retour
vector
Extension
vector

public.vector_ne

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_ne(vector, vector)
Retour
boolean
Extension
vector

public.vector_negative_inner_product

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_negative_inner_product(vector, vector)
Retour
double precision
Extension
vector

public.vector_norm

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_norm(vector)
Retour
double precision
Extension
vector

public.vector_out

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_out(vector)
Retour
cstring
Extension
vector

public.vector_recv

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_recv(internal, oid, integer)
Retour
vector
Extension
vector

public.vector_send

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_send(vector)
Retour
bytea
Extension
vector

public.vector_spherical_distance

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_spherical_distance(vector, vector)
Retour
double precision
Extension
vector

public.vector_sub

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_sub(vector, vector)
Retour
vector
Extension
vector

public.vector_to_float4

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_to_float4(vector, integer, boolean)
Retour
real[]
Extension
vector

public.vector_to_halfvec

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_to_halfvec(vector, integer, boolean)
Retour
halfvec
Extension
vector

public.vector_to_sparsevec

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_to_sparsevec(vector, integer, boolean)
Retour
sparsevec
Extension
vector

public.vector_typmod_in

function

Routine fournie par l’extension PostgreSQL vector.

Signature
public.vector_typmod_in(cstring[])
Retour
integer
Extension
vector

public.word_similarity

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.word_similarity(text, text)
Retour
real
Extension
pg_trgm

public.word_similarity_commutator_op

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.word_similarity_commutator_op(text, text)
Retour
boolean
Extension
pg_trgm

public.word_similarity_dist_commutator_op

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.word_similarity_dist_commutator_op(text, text)
Retour
real
Extension
pg_trgm

public.word_similarity_dist_op

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.word_similarity_dist_op(text, text)
Retour
real
Extension
pg_trgm

public.word_similarity_op

function

Routine fournie par l’extension PostgreSQL pg_trgm.

Signature
public.word_similarity_op(text, text)
Retour
boolean
Extension
pg_trgm

État réel de la chaîne scientifique

Pour chaque couche : ce qui est implémenté, ce qui est alimenté, ce qui n’est encore que candidat, ce qui est confirmé, ce qui est prévu. Les chiffres sont un instantané de la base de production au 2026-09-20. Une candidate n’est pas une confirmation ; l’absence de preuve n’est pas une preuve négative.

État d’alimentation par couche
CoucheImplémentéAlimentéCandidatConfirméPrévu
Sources, éditions, notices (E1–E3)ouiṢaḥīḥ al-Bukhārī, Ṣaḥīḥ Muslim ; notices rijāl (Taqrīb, Tahdhīb, Lisān, Taʿjīl)——Fatḥ al-Bārī (Tahdhīb et Fatḥ hors ingestion nouvelle)
Mentions et identités de narrateurs (E4, E12)oui : mention → candidat d’identité → résolution59 mentions documentaires ; identités persistées : 70 sur le lot piloterésolutions proposées, non appliquées en masseidentités persistées et auditées uniquementextraction rijāl étendue
E5 — traditions et variantesoui (détecteur, relations, décisions)run e5-20260920-a : 12 882 paires produites, dont 7 354 retirées le 2026-09-20 (matn formulaire de moins de 6 mots significatifs, ex. « بمثله » ; archivées, non supprimées) ; 5 528 paires candidates restantes5 528 (dont 4 410 « fortes » : palier technique, pas une confirmation)0relecture humaine d’un échantillon ; indicateurs calculés par l’agent, non indépendants
E6 — thèmesoui (vocabulaire, extraction lexicale)6 thèmes, 8 termes ; 231 occurrences candidates sur 222 hadiths (run e6-20260920-a)231 (155 mot entier, 67 avec préfixe/suffixe arabe plausible, 9 sous-chaînes accidentelles)0ontologie plus large (non entreprise)
E7 — confiance et conflitsoui (évaluations, conflits, décisions)run e7-20260920-a : 3 364 conflits produits par la règle « deux Compagnons terminaux différents », CORRIGÉE le 2026-09-20 (une différence de voies n’est ni une contradiction ni une corroboration indépendante) ; ils ont été retirés par une action système auditée, avec conservation des preuves0 conflit ouvert ; les différences de voies restent des observations dans l’évaluation E50 contradiction établieconflits fondés sur des assertions précisément identifiées (ex. thèmes CONFIRMÉ vs REJETÉ)
E8 — raisonnementoui (contrats, dérivation)14 cas pilotes—conclusions dérivées, jamais éditées à la maindossiers à partir des prémisses admissibles
E9 — dossiers scientifiquesoui (assemblage, versions)12 dossiers pilotes—aucune validation humaine simuléedossiers utiles, sans dossiers vides
E14 — traduction documentaireoui (moteur, revue, anomalies)1 630 notices Taqrīb traduites sur 11 739 (13,89 %)517 anomalies candidates (aucune qualifiée)aucune notice relue par un humainorchestration Démarrer/Pause/Reprendre ; génération soumise à un budget
E15 — requête scientifiqueoui (texte long, pivot arabe borné, quota global)recherche FR/AR et référencespropositions de l’IA = candidats de recherche, jamais des preuves—index de recherche (recommandations non appliquées)
H1 — projection de l’indexoui (vue matérialisée + fraîcheur par preuve : CURRENT / STALE / UNKNOWN)15 125 hadiths———
Fondement scientifique du modèle

La science du hadith possède-t-elle une structure informatique ?

La science du hadith n’est pas une science informatique au sens contemporain. Pourtant, sa méthodologie possède une structure remarquablement compatible avec plusieurs modèles modernes de l’informatique : graphes, résolution d’identité, relations, contraintes chronologiques, provenance des données, comparaison de versions et détection d’anomalies.

L’enjeu d’ISNAD n’est pas de transformer les jugements des muḥaddithūn en un score automatique. Il est de transformer la structure de leur méthodologie en un modèle de données traçable, interrogeable et révisable.

01

L’isnād est naturellement un graphe

Une chaîne comme Mālik → Nāfiʿ → Ibn ʿUmar → Prophète ﷺ peut être représentée par des nœuds et des relations orientées. Lorsque plusieurs voies d’un même hadith sont réunies, on obtient un véritable réseau de transmission.

Narrator A ──transmitted_to──> Narrator B
Narrator B ──transmitted_to──> Narrator C

Cette structure permet d’étudier les bifurcations, convergences, narrateurs communs, branches isolées et relations maître–élève à l’échelle de tout un corpus.

02

Identifier un narrateur est un problème de résolution d’identité

Un même transmetteur peut apparaître sous son nom, sa kunya, sa nisba, son lignage, un surnom ou une forme abrégée. Inversement, plusieurs hommes peuvent porter des noms presque identiques.

Le travail scientifique consiste donc à déterminer si la forme observée dans une source correspond bien à une personne canonique. En informatique, ce problème est proche de l’entity resolution ou du record linkage.

nomkunyanisbatabaqamaîtresélèvesdateslieuxsources
03

Les ouvrages de rijāl sont intrinsèquement relationnels

Un narrateur possède plusieurs maîtres et plusieurs élèves. Plusieurs critiques peuvent l’évaluer. Une même opinion peut être transmise dans plusieurs ouvrages et chaque citation possède sa propre provenance.

Narrator
├── NarratorRelation
├── ScholarAssessment
├── KnowledgeSource
├── Citation
└── Evidence

Cela ne signifie pas que les auteurs classiques pensaient en tables SQL. Cela signifie que leur objet scientifique est, par nature, composé d’entités et de relations.

04

La continuité de la chaîne fonctionne comme un système de contraintes

Deux noms successifs dans un isnād ne suffisent pas à établir une transmission. Il faut examiner la contemporanéité, la possibilité de rencontre, les lieux, les voyages, la relation maître–élève, les termes de transmission et les autres attestations disponibles.

contemporaneite(A, B)
rencontre_possible(A, B)
relation_maitre_eleve(A, B)
compatibilite_geographique(A, B)
mode_transmission(A, B)

L’informatique peut contrôler ces contraintes et signaler une contradiction ou une insuffisance de preuve, sans se substituer au jugement scientifique.

05

Comparer les ṭuruq revient à comparer des structures

La critique du hadith ne porte pas seulement sur une chaîne isolée. Les spécialistes réunissent les différentes voies d’une tradition afin de repérer un narrateur ajouté ou omis, une attribution différente, une rupture ou une variante propre à une branche.

Un système de données peut rechercher automatiquement les chaînes similaires, les nœuds communs, les bifurcations, les convergences et les variantes rares. La machine devient ainsi un instrument d’exploration du corpus.

06

La ʿilla ressemble à un problème de détection d’anomalies

Un hadith peut présenter extérieurement une chaîne correcte tout en contenant un défaut subtil, visible seulement après comparaison avec d’autres élèves, d’autres versions ou les habitudes de transmission d’un narrateur.

C’est précisément le type de phénomène pour lequel l’analyse de données peut être utile : faire ressortir les zones atypiques dans un réseau massif. L’algorithme détecte l’anomalie potentielle ; l’expertise scientifique l’interprète.

07

Le matn peut être traité comme une donnée versionnée

Plusieurs formulations légèrement différentes peuvent appartenir à une même tradition. Elles ne doivent donc pas nécessairement être stockées comme des objets totalement indépendants.

إنما الأعمال بالنيات
الأعمال بالنية
إنما الأعمال بالنية وإنما لكل امرئ ما نوى

La comparaison des segments communs, additions, omissions et substitutions lexicales permet d’étudier la généalogie textuelle du matn et sa relation avec les branches de l’isnād.

08

La science du hadith est une science de la provenance

Une assertion comme « Untel est thiqa » ne doit jamais exister isolément. Il faut pouvoir savoir qui l’a formulée, dans quelle source, à quel endroit, avec quelle expression arabe et par quelle preuve elle est étayée.

ASSERTION · Narrateur X est qualifié de thiqa
AUTEUR · critique identifié
SOURCE · ouvrage / volume / page
PREUVE · citation exacte et contexte

Cette logique correspond directement aux principes de provenance, de data lineage et de traçabilité scientifique sur lesquels repose ISNAD.

Correspondance entre concepts traditionnels et structures informatiques

Science du hadithModélisation informatique
NarrateurEntité
IsnādGraphe
TransmissionRelation orientée
Maître / élèveRelation entre entités
ṬabaqaClassification
Jarḥ wa-taʿdīlAssertions scientifiques
OuvrageSource
CitationProvenance / Evidence
Variantes du matnVersionnement de texte
Comparaison des ṭuruqAnalyse de graphes
Identification d’un narrateurEntity resolution
ʿIlalDétection d’anomalies
Rencontre possibleContrainte temporelle et géographique
Conséquence architecturale

Informatiser la science du hadith ne signifie pas automatiser le jugement

Un système trop simplifié pourrait réduire l’analyse à une formule du type « narrateurs fiables + chaîne continue = hadith authentique ». Cette approche serait insuffisante : elle ignorerait les divergences, erreurs ponctuelles, transmissions indirectes, variantes et défauts cachés.

Sources
Données structurées
Éléments de preuve
Conclusion argumentée

ISNAD cherche donc à représenter la méthodologie plutôt qu’à la remplacer. L’ordinateur n’est pas le muḥaddith : il devient l’instrument capable de réunir, structurer, comparer et rendre visibles les éléments sur lesquels le raisonnement scientifique peut s’appuyer.

La véritable force du modèle de données d’ISNAD vient donc de cette correspondance : la science du hadith travaille déjà avec des identités, des relations, des réseaux, des contraintes, des variantes, des sources, des assertions et des preuves. L’informatique permet d’en rendre la structure explicite, interrogeable et exploitable à une échelle nouvelle.