Classify the data model of your organisation, verify it in your tests and put the result to work.
This course teaches you to use Linneo, a small Java library that brings a data classification taxonomy into your code. You will start from the legal and security concepts behind data classification, learn the taxonomy Linneo ships with, annotate a realistic data model, make the build fail when something is left unclassified, use the classification to build a data inventory, decide what can be logged and publish everything to a data catalogue — OpenMetadata, DataHub or Apache Atlas — and finally declare the processing activities that use the data and produce the GDPR record of processing activities.
Every module uses the same running example: the data model of a small university. It starts with a Student
and a MenuGroup and grows, module by module, into Enrollment, Grade, Staff, Document with its
Attachments, a university-specific extension of the taxonomy, and the processing activities that use them:
enrollment, admissions, staff screening and the alumni newsletter.
Looking for the exact contract of a type or annotation? That lives in the reference. The course explains why and how; the reference states what.
By the end of the course you will be able to:
@Category, @DefaultCategory, @CategoryByRow and @Exempt.TaxonomyExtension.io.github.devbpm.linneo) and has no runtime dependencies.Maven or Gradle, with the dependency:
<dependency>
<groupId>io.github.devbpm</groupId>
<artifactId>linneo</artifactId>
<version>0.1.0</version>
</dependency>
implementation("io.github.devbpm:linneo:0.1.0")
| # | Module | You will learn to… | Time |
|---|---|---|---|
| 1 | Why classify data | Explain GDPR natures, confidentiality, integrity, identifiability and secrets; understand the fail-closed approach | 45 min |
| 2 | The taxonomy | Read dotted keys, understand inherited protection, explore the taxonomy with the Taxonomy API |
60 min |
| 3 | Annotating models | Annotate fields and classes, raise levels, declare identifiability, handle records, inheritance and per-row data | 90 min |
| 4 | Verifying in tests | Fail the build on unclassified or wrongly classified fields; read and fix every violation | 60 min |
| 5 | Using the classification | List personal fields, build a data inventory and a RoPA-style report, decide what may be logged | 60 min |
| 6 | Extending the taxonomy | Add terms and stricter protection with a TaxonomyExtension registered through ServiceLoader; apply the university extension shipped with Linneo |
60 min |
| 7 | OpenMetadata | Publish classifications and tags, compute the tags of each column, customise the names | 45 min |
| 8 | DataHub and Apache Atlas | Publish a DataHub glossary and Atlas classification types, compute the terms and classifications of each column, compare the three catalogues | 60 min |
| 9 | Processing activities and the record | Declare processing activities with their lawful bases, tell errors from warnings, verify them in a test and produce the record of processing activities | 60 min |
Total: about 9 hours. Modules 1 and 2 are conceptual; modules 3 to 9 are hands-on. Data protection readers can follow modules 1, 2, 5 and 9 on their own.
edu.example.university. Each module tells you which
classes to add or change; the code in the modules compiles against Linneo 0.1.0.Conventions used in the course:
import static io.github.devbpm.linneo.Categories.*; so that keys read as USER_CONTACT_EMAIL
rather than Categories.USER_CONTACT_EMAIL.@Entity, @Id, @Column…) are left out of most samples to keep the focus on Linneo; your
real entities keep them. Linneo never looks at them.Start with Module 1 — Why classify data →