Research Library

Un catalogue Drupal pour les conférences, les livres, les articles et les cartes : chaque élément est classé selon des schémas standards, réconcilié avec une piste d’audit et navigable par sujet.

 

## Ce que c'est

Research Library est une sous-suite Drupal à trois modules, `classification_x`, `library_x` et `research_library`, qui répertorie du contenu externe tel que des conférences, des livres, des articles de recherche et des cartes dans un registre à score de confiance, classe chaque élément selon des systèmes de classification bibliographique et par sujet, et offre aux visiteurs une page à facettes pour parcourir le résultat.

Elle s'appuie sur la suite [External Entities](/fr/produits/external-entities) de MADDev : plutôt que de récupérer elle-même le contenu, elle enregistre où se trouve un élément et quel module de traitement sait déjà comment le récupérer.



 

 





 

## En un coup d’œil

Modules`classification_x`, le sous-système de classification ; `library_x`, le hub du catalogue ; `research_library`, la couche de navigation publiqueDrupal core11RequiertField, Options, Taxonomy, Datetime, Text et Media du core ; le module `key` ; le module contribué `external_entities` et le `entities_ext` propre à MADDevTypes de catalogue`lecture`, `book`, `research_paper` et `map`, chacun un bundle `library_item` défini par le codeType de champ`classification`, un type de champ générique : un tuple schéma, code et libellé, avec plusieurs schémas pouvant cohabiter sur le même champFonctionne avecTout module de processeur External Entities enregistré, par exemple `species_ext`, `wikipedia_ext`, `publications_ext` ou `entity_ext`StatutEn développement. Construit et vérifié en juin 2026 avec une première collection de 20 conférences et 11 livres pour [The Neville Goddard Library](/fr/projets/neville-goddard-library) ; le moteur de déduplication et de fusion a suivi. Pas encore sur un site public.

 

 





 

## Ce que les visiteurs voient

La page `/library` présente le catalogue par facettes selon le type d’élément, la collection et le système de classification, avec une zone de recherche pour les titres.

L’ouverture d’un élément affiche sa page de détail : titre, date, sources, puces de classification et, lorsqu’une copie a été mise en miroir, le corps de texte de l’élément lui-même.



 

 





 

## Ce que cela ajoute à un site Drupal

### Types d'entités

`library_item` : l'enregistrement de catalogue, en quatre bundles définis par code : `lecture`, `book`, `research_paper` et `map`. `library_source` : une ligne par dépôt amont de confiance, contenant les sous-scores de confiance propres à cette source.

### Champs et taxonomie

- `classification` : un type de champ générique contenant un schéma, un code et un libellé ; plusieurs schémas peuvent être placés sur le même champ
- `library_collection` : un vocabulaire de taxonomie pour regrouper des éléments dans un projet ou une collection
- Quatre champs de base sur `library_item` portent le modèle de réconciliation de la suite : `field_classification` ; `field_local_copy`, un pointeur vers une copie locale corrigée que la collecte ultérieure n'écrasera pas ; `field_duplicate_of`, un lien souple vers l'élément canonique ; et `field_merge_provenance`, une piste d'audit JSON de la façon dont une décision de fusion a été prise

### Types de plugins

- `@ClassificationScheme` : une classe par schéma de classification ; une nouvelle apparaît dans le formulaire de paramètres et dans la liste déroulante des schémas du widget de champ sans aucune modification de schéma ni de configuration
- `@LibraryItemType` : un bundle de catalogue tel que `lecture` ou `map`
- `@LibraryMergeStrategy` : comment deux éléments de catalogue sont réconciliés ; les stratégies fournies sont `soft_merge` (par défaut), `confidence` et `provenance`

### Pages

- `/library` : la page publique de navigation à facettes, par type d'élément, collection et schéma de classification, avec une recherche par titre
- `/library/item/{id}` : la page de détail d'un élément, avec son titre, sa date, ses sources, ses étiquettes de classification et, lorsqu'une copie a été mise en miroir, son texte principal
- `/admin/config/content/classification` : paramètres du schéma de classification
- `/admin/content/library/duplicates` : curation de déduplication
- `/admin/config/library/merge-policy` : configuration de la politique de fusion

### Services

`library_x.dedup` trouve les éléments susceptibles d'être des doublons par titre normalisé au sein du même bundle et de la même collection. `library_x.classifier` étiquette les éléments selon des schémas tels que LCC, Dewey et les catégories Wikipédia à l'aide de Claude, exécuté depuis Drush plutôt qu'automatiquement. `classification_x.iconclass_motif_bridge` relie de manière souple une notation Iconclass à une entité de motif folklorique, et ne fait rien lorsque cet autre module est absent.

### Commandes Drush

`lxin` enregistre en masse une première tranche d'entrées de catalogue à partir d'un CSV. `lxmir` met en miroir les éléments approuvés : il récupère le contenu, crée un fichier géré et un élément média de type document, puis l'attache à l'élément de catalogue.

### Permission

La route `/library` nécessite *Afficher les éléments de bibliothèque publiés*, une permission définie par `library_x`.



 

 





 

## Sources de données et licences

Seul `classification_x` atteint une source externe, et seulement de manière souple. Les libellés du Thésaurus Art &amp; Architecture de Getty sont résolus auprès du service de vocabulaire Linked Open Data de Getty lorsque le module `data_ext` de MADDev est installé, et retombent sur le code brut lorsqu'il ne l'est pas.

Les légendes de la Classification décimale de Dewey sont sous licence OCLC, donc `classification_x` stocke et affiche le code brut par défaut et n'affiche le texte de la légende qu'une fois qu'une clé de licence est configurée dans le module `key`. MADDev applique la même discipline au niveau des œuvres entières, et pas seulement au niveau des métadonnées de catalogue, via [Copyrights Guard](/fr/produits/copyrights-guard).



 

 





 

## Décisions de conception

- **Stratification stricte à sens unique.** `classification_x` ne dépend de rien de ce qui se trouve au-dessus ; `library_x` dépend en aval de `classification_x` ; `research_library` dépend en aval de `library_x` et ne définit aucune entité qui lui soit propre. Aucune couche ne renvoie vers le haut.
- **Les nouveaux schémas de classification ne nécessitent aucune modification de schéma.** L’ajout d’une seule nouvelle classe `@ClassificationScheme` suffit : elle apparaît d’elle-même dans le formulaire de paramètres et dans la liste déroulante des schémas du widget de champ.
- **Les types de bundle du catalogue sont du code, pas de la configuration.** Un nouveau type `library_item` est un plugin `@LibraryItemType`, et la page de navigation de `research_library` le prend automatiquement en compte dans ses facettes, sans code d’interface qui lui soit propre.
- **La réconciliation conserve la trace, pas seulement la fusion.** Un élément de catalogue peut pointer vers une copie corrigée localement que le moissonnage ultérieur n’écrasera pas, être marqué comme doublon d’un autre élément, et porter un journal d’audit JSON indiquant comment cette décision a été prise, selon l’une de trois stratégies de fusion enfichables.
- **Un chemin de mise à niveau nommé, pas une réécriture.** La page de navigation filtre en PHP pour l’instant, un choix adapté à une première tranche de la collection ; une version s’appuyant sur Search API est le remplacement prévu à mesure qu’elle grandit.



 

 





## Démarrer un projet.

Parlez-nous du contenu que vous souhaitez cataloguer et classer, et de la manière dont vous souhaitez que les visiteurs le parcourent.



[Contactez-nous →](/fr/contact)