Lista de esquemas

⚠️ Esta ontología está en desarrollo. Los esquemas y las descripciones pueden cambiar sin previo aviso.

Biblioteka

Entidades

biblioteka/entity/application_note.json

Una nota de formato libre adjunta a cualquier entidad para contexto, comentarios o información adicional.

biblioteka/entity/author.json

Una identidad autoral vinculada a una o más personas, utilizada para atribuir obras literarias.

biblioteka/entity/book.json

Una edición publicada específica de una obra literaria, identificada por editorial, año y formato. Típicamente vinculada a sus obras literarias mediante contains_work, a su autor mediante authored_by y a una editorial mediante published_by. Las copias físicas se registran como entidades book_exemplar vinculadas mediante exemplar_of.

biblioteka/entity/book_exemplar.json

Una copia física de una edición de libro, que representa un ejemplar en la biblioteca personal. Vinculada a su edición de libro mediante exemplar_of. Las imágenes (portadas, páginas) se adjuntan mediante has_image. La ubicación de almacenamiento se registra mediante located_in. Múltiples asociaciones exemplar_of indican un convoluto (varios libros encuadernados juntos).

biblioteka/entity/book_series.json

Una serie temática de libros de final abierto publicada bajo una marca común (ej. Penguin Classics, ЖЗЛ). Los libros se vinculan mediante part_of_series con seriesNumber opcional. Un libro puede pertenecer a varias series. La editorial se vincula mediante published_by.

biblioteka/entity/book_set.json

Un conjunto de publicación de volumen fijo que agrupa varios libros en una colección numerada (ej. obras completas, edición multitomo). Los volúmenes individuales son entidades book vinculadas mediante volume_of con volumeNumber. La editorial se vincula mediante published_by.

biblioteka/entity/ephemera_exemplar.json

Un objeto efímero físico en la colección personal, como una tarjeta postal, tarjeta de felicitación, marcapáginas, recorte de periódico, carta o fotografía. Representa objetos coleccionables a nivel de ejemplar. Las imágenes se adjuntan mediante has_image. La ubicación de almacenamiento se registra mediante located_in.

biblioteka/entity/literary_work.json

Una obra creativa abstracta independiente de cualquier edición o traducción específica. Las ediciones publicadas se registran como entidades book vinculadas mediante contains_work. La autoría se registra mediante authored_by vinculando a una persona.

biblioteka/entity/printer.json

Una imprenta responsable de la producción física de libros.

biblioteka/entity/publisher.json

Una editorial o sello editorial responsable de producir ediciones de libros. Los libros, conjuntos de libros y series de libros se vinculan a las editoriales mediante published_by.

biblioteka/entity/quote.json

Una cita notable atribuida a una persona o extraída de una obra literaria. La atribución se registra mediante attributed_to. La fuente se registra mediante taken_from o contains_quote.

biblioteka/entity/translated_literary_work.json

Una traducción de una obra literaria a otro idioma. Se vincula a su obra original mediante el campo originalWorkId. El traductor se vincula mediante translated_by. Puede incluirse en un libro mediante contains_work.

Asociaciones

biblioteka/association/addressed_to.json

Vincula una obra literaria (lado izquierdo: carta o discurso abierto) con la persona u organización a la que está dirigida (lado derecho: persona, autor, organización o editorial).

biblioteka/association/attributed_to.json

Vincula una cita (lado izquierdo) con su presunto autor o hablante (lado derecho: persona o autor).

biblioteka/association/authored_by.json

Vincula una obra creativa (lado izquierdo: libro u obra literaria) con la persona que la escribió (lado derecho: autor).

biblioteka/association/book_has_illustrator.json

Vincula una edición de libro (lado izquierdo) con la persona que la ilustró (lado derecho: ilustrador).

biblioteka/association/contains_comments_by.json

Vincula una obra (lado izquierdo: libro, obra literaria u obra literaria traducida) con la persona que proporcionó comentarios, prólogo o notas (lado derecho: comentarista).

biblioteka/association/contains_epigraph.json

Vincula una obra (lado izquierdo: libro, obra literaria u obra literaria traducida) con una cita utilizada como epigrafe (lado derecho: cita).

biblioteka/association/contains_quote.json

Vincula una obra (lado izquierdo: libro, obra literaria u obra literaria traducida) con una cita mencionada en su texto (lado derecho: cita).

biblioteka/association/contains_work.json

Vincula una edición de libro o un conjunto de libros (lado izquierdo) con una obra literaria que contiene (lado derecho: obra literaria u obra literaria traducida).

biblioteka/association/copyright_held_by.json

