Skip to content

Aviation Safety - Demo Script

This demo showcases Aletheia's GraphRAG capabilities using an aviation safety incident database containing 10 European aviation occurrences from 2024.

Prerequisites

  1. FalkorDB running: redis-cli ping should return PONG
  2. Claude Desktop with MCP servers configured:
  3. Graph - Aviation Safety: Direct Cypher queries
  4. Aletheia - Aviation Safety: Semantic search via Graphiti

Part 1: Graph Overview (FalkorDB UI)

Open FalkorDB Browser UI at http://localhost:3000

1.1 Graph Statistics

// Count nodes by type
MATCH (n)
RETURN labels(n) as type, count(*) as count
ORDER BY count DESC

Expected results:

Type Count
Aircraft 11
Airport 10
Occurrence 10
Episodic 10
Operator 9
Country 5
Manufacturer 5

Talking point: The graph contains 10 aviation safety occurrences with their related entities - aircraft, airports, operators, manufacturers, and countries.

1.2 Relationship Types

// Count relationships by type
MATCH ()-[r]->()
RETURN type(r) as relationship, count(*) as count
ORDER BY count DESC

Expected results:

Relationship Count
MENTIONS 60
RELATES_TO 15
HAS_OPERATOR 10
LOCATED_IN 10
HAS_AIRPORT 10
HAS_AIRCRAFT 10
MANUFACTURED_BY 10

Talking point: Rich relationship structure connects incidents to aircraft, operators, locations, and manufacturers.

1.3 Visual: Incident Network

// Visualize an incident with all connections
MATCH (o:Occurrence {name: 'Occurrence 2024-0412-EU'})-[r]->(e)
RETURN o, r, e

Talking point: Show the visual graph - one incident connected to aircraft (Embraer ERJ-195), operator (TAP Air Portugal), airport (En route near Barcelona), manufacturer (Embraer).

1.4 Visual: Country-based View

// See all incidents by country
MATCH (c:Country)<-[:LOCATED_IN|RELATES_TO]-(ap:Airport)<-[:HAS_AIRPORT]-(o:Occurrence)
RETURN c, ap, o

Talking point: France has the most incidents (3), followed by Spain (3).


Part 2: Semantic Search with Aletheia MCP (Claude Desktop)

Switch to Claude Desktop with "Aletheia - Aviation Safety" MCP enabled

Demo Question 1: Semantic Cause Lookup

Question:

"What caused the turbulence-related injuries near Barcelona?"

Expected answer:

Unpredicted clear air turbulence associated with jetstream boundary

Capability demonstrated: - Semantic matching: No keyword "Barcelona turbulence" exists - system must understand "near Barcelona" refers to the en-route incident - Entity resolution: Connects location description to specific occurrence - Fact extraction: Retrieves the primary cause from incident details

Why this is impressive: The graph stores the location as "En route, 45 nm west of Barcelona (LEBL)" - semantic search understands "near Barcelona" matches this.


Demo Question 2: Location-based Incident Discovery

Question:

"What incident occurred at Nice Cote d'Azur Airport?"

Expected answer:

Wind shear encounter during approach caused by catabatic winds (Occurrence 2024-0912-EU)

Capability demonstrated: - Airport name matching: Handles French accents and variations - Incident summarization: Returns concise description, not raw data - Relationship traversal: Airport -> Occurrence -> Details


Demo Question 3: Entity Description (Narrative Generation)

Question:

"Describe incident 2024-0412-EU"

Expected answer:

A TAP Air Portugal Embraer ERJ-195 encountered severe clear air turbulence near Barcelona, injuring two cabin crew members, and diverted to Barcelona El Prat Airport

Capability demonstrated: - Entity aggregation: Combines facts from multiple relationships - Natural language generation: Produces coherent narrative from graph data - Multi-attribute retrieval: Aircraft type, operator, cause, outcome, location


Demo Question 4: Multi-hop Relationship Query

Question:

"What incident involved the ITA Airways ATR 72?"

Expected answer:

Display management computer software anomaly during approach to Milan Malpensa (Occurrence 2024-0678-EU)

Capability demonstrated: - 2-hop traversal: Operator -> Aircraft -> Occurrence - Entity disambiguation: ITA Airways operates one specific aircraft in this dataset - Context enrichment: Adds location and incident type to answer


Demo Question 5: Specific Event Type Discovery

Question:

