Vue transversale POC
Une entité reliée à travers les corpus : les représentations (recettes) et les registres signés. Résolution d'entités sur le fonds réel.
Réseau d'entités — vue synthétique
Les 18 acteurs les plus actifs, leurs principales pièces (via le casting) et un échantillon des registres qu'ils ont signés (résolution d'entité sur le champ « signataire »). Ce n'est pas le graphe complet : les plus de 560 000 triplets s'explorent par la recherche, l'« Exploration du fonds » et l'explorateur SPARQL. Glisser, zoomer (boutons en bas), cliquer.
Recherche d'entité
Saisie d'une séance
L'unité de base est la séance : un jour de registre, avec sa date, son programme (pièces jouées), sa distribution, sa recette et son signataire. On crée d'abord la séance, puis on lui rattache programme et distribution depuis le référentiel (contrôle d'autorité).
Programme
Pièces jouées ce jour-là, liées au référentiel.
Distribution
Acteur + rôle. Le rôle est une autorité rattachée à la pièce : on le réutilise ou on le crée (nouvel identifiant).
Lieu(x) de représentation
Lieu de la séance (parfois hors Comédie-Française), lié au référentiel.
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.
Représentations & recettes
La masse réelle du fonds : 34 459 séances, recettes et distributions, filtrables et agrégées.
Rôles tenus par acteur (top 12)
Représentations — date · pièce · recette
Exploration du fonds
Tableau de bord interactif sur l'ensemble des représentations (1680-1793) — survol, zoom temporel, sélection.
Représentations et recettes par année
Répartition par genre
Auteurs les plus joués
Pièces les plus représentées
Explorateur — représentations
Filtres (genre, dates, auteur, pièce), tri par colonne (clic sur l'en-tête), export CSV. Sur l'ensemble du fonds.
Catalogue — recherche à facettes
Recherche plein texte (titre, auteur) et facettes — comme un catalogue de bibliothèque — sur les ~64 000 représentations. Moteur Meilisearch.
Facettes…
Registres transcrits
Pages de registres réellement transcrites (corpus textuel du fonds), avec recherche plein texte et entités reconnues. Le même index montera en charge avec les registres de comité et d'assemblée.
Facettes…
Fonds documentaire La Grange
Le catalogue numérisé de la Comédie-Française (≈ 76 000 fiches : représentations, iconographie, archives, presse, partitions…), interrogeable et relié à chaque notice par son lien ARK. C'est le socle des « ressources documentaires complémentaires » prévu par le programme.
Facettes…
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 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.
Le démonstrateur est chargé avec les données ouvertes réelles du programme (CFRP, licence CC BY-NC-SA) : plus de 560 000 triplets — 34 459 séances (registres), 3 724 pages transcrites, 2 621 distributions, 1 185 pièces, 823 personnes. Ce ne sont pas des données fictives.
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 / édition d'une séance
L'unité de base est la séance (un jour de registre). Le formulaire crée une séance — date, jour, saison, n° de registre et de représentation, recette en livres/sous/deniers, signataire, ouverture/clôture, note — puis permet de lui rattacher son programme (pièces jouées) et sa distribution (acteur + rôle) en liant au référentiel (contrôle d'autorité, pas de ressaisie). La même page sert à modifier une séance existante et à la dupliquer (copie complète, pour ne changer qu'un détail). Écrit dans le graphe RDF, réservé à l'administrateur.
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.
Représentations
Synthèse des rôles par acteur et table des représentations (date, pièce, recette), à colonnes triables.
Exploration du fonds
Tableau de bord interactif (ECharts) : courbe des représentations et des recettes par année (1680-1793), répartition par genre, auteurs et pièces les plus joués. Un explorateur à facettes (genre, dates, auteur, pièce) avec tri, pagination et export CSV ; les filtres recalculent les graphiques sur le sous-ensemble sélectionné.
Catalogue — recherche à facettes
Recherche plein texte (titre, auteur) avec facettes et compteurs (genre, année, mois, jour, décennie, reprise), moteur Meilisearch. Chaque résultat ouvre une fiche détaillée (registre, programme, distribution, recette, signataire, texte transcrit) ; pour un administrateur, boutons Modifier (ouvre la page d'édition complète), Dupliquer et Supprimer. Export CSV complet des résultats filtrés.
Administration — autorités
Réservé au rôle administrateur : gestion du référentiel (contrôle d'autorité). Chaque pièce, personne ou lieu porte un identifiant pérenne (URI stable) et peut être aligné aux autorités externes — BnF (data.bnf.fr), IdRef (ABES), VIAF, Wikidata — via owl:sameAs, pour l'interopérabilité LOD et le dédoublonnage. Vocabulaires contrôlés extensibles (statut, genre, qualité). Les saisies de représentations pointent vers ces autorités plutôt que de les ressaisir.
Registres transcrits
Pages de registres réellement transcrites, avec recherche plein texte et surlignage (moteur Meilisearch, index dédié) ; à l'ouverture, le texte est affiché avec ses entités reconnues. Le même index est prêt à accueillir les ~40 000 pages des registres de comité et d'assemblée à transcrire — c'est l'« interrogation rapide des registres d'assemblée » attendue.
Fonds documentaire (La Grange)
Catalogue numérisé du fonds La Grange de la Comédie-Française : 76 016 fiches (iconographie, presse, archives, programmes), avec recherche à facettes par type de document. 30 772 fiches sont reliées au répertoire dans le graphe (rcf:concernePiece / rcf:concernePersonne) : pour une pièce ou une personne donnée, on retrouve toutes les ressources documentaires associées et on les croise avec les données chiffrées. Chaque fiche affiche sa notice complète et un lien ARK vers la source.
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#>. L'unité de base est la séance (un jour de registre) ; tout le reste s'y rattache.
| Classe | Propriétés et relations |
|---|---|
rcf:Seance | Le jour de registre. rcf:date, rcf:jour, rcf:horaire (matinée/soirée), rcf:saison, rcf:numeroRegistre, rcf:numeroRepresentation, recette en livres/sous/deniers (rcf:recette, rcf:recetteSous, rcf:recetteDeniers), rcf:signataire, rcf:ouverture/rcf:cloture. Relations : rcf:joue → Piece (programme, 1 à 4 pièces), rcf:lieuRepresentation → Lieu. |
rcf:Piece | Œuvre : rcf:titre, rcf:auteur, rcf:genre. |
rcf:Role | Rôle identifié, rattaché à une pièce : rdfs:label, rcf:dansPiece → Piece. C'est ce qui permet de réutiliser et de créer des identifiants de rôles. |
rcf:Personne | Acteur ou auteur : rdfs:label, rcf:statut, rcf:naissance/rcf:deces (années), rcf:qualite. Aligné aux autorités externes par owl:sameAs. |
rcf:Lieu | Lieu de représentation (Comédie-Française ou extérieur). |
rcf:Distribution | Le « feu » : qui a joué quoi. rcf:seance, rcf:acteur → Personne, rcf:role → Role (le rôle porte sa pièce). |
rcf:PageRegistre | Page transcrite : rcf:texte, entités reconnues via rcf:mentionne. |
Identifiants uniques
Chaque entité est une URI stable qui sert d'identifiant pérenne (ex. rcf:per_811). Les entités créées dans l'outil reçoivent un identifiant opaque par compteur, non signifiant et sans collision : pie_u… (pièce), per_u… (personne), role_u… (rôle), lieu_u… (lieu), seance_9… (séance). La saisie réutilise les identifiants existants (sélection dans le référentiel) et n'en crée de nouveaux que pour les entités absentes — notamment les rôles des pièces nouvelles, qui n'ont pas encore d'identifiant.
Alignement aux autorités externes (LOD)
Les personnes sont reliées aux autorités de référence par owl:sameAs : BnF (data.bnf.fr), IdRef, VIAF, Wikidata. Une réconciliation automatique contre Wikidata, vérifiée par les dates de naissance/décès, dérive d'un seul appariement les identifiants VIAF / BnF / IdRef.
Exemple de triples (Turtle) :
rcf:seance_900003 a rcf:Seance ;
rcf:date "1830-02-25" ; rcf:horaire "soirée" ; rcf:saison "1829-1830" ;
rcf:joue rcf:pie_u1 ; rcf:lieuRepresentation rcf:lieu_u2 .
rcf:pie_u1 a rcf:Piece ; rcf:titre "Hernani" ; rcf:auteur "Hugo (Victor)" ; rcf:genre "drame" .
rcf:role_u1 a rcf:Role ; rdfs:label "Don Carlos" ; rcf:dansPiece rcf:pie_u1 .
rcf:per_811 a rcf:Personne ; rdfs:label "Molière" ; rcf:statut "Sociétaire" ;
owl:sameAs <http://www.wikidata.org/.../Q687> , <https://viaf.org/viaf/2474502> .
rcf:dist_u7 a rcf:Distribution ; rcf:seance rcf:seance_900003 ;
rcf:acteur rcf:per_xxx ; rcf:role rcf:role_u1 .
Note : le programme est modélisé comme un ensemble (rcf:joue) ; l'ordre des pièces dans la soirée est un raffinement non encore persisté (liste ordonnée ou nœud de programmation).
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_sm(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 — représentations par pièce :
PREFIX rcf:<https://rcf.quadrifoglio.ai/ns#>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
SELECT ?piece (COUNT(?s) AS ?representations) WHERE {
?s rcf:joue ?p . ?p rcf:titre ?piece .
} GROUP BY ?piece ORDER BY DESC(?representations) LIMIT 20
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} | Pages transcrites et entités |
| POST/api/registres/search | Recherche plein texte des transcriptions (Meilisearch, surlignée) |
| 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) |
| GET/api/explore · /api/perf | Agrégats et explorateur à facettes du fonds |
| POST/api/catalogue | Recherche plein texte à facettes (Meilisearch) |
| GET·POST/api/representation/{id} | Fiche détaillée d'une représentation + édition |
| POST/api/sparql | Requête SPARQL libre |
8 · Architecture & déploiement
- Backend : FastAPI (Python), client SPARQL. Triplestore Oxigraph (SPARQL 1.1) dans un conteneur dédié et persistant — le graphe est servi par un vrai moteur RDF, pas par une bibliothèque en mémoire.
- NER : spaCy
fr_core_news_sm+ gazetteer issu du graphe + règles. - Recherche : moteur Meilisearch (catalogue plein texte à facettes).
- Front : application web légère ; graphe via vis-network, dataviz via ECharts.
- 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). Deux rôles : lecteur (consultation) et administrateur (gestion des autorités, modification et suppression des enregistrements — endpoints protégés côté serveur). Compte de démonstration demo (lecteur) ; un compte administrateur dédié est fourni au client.
Administration — autorités
Référentiel : créer et éditer les pièces, personnes et lieux (contrôle d'autorité). Réservé à l'administrateur. Les saisies de représentations pointent vers ces autorités.
Sélectionnez une autorité à gauche, ou créez-en une.