e-NDP. Définition du schéma et du worflow pour l’édition TEI de 3 registres
===
Dates de réunion :
- 30/03/2023 (10h30) avec OC
- 20/03/2023 (11h)
- 14/03/2023 (15h30 à 17h30)
- 22/02/2023 (14h à 16h)
Présents :
- Olivier Canteaut
- Vincent Jolivet
- Anne Massoni
- Darwin Smith
- Lucas Terriel
✔️ TODO :
- Avant le 14/04/2023 :
- [ ] Encoder les pages transcrites des LL105 et LL117 pour valider le schéma XML-TEI défini
- [ ] Définir un modèle ODT exprimant les spécifications TEI établies
- [ ] Code de conversion (ODT->TEI)
- [ ] Code de conversion (TEI->HTML)
- [ ] Faire un exemple XML TEI avec l'enrichissement NER
- Réunion du 20/03/2023 :
- [x] Finaliser la documentation du modèle de document
- Autres :
- [ ] Documentation XML TEI (schéma Relax-NG/ODD)
- [ ] Définir et valider le `teiHeader` (pour les trois registres)
## Contexte
### Objectif
3 registres seront édités :
- LL105
- LL108
- LL117
Harmonisation des éditions des différents registres : on ne rend pas compte des spécificités de présentation de chaque registre.
### Méthode de travail
1. On définit par l’exemple un modèle éditorial et son schéma : on établit la liste des composants éditoriaux.
2. On réléchit au modèle traitement de texte.
3. On teste un worflow.
### Définitions
⚠️ Distinguer les concepts d'**édition** et de **publication**
**édition** :
1. le modèle éditorial (schéma XML et visualisation HTML)
2. le workflow (odt > tei)
**publication** :
1. la mise en ligne de l’édition
2. Exemples : POC site + démo TEI Publisher
## 1. Définition du modèle éditorial XML/TEI
Les fichiers martyrs :
- LL105 (OC) : LIEN
- LL117 (DS) : LIEN
Se référer autant que possible aux [schémas partagés de l’ENC](http://developpements.enc.sorbonne.fr/diple/schema/app/).
### 1.1. Structure générale de l’édition
- un fichier XML/TEI par registre (=> un fichier ODT par registre).
- un responsable éditorial par registre.
- les métadonnées (`<teiHeader>`) seront renseignées ultérieurement.
- paratexte éditorial introductif : un fichier à part ou, pour chaque registre dans `text/front` ?
- **TOC plate** (1 unique niveau de profondeur) : dans le `body`, une `div` par chapitre.
- pagination : lien à l’image, avec la numérotation Sarasin – `pb[@n and @resp and @ref]`
- renvoi à une annexe : `<seg source="#target">…</seg>` (passage dans la délibération renvoyant à une `<div xml:id="ll_117_1" type="annexe">` ; il existe des renvois implicites (renvoi sur un élément vide))
Exemple de pagination :
```xml
<pb n="90" resp="sarasin" facs="http://nakala/path/to/FRAN_0393_05300_L.jpg/"/>
```
Exemple de renvoi :
```xml
TODO
```
NB. - pour la mise en relation des div, on pourrait utiliser l’@source (https://tei-c.org/release/doc/tei-p5-doc/fr/html/ref-att.global.source.html) + cf https://tei-c.org/release/doc/tei-p5-doc/fr/html/CO.html#COHQQ `[un <div type="annexe" source="#id-de-la-div-délibération"> ?]`
### 1.2. Transcription des chapitres
Une `div` par réunion.
#### 1.2.1. Type de réunion
On distingue 4 types de réunions :
- `div[@type]="chapitre"`: chapitre/réunion capitulaire du jour.
- `div[@type]="chapitre_general"`: chapitres généraux sur plusieurs séances. On conserve le découpage journalier, **MAIS on doit identifier ces chapitres généraux**.
- `div[@type]="reunion"`: réunion non capitulaire
- `div[@type]="annexe"`: pièces complémentaires au début OU à la fin de certains volumes avec des **renvois possibles aux chapitres**.
**TODO** : trouver un exemple de renvoi annexe -> chapitre => Cf. registre LL108 p.3 §2 (deux renvois présents)
#### 1.2.2. Titre (forgé)
Le titre du chapitre tel qu’il est imprimé dans la TOC est forgé par l’éditeur. Il correspond à la date modernisée de la réunion.
La date doit être standardisée pour les traitements. Cette standardisation sera automatisée
```xml
<head resp="editor">
<date when="1451-12-22">Vendredi 22 décembre 1451</date>
</head>
```
#### 1.2.3. Paragraphe introductif : date et liste des chanoines
Chaque chapitre s’ouvre par un rappel de la date, la liste des chanoines et éventuellement des mentions liminaires. Ce premier paragraphe n’est pas une délibération et n’est donc pas typé comme tel.
- **Date** : la date écrite par le notaire est mise en valeur (`label[@type]="date"`)
- **Liste des chanoines** : la liste est structurée, les chanoines identifiés (`list[@type]="person"`)
```xml
<p><label type="date">Lune in vigillia sancti Bartholomei XXIV augusti</label>,
prima capituli generalis dicti festi sancti Bartholomei, fuerunt ad capitulum
et lucrati sunt domini et magistri :
<list type="person">
<item><persName ref="#url_ref">archidiaconus de Josayo</persName></item>
<item><persName>succentor</persName></item><!-- pers non identifiée -->
<item><persName>cancellarius</persName></item><!-- pers non identifiée -->
<item><persName>penitenciarius</persName></item><!-- pers non identifiée -->
<item><persName>Ordeimonte</persName></item><!-- pers non identifiée -->
<item><persName ref="#url_ref">Chacy</persName></item>
<item><persName ref="#url_ref">Breton</persName></item>
<item><persName ref="#url_ref">Cotin</persName></item>
…
</list>
Sunt <hi rend="sc">xxxvi</hi> cuilibet <hi rend="sc">vi</hi> s. valent :
<hi rend="sc">ix</hi> L. <hi rend="sc">vi</hi> s.</p>
```
**NB1**. Pas de numérotation, ni point ni ponctuation sauf mention explicite.
**NB2**. L’identification des chanoines (pose de `@ref`) n’est pas à la charge de l’éditeur. Nous développons une méthode d’annotation automatique. Il faudra en revanche valider ultérieurement cette annotation.
#### 1.2.4. Les délibérations
- l’éditeur numérote (`@n`) chaque délibération qui peut être rédigée sur plusieurs paragraphes. Cette numérotation doit être imprimée à l’écran : "[3.] Commissi pro quadam domo…"
- l’objectif est de pouvoir produire un export de chaque délibération à des fins d’analyse.
- l’objet de la délibération (`label[@type="entree"]`) souvent inscrit dans un bloc marginal est annoté.
```xml
<p ana="deliberation" n="3">
<label type="entree">Commissi pro quadam domo</label> Fraxinis,
Officiarius Horarum } videbunt quandam domum de qua hic locutus dictus
officiarus.</p>
<p ana="deliberation">Second paragraphe de cette même délibération 3</p>
```
**NB1**. Les paragraphes HORS délibération ne sont pas typés (pas de `@ana`). / ou `@ana="undefined"` ?
**NB2**. Imaginer des étiquettes de type BIO (Inside–outside–beginning) pour les délibérations ?
#### 1.2.5. Typographie
Le chanoine scribe recourt à des conventions typographiques transcrites par l’éditeur :
- exposant (principalement dans les dates) : `hi[@rend="sup"]`
- texte raturé : `del` (texte raturé doit être porté en note)
- N.B : Les ajouts (mentions interlinéaires et marginales) sont transcrits mais pas signalés (pas de `add`)
- N.B : les abr. sont résolues mais pas signalées (pas de `expan`)
### 1.3. Apparat et interventions éditoriales
Casse :
- Les capitales initiales sont maintenues
- "Dominus" est capitalisé quand il s’agit de Dieu
- Les chiffres des dates en romain sont normalisés en MAJ : `CAPS UTF-8`
Signalement des corrections :
- note libre d’apparat : `note[@resp="editor"]`
- corrections éditorales (`choice` + `sic` et `corr`) : `corr` peut être vide / pas de `@cert`
- lacune (`gap`) : blanc dans le texte
- restitution (`supplied`) : restitution certaine d’un mot manquant
- lecture incertaine (`unclear`) : restitution incertaine d’un mot manquant
TODO. Revoir la distinction `supplied` / `unclear`.
### 1.4. Enrichissements
- identification des personnes : `persName[@ref]`
- identification de la langue (distinguer l’ancien français) : `foreign[@xml:lang="fro"]`
manque de données :
- identification des lieux : `placeName[@ref]` ?
- annotation du lexique des délibérations ?
## 2. Définition du modèle traitement de texte
Objectifs :
- optimiser la transcription : le modèle doit être suffisamment simple pour être adopté par l’ensemble des contributeurs.
- optimiser les conversions : limiter les reprises manuelles.
Un fichier modèle : `TODO`
### 2.1. Structure générale de l’édition
- un fichier ODT par registre
- un responsable éditorial par registre
- **TOC plate** (1 unique niveau de profondeur) : série de `Titre1`
- pagination (lien à l’image, avec la numérotation Sarasin) : `=n° Sarasin=`, avec lien vers l’image Nakala
- renvois ? – **Tester insertion de lien internes**
### 2.2. Transcription des chapitres
Une Partie par réunion.
#### 2.2.1. Type de réunion
On distingue 4 types de réunions :
- `chapitre`: chapitre/réunion capitulaire du jour.
- `chapitre_general`: chapitres généraux sur plusieurs séances. On conserve le découpage journalier, MAIS on doit identifier ces chapitres généraux.
- `reunion`: réunion non capitulaire.
- `annexe`: pièces complémentaires au début OU à la fin de certains volumes avec des **renvois possibles aux chapitres**.
Ce typage est inscrit dans le Titre (cf section suivante, 2.2.2)
#### 2.2.2. Titre (forgé)
Le titre du chapitre tel qu’il est imprimé dans la TOC est forgé par l’éditeur :
- il correspond à la date modernisée de la réunion ;
- style de paragraphe `Titre1`.
Par défaut, on considère que la réunion est un chapitre et on ne le note donc pas. Dans les autres cas en revanche, on préfixe le titre en utilisant cette typologie :
- Ex. titre du **chapitre** du 22 décembre 1451 (`Titre1`) :
`Vendredi 22 décembre 1451`
- Ex. titre du **chapitre général** du 22 décembre 1451 (`Titre1`) :
`CG/Vendredi 22 décembre 1451`
- Ex. titre de la **réunion** du 22 décembre 1451 (`Titre1`) :
`R/Vendredi 22 décembre 1451`
- Ex. titre d’une **annexe**(`Titre1`) :
`A/Titre de l’annexe`
NB. La standardisation (`AAAA-MM-JJ`) de la date saisie sera automatisée.
#### 2.2.3. Paragraphe introductif : date et liste des chanoines
Chaque chapitre s’ouvre par un rappel de la date, la liste des chanoines et éventuellement des mentions liminaires. Ce premier paragraphe n’est pas une délibération et n’est donc pas typé comme tel.
- **Date** : la date écrite par le notaire est mise en valeur – appliquer le style de caractère `_endp_date`.
- **Liste des chanoines** : la liste à puce - appliquer le style de paragraphe `_endp_person-list`
**NB**. Pas de numérotation, ni point ni ponctuation sauf mention explicite. Pour le point de présence ajouté un symbole `@` devant le nom de la personne.
NB. L’identification des chanoines se fera ultérieurement de manière semi-automatisée.
#### 2.2.4. Les délibérations
Par défaut, on considère que les paragraphes suivants sont des délibérations.
**Identification et numérotation des délibérations**
La transcription d’une délibération doit débuter par sa numérotation forgée par l’éditeur :
Premier paragraphe de la 3e délibération.
> (3) Collacio prebende sacerdotalis Sancti…
Les paragraphes suivants de cette délibération ne sont ni numérotés ni stylés.
En revanche, pour repérer les paragraphes qui ne sont pas des délibérations, il convient de leur appliquer le style de paragraphe `_endp_non-deliberation`.
**Annnotation des entrées**
Certaines délibérations sont mises en valeur par une entrée (souvent saisie en marge) :
- ces entrées sont transcrites en début de délibération (après la numérotation) ;
- mise en forme **Gras** (attention à ne pas formater aussi la numérotation).
> (4) **Opcio prebende de Mory** Hodie dominus…
#### 2.2.5. Typographie
Le chanoine scribe recourt à des conventions typographiques transcrites par l’éditeur :
- exposant (principalement dans les dates) : utiliser la mise en forme `Exposant`.
- texte raturé : utiliser la mise en forme `Barré`.
N.B : Les ajouts (mentions interlinéaires et marginales) sont transcrits mais pas signalés.
N.B : les abr. sont résolues mais pas signalées.
### 2.3. Apparat et interventions éditoriales
**Casse**
- Les capitales initiales sont maintenues
- "Dominus" est capitalisé quand il s’agit de Dieu
- Les chiffres des dates en romain sont normalisés en MAJUSCULES.
**Signalement des corrections**
- note libre d’apparat : note de bas de page.
- corrections éditorales (`choice` + `sic` et `corr`) : `[correction](mot dans le registre)` ex. `[magister](magter)`
- lacune : `…`
- restitution certaine : `[texte restitué]`
- lecture incertaine : `[ ?texte restitué incertain]`
### 2.4. Validation modèle et questions
- Existe t-il des titres non forgés (`Titre1`) ? (autre que des dates)
## 3. Synthèse
|élément éditorial|commentaire|`tei`|`odt`|
|-----------------|-----------|-----|-----|
|**Structure**||||
|unité documentaire|un chapitre, etc.|`div[@type]` (=`chapitre`, `chapitre_general`…)|cf normalisation du `Titre1`|
|titre|date modernisée|`head[@resp]`|style `Titre1`|
|date standardisée|`AAAA-MM-JJ`|`head/date[@when]`|– (*post-processing XSLT*)|
|date| date situé au début de la séance en latin |`p/label[@type='date']`|style de caractère `_endp_date`|
|liste|liste des chanoines |`list[@type="person"]/item/persName`|liste à puce|
|deliberation|les `p` d’une délibération numérotée |`p[@ana="deliberation"]/@n`|`(n° delib)` en tête de §|
|entrée|objet de la délibération (*inline* et OPTIONNEL)|`label[@type="entree"]`|mise en forme `Gras`|
|pagination Sarasin|lien IIIF à l’image|`pb[@n and @resp and @ref]`|\=[423](https://url_image)=|
|**Typographie**||||
|majuscules|idem|CAPS UTF-8| MAJUSCULES |
|exposant|fréquent dans les dates| `hi[@rend='sup']`| mise en forme `Exposant`|
|texte raturé|interventions du scribe|`del`|mise en forme `Barré`|
|**Apparat critique**|||
|note libre|commentaire|`note[@resp="editor"]`|note de bas de page|
|corrections|toujours avec `choice`|`choice`/`sic`/`corr`|reprise manuelle (XML) du contenu des notes |
|lacune|texte incomplet, sans restitution possible|`<gap/>`|`…`|
|restitution|restitution certaine autant que possible|`supplied`|`[texte restitué]`|
|lecture incertaine|doute sur la restitution|`unclear`|`[texte restitué incertain ?]`|
|**Enrichissements**||||
|personne|lier l’édition à la base prosopographique|`persName[@ref]`| – (*post-processing* Python) |
|lieu|lier l’édition à une base de lieux ?|`placeName[@ref]`| – (*post-processing* Python)|
|langue|distinguer le moyen français du latin|`foreign[@xml:lang="frm"]`| style de caractère `_endp_frm`|
## Remarques à éclaicir
- positionnement des `pb` (éviter de les inscrire hors div)
- valorisation des `pb` et lien aux images
- insertion des balises persName quand nous avons `<item><supplied>archidiacono</supplied></item>`…
- Revoir la mise en valeur HTML des `unclear` (il faut pouvoir visualiser le segment tout entier et non seulement un point)
- problème de la segmentation autour des `gap` (avec/sans espace(s) avant/après ?)
- identification (`@xml:id`) des `div` : comment construire les identifiants ?
- identification des fichiers (idem, `TEI/@xml:id`)
- à quoi servent les {} ? => baliser ? pas maintenu
- revoir la segmentation paragraphe introductif / liste de personnes / paragraphe introductif (ex ll117_005 et ll117_004)
## Annexe. Modèle pour le `<teiHeader>` (proposition sur LL117 à enrichir)
```xml
<teiHeader>
<fileDesc>
<titleStmt>
<!-- * Titre et sous-titre générique -->
<title type="main" source="registre capitulaire LL117">Registre LL 117</title>
<title type="sub">Projet e-NDP - Édition des registres capitulaires médiévaux de Notre-Dame de Paris</title>
<!-- * Personnel responsable de la chaîne de traitement -->
<respStmt>
<resp>Chaîne de traitement</resp>
<persName ref="orcid:0000-0001-9518-1040" role="Project_manager">Claustre Julie</persName>
<persName ref="orcid:0000-0002-4795-2362" role="Project_manager">Smith Darwin</persName>
<persName ref="orcid:0000-0002-0007-1664" role="OCRisation">...</persName>
<persName ref="orcid:xxxx" role="transcriptor">...</persName>
<persName ref="orcid:xxxx" role="transcriptor">...</persName>
<persName ref="orcid:0000-0003-0850-8266" role="engineer">.../persName>
<persName ref="orcid:0000-0003-0850-8266" role="engineer">...</persName>
<!-- continuer la liste ... -->
</respStmt>
</titleStmt>
<!-- * Informations sur la publication ou la diffusion d’un texte électronique -->
<publicationStmt>
<!-- Nom du projet et partenaires -->
<publisher>Projet e-NDP / Sorbonne Université (LaMOP) / ENC ...</publisher>
<ref target="https://github.com/chartes/e-NDP_site"/>
<date type="file_creation" when="2023-02-23">23 février 2023</date>
<!-- license à discuter -->
<availability n="cc-by" status="restricted">
<licence target="https://creativecommons.org/licenses/by/4.0"/>
</availability>
</publicationStmt>
<!-- * Informations sur la source à partir de laquelle un texte électronique a été produit -->
<sourceDesc>
<bibl>
<!-- lien vers les Archives Nationales -->
<ref target="https://www.siv.archives-nationales.culture.gouv.fr/siv/UD/FRAN_IR_059635/Delib_914"/>
<author/> <!-- différence avec publisher ? -->
<title source="registre capitulaire LL117">registre capitulaire LL117</title>
<pubPlace ref="geonames:2988506" source="registre capitulaire LL117">Paris</pubPlace>
<!-- publisher : A réfléchir -->
<publisher>
<orgName>Archives nationales</orgName>
</publisher>
<date source="registre capitulaire LL117" from="1451" to="1454">1451-1454</date>
</bibl>
<!-- description d'un manuscrit -->
<msDesc>
<msIdentifier>
<country ref="geonames:3017382">France</country>
<settlement ref="geonames:2988506">Paris</settlement>
<repository xml:lang="fr" ref="wikidata:Q182542 viaf:131469365">Archives nationales</repository>
<idno type="cote">LL/117</idno>
</msIdentifier>
<physDesc>
<objectDesc>
<supportDesc>
<extent>
<!-- 33 x 23,5 x 6,5 cm -->
<dimensions type="binding">
<height unit="cm">33</height>
<width unit="cm">23,5</width>
<depth unit="cm">6,5</depth>
</dimensions>
</extent>
</supportDesc>
</objectDesc>
</physDesc>
<!--<history>
<provenance>
</provenance>
</history>-->
</msDesc>
</sourceDesc>
</fileDesc>
<!-- * Description du projet de d'édition -->
<encodingDesc>
<!-- - Description générique du projet -->
<projectDesc>
<p>Cette édition a été réalisée dans le cadre du projet ANR e-NDP. Son objectif principal
est de fournir un texte encodé selon les spécifications TEI destiné à l'exploration avec des outils électroniques.
Préciser les objectifs de l'édition ....</p>
<p>Les textes encodés dans le cadre du projet e-NDP sont issus d'une campagne de numérisation des Archives nationales.</p>
<p>L'édition présentée ici est issue d'un processus de transcription automatique (HTR) réalisé avec le moteur Kraken et la production de vérité terrain avec le logiciel eScritporium.</p>
</projectDesc>
<!-- - Description des choix d'encodage -->
<editorialDecl>
<p/>
</editorialDecl>
</encodingDesc>
<!-- * Description détaillée des aspects non bibliographiques du texte, notamment les langues utilisées et leurs variantes, les circonstances de sa production, les collaborateurs et leur statut -->
<profileDesc>
<langUsage>
<language ident="lat">Document en latin</language>
<language ident="fr">Document en français</language>
</langUsage>
<abstract>
<p source="registre capitulaire LL117"><!-- si nécéssaire --></p>
</abstract>
<textClass>
<keywords>
<!-- réfléchir -->
<term type="form">décision capitulaire</term>
</keywords>
</textClass>
<!-- <settingDesc>
<setting xml:id="" source="">
<p></p>
<date when=""></date>
</setting>
</settingDesc> -->
</profileDesc>
<!-- * Informations sur la révision de ce fichier ? -->
<revisionDesc>
<change status="corrected" when="2023-11-08" who="VJ"/>
<change status="corrected" when="2023-11-08" who="LT"/>
</revisionDesc>
</teiHeader>
```
## Traitement et conversions
### Standardisation des dates normalisées des réunions
Objectif : insersion de `date/@when` dans `head`
- input XML : `<head>Vendredi 14 juillet 2022</head>`
- output : `<head><date when="2022-07-14">Vendredi 14 juillet 2022</date></head>`
test snippet :
```xml
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<document>
<xsl:variable name="date-str" select="head"/>
<xsl:variable name="date-time">
<xsl:value-of select="date($date-str)"/>
</xsl:variable>
<head>
<date when="{format-date($date-time, '[Y0001]-[M01]-[D01]')}">
<xsl:value-of select="head"/>
</date>
</head>
</document>
</xsl:template>
</xsl:stylesheet>
```