linneo

Referencia de Linneo

Linneo es una biblioteca para Java 21 o superior, sin dependencias en tiempo de ejecución, que incluye una taxonomía de clasificación de datos y la aplica a un modelo de datos. Una Taxonomy contiene tres jerarquías de términos con claves en notación de puntos: categorías de datos (qué contiene un campo), usos de datos (para qué se tratan) y sujetos de datos (de quién son). La taxonomía estándar es la taxonomía por defecto de fideslang más las extensiones de Linneo para datos no personales y datos educativos. Cada categoría de datos lleva la protección que requiere (naturaleza jurídica, confidencialidad, integridad, secreto), que sus hijas heredan y solo pueden endurecer. Los modelos declaran lo que contienen con anotaciones, un Classifier comprueba esas anotaciones en los tests, las actividades de tratamiento vinculan finalidades, interesados y datos personales con sus bases jurídicas y generan el registro de actividades de tratamiento del RGPD, y tres exportadores traducen la taxonomía para un catálogo de datos: OpenMetadataCatalog (clasificaciones y etiquetas de OpenMetadata), DataHubCatalog (un glosario de negocio de DataHub) y AtlasCatalog (clasificaciones de Apache Atlas). Las aplicaciones añaden sus propios términos mediante una TaxonomyExtension, y Linneo incluye una opcional para universidades que solo se aplica si se pide.

Esta referencia describe todos los tipos públicos. Para una introducción guiada, consulta el curso.

Módulo y paquetes

El JAR es el módulo JPMS con nombre io.github.devbpm.linneo:

module io.github.devbpm.linneo {
    exports io.github.devbpm.linneo;
    exports io.github.devbpm.linneo.annotation;
    exports io.github.devbpm.linneo.classify;
    exports io.github.devbpm.linneo.processing;
    exports io.github.devbpm.linneo.catalog.openmetadata;
    exports io.github.devbpm.linneo.catalog.datahub;
    exports io.github.devbpm.linneo.catalog.atlas;
    exports io.github.devbpm.linneo.extension.university;

    uses io.github.devbpm.linneo.TaxonomyExtension;
}
Paquete Exportado Contenido
io.github.devbpm.linneo sí La taxonomía (Taxonomy, TaxonomyBuilder, TaxonomyExtension), sus términos (Term, TermInfo, DataCategory, DataUse, DataSubject), los enumerados de protección y las constantes de claves (Categories, DataUses, DataSubjects)
io.github.devbpm.linneo.annotation sí Las anotaciones que declaran qué contiene cada campo de un modelo: @Category, @DefaultCategory, @CategoryByRow, @Exempt
io.github.devbpm.linneo.classify sí Lectura y verificación de las anotaciones de un modelo: Classifier, ClassClassification, FieldClassification, Violation, ClassificationException
io.github.devbpm.linneo.processing sí Las actividades de tratamiento y el registro de actividades de tratamiento del RGPD: ProcessingActivity, Transfer, LegalBasis, SpecialCategoryCondition, CriminalDataBasis, TransferSafeguard, ProcessingChecker, CheckedActivity, ProcessingViolation, ProcessingException, ProcessingRecord
io.github.devbpm.linneo.catalog.openmetadata sí La taxonomía como clasificaciones y etiquetas de OpenMetadata: OpenMetadataCatalog, OpenMetadataMapping, OmClassification, OmTag. Sin llamadas de red
io.github.devbpm.linneo.catalog.datahub sí La taxonomía como glosario de negocio de DataHub: DataHubCatalog, DataHubMapping, DhProposal. Sin llamadas de red
io.github.devbpm.linneo.catalog.atlas sí La taxonomía como clasificaciones de Apache Atlas: AtlasCatalog, AtlasMapping, AtlasClassificationDef. Sin llamadas de red
io.github.devbpm.linneo.extension.university sí Una extensión opcional para universidades, que no se aplica por defecto: UniversityTaxonomy y sus constantes de claves UniversityCategories, UniversityDataUses, UniversityDataSubjects
io.github.devbpm.linneo.internal no StandardTaxonomy, que carga los recursos TSV incluidos, y Json, el escritor JSON mínimo que comparten los tres exportadores. No forma parte de la API pública

