InseeFr / Magma

Metadata management API
MIT License
1 stars 4 forks source link

Modifier le nombre d'observations d'un dataset #128

Closed flo7894 closed 8 months ago

flo7894 commented 10 months ago

Ajouter sur magma une méthode /dataset/{id}/numberOfObservations pour permettre aux applications clientes de modifier le nombre d'observations d'un jeu de données. Une modification de la description du jeu de données entraine la modification de la date de mise à jour du catalogRecord associé au jeu de données

La mise à jour des triplets RDF peut être réalisée avec la requête suivante

PREFIX dcat: <http://www.w3.org/ns/dcat#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX insee: <http://rdf.insee.fr/def/base#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

WITH <http://rdf.insee.fr/graphes/catalogue>
DELETE {
    ?catalogRecord dcterms:modified ?date .
    ?dataset insee:numObservations ?numObs .
}    
INSERT {
    ?catalogRecord dcterms:modified "2023-12-15T13:18:00.000"^^xsd:dateTime .
    ?dataset insee:numObservations "10"^^xsd:integer .
} 
WHERE {
    ?catalogRecord foaf:primaryTopic ?dataset .
    ?dataset dcterms:identifier ?id .
    ?dataset rdf:type dcat:Dataset .
    FILTER(?id = 'jd0600')
    ?catalogRecord dcterms:modified ?date .
    OPTIONAL{?dataset insee:numObservations ?numObs .}
}

Le graphe dans le WITH est à mettre en paramètre applicatif de manière à pouvoir utiliser d'autres graphes si besoin. La date de modification du CatalogRecord (2023-12-15T13:18:00.000 dans l'exemple) devrait être le moment où la méthode api est appelée par le client. Le nombre d'observations (10 dans l'exemple) et l'identifiant du jeu de données (j0600 dans l'exemple) sont des paramètres de la méthode que le client appelant doit fournir.

Le nombre d'observation peut être laissé vide, auquel cas il faut enlever ?dataset insee:numObservations "10"^^xsd:integer . de la requête pour supprimer le triplet existant de la base. Le nombre d'observation doit être un entier.

L'identifiant ne peut pas être vide.

EmmanuelDemey commented 10 months ago

Lors du PUT, faire une validation du numObservations pour vérifier que la donnée est définie et valide. Si pas correct, retournez une erreur.

Ajouter UN DELETE qui supprimer le numObservations. Pour cela, il suffit d'utiliser la meme requete, en supprimant

?dataset insee:numObservations "10"^^xsd:integer .

On peut variabiliser ce block via le moteur de templating Freemarker utilisé.

EmmanuelDemey commented 10 months ago

@FBibonne et @GuyleneTandeauDeMarsac contacte @alicela (coucou Alice :D) pour avoir des informations complémentaires sur l'ouverture du Back Office.

EmmanuelDemey commented 10 months ago

En prévision , de la modification de propriétés supplémentaires, il faut plutot faire une requete PATCH plutot que PUT.

flo7894 commented 9 months ago

@EmmanuelDemey @HugoBouttes, comme discuté à terme on veut autoriser plusieurs modifications par les clients sur les objets dataset, les propriétés identifiées sont les suivantes :

"issued": première date de publication des données "modified": dernière date de modification des données "temporal": { "startPeriod": première année disponible dans les données "endPeriod": dernière année disponible dans les données } "numObservations": nombre d’observations disponibles "numSeries": nombre de série disponibles

EmmanuelDemey commented 9 months ago

@flo7894 nous ne mettons pas à jour l'échelle de la période de temps ? gYear versus date ?

flo7894 commented 9 months ago

@EmmanuelDemey a priori non, on laissera le client mettre des années ou des dates, ajouter un contrôle sur temporalResolution pour autoriser l'un ou l'autre ne me paraît pas nécessaire

GtanSndil commented 8 months ago

1er élément de correction : https://github.com/InseeFr/Magma/pull/148 proposition de début de correction : branche fix-PATCH-numObs