Merge branch 'feature/doc_kedro' into develop

develop
gwen 3 years ago
commit 44717ee667

@ -1,24 +1,137 @@
Forme des datas Forme des datas
================= =================
Les institutions .. image:: img/exemple_parchemin_acte.jpg
--------------------
Le fichiers :file:`institutions.yaml` Les données du projet *Actes princiers au royaume de France* sont des actes médiévaux - c'est-à-dire des documents qui fondent un droit pour une personne physique ou morale - émis par des princes de la fin de Moyen Âge. Ces princes sont des membres de la famille du roi de France (Orléans, Anjour, Berry, Bourgogne, Alençon, Bourbon) ou des grands feudataires (Bretagne, Savoie, Albret, Armagnac).
.. index:: minutes, vidimus, deperditum, deperdita État actuel des actes
---------------------
Chaque acte qui sera présenté sur le site est .. index:: originaux, copies, minutes, vidimus, deperditum
1. soit conservé dans un dépôt d'archive ou une bibliothèque - Les actes sont écrits au Moyen Âge sur des peaux de parchemin : lors que le parchemin nous est parvenu, on parle d'un **acte original** ou d'une **minute**.
(ce sont les originaux, minutes, vidimus ou copies)
2. soit n'existe que sous la forme d'une édition ancienne
(c'est ce qu'on appelle un deperditum, au pluriel deperdita).
Etat actuel - Les actes originaux ont pu être copiés et certifiés par un notaire au Moyen Âge ou à l'Époque Moderne : on parle alors d'un **vidimus**.
------------
- Les actes orginaux ont pu être copiés : on parle alors d'une **copie**.
1. un extrait (une liste) de l'ensemble des services d'archives départementales,
j'avais rajouté plusieurs services d'archives municipales, les archives nationales, la bibliothèque nationale, quelques bibliothèques/médiathèques municipales ; - Certains actes originaux sont totalement perdus, mais on en conserve des mentions plus ou moins détaillées ou des éditions modernes : on parle alors d'un **deperditum** (pluriel *deperdita*).
2. rajouté les références des éditions où se trouve les deperdita. Conservation des actes
----------------------
.. index:: Archives nationales de France, archives départementales, archives municipales, Bibliothèque nationale de France, bibliothèques municipales
Le fichier : :file:`institutions.yaml`
- Les actes originaux, vidimés ou copiés sont conservés dans des institutions patrimoniales et y possèdent tous une cotation. Par exemple : *Archives départementales de la Côte dOr, B 11942, cote 247*, *Bibliothèque nationale de France, ms. fr. 20389, cote 99*. Ces institutions patrimoniales peuvent être :
- des services d'archives : Archives nationales de France, services d'archives départementales ou municipales.
- des bibliothèques : Bibliothèque nationale de France, bibliothèques municipales
- S'il s'agit d'un deperditum :
- s'il s'agit d'édition, c'est la référence abrégée du livre dans lequel ils sont édités qui est donné.
- si le deperditum est mentionné dans un document d'archives, c'est la cote de ce document qui est donné.
- Dans le projet, les institutions sont listées dans le fichier `institutions.yaml`. Toutes les institutions listées ne contiennent pas un acte princier : il s'agit d'en lister le plus possible pour les futurs actes qui seront entrés dans la base.
Identifiants
-------------
.. index:: Albret, Alençon, Armagnac, Berry, Bourbon, Bourgogne, Bretagne, Orléans, Savoie
- Chaque maison princière a un identifiant :
.. list-table:: Identifiants des maisons princières
:widths: 25 25
:header-rows: 1
* - Maison
- Code
* - Albret
- alb
* - Alençon
- alb
* - Anjou
- anj
* - Armagnac
- arm
* - Berry
- bry
* - Bourbon
- brb
* - Bourgogne
- brg
* - Bretagne
- bre
* - Orléans
- orl
* - Savoie
- sav
- Chaque prénom porté par les princes et princesses a un identifiant,
- Celui des noms d'homme est composé de deux lettres ;
- Celui des noms de femme de trois lettres.
.. list-table:: Identifiants des prénoms des princes et princesses
:widths: 25 25
:header-rows: 1
* - Prénom
- Code
* - Alain
- al
* - Amédée
- am
* - Arthur
- ar
* - Bernard
- be
* - Charles
- ch
* - Édouard
- ed
* - François
- fr
* - Jean
- je
* - Louis
- lo
* - Philippe
- ph
* - Pierre
- pi
* - René
- re
* - Anne
- ann
* - Agnès
- agn
* - Béatrice
- bea
* - Blanche
- bla
* - Bonne
- bon
* - Catherine
- cat
* - Françoise
- fra
* - Jeanne
- jea
* - Marguerite
- mag
* - Marie
- mar
- Chaque prince ou princesse a un numéro d'ordre, en romain minuscule : `i`, `ii`, `iii`, `iv`, etc.
- L'identifiant des actes (`@xml:id` de `<TEI>`) est composé des trois éléments séparés d'un underscore et suivi de la date et d'une lettre.
- Actes de Charles Ier de Bourbon du 28 août 1427 : `brb_ch_i_1427_08_24a`.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