La cláusula uses permite que Taxonomy.load() y TaxonomyBuilder.withExtensions() encuentren extensiones con java.util.ServiceLoader; consulta Extender la taxonomía. El módulo no tiene cláusula provides: las extensiones que incluye se aplican de forma explícita; consulta Extensiones.

Para usar la biblioteca desde una aplicación modular:

module com.example.app {
    requires io.github.devbpm.linneo;
}

Páginas

Modelo de la taxonomía (io.github.devbpm.linneo)

Extensiones (io.github.devbpm.linneo.extension.university)

Anotaciones (io.github.devbpm.linneo.annotation)

Clasificación (io.github.devbpm.linneo.classify)

Actividades de tratamiento (io.github.devbpm.linneo.processing)

OpenMetadata (io.github.devbpm.linneo.catalog.openmetadata)

DataHub (io.github.devbpm.linneo.catalog.datahub)

Apache Atlas (io.github.devbpm.linneo.catalog.atlas)

Comparativa de catálogos de datos

Los tres exportadores publican la misma taxonomía y calculan las etiquetas de cada campo clasificado a partir del mismo FieldClassification; se diferencian en lo que ofrece cada catálogo. Ninguno hace llamadas de red ni aplica las etiquetas a tus tablas: construyen cuerpos de petición y nombres.

  OpenMetadata DataHub Apache Atlas
Punto de entrada OpenMetadataCatalog DataHubCatalog AtlasCatalog
Una categoría se convierte en una etiqueta anidada DataCategory.<key> en una clasificación mutuamente excluyente un término del glosario urn:li:glossaryTerm:DataCategory.<key>, más un nodo del glosario si tiene hijas un tipo de clasificación DataCategory.<key>
El árbol se convierte en el parent de la etiqueta nodos que reflejan el árbol, e isRelatedTerms hacia el término del padre superTypes: una búsqueda del padre encuentra sus subclasificaciones
Protección implícita en una categoría no se guarda en la etiqueta; va en cada columna con tagsOf(field) (tagsOf(category) la enumera) relatedTerms de su término no se guarda en el tipo; classificationsOf(category) la enumera
Naturaleza jurídica PersonalData.Personal / SpecialCategory predefinidas (los datos penales son SpecialCategory) PersonalData.Personal / SpecialCategory / CriminalOffence PersonalData.Personal / SpecialCategory / CriminalOffence
Sensibilidad PII.None / NonSensitive / Sensitive predefinidas, umbral sensitiveFrom — —
Niveles y secreto Confidentiality.*, Integrity.*, Identifiability.*, DataHandling.Secret los mismos, como términos del glosario los mismos, como clasificaciones (no son supertipos de las categorías)
Se crea con la taxonomía estándar 5 clasificaciones y 137 etiquetas 293 propuestas: 28 nodos, 140 términos y 125 aspectos de relaciones 146 tipos de clasificación
Peticiones PUT /api/v1/classifications, PUT /api/v1/tags, una por cuerpo POST /aspects?action=ingestProposal, una por propuesta un único POST /api/atlas/v2/types/typedefs
Volver a enviar crea o actualiza UPSERT (sustituye cada aspecto) POST responde 409 si los tipos existen; se actualizan con PUT
Etiquetas de un campo tagsOf(field): nombres de etiqueta termsOf(field): URN de términos classificationsOf(field): nombres; classificationsJson(field): cuerpo de la petición
Aplicarlas (tu código) la API de tablas que ya uses por ejemplo, la mutación GraphQL addTerms con la ruta del campo como subResource POST /api/atlas/v2/entity/guid/{guid}/classifications
Nombres OpenMetadataMapping: siete nombres y un umbral DataHubMapping: seis nombres de nodo AtlasMapping: seis nombres de raíz

Véase también: curso · English