Esta es la implementación de código abierto de Pyraft, inicialmente presentado en este documento.
PyGraft es una biblioteca de Python de código abierto para generar esquemas y (kgs) sintéticos pero realistas basados en parámetros especificados por el usuario. Los recursos generados son agnósticos de dominio, es decir, no están vinculados a un campo de aplicación específico.
Ser capaz de sintetizar esquemas y KGS es un hito importante para realizar investigaciones en dominios donde los datos son sensibles o no están disponibles. Pygraft permite a los investigadores y profesionales generar esquemas y KG sobre la marcha, proporcionó un conocimiento mínimo sobre las especificaciones deseadas.
Pygraft tiene las siguientes características:
La última versión estable de PyGraft se puede descargar e instalar desde Pypi con:
pip install pygraftLa última versión de PyGraft se puede instalar directamente desde GitHub Source con:
pip install git+https://github.com/nicolas-hbt/pygraft.gitSe proporcionarán características adicionales en las próximas versiones de PyGraft. Por nombrar solo algunos:
Alta prioridad
Prioridad media
rdfs:subPropertyOf , owl:FunctionalProperty y owl:InverseFunctionalProperty , ya que un valor distinto de cero para los tres al mismo tiempo puede conducir a KG inconsistentes.Baja prioridad
Las contribuciones de PyGraft son las siguientes:
Hasta donde sabemos, PyGraft es el primer generador capaz de sintetizar esquemas y KGS en una sola tubería.
Los esquemas y KG generados se describen con un conjunto extendido de construcciones RDF y búho, lo que permite tanto descripciones de recursos de grano fino como estricto cumplimiento de los estándares web semánticos comunes.
El usuario puede especificar una amplia gama de parámetros. Estos permiten crear un número infinito de gráficos con diferentes características. Se pueden encontrar más detalles sobre los parámetros en la sección Parámetros de la documentación oficial.
Desde una perspectiva de alto nivel, toda la tubería de generación de PyAflft se representa en la Figura 1. En particular, los generadores de clase y relación se inicializan con parámetros especificados por el usuario y se utilizan para construir el esquema de forma incremental. La consistencia lógica del esquema se verifica posteriormente utilizando el razonador Hermit de Owlready2. Si también está interesado en generar un KG basado en este esquema, el generador KG se inicializa con parámetros relacionados con KG y se fusiona con el esquema generado previamente para construir secuencialmente el KG. En última instancia, la consistencia lógica del KG resultante se evalúa (nuevamente) usando ermitaño.

Figura 1: Descripción general de Pygraft
Una vez instalado, el pygraft se puede cargar con:
import pygraftEs importante destacar que puede acceder a todas las funciones con:
pygraft . __all__ Supongamos que solo estamos interesados en generar un esquema. Primero necesitamos recuperar el archivo de configuración de la plantilla (por ejemplo, un archivo de configuración .yaml ), que es tan simple como llamar create_yaml_template() :::
pygraft . create_yaml_template () Ahora, la plantilla se ha generado en el directorio de trabajo actual, y se llama template.yml de forma predeterminada.
Este archivo contiene todos los parámetros sintonizables. Para obtener más detalles sobre sus significados, verifique la sección de parámetros.
En aras de la simplicidad, no planeamos modificar esta plantilla y seguir con los valores de parámetros predeterminados.
La generación de una ontología es posible a través de la función generate_schema(path) , que solo requiere la ruta relativa al archivo de configuración.
Importante
Para los siguientes pasos, es decir, generando un esquema y un KG, necesita que se instale Java y la variable de entorno $ Java_Home se asigne correctamente. Esto se debe a que el razonador ermitaño actualmente se ejecuta usando Java.
En nuestro caso, el archivo de configuración se llama template.yml y se encuentra en el directorio de trabajo actual, por lo tanto::
pygraft . generate_schema ( "template.yml" ) El esquema generado se puede recuperar en output/template/schema.rdf . Se crean archivos adicionales durante el proceso: output/template/class_info.json y output/template/relation_info.json . Estos archivos brindan información importante sobre las clases y relaciones del esquema generado, respectivamente.
Exploremos ahora cómo usar PyGraft para generar un kg. En esta sección, suponemos que ya tenemos un esquema, que servirá como un plan para generar nuestro KG. Podemos usar el mismo archivo de configuración que antes, ya que también contenía parámetros relacionados con la generación de KG (aunque no se usa antes, ya que solo pedimos un esquema), para generar un kg:
pygraft . generate_kg ( "template.yml" ) El KG generado se puede recuperar en output/template/full_graph.rdf . Combina información heredada de output/template/schema.rdf (es decir, información ontológica) con información relacionada con las personas.
En la mayoría de los casos, uno quiere generar un esquema y un kg en un solo proceso. Pygraft permite esto con la función generate(path) , que funciona al igual que las dos funciones generate_schema(path) y generate_kg(path) :
pygraft . generate ( "template.yml" )Suponiendo que ha clonado el repositorio de Pyraflt a su computadora:
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. ¿Interesado en contribuir a Pygraft? Considere comunicarse con: [email protected]
Si le gusta PyGraft, ¡Considere descargar Pyraft y protagonizar nuestro repositorio de GitHub para darle a conocer y promover su desarrollo!
Si usa o menciona PyGraft en una publicación, cite nuestro trabajo 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}
}