# CONTEXT.md — Ontología del dominio Ornitonautas

## Visión general

Ornitonautas es una plataforma educativa de Formación Profesional en informática.
Su objetivo es maximizar la autoridad y posicionamiento SEO/GEO en el nicho de
FP informática en España.

## Entidades del dominio

### Ciclos Formativos

| Entity | Título | Tipo | Descripción |
|---|---|---|---|
| `dam` | Desarrollo de Aplicaciones Multiplataforma | cycle | Grado Superior - 2000h |
| `daw` | Desarrollo de Aplicaciones Web | cycle | Grado Superior - 2000h |
| `smr` | Sistemas Microinformáticos y Redes | cycle | Grado Medio - 1400h |
| `asir` | Administración de Sistemas Informáticos en Red | cycle | Grado Superior - 2000h |

### Módulos (ejemplo para DAM)

| Entity | Ciclo | Descripción |
|---|---|---|
| `prog-bases-datos` | DAM | Bases de datos |
| `prog-implementacion` | DAM | Programación |
| `prog-multimedia` | DAM | Desarrollo de interfaces |
| `prog-movil` | DAM | Desarrollo de aplicaciones multiplataforma |
| `prog-sistemas` | DAM | Sistemas informáticos |
| `prog-redes` | DAM | Redes |

### Competencias Profesionales

| Entity | Descripción |
|---|---|
| `prog-web` | Programación web (HTML, CSS, JS, frameworks) |
| `prog-backend` | Programación de servidor (Node, Python, Java) |
| `prog-movil-dev` | Desarrollo móvil (React Native, Flutter) |
| `gestion-bd` | Gestión de bases de datos |
| `seguridad-it` | Seguridad informática |
| `devops` | DevOps y despliegue |

### Tecnologías

| Entity | Categoría |
|---|---|
| `javascript` | Lenguaje de programación |
| `python` | Lenguaje de programación |
| `java` | Lenguaje de programación |
| `html-css` | Tecnologías web |
| `react` | Framework JavaScript |
| `angular` | Framework JavaScript |
| `nodejs` | Runtime JavaScript |
| `sql` | Lenguaje de consultas |
| `git` | Control de versiones |
| `docker` | Contenedores |

### Tipos de Contenido

| Entity Type | Descripción | Ejemplo |
|---|---|---|
| `cycle` | Ciclo formativo completo | DAM, DAW |
| `module` | Módulo dentro de un ciclo | Programación |
| `project` | Proyecto real del alumnado | App de gestión |
| `competence` | Competencia profesional | Programación web |
| `resource` | Recurso educativo | Ejercicio SQL |
| `article` | Contenido editorial/SEO | Qué es DAM |
| `glossary` | Término del vocabulario FP | API REST |
| `faq` | Pregunta frecuente | Cuánto dura DAM |
| `company` | Empresa colaboradora | Tech Solutions |
| `event` | Evento formativo | Hackathon FP |

### Tipos de Relación

| Relation Type | Descripción |
|---|---|
| `belongs_to_cycle` | Módulo pertenece a ciclo |
| `teaches_competence` | Módulo enseña competencia |
| `uses_technology` | Proyecto usa tecnología |
| `prerequisite` | Prerequisito |
| `related_to` | Relación temática |
| `is_a` | Relación jerárquica |
| `alternative_to` | Alternativa |
| `derived_from` | Contenido derivado |
| `recommended_for` | Recomendado para perfil |
| `collaborates_with` | Empresa colabora con FP |

## Vocabulario controlado

### Entity Types válidos

```
cycle, module, project, competence, company, resource, article,
glossary, event, testimony, tutor, faq
```

### Relation Types válidos

```
belongs_to_cycle, teaches_competence, uses_technology, related_to,
is_a, prerequisite, alternative_to, derived_from, recommended_for,
collaborates_with
```

## Naming conventions

- Slugs: lowercase, sin espacios, con guiones (`que-es-dam`)
- Entidades: singular, sin ambigüedad (`module`, no `modules`)
- Sinónimos: en `synonyms[]`, no como entidades nuevas

## Multilingüe

- ES es el canon ontológico
- EN mapea a la misma `entity` ID
- Nunca se duplica la ontología por idioma