Vincula una obra literaria (lado izquierdo: obra literaria u obra literaria traducida) con la entidad que posee sus derechos de autor (lado derecho: editorial, persona o autor).

biblioteka/association/dedicated_by.json

Vincula una obra creativa (lado izquierdo: libro u obra literaria) con la persona que la dedicó (lado derecho: persona o autor).

biblioteka/association/dedicated_to.json

Vincula una obra creativa (lado izquierdo: libro u obra literaria) con la entidad a la que está dedicada (lado derecho: persona, autor u obra literaria).

multi

biblioteka/multi_association/dedication.json

Un evento de dedicatoria: la persona A dedicó una obra literaria a la persona B. La primera sub-asociación (dedicated_by) vincula la obra con el dedicante; la segunda (dedicated_to) vincula la misma obra con el dedicatario.

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

biblioteka/association/designed_by.json

Vincula una obra (lado izquierdo: libro, obra literaria u obra literaria traducida) con el diseñador o artista responsable de su estilo visual (lado derecho: persona o autor).

biblioteka/association/edited_by.json

Vincula una obra (lado izquierdo: libro, obra literaria u obra literaria traducida) con el editor responsable de su edición (lado derecho: persona o autor).

biblioteka/association/exemplar_of.json

Vincula una copia física de libro (lado izquierdo: ejemplar) con su edición de libro (lado derecho: libro).

biblioteka/association/first_published_in.json

Vincula una obra literaria (lado izquierdo: obra literaria u obra literaria traducida) con el libro donde apareció por primera vez (lado derecho: libro).

biblioteka/association/found_with.json

Vincula un objeto de efímera (lado izquierdo: ejemplar de efímera) con la copia física del libro en la que fue encontrado al momento de la adquisición (lado derecho: ejemplar de libro). Más específico que una relación general de almacenamiento o transacción.

biblioteka/association/founder_of.json

Vincula una persona (lado izquierdo: persona o autor) con la organización que fundo (lado derecho: editorial, imprenta o empresa).

multi

biblioteka/multi_association/gift.json

Un evento de regalo: la persona A regaló un objeto a la persona B. La primera sub-asociación (gifted_by) vincula el objeto con el donante; la segunda (gifted_to) vincula el mismo objeto con el destinatario.

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

biblioteka/association/gifted_by.json

Vincula una copia física de libro (lado izquierdo: book_exemplar) con la persona que lo regaló (lado derecho: persona o autor).

biblioteka/association/gifted_to.json

Vincula una copia física de libro (lado izquierdo: book_exemplar) con la persona que lo recibió como regalo (lado derecho: persona o autor).

biblioteka/association/has_application_note_attached.json

Vincula cualquier entidad (lado izquierdo) con una nota de aplicacion que contiene metadatos adicionales o anotaciones (lado derecho: nota de aplicacion).

biblioteka/association/imprint_of.json

Vincula un sello editorial (lado izquierdo: editorial) con su editorial matriz (lado derecho: editorial). Representa relaciones jerarquicas entre editoriales.

biblioteka/association/inscribed_by.json

Vincula una copia física de libro (lado izquierdo: book_exemplar) con la persona que la inscribió, firmó o marcó (lado derecho: persona o autor). Cubre autógrafos, dedicatorias, ex libris y sellos.

biblioteka/association/inscription_image.json

Vincula a la persona que realizó una inscripción (lado izquierdo: persona o autor) con la fotografía que muestra dicha inscripción (lado derecho: imagen). Permite que la misma imagen participe en otras asociaciones sin conflicto.

biblioteka/association/interviewed_by.json

Vincula una obra literaria (lado izquierdo: entrevista como obra literaria) con la persona que realizó la entrevista (lado derecho: entrevistador).

biblioteka/association/mentions.json

Vincula una obra (lado izquierdo: obra literaria, obra cinematográfica o software) con cualquier entidad mencionada o citada en ella (lado derecho: cualquier tipo de entidad, incluidas personas, otras obras, organizaciones, lugares, asentamientos, etc.).

biblioteka/association/part_of_series.json

Vincula un libro o conjunto de libros (lado izquierdo: edicion o conjunto multivolumen) con la serie tematica en la que fue publicado (lado derecho: serie de libros).

biblioteka/association/printed_by.json

Vincula una edición de libro (lado izquierdo: libro) con la imprenta responsable de su producción física (lado derecho: imprenta).

biblioteka/association/published_by.json

Vincula una edición de libro o un conjunto de libros (lado izquierdo: libro o conjunto de libros) con la editorial responsable de su publicación (lado derecho: editorial).

biblioteka/association/published_in.json