"What incident required a MAYDAY declaration during cruise?"

Expected answer:

Incident 2024-0856-EU where smoke smell in the cockpit led to MAYDAY and diversion to Barcelona

Capability demonstrated: - Semantic event matching: "MAYDAY declaration" is embedded in incident narrative - Flight phase filtering: "during cruise" narrows the search - Complex fact retrieval: Matches technical aviation terminology


Part 3: Comparative Analysis (FalkorDB Direct Query)

Switch to "Graph - Aviation Safety" MCP or FalkorDB UI

3.1 Show the Structured Query Version

For the same question "What incident involved the ITA Airways ATR 72?":

MATCH (op:Operator {name: 'ITA Airways'})-[:HAS_OPERATOR]-(o:Occurrence)-[:HAS_AIRCRAFT]->(a:Aircraft)
WHERE a.name CONTAINS 'ATR'
RETURN o.name, a.name, o.summary

Talking point: Cypher requires knowing: 1. Exact operator name ("ITA Airways") 2. Relationship direction and type 3. Aircraft naming convention

Aletheia handles variations like "ITA", "ITA Airways", "ATR 72", "ATR 72-600" automatically.

3.2 Graph Traversal for Relationships

// Find all incidents related to Air France group (Air France + HOP!)
MATCH (op:Operator)-[:HAS_OPERATOR]-(o:Occurrence)
WHERE op.name CONTAINS 'France'
RETURN op.name, o.name, o.summary

Expected results:

Operator Incident Summary
HOP! Air France 2024-0912-EU Wind shear at Nice
Air France 2024-0801-EU FOD at Lyon
Air France 2024-0157-EU Hydraulic at Paris CDG

Part 4: Advanced Queries (FalkorDB)

4.1 Manufacturer Analysis

// Count incidents by aircraft manufacturer
MATCH (m:Manufacturer)<-[:MANUFACTURED_BY]-(a:Aircraft)<-[:HAS_AIRCRAFT]-(o:Occurrence)
RETURN m.name as manufacturer, count(o) as incidents
ORDER BY incidents DESC

4.2 Country Distribution

// Incidents by country
MATCH (c:Country)<-[:RELATES_TO]-(o:Occurrence)
RETURN c.name, count(o) as incidents
ORDER BY incidents DESC

4.3 Full Incident Path

// Trace complete incident context
MATCH path = (m:Manufacturer)<-[:MANUFACTURED_BY]-(a:Aircraft)<-[:HAS_AIRCRAFT]-(o:Occurrence)-[:HAS_AIRPORT]->(ap:Airport)-[:LOCATED_IN]->(c:Country)
WHERE o.name = 'Occurrence 2024-0289-EU'
RETURN path

Talking point: Show the full relationship chain: Boeing -> 737-800 -> Incident -> Frankfurt -> Germany


Key Takeaways

  1. Semantic Understanding: Aletheia understands natural language questions without requiring exact terminology or Cypher syntax

  2. Relationship Traversal: Automatically follows graph relationships to gather comprehensive answers

  3. Context Enrichment: Combines information from multiple nodes to provide rich, contextual responses

  4. Flexible Matching: Handles variations in entity names, abbreviations, and descriptions

  5. Dual Access:

  6. Aletheia MCP: Natural language for analysts and investigators
  7. Graph MCP: Direct Cypher for developers and precise queries

Appendix: Entity Reference

Entity Type Examples
Airlines Lufthansa, Air France, Iberia, TAP Air Portugal, ITA Airways, Air Europa, Vueling, KLM Cityhopper, HOP! Air France
Aircraft A320-214, A321neo, A330-200, Boeing 737-800, 787-9, CRJ-1000, ATR 72-600, ERJ-195, Fokker 70
Airports Frankfurt (EDDF), Paris CDG (LFPG), Nice (LFMN), Lyon (LFLL), Madrid (LEMD), Milan (LIMC), Palma (LEPA), Amsterdam (EHAM), Barcelona (LEBL)
Countries Germany, France, Spain, Italy, Netherlands
Manufacturers Airbus, Boeing, Bombardier, ATR, Embraer

Demo Flow Summary

Step Tool Purpose
1 FalkorDB UI Show graph structure and statistics
2 Aletheia MCP 5 semantic search questions
3 Graph MCP Compare with Cypher approach
4 FalkorDB UI Advanced traversal visualizations