Back openDesk Edu for a sovereign, open-source education β every vote counts.
Vote nowTeaser: Neo4j argues the public sector needs a workforce knowledge layer β a graph-based substrate connecting HR systems, skills taxonomies, training records, and mission data to answer compound questions ("which teams have a skills gap in AI security?"). This article examines the architecture, the compound question pattern, and why knowledge graphs beat both relational warehouses and vector search for government workforce intelligence.
In July 2026, Neo4j published two complementary articles on public sector workforce intelligence: "Why public sector AI needs a workforce knowledge layer" and "Public sector workforce intelligence and compound questions." Together they make a specific technical argument: the public sector's workforce questions are compound β they span multiple data systems and require multi-hop reasoning β and this makes knowledge graphs the right substrate for workforce intelligence.
Consider what a public sector HR/operations analyst actually needs to answer:
"Which teams in the cybersecurity division have at least three members with expiring security clearances AND a skills gap in cloud infrastructure AND are currently assigned to mission-critical projects?"
This single question draws on:
A relational warehouse can answer it with a heavily joined SQL query β if every system feeds the warehouse and the schemas align. Vector search cannot answer it at all. But a knowledge graph, where each entity is a node and each relationship is typed, can traverse the answer in a single, explainable Cypher query.
The core concept is the compound question: a question with multiple constraints joined by AND/OR across distinct data domains.
graph TD
Q[Compound Question] -->|requires| C1[Constraint 1: clearance expiring]
Q -->|requires| C2[Constraint 2: skills gap]
Q -->|requires| C3[Constraint 3: mission-critical assignment]
C1 -->|data from| S1[Security System]
C2 -->|data from| S2[Skills Taxonomy]
C3 -->|data from| S3[Project Mgmt System]
S1 -->|ingested into| KG[Workforce Knowledge Graph]
S2 -->|ingested into| KG
S3 -->|ingested into| KG
KG -->|traversable via| Cypher[Cypher Queries]
Cypher -->|answer with evidence| A[Answer + Provenance]
classDef q fill:#E45756,stroke:#b33d3d,color:#fff
classDef src fill:#54A24B,stroke:#3a7a35,color:#fff
classDef kg fill:#4C78A8,stroke:#2c4e6e,color:#fff
class Q,C1,C2,C3 q
class S1,S2,S3 src
class KG,Cypher,A kg
Relational systems can express compound queries, but with significant cost:
| Factor | SQL Warehouse | Knowledge Graph |
|---|---|---|
| Join depth | 6β8 joins practical; beyond that, unmaintainable | Unlimited depth, native traversal |
| Schema flexibility | Fixed schema; adding a system requires migration | Schema evolves with new node types |
| Unknown structure | Requires knowing the schema upfront | MATCH patterns explore structure |
| Explainability | Query plan is opaque | The traversal path IS the explanation |
| Semi-structured data | Poor fit | Native |
The key difference: in SQL, a "relationship" is a join key β invisible in the data model. In a graph, relationships are first-class citizens with types, properties, and direction.
The workforce knowledge layer (WKL) sits between operational systems and AI applications:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AI Applications β
β ββββββββββββββ ββββββββββββββ ββββββββββββββ β
β β Chatbot β β Risk β β Workforce β β
β β Assistant β β Dashboard β β Planner β β
β βββββββ¬βββββββ βββββββ¬βββββββ βββββββ¬βββββββ β
ββββββββββΌβββββββββββββββΌβββββββββββββββΌβββββββββββββββββββ
β β β
ββββββββββΌβββββββββββββββΌβββββββββββββββΌβββββββββββββββββββ
β Workforce Knowledge Layer β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Query Interface (Cypher / GraphQL / MCP) β β
β β β’ Compound question answering β β
β β β’ Traversal with provenance β β
β β β’ Explainable reasoning paths β β
β βββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββ β
β β β
β βββββββββββββββββββββββββΌβββββββββββββββββββββββββββββ β
β β Knowledge Graph (Neo4j) β β
β β β β
β β Person ββWORKS_INβββΆ Division β β
β β Person ββHAS_SKILLββΆ Skill ββPART_OFββΆ Taxonomy β β
β β Person ββHASβββΆ Clearance ββEXPIRESβββΆ Date β β
β β Person ββASSIGNED_TOββΆ Project ββCRITICALITYβββΆ β β
β β Person ββTRAINED_INββΆ Training Module β β
β βββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββ β
β β β
β βββββββββββββββββββββββββΌβββββββββββββββββββββββββββββ β
β β Ingest Pipeline (CDC + ETL + LLM enrichment) β β
β βββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββΌβββββββββββββββββββββ
βΌ βΌ βΌ
βββββββββββββ βββββββββββββββ βββββββββββββββ
β HR System β β Security β β Project β
β (SAP, ...)β β Clearances β β Management β
βββββββββββββ βββββββββββββββ βββββββββββββββ
The knowledge layer models workforce entities and their relationships:
graph TD
P[Person] -->|WORKS_IN| D[Division]
P -->|HAS_SKILL| S[Skill]
S -->|PART_OF| T[Skills Taxonomy]
P -->|HAS| C[Clearance]
C -->|EXPIRES_ON| E[Date]
P -->|ASSIGNED_TO| PR[Project]
PR -->|HAS_CRITICALITY| CR[Criticality Level]
P -->|TRAINED_IN| TM[Training Module]
TM -->|COVERS| S
classDef person fill:#4C78A8,stroke:#2c4e6e,color:#fff
classDef org fill:#54A24B,stroke:#3a7a35,color:#fff
classDef skill fill:#F58518,stroke:#b35a0e,color:#fff
classDef sec fill:#E45756,stroke:#b33d3d,color:#fff
class P person
class D,PR org
class S,T,TM skill
class C,E,CR sec
The payoff is the Cypher query. The compound question from the introduction becomes:
// Teams with clearance expiring, skills gap, and mission-critical work
MATCH (person:Person)-[:WORKS_IN]->(team:Division)
// Constraint 1: expiring clearances
MATCH (person)-[:HAS]->(clearance:Clearance)
WHERE clearance.expiryDate < date('2026-10-01')
AND clearance.level >= 'SECRET'
// Constraint 2: skills gap in cloud infrastructure
OPTIONAL MATCH (person)-[:HAS_SKILL]->(skill:Skill)-[:PART_OF]->(tax:Taxonomy)
WHERE tax.name = 'Cloud Infrastructure'
WITH person, team, clearance, count(skill) AS cloudSkills
WHERE cloudSkills < 2
// Constraint 3: mission-critical assignment
MATCH (person)-[:ASSIGNED_TO]->(project:Project)
WHERE project.criticality >= 3
RETURN team.name,
collect(DISTINCT person.name) AS atRiskStaff,
count(DISTINCT person) AS riskCount
ORDER BY riskCount DESC
The compound question pattern works even better when paired with an LLM that translates natural language into Cypher β with the schema available as context:
sequenceDiagram
participant User as Analyst
participant LLM as LLM Assistant
participant KG as Workforce KG
participant HR as HR System
User->>LLM: "Which cyber teams have clearance and skills gaps?"
LLM->>KG: CALL db.schema() (get schema)
KG-->>LLM: Person, Division, Clearance, Skill...
LLM->>KG: Cypher compound query
KG-->>LLM: Results + traversal paths
LLM-->>User: Answer with provenance: "12 people across 3 teams, based on clearance expiry + skill coverage"
User->>HR: Escalate / action (human decision)
The LLM never directly accesses HR records. It queries the knowledge layer, which encapsulates access control, joins, and provenance. This is the governance win: sensitive operational data stays behind the knowledge layer, and the LLM gets a controlled, auditable query surface.
The Neo4j articles explicitly position the knowledge layer against the "just RAG it" approach:
| Question Type | Vector Search | Knowledge Graph |
|---|---|---|
| "Find documents about cloud security training" | β | β |
| "Summarise the cybersecurity training policy" | β | β οΈ (needs text) |
| "Which teams have a clearance expiry risk?" | β No exact answer | β |
| "Show me the org structure 3 levels down" | β | β |
| "Which projects are understaffed AND have security gaps?" | β | β |
| "Why did this analyst flag this team?" | β (no reasoning) | β (path = explanation) |
Vector search answers semantic similarity questions ("find me stuff about X"). Knowledge graphs answer relational and compound questions ("which entities satisfy this combination of conditions?"). Workforce intelligence is dominated by the latter.
| Consideration | Recommendation |
|---|---|
| Ingestion | CDC from HR/Security/PM systems; nightly batch is usually sufficient |
| Identity resolution | Master person IDs across systems are the single biggest data challenge |
| Access control | Row-level security per agency/division; the KG is a query surface, not the system of record |
| Sovereignty | Self-hosted Neo4j keeps data in government-controlled infrastructure |
| Auditability | Every query logged with the asking principal; traversal paths preserved as evidence |
| Freshness | Clearance expiry is time-sensitive β schedule targeted refreshes for security data |
The workforce knowledge layer is a compelling pattern for public sector AI because it matches the actual nature of government workforce questions: compound, cross-system, and decision-critical. A knowledge graph β combining HR, security, skills, and project data into a typed, traversable model β answers these questions with provenance and explainability, which are non-negotiable in the public sector.
The compound question pattern generalises well beyond workforce: supply chain risk ("which suppliers are single-source AND at geopolitical risk AND ship mission-critical components?"), infrastructure resilience, and grant portfolio analysis all share the same structure. Wherever your organisation's most important questions span multiple data systems with conditions and relationships, a knowledge layer is the architecture that answers them.
Sources: Neo4j β Public Sector Workforce Knowledge Layer and Workforce Intelligence & Compound Questions (July 2026).