Vincula una obra publicada (lado izquierdo: libro o conjunto de libros) con el asentamiento o lugar donde fue publicada (lado derecho: asentamiento o lugar).

biblioteka/association/reprint_of.json

Vincula una edición de un libro (lado izquierdo) con una edición anterior de la cual fue reimpresa o derivada (lado derecho). Cubre reimpresiones, ediciones posteriores y otras ediciones derivadas.

biblioteka/association/sequel_of.json

Vincula una obra literaria (lado izquierdo: secuela) con la obra literaria que continua (lado derecho: predecesora). Representa el orden en una serie.

biblioteka/association/taken_from.json

Vincula una cita (lado izquierdo) con la obra literaria de la que fue extraída (lado derecho: obra literaria u obra literaria traducida).

biblioteka/association/takes_place_in.json

Vincula una obra creativa (lado izquierdo: obra literaria u obra literaria traducida) con la ubicacion geografica donde ocurre la accion (lado derecho: asentamiento o lugar).

biblioteka/association/translated_by.json

Vincula una obra (lado izquierdo: libro, obra literaria u obra literaria traducida) con el traductor responsable de su traducción (lado derecho: persona o autor).

biblioteka/association/translation_of.json

Vincula una obra literaria traducida (lado izquierdo: obra literaria traducida) con la obra literaria original de la que fue traducida (lado derecho: obra literaria).

biblioteka/association/volume_of.json

Vincula un libro (lado izquierdo: volumen individual) con el conjunto multivolumen al que pertenece (lado derecho: conjunto de libros).

Business

Entidades

business/entity/company.json

Una empresa comercial o industrial.

Asociaciones

business/association/competed_against.json

Vincula dos entidades en una competencia o partido (los lados izquierdo y derecho son intercambiables: persona, software, empresa u organización). Ejemplos: partidas de ajedrez, rivalidades comerciales o competencias deportivas.

business/association/headquartered_in.json

Vincula una empresa (lado izquierdo) con el asentamiento o lugar donde se encuentra su sede central (lado derecho: asentamiento o lugar).

business/association/incorporated_in.json

Vincula una empresa (lado izquierdo) con el estado o jurisdicción donde está legalmente constituida o registrada (lado derecho: estado).

Geography

Entidades

geography/entity/place.json

Un lugar geográfico con nombre que no es un asentamiento.

geography/entity/settlement.json

Un lugar poblado como una ciudad, pueblo o aldea.

Asociaciones

geography/association/located_in.json

Vincula una entidad (lado izquierdo: lugar, asentamiento, organizacion, ejemplar de libro, ejemplar de efímera o ubicacion de almacenamiento) con la ubicacion en la que se encuentra (lado derecho: asentamiento, estado o ubicacion de almacenamiento).

Library

Entidades

library/entity/storage_location.json

Una ubicación física donde se almacenan ejemplares de libros, con jerarquía anidada (estante, estantería, habitación, apartamento). Los ejemplares de libros se vinculan mediante located_in. La jerarquía se construye con located_in entre ubicaciones de almacenamiento (transitivo). Puede conectarse a la jerarquía geográfica mediante located_in a settlement.

Media

Entidades

media/entity/image.json

Una entidad de imagen que representa un archivo de imagen binario con metadatos descriptivos.

Asociaciones

media/association/has_image.json

Vincula cualquier entidad (lado izquierdo) con una imagen asociada (lado derecho: imagen), con un rol que especifica el propósito de la imagen (por ejemplo, portada, retrato).

media/association/primary_image.json

Registra una preferencia explícita del usuario que designa una imagen (lado derecho: imagen) como la representación visual principal de cualquier entidad (lado izquierdo). Se permite como máximo una asociación primary_image por entidad. Es una elección de visualización seleccionada por el usuario, no una propiedad inherente de la entidad ni de la imagen en sí. La imagen referenciada también debe tener una asociación has_image con la misma entidad.

People

Entidades

people/entity/persona.json

Una figura documentada, discutida, tradicional o ficticia con atributos biográficos. Comúnmente vinculada como autor mediante authored_by, traductor mediante translated_by o editor mediante edited_by. Los lugares de nacimiento y muerte se registran mediante born_in_settlement/born_in_state y died_in_settlement/died_in_state.

Asociaciones

people/association/born_in_settlement.json

Vincula una persona (lado izquierdo) con el asentamiento o ciudad donde nació (lado derecho: asentamiento).

people/association/born_in_state.json

Vincula una persona (lado izquierdo) con el estado o país donde nació (lado derecho: estado).

people/association/coauthor_of.json

