Liste des schémas

⚠️ Cette ontologie est en cours de développement. Les schémas et les descriptions peuvent changer sans préavis.

Biblioteka

Entités

biblioteka/entity/application_note.json

Une note libre attachée à n'importe quelle entité pour le contexte, les commentaires ou des informations supplémentaires.

biblioteka/entity/author.json

Une identité d'auteur liée à un ou plusieurs personnages, utilisée pour attribuer des œuvres littéraires.

biblioteka/entity/book.json

Une édition publiée spécifique d'une œuvre littéraire, identifiée par l'éditeur, l'année et le format. Généralement liée à ses œuvres littéraires via contains_work, à son auteur via authored_by et à un éditeur via published_by. Les exemplaires physiques sont suivis comme des entités book_exemplar liées via exemplar_of.

biblioteka/entity/book_exemplar.json

Un exemplaire physique d'une édition de livre, représentant un article dans la bibliothèque personnelle. Lié à son édition de livre via exemplar_of. Les images (couvertures, pages) sont attachées via has_image. L'emplacement de stockage est suivi via located_in. Plusieurs associations exemplar_of indiquent un recueil factice (plusieurs livres reliés ensemble).

biblioteka/entity/book_series.json

Une série thématique de livres ouverte publiée sous une marque ou un label commun (par ex. Penguin Classics, ЖЗЛ). Les livres sont liés via part_of_series avec un seriesNumber optionnel. Un livre peut appartenir à plusieurs séries. L'éditeur est lié via published_by.

biblioteka/entity/book_set.json

Un ensemble de publications à volume fixe regroupant plusieurs livres dans une collection numérotée (par ex. œuvres complètes, édition en plusieurs volumes). Les volumes individuels sont des entités book liées via volume_of avec volumeNumber. L'éditeur est lié via published_by.

biblioteka/entity/ephemera_exemplar.json

Un objet éphémère physique dans la collection personnelle, tel qu'une carte postale, carte de vœux, marque-page, coupure de journal, lettre ou photographie. Représente des objets de collection au niveau de l'exemplaire. Les images sont attachées via has_image. L'emplacement de stockage est suivi via located_in.

biblioteka/entity/literary_work.json

Une œuvre créative abstraite indépendante de toute édition ou traduction spécifique. Les éditions publiées sont suivies comme des entités book liées via contains_work. La paternité est enregistrée via authored_by reliant à une persona.

biblioteka/entity/printer.json

Une maison d'impression responsable de la production physique des livres.

biblioteka/entity/publisher.json

Une maison d'édition ou un label responsable de la production d'éditions de livres. Les livres, ensembles de livres et séries de livres sont liés aux éditeurs via published_by.

biblioteka/entity/quote.json

Une citation notable attribuée à un personnage ou extraite d'une œuvre littéraire. L'attribution est enregistrée via attributed_to. La source est suivie via taken_from ou contains_quote.

biblioteka/entity/translated_literary_work.json

Une traduction d'une œuvre littéraire dans une autre langue. Liée à l'œuvre originale via le champ originalWorkId. Le traducteur est lié via translated_by. Peut être contenue dans un livre via contains_work.

Associations

biblioteka/association/addressed_to.json

Relie une œuvre littéraire (côté gauche : lettre ou adresse ouverte) à la personne ou à l'organisation à laquelle elle est adressée (côté droit : personnage, auteur, organisation ou éditeur).

biblioteka/association/attributed_to.json

Relie une citation (côté gauche) à son auteur ou orateur présumé (côté droit : personnage ou auteur).

biblioteka/association/authored_by.json

Relie une œuvre créative (côté gauche : livre ou œuvre littéraire) au personnage qui l'a écrite (côté droit : auteur).

biblioteka/association/book_has_illustrator.json

Relie une édition de livre (côté gauche) au personnage qui l'a illustrée (côté droit : illustrateur).

biblioteka/association/contains_comments_by.json

Relie une œuvre (côté gauche : livre, œuvre littéraire ou traduction) au personnage qui a fourni des commentaires, une préface ou des notes (côté droit : commentateur).

