Commit 1641b9a0 authored by Guilhem Heinrich's avatar Guilhem Heinrich
Browse files

Merge branch 'cleaning' into 'develop'

Cleaning README & refactor repo

See merge request pole-is/ontology-to-synfony-vocabulary!2
No related merge requests found
Showing with 113 additions and 4 deletions
+113 -4
# ontology-to-synfony-vocabulary # Ontology-to-synfony-vocabulary
```ps1 ## Ce projet est un script permettant de sémantiser, au sens ontologique, une application Synfony
ts-node index.ts
``` ### Description
\ No newline at end of file
Ce projet, utilisé en conjonction d'une application Synfony, permet de créer un fichier de configuration pour API platform en mettant en relation les resources servies par l'API Synfony avec des resources décrites dans un ou plusieurs fichier(s) owl/rdf.
Le programme est codé en typescript, et peut donc être `build` avec `npm run build`, et même être compilé dans une version exécutable avec l'utilitaire nexe et la commande `npm run make` ou `npm run make-linux`. Dans les deux cas, le programe est un CLI avec une aide. Un dockerfile est également présent pour contruire une image.
Les paramètres attendus sont:
- **ontologyPath**: Chemin vers un fichier ou dossier contenant des ressources sémantiques
- **synfonyEntitiesPath**: Chemin vers un fichier contenant la liste des entités Synfony pleinement qualifié
- **outputPath**: Chemin vers le fichier de configuration .yaml pour APIplatform
```mermaid
sequenceDiagram
participant Fichier_OWL_RDF as Fichier OWL/RDF ou Dossier
participant Entites_PHP as Fichier Entités PHP Symfony
participant ETL_Program as Ontology-to-synfony-vocabulary
participant Fichier_Config as Fichier Configuration .yaml
Fichier_OWL_RDF->>ETL_Program: Envoie des données OWL/RDF
Entites_PHP->>ETL_Program: Envoie des noms d'entités
ETL_Program->>Fichier_Config: Génère le fichier .yaml
Note right of ETL_Program: Traitement des données
Note right of Fichier_Config: Utilisé pour API Platform
```
### Instructions
L'utilisation final de ce projet est d'être utilisé en tant que job d'un processus de CI/CD du projet Synfony. Les prérequis sont:
- Un dépot, ou autre source, contenant des ressources sémantiques, dans un format supporté par la libraire `rdf-parse`
- Un projet Synfony, avec une commande pour généré la liste des entités avec l'autorité complète
- Un job gitlab / action github dans le projet Synfony qui récupère le contenu de ce dépôt et effectue le programme
#### Pour les dévelopeurs
Il est possible d'utiliser une librairie comme ts-node (installé globalement) pour rapidement déboger. La commande pour lancer le programme est alors:
`ts-node ./index.ts --help`
### Contenus
- Le code principal se trouve dans le fichier index.ts et le dossier src/.
- Une série de tests se trouve dans le dosser /tests.
- Un exemple de code PHP pour la commande de liste des entités pleinement qualifié, ainsi qu'un exemple de job .gitlab minimal, est dans le dossier ./example.
# Livraison du fichier de configuration de l'ontologie.
.deliver_onto_script:
- cd $PHP_DIR
- bin/console app:list-entities > ../list_entities_sf #export des entités sf
- cd ..
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # Install nvm
- export NVM_DIR="$HOME/.nvm"
- \. "$NVM_DIR/nvm.sh" # This loads nvm
- \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
- nvm install 18.17.1 #@todo : utiliser une version majeure. Celle-ci est celle de ontology-to-synfony-vocabulary.
- echo "node version"
- node --version
- git clone https://gitlab.irstea.fr/pole-is/ontology-to-synfony-vocabulary
- cd ontology-to-synfony-vocabulary
- npm install # Installer les dépendances si nécessaire
- npm run build
- cd ..
- git clone https://gitlab.irstea.fr/pole-is/deepomics-ontology
- node ontology-to-synfony-vocabulary/dist/index.js deepomics-ontology/ontologies list_entities_sf rdf_resources.yaml
\ No newline at end of file
<?php declare(strict_types=1);
/*
* Copyright (C) 2017-2021 IRSTEA
* All rights reserved.
*/
// src/Command/ListEntitiesCommand.php
namespace App\Command;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class ListEntitiesCommand extends Command
{
protected static $defaultName = 'app:list-entities';
private $doctrine;
public function __construct(ManagerRegistry $doctrine)
{
$this->doctrine = $doctrine;
parent::__construct();
}
protected function configure()
{
$this
->setDescription('Lists all entities in the system with their full authority.')
->setHelp('This command lists all entities in the system with their full authority.');
}
/**
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$entityManager = $this->doctrine->getManager();
$metadata = $entityManager->getMetadataFactory()->getAllMetadata();
foreach ($metadata as $classMetadata) {
$output->writeln($classMetadata->getName());
}
return 0;
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment