diff --git a/data-computer/swagger.json b/data-computer/swagger.json index 2f02b56..b93b6ce 100644 --- a/data-computer/swagger.json +++ b/data-computer/swagger.json @@ -3,7 +3,7 @@ "info": { "title": "data-computer - Calculs sur fichier corpus compressé", "summary": "Algorithmes de calculs sur un corpus compressé", - "version": "2.9.4", + "version": "2.9.5", "termsOfService": "https://services.istex.fr/", "contact": { "name": "Inist-CNRS", diff --git a/data-computer/v1/pair-segment.ini b/data-computer/v1/pair-segment.ini new file mode 100644 index 0000000..ccc73fa --- /dev/null +++ b/data-computer/v1/pair-segment.ini @@ -0,0 +1,97 @@ +# Entrypoint output format +mimeType = application/json + +# OpenAPI Documentation - JSON format (dot notation) +post.operationId = post-v1-tree-segment +post.summary = Création de segments à partir des co-occurences de valeurs de plusieurs champs +post.description = Le corpus est transformé en liste de segments (source, target, weight) à partir des c-ooccurences de plusieurs champs +post.tags.0 = data-computer +post.requestBody.content.application/x-gzip.schema.type = string +post.requestBody.content.application/x-gzip.schema.format = binary +post.requestBody.content.application/x-tar.schema.type = string +post.requestBody.content.application/x-tar.schema.format = binary +post.requestBody.required = true +post.responses.default.description = Informations permettant de récupérer les données le moment venu +post.parameters.0.description = Indenter le JSON résultant +post.parameters.0.in = query +post.parameters.0.name = indent +post.parameters.0.schema.type = boolean +post.parameters.1.description = URL pour signaler que le traitement est terminé +post.parameters.1.in = header +post.parameters.1.name = X-Webhook-Success +post.parameters.1.schema.type = string +post.parameters.1.schema.format = uri +post.parameters.1.required = false +post.parameters.2.description = URL pour signaler que le traitement a échoué +post.parameters.2.in = header +post.parameters.2.name = X-Webhook-Failure +post.parameters.2.schema.type = string +post.parameters.2.schema.format = uri +post.parameters.2.required = false + +[env] +path = generator +value = pair-segment + +[use] +plugin = basics +plugin = analytics + +# Step 1 (générique): Charger le fichier corpus +[delegate] +file = charger.cfg + +# Step 1.1 (spécifique): Controle du premier element en supposant que les autres lui ressemblent +[singleton] +[singleton/validate] +path = id +rule = required + +path = value +rule = required|array + +# Step 2 (générique): Traiter de manière asynchnore les items reçus +[fork] +standalone = true +logger = logger.cfg + +# Step 2.1 (spécifique): Lancer un calcul sur tous les items reçus +[fork/delegate] + +# Step 2.1.1 (spécifique): S'assurer d'avoir des tableaux de tableaux +; [fork/delegate/replace] +; path = id +; value = get('id') +; path = value +; value = get('value').castArray().map(x => x && Array.isArray(x)?x:[x]) + +# Step 2.1.2 (spécifique): Créer des tableaux de co-occurrences + +[fork/delegate/pair] +path = get('value').map((val, idx) => `value.${idx}`) +identifier = id + +# Step 2.1.3 (spécifique): Regrouper les segments +[fork/delegate/aggregate] + +# Step 2.1.4 (spécifique): Construire un résulat spécifique du calcul +[fork/delegate/replace] +path = source +value = get('id.0') +path = target +value = get('id.1') +path = weight +value = get('value').size() +path = origin +value = get('value').uniq() + +[fork/transit] + +# Step 2.2 (générique): Enregister le résulat et signaler que le traitment est fini +[fork/delegate] +file = recorder.cfg + +# Step 3 : Renvoyer immédiatement un seul élément indiquant comment récupérer le résulat quand il sera prêt +[delegate] +file = recipient.cfg +