biblioteka/association/contains_epigraph.json

Relie une œuvre (côté gauche : livre, œuvre littéraire ou traduction) à une citation utilisée comme épigraphe (côté droit : citation).

biblioteka/association/contains_quote.json

Relie une œuvre (côté gauche : livre, œuvre littéraire ou traduction) à une citation mentionnée dans son texte (côté droit : citation).

biblioteka/association/contains_work.json

Relie une édition de livre ou un ensemble de livres (côté gauche) à une œuvre littéraire qu'elle contient (côté droit : œuvre littéraire ou traduction).

biblioteka/association/copyright_held_by.json

Relie une œuvre littéraire (côté gauche : œuvre littéraire ou traduction) à l'entité qui détient ses droits d'auteur (côté droit : éditeur, personnage ou auteur).

biblioteka/association/dedicated_by.json

Relie une œuvre créative (côté gauche : book ou literary work) à la personne qui l'a dédiée (côté droit : persona ou author).

biblioteka/association/dedicated_to.json

Relie une œuvre créative (côté gauche : livre ou œuvre littéraire) à l'entité à laquelle elle est dédiée (côté droit : personnage, auteur ou œuvre littéraire).

multi

biblioteka/multi_association/dedication.json

Un événement de dédicace : la personne A a dédié une œuvre littéraire à la personne B. La première sous-association (dedicated_by) relie l'œuvre au dédicateur ; la seconde (dedicated_to) relie la même œuvre au dédicataire.

  • dedicated_by: literary_work → persona, author
  • dedicated_to: literary_work → persona, author

biblioteka/association/designed_by.json

Relie une œuvre (côté gauche : livre, œuvre littéraire ou traduction) au designer ou artiste responsable de son style visuel (côté droit : personnage ou auteur).

biblioteka/association/edited_by.json

Relie une œuvre (côté gauche : livre, œuvre littéraire ou traduction) à l'éditeur scientifique responsable de son édition (côté droit : personnage ou auteur).

biblioteka/association/exemplar_of.json

Relie un exemplaire physique d'un livre (côté gauche : exemplaire de livre) à son édition (côté droit : livre).

biblioteka/association/first_published_in.json

Relie une œuvre littéraire (côté gauche : œuvre littéraire ou traduction) au livre dans lequel elle a été publiée pour la première fois (côté droit : livre).

biblioteka/association/found_with.json

