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.
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.
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 categories: - Severity (Accident, Serious Incident, Incident) - Probability assessment - Safety barriers effectiveness
6. Potential Factors Domain¶
Causal and contributing factors analysis.
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) |