Les déclarations RDF définissent des relations entre des objets (noeud d’un graphe) qui appartiennent à un univers sémantique. A chacun de ces univers sémantiques correspond un domaine nominal, identifié par un préfixe particulier. Un tel domaine, pour lesquels sont définies des propriétés spécifiques et des catégories conceptuelles, est appelé un schéma.
Tout utilisateur a la possibilité de créer un nouveau schéma, de modifier, et notamment d’enrichir et d’affiner un schéma existant, de créer ce faisant un nouveau schéma personnalisé, et d’utiliser un schéma pour décrire les propriétés d’objets ayant une existence dans ce schéma.
RDFS (pour « RDF Schema ») offre les moyens de définir un modèle (ou bien encore un schéma) de méta données qui permet de :
- donner du sens aux propriétés associées à une ressource ;
- formuler des contraintes sur les valeurs associées à une propriété afin de lui assurer aussi une signification.
Par exemple, si l’on a une propriété qui représente un auteur26, on peut exiger que les valeurs de cette propriété soient une référence à une personne (et non pas une voiture ou une maison). On peut aussi vouloir restreindre quelles sont les propriétés s’appliquant à une ressource. Cela n’a probablement aucun sens d’autoriser une propriété « date de naissance » à être appliquée à un morceau de musique.
Déclaration d’une propriété dans un schéma RDFS
Une propriété est spécifiée dans un schéma RDFS en déclarant une URI qui identifie la ressource qui représente la propriété et où le type rdf:type de la ressource est rdf:property. Nous donnons ci-dessous un exemple extrait du schéma des méta données de Dublin Core qui définit le public (“audience“) comme étant une propriété RDF mais aussi comme étant une instance de la classe element du schéma de Dublin Core.
<rdf:Property rdf:about="http://purl.org/dc/terms/audience">
<dc:type
rdf:resource="http://dublincore.org/usage/documents/principles/#element"/>
</rdf:Property>
Restriction du domaine de valeur des propriétés
Pour indiquer qu’une propriété peut prendre seulement certaines valeurs, on utilise le prédicat (la propriété) rdfs:range.
Par exemple, pour exprimer qu’un créateur ne peut avoir que des ressources de type Personne (person) pour valeur, on a l’exemple suivant.
<rdf:property rdf:about=”http://purl.org/dc/elements/1.1/creator”>
<rdfs:range rdf:resource=”http://www.schema.org/TR/rdf-schema#Person>
</rdf:property>Si l’on veut indiquer que les valeurs que peut prendre le type Personne (Person) sont uniquement des chaînes de caractères littérales, on rajoutera la ligne suivante à l’exemple précédent.
<rdfs:range rdf:resource=”http://www.w3.org/2000/01/rdf-schema#Literal">On obtiendra la déclaration suivante :
<rdf:property rdf:about=”http://purl.org/dc/elements/1.1/creator”>
<rdfs:range rdf:resource=”http://www.schema.org/TR/rdf-schema#Person>
<rdfs:range rdf:resource=”http://www.w3.org/2000/01/rdf-schema#Literal">
</rdf:property>
Restriction du domaine d’application des propriétés
La propriété rdfs:domain est utilisée pour indiquer quel type de ressource peut être associé avec le sujet (la ressource) d’une propriété particulière. Dans l’exemple suivant, on précise qu’une date de naissance ne s’applique qu’à une ressource de type personne tout en rappelant que la valeur possible d’une date de naissance est un littéral.
<rdf:property rdf:about=”http://www.schema.org/TR/rdf-schema#birthDay”>
<rdfs:domain rdf:resource=”http://www.schema.org/TR/rdf-schema#person>
<rdfs:range rdf:resource=”http://www.w3.org/2000/01/rdf-schema#Literal">
</rdf:property>
Déclaration d’une classe de ressource
Nous avons vu dans le chapitre précédent sur RDF que nous pouvons typer une ressource déclarée avec RDF en utilisant l’attribut rdf:type dans l’élément <description> et de ce fait ajouter de l’information à propos de la ressource.
Continuons avec l’exemple précédent. Pour pouvoir considérer la ressource Personne comme une classe, il faut la déclarer ainsi dans un schéma RDF avec rdfs:class :
<rdf:Description rdf:about=”http://www.schema.org/TR/rdf-schema#Person”>
<rdf:type resource=”http://www.w3.org/2000/01/rdf-schema#Class">
</rdf:Description>Cela peut aussi s’écrire de la manière suivante :
<rdfs:Class rdf:about=”http://www.schema.org/TR/rdf-schema#Person” />
On peut sous-classer des types de ressources, par exemple la classe personne en fonction d’un métier. Ainsi la classe Compositeur (de musique) et la classe Réalisateur sont des sous-classes de la classe Créateur qui elle-même peut être une sous-classe de la classe Personne. On utilisera pour cela la propriété rdfs:subClassOf.
Exemple d’utilisation du schéma RDFS issu des exemples de cette section
Nous pouvons maintenant déclarer à titre d’exemple final des méta données concernant un cas fictif approchant la réalité et reprenant le schéma de nos exemples. La date de naissance qui s’applique à John Smith, qui est une personne, est bien une valeur littérale. John Smith, une personne, est par ailleurs le créateur de la ressource dont le titre est « Utilisation des méta données dans notre organisation ».
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/metadata/dublin_core#"
xmlns:s="http://www.schema.org/TR/rdf-schema#">
<rdf:Description about="http://www.ourorg.net/metadatause.html">
<dc:title>Utilisation des méta données dans notre organisation
</dc:title>
<dc:Creator>
<rdf:Description about="http://www.ourorg.net/member/JohnSmith">
<rdf:type
rdf:resource=”http://www.schema.org/TR/rdf-schema#Person” />
<s:birthDay>1954-06-23</s:birthday>
</rdf:Description>
</dc:Creator>
</rdf:RDF>
Précisions et raffinements sur les schémas RDFS
1. D’autres éléments du schéma RDFS existent : rdfs:Label, rdfs:comment, rdfs:seeAlso, rdfs:isDefinedBy. Leur description est reprise dans le Tableau 7 en annexe 4.1.
Un exemple issu du schéma RDFS des méta données de Dublin Core reprend ces éléments.
<rdf:Property rdf:about="http://purl.org/dc/terms/educationLevel">
<rdfs:label xml:lang="en-US">Audience Education Level</rdfs:label>
<rdfs:comment xml:lang="en-US">
A general statement describing the education or training context.
Alternatively, a more specific statement of the location of the audience in
terms of its progression through an education or training context.
</rdfs:comment>
<rdfs:isDefinedBy rdf:resource="http://purl.org/dc/terms/"/>
<rdfs:subPropertyOf rdf:resource="http://purl.org/dc/terms/audience"/>
</rdf:Property>
2. De même, le schéma RDFS définit et déclare les éléments de RDF. Par exemple, l’attribut ressource est définit comme une classe.
<rdfs:class rdf:ID=”Ressource” /> 27
Mais cela outrepasse notre propos qui est de voir comment un schéma de méta données peut être créé afin de constituer un vocabulaire de méta données spécifiques de documents propres à une organisation et non pas d’étendre le modèle de schéma RDFS, comme peuvent le faire DAML ou OIL.
On trouvera en annexe 4.1 deux tableaux récapitulatifs du vocabulaire utilisé dans RDF. En annexe 4.2, on trouvera un exemple de schéma RDFS qui est une extension de schéma RDFS utilisant le schéma RDFS de Dublin Core. Enfin, l’annexe 4.3 reprendra un exemple de méta données au format RDF issu de ces schémas et s’appliquant à l’exemple de l’annexe 2.4.
On aura ainsi vu à travers cette section traitant des méta données quel peut être le champ que recouvre les méta données (méta données descriptives et d’applications) et comment les représenter (Dublin Core et RDF). Le chapitre suivant, premier chapitre sur l’architecture des systèmes de gestion de contenu, aborde le système de collecte, qui concerne l’acquisition de documents et de leurs méta données dans un système de gestion de contenu.
26 Autrement dit, si on a la propriété « auteur »
27 Cela nous donne par conséquence le type RDF rdf:type : « http://www.w3.org/TR/rdf-schema#ressource ».