Relie un objet éphémère (côté gauche : exemplaire d'éphémère) à l'exemplaire physique du livre dans lequel il a été trouvé lors de l'acquisition (côté droit : exemplaire de livre). Plus spécifique qu'une relation de stockage ou de transaction générale.

biblioteka/association/founder_of.json

Relie un personnage (côté gauche : personnage ou auteur) à l'organisation qu'il a fondée (côté droit : éditeur, imprimeur ou entreprise).

multi

biblioteka/multi_association/gift.json

Un événement de don : la personne A a offert un objet à la personne B. La première sous-association (gifted_by) relie l'objet au donateur ; la seconde (gifted_to) relie le même objet au destinataire.

  • gifted_by: book_exemplar → persona, author
  • gifted_to: book_exemplar → persona, author

biblioteka/association/gifted_by.json

Relie un exemplaire physique d'un livre (côté gauche : book_exemplar) à la personne qui l'a offert (côté droit : persona ou author).

biblioteka/association/gifted_to.json

Relie un exemplaire physique d'un livre (côté gauche : book_exemplar) à la personne qui l'a reçu en cadeau (côté droit : persona ou author).

biblioteka/association/has_application_note_attached.json

Relie n'importe quelle entité (côté gauche) à une note d'application contenant des métadonnées supplémentaires ou des annotations (côté droit : note d'application).

biblioteka/association/imprint_of.json

Relie un label d'éditeur (côté gauche : éditeur) à son éditeur parent (côté droit : éditeur). Représente les relations hiérarchiques entre éditeurs.

biblioteka/association/inscribed_by.json

Relie un exemplaire physique d'un livre (côté gauche : book_exemplar) à la personne qui l'a inscrit, signé ou marqué (côté droit : persona ou author). Couvre les autographes, dédicaces, ex-libris et tampons.

biblioteka/association/inscription_image.json

Relie une personne qui a réalisé une inscription (côté gauche : persona ou author) à la photographie montrant cette inscription (côté droit : image). Permet à la même image de participer à d'autres associations (p. ex. has_image avec le rôle title_page) sans conflit.

biblioteka/association/interviewed_by.json

Relie une œuvre littéraire (côté gauche : interview en tant qu'œuvre littéraire) au personnage qui a conduit l'interview (côté droit : intervieweur ou auteur).

biblioteka/association/mentions.json

Relie une œuvre (côté gauche : œuvre littéraire, cinématographique ou logiciel) à toute entité mentionnée ou citée dans celle-ci (côté droit : tout type d'entité, y compris personnes, autres œuvres, organisations, lieux, localités, etc.).

biblioteka/association/part_of_series.json

Relie un livre ou une collection de livres (côté gauche : édition ou collection multi-volumes) à la série thématique dans laquelle il a été publié (côté droit : book series), avec un numéro de série facultatif.

biblioteka/association/printed_by.json

Relie une édition de livre (côté gauche : livre) à l'imprimeur responsable de sa production physique (côté droit : imprimeur).

biblioteka/association/published_by.json

Relie une édition de livre ou un ensemble de livres (côté gauche : livre ou ensemble de livres) à l'éditeur responsable de sa publication (côté droit : éditeur).

biblioteka/association/published_in.json

Relie une œuvre publiée (côté gauche : livre ou ensemble de livres) à la localité ou au lieu où elle a été publiée (côté droit : localité ou lieu).

biblioteka/association/reprint_of.json

Relie une édition de livre (côté gauche) à une édition antérieure dont elle est une réimpression ou dérivée (côté droit). Couvre les réimpressions, les éditions ultérieures et les autres éditions dérivées.

biblioteka/association/sequel_of.json

Relie une œuvre littéraire (côté gauche : suite) à l'œuvre littéraire qu'elle continue (côté droit : prédécesseur). Représente l'ordre des séries.

biblioteka/association/taken_from.json

Relie une citation (côté gauche) à l'œuvre littéraire dont elle a été extraite (côté droit : œuvre littéraire ou traduction).

biblioteka/association/takes_place_in.json

Relie une œuvre créative (côté gauche : œuvre littéraire ou traduction) au lieu géographique où l'action se déroule (côté droit : localité ou lieu).

biblioteka/association/translated_by.json

Relie une œuvre (côté gauche : livre, œuvre littéraire ou traduction) au traducteur responsable de sa traduction (côté droit : personnage ou auteur).

biblioteka/association/translation_of.json

Relie une œuvre littéraire traduite (côté gauche : œuvre littéraire traduite) à l'œuvre littéraire originale dont elle a été traduite (côté droit : œuvre littéraire).

biblioteka/association/volume_of.json

Relie un livre (côté gauche : volume individuel) à la collection multi-volumes à laquelle il appartient (côté droit : book set), avec son numéro de volume.

Business

Entités

business/entity/company.json

Une entreprise commerciale ou industrielle.

Associations

business/association/competed_against.json

Relie deux entités dans une compétition ou un match (les côtés gauche et droit sont interchangeables : personnage, logiciel, entreprise ou organisation). Les exemples incluent les matchs d'échecs, les rivalités commerciales ou les concours sportifs.

business/association/headquartered_in.json

Relie une entreprise (côté gauche) à la localité ou au lieu où son siège social est situé (côté droit : localité ou lieu).

business/association/incorporated_in.json

Relie une entreprise (côté gauche) à l'État ou à la juridiction où elle est légalement constituée ou enregistrée (côté droit : État).

Geography

Entités

geography/entity/place.json

Un emplacement géographique nommé qui n'est pas une localité.

geography/entity/settlement.json

Un lieu peuplé tel qu'une ville, un bourg ou un village.

Associations

geography/association/located_in.json

Relie une entité (côté gauche : lieu, localité, organisation, exemplaire de livre, exemplaire d'éphémère ou emplacement de stockage) à l'emplacement dans lequel elle se trouve (côté droit : localité, état ou emplacement de stockage).

Library

Entités

library/entity/storage_location.json

Un emplacement physique où sont stockés des exemplaires de livres, avec prise en charge de la hiérarchie (étagère, bibliothèque, pièce, appartement). Les exemplaires de livres sont liés via located_in. La hiérarchie est construite avec located_in entre les emplacements de stockage (transitif). Peut se connecter à la hiérarchie géographique via located_in vers settlement.

Media

Entités

media/entity/image.json

Une entité image représentant un fichier image binaire avec des métadonnées descriptives.

Associations

media/association/has_image.json

Relie n'importe quelle entité (côté gauche) à une image qui lui est associée (côté droit : image), avec un rôle précisant l'objectif de l'image (ex. : couverture, portrait).

media/association/primary_image.json

Enregistre une préférence explicite de l'utilisateur désignant une image (côté droit : image) comme la représentation visuelle principale de toute entité (côté gauche). Une seule association primary_image est autorisée par entité. Il s'agit d'un choix d'affichage sélectionné par l'utilisateur, et non d'une propriété intrinsèque de l'entité ou de l'image elle-même. L'image référencée doit également avoir une association has_image avec la même entité.

People

Entités

people/entity/persona.json

Une figure documentée, contestée, traditionnelle ou fictive avec des attributs biographiques. Couramment liée comme auteur via authored_by, traducteur via translated_by ou éditeur via edited_by. Les lieux de naissance et de décès sont enregistrés via born_in_settlement/born_in_state et died_in_settlement/died_in_state.

Associations

people/association/born_in_settlement.json

Relie un personnage (côté gauche) à la localité ou à la ville où il est né (côté droit : localité).

people/association/born_in_state.json

Relie un personnage (côté gauche) à l'État ou au pays où il est né (côté droit : État).

people/association/coauthor_of.json

Relie deux personnages qui ont coécrit une œuvre ensemble (les côtés gauche et droit sont interchangeables : personnage).

people/association/died_in_settlement.json

Relie un personnage (côté gauche) à la localité ou à la ville où il est décédé (côté droit : localité).

people/association/died_in_state.json

Relie un personnage (côté gauche) à l'État ou au pays où il est décédé (côté droit : État).

people/association/friend_of.json

Relie deux personnages dans une amitié (les côtés gauche et droit sont interchangeables : personnage).

people/association/title_granted_by.json

Relie un personnage (côté gauche) à l'organisation ou à l'État qui lui a accordé un titre, un diplôme ou une distinction (côté droit : organisation ou État).

people/association/interviewer_of.json

Relie un personnage intervieweur (côté gauche) au personnage interviewé (côté droit : personnage).

people/association/lived_in.json

Relie un personnage (côté gauche) à la localité ou au lieu où il a résidé (côté droit : localité ou lieu).

people/association/parent_of.json

Relie un personnage parent (côté gauche) à son enfant (côté droit : personnage).

people/association/relative_of.json

Relie deux personnages dans une relation familiale générale (les côtés gauche et droit sont interchangeables : personnage).

people/association/resided_in_state.json

Relie un personnage (côté gauche) à l'État ou au pays où il a résidé pendant une période de temps (côté droit : État).

people/association/romantic_relationship_with.json

Relie deux personnages dans une relation romantique (les côtés gauche et droit sont interchangeables : personnage).

people/association/spouse_of.json

Relie deux personnages dans une relation matrimoniale (les côtés gauche et droit sont interchangeables : personnage).

people/association/worked_for.json

Relie un personnage (côté gauche) à la personne ou l'organisation pour laquelle il a travaillé (côté droit : personnage ou organisation).

Performing_arts

Entités

performing_arts/entity/cinematic_work.json

Un film, un documentaire ou toute autre œuvre cinématographique.

performing_arts/entity/performance.json

Un spectacle ou événement unique — une date et une heure précises dans un lieu donné, avec une distribution spécifique.

performing_arts/entity/production.json

Une mise en scène spécifique d'une œuvre scénique par un metteur en scène, une compagnie de théâtre ou un festival particulier, au cours d'une saison définie.

performing_arts/entity/stage_work.json

Une composition abstraite pour les arts du spectacle — un opéra, un ballet, une pièce de théâtre ou une comédie musicale — indépendante de toute mise en scène ou représentation spécifique.

Associations

performing_arts/association/based_on.json

Relie une œuvre scénique ou cinématographique (côté gauche) à l'œuvre littéraire dont elle est tirée (côté droit : œuvre littéraire).

performing_arts/association/choreographed_by.json

Relie une œuvre scénique ou une production (côté gauche) à son chorégraphe (côté droit : personnage).

performing_arts/association/composed_by.json

Relie une œuvre scénique (côté gauche) à son compositeur (côté droit : personnage).

performing_arts/association/directed_by.json

Relie une œuvre cinématographique ou une production (côté gauche) à son réalisateur (côté droit : personnage).

performing_arts/association/features_performer.json

Relie une représentation (côté gauche) à un interprète qui y a participé (côté droit : personnage), avec des détails optionnels sur le rôle et le type d'instrument/voix.

performing_arts/association/instance_of_production.json

Relie une représentation (côté gauche) à la production à laquelle elle appartient (côté droit : production).

performing_arts/association/libretto_by.json

Relie une œuvre scénique (côté gauche) à son librettiste (côté droit : personnage).

performing_arts/association/performed_at.json

Relie une représentation (côté gauche) au lieu où elle s'est déroulée (côté droit : lieu ou organisation).

performing_arts/association/produced_by.json

Relie une production (côté gauche) à l'organisation qui l'a produite (côté droit : organisation).

performing_arts/association/staging_of.json

Relie une production (côté gauche) à l'œuvre scénique qu'elle réalise (côté droit : œuvre scénique).

Reader

Entités

reader/entity/reader_persona.json

Le personnage propre du lecteur utilisé pour suivre l'historique de lecture et les préférences.

reader/entity/user_list.json

Une liste nommée et curée par l'utilisateur d'entités arbitraires (par ex. une liste 'Desiderata' de livres à acquérir, un 'Projet de lecture 2026', une compilation de 'Recommandations de N' ou une liste de librairies à visiter). Les éléments sont rattachés via le schéma de sous-type selon le type de liste (fichier `_list_contains_v1.json` ; valeur du discriminateur `associationType` `_list_contains`) ; l'ensemble des types d'entité autorisés pour les éléments dépend du sous-type — par ex. `reading_project` restreint rightSide à book / literary_work / translated_literary_work, tandis que `desiderata` admet n'importe quel type d'entité. Optionnellement détenue par un personnage lecteur.

Associations

reader/association/custom_list_contains.json

Relie un user_list de type custom défini par l'utilisateur (côté gauche : user_list avec listType='custom') à un élément arbitraire qu'il contient (côté droit : tout type d'entité). Porte une machine à états générique (pending, done, abandoned) pour les cas qui ne correspondent à aucun listType prédéfini. Prend en charge un indicateur de priorité optionnel et une position optionnelle (1-based) lorsque le user_list parent est ordonné.

reader/association/desiderata_list_contains.json

Relie un user_list de type desiderata (côté gauche : user_list avec listType='desiderata') à un élément arbitraire qu'il contient (côté droit : tout type d'entité, par ex. livre, œuvre littéraire, personnage). Porte l'état d'acquisition du desideratum (pending, found, abandoned), la date d'acquisition et un indicateur de priorité optionnel pour mettre en évidence les éléments que l'utilisateur souhaite trouver en premier.

reader/association/reading_project_list_contains.json

Relie un user_list de projet de lecture (côté gauche : user_list avec listType='reading_project') à une œuvre qu'il contient (côté droit : book, literary_work ou translated_literary_work). Porte à la fois l'appartenance à la liste et l'état de lecture de cette œuvre dans le contexte de la liste — le même enum status et les mêmes champs de date que reads_v1 (to_read, reading, finished, abandoned). Quand une œuvre figure dans un projet de lecture, cet enregistrement est la source de vérité consolidée pour « dans la liste » et « état de lecture » ; un enregistrement reads_v1 séparé n'est pas requis pour cette intersection.

reader/association/reads.json

Relie un personnage lecteur (côté gauche : personnage lecteur) à une œuvre créative représentant une expérience de lecture (côté droit : livre, œuvre littéraire ou traduction).

reader/association/recommendations_list_contains.json

Relie un user_list de type recommendations (côté gauche : user_list avec listType='recommendations') à un élément arbitraire qu'il contient (côté droit : tout type d'entité). Suit si l'utilisateur a donné suite à la recommandation : pending, followed_up ou dismissed ; enregistre éventuellement la date du suivi.

reader/association/reference_list_contains.json

Relie un user_list de type reference (côté gauche : user_list avec listType='reference') à un élément arbitraire qu'il contient (côté droit : tout type d'entité, par ex. personnage, literary_work, localité). Les listes de référence sont des regroupements analytiques issus de la recherche (par ex. « auteurs mentionnés dans Empire Must Die ») ; les éléments y sont simplement inclus ou non, donc ce sous-type ne porte pas de champ status. Le champ position optionnel enregistre l'ordre canonique dans la source (par ex. ordre de mention).

reader/association/wishlist_list_contains.json

Relie un user_list de type wishlist (côté gauche : user_list avec listType='wishlist') à une cible arbitraire non acquérable qu'il contient (côté droit : lieu, localité, organisation, performance, etc.). Suit si la cible a été visitée ou expérimentée (pending, visited, abandoned), enregistre éventuellement la date de visite, prend en charge un indicateur de priorité optionnel pour les éléments incontournables et une position optionnelle (1-based) lorsque le wishlist est intentionnellement ordonné.

Social

Entités

social/entity/organization.json

Une organisation formelle, une institution ou un groupe.

social/entity/state.json

Une entité politique telle qu'un pays, un empire ou un territoire autonome.

Software

Entités

software/entity/software.json

Une application logicielle, un outil, un jeu vidéo ou un service web.

Associations

software/association/developed_by.json

Relie un logiciel (côté gauche : logiciel) à son développeur (côté droit : personnage, entreprise ou organisation).

Validation

Validation JSON Schema

Chaque enregistrement contient un champ $schema pointant vers l'URL du schéma. Vous pouvez valider qu'un enregistrement est conforme à son schéma avec n'importe quel outil compatible JSON Schema 2020-12. Par exemple, avec ajv-cli (Node.js) :

npm install -g ajv-cli ajv-formats
ajv validate -s https://public-schema.com/biblioteka/entity/book.json -d record.json

Validation sémantique

La validation JSON Schema vérifie la structure et les types, mais pas toutes les règles métier. Les scripts Deno ci-dessous vérifient des contraintes au-delà de JSON Schema — par exemple les sommes de contrôle ISBN/ISNI, la cohérence du tableau de noms et les exigences de graphe connexe pour les multi-associations.

Les scripts lisent le JSON depuis stdin et écrivent les erreurs sur stderr. Mode sans permissions :

cat record.json | deno run https://public-schema.com/dist/validate.ts

Vérification de la fraîcheur

Deno met les scripts distants en cache de manière agressive. Ajoutez --allow-net=public-schema.com pour que le script vérifie le hash en cache par rapport à la version publiée :

cat record.json | deno run --allow-net=public-schema.com https://public-schema.com/dist/validate.ts

Si la copie en cache est obsolète, le script se termine avec le code 2. Mettez à jour avec :

deno cache --reload https://public-schema.com/dist/validate.ts