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é quePgDescription.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ésPgDescription.ante
etPgDescription.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. SiFalse
, 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.