@ -9,6 +9,7 @@ Projet Actes Princiers
data data
xml xml
coding_standards coding_standards
pipeline_actes_princiers
.. rubric:: Index .. rubric:: Index

@ -0,0 +1,103 @@
La pipeline kedro des actes princiers
=====================================
L'oritentation data science du projet a pour but principal de séparer en plusieurs étapes les différentes problématiques du traitement des données.
La commande `kedro run` permet de lancer la pipeline, c'est-à-dire le script `pipelines.py` :
#. `pipelines.py` charge les `catalog.yml` et va chercher `nodes.py`
#. `nodes.py` va chercher `actesdataset.py`
#. `actesdataset.py` réalise les traitements de données.
La pipeline du projet *Actes princiers* possède deux points d'entrée :
- Le premier charge les XML sources avec `xml.etree.ElementTree` de la librairie `lxml` et permet de générer un dictionnaire.
- Le deuxième charge les XML source avec la librairie `BeautifulSoup` et permet de générer un JSON.
`catalog.yml`
-------------
- Dans `/actes-princiers/conf/base/`
- Ce fichier définit des catalogues de données (*data catalog*) :
- de type brut (*raw*) : ce sont les données d'origine qui sont immuables et en lecture seule (les XML et les CSV).
- elles se trouvent dans `/actes-princiers/data/01_raw/`.
- de type intermédiaire (*intermediate*) = ce sont les données créées après le traitement des données brutes.
- elles se trouvent dans `actes-princiers/data/02_intermediate/`.
`pipeline.py`
-------------
- Dans `actes-princiers/src/actes_princiers/pipelines/xml_processing/pipeline.py`.
- Ce code commence par importer les fonctions du fichier `nodes.py`. Les `nodes` kedro sont des blocs de la pipeline qui prennent en paramètre des dataset (les XML), font des traitements et renvoient des outputs (un dictionnaire ou un JSON).
- Il y a deux nodes, qui correspondent à chaque point d'entrée :
- `parse_xml_collection`, qui correspond au traitement sur le datacatalog `bourbon` vers le datacatlog `bourbon_xmlcontent`.
- La fonction appelée depuis `nodes.py` est `parse_xml_collection()`.
- `parse_json_collection`, qui correspond au traitement sur le datacatalog `bourbon_json` vers le datacatlog `bourbon_jsonoutput`
- La fonction appelée depuis `nodes.py` est `parse_json_collection()`.
.. code-block:: py
def create_pipeline(**kwargs) -> Pipeline:
return pipeline(
[
node(
func=parse_xml_collection,
inputs="bourbon",
outputs="bourbon_xmlcontent",
name="bourbon_ds_collection",
),
node(
func=parse_json_collection,
inputs="bourbon_json",
outputs="bourbon_jsonoutput",
name="bourbon_json_ds_collection",
),
`nodes.py`
--------
- Dans `actes-princiers/src/actes_princiers/pipelines/xml_processing/nodes.py`.
- Ce fichier contient les fonctions qui permettent de traiter les données. Il est appelé dans `pipeline.py`.
- `parse_xml_collection` lit les dataset (= les XML) avec la librairie lxml.
- elle commence par lister les fichiers XML d'un dossier donné (correspondant à une maison princière).
- les xml sont parsés avec lxml.
- la `<div>` du `<body>` est récupérée grâce à la fonction `_xslt` de `actes-princiers/src/actesdataset.py`.
- le résultat est stocké dans un fichier avec l'extension `.pseudoxml` car il ne s'agit pas d'un fichier XML bien formé. Le but est d'envoyer ces "bouts" de XML dans un JSON.
- la fonction retourne un dictionnaire où le nom du fichier est la clef et le pseudoxml la valeur.
- `make_json_collection` =
- elle commence par lister les fichiers XML d'un dossier donné (correspondant à une maison princière)
- ces fichiers sont parsés avec BeautifulSoup.
- BeautifulSoup recherche les metadonnées dans le XML
- Un dictionnaire est créé avec en clef le nom du fichier et en valeur les métadonnées récupérées par BeautifulSoup.
- quand c'est sérialisé (enregister dans le disque dur) c'est en json
`actesdataset.py`
-----------------
- Dans `actes-princiers/src/actesdataset.py`
- Il s'agit du fichier maître de la pipeline, où sont définies dans classes qui sont ensuite instanciées dans le `node.py`.
les représentations des dataset, qui va chercher les fonctions précédentes
- `_xslt(xsltstylesheet)` : va chercher la partie du XML (`<div>` du `<body>` qui nous intéresse)
- `class XMLDataSet` : classe abstraite qui n'est jamais instanciée = classe mère en héritage dans la classe suivante.
- `class EtreeXMLDataSet` : va chercher les `<div>` contenant les actes et fait un dictionnaire, avec la fonction `parse_xml_collection` dans `nodes.py`
- `class BsXMLDataSet` : va chercher les métadonnées des actes et les met dans un dictionnaire qui est ensuite transformé en json.
- `class DataSetCollection` : collection abstraite de dataset.
- `class XMLDataSetCollection` : construit un dictionnaire (= data set container) dans un attribut dataset qui liste les fichiers xml.
- `class JSONDataSetCollection` : construit un dictionnaire (= data set container) dans un attribut dataset qui liste les fichiers xml.
Loading…
Cancel
Save