Graphe des Archives nationales pour la Recherche, l'Accès et la Navigation des Connaissances Enrichies
Mise en ligne sous forme de site statique des données des référentiels des Archives Nationales publiées dans le dépôt https://github.com/ArchivesNationalesFR/Referentiels. Utilise 11ty comme outil de génération de site, et du JSON-LD framing pour structurer les notices des entités. Le framing est appliqué avec la librairie Javascript jsonld.js.
garance
├── .eleventy.js
├── package.json
├── _json
│ ├── ... Fichiers JSON après lecture mais avant framing
├── src
│ ├── _data
│ | ├── framings
│ | | ├── ... Fichiers de specs du framing
│ | ├── i18n
│ | | ├── en
│ | | | ├── ... Fichiers de traductions (CSV and JS)
│ | | ├── fr
│ | | | ├── ... Fichiers de traductions (CSV and JS)
│ | ├── ... Fichiers JSON après framing
│ ├── entities
│ ├── _layouts
│ ├── pages
│ | ├── en
│ | | ├── ... Fichiers de contenu *.md (dont page d'accueil index.md)
│ | ├── fr
│ | | ├── ... Fichiers de contenu *.md (dont page d'accueil index.md)
├── static
│ ├── ... CSS, javascript, images, etc.
├── scripts
│ ├── ... commandes exécutées pour traiter les données : frame et read
├── utils
│ ├── ... Javascripts utilisés dans la génération du site (mais pas dans le site lui-même)
Fichier de config principal de tout le projet. Contient notamment les dépendances aux librairies Javascript, et la définition des commances npm run read, npm run frame, npm run start et npm run read utiles pour la génération du site.
Fichier de config principal d'11ty. Il charge les filtres Javascripts utiles à la génération du site et donne les chemins nécessaires à 11ty
Répertoire dans le lequel se retrouve le gros fichier JSON-LD garance.jsonqui est la concaténation de la lecture de tous les référentiels, et sur lequel est appliqué le framing. Ce répertoire est créé par la commande npm run read.
Répertoire contenant les commandes "frame" et "read" utilisées pour préparer les données avant la génération du site. En plus, une répertoire avec script python.
Répertoire contenant toutes les sources à partir desquelles le site est généré
Répertoire contenant tous les fichiers de données sources qui alimentent le site. En particulier, ce répertoire est alimenté par le résultat du framing (commande npm run frame)
Fichiers de spécifications du framing JSON-LD, utilisés par la commande npm run frame et appliqué sur le fichier d'entrée _json/garance.json
Répertoire contenant les traductions des libellés du site en anglais et en français.
Répertoire contenant les markdowns qui déclenchent la génération des pages sous l'URL /entities. Ce sont des fichiers vides qui font appel à un layout sous src/_layouts qui fait effectivement le travail.
Répertoire contenant les layouts qui se chargent de la génération du HTML à partir des données. Contient toute la mise en forme HTML du site à partir des données. En particulier le fichier jsonld.njk est un template générique d'affichage de n'importe quelle structure JSON-LD.
Répertoire contenant les pages statiques du site (non produites à partir de fichiers de données JSON). Ces pages doivent exister en 2 variantes, anglaise et française.
Répertoire contenant tous les fichiers statiques du site final (images, Javascripts, CSS, etc...), qui est recopié tel quel dans la sortie.
Répertoire contenant tous les scripts utiles pour la génération du site (mais pas dans le site lui-même). Ce sont des filtres Nunjuck pour l'affichage des données des données
npm install
git clone https://github.com/ArchivesNationalesFR/Referentiels.git
npm run read <chemin vers le repository Référentiels> : appelle le script utils/read.js pour lire le contenu des RDF.
Exemple : npm run read ../Referentiels
Cette commande créé le fichier _json/garance.json
npm run frame
Cette commande applique les specs de framing du dossier src/_data/framings sur le fichier _json/garance.json, pour produire des fichiers dans src/_data, par exemple src/_data/agents.json.
npm run build pour la génération du site final.
Le résultat finale est dans le répertoire dist
npm run start-ignore-initial pour lancer le serveur sans regénération complète initiale du site. Le site sera toutefois regénéré de façon incrémentale si un fichier source est modifié.
npx pagefind pour construire l'index pagefind.
npm run startpour lancer le serveur local avec génération initiale du site- Arrêter le serveur (CTRL+C) une fois le site généré
npx pagefindpour générer l'index pagefindnpm run start-ignore-initialpour relancer le serveur sans régénération initiale, mais qui prendra en compte l'index pagefind
L'étape de framing génère les fichiers JSON suivants dans src/_data:
agents.json: toutes les données des notices d'agent (sans l'entête)agentsHeader.json: toutes les données des entêtes des agentsplaces.json: toutes les données des notices de lieux (sans l'entête et les coordonnées)placesHeader.json: les entêtes des lieuxplacesLocation.json: les coordonnées des lieuxvocabularies.json: tous les vocabulaires SKOSindex.json: donne la liste des vocabulaires contrôlés
Le dossier src/utils contient les fichiers suivants qui contiennent des "filters" Nunjucks, c'est-à-dire des fonctions utilitaires appelées par les layouts:
filters.js: filtres/fonctions génériques (affichages de dates, etc.)jsonld.js: filtres génériques pour le parsing de JSON-LD, utilisé par le layout générique jsonld.njkshapes.js: filtres génériques pour le parsing deshapes.json, qui est un fichier JSON qui encode quelques éléments d'une config SHACL - aussi utilisé par jsonld.njkarchives-nationales.js: filtres spécifiques pour le projet Garance
dans src/_data/i18n en particulier garance.js contient les libellés des entrées de menu qui correspondent aux vocabulaires contrôlés
Sous src/_layouts :
vocabulary.njk: layout d'affichage des pages de vocabulaire contrôlésjsonld.njk: layout d'affichage générique d'un objet JSON-LD en HTMLletters-agents.njketletters-places.njk: indexs alphabétiquesmain.njk: template racine principal dans lequel le résultat des autres templates est inclusagentOrPlaceHeader.njk: template d'entête pour les agents et les lieux
### Fichier shapes.json
Ce fichier contient les paramétrages pour:
- l'ordre d'affichage des propriétés pour chaque type d'entité (
sh:order) - la propriété à utiliser pour trier des valeurs multiples :
"dash:propertyRole": "dash:sortKeyRole" - Paramétrage PageFind :
- les propriétés à utiliser pour les meta dans Pagefind :
"pagefind:meta": ["Date de début"] - les propriétés à utiliser pour les facettes Pagefind :
"pagefind:filter": ["Type de collectivité"] - le poids dans l'index :
"pagefind:weight": 3.0 - les propriétés à ignorer :
"pagefind:ignore": true
- les propriétés à utiliser pour les meta dans Pagefind :
- la classe CSS à appliquer sur la propriété :
"volipi:class": "horizontal", - un template spécifique d'affichage :
"volipi:template": "renderRicoIdentifier",
- Travailler avec un tout petit sous-ensemble de notices pour tester plus rapidement en supprimant à la main des notices dans les dossiers des référentiels
- Faire une branche séparée pour la modification de façon à pouvoir la faire valider
- Modifier le framing d'entête des agents ou des lieux :
src/_data/framings/agentsHeader-framing.jsonet ajouter une entrée pour lire et structurer le prédicat correspondant 1.1 Tester avec la commande de frame et vérifier que la sortie contient bien les données attendues - Ajouter un ou plusieurs filtres dans le fichier javascript
src/utils/archives-nationales.jspour réaliser la lecture de la structure de données ajoutée dans le framing et renvoyer les bonnes données au layout d'affichage - Modifier la layout d'affichage de l'entête :
src/_layouts/agentOrPlaceHeader.njk - Modifier éventuellement les règles CSS liées à l'affichage de l'entête :
src/static/assets/css/garance.css
- Installation pip
sudo apt install python3-pip- Création d'environnement Virtuel
python -m venv envgarance- Activer l'environnement
Windows : envgarance/Scripts/activate.bat
Linux : source envgarance/- Installation de paquets
pip install -r requirements.txtDans le répértoire script/python, on a 2 fichiers label.py et convertToJson.py:
Créer fichiers de traductions RiC-0 dans Français et Anglais. Les résultats se stocke dans les fichiers rico.csv et definition.csv.
python label.py --input <Répertoire des fichiers de traductions RIC-O>Exemple
python label.py --input ../../rico
Convertir des fichiers RDF en un fichier JSON-LD.
Utilisation du Script:
python convertToJson.py --generate READ --input <Répertoire de fichiers RDF> --context <Fichier de context> --output <>
[--context] : Exemple
python convertToJson.py --generate READ --input .../Referentiels --context ../context.json --output garance.json