Taxonomie (Phase 9)
Ziel
Ontologie-Klassen werden in eine explizite Ordnungsstruktur gebracht. Die Taxonomie definiert Hierarchien und Zugehörigkeiten zwischen Klassen. Sie dient der Navigation, Aggregation und systematischen Einordnung.
Grundprinzip
- Die Taxonomie operiert ausschließlich auf Ontologie-Klassen
- Sie ordnet Klassen, nicht Entitäten und nicht Aussagen
- Taxonomische Beziehungen sind strukturierend, nicht interpretierend
Taxonomische Beziehungen
Erlaubte Beziehungstypen sind explizit definiert:
| Beziehung | Bedeutung | Beispiel |
|---|---|---|
| ist-ein | Spezialisierung/Generalisierung | Skalenfrage ist-ein Intervention |
| Teil-von | Komposition/Aggregation | Auftragsklärung Teil-von Coaching-Prozess |
| gehört-zu | Zugehörigkeit/Kontext | Wunderfrage gehört-zu Lösungsfokussierung |
Andere Beziehungstypen sind in der Taxonomie nicht zulässig.
Aufbau der Hierarchie
- Ontologie-Klassen werden hierarchisch eingeordnet
- Zyklen sind unzulässig
- Mehrfachvererbung ist nur erlaubt, wenn fachlich begründet
- Die Hierarchie ist vollständig explizit gespeichert
Implementierung: Taxonomie-Mapping (2025-12-25)
Übersicht
Die Taxonomie-Mapping-Komponenten ermöglichen die Zuordnung von Chunks und Entities zu Taxonomie-Begriffen. Dies erweitert die klassische Taxonomie um eine semantische Verknüpfungsschicht.
Domain Layer
| Komponente | Datei | Beschreibung |
|---|---|---|
| ChunkTaxonomyMapping | src/Domain/Entity/ChunkTaxonomyMapping.php |
Entity für Chunk → Taxonomie-Term Zuordnung mit Confidence und Source |
| EntityTaxonomyMapping | src/Domain/Entity/EntityTaxonomyMapping.php |
Entity für Entity → Taxonomie-Term Zuordnung mit Relevance und Validierungsstatus |
| Confidence | src/Domain/ValueObject/Confidence.php |
Value Object für Konfidenzwerte (0.0-1.0) mit Hilfsmethoden |
| MappingSource | src/Domain/ValueObject/MappingSource.php |
Enum für Mapping-Quelle: auto (Pipeline) oder manual (User) |
Repository Interfaces
| Interface | Datei | Methoden |
|---|---|---|
| ChunkTaxonomyRepositoryInterface | src/Domain/Repository/ |
findByChunkId, findByTaxonomyTermId, save, delete, deleteByChunkId, getUnmappedChunks, exists, countByTaxonomyTerm |
| EntityTaxonomyRepositoryInterface | src/Domain/Repository/ |
findByEntityId, findByTaxonomyTermId, save, delete, deleteByEntityId, getUnvalidatedMappings, markAsValidated, exists, getValidationStats |
UseCases
| UseCase | Datei | Methoden |
|---|---|---|
| AssignChunkTaxonomyUseCase | src/UseCases/Taxonomy/ |
execute(chunkId, termId, confidence, source), batchAssign() |
| AssignEntityTaxonomyUseCase | src/UseCases/Taxonomy/ |
execute(entityId, termId, relevance), validateMapping(), batchAssign(), getValidationStats() |
| GetTaxonomyOverviewUseCase | src/UseCases/Taxonomy/ |
execute(), getUnmappedChunks(), getUnvalidatedEntityMappings(), getTaxonomyTermUsage(), getTermsWithUsage() |
| EnhancedSearchUseCase | src/UseCases/Search/ |
execute(query, taxonomyTermIds, includeChildTerms), searchInTaxonomy(), getSuggestionsForQuery() |
Python Pipeline Integration
Die Pipeline erweitert die Analyse um automatische Taxonomie-Zuweisungen:
# db.py - Neue Funktionen db.add_chunk_taxonomy(chunk_id, term_id, confidence, source) db.get_chunk_taxonomies(chunk_id) db.add_entity_taxonomy(entity_id, term_id, relevance, validated) db.get_entity_taxonomies(entity_id) db.get_taxonomy_terms() # document_analyzer.py - Neue Funktionen propagate_taxonomy_to_chunks(document_id, taxonomy) assign_entity_taxonomy(document_id, entities, taxonomy)
Datenfluss
Dokument-Analyse
│
▼
┌─────────────────────────────────────────┐
│ classify_taxonomy() → document_taxonomy │
└─────────────────────┬───────────────────┘
│
┌─────────────┴─────────────┐
▼ ▼
┌───────────────────┐ ┌────────────────────┐
│ propagate_to_ │ │ assign_entity_ │
│ chunks() │ │ taxonomy() │
│ → chunk_taxonomy │ │ → entity_taxonomy_ │
│ │ │ mapping │
└───────────────────┘ └────────────────────┘
Contract: taxonomy-mapping-contract
Qualitätsregeln für Taxonomie-Mappings (Contract ID: 12):
- TMC-001: Chunk-Mappings: Confidence ∈ [0.0, 1.0]
- TMC-002: Chunk-Mappings: Source ∈ {auto, manual}
- TMC-003: Entity-Mappings: Relevance ∈ [0.0, 1.0]
- TMC-004-006: Referentielle Integrität (Chunks, Entities, Terms)
Beispiel-Taxonomie
Coaching-Konzept (Wurzel)
├── ist-ein → Methode
│ ├── ist-ein → Auftragsklärung
│ ├── ist-ein → Zielarbeit
│ └── ist-ein → Ressourcenaktivierung
├── ist-ein → Intervention
│ ├── ist-ein → Fragetechnik
│ │ ├── ist-ein → Skalenfrage
│ │ └── ist-ein → Wunderfrage
│ └── ist-ein → Reflexion
└── ist-ein → Haltung
├── ist-ein → Ressourcenorientierung
└── ist-ein → Allparteilichkeit
Abgrenzung zur Ontologie
- Die Ontologie definiert Klassen
- Die Taxonomie definiert deren Ordnung
- Eine Klasse existiert unabhängig von ihrer Position in der Taxonomie
Abgrenzung zur Semantik
- Taxonomie trägt keine Bedeutung im Aussagekontext
- Sie beantwortet keine Wahrheitsfragen
- Sie dient nicht der Interpretation einzelner Aussagen
Versionierung
- Änderungen an der Taxonomie sind versioniert
- Frühere Versionen bleiben referenzierbar
- Umbauten erfolgen durch Ergänzung, nicht durch stilles Überschreiben
Persistenz
- Taxonomische Beziehungen werden in der SQL-Datenbank gespeichert
- Jede Beziehung referenziert stabile Klassen-IDs
- Die Taxonomie ist Bestandteil des Graphmodells
Ergebnisartefakte
- Explizite Klassenhierarchie
- Versionierte taxonomische Beziehungen
- Navigierbare Ordnungsstruktur
- Chunk-Taxonomie-Mappings (neu)
- Entity-Taxonomie-Mappings (neu)
Prüfbedingungen für Supervision
- Keine taxonomische Beziehung existiert zwischen Entitäten
- Die Hierarchie ist zyklusfrei
- Jede Änderung ist versioniert und nachvollziehbar
- Alle Chunk-Mappings haben gültige Confidence-Werte (Contract TMC-001)
- Alle Entity-Mappings haben gültige Relevance-Werte (Contract TMC-003)