flowchart TD
A[GDELT Raw Data] --> B[Event Extraction]
B --> C{Temporal Graph Builder}
C --> D[Neo4j Knowledge Graph]
D --> E[Replay Mode Analysis]
D --> F[Counterfactual Testing]
E --> G[Stakeholder-Specific Insights]
F --> G
style G fill:#e3f7e1,stroke:#4CAF50
erDiagram
CRISIS_EVENT ||--o{ STAKEHOLDER : impacts
CRISIS_EVENT ||--o{ LOCATION : occurs_in
CRISIS_EVENT ||--o{ DECISION_POINT : triggers
STAKEHOLDER ||--o{ ACTION : takes
ACTION ||--o{ OUTCOME : results_in
CRISIS_EVENT {
string EventID
timestamp EventDate
string EventType
float GoldsteinScale
string Actor1Type
string Actor2Type
}
STAKEHOLDER {
string Role
string Organization
string GeoFocus
}
DECISION_POINT {
string DecisionID
timestamp DecisionTime
array Alternatives
}
flowchart LR
A[GDELT CSV] --> B[Extract Key Fields]
B --> C[Enrich with COVID Context]
C --> D[Create Temporal Relationships]
D --> E[Load into Crisis Graph]
subgraph Key Fields
B1[EventID]
B2[SQLDate]
B3[Actor1CountryCode]
B4[EventGeo_CountryCode]
B5[EventCode]
end
subgraph COVID Enrichment
C1[Add PandemicPhase]
C2[Tag MedicalShipments]
C3[Calculate CargoImpactScore]
end
Airline Route Planner Question
"Fastest alternative routes minimizing delays?"
// Temporal-aware routing query
MATCH (crisis:CRISIS_EVENT {pandemicPhase: "March2020Lockdown"})
WITH crisis
MATCH (origin:Country {code: "CN"})-[r:AVAILABLE_ROUTE]->(hub:Country)
WHERE r.startDate <= crisis.EventDate <= r.endDate
RETURN origin.code, hub.code, r.transitTime
ORDER BY r.transitTime ASC
Customs Authority Question
"Where to allocate staff to prevent bottlenecks?*
flowchart TD
A[GDELT Event] -->|Contains| B[CustomsDelayReport]
B --> C[GeoLocate Delay]
C --> D[Calculate Frequency]
D --> E[Identify Top 3 Locations]
E --> F[Trigger StaffReallocation]
stateDiagram-v2
[*] --> GDELT_Ingestion
GDELT_Ingestion --> CrisisGraph: Raw events
CrisisGraph --> ReplayMode: Historical patterns
ReplayMode --> WhatIfAnalysis: Test interventions
WhatIfAnalysis --> StakeholderDashboards: Actionable insights
state StakeholderDashboards {
[*] --> AirlineOps
AirlineOps --> FlightRerouting
AirlineOps --> CrewAllocation
[*] --> Customs
Customs --> PriorityClearance
Customs --> FraudDetection
}
- Temporal Context
Added pandemic phase tagging to events:
# app.py enhancement
def add_covid_context(df):
df['pandemicPhase'] = np.where(df['SQLDate'].between('2020-03-15', '2020-03-22'),
'March2020Lockdown',
'Pre/PostLockdown')
- Cascading Impact Scoring
Modified relationship creation to track disruption propagation:
// Enhanced relationship with crisis properties
MATCH (e:Event)-[:OCCURS_IN]->(c:Country)
MERGE (e)-[r:IMPACTS {crisisType: 'AirCargo'}]->(c)
SET r.disruptionLevel = CASE
WHEN e.EventCode IN ['089', '095'] THEN 'Critical'
ELSE 'Moderate'
END
- Multi-Stakeholder Views
Created virtual graph projections for different roles:
# Airline Operations View
airline_subgraph = graph.run("""
MATCH (e:Event)-[:INVOLVES]->(a:Actor {type: 'Airline'})
WITH gds.graph.project('airlineView', ['Event', 'Airport'], '*') AS g
RETURN g
""")
This documentation demonstrates how the GDELT pipeline directly supports your COVID-19 cargo disruption analysis through temporal graph patterns and role-specific querying. Would you like me to develop specific use case walkthroughs for any of the stakeholder perspectives you outlined?