MTES-MCT / metadata-postgresql

Plume : gestion des métadonnées du patrimoine PostgreSQL
https://mtes-mct.github.io/metadata-postgresql/
GNU Affero General Public License v3.0
1 stars 1 forks source link

Gestion des valeurs littérales mal typées avec RDFLib 6.2.0+ #120

Closed alhyss closed 1 year ago

alhyss commented 1 year ago

Pré-requis : prise en charge par Plume d'au moins une version de RDFLib supérieure ou égale à la 6.2.0.

RDFLib 6.2.0 introduit des contrôles lors de la génération des objets rdflib.terms.Literal, pour vérifier que la forme de la valeur correspond à celle qui est attendue pour le type spécifié. Si ce n'est pas le cas, il affiche un avertissement et l'objet résultant aura un attribut ill_typed valant True.

Cet attribut, qui n'existait pas dans les versions précédentes, devrait être exploité par les fonctions du module plume.rdf.utils qui convertissent les valeurs littérales en chaînes de caractères intégrables dans les widgets.

Par exemple, str_from_time ne devrait plus seulement tester :

    if (
        not timelit or not isinstance(timelit, Literal)
        or not timelit.datatype == XSD.time
    ):
        return

Mais :

    if (
        not timelit or not isinstance(timelit, Literal)
        or not timelit.datatype == XSD.time
        or timelit.ill_typed
    ):
        return

Les tests de ces fonctions qui portent sur des valeurs mal-typées devront aussi être réexaminés, sans quoi des avertissements viendront polluer la console de test.

Réciproquement, dans les fonctions de conversion en valeur littérale (decimal_from_str, time_from_str, etc.), on pourrait imaginer vérifier que l'attribut ill_typed de l'objet obtenu ne vaut pas True avant de le renvoyer.

alhyss commented 1 year ago

@WREATCHED En fait, est-ce que tu peux faire la mise à jour de RDFLib en 6.3.2 maintenant ? Ce n'est pas à quelques jours près, mais il va y en avoir besoin pour que je puisse utiliser l'attribut rdflib.terms.Literal.ill_typed sans que ça plante.

WREATCHED commented 1 year ago

Hello, Poussé sur le Git