Présentation
préliminaire du schéma VITAM conçu pour le versement d’archives : 2/3
Les Métadonnées
Dans le cadre du programme VITAM, nous devons
définir les interfaces externes de la solution logicielle que nous
allons développer. Parmi ces interfaces, le schéma de données
accompagnant un versement d’archives est un enjeu important.
Ce second billet porte sur une classification des
métadonnées ainsi que leur placement respectif dans un schéma XML
de versement. Nous n’abordons pas le schéma de « stockage »
de ces métadonnées au sein du logiciel VITAM, tel que nous
l’envisageons, car il ne s’agit plus des interfaces d’un
système implémentant VITAM mais de son implémentation.
Toujours à titre personnel, ceci ne constitue
pas une publication officielle mais un moyen de recueillir des avis
avant la mouture finale, toujours avec appel à commentaires.
Pour rappel, nous nous plaçons dans le cadre des
normes et règlements français, nous nous inspirons de la norme
MEDONA de l’AFNOR (Z
44-022) qui permet de définir le sur-ensemble des échanges
entre partenaires autour d’un Système d’Archivage Électronique
(SAE). Nous nous inspirons également de MoReq2010
pour le modèle de données.
Comme pour le précédent billet, vous êtes bien
sûr, vous lecteurs, plus que les bienvenus à apporter vos
commentaires.
Les différents types de métadonnées
À l’appui des
archives, différentes métadonnées existent et ont des rôles
différents. Celles-ci, de par leur objet, ont des positionnements
différents dans un modèle de données et pour un même objet
d’archive, peuvent être multiples ou au contraire unique.
Il y a quatre types de
métadonnées, comme illustré ci-dessous dans le schéma VITAM :
![]() |
Illustration 1: Schéma VITAM |
Dans Medona, le bloc
ArchiveTransfer est
un message comportant des informations liées aux éléments
contractuels du transfert, ainsi qu’un objet DataObjectPackage
qui permet de présenter la liste des DataObject
transmis.
Nous avons modifié à
la marge les définitions des BinaryDataObject
et des PhysicalDataObject,
mais la logique globale est la même, à savoir la possibilité de
transférer des archives numériques et des archives papiers à
l’aide d’un même formalisme XML.
Nous avons coupé en
deux le bloc DescriptiveMetadata
en DescriptiveMetadataPackage
pour la partie métadonnées descriptives et de gestion, et le bloc
TechnicalMetadataPackage
pour la partie métadonnées techniques.
La présentation qui
suit se veut succincte, le format d’un blog rendant difficile la
publication in extenso d’une documentation d’un schéma XML.
Cependant j’essaierais de proposer des schémas le plus explicites
possibles pour rendre la compréhension la plus aisée possible.
Métadonnées de Transport (DataObject)
Les métadonnées de transport ont pour objet
d’encadrer le transport de l’archive depuis le service versant
jusqu’au service d’archives. En archives physiques, ces
métadonnées sont en générales représentées par la demande de
transfert et le bordereau de livraison par exemple. En numérique,
ces métadonnées sont les éléments permettant de s’assurer de la
bonne livraison (empreinte des fichiers, inventaires des objets
transmis, l’identité de l’émetteur et du récepteur, le contrat
applicable aux objets transférés, …).
Ces métadonnées constituent un bloc à part
entière sous une forme de liste, pour tous les éléments concernés
par le transport. Éventuellement, ces métadonnées peuvent être
découpées en sous-ensembles, par lots, par exemple par carton, par
container, par fichier ZIP. Elles sont uniques par objet d’archives
ou par lot d’archives.
Exemple :
- Contrat de versement
<ArchivalAgreement>ArchivalAgreement0</ArchivalAgreement>
- Identité du service versant
<TransferringAgency>
<Identifier>Identifier1</Identifier>
<OrganizationDescriptiveMetadata>OrgDescrMd1</OrganizationDescriptiveMetadata>
</TransferringAgency>
<Identifier>Identifier1</Identifier>
<OrganizationDescriptiveMetadata>OrgDescrMd1</OrganizationDescriptiveMetadata>
</TransferringAgency>
- Liste des objets d’archive : un objet binaire suivi d’un objet physique
<DataObjectPackage>
<BinaryDataObject>
<Id>ID000</Id>
<Uri>file://chemin/fichier</Uri>
<Digest>
<Value>ZGVmYXVsdA==</Value>
<Algorithm>MD5-BASE64</Algorithm>
</Digest>
<Size>1600017170</Size>
</BinaryDataObject>
<PhysicalDataObject>
<Id>ID001</Id>
<PhysicalID>IdentifiantPhysique</PhysicalID>
</PhysicalDataObject>
<BinaryDataObject>
<Id>ID000</Id>
<Uri>file://chemin/fichier</Uri>
<Digest>
<Value>ZGVmYXVsdA==</Value>
<Algorithm>MD5-BASE64</Algorithm>
</Digest>
<Size>1600017170</Size>
</BinaryDataObject>
<PhysicalDataObject>
<Id>ID001</Id>
<PhysicalID>IdentifiantPhysique</PhysicalID>
</PhysicalDataObject>
</DataObjectPackage>
Le schéma ci-dessous montre que les Binary/Physical
DataObject sont sous forme de liste (entourés d’orange).
L’objectif de cette partie est de pouvoir lister, recenser et
contrôler la livraison d’un ensemble d’archives.
![]() |
Illustration 2: Schéma VITAM - Transport |
Ci-dessous est présenté la vision XSD avec la
racine ArchiveTransfer
contenant les blocs d’identification et le bloc DataObjectPackage.
Celui-ci constitue le cœur du bloc transport.
![]() |
Illustration 3: ArchiveTransfer |
Le bloc BusinessRequestMessageType
n’est pas détaillé car il est directement repris de la norme
MEDONA.
Métadonnées Techniques (TechnicalMetadata)
Les métadonnées techniques décrivent les objets
transférés quant à leur forme : dimensions physiques, poids,
matériaux pour les objets physiques ; taille en octets,
MimeType du fichier, propriétés techniques du fichier selon son
format, … pour les objets électroniques.
Ces métadonnées sont associées à chaque objet
transféré, un par un. Comme il n’y a aucune relation entre eux
sur ce niveau de description, les blocs de métadonnées techniques
sont stockés sous la forme d’une liste. Elles sont uniques par
objet d’archives.
Exemple :
- Format du fichier décrit : l’identifiant fmt/40 (au format Pronom) indique une référence à un format particulier (Word, PDF, …) pour le fichier décrit
<Identification>
<FormatId>fmt/40</FormatId>
</Identification>
<FormatId>fmt/40</FormatId>
</Identification>
- Information sur le fichier
<FileInfo>
<Size>50</Size>
<Filename>OriginalFilename0</Filename>
<Created>2006-05-04T18:13:51.0</Created>
</FileInfo>
<Size>50</Size>
<Filename>OriginalFilename0</Filename>
<Created>2006-05-04T18:13:51.0</Created>
</FileInfo>
Le modèle graphique du Schéma VITAM ci-dessous illustre la liste (cerclage orange) des nœuds TechnicalMetadataObject.
![]() |
Illustration 4: Schéma VITAM - Technique |
Ci-dessous est présenté la vision XSD avec la
racine TechnicalMetadataPackage
contenant des informations de contrôle et de contexte. Le bloc
TechnicalPackage
donne la possibilité de stocker les informations techniques dans un
fichier XML à part, sa racine étant alors un objet du type
TechnicalMetadata.
Le bloc TechnicalMetadata
lui-même contient le bloc TechnicalMetadataObject,
qui constitue le cœur du bloc technique.
Dans le cas où les métadonnées techniques sont
dans un fichier à part, les 3 premiers champs (Date,
MessageIdentifier,
ArchiveTransferMessageIdentifier)
servent à identifier ce fichier :
- Date : sa date de création ;
- MessageIdentifier : identifiant unique de ce fichier XML ;
- ArchiveTransferMessageIdentifier : identifiant unique du fichier de transport auquel il se rapporte.
![]() |
Illustration 5: TechnicalMetadataPackage |
![]() |
Illustration 6: TechnicalMetadata |
Dans le bloc TechnicalMetadataObject,
on retrouve la description technique de l’objet transféré, à
savoir :
- Pour le numérique, son identification (son format), les informations liées à la genèse du fichier (date de création, outils et système d’exploitation utilisés pour sa création, …), et des informations techniques plus détaillées en fonction de son format (selon que c’est un fichier texte, un document, une image, une vidéo, un fichier audio, …) ;
- Pour le physique, ses dimensions physiques.
![]() |
Illustration 7: TechnicalMetadataObject |
Métadonnées de Gestion (LevelManagementMetadataContent)
Les métadonnées de gestion ont pour objet de
rassembler l'ensemble des informations utiles à la gestion dans le
temps de l'objet archivée : durée de conservation, règles
d'accès, etc. Elles concernent donc très majoritairement des
informations liées au métier des archives, et en particulier aux
informations utiles pour le système d’archivage électronique.
Ces métadonnées peuvent être communes à tous les
objets transférés ou spécifiques à chacun d'entre eux. Dès lors
que les métadonnées associées à ces objets sont représentées
sous forme de graphe, elles doivent se retrouver à chaque niveau de
celui-ci. Par ailleurs, en raison des multiples héritages, elles
peuvent être multiple pour un même objet transféré.
Exemple :
- Règle associée à la durée de conservation
<AppraisalRule>
<Rule>
<StartDate>2006-05-04</StartDate>
<RefRuleId>RefRuleId2</RefRuleId>
</Rule>
<RefFinalActionRule>Conservation</RefFinalActionRule>
</AppraisalRule>
<Rule>
<StartDate>2006-05-04</StartDate>
<RefRuleId>RefRuleId2</RefRuleId>
</Rule>
<RefFinalActionRule>Conservation</RefFinalActionRule>
</AppraisalRule>
- Règle de restriction d’accès
<AccessRestrictionRule>
<Rule>
<StartDate>2006-05-04</StartDate>
<RefRuleId>RefRuleId4</RefRuleId>
</Rule>
</AccessRestrictionRule>
<Rule>
<StartDate>2006-05-04</StartDate>
<RefRuleId>RefRuleId4</RefRuleId>
</Rule>
</AccessRestrictionRule>
![]() |
Illustration 8: Schéma VITAM - Gestion |
Le bloc LevelManagementMetadataContent
est porté par le bloc LevelDescriptiveMetadata
(voir ci-après dans le chapitre Métadonnées Descriptives (DescriptiveMetadata))
et contient donc ces informations de gestion des archives.
Le bloc LevelCreationControl
est un bloc spécifique à VITAM qui permet de spécifier un
emplacement arbre
de métadonnées préexistant dans le SAE auquel il faudra raccrocher
les archives correspondantes
via des requêtes embarquées dans l’XML pour la gestion des nœuds
du plan de classement. Il s’agira de permettre de relier un
sous-arbre à un plan de classement pré-existant (par exemple le
rajout d’un nouveau dossier à un Sous-fond existant).
![]() |
Illustration 9: LevelManagementMetadataContent |
- Différentes règles de gestion peuvent être appliquées. Globalement, les règles s’expriment toutes selon un format similaire :
- l’usage d’une date de démarrage et d’une règle qui permet de référencer une raison et une durée pendant laquelle cette règle à partir de la date précisée ;
- le moyen de gérer l’héritage de règles précédemment positionnées dans l’arbre dans des niveaux parents ;
- l’action déclenchée en fin de validité de l’ensemble des règles si une telle action existe ;
- ainsi que l’indication si une autorisation est néanmoins nécessaire même si les règles indiquées sont obsolètes ou non applicables (pour forcer le contrôle d’accès par exemple)
- On retrouve les règles suivantes (toutes optionnelles) qui suivent ce format :
- StorageRule : règles de conservation métier (au sein de l’application métier d’origine), afin de gérer les contraintes liées à la mise en œuvre de la loi Informatique et libertés (selon ce qui est parfois appelé durée d'utilité courante)
- AppraisalRule : règles de conservation en archivage intermédiaire (selon la durée d’utilité administrative) et le sort final associé
- AccessRestrictionRule : règles de restrictions d’accès (selon les règles définies par le code du patrimoine pour les archives publiques)
- DisseminationRestrictionRule : règles de restriction de diffusion, en fonction des contraintes associées à la loi Informatiques et liberté s et au au code de la propriété intellectuelle
- ReuseRestrictionRule : règles de restriction de réutilisation, en fonction des contraintes imposées par la loi CADA
- ClassificationRule : règles de confidentialité, notamment en lien avec la protection du secret de la défense nationale, avec un format spécifique pour définir la classification d’un niveau (ou d’un objet d’archives) en précisant :
- une règle applicable, le niveau de classification, la mention associée, le propriétaire de la classification,
- la date de réévaluation de cette classification et s’il y a nécessité de disposer explicitement d’une autorisation pour l’évaluation de la reclassification.
Métadonnées Descriptives (DescriptiveMetadata)
Les métadonnées
descriptives regroupent a priori les métadonnées qui ne sont pas
contenues dans les groupes précédemment définis. Elles constituent
les informations intellectuelles accompagnant les objets transférés
afin de permettre leur description, leur classement ou leur
recherche.
Ces métadonnées sont à
associer au plan de classement d’un objet transféré. En effet,
les descriptions d’un objet peuvent dépendre du plan de
classement où se trouvent celui-ci. Ces métadonnées devront donc
se retrouver dans le plan de classement et pourront donc être
multiples pour chaque objet d’archive.
Exemple :
- Titre<Title>Title0</Title>
- Signataire<Signer>
<BirthName>BirthName0</BirthName>
<GivenName>GivenName0</GivenName>
<FirstName>FirstName0</FirstName>
</Signer>
Le
schéma graphique ci-dessous illustre le package
DescriptiveMetadataPackage
qui contient un DescriptionMetadata
lui-même contenant de 1 à n (une liste) de
LevelDescriptiveMetadata.
Ce bloc LevelDescriptiveMetadata
est lui-même récursif (encerclé de rouge) et constitue le bloc
principal des métadonnées descriptives. Il contient différents
groupes et présente une définition récursive (il contient lui-même
un LevelDescriptionMetadata
– voir la présentation du modèle arborescent dans le précédent
article - ).
![]() |
Illustration 10: Schéma VITAM - Descriptif |
Les
schémas XML ci-dessous illustrent les différents blocs pour la
description et en particulier le bloc LevelDescriptiveMetadata
qui en est le cœur.
Dans le cas où les métadonnées descriptives sont
dans un fichier à part, les 3 premiers champs (Date,
MessageIdentifier,
ArchiveTransferMessageIdentifier)
servent à identifier ce fichier :
- Date : sa date de création ;
- MessageIdentifier : identifiant unique de ce fichier XML ;
- ArchiveTransferMessageIdentifier : identifiant unique du fichier de transport auquel il se rapporte.
![]() |
Illustration 11: DescriptiveMetadataPackage |
![]() |
Illustration 12: DescriptiveMetadata |
Zoom sur LevelDescriptiveMetadata
Le
schéma qui suit illustre les blocs particulièrement importants du
bloc LevelDescriptiveMetadata.
![]() |
Illustration 13: LevelDescriptiveMetadataType |
LevelDescriptiveMetadata
(1) est défini :
- soit par référence à un bloc précédemment défini dont la référence est stockée en (2), permettant le multiple héritage ou le multi-classement (voir l’article précédent sur les multiples classements),
- soit par un autre fichier en (3),
- soit enfin par le bloc d’information qui suit (commençant par le champ Id).
La
récursivité (la définition d’un arbre : à partir d’un
nœud, définir le ou les sous-nœuds) sur ce type est réalisée :
- par un niveau suivant déclaré en (7),
- par référence depuis un bloc pré-existant dans le SAE lui-même via une requête en (8).
La
récursivité est arrêtée (fin d’un plan de classement,
positionnement éventuel d’objets d’archives) :
- soit via un NullObject en (9) permettant la définition d’un plan de classement sans réel versement d’objets (il s’agit de ne verser donc que le plan de classement en avance de phase, avant que les archives ne viennent réellement remplir ce dernier),
- soit via la présence de 1 ou plusieurs DataObjectReference en (10) pouvant être :
- soit de type simple DataObjectId en (11),
- soit de type groupe DataObjectGroupId en (12). Un DataObjectGroupId constitue un ensemble de fichiers d’archives représentant le même objet intellectuel mais sous des formes différentes (versions de conservation, de diffusion, plein texte, vignette, …).
LevelManagementMetadataContent
(4) contient la partie des métadonnées de gestion qui ont été
décrites dans la partie précédente.
Les
métadonnées de description pour ce niveau (fond, sous-fond, …
pour chacun des niveaux) sont placés :
- dans le bloc LevelDescriptiveMetadataContent en (5) pour la partie en accès libre,
- et le bloc LevelRestrictedDescriptiveMetadataContent en (6) pour la partie en accès restreint.
La
notion d’accès libre et restreint dépend de l’application de
frontale de consultation.
Aucun commentaire:
Enregistrer un commentaire