Module plume.pg.description#

Descriptifs PostgreSQL.

Ce module prend en charge la désérialisation des métadonnées contenues dans les descriptifs PostgreSQL en graphe de métadonées (plume.rdf.metagraph.Metagraph()). En retour, il permet la mise à jour du texte du descriptif d’après un nouveau graphe.

Si raw est le descriptif brut importé depuis PostgreSQL (peut être None le cas échéant) :

>>> raw = '...'
>>> pgdescription = PgDescription(raw)

Les métadonnées éventuellement présentes, supposées être encodées en JSON-LD et placée entre des balises <METADATA> et </METADATA>, sont automatiquement désérialisées dans le graphe exposé par la propriété PgDescription.metagraph :

>>> metagraph = pgdescription.metagraph
>>> metagraph
<Graph identifier=... (<class 'plume.rdf.metagraph.Metagraph'>)>

Pour mettre à jour le descriptif, il suffit de redéfinir la propriété PgDescription.metagraph avec le nouveau graphe :

>>> pgdescription.metagraph = metagraph

Le nouveau texte descriptif est simplement :

>>> str(pgdescription)
'...'
class plume.pg.description.PgDescription(raw=None, do_not_parse=False, clean='never', copy_dct_title=False, copy_dct_description=False)#

Bases : object

Descriptif PostgreSQL.

Parameters:
rawstr, optional

Une chaîne de caractères correspondant à un descriptif PostgreSQL. Peut être None, qui sera alors automatiquement transformé en chaîne de caractères vide (idem si l’argument n’est pas fourni).

do_not_parsebool, default False

Si True, aucune tentative ne sera faite pour lire les éventuelles métadonnées contenues entre les balises <METADATA>. Dans ce cas, la propriété PgDescription.metagraph sera toujours un graphe vide et il n’est pas assuré que PgDescription.jsonld soit un JSON-LD valide. Faire usage de ce paramètre est recommandé lorsqu’il n’est pas prévu d’exploiter les métadonnées, afin de réduire le temps de calcul.

clean{“never”, “first”, “always”}, optional

Le descriptif PostgreSQL doit-il être réinitialisé ? La valeur 'always' entraîne la réinitialisation systématique des propriétés PgDescription.ante et PgDescription.post. Avec 'first', ces propriétés ne sont vidées que si le graphe d’origine était vide.

copy_dct_titlebool, default False

Si True, PgDescription.ante est réinitialisé avec le libellé du jeu de donnée (extrait du graphe) lorsque le graphe est mis à jour.

copy_dct_descriptionbool, default False

Si True, PgDescription.ante est réinitialisé avec la description du jeu de donnée (extraite du graphe) lorsque le graphe est mis à jour. Il est possible de combiner copy_dct_title et copy_dct_description, le libellé et la description sont alors écrits à la suite, séparés par un retour à la ligne.

Notes

Si la dé-sérialisation du JSON-LD contenu dans le commentaire PostgreSQL échoue, il sera considéré que le descriptif ne contenait pas de métadonnées. À la première sauvegarde, le contenu des balises <METADATA> sera écrasé. Le cas échéant, les commentaires qui se trouvaient avant et après seront par contre préservés.

Attributes:
rawstr

Le descriptif PostgreSQL original, tel que fourni à l’initialisation. À défaut de descriptif, il s’agit d’une chaîne de caractères vide.

property ante#

str: Le texte qui précède la sérialisation JSON-LD des métadonnées.

À défaut de sérialisation JSON-LD, ante contient l’intégralité du descriptif.

Cette propriété est une chaîne de caractères vide si l’objet PostgreSQL n’avait pas de descriptif, ou si le descriptif commence par le JSON-LD.

property jsonld#

str: Partie du descriptif correspondant à la sérialisation JSON-LD des métadonnées.

Cette propriété est une chaîne de caractères vide si le descriptif ne contenait pas de JSON-LD, ou en cas de suppression a posteriori des métadonnées.

property metagraph#

plume.rdf.metagraph.Metagraph: Graphe de métadonnées déduit du descriptif.

À l’initialisation, cette propriété est automatiquement déduite du descriptif. Par la suite, ses modifications emportent mise à jour de la propriété PgDescription.jsonld, et par suite du descriptif.

Cette propriété renvoie un graphe vide si le descriptif ne contenait pas de JSON-LD.

property post#

str: Le texte qui suit la sérialisation JSON-LD des métadonnées.

Cette propriété est une chaîne de caractères vide si l’objet PostgreSQL n’avait pas de descriptif, ou si le descriptif finit par le JSON-LD.

plume.pg.description.truncate_metadata(text, with_title=False, langlist=('fr', 'en'))#

Supprime les métadonnées d’un texte présumé contenir un descriptif PostgreSQL.

Parameters:
textstr

Le texte à nettoyer.

with_titlebool, default False

Si True, la fonction tentera d’extraire des métadonnées le libellé de la table ou vue, et le substituera aux métadonnées. Si False, les métadonnées sont seulement supprimées sans que rien n’apparaisse à leur place.

langlistlist(str) or tuple(str) or str, default (“fr”, “en”)

Priorisation des langues pour le libellé, si plusieurs traductions sont disponibles. N’est considéré que si with_title vaut True.

Returns:
tuple(str, str or None)

Un tuple dont le premier élément est le texte nettoyé. Le second est toujours None si le texte ne contenait pas de métadonnées. Sinon il s’agit d’un texte qui explique que des métadonnées sont disponibles.