Ontologia formal do sistema financeiro brasileiro, em OWL/RDF, para interoperabilidade semântica, alinhamento com padrões internacionais (FIBO — Financial Industry Business Ontology) e integração com os padrões brasileiros (Open Finance Brasil, Banco Central do Brasil).
Nota: não confundir com a Basic Formal Ontology, que compartilha a sigla BFO. É por isso que o namespace desta ontologia é
bfo-br.
- Interoperabilidade semântica para sistemas financeiros brasileiros
- Alinhamento FIBO —
rdfs:subClassOf/rdfs:subPropertyOfpara FND, BE, FBC, SEC, DER, LOAN e CAE, mais o OMG Commons. Cada IRI alvo é conferida contra um download real da FIBO no CI (ver Validação); os imports ficam no módulo opt-in - Integração Open Finance Brasil — clientes, contas, crédito, iniciação de pagamento, investimentos e ciclo de vida do consentimento (LGPD / Resolução Conjunta CMN/BCB 1/2020)
- Integração com os dados abertos do BCB — séries do SGS (Selic, CDI, IPCA, PTAX, INPC…), IF.data, SCR, DICT
- Cobertura de mercado atualizada — fundos sob a Resolução CVM 175/2022 (FIDC, FIP, Fiagro, multimercado…), ativos virtuais (Lei 14.478/2022), Drex, fintechs de crédito direto (SCD/SEP), garantias, câmbio (Lei 14.286/2021)
- Seguros, resseguro e capitalização (SUSEP) — apólice, sinistro, prêmio, EAPC
- Previdência complementar fechada (PREVIC) — EFPC, planos BD/CD/CV, patrocinador, participante, assistido
- Infraestruturas do mercado — SPB, STR, Selic, SPI, DICT, Nuclea, SCR, câmara de compensação e depositária central
- Arranjos de pagamento — credenciadora, subcredenciadora, bandeira, emissor, cartões, e as modalidades do PIX (automático, cobrança, saque, troco) com os cinco tipos de chave
- Consórcio (Lei 11.795/2008) — administradora, grupo, cota, contemplação, lance
- Títulos de crédito — CCB, CCI, CPR, CDCA, duplicata escritural, nota comercial, warrant agropecuário
- Ofertas públicas (Resolução CVM 160/2022) e eventos societários — dividendo, JCP, bonificação, desdobramento, grupamento, subscrição
- PLD/FT (Circular BCB 3.978/2020) — COAF, comunicação de operação suspeita, PEP, beneficiário final
- Anotações bilíngues (rótulos e definições em pt-BR; en onde aplicável)
- Instâncias de exemplo e consultas SPARQL de demonstração
bfo/
├── ontology/
│ ├── bfo-core.owl # Núcleo (classes, propriedades, indivíduos)
│ ├── bfo-openfinance-mapping.owl # Mapeamento Open Finance Brasil
│ ├── bfo-bcb-mapping.owl # Mapeamento dados abertos BCB/SGS
│ ├── bfo-fibo-alignment.owl # Módulo opt-in que importa a FIBO
│ └── catalog-v001.xml # Catálogo XML para o Protégé
├── examples/
│ └── bfo-examples.owl # Instâncias de exemplo (A-Box)
├── queries/ # Consultas SPARQL verificadas pelo CI
├── w3id/ # Registro do IRI persistente w3id.org
├── legacy/ # Ontologia anterior, fora da distribuição
├── docs/
│ └── README.md # Documentação detalhada
├── CHANGELOG.md # Histórico de versões (Keep a Changelog)
├── CITATION.cff # Metadados de citação
├── CONTRIBUTING.md # Convenções de modelagem e fluxo de trabalho
└── LICENSE # CC BY 4.0
Abra ontology/bfo-core.owl no Protégé.
O catalog-v001.xml resolve os módulos localmente.
Modelmodel = RDFDataMgr.loadModel("ontology/bfo-core.owl");fromrdflibimportGraphg=Graph()
g.parse("ontology/bfo-core.owl", format="xml")PREFIX bfo: <https://w3id.org/bfo-br#>SELECT?cdb?emissor?taxaWHERE {
?cdba bfo:CDB ;
bfo:emitidoPor ?emissor ;
bfo:taxaJuros ?taxa .
}O bfo-core.owlnão faz owl:imports da FIBO. São cerca de dois milhões
de triplas: importá-las deixa o núcleo lento de abrir no Protégé e
impraticável de raciocinar, para todo mundo que só quer as classes
brasileiras. Os axiomas de alinhamento em si (rdfs:subClassOf para IRIs da
FIBO) ficam no núcleo — são OWL válido sem o import.
Se você precisa que um reasoner enxergue a hierarquia FIBO por trás desses
alinhamentos, carregue ontology/bfo-fibo-alignment.owl no lugar do núcleo.
Ele importa os dois.
Todo push e pull request roda
.github/workflows/validate.yml:
| Verificação | Ferramenta |
|---|---|
| XML bem-formado, módulos mesclam | robot merge |
| Conformidade com o perfil OWL 2 DL | robot validate-profile --profile DL |
| Consistência, sem classes insatisfazíveis | robot reason --reasoner HermiT |
Toda entidade tem rdfs:label e skos:definition | queries/anotacoes-obrigatorias.rq |
| Nenhum rótulo duplicado entre entidades distintas | queries/rotulos-duplicados.rq |
| Relatório de modelagem (informativo, não bloqueia) | robot report |
| Os imports da FIBO resolvem, e cada IRI alinhada existe lá e não está deprecada | queries/alinhamentos-fantasma.rq |
O job da FIBO também roda semanalmente, porque a FIBO é publicada por terceiros e muda sem aviso.
As serializações em Turtle são geradas pelo CI como artefato, em vez de versionadas, para não haver duas fontes da verdade.
O namespace da ontologia é https://w3id.org/bfo-br#, prefixo bfo. A
tabela completa de prefixos (FIBO, OMG Commons, Open Finance, BCB) está em
docs/README.md.
https://w3id.org/bfo-br é um IRI persistente com registro pendente junto ao
W3C Permanent Identifier Community Group — ver w3id/README.md.
Enquanto o registro não sai, os IRIs não dereferenciam; nada depende disso,
porque o catalog-v001.xml resolve tudo localmente.
docs/README.md descreve em detalhe as classes, propriedades, mapeamentos, classificações regulatórias e exemplos de uso.
O projeto segue o Versionamento Semântico.
Termos publicados nunca são removidos; os superados recebem
owl:deprecated true (ex.: bfo:DOC, descontinuado em 2024). Ver
CHANGELOG.md.
Se você usar a BFO, por favor cite (ver CITATION.cff):
@software{bfo2026,
author = {Brolesi, F. F.},
title = {{Brazilian Financial Ontology (BFO): Uma Ontologia Formal do Sistema Financeiro Brasileiro}},
year = {2026},
publisher = {GitHub},
url = {https://github.com/brolesi/bfo},
version = {2.1.0},
note = {Ontologia OWL/RDF alinhada com FIBO e integrada ao Open Finance Brasil e BCB}
}Contribuições são bem-vindas. Leia o CONTRIBUTING.md para as convenções de modelagem (nomenclatura de IRIs, anotações obrigatórias, restrições de OWL DL) e abra uma issue ou pull request.