Module plume.rdf.properties#

Description des catégories de métadonnées.

Ce module gère la convergence des informations descriptives des catégories de métadonnées communes (décrites par un schéma SHACL) et locales (décrites par un modèle stocké dans des tables PostgreSQL).

La classe PlumeProperty et la plupart des fonctions du module n’ont pas vraiment vocation à être utilisées directement. La plus utile - et celle qui sert au module plume.rdf.widgetsdict - est class_properties().

plume.rdf.properties.DATATYPE_SUB = {rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#date'): (rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTime'),), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTime'): (rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#date'),)}#

Substituts autorisés pour les types de valeurs littérales.

Les clés du dictionnaire sont les types, les valeurs des listes de types pouvant leur être substitués par les modèles de formulaires. Un type non référencé ne peut pas être modifié.

class plume.rdf.properties.PlumeProperty(origin, nsm, base_path=None, property_node=None, template=None, n3_path=None, predicate=None)#

Bases : object

Catégorie de métadonnée.

Parameters:
origin{“shared”, “local”, “unknown”}

L’origine de la catégorie :

  • 'shared' pour une catégorie commune issue du schéma SHACL. L’argument property_node est alors obligatoire. template et base_path doivent être fournis s’il y a lieu.

  • 'local' pour une catégorie locale définie par le modèle. Les arguments template et n3_path sont alors obligatoires.

  • 'unknown' pour une catégorie issue du graphe de métadonnées, qui n’est répertoriée ni par le schéma SHACL ni par le modèle. L’argument predicate est alors obligatoire.

nsmPlumeNamespaceManager

Le gestionnaire d’espaces de nommage du dictionnaire de widgets.

property_nodeBNode, optional

Noeud anonyme du schéma SHACL représentant la catégorie, s’il s’agit d’une catégorie commune.

base_pathrdflib.paths.SequencePath, optional

Le chemin de la clé parente. À fournir pour les catégories communes.

templatedict, optional

Modèle local de formulaire, le cas échéant.

n3_pathstr, optional

La représentation N3 du chemin de la catégorie, s’il s’agit d’une catégorie locale. n3_path doit impérativement être répertorié dans le modèle s’il est fourni.

predicaterdflib.term.URIRef, optional

L’IRI de la catégorie. À fournir pour les propriétés qui ne sont répertoriées ni dans le schéma SHACL ni dans le modèle local.

Raises:
RuntimeError

Quand tous les arguments requis pour la valeur d”origin n’ont pas été fournis.

Attributes:
pathrdflib.paths.SequencePath

Chemin de la catégorie.

n3_pathstr

La représentation N3 du chemin de la catégorie.

predicaterdflib.term.URIRef

L’IRI de la catégorie.

prop_dictdict

Paramétrage de la catégorie (à passer à la fonction d’initialisation des futures clés).

unlistedbool

S’agit-il d’une catégorie non répertoriée par le modèle ? Vaut toujours False s’il n’y a pas de modèle.

origin{“shared”, “local”, “unknown”}

L’origine de la catégorie.

plume.rdf.properties.class_properties(rdfclass, nsm, base_path, template=None)#

Renvoie la liste des propriétés communes d’une classe.

Parameters:
rdfclassrdflib.term.URIRef

IRI d’une classe présumée décrite dans le schéma SHACL.

nsmPlumeNamespaceManager

Le gestionnaire d’espaces de nommage du dictionnaire de widgets.

base_pathrdflib.paths.SequencePath

Chemin de la clé parente. Peut être None pour les catégories de premier niveau.

templatedict, optional

Modèle local de formulaire, le cas échéant.

Returns:
tuple(list(PlumeProperty), list(rdflib.term.URIRef))

Un tuple avec :

  • [0] La liste des propriétés.

  • [1] La liste des IRI des propriétés (prédicats des triplets du graphe de métadonnées).

plume.rdf.properties.merge_property_dict(shape_dict, template_dict)#

Fusionne deux dictionnaires décrivant une même catégorie de métadonnées.

Parameters:
shape_dictdict

Dictionnaire portant les informations relatives à la propriété issues du schéma SHACL descriptif des métadonnées communes.

template_dictdict

Dictionnaire portant le paramétrage local.

Notes

La fonction ne renvoie rien, elle complète shape_dict.

Les clés predicate, kind, is_multiple et unilang ne peuvent pas être redéfinies par le modèle, leurs valeurs éventuelles seront ignorées.

La clé datatype n’est modifiable que pour quelques cas explicitement autorisés (cf. DATATYPE_SUB), typiquement l’usage de dates avec heures à la place de dates simples et inversement.

La clé order_idx produite par read_shape_property() à partir de l’indice fourni par le schéma SHACL est un tuple dont la première valeur est 9999, et la seconde l’indice. plume.pg.template.TemplateDict fait exactement l’inverse : ses clés order_idx ont l’indice du modèle en première (et unique) valeur. merge_property_dict recréé des clés order_idx dont la première valeur est l’indice du modèle, et la seconde celle du schéma des catégories communes.

La clé sources peut être restreinte par le modèle : si ce dernier fournit une liste d’URL, alors seules les sources qui se trouvent dans cette liste seront conservées, sous réserve qu’il y en ait au moins une (sinon la clé d’origine est préservée).

Le modèle peut rendre obligatoire une catégorie qui n’est pas définie comme telle par le schéma des catégories communes, mais pas l’inverse. La valeur de la clé is_mandatory n’est donc écrasée que dans le cas où elle vaut False dans le schéma et True dans le modèle.

plume.rdf.properties.property_param_values(path, param)#

Récupère les valeurs d’un paramètre de configuration du schéma des métadonnées commune pour la catégorie de chemin donné.

Parameters:
pathrdflib.term.URIRef or rdflib.paths.SequencePath or str

Un chemin d’IRI. Le chemin peut être fourni sous la forme d’une chaîne de caractères en représentation N3.

paramrdflib.term.URIRef or str

L’IRI d’un paramètre de configuration. Peut être fourni sous la forme d’une chaîne de caractères en représentation N3.

Returns:
list(rdflib.term.URIRef or rdflib.term.Literal)
plume.rdf.properties.property_sources(path)#

Renvoie la liste des sources disponibles pour une catégorie de métadonnées communes.

Parameters:
pathrdflib.term.URIRef or rdflib.paths.SequencePath or str

Un chemin d’IRI. Le chemin peut être fourni sous la forme d’une chaîne de caractères en représentation N3.

Returns:
list(str)
plume.rdf.properties.read_shape_property(shape_node)#

Extrait du schéma SHACL les caractéristiques d’une propriété d’une forme.

Parameters:
shape_nodeBNode, optional

Noeud anonyme du schéma SHACL représentant la catégorie.

Returns:
dict

Un dictionnaire avec une clé par caractéristique potentiellement fournie.