Vincula dos personas que han sido coautores de una obra (los lados izquierdo y derecho son intercambiables: persona).

people/association/died_in_settlement.json

Vincula una persona (lado izquierdo) con el asentamiento o ciudad donde falleció (lado derecho: asentamiento).

people/association/died_in_state.json

Vincula una persona (lado izquierdo) con el estado o país donde falleció (lado derecho: estado).

people/association/friend_of.json

Vincula dos personas en una relacion de amistad (los lados izquierdo y derecho son intercambiables: persona).

people/association/title_granted_by.json

Vincula una persona (lado izquierdo) con la organización o estado que le otorgó un titulo, grado u honor (lado derecho: organización o estado).

people/association/interviewer_of.json

Vincula a un entrevistador (lado izquierdo: persona) con la persona entrevistada (lado derecho: persona).

people/association/lived_in.json

Vincula una persona (lado izquierdo) con el asentamiento o lugar donde residió (lado derecho: asentamiento o lugar).

people/association/parent_of.json

Vincula a un padre o madre (lado izquierdo: persona) con su hijo o hija (lado derecho: persona).

people/association/relative_of.json

Vincula dos personas en una relacion familiar general (los lados izquierdo y derecho son intercambiables: persona).

people/association/resided_in_state.json

Vincula una persona (lado izquierdo) con el estado o país donde residió durante un periodo de tiempo (lado derecho: estado).

people/association/romantic_relationship_with.json

Vincula dos personas en una relacion romántica (los lados izquierdo y derecho son intercambiables: persona).

people/association/spouse_of.json

Vincula dos personas en una relacion matrimonial (los lados izquierdo y derecho son intercambiables: persona).

people/association/worked_for.json

Vincula una persona (lado izquierdo) con la persona u organización para la que trabajó (lado derecho: persona u organización).

Performing_arts

Entidades

performing_arts/entity/cinematic_work.json

Una película, documental u otra obra cinematográfica.

performing_arts/entity/performance.json

Un espectáculo o evento único — una fecha y hora específicas en un lugar determinado, con un elenco específico.

performing_arts/entity/production.json

Una puesta en escena específica de una obra escénica por un director, compañía teatral o festival particular, dentro de una temporada definida.

performing_arts/entity/stage_work.json

Una composición abstracta para las artes escénicas — una ópera, ballet, obra de teatro o musical — independiente de cualquier puesta en escena o representación específica.

Asociaciones

performing_arts/association/based_on.json

Vincula una obra escénica o cinematográfica (lado izquierdo) con la obra literaria en la que se basa (lado derecho: obra literaria).

performing_arts/association/choreographed_by.json

Vincula una obra escénica o producción (lado izquierdo) con su coreógrafo (lado derecho: persona).

performing_arts/association/composed_by.json

Vincula una obra escénica (lado izquierdo) con su compositor (lado derecho: persona).

performing_arts/association/directed_by.json

Vincula una obra cinematográfica o producción (lado izquierdo) con su director (lado derecho: persona).

performing_arts/association/features_performer.json

Vincula una representación (lado izquierdo) con un intérprete que participó en ella (lado derecho: persona), con detalles opcionales de rol e instrumento/tipo de voz.

performing_arts/association/instance_of_production.json

Vincula una representación (lado izquierdo) con la producción a la que pertenece (lado derecho: producción).

performing_arts/association/libretto_by.json

Vincula una obra escénica (lado izquierdo) con su libretista (lado derecho: persona).

performing_arts/association/performed_at.json

Vincula una representación (lado izquierdo) con el lugar donde se llevó a cabo (lado derecho: lugar u organización).

performing_arts/association/produced_by.json

Vincula una producción (lado izquierdo) con la organización que la produjo (lado derecho: organización).

performing_arts/association/staging_of.json

Vincula una producción (lado izquierdo) con la obra escénica que realiza (lado derecho: obra escénica).

Reader

Entidades

reader/entity/reader_persona.json

La persona del lector utilizada para rastrear el historial de lectura y las preferencias.

reader/entity/user_list.json

Una lista nominada y curada por el usuario de entidades arbitrarias (p. ej. una lista 'Desiderata' de libros para adquirir, un 'Proyecto de lectura 2026', una recopilación de 'Recomendaciones de N' o una lista de 'Librerías para visitar'). Los elementos se adjuntan mediante el esquema de subtipo según el tipo de lista (archivo `_list_contains_v1.json`; valor discriminador `associationType` `_list_contains`); el conjunto de tipos de entidad permitidos para los elementos depende del subtipo — p. ej. `reading_project` restringe rightSide a book / literary_work / translated_literary_work, mientras que `desiderata` admite cualquier tipo de entidad. Opcionalmente pertenece a una persona lectora.

Asociaciones

reader/association/custom_list_contains.json

Vincula un user_list de tipo custom definido por el usuario (lado izquierdo: user_list con listType='custom') con un elemento arbitrario que contiene (lado derecho: cualquier tipo de entidad). Lleva una máquina de estados genérica (pending, done, abandoned) para casos que no encajan en ningún listType predefinido. Admite una bandera de prioridad opcional y una posición opcional (1-based) cuando el user_list padre está ordenado.

reader/association/desiderata_list_contains.json

Vincula un user_list de tipo desiderata (lado izquierdo: user_list con listType='desiderata') con un elemento arbitrario que contiene (lado derecho: cualquier tipo de entidad, p. ej. libro, obra literaria, persona). Registra el estado de adquisición del desideratum (pending, found, abandoned), la fecha de adquisición y una bandera de prioridad opcional para destacar los elementos que el usuario más desea encontrar primero.

reader/association/reading_project_list_contains.json

Vincula un user_list de proyecto de lectura (lado izquierdo: user_list con listType='reading_project') con una obra que contiene (lado derecho: book, literary_work o translated_literary_work). Lleva tanto la pertenencia a la lista como el estado de lectura de esa obra en el contexto de la lista — el mismo enum status y campos de fecha que reads_v1 (to_read, reading, finished, abandoned). Cuando una obra está en un proyecto de lectura, este registro es la fuente única de verdad para ambos: 'en la lista' y 'estado de lectura'; no se requiere un registro reads_v1 separado para esa intersección.

reader/association/reads.json

Vincula una persona lectora (lado izquierdo: persona lectora) con una obra creativa que representa una experiencia de lectura (lado derecho: libro, obra literaria u obra literaria traducida).

reader/association/recommendations_list_contains.json

Vincula un user_list de tipo recommendations (lado izquierdo: user_list con listType='recommendations') con un elemento arbitrario que contiene (lado derecho: cualquier tipo de entidad). Registra si el usuario ha actuado sobre la recomendación: pending, followed_up o dismissed; opcionalmente registra la fecha de seguimiento.

reader/association/reference_list_contains.json

Vincula un user_list de tipo reference (lado izquierdo: user_list con listType='reference') con un elemento arbitrario que contiene (lado derecho: cualquier tipo de entidad, p. ej. persona, literary_work, asentamiento). Las listas de referencia son agrupaciones analíticas derivadas de la investigación (p. ej. 'autores mencionados en Empire Must Die'); los elementos simplemente están o no están incluidos, por lo que este subtipo no lleva campo status. El campo opcional position registra el orden canónico dentro de la fuente (p. ej. orden de mención).

reader/association/wishlist_list_contains.json

Vincula un user_list de tipo wishlist (lado izquierdo: user_list con listType='wishlist') con un destino arbitrario no adquirible que contiene (lado derecho: lugar, asentamiento, organización, actuación, etc.). Registra si el destino ha sido visitado o experimentado (pending, visited, abandoned), opcionalmente registra la fecha de visita, admite una bandera de prioridad opcional para elementos imprescindibles y una posición opcional (1-based) cuando el wishlist está intencionalmente ordenado.

Social

Entidades

social/entity/organization.json

Una organización formal, institución o grupo.

social/entity/state.json

Una entidad política como un país, imperio o territorio autónomo.

Software

Entidades

software/entity/software.json

Una aplicación de software, herramienta, videojuego o servicio web.

Asociaciones

software/association/developed_by.json

Vincula una obra de software (lado izquierdo: software) con su desarrollador (lado derecho: persona, empresa u organización).

Validación

Validación de JSON Schema

Cada registro contiene un campo $schema con la URL del esquema. Puede validar que un registro cumple con su esquema usando cualquier herramienta compatible con JSON Schema 2020-12. Por ejemplo, con 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

Validación semántica

La validación de JSON Schema verifica estructura y tipos, pero no todas las reglas de negocio. Los scripts Deno a continuación verifican restricciones que van más allá de JSON Schema — por ejemplo, sumas de verificación ISBN/ISNI, consistencia del arreglo de nombres y requisitos de grafo conexo para multi-asociaciones.

Los scripts leen JSON de stdin y escriben errores en stderr. Modo sin permisos:

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

Verificación de actualización

Deno almacena en caché los scripts remotos de forma agresiva. Agregue --allow-net=public-schema.com para que el script verifique el hash en caché contra la versión publicada:

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

Si la copia en caché está desactualizada, el script sale con el código 2. Actualice con:

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