Studio Drupal · Diego-Suarez, Madagascar
Fondé en 2025 · 12°16′ S

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 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 publique
Drupal core
11
Requiert
Field, Options, Taxonomy, Datetime, Text et Media du core ; le module key ; le module contribué external_entities et le entities_ext propre à MADDev
Types de catalogue
lecture, book, research_paper et map, chacun un bundle library_item défini par le code
Type 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 champ
Fonctionne avec
Tout module de processeur External Entities enregistré, par exemple species_ext, wikipedia_ext, publications_ext ou entity_ext
Statut
En 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 ; 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 & 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.

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.