Module admin.register#
Gestion du registre de Plume.
Les classes, propriétés, concepts et ensembles de concepts de Plume sont publiés dans le registre http://registre.data.developpement-durable.gouv.fr/plume.
Ce module définit les classes et méthodes permettant la mise à jour de ce registre.
Pour qu’il soit utilisable, il est nécessaire de disposer d’un fichier
/admin/local/credentials.json
contenant un dictionnaire à trois
clés :
api
pour l’URL de base de l’API du registre.user
pour l’identifiant.password
pour le mot de passe.
Routine Listings#
Initialisation du requêteur :
>>> api = RegisterApi()
Interrogation simple d’un élément du registre :
>>> api.get('id')
où 'id'
est l’identifiant de l’objet dans le registre, avec ou sans slash
initial. Par exemple 'plume/isExternal'
pour la propriété plume:isExternal
.
Consultation du contenu du registre pour un élément :
>>> api.post('id')
Mise à jour d’un élément dans le registre :
>>> api.put('id')
Suppression d’un élément du registre :
>>> api.delete('id')
Mise à jour massive du registre (avec ajout des éléments manquants, mais pas suppression des éléments obsolètes) :
>>> api.update()
References#
- class admin.register.ClassDefinition(iri)#
Bases :
ObjectDefinition
Définition d’une classe de Plume.
- Parameters:
- irirdflib.term.URIRef
L’IRI de la classe, présumée référencée dans
plume.rdf.metagraph.SHAPE
.
- Raises:
- ValueError
Si la classe n’utilise pas l’espace de nommage de Plume. Il est alors considéré qu’il ne s’agit pas d’une classe créée par Plume.
Notes
À ce stade, le libellé et la description de la classe sont ceux de la propriété qui l’introduit, étant entendu que, dans le schéma des métadonnées communes de Plume, toute classe autre que
dcat:Dataset
est nécessairement introduite par au moins une propriété et, en pratique, jamais plus d’une pour l’heure.Methods
parameters
()Renvoie la description de l'objet sous forme de paramètres utilisables par une requête HTTP POST.
- class admin.register.ConceptDefinition(iri, scheme_iri=None)#
Bases :
ObjectDefinition
Définition d’un concept de Plume.
- Parameters:
- irirdflib.term.URIRef
L’IRI du concept, présumé référencé dans
plume.rdf.thesaurus.VOCABULARIES
.- scheme_irirdflib.term.URIRef, optional
L’IRI de l’ensemble auquel appartient le concept. Si non renseigné, le constructeur ira chercher l’information dans le graphe. À noter qu’il est essentiel de fournir cette information lorsque le concept considéré apparaît dans plusieurs ensembles.
- Raises:
- ValueError
Si l’ensemble dont fait partie le concept n’utilise pas l’espace de nommage de Plume. Il est alors considéré qu’il ne s’agit pas d’un thésaurus créé par Plume.
Methods
parameters
()Renvoie la description de l'objet sous forme de paramètres utilisables par une requête HTTP POST.
- class admin.register.ConceptSchemeDefinition(iri)#
Bases :
ObjectDefinition
Définition d’un ensemble de concepts de Plume.
- Parameters:
- irirdflib.term.URIRef
L’IRI de l’ensemble de concepts, présumé référencé dans
plume.rdf.thesaurus.VOCABULARY
.
- Raises:
- ValueError
Si l’ensemble n’utilise pas l’espace de nommage de Plume. Il est alors considéré qu’il ne s’agit pas d’un thésaurus créé par Plume.
Methods
parameters
()Renvoie la description de l'objet sous forme de paramètres utilisables par une requête HTTP POST.
- class admin.register.DefinitionsCollection#
Bases :
dict
Répertoire de définitions des objets du registre de Plume.
Les objets de cette classe sont initialisés par lecture du schéma des métadonnées communes,
plume.rdf.metagraph.SHAPE
, et de la compilation des thésaurus de Plume,plume.rdf.thesaurus.VOCABULARY
. Sont conservés les propriétés, classes, concepts et ensemble de concepts utilisant l’espace de nommage de Plume, ainsi que tous les concepts de ensembles de concepts utilisant l’espace de nommage de Plume.Les clés du dictionnaire sont les identifiants des objets dans le registre (sans le slash initial), les valeurs sont les objets
ObjectDefinition
qui les décrivent.Methods
clear
()copy
()fromkeys
(iterable[, value])Create a new dictionary with keys from iterable and values set to value.
get
(key[, default])Return the value for key if key is in the dictionary, else default.
items
()keys
()pop
(key[, default])If the key is not found, return the default if given; otherwise, raise a KeyError.
popitem
(/)Remove and return a (key, value) pair as a 2-tuple.
setdefault
(key[, default])Insert key with a value of default if key is not in the dictionary.
update
([E, ]**F)If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
values
()
- class admin.register.ObjectDefinition(objid, objtype, title, graph, subject)#
Bases :
object
Définition d’un objet RDF créé par Plume.
- Attributes:
- objidstr
Fragment d’URI constituant l’identifiant de l’objet dans le registre (sans le slash initial).
- parentstr
Identifiant de l’objet parent, le cas échéant.
- objtype{“R”, “E”}
Type d’objet. R (registre) pour un ensemble de concepts, E (élément) pour un concept, une propriété ou une classe.
- titlestr
Le libellé principal de l’objet.
- graphrdflib.graph.Graph
Graphe contenant la description de l’objet.
- subjectrdflib.term.URIRef
URI de l’objet, qui est donc le sujet de tous les triplets RDF le décrivant.
- jsonvallist
Désérialisation python de la sérialisation JSON-LD de graph.
Methods
Renvoie la description de l'objet sous forme de paramètres utilisables par une requête HTTP POST.
- parameters()#
Renvoie la description de l’objet sous forme de paramètres utilisables par une requête HTTP POST.
- Returns:
- bytes
Représentation binaire d’un objet JSON.
- class admin.register.PropertyDefinition(iri)#
Bases :
ObjectDefinition
Définition d’une propriété de Plume.
- Parameters:
- irirdflib.term.URIRef
L’IRI de la propriété, présumée référencée dans
plume.rdf.metagraph.SHAPE
.
- Raises:
- ValueError
Si la propriété n’utilise pas l’espace de nommage de Plume. Il est alors considéré qu’il ne s’agit pas d’une propriété créée par Plume.
Notes
Dans le schéma des métadonnées communes de Plume, une même propriété utilisée par plusieurs classes peut avoir des libellés et descriptions légèrement différents pour faciliter la compréhension ou donner des conseils de saisie. Néanmoins, la question ne se pose pas à date pour les propriétés ajoutées par Plume. On conserve ici toutes les valeurs trouvées, mais il n’y en aura en fait qu’une.
Methods
parameters
()Renvoie la description de l'objet sous forme de paramètres utilisables par une requête HTTP POST.
- class admin.register.RegisterApi#
Bases :
object
Requêteur sur le registre de Plume.
- Attributes:
- apistr
URL de base de l’API du registre.
- requesturllib.Request
Dernière requête envoyée à l’API.
- rawbytes
Résultat brut de la dernière requête envoyée à l’API.
- responsedict or list
Désérialisation python du JSON résultant de la dernière requête renvoyée à l’API.
- errcodeint
Si la dernière requête a produit une erreur, code de l’erreur, sinon
None
.- reasonstr
Si la dernière requête a produit une erreur, la description textuelle de l’erreur, sinon
None
.
Methods
delete
(objid)Génère et envoie une requête DELETE (suppression d'un objet du registre).
get
(objid)Génère et envoie une requête GET (interrogation du registre).
post
(objid)Génère et envoie une requête POST (consultation des données du registre).
put
(objid[, data])Génère et envoie une requête PUT (mise à jour du registre).
update
([abort_on_failure])Met à jour le registre distant selon les informations locales.
- delete(objid)#
Génère et envoie une requête DELETE (suppression d’un objet du registre).
Cette méthode met à jour les attributs suivants:
errcode
etreason
avec respectivement le code et la description de l’erreur renvoyée par le serveur le cas échéant,None
sinon.raw
avec la réponse brute du serveur.response
, qui vaut toujoursNone
sauf dans le cas où le serveur a renvoyé une erreur sous forme de JSON. Il s’agit alors d’un dictionnaire avec une unique cléerror
.
- Parameters:
- objidstr
Identifiant (dans le registre) de l’objet à supprimer. Le slash initial peut être omis.
Examples
>>> api = RegisterApi() >>> api.delete('plume/isExternal')
- get(objid)#
Génère et envoie une requête GET (interrogation du registre).
errcode
etreason
avec respectivement le code et la description de l’erreur renvoyée par le serveur le cas échéant,None
sinon.raw
avec le résultat brut de la requête.response
avec la désérialisation du résultat de la requête. En cas d’erreur, il s’agit d’un dictionnaire avec une unique cléerror
.
- Parameters:
- objidstr
Identifiant (dans le registre) de l’objet pour lequel on souhaite consulter le registre. Le slash initial peut être omis.
- Raises:
- ValueError
Lorsque le résultat de la requête n’est pas un JSON valide.
Examples
>>> api = RegisterApi() >>> api.get('plume/isExternal') >>> description = api.response
- post(objid)#
Génère et envoie une requête POST (consultation des données du registre).
Cette méthode met à jour les attributs suivants:
errcode
etreason
avec respectivement le code et la description de l’erreur renvoyée par le serveur le cas échéant,None
sinon.raw
avec le résultat brut de la requête.response
avec la désérialisation du résultat de la requête, qui devrait être un dictionnaire dont les clés sontid
,parent
,type
,title
,script
,jsonval
ethtmlval
lorsqu’il n’y a pas eu d’erreur, ou une unique cléerror
en cas d’erreur.
- Parameters:
- objidstr
Identifiant (dans le registre) de l’objet pour lequel on souhaite consulter le registre. Le slash initial peut être omis.
- Raises:
- ValueError
Lorsque le résultat de la requête n’est pas un JSON valide.
Examples
>>> api = RegisterApi() >>> api.post('plume/isExternal') >>> description = api.response
- put(objid, data=None)#
Génère et envoie une requête PUT (mise à jour du registre).
Cette méthode met à jour les attributs suivants:
errcode
etreason
avec respectivement le code et la description de l’erreur renvoyée par le serveur le cas échéant,None
sinon.raw
avec la réponse brute du serveur.response
, qui vaut toujoursNone
sauf dans le cas où le serveur a renvoyé une erreur sous forme de JSON. Il s’agit alors d’un dictionnaire avec une unique cléerror
.
- Parameters:
- objidstr
Identifiant (dans le registre) de l’objet à ajouter ou mettre à jour. Le slash initial peut être omis.
- databytes, optionnal
Les paramètres de la requête. Si non fourni, la méthode récupère les informations nécessaires dans la collection d’objets locaux, dans laquelle objid doit alors être impérativement être référencé.
Examples
>>> api = RegisterApi() >>> api.put('plume/isExternal')
- update(abort_on_failure=True)#
Met à jour le registre distant selon les informations locales.
Cette méthode boucle sur la collection d’objets de Plume :py:attr:
RegistreApi.collection
pour mettre à jour les éléments correspondants du registre, sans chercher à savoir s’ils avaient réellement été modifiés entre temps.Pour l’heure, elle n’est pas capable d’identifier les éléments du registres qui n’apparaissent plus dans la collection en vue de leur suppression.
Pour chaque objet, un message dans la console indique si la mise à jour a réussi ou échoué.
- Parameters:
- abort_on_failurebool, default True
Si
True
, les mises à jour s’arrêtent à la première erreur rencontrée, sinon elles se poursuivent pour les objets suivants de la collection.