Ontologia ESCO

Índice


O que é

A ESCO (European Skills, Competences, Qualifications and Occupations) é uma ontologia multilíngue mantida pela Comissão Europeia que cataloga e classifica conceitos do mundo do trabalho: ocupações profissionais, habilidades, competências e qualificações. Ela é publicada em formato RDF/SKOS e disponibilizada em 27 idiomas, incluindo o Português de Portugal.

A ESCO serve como um vocabulário controlado para desambiguação: em vez de associar currículos e vagas a competências em strings livres como "React.js", "reactjs" ou "React Developer", o sistema mapeia todos esses termos para um único URI canônico da ontologia, garantindo consistência nas operações de matching e travessia de grafo.

Fonte Oficial

A ontologia ESCO está disponível em esco.ec.europa.eu. O Kairos utiliza a taxonomia de Skills e Competências (não de Ocupações).


Como Funciona

Por que o Kairos Adotou a ESCO

O Problema de Vocabulary Mismatch

Currículos e vagas de emprego descrevem as mesmas habilidades com terminologias completamente diferentes. Sem um vocabulário canônico, comparar "Python" de um currículo com "Desenvolvimento em Python" de uma vaga exige heurísticas frágeis.

A ESCO resolve isso fornecendo um label canônico (preferredLabel) e uma lista de rótulos alternativos (alternativeLabels) para cada conceito, tornando o matching determinístico e auditável.

Inferência Hierárquica

A ontologia ESCO estrutura os conceitos em uma hierarquia via relações SKOS:

  • skos:broader — conceito pai (mais genérico)
  • skos:narrower — conceito filho (mais específico)

Isso permite inferências semânticas no grafo de conhecimento: quem domina "React" implicitamente conhece "JavaScript", que por sua vez é uma instância de "Programação Frontend". Essas relações estão persistidas no Neo4j como arestas [:BROADER] e [:NARROWER].

Suporte Nativo ao PT-PT, Próximo ao PT-BR

A ESCO inclui labels em Português de Portugal para a grande maioria de seus conceitos, os quais são próximos a conceitos em Português do Brasil, o que foi determinante para a adoção no Kairos — um sistema voltado ao mercado brasileiro.


Estrutura ESCO Utilizada no Kairos

Taxonomia de Tipos de Skill

A ESCO classifica habilidades pela classe SkillCompetenceType. O Kairos mapeia essa classificação para três categorias internas utilizadas pelo LLM e pelo Entity Linker:

Tipo InternoClasse ESCODescriçãoExemplos
hardSkill/CompetenceHabilidades técnicas práticas e mensuráveisPython, Docker, SQL, AutoCAD
softTransversal SkillsCompetências comportamentais e interpessoaisLiderança, Comunicação, Trabalho em equipe
knowledgeKnowledgeConhecimento teórico e domínio conceitualTeoria de Grafos, LGPD, UX Research

Relações no Grafo

As três relações mapeadas da ontologia ESCO para o grafo Neo4j:

Relação SKOSAresta Neo4jSemântica
skos:broader[:BROADER]Skill aponta para seu conceito pai
skos:narrower[:NARROWER]Skill aponta para uma especialização sua
isEssentialSkillOf[:ESSENTIAL]Skill é essencial para uma ocupação

Armazenamento no Neo4j

Cada conceito ESCO é persistido como um nó (:Skill) no Neo4j com as seguintes propriedades:

PropriedadeTipoDescrição
namestringNome/Label canônico do conceito no idioma de referência (PT-PT)
typestringTipo da skill: hard, soft, knowledge ou unknown
uristringIdentificador único (URI) na ontologia ESCO
embeddingfloat[768]Vetor semântico gerado pelo embeddinggemma
globalPageRankfloatScore da execução de PageRank no grafo. Ver Personalized PageRank(PPR)
Propriedades de Ingestão

Os campos alternativeLabels e description presentes nos arquivos CSV da ESCO são utilizados pelo embeddinggemma para enriquecer semanticamente o texto que gera o vetor de embedding, mas não são persistidos individualmente como propriedades no nó do Neo4j para otimizar o armazenamento.

Escala

A base ESCO carregada no Neo4j contém aproximadamente 34.843 nós (:Skill), todos com embedding de 768 dimensões indexados em um HNSW Vector Index com função de similaridade cosseno.


Pipeline de Normalização Ontológica (3 Estágios)

O Kairos integra o LLM (Gemma3 1B) com busca semântica ou léxica na ontologia ESCO em 3 estágios sequenciais para garantir extração precisa e normalizada:

EstágioResponsávelEntradaSaída
1. InstruçãoPrompt TemplatesDescrição de Vaga/ Currículo + definição de competências e seus tipos na ESCOPrompt enriquecido com dados de entrada e conceitos ESCO
2. ExtraçãoLLM (Ollama Gemma3 1B)Prompt enriquecidoLista de skills candidatas com tipo (hard, soft, knowledge ou unknown)
3. VinculaçãoEntity LinkerSkills candidatasSkills vinculadas a URIs ESCO ou não vinculadas

Demonstração / Exemplos

Resolução de Vocabulary Mismatch

O exemplo abaixo mostra como três strings semanticamente equivalentes — com grafias e formatos diferentes — são resolvidas para o mesmo conceito canônico na ESCO:

Texto extraído pelo LLMURI ESCO canônicoLabel canônico PT-BR
"Python"http://data.europa.eu/esco/skill/...pythonPython (Linguagem de Programação)
"programação em Python"http://data.europa.eu/esco/skill/...pythonPython (Linguagem de Programação)
"Desenvolvimento em Python"http://data.europa.eu/esco/skill/...pythonPython (Linguagem de Programação)

O resultado em todos os três casos é o mesmo nó (:Skill) no Neo4j. Isso significa que um currículo com "Desenvolvimento em Python" e uma vaga que exige "Python" produzem o mesmo nó, auxiliando na descoberta de competências em comum.

Inferência Hierárquica no Grafo

Dado o grafo ESCO persistido no Neo4j, é possível rastrear a cadeia de conceitos relacionados a partir de qualquer skill:

MATCH path = (s:Skill {preferredLabel: "React"})-[:BROADER*1..3]->(parent:Skill)
RETURN [node IN nodes(path) | node.preferredLabel] AS hierarquia

Resultado:

["React", "JavaScript", "Programação Frontend", "Linguagens de Programação"]

Essa cadeia permite que o sistema infira que um candidato com "React" tem domínio implícito de "JavaScript" — relação explorada nas versões futuras do Jaccard com traversal hierárquico.


ADR's Relacionadas

ADRDataDecisão
ADR-002Dez 2025Adoção da ontologia ESCO como vocabulário canônico do sistema; alternativas consideradas: ontologia própria e O*NET
ADR-011Jan 2026Formalização da arquitetura de 4 estágios ESCO–LLM; alternativa de delegar toda a normalização ao LLM foi rejeitada pelo risco de alucinações de URIs