Instalado na VM029 com os passos:
Installing KGTK from pipBefore you start: Our installation will use a conda environment.
(Instalei com Miniconda3, caminho /home/cloud-di/miniconda3)
Set up your own conda environment:
conda create -n kgtk-env python=3.7
conda activate kgtk-env
Note: Installing Graph-tool is problematic on python 3.8 and out of a virtual environment. Thus: the advised installation path is by using a virtual environment.
Install: pip install kgtk
You can test if kgtk is installed properly now with: kgtk -h.
Install graph-tool: conda install -c conda-forge graph-tool.
Testar
kgtk -hkgtk import-ntriples -h
cd kgtk
kgtk import-wordnet -o wordnet.tsv
Exportação dos dados do lattes que estão no Allegro (VM032) - o arquivo gerado tem 750M
~/agraph-7.0.3$ ./agtool export -o ntriples "<lattes-professores-mai21>+<lattes-professores2-mai21>" /home/cloud-di/etl/output/lattes-prof-mai21.ntImportação dos dados do lattes de NTriples para KGTK - o arquivo gerado tem 571M
conda activate kgtk-env
kgtk import-ntriples -i /home/cloud-di/lattes-data/input/lattes-prof-mai21.nt -o /home/cloud-di/kgtk/lattes-prof.tsv --reject-file /home/cloud-di/kgtk/lattes-prof.err --namespace-file prefix.tsv
Rejeitadas
kgtk validate -i lattes-prof.tsv
Análise estatística do grafo
kgtk deduplicate -i lattes-prof.tsv -o lattes-prof2.tsv -v > lattes-dpk.log
Duplicidades
Read 5.697.105 records, wrote 5.649.736 records. ... aproximadamente 50 mil removidas
kgtk graph_statistics --log graph_stat_prof2.log --pagerank --statistics-only --degrees --hits -v -i lattes-prof2.tsv -o lattes-stat.tsv
kgtk sort -c node1 -i lattes-stat.tsv -o lattes-stat-sorted.tsv
Comentários sobre o log
It has 1.990.267 nodes and 5.649.736 edges ... quase 3x, próximo a média do grau
###Degrees:
in degree stats: mean=2.838682, std=0.342223, max=1
out degree stats: mean=2.838682, std=0.008119, max=1
total degree stats: mean=5.677365, std=0.342312, max=1
###Top relations: ... rdf:first e rdf:rest são decorrentes de reificação (ordem dos autores)
rdf:type 1155494
foaf:name 676062
foaf:citationName 633313
dc:creator 529267
rdf:first 510786
rdf:rest 510786
skos:prefLabel 260624
dc:title 177882
foaf:identifier 147196
skos:broader 144904
###PageRank... rdf:nil é decorrente de reificação (ordem dos autores)
Max pageranks
710 foaf:Person 0.067649
41 cnpq:grandeArea 0.011384
30 rdf:nil 0.010474
39 cnpq:Area 0.007176
6 cnpq:subArea 0.005457
###HITS
... 8374950313063279 é o ID de Maria Clara Lucchetti Bingemer
... 9705170158456125 é o ID de Jaime Tupiassú Pinho de Castro
... o lattes de Mariza Tavares Figueira é 7674534956269436
HITS hubs
710 foaf:Person 0.999587
1576020 "8374950313063279" 0.001845
1598489 "Maria Clara Lucchetti Bingemer" 0.001735
1888267 "Mariza Tavares Figueira" 0.001641
1568794 "9705170158456125" 0.001614
HITS auth
1915144 lattes:8374950313063279#author-8374950313063279 0.001246
1643264 lattes:1860929687731797#author-1860929687731797 0.001246
1668227 lattes:2491891766759477#author-2491891766759477 0.001246
1595250 lattes:0818273339577951#author-0818273339577951 0.001246
1881308 lattes:7476904353230115#author-7476904353230115 0.001246
Estatísticas das demais classes
bibo:Article vertex_in_degree 57988 bibo:Article-vertex_in_degree-7769665
bibo:Book vertex_in_degree 12041 bibo:Book-vertex_in_degree-1615
bibo:Chapter vertex_in_degree 8571 bibo:Chapter-vertex_in_degree-7771605
bibo:Conference vertex_in_degree 29292 bibo:Conference-vertex_in_degree-75
bibo:Journal vertex_in_degree 22217 bibo:Journal-vertex_in_degree-760
bibo:Periodical vertex_in_degree 6479 bibo:Periodical-vertex_in_degree-2050
bibo:Proceedings vertex_in_degree 29292 bibo:Proceedings-vertex_in_degree-135
bibo:Thesis vertex_in_degree 17451 bibo:Thesis-vertex_in_degree-7770000
vivo:FacultyMember vertex_in_degree 1030
kgtk connected-components -i lattes-prof2.tsv -o lattes-conn.tsv
kgtk graph_statistics --log graph_stat_conn.log --pagerank --statistics-only --degrees --hits -v -i lattes-conn.tsv -o lattes-conn-stat.tsv
kgtk sort -c node2 -i lattes-conn.tsv -o lattes-conn-sorted.tsv
Comentários sobre o log
###PageRank
... componente CLUSbhXqpneKh5EhKsqsqoN/cw== tem grau de entrada 1990237, ou seja, quase todos os nós do grafo estão na mesma cc
Max pageranks
28 CLUSbhXqpneKh5EhKsqsqoN/cw== 0.459448
19 CLUSQ1ga6O0qVLdWQ8ls+GZu4A== 0.000001
22 CLUSYBdf46xwQO3SV+MJNuc7/w== 0.000001
1990272 CLUSp1DQefhDpBK+OVs32Dygow== 0.000001
10 CLUSAjpzxTEI3vMAW2deRr0L9g== 0.000001
Reificação
kgtk add-id -i lattes-prof2.tsv / unreify-values --trigger-label rdf:type --trigger-node2 cnpq:Area --value-label skos:broader --old-label skos:broader -o lattes-prof3.tsv
kgtk add-id -i lattes-prof2.tsv / unreify-values --trigger-label rdf:rest --trigger-node2 rdf:nil --value-label bibo:authorList --old-label bibo:authorList -o lattes-prof3.tsv
Comentários
O unreify-rdf-statments e unreify-values não fizeram nenhum efeito ou eu não entendi como usar !!!
Análise de caminhos do grafo
kgtk add-id -i lattes-prof2.tsv -o lattes-prof3.tsv
kgtk paths --path-file pairs-lattes-prof.tsv --path-source source --path-target target -i lattes-prof3.tsv -o lattes-prof3-path-undirected.tsv --statistics-only --undirectedkgtk paths --path-file pairs-lattes-prof.tsv --path-source source --path-target target -i lattes-prof3.tsv -o lattes-prof3-path.tsv --statistics-only
kgtk reachable-nodes -i lattes-prof3.tsv --root lattes:6075905438020841 -o lattes-prof2-reach-bfs-undirected.tsv --show-properties True --breadth-first True --undirected
kgtk reachable-nodes -i lattes-prof3.tsv --root lattes:6075905438020841 -o lattes-prof2-reach-nobfs-undirected.tsv --show-properties True --breadth-first False --undirected
Comentários sobre o resultado
Somente
na opção não direcionado é possível chegar do nó do lattes do Sérgio
ao nó do lattes do professor Herman e vice-versa. O lattes de cada professor não alcança as publicações na opção direcionado pq o predicado usado foi o isReferencedBy
kgtk filter -i lattes-prof2.tsv -p " ; dcterms:isReferencedBy ; " -o lattes-prof2-Refs.tsv
** abrir o arquivo e trocar node1 e node2
sed -i 's/dcterms:isReferencedBy/dcterms:references/g' lattes-prof2-Refs.tsv
kgtk cat -i lattes-prof2.tsv lattes-prof2-Refs.tsv / add-id -o lattes-prof3.tsv
Comentários sobre a ação
Criei na "força bruta" uma aresta do tipo CV Lattes - dcterms:references > Publicação. Sugeri uma nova funcionalidade para que esse tipo de operação (criação de arestas com base em propriedades inversas que permitam a análise bidirecional das relações)
kgtk
reachable-nodes -i lattes-prof3.tsv --root lattes:6075905438020841 -o
lattes-prof3-reach-bfs.tsv --show-properties True --breadth-first True
kgtk
reachable-nodes -i lattes-prof3.tsv --root lattes:6075905438020841 -o
lattes-prof3-reach-nobfs.tsv --show-properties True --breadth-first
False
kgtk reachable-nodes -i lattes-prof3.tsv --root lattes:6075905438020841#author-6075905438020841 -o lattes-author-reach-nobfs.tsv --show-properties True --breadth-first False
Este comentário foi removido pelo autor.
ResponderExcluirFui informado que já corrigiram e esclareceram seus pedidos/comentários.
ResponderExcluirObrigada! Vou atualizar para testar novamente.
ExcluirNa verdade, descobriram que a lista de language tags do RDF é ligeiramente diferente da lista do WD, que foi a que eles usaram inicialmente. Estarão atualizando a lista.
ResponderExcluirEm rel a props inversas e simétricas, o Pedro indicou como vc pode materializar as arestas correspondentes com queries Kypher. A filosofia deles é n aumentar as features se for possivel obter o mesmo resultado usando as funcionalidades já existentes.
Em rel. ao reify e unreify, o Craig (o engenheiro de software que é responsável pela implementação dos comandos) comentou que acha que foi má compreensão sua do que o comando faz, e ia melhorar a documentação. Mas se vc precisar, pode se comunicar com ele que ele está ciente e vai ajudar (é gente finissima).
N entendi porque o autor n é alcançável... faltou a inversa de dc:creator?
Uma observação - talvez seja mais prático quebrar estes post longos em vários pedaços, para que a gente consiga fazer comentários mais próximo do ponto relevante no texto...
Sobre "Em rel a props inversas e simétricas, o Pedro indicou como vc pode materializar as arestas correspondentes com queries Kypher. A filosofia deles é n aumentar as features se for possivel obter o mesmo resultado usando as funcionalidades já existentes." ...... eu vi a atualização deles lá no GitHub e fiz novos testes usando o Kypher como ele orientou. Funcionou perfeitamente, coloquei nesse post -> https://versant-pesquisadedoutorado.blogspot.com/2021/05/inferencia-de-arestas-com-kgtk-issue-392.html
ExcluirSobre "N entendi porque o autor n é alcançável... faltou a inversa de dc:creator?" ..... esse predicado não tem inversa no vocabulário mas não é um problema em si, é só uma observação mesmo pq um teste eu usei o nó do lattes como root e em outro eu usei o nó do professor/pesquisador.
Quantos aos demais, está empilhado aqui comigo para rever e testar. A medida que for progredindo vou atualizando.
Muito obrigada pela força !!! Tô empolgada !!!
Testei também a atualização dos language tags e funcionou corretamente. Registrei aqui -> https://versant-pesquisadedoutorado.blogspot.com/2021/05/kgtk-import-ntriples-discards-triples.html e comentei na issue do GitHub
ExcluirDaniel, a ideia de quebrar postagens para assuntos "encapsulados" ou "autocontidos" é boa mesmo, se a Veronica conseguir OK.
ResponderExcluirPor outro lado, eu uso este esquema com meus alunos de graduação e pós há muito tempo e mesmo nestes casos eu consigo comentar tranquilamente, copiando os trechos relevantes no comentário. Por exemplo:
"Uma observação - talvez seja mais prático quebrar estes post longos em vários pedaços, para que a gente consiga fazer comentários mais próximo do ponto relevante no texto..."
--- Sim, concordo com o Daniel, seria bem mais prático! :-)
Já fiz uma quebra nesse aqui, tirei a parte de embeddings e vou deixar em outro post quando terminar de executar. Vou procurar segmentar mais os posts para a dinâmica de interação ficar mais focada.
ExcluirOK
ResponderExcluir