Skip to content

brcris-ibict/brcris-lib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BrCris Lib

Modelo de entidades e relacionamentos compatível com o La Referencia.

Deduplicador de entidades.

Importação/Exportação de dados em formato próprio.

Validação/Exportação para carga no La Referencia.

Table of Contents

  1. Estrutura do modelo
  2. Instalação/Configuração do ambiente
  3. Parsers
    1. TSV Fiocruz
    2. OasisBr
    3. CSV CNPq
    4. XML CV Lattes
  4. Deduplicar
  5. Gerar arquivo de carga La Referencia (usado para poucas/pequenas entidades)
  6. Gerar arquivos de carga La Referencia (usado para grande volume de dados)
  7. Filtrar dados baseado em uma lista de identificadores / semanticId

Estrutura do modelo

Os dados são estruturados em formato de árvore, permitindo relacionar entidades, além de adicionar atributos e identificadores. A ordem da árvore fica a critério de cada um.

Ex.: 1

            Publication
           /     |     \
          /      |      \
   Person(1)  Person(1)  OrgUnit(2)
       /
  OrgUnit(3)

Ex.: 2

               Person
              /     \
       OrgUnit(3)  Publication
                     /     \
                    /       \
               Person(1)   OrgUnit(2)
  • *1 - Authorship
  • *2 - ThesisSponsorship
  • *3 - Affiliation

Ambiente:

Python >3.8

python3 -m venv .venv
source .venv/bin/activate # .venv\Scripts\activate (windows)
pip install -r requirements.txt

Sugestão de Utilização:

Exemplo de utilização dos scripts (Enquanto não são realizados os ajustes para transforma-los em uma biblioteca)

Sugestão de estrutura de diretórios, comandos e configuração

Estrutura de diretórios

- raíz
    - .venv (python virtualenv)
    - seu-projeto (diretório contendo seus scripts python)
    - brcris-lib (diretório da biblioteca)

Comandos para criação da estrutura e clone do repositório.

mkdir nome-do-diretorio-raiz && cd nome-do-diretorio-raiz
mkdir nome-do-diretorio-do-projeto
git clone https://github.com/brcris-ibict/brcris-lib.git brcris-lib
source .venv/bin/activate
pip install -r brcris-lib/requirements.txt
touch nome-do-diretorio-do-projeto/main.py

Exemplo de código python

import sys
sys.path.append('../brcris-lib/src')

from models.entity import Entity, Value
from models.identifiers import Id, LattesId, OrcidId #, ...
from utils.export.lareferencia import LaReferenciaExporter

# criação da entidade
e1 = Entity('Person', 'lattes')
# identificadores
e1.identifiers.add(LattesId('1234567890123456')) 
e1.identifiers.add(OrcidId('0000-0002-0123-208X'))
e1.identifiers.add(Id('email', 'fulano@email.com'))
# campos
e1.fields['name'] = 'Fulano'
e1.fields['name'].add('Fulano da Silva') # exemplo de campos com multiplos valores
e1.fields['location']['city'].add('São Paulo') # campos aninhados (cidade e país dentro de location)
e1.fields['location']['country'] = 'Brasil'
e1.fields['location']['country'].add('Brazil', lang='eng') # campos com multiplos idiomas
e1.fields['phone'].addValue(Value('9999999999'), Value('33333333')) # outra forma de adicionar campos

# criação de outra entidade
e2 = Entity('OrgUnit', 'lattes')
e2.identifiers.add(Id('ror', '123456'))
e2.fields['name'].add('ibict')
# relacionamento entre duas entidades
e1.relations['Affiliation'].add(e2)

# exportador
exporter = LaReferenciaExporter('modelo_brcris.xml')
xml = exporter.toXml(e1)[1]
print(xml)

Comandos inclusos

Parsers

Fiocruz

TSV contendo dados da fiocruz, com as seguintes colunas:

  • 0: IDLattes
  • 1: CPF
  • 2: Ingresso
  • 3: Sigla Unidade
  • 4: Unidade
  • 5: localização SGA
  • 6: Escolaridade
  • 7: Cargo (atual)
  • 8: Inatividade
python src/main.py parser tsvfiocruz --input data/fiocruz/Fiocruz_IDLattes.tsv --output data/fiocruz/Fiocruz.json

OasisBr

Diretório contendo arquivo(s) JSON extraídos do Solr do OasisBR

Campos disponíveis: https://github.com/brcris-ibict/plano-de-gestao/blob/master/docs/campos_oasisbr.csv

python src/main.py parser oasisbr --input_path C:/Users/Tales/Desenvolvimento/certificacao-lattes/data/oasisbr/*.json --output data/oasisbr/OasisBr.json

python .\src\main.py parser oasisbr --input_path "G:\dados\oasisbr\*" --output "G:\dados\seniors (1)\OasisBr.json" --input_filter_ids "G:\dados\seniors (1)\seniorsIds.txt"

CSV CNPq

Arquivo CSV contendo dados de mestres e doutores disponibilizado pelo CNPq com as seguintes colunas:

  • 0: NRO_ID_LATTES
  • 1: NOME
  • 2: TITULO
  • 3: NIVEL
  • 4: ANO_TERMINO
  • 5: ANO_OBTENCAO
  • 6: PQ_CATEGORIA_NIVEL
  • 7: ORCID
  • 8: NRO_ID_ORIENTADOR
  • 9: NOME_DO_ORIENTADOR
python src/main.py parser cnpq csv-mestres-e-doutores --input data/cnpq/ArquivoMestresDoutoresLattes.txt --output data/cnpq/CnpqMestresEDoutores.json
python .\src\main.py parser cnpq csv-mestres-e-doutores --input "c:\Users\Tales\Desenvolvimento\Ibict\Data\ArquivoMestresDoutoresLattes20220701\ArquivoMestresDoutoresLattes.txt" --output "C:\Users\Tales\Desenvolvimento\Ibict\Data\08072022\MestresEDoutores.json" --input_filter_ids "c:\Users\Tales\Desenvolvimento\Ibict\Data\08072022\CapesIds.txt" "c:\Users\Tales\Desenvolvimento\Ibict\Data\08072022\CapesIdsProgramsOrgunits.txt" "c:\Users\Tales\Desenvolvimento\Ibict\Data\08072022\OasisbrIds.txt"

Arquivo CSV contendo dados de teses e dissertações disponibilizado pelo CNPq com as seguintes colunas:

  • 0: NRO_ID_LATTES
  • 1: NOME
  • 2: TITULO
  • 3: NIVEL
  • 4: ANO
  • 5: PQ_CATEGORIA_NIVEL
  • 6: A.ORCID
  • 7: NRO_ID_ORIENTADO
  • 8: NOME_ORIENTADO
python src/main.py parser cnpq csv-teses-e-dissertacoes --input data/cnpq/ArquivoTesesDissertacoesOrientadasLattes.txt --output data/cnpq/CnpqTesesEDissertacoes.json

parser DI

python .\src\main.py parser cnpq di --input "C:\Users\Tales\Desenvolvimento\Ibict\Scripts\brcristools\data\level0-source\di.csv" --output "G:\dados\seniors (1)\di-tree.json" --input_filter_ids "G:\dados\seniors (1)\seniorsIds.txt" "G:\dados\seniors (1)\oasisbrIds.txt"
python .\src\main.py parser cnpq di-tree --input "C:\Users\Tales\Desenvolvimento\Ibict\Scripts\brcristools\data\level0-source\di_tree_dedup.tsv" --output "G:\dados\seniors (1)\di-tree.json" --input_filter_ids "G:\dados\seniors (1)\seniorsIds.txt" "G:\dados\seniors (1)\oasisbrIds.txt"

parser lattes

python .\src\main.py parser cnpq cv-lattes --input_path "G:\dados\seniors (1)\data\repo" --output "G:\dados\seniors (1)\seniors.json" --output_ids "G:\dados\seniors (1)\seniorsIds.txt"

Deduplicar os dados

Exemplos de parametro de filtros

python src/main.py dedup --input data/cnpq/Equipe.json --output data/cnpq/EquipeDedup.json --filter 'Person<Authorship>Publication' 'Person<Adivisoring>Publication' 'Person<CoAdivisoring>Publication' 'Person<Affiliation>OrgUnit' 'Publication<CourseThesis>Course<IsProgramOf>Program' 'Course<CourseOrgUnit>OrgUnit' 'Publication<ThesisSponsorship>OrgUnit' 'Program<OrgUnitProgram>OrgUnit' 'Publication<Authorship>Person' --strategy 1

python src/main.py dedup --input data/cnpq/Cnpq.json --output data/cnpq/CnpqDedup.json

python src/main.py dedup --input data/cnpq/Cnpq.json data/cnpq/Oasisbr.json --output data/cnpq-oasisbr/CnpqOasisbrDedup.json


python src/main.py dedup-resolve --input 'data/level3-dedup/Di.json' --input_to_resolve 'data/level1-normalized/Fiocruz.json' --output 'data/level3-dedup/FiocruzDi.json' --filter 'OrgUnit<IsUnitOf>OrgUnit' --filter_dedup_base 'OrgUnit<IsUnitOf>OrgUnit' --strategy 3

Gerar arquivos de carga La Referencia (usado para poucas/pequenas entidades)

python src/main.py export lareferencia --input=data/cnpq/CnpqEquipeDedup.json --output=data/cnpq/CnpqEquipe.xml --without_community
python src/main.py export lareferencia --input=data/cnpq/CnpqEquipeDedup.json --output=data/cnpq/CnpqEquipe.xml --community TesteEquipe

python src/main.py export lareferencia --input data/fiocruz/Fiocruz.json --output data/fiocruz/Fiocruz.xml

Gerar arquivos de carga La Referencia (usado para grande volume de dados)

python src/main.py export lareferencia --input data/fiocruz/Fiocruz.json --output data/fiocruz/xml

python src/main.py export lareferencia --input data/cnpq/CnpqDedup.json --output_path data/cnpq/xml

python .\src\main.py export lareferencia --input "G:\dados\seniors (1)\seniors.json" --output_path "G:\dados\seniors (1)\seniors_xml" --community "Seniors" --community_relations "PersonCommunity" --source "seniors" --output_ids "G:\dados\seniors (1)\seniorsIds2.txt"

Filtrar dados baseado em uma lista de identificadores / semanticId

python src/main.py filter --input data/cnpq/CnpqMestresEDoutores.json data/cnpq/CnpqTesesEDissertacoes.json --input_ids data/ids/equipe.txt --output data/cnpq/CnpqEquipe.json

About

Biblioteca BrCris para transformação e deduplicação dos arquivos XML do LaReferencia

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors