graph TD
%% --- Paleta Synesis 2.0 ---
%% Primary: #084C54 (Teal Profundo)
%% Accent: #00BFA5 (Mint/Cyan)
classDef files fill:#F8FAFC,stroke:#4A5568,stroke-width:1px,color:#084C54
classDef engine fill:#fff,stroke:#084C54,stroke-width:3px,color:#084C54,font-weight:bold
classDef data fill:#E0F7FA,stroke:#084C54,stroke-width:1px,color:#084C54
classDef graphDb fill:#E0F7FA,stroke:#00BFA5,stroke-width:2px,color:#084C54
classDef agent fill:#084C54,stroke:#00BFA5,stroke-width:2px,color:#fff
classDef metrics fill:#F8FAFC,stroke:#00BFA5,stroke-width:1px,color:#084C54
subgraph INPUT["1. Entrada: Pesquisa como Código"]
SYN["Corpus Anotado (.syn)"]:::files
SYNO["Ontologia (.syno)"]:::files
SYNP["Projeto (.synp)"]:::files
SYNT["Template (.synt)"]:::files
end
subgraph ENGINE["2. Synesis Engine"]
COMPILER[/"synesis.load"/]:::engine
VALIDATOR("Validação Semântica"):::engine
end
SYNP --> COMPILER
SYN --> COMPILER
SYNO --> COMPILER
SYNT --> COMPILER
COMPILER --> VALIDATOR
subgraph STRUCTURED["3. Dados Estruturados"]
JSON["Objeto Canônico (Rastreável)"]:::data
SCHEMA["Schema Dinâmico (do Template)"]:::data
end
VALIDATOR -->|Sucesso| JSON
SYNT -.->|Define| SCHEMA
subgraph GRAPH["4. Grafo de Conhecimento"]
NEO4J[("Neo4j")]:::graphDb
NATIVE["Métricas Nativas (Cypher)"]:::graphDb
GDS["Métricas GDS (Opcional)"]:::graphDb
DEG["Degree Centralidade"]:::metrics
PR["PageRank Relevância"]:::metrics
BC["Betweenness Pontes"]:::metrics
COM["Louvain Comunidades"]:::metrics
end
JSON -->|Sync| NEO4J
SCHEMA -->|Sync| NEO4J
NEO4J --> NATIVE
NATIVE --> GDS
NATIVE -.-> DEG
GDS -.-> PR
GDS -.-> BC
GDS -.-> COM
subgraph CONSUMPTION["5. Consumo Inteligente"]
MCP["Agente MCP"]:::agent
LLM["LLMs / Claude"]:::agent
end
NEO4J -->|GraphRAG| MCP
MCP -->|GraphRAG| NEO4J
MCP -->|Consultas| LLM
LLM -->|Consultas| MCP
%% Estilos dos Subgrafos
style INPUT fill:transparent,stroke:#4A5568,stroke-width:1px,stroke-dasharray:5 5,color:#084C54
style ENGINE fill:transparent,stroke:#4A5568,stroke-width:1px,stroke-dasharray:5 5,color:#084C54
style STRUCTURED fill:transparent,stroke:#4A5568,stroke-width:1px,stroke-dasharray:5 5,color:#084C54
style GRAPH fill:transparent,stroke:#4A5568,stroke-width:1px,stroke-dasharray:5 5,color:#084C54
style CONSUMPTION fill:transparent,stroke:#4A5568,stroke-width:1px,stroke-dasharray:5 5,color:#084C54
linkStyle default stroke:#64748B,stroke-width:1px
1 Synesis2Neo4j: Pipeline de Grafos de Conhecimento
Versão 0.1.0
1.1 Introdução
O synesis2neo4j é o pipeline oficial de ingestão da linguagem Synesis para bancos de grafos Neo4j. Ele transforma análises qualitativas estruturadas em grafos de conhecimento navegáveis e prontos para IA (GraphRAG).
1.1.1 Diagrama de Fluxo
1.1.2 Características Principais
| Recurso | Descrição |
|---|---|
| Zero-IO | Compila em memória via synesis.load(), sem arquivos intermediários |
| Universal | Lê o Template (.synt) e cria estrutura do grafo dinamicamente |
| Métricas Automáticas | Calcula métricas nativas (Cypher) e avançadas (GDS) |
| Rastreabilidade | Mantém metadados de origem em todos os nós e arestas |
| Atomicidade | Sincronização via transação única |
1.1.3 Casos de Uso
- Pesquisa Qualitativa: Visualizar e navegar redes de conceitos
- Análise Bibliométrica: Mapear relações entre fatores em literatura
- GraphRAG: Alimentar agentes de IA com conhecimento estruturado
- Data Science: Aplicar algoritmos de rede (PageRank, Louvain, Betweenness)
1.2 Pré-requisitos
1.2.1 Software Necessário
| Software | Versão | Link |
|---|---|---|
| Python | 3.11+ | python.org |
| Neo4j | 5.x | Neo4j Download |
1.2.2 Opções de Instalação do Neo4j
1.2.2.1 Neo4j Desktop (Recomendado para desenvolvimento)
Interface gráfica completa para gerenciar múltiplos bancos locais.
- Baixe em: neo4j.com/download
- Instale e crie um novo projeto
- Adicione um banco de dados local (DBMS)
- Inicie o banco e anote a senha
1.2.2.2 Neo4j Community Server
Para servidores ou ambientes headless.
# Docker (mais simples)
docker run -d \
--name neo4j \
-p 7474:7474 -p 7687:7687 \
-e NEO4J_AUTH=neo4j/sua_senha_segura \
neo4j:51.2.2.3 Neo4j Aura (Cloud)
Banco gerenciado na nuvem, ideal para produção.
- Acesse: console.neo4j.io
- Crie uma instância Free ou Professional
- Copie as credenciais de conexão
1.3 Instalação
1.3.1 Requisitos Python
pip install synesis neo4j rich tomli1.3.2 Clonar o Repositório
git clone https://github.com/synesis-lang/synesis2neo4j.git
cd synesis2neo4j1.3.3 Verificar Instalação
python synesis2neo4j.py --version
# synesis2neo4j 0.1.01.3.4 Plugin GDS (Opcional)
Para métricas avançadas (PageRank, Betweenness, Louvain), instale o Neo4j Graph Data Science:
Neo4j Desktop: 1. Abra seu projeto 2. Clique em “Plugins” no painel do banco 3. Instale “Graph Data Science Library”
Neo4j Server:
# Baixe o JAR correspondente à sua versão
# Copie para a pasta plugins/ do Neo4j
# Reinicie o servidor1.4 Configuração
1.4.1 Arquivo config.toml
Crie um arquivo config.toml na raiz do projeto:
[neo4j]
uri = "bolt://localhost:7687"
user = "neo4j"
password = "sua_senha_secreta"
database = "neo4j" # Opcional, default é 'neo4j'1.4.2 Parâmetros de Configuração
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
uri |
str |
Sim | URI de conexão (bolt:// ou neo4j://) |
user |
str |
Sim | Usuário do banco |
password |
str |
Sim | Senha do banco |
database |
str |
Não | Nome do banco (default: neo4j) |
1.4.3 Exemplos de URI
| Ambiente | URI |
|---|---|
| Local (Desktop/Docker) | bolt://localhost:7687 |
| Neo4j Aura | neo4j+s://xxxx.databases.neo4j.io |
| Servidor remoto | bolt://192.168.1.100:7687 |
1.5 Uso
1.5.1 Comando Básico
python synesis2neo4j.py --project ./meu_projeto/analise.synp1.5.2 Opções de Linha de Comando
| Opção | Descrição |
|---|---|
--project |
Caminho para o arquivo .synp (obrigatório) |
--config |
Arquivo de configuração (default: config.toml) |
--version, -v |
Exibe versão do script |
1.5.3 Exemplo Completo
# Com configuração padrão
python synesis2neo4j.py --project ./pesquisa/bibliometria.synp
# Com configuração customizada
python synesis2neo4j.py --project ./analise.synp --config producao.toml1.6 Fluxo de Execução
O pipeline executa as seguintes etapas em sequência:
1.6.1 1. Compilação (In-Memory)
[>] Starting Synesis compiler at: ./projeto.synp
[+] Compilation OK. 150 items processed.
O compilador Synesis valida sintaxe e semântica. Erros interrompem o processo sem tocar no banco.
1.6.2 2. Carregamento de Configuração
[>] Loading Configuration
[+] Loading Configuration completed.
Lê credenciais do config.toml.
1.6.3 3. Criação/Verificação do Banco
[>] Target database: meu-projeto
[>] Checking/Creating Database
[+] Database already exists: meu-projeto
Cria banco automaticamente se não existir (requer Neo4j Enterprise/Aura).
1.6.4 4. Sincronização do Grafo
[>] Synchronizing Graph (Transactional)
[+] Synchronizing Graph (Transactional) completed.
Limpa banco anterior e injeta novos dados em transação atômica.
1.6.5 5. Métricas Nativas
[>] Calculating Native Metrics
[+] Calculating Native Metrics completed.
Calcula degree, mention_count, source_count via Cypher puro.
1.6.6 6. Métricas GDS (se disponível)
[>] GDS graph strategy: RELATES_TO
[>] GDS projection: 45 nodes, 120 relationships
[+] PageRank calculated
[+] Betweenness calculated
[+] Communities (Louvain) calculated
Se o plugin GDS não estiver instalado, exibe aviso e continua:
[!] GDS not installed. Install the Graph Data Science plugin for
advanced metrics (PageRank, Betweenness, Communities).
1.7 Modelagem de Dados
1.7.1 Template → Grafo
O pipeline traduz automaticamente os tipos de campo do Template para estruturas no grafo:
| Tipo no Template | Elemento no Grafo | Relação Criada |
|---|---|---|
CODE |
Nó Conceito (label dinâmico) | MENTIONS (Item → Conceito) |
TOPIC |
Nó Taxonomia | GROUPED_BY |
ASPECT |
Nó Taxonomia | QUALIFIED_BY |
DIMENSION |
Nó Taxonomia | BELONGS_TO |
CHAIN |
Relação Explícita | RELATES_TO |
TEXT / MEMO |
Propriedade | — |
ENUMERATED |
Propriedade | — |
1.7.2 Nós Base
| Nó | Descrição | Propriedades Principais |
|---|---|---|
Source |
Fonte bibliográfica | bibtex, title, author, year, doi |
Item |
Unidade de citação | item_id, citation, description |
1.7.3 Relações Principais
| Relação | Origem | Destino | Descrição |
|---|---|---|---|
FROM_SOURCE |
Item | Source | Rastreabilidade da citação |
MENTIONS |
Item | Conceito | Citação menciona conceito |
GROUPED_BY |
Conceito | Topic | Classificação temática |
QUALIFIED_BY |
Conceito | Aspect | Qualificação dimensional |
BELONGS_TO |
Conceito | Dimension | Agregação de alto nível |
RELATES_TO |
Conceito | Conceito | Relação explícita (CHAIN) |
IS_LINKED_TO |
Topic | Topic | Co-taxonomia ponderada |
MAPPED_TO_ASPECT |
Topic | Aspect | Mapeamento entre taxonomias |
MAPPED_TO_DIMENSION |
Topic | Dimension | Mapeamento entre taxonomias |
1.8 Métricas de Grafo
1.8.1 Métricas Nativas (Sempre Disponíveis)
Calculadas via Cypher puro, sem dependências externas.
1.8.1.1 Nós de Conceito
| Métrica | Descrição | Uso Analítico |
|---|---|---|
degree |
Grau total (in + out) | Conectividade geral |
in_degree |
Relações recebidas | Conceitos que referenciam este |
out_degree |
Relações emitidas | Conceitos referenciados por este |
mention_count |
Citações que mencionam | Frequência nos dados primários |
source_count |
Fontes distintas | Dispersão/generalização |
1.8.1.2 Nós de Taxonomia
| Métrica | Descrição | Uso Analítico |
|---|---|---|
concept_count |
Conceitos classificados | Abrangência da categoria |
weighted_degree |
Soma dos pesos IS_LINKED_TO | Força das relações inter-taxonomia |
aspect_diversity |
Aspectos distintos | Diversidade qualitativa |
dimension_diversity |
Dimensões distintas | Dispersão dimensional |
1.8.1.3 Nós de Source
| Métrica | Descrição | Uso Analítico |
|---|---|---|
item_count |
Citações extraídas | Volume de dados da fonte |
concept_count |
Conceitos mencionados | Riqueza conceitual |
1.8.2 Métricas GDS (Requer Plugin)
| Métrica | Algoritmo | Descrição |
|---|---|---|
pagerank |
PageRank | Relevância baseada em conexões |
betweenness |
Betweenness Centrality | Papel de “ponte” entre clusters |
community |
Louvain | Detecção de comunidades temáticas |
1.8.2.1 Estratégias de Projeção
| Estratégia | Quando Usada | Descrição |
|---|---|---|
| RELATES_TO | Templates com CHAIN |
Usa relações explícitas |
| CO_TAXONOMY | Templates com CODE + TOPIC |
Conecta via taxonomia compartilhada |
| CO_CITATION | Fallback | Conecta via co-ocorrência em fontes |
1.9 Consultas Cypher
1.9.1 Conceitos Mais Centrais
MATCH (c:Concept)
WHERE c.pagerank IS NOT NULL
RETURN c.name, c.pagerank, c.mention_count, c.community
ORDER BY c.pagerank DESC
LIMIT 10
1.9.2 Comunidades Temáticas
MATCH (c:Concept)
WHERE c.community = 1
RETURN c.name, c.pagerank, c.degree
ORDER BY c.pagerank DESC
1.9.3 Rede de Relações
MATCH (s:Concept)-[r:RELATES_TO]->(t:Concept)
RETURN s.name AS source, r.type AS relation, t.name AS target
ORDER BY s.name
1.9.4 Rastreabilidade Completa
MATCH (i:Item)-[:MENTIONS]->(c:Concept)
MATCH (i)-[:FROM_SOURCE]->(s:Source)
WHERE c.name = "Cost"
RETURN s.title, i.citation, c.name
1.9.5 Tópicos Interconectados
MATCH (t1:Topic)-[r:IS_LINKED_TO]->(t2:Topic)
RETURN t1.name, t2.name, r.strength
ORDER BY r.strength DESC
LIMIT 20
1.10 Integração com Agentes MCP
1.10.1 O que é MCP?
O Model Context Protocol (MCP) permite que LLMs (como Claude) interajam com fontes de dados externas. Com o servidor MCP Neo4j, Claude pode consultar seu grafo diretamente.
1.10.2 Instalação do Claude Desktop
- Baixe em: claude.ai/download
- Instale e faça login com sua conta Anthropic
- Configure o servidor MCP (próxima seção)
1.10.3 Configuração do Servidor MCP
Instale o gerenciador de pacotes uv:
pip install uvEdite o arquivo claude_desktop_config.json:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"synesis-neo4j": {
"command": "uvx",
"args": ["mcp-neo4j-cypher@0.5.2", "--read-only"],
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USERNAME": "neo4j",
"NEO4J_PASSWORD": "sua_senha",
"NEO4J_DATABASE": "nome_do_banco"
}
}
}
}1.10.4 Exemplos de Perguntas para Claude
| Pergunta | O que Retorna |
|---|---|
| “Quais conceitos têm maior PageRank?” | Top conceitos por relevância |
| “Mostre as fontes que mencionam ‘Acceptance’” | Rastreabilidade Item → Source |
| “Quais conceitos pertencem à comunidade 1?” | Análise de clusters |
| “Compare as métricas dos principais conceitos” | Tabela comparativa |
| “Qual a estrutura do grafo?” | Schema e contagens |
1.11 Tratamento de Erros
1.11.1 Erros de Compilação
[x] Compiling Project (In-Memory) failed: ...
┌─────────────────────────────────┐
│ Compilation Diagnostics │
├─────────────────────────────────┤
│ error: sample.syn:15:8 │
│ Undefined reference '@missing' │
└─────────────────────────────────┘
O banco não é modificado se houver erros de compilação.
1.11.2 Erros de Conexão
[x] [connection] Failed to connect to Neo4j
Details: Unable to retrieve routing information
Verifique: - Neo4j está em execução - URI e credenciais estão corretos - Firewall permite conexão na porta 7687
1.11.3 Erros de Sincronização
[x] [sync] Synchronization failed
Details: Transaction timeout
Para grafos muito grandes, considere aumentar o timeout do Neo4j.
1.12 Estrutura do Projeto
synesis2neo4j/
├── synesis2neo4j.py # Script principal
├── config.toml # Configuração (criar)
├── README.md # Documentação em inglês
├── README.pt.md # Documentação em português
└── mcp/
├── SETUP.md # Guia de configuração MCP
├── QUERIES_REFERENCE.md # Referência de queries
└── claude_desktop_config.template.json
1.13 Referência Rápida
1.13.1 Instalação
pip install synesis neo4j rich tomli
git clone https://github.com/synesis-lang/synesis2neo4j.git1.13.2 Configuração
# config.toml
[neo4j]
uri = "bolt://localhost:7687"
user = "neo4j"
password = "senha"1.13.3 Execução
python synesis2neo4j.py --project ./projeto.synp1.13.4 Verificação no Neo4j Browser
// Contar nós
MATCH (n) RETURN labels(n)[0] AS label, count(*) AS count
// Ver métricas
MATCH (c:Concept) RETURN c.name, c.pagerank, c.community LIMIT 10
1.14 Links Úteis
| Recurso | URL |
|---|---|
| Synesis Language | synesis-lang.github.io/synesis-docs |
| Neo4j Download | neo4j.com/download |
| Neo4j Aura (Cloud) | console.neo4j.io |
| Neo4j GDS Docs | neo4j.com/docs/graph-data-science |
| Claude Desktop | claude.ai/download |
| MCP Neo4j Server | github.com/neo4j-contrib/mcp-neo4j |
Documentação gerada para synesis2neo4j v0.1.0