Skip to content

ECCAIRS Aviation Ontology

The ECCAIRS (European Co-ordination Centre for Accident and Incident Reporting Systems) taxonomy is the European standard for aviation safety occurrence reporting. This page explains its structure, key domains, and how it's used in Aletheia.

What is ECCAIRS?

ECCAIRS is maintained by the European Union Aviation Safety Agency (EASA) and provides:

  • Standardized terminology for reporting aviation occurrences
  • Hierarchical classification of events, causes, and factors
  • Interoperability across EU member states and international bodies
  • Historical consistency for trend analysis across decades

Origin and Adoption

Year Milestone
1998 ECCAIRS system launched by EU Joint Research Centre
2003 Mandatory for EU member states
2015 Regulation (EU) 376/2015 establishes reporting requirements
2024 Version 7.0.0.1 (current)

Users: National aviation authorities, airlines, airports, air navigation service providers, aircraft manufacturers, and safety investigators across 30+ countries.

Ontology Structure

The ECCAIRS taxonomy is organized around a central concept: Occurrence.

Root Concept: Occurrence

An Occurrence is any aviation safety-related event, including:

  • Accidents (with injuries or substantial damage)
  • Serious incidents (near-accidents)
  • Incidents (safety-relevant events)
  • Occurrences without safety effect

Everything in the ontology relates back to an Occurrence.

Key Domains

The ontology branches into six major domains:

                              Occurrence
        ┌─────────┬───────┬───────┼───────┬───────┬─────────┐
        ▼         ▼       ▼       ▼       ▼       ▼         ▼
    Aircraft  Aerodrome  ANS   Air Space Events  Risk    Separation
        │         │       │               │       │
        ▼         ▼       ▼               ▼       ▼
     Crew     Runway   Sector         Factors  Assessment
     Engine   Vehicle  ATM Staff
     ...      FOD      ...

Domain Details

1. Aircraft Domain

Everything related to the aircraft involved in an occurrence.

Aircraft (abstract)
├── Engine
├── Propeller
├── Flight Crew Member
│   └── Flight Crew Licenses
├── Other Personnel on board
├── Incapacitation
├── Aircraft Fire Suppression
├── Floatation Devices
├── GPWS warning and reaction
├── Control and Monitoring Unit
├── Other Aircraft Recording Devices
├── Part Information
├── Search Difficulties
└── Weather Briefing

Key attributes: - Aircraft type and model - Registration - Operator - Flight phase - Damage level

Example:

"Embraer ERJ-195 (CS-TTW) operated by TAP Air Portugal" → Aircraft: ERJ-195, Registration: CS-TTW, Operator: TAP Air Portugal

2. Aerodrome Domain

Airport and ground infrastructure elements.

Aerodrome General (abstract)
├── Runway
├── Vehicle
├── Foreign Object (FOD)
├── Narrative
└── Note

Key attributes: - Airport name and ICAO code - Runway identifier - Surface condition - Lighting status

Example:

"Runway 26R at Paris CDG (LFPG) was contaminated with standing water" → Airport: Paris CDG, ICAO: LFPG, Runway: 26R

3. Air Navigation Service Domain

Air traffic control and navigation services.

Air Navigation Service (abstract)
├── Sector
│   └── ATM staff
│       ├── ATM ratings
│       │   └── ATM endorsements
│       └── HERA Error
│           └── Contextual Condition
├── ATM recording devices
├── Narrative
└── Note

Key attributes: - Sector identifier - Controller qualifications - Human error factors (HERA model)

Example:

"Controller in Barcelona ACC sector was handling 15 aircraft" → Sector: Barcelona ACC, ATM Staff: Controller

4. Events Domain

Classification of what happened during the occurrence.

Events (abstract)
└── Descriptive Factor
    └── Explanatory Factor

Event categories include: - Airborne events (turbulence, icing, bird strike) - Ground events (runway incursion, ground collision) - Technical events (system failure, structural issue) - Operational events (crew decision, procedure deviation)

Example:

"Aircraft encountered severe clear air turbulence at FL380" → Event: Turbulence, Severity: Severe, Altitude: FL380

5. Risk Assessment Domain

Safety analysis and risk classification.

Risk Assessment (abstract)
└── Risk Assessment RPAS/UAS

Risk categories: - Severity (Accident, Serious Incident, Incident) - Probability assessment - Safety barriers effectiveness

6. Potential Factors Domain

Causal and contributing factors analysis.

Potential Factors and Safety Issues (abstract)
└── Potential Explanatory Factor

Factor types: - Primary cause - Contributing factors - Human factors - Organizational factors - Environmental factors

Class Statistics

The full ECCAIRS ontology contains:

Category Count
Core entity classes 54
Value enumeration classes ~486
Total classes ~540
Hierarchy depth 5 levels

Core Classes (Non-Value)

Type Count Examples
Abstract classes 18 Occurrence, Aircraft, Aerodrome General
Concrete classes 36 Runway, Engine, Flight Crew Licenses

Value Classes

Enumerated values for coded fields:

Field Values
Weather Conditions VMC, IMC, Unknown
Light Conditions Dawn, Daylight, Dusk, Night
Flight Phase Takeoff, Climb, Cruise, Descent, Approach, Landing
Damage Level None, Minor, Substantial, Destroyed
Injury Level None, Minor, Serious, Fatal

Using ECCAIRS in Aletheia

Loading the Ontology

# Convert ECCAIRS XML to TTL (if not already done)
python use_cases/aviation_safety/eccairs_taxonomy/eccairs_parser.py \
  "use_cases/aviation_safety/eccairs_taxonomy/Eccairs Aviation 7.0.0.1.xml" \
  -o use_cases/aviation_safety/ontology/eccairs_aviation.ttl

# Load ontology to graph
aletheia build-ontology-graph \
  --use-case aviation_safety \
  --knowledge-graph eccairs

Viewing the Ontology Graph

# Count classes by type
redis-cli GRAPH.QUERY eccairs \
  "MATCH (n:Entity)
   WHERE NOT n.name CONTAINS 'Values'
   RETURN n.ontology_type, count(*)
   ORDER BY count(*) DESC"

# View hierarchy
redis-cli GRAPH.QUERY eccairs \
  "MATCH (child)-[r:RELATES_TO {name: 'SUBCLASS_OF'}]->(parent)
   WHERE NOT child.name CONTAINS 'Values'
   RETURN parent.name, child.name
   LIMIT 20"

Building Knowledge Graph with ECCAIRS

aletheia build-knowledge-graph \
  --use-case aviation_safety \
  --knowledge-graph aviation_safety \
  --schema-mode graph-hybrid \
  --ontology-graph eccairs

Semantic Alignment Examples

The ontology enables consistent extraction:

Source Text Extracted Entity Ontology Class
"the plane" Embraer ERJ-195 Aircraft
"the carrier" TAP Air Portugal Operator
"Barcelona airport" LEBL Airport
"severe turbulence" Clear air turbulence Events
"pilot error" Human factors Explanatory Factor

Benefits for Aviation Safety Analysis

1. Cross-Report Consistency

All incident reports use the same terminology: - "CAT" → Clear Air Turbulence (standardized) - "CFIT" → Controlled Flight Into Terrain (standardized) - "FOD" → Foreign Object Debris (standardized)

2. Trend Analysis

Query patterns across years:

MATCH (o:Occurrence)-[:HAS_EVENT]->(e:Event {type: 'Turbulence'})
WHERE o.date >= '2020-01-01'
RETURN o.year, count(o) as incidents
ORDER BY o.year

3. Regulatory Compliance

Reports align with EASA requirements: - All mandatory fields captured - Standard classifications applied - Audit-ready format

4. International Interoperability

ECCAIRS data can be shared with: - ICAO (International Civil Aviation Organization) - FAA (US Federal Aviation Administration) - National authorities worldwide

Source Files

File Location Description
XML Taxonomy eccairs_taxonomy/Eccairs Aviation 7.0.0.1.xml Original EASA distribution (120 MB)
Parser eccairs_taxonomy/eccairs_parser.py XML to TTL converter
TTL Ontology ontology/eccairs_aviation.ttl Generated OWL ontology (1.3 MB)

Further Reading