Vue transversale POC
Une entité reliée à travers les corpus quantitatifs (feux) et qualitatifs (assemblées). Résolution d'entités : « Talma » = « François-Joseph Talma ».
Réseau d'entités
Acteurs reliés aux pièces (feux) et aux procès-verbaux qui les mentionnent (assemblées). Glisser, zoomer, cliquer.
Recherche d'entité
Saisie des feux
Enregistrement d'une séance et de sa distribution, réutilisant les identifiants existants, écrit dans le graphe RDF.
Distribution
Atelier d'étiquetage (NER)
Reconnaissance automatique des entités, correction semi-automatique, ajout manuel, export TEI-XML.
Entités
Corrigez le type, supprimez, ou ajoutez une entité manuellement.
Feux — visualisation
Registres de distribution et d'indemnités, filtrables et agrégés.
Indemnités cumulées par acteur
Distribution par séance
Registres d'assemblée et de comité
Corpus qualitatif : procès-verbaux transcrits, entités reconnues.
Explorateur SPARQL
Interrogation directe du graphe RDF — le standard d'interopérabilité du Web sémantique.
Documentation
Documentation fonctionnelle et technique de la plateforme RCF.
1 · Présentation
La plateforme RCF gère et met en relation les données des registres de la Comédie-Française dans le cadre du programme RCF. Elle couvre deux natures de corpus : les données quantitatives (registres des « feux » — distribution et indemnités — et recettes) et les données qualitatives (registres de comité et d'assemblée, corpus textuels). Toutes les données sont structurées dans un graphe RDF commun qui permet de les interroger et de les croiser.
La chaîne fonctionnelle complète est : saisie / texte → reconnaissance d'entités → graphe RDF → visualisation → vue transversale.
2 · Les modules
Vue transversale
Point d'entrée. Affiche les indicateurs du graphe, un réseau d'entités interactif (acteurs reliés aux pièces via les feux, et aux procès-verbaux qui les mentionnent) et une recherche d'entité. Une même entité y est reliée à travers tous les corpus : c'est l'objectif scientifique du programme — éclairer les données chiffrées par les corpus textuels.
Saisie des feux
Formulaire d'enregistrement d'une séance (date, horaire, pièce) et de sa distribution (rôle + acteur + indemnité). Il réutilise les identifiants existants (pièces, rôles, acteurs) et écrit directement dans le graphe RDF.
Atelier d'étiquetage (NER)
Chargez un procès-verbal ou collez un texte, lancez l'analyse : les entités (personnes, lieux, dates, titres de pièces, rôles) sont reconnues automatiquement. Vous pouvez corriger le type d'une entité, la supprimer, ou en ajouter manuellement (modes automatique, semi-automatique et manuel). Le résultat est exportable en TEI-XML.
Feux — visualisation
Agrégation des indemnités par acteur (graphe à barres) et table de distribution par séance, filtrable par acteur et par pièce.
Assemblées
Liste des procès-verbaux transcrits ; à l'ouverture, le texte est affiché avec ses entités surlignées.
Explorateur SPARQL
Interrogation directe du graphe RDF en SPARQL 1.1, pour les usages avancés et l'interopérabilité.
3 · Modèle de données RDF
Espace de noms : rcf: <https://rcf.quadrifoglio.ai/ns#>. Principales classes :
| Classe | Description |
|---|---|
rcf:Seance | Une représentation (date, horaire, pièce jouée, recette) |
rcf:Distribution | Lien séance × rôle × acteur, portant l'indemnité (rcf:feu) |
rcf:Piece / rcf:Role | Œuvre (titre, auteur) / rôle (rattaché à une pièce) |
rcf:Acteur / rcf:Personne | Comédien (statut, genre) / personne mentionnée |
rcf:Lieu | Lieu mentionné |
rcf:ProcesVerbal | Registre de comité/assemblée (date, type, texte, entités mentionnées) |
Exemple de triples (Turtle) :
rcf:seance_18200112 a rcf:Seance ;
rcf:date "1820-01-12" ; rcf:joue rcf:piece_cid ; rcf:recette 3120 .
rcf:d1 a rcf:Distribution ; rcf:seance rcf:seance_18200112 ;
rcf:role rcf:role_rodrigue ; rcf:acteur rcf:act_talma ; rcf:feu 30 .
rcf:pv_18200114 rcf:mentionne rcf:act_talma .
4 · Moteur d'étiquetage (NER)
Le moteur combine plusieurs sources pour une précision élevée sur ce corpus :
- Modèle linguistique : spaCy français
fr_core_news_lg(personnes, lieux pour les entités inconnues). - Gazetteer issu du graphe : toutes les entités déjà connues (acteurs, titres de pièces, rôles) sont reconnues exactement, y compris par alias (nom de famille seul, titre sans article).
- Règles : motifs de dates (« 14 janvier 1820 », « 1er février »), liste de lieux.
- Résolution d'entités : une mention est rattachée à son entité canonique — « Talma » → « François-Joseph Talma », « Tartuffe » → « Le Tartuffe ».
- Filtrage : élimination des faux positifs fréquents (titres de fonction tels que « Roi », « doyen »).
Cinq types sont produits : Personne, Lieu, Date, Pièce, Rôle. Les modes automatique / semi-automatique (correction) / manuel sont accessibles dans l'atelier.
5 · Export TEI
Tout texte étiqueté s'exporte au format TEI-XML (standard d'encodage des textes savants), avec les balises <persName>, <placeName>, <date> et <title>, dans une structure teiHeader + text/body. Bouton « Exporter en TEI-XML » de l'atelier.
6 · SPARQL
Le graphe est interrogeable en SPARQL 1.1. Exemple — indemnités cumulées par acteur :
PREFIX rcf:<https://rcf.quadrifoglio.ai/ns#>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
SELECT ?acteur (SUM(?feu) AS ?total) WHERE {
?d rcf:acteur ?a ; rcf:feu ?feu . ?a rdfs:label ?acteur .
} GROUP BY ?acteur ORDER BY DESC(?total)
7 · API REST
Toutes les routes (sauf /api/login et /api/health) exigent un jeton Authorization: Bearer <token>.
| Route | Rôle |
|---|---|
| POST/api/login | Authentification → jeton + utilisateur |
| GET/api/me | Utilisateur courant |
| GET/api/model | Classes et comptes du graphe |
| GET/api/refs | Pièces, rôles, acteurs (autocomplétion) |
| GET/api/feux | Distributions (filtres acteur, piece) |
| GET/api/feux/stats | Agrégats (par acteur, par pièce) |
| POST/api/seance | Créer une séance + distributions |
| GET/api/pvs · /api/pvs/{id} | Procès-verbaux et entités |
| POST/api/ner | Étiquetage d'un texte |
| GET/api/pvs/{id}/tei | Export TEI-XML |
| GET/api/search · /api/graph | Vue transversale (entités, réseau) |
| POST/api/sparql | Requête SPARQL libre |
8 · Architecture & déploiement
- Backend : FastAPI (Python). Graphe RDF servi par
rdflibpour ce démonstrateur ; un triplestore dédié (Oxigraph ou Fuseki) est préconisé en production. - NER : spaCy
fr_core_news_lg+ règles. - Front : application web légère (sans dépendance lourde), graphe via vis-network.
- Conteneurisation : Docker. Reverse proxy nginx + HTTPS Let's Encrypt. Déployé sur
rcf.quadrifoglio.ai. - Standards : RDF, SPARQL 1.1, TEI-XML — interopérabilité et pérennité des données.
9 · Sécurité & comptes
Accès par identifiant / mot de passe. À la connexion, un jeton signé (HMAC-SHA256, validité 24 h) est délivré ; il est requis pour tout appel à l'API, vérifié par un middleware. Mots de passe stockés sous forme de condensat (PBKDF2). Comptes de démonstration : demo (lecteur) et admin (administrateur).