Esta é a implementação de código aberto do pygraft, apresentado inicialmente neste artigo.
O Pygraft é uma biblioteca Python de código aberto para gerar esquemas sintéticos, porém realistas, e (KGS) com base em parâmetros especificados pelo usuário. Os recursos gerados são agnósticos de domínio, ou seja, eles não estão vinculados a um campo de aplicação específico.
Ser capaz de sintetizar esquemas e KGs é um marco importante para a realização de pesquisas em domínios onde os dados são sensíveis ou não estão prontamente disponíveis. O Pygraft permite que pesquisadores e profissionais gerem esquemas e KGs em tempo real, forneçam conhecimento mínimo sobre as especificações desejadas.
Pygraft tem os seguintes recursos:
A mais recente versão estável do pygraft pode ser baixada e instalada no Pypi com:
pip install pygraftA versão mais recente do pygraft pode ser instalada diretamente da fonte do GitHub com:
pip install git+https://github.com/nicolas-hbt/pygraft.gitRecursos adicionais serão fornecidos nas próximas versões do pygraft. Para citar apenas alguns:
Alta prioridade
Prioridade média
rdfs:subPropertyOf , owl:FunctionalProperty e owl:InverseFunctionalProperty , como um valor diferente de zero para os três ao mesmo tempo pode levar a KGs inconsistentes.Baixa prioridade
As contribuições do pygraft são as seguintes:
Até onde sabemos, o Pygraft é o primeiro gerador capaz de sintetizar esquemas e KGs em um único pipeline.
Os esquemas e KGs gerados são descritos com um conjunto estendido de construções RDFs e OWL, permitindo descrições de recursos de granulação fina e conformidade estrita com padrões semânticos comuns.
Uma ampla gama de parâmetros pode ser especificada pelo usuário. Eles permitem criar um número infinito de gráficos com diferentes características. Mais detalhes sobre parâmetros podem ser encontrados na seção Parâmetros da documentação oficial.
De uma perspectiva de alto nível, todo o pipeline de geração de enxerto de pygraf é mostrado na Figura 1. Em particular, os geradores de classe e relação são inicializados com parâmetros especificados pelo usuário e usados para construir o esquema de forma incremental. A consistência lógica do esquema é posteriormente verificada usando o eremita Razão do OwlReady2. Se você também estiver interessado em gerar um kg com base nesse esquema, o gerador KG será inicializado com parâmetros relacionados a kg e fundido com o esquema gerado anteriormente para construir sequencialmente o kg. Por fim, a consistência lógica do KG resultante é (novamente) avaliada usando o eremita.

Figura 1: Visão geral do pygraft
Depois de instalado, o pygraft pode ser carregado com:
import pygraftÉ importante ressaltar que você pode acessar todas as funções com:
pygraft . __all__ Vamos supor que estamos interessados apenas em gerar um esquema. Primeiro, precisamos recuperar o arquivo de configuração do modelo (por exemplo, um arquivo de configuração .yaml ), que é tão simples quanto chamando create_yaml_template() :
pygraft . create_yaml_template () Agora, o modelo foi gerado no diretório de trabalho atual e é nomeado template.yml por padrão.
Este arquivo contém todos os parâmetros ajustáveis. Para mais detalhes sobre seus significados, verifique a seção Parâmetros.
Por uma questão de simplicidade, não planejamos modificar esse modelo e seguir os valores de parâmetros padrão.
A geração de uma ontologia é possível através da função generate_schema(path) , que requer apenas o caminho relativo para o arquivo de configuração.
Importante
Para as etapas a seguir, ou seja, gerando um esquema e um kg, você precisa que o Java seja instalado e a variável de ambiente $ java_home a ser atribuída corretamente. Isso ocorre porque o eremita Razoer atualmente é executado usando o Java.
No nosso caso, o arquivo de configuração é nomeado template.yml e está localizado no diretório de trabalho atual, assim:
pygraft . generate_schema ( "template.yml" ) O esquema gerado pode ser recuperado em output/template/schema.rdf . Arquivos adicionais são criados durante o processo: output/template/class_info.json e output/template/relation_info.json . Esses arquivos fornecem informações importantes sobre as classes e relações do esquema gerado, respectivamente.
Vamos agora explorar como usar o Pygraft para gerar um kg. Nesta seção, assumimos que já temos um esquema, que servirá como um plano para gerar nosso KG. Podemos usar o mesmo arquivo de configuração de antes - pois também continha parâmetros relacionados à geração de kg (embora não seja usado antes, já que apenas pedimos um esquema) - para gerar um kg:
pygraft . generate_kg ( "template.yml" ) O kg gerado pode ser recuperado em output/template/full_graph.rdf . Ele combina informações herdadas de output/template/schema.rdf (ou seja, informações ontológicas) com informações relacionadas aos indivíduos.
Na maioria dos casos, se deseja gerar um esquema e um kg em um único processo. O Pygraft permite isso com a função generate(path) , que opera exatamente como as duas funções de generate_schema(path) e generate_kg(path) :
pygraft . generate ( "template.yml" )Supondo que você tenha clonado o repositório de pygraft para o seu computador:
pip install pygraft # Displaying help
python -m pygraft.main --help # Generating a schema from a local template file
python -m pygraft.main -g generate_schema -conf template.yml
# ... then browse the resulting schema in the ./output/template folder. Interessado em contribuir para o pygraft? Por favor, considere alcançar: [email protected]
Se você gosta de pygraft, considere baixar o Pygraft e estrelar nosso repositório do GitHub para torná -lo conhecido e promover seu desenvolvimento!
Se você usar ou mencionar o Pygraft em uma publicação, cite nosso trabalho como:
@misc{hubert2023pygraft,
title={PyGraft: Configurable Generation of Schemas and Knowledge Graphs at Your Fingertips},
author={Nicolas Hubert and Pierre Monnin and Mathieu d'Aquin and Armelle Brun and Davy Monticolo},
year={2023},
eprint={2309.03685},
archivePrefix={arXiv},
primaryClass={cs.AI}
}