Note de traduction
Ce document est la traduction en français de la note de groupe de travail du W3C introduisant RDF 1.1 de façon à le comprendre et à l’utiliser sans entrer dans les détails techniques de la spécification. Cette traduction se fonde sur la version publiée le 24 juin 2014 et intègre des modifications suggérées dans les errata.

Cette traduction peut comporter des erreurs. La version anglaise, RDF 1.1 Primer se trouve à l’adresse http://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/. Le traducteur tient à remercier Olivier Boissier pour sa relecture de ce document. Un glossaire donne la correspondance entre les concepts exprimés en français et les concepts originaux, et vice versa. Pour tout commentaire au sujet de la traduction elle-même (et non le contenu de la note) veuillez envoyer un email à Antoine Zimmermann.

Résumé

Cette initiation est conçue pour fournir au lecteur les connaissances de base requises pour utiliser RDF. Elle introduit les concepts de base de RDF et montre des exemples concrets de l’utilisation de RDF. Les sections 3 à 5 peuvent être utilisées comme une introduction minimaliste des éléments clés de RDF. Les changements entre RDF 1.1 et RDF 1.0 (version de 2004) sont résumés dans un document à part : « Quoi de neuf dans RDF 1.1 » (What's New in RDF 1.1) [RDF11-NEW].

Statut de ce document

Cette section décrit le statut de ce document au moment de sa publication. D’autres documents peuvent remplacer ce document. Une liste des publications actuelles du W3C et la dernière mise à jour de ce rapport technique peut être trouvé dans l’index des rapports techniques du W3C à l’adresse http://www.w3.org/TR/.

Ce document fait partie de la suite de documents RDF 1.1. Il s’agit d’une note informative sur les concepts clés de RDF. Pour une spécification normative de RDF 1.1, le lecteur peut se réferrer au document « Concepts et syntaxe abstraite de RDF 1.1 » (RDF 1.1 Concepts and Abstract Syntax) [RDF11-CONCEPTS]. Ce document contient quelques corrections éditoriales de la version de février 2014.

La version anglaise de ce document a été publiée par le groupe de travail RDF en tant que note de groupe de travail. Cette version traduite n’est pas normative. Si vous souhaitez faire des commentaires au sujet de ce document, veuillez les envoyer à public-rdf-comments@w3.org (s’inscrire, archives). Tous les commentaires sont les bienvenus.

La publication comme note de groupe de travail n’implique pas l’approbation des membres du W3C. Il s’agit d’un document de travail et il peut être mis à jour, remplacé ou rendu obsolète par d’autres documents à n’importe quel moment. Il est inapproprié de citer ce document comme autre chose qu’un travail en cours.

Cette traduction n’a pas été produite par un groupe de travail du W3C. En revanche, la version originale de ce document a été produite par un groupe opérant selon la politique de brevet du W3C du 5 février 2004. Le W3C tient une liste publique des divulgations de brevets effectuées en rapport avec les produits livrables du groupe ; cette page contient également des instructions pour divulguer un brevet. Une personne ayant connaissance d’un brevet qu’il croit contenir des revendications essentielles doit divulguer ces informations conformément à la section 6 de la politique de brevet du W3C.

Sommaire

1. Introduction

Le cadre de description de ressource (Resource Description Framework ou RDF) permet d’exprimer de l’information au sujet de ressources. Les ressources peuvent être quelconques, notamment des documents, des personnes, des objets physiques ou des concepts abstraits.

RDF est prévu pour des situations dans lesquelles de l’information sur le Web doit être traitée par des applications, plutôt que d’être seulement affichée face à des personnes. RDF fournit un cadre commun pour exprimer cette information de sorte qu’elle puisse être échangée entre applications sans perdre son sens. Puisqu’il s’agit d’un cadre commun, les concepteurs d’application peuvent tirer parti de la disponibilité d’analyseurs syntaxiques RDF et d’outils de traitement. La capacité à échanger de l’information entre différentes applications signifie que l’information peut être rendue disponible à des applications autres que celles pour lesquelles elle a été initialement créée.

En particulier, RDF peut être utilisé pour publier et interconnecter des données sur le Web. Par exemple, récupérer http://www.example.org/arnaud#me pourrait fournir des données sur Arnaud, y compris le fait qu’il connait Béatrice, via son IRI (un IRI est un Identifiant de Ressource Internationalisé ou Internationalized Resource Identifier ; voir la section 3.2 pour des détails). Récupérer l’IRI de Béatrice pourrait alors fournir plus de données sur elle, y compris des liens vers d’autres jeux de données pour ses amis, ses centres d’intérêt, etc. Une personne ou un processus automatique peut alors suivre ces liens et agréger des données sur ces diverses choses. De telles utilisations de RDF sont souvent qualifiés de données liées (Linked Data) [LINKED-DATA].

Ce document n’est pas normatif et ne rend pas complètement compte de RDF 1.1. Des spécifications normatives de RDF se trouvent dans les documents suivants :

2. Pourquoi utiliser RDF ?

Ce qui suit illustre divers usages de RDF, destinés à différentes communautés de pratique.

3. Le modèle de données RDF

3.1 Les triplets

RDF nous permet de faire des déclarations sur les ressources. Le format de ces déclarations est simple. Une déclaration a toujours la structure suivante :

      <sujet> <prédicat> <objet>
    

Une déclaration RDF exprime une relation entre deux ressources. Le sujet et l’objet représentent les deux ressources en relation ; le prédicat représente la nature de leur relation. La relation est formulée de manière directionelle (depuis le sujet vers l’objet) et est appelée dans RDF une propriété. Puisque les déclarations RDF consistent en trois éléments, elles sont appelées triplets.

Voici des exemples de triplets RDF (informellement exprimés en pseudocode) :

Exemple 1 : échantillon de triplets (informels)
<Arnaud> <est une> <personne>.
<Arnaud> <est un ami de> <Béatrice>.
<Arnaud> <est né> <le 14 juillet 1990>. 
<Arnaud> <s'intéresse à> <la Joconde>.
<la Joconde> <a été créée par> <Léonard de Vinci>.
<la vidéo 'La Joconde à Washington'> <est à propos de> <la Joconde>.

La même ressource est souvent référencée dans plusieurs triplets. Dans l’exemple ci-dessus, Arnaud est le sujet de quatre triplets, et la Joconde est le sujet d’un seul et l’objet de deux triplets. Cette capacité à avoir la même ressource dans la position de sujet d’un triplet et la position d’objet d’un autre permet de trouver des connexions entre les triplets, qui est une partie importante de la puissance de RDF.

Nous pouvons visualiser les triplets comme un graphe connexe. Les graphes sont constitués de nœuds et d’arcs. Les sujets et les objets des triplets forment les nœuds du graphe ; les prédicats forment des arcs. La figure 1 montre le graphe associé aux triplets de l’exemple 1.

Graphes informels de l’échantillon de triplets
Figure 1 : graphe associé à l’échantillon de triplets

Une fois que vous avez un graphe comme celui-ci, vous pouvez utiliser SPARQL [SPARQL11-OVERVIEW] pour obtenir les personnes intéressées par des peintures de Léonard de Vinci.

Le modèle de données RDF est décrit dans cette section sous la forme d’une « syntaxe abstraite », c’est-à-dire un modèle de données indépendant d’une syntaxe concrète particulière (la syntaxe utilisée pour représenter les triplets stockés dans des fichiers texte). Différentes syntaxes concrètes peuvent produire exactement le même graphe du point de vue de la syntaxe abstraite. La sémantique des graphes RDF [RDF11-MT] est définie en termes de syntaxe abstraite. Des syntaxes RDF concrètes sont introduites plus loin dans la section 5.

Dans les trois sous-sections suivantes, nous discutons des trois types de données RDF qui apparaissent dans des triplets : les IRI, les littéraux et les nœuds vides.

3.2 Les IRI

L’abréviation IRI signifie « International Resource Identifier » (identifiant de ressources internationnalisé). Un IRI identifie une ressource. Les URL (Uniform Resource Locators ou localisateurs de ressource uniformes) que les gens utilisent comme adresses Web sont une forme d’IRI. D’autres formes d’IRI fournissent un identifiant pour une ressource sans implication sur leur localisation ni la manière d’y accéder. La notion d’IRI est une généralisation des URI (Uniform Resource Identifier ou identifiant de ressources uniforme) qui permet d’utiliser des caractères non-ASCII dans les chaînes de caractères des IRI. Les IRI sont spécifiés dans la RFC 3987 [RFC3987].

Les IRI peuvent apparaître aux trois positions d’un triplet.

Comme indiqué auparavant, les IRI sont utilisés pour identifier des ressources telles que des documents, des personnes, des objets physiques, et des concepts abstraits. Par exemple, l’IRI pour Léonard de Vinci dans DBpedia est :

L’IRI pour une vidéo de l’INA sur la Joconde intitulée « La Joconde à Washington » dans Europeana est :

Les IRI sont des identifiants globaux, donc d’autres personnes peuvent réutiliser cet IRI pour identifier la même chose. Par exemple, l’IRI suivant est utilisé par de nombreuses personnes comme propriété RDF pour indiquer une relation de connaissance entre personnes :

RDF ne précise pas ce que les IRI représentent. Cependant, on peut donner du sens aux IRI avec des vocabulaires particuliers ou des conventions. Par exemple, DBpedia utilise des IRI de la forme http://fr.dbpedia.org/resource/Nom pour dénoter la chose décrite dans l’article Wikipédia correspondant.

3.3 Littéraux

Les littéraux sont des valeurs de base qui ne sont pas des IRI. Comme exemples de littéraux, on trouve les chaines de caractères telle que « La Joconde », des dates telle que « le 14 juillet 1990 » et des nombres tel que « 3.14159 ». Les littéraux sont associés à un type de données permettant à ces valeurs d’être traitées et interprétées correctement. Les littéraux chaines de caractères peuvent éventuellement être associés à une balise de langue. Par exemple, « Léonard de Vinci » pourrait être associé à la balise de langue « fr » et « 李奥纳多·达·文西 » avec la balise « zh ».

Les littéraux ne peuvent apparaître qu’en position d’objet d’un triplet.

Le document des concepts RDF fournit une liste de types de données (non-exhaustive). Elle inclut beaucoup de types de données définis par XML Schema, tels que les chaînes de caractères, les booléens, les entiers, les décimaux et les dates.

3.4 Les nœuds vides

Les IRI et les littéraux constituent la matière première pour rédiger des déclarations en RDF. En outre, il est parfois pratique de pouvoir parler de ressources sans avoir besoin d’utiliser un identificateur global. Par exemple, nous pourrions vouloir exprimer que la peinture de la Joconde contient à l’arrière-plan un arbre non identifié que l’on sait être un cyprès. Une ressource sans identificateur global, telle que le cyprès de la peinture, peut être représenté en RDF par un nœud vide. Les nœuds vides sont comme des simples variables en algèbre : ils représentent quelque chose sans dire quelle est leur valeur.

Les nœuds vides peuvent apparaître en position de sujet et d’objet d’un triplet. Ils peuvent être utilisés pour dénoter des ressources sans les nommer explicitement avec un IRI.

Exemple de nœud vide: cyprès
Figure 2 : exemple informel de nœud vide : l’arrière plan de la Joconde dépeint une ressource anonyme qui appartient à la classe des cyprès.

3.5 Graphes multiples

RDF fournit un mécanisme pour grouper des déclarations RDF dans des graphes multiples et associer de tels graphes à un IRI. Les graphes multiples sont une extension récente du modèle de données RDF. En pratique, les concepteurs d’outils RDF et de gestionnaires de données avaient besoin d’un mécanisme pour parler d’un sous ensemble d’une collection de triplets. les graphes multiples ont été d’abord introduits dans le langage de requête SPARQL. Le modèle de données RDF a alors été étendu avec une notion de graphes multiples étroitement alignée avec SPARQL.

Des graphes multiples dans un document RDF constitutent un jeu de données RDF. Un jeu de données RDF peut avoir plusieurs graphes nommés et au moins un graphe sans nom (« par défaut »).

Par exemple, les déclarations de l’exemple 1 pourraient être groupées en deux graphes nommés. Un premier graphe pourrait être fourni par un site de réseau social et identifié par http://example.org/arnaud :

Exemple 2 : premier graphe de l’échantillon de jeu de données
<Arnaud> <est une> <personne>.
<Arnaud> <est un ami de> <Béatrice>.
<Arnaud> <est né> <le 14 juillet 1990>.
<Arnaud> <s'intéresse à> <la Joconde>.

L’IRI associé au graphe est appelé le nom du graphe.

Un second graphe pourrait être fourni par Wikidata et identifié par https://www.wikidata.org/wiki/Special:EntityData/Q12418 :

Exemple 3 : second graphe de l’échantillon de jeu de données
<Léonardo de Vinci> <est le créateur de> <la Joconde>.
<La vidéo 'La Joconde à Washington'> <est à propos de> <la Joconde>

Ci-dessous se trouve un exemple de graphe sans nom. Il contient deux triplets qui ont le nom de graphe <http://example.org/arnaud> comme sujet. Les triplets associent des informations sur l’éditeur et la licence à l’IRI de ce graphe :

Exemple 2 : graphe sans nom de l’échantillon de jeu de données
<http://example.org/arnaud> <est publié par> <http://example.org>.
<http://example.org/arnaud> <a pour licence> <http://creativecommons.org/licenses/by/3.0/>.

Dans l’exemple de jeu de données, nous supposons que les noms de graphes représentent la source des données RDF contenues dans les graphes correspondants, c’est-à-dire qu’en récupérant <http://example.org/arnaud> nous accèderions aux quatre triplets dans ce graphe.

Note

RDF ne fournit aucun moyen standard de communiquer cette hypothèse sémantique (à savoir, que les noms de graphes représentent la source des données RDF) à d’autres lecteurs du jeu de données. Ces lecteurs devront s’appuyer sur des connaissances hors bande, telles que des pratiques de communauté, pour interpréter ce jeu de données de la manière attendue. Des sémantiques possibles des jeux de données sont décrites dans une note à part [RDF11-DATASETS].

Graphe informel de l’échantillon de jeu de données
Figure 3 : graphe informel de l’échantillon de jeu de données

La figure 3 représente l’échantillon de jeu de données. La section 5.1.3 fournit un exemple de syntaxe concrète pour ce jeu de données.

4. Vocabulaires RDF

Le modèle de données RDF fournit un moyen de faire des déclarations sur des ressources. Comme nous l’avons mentionné, ce modèle de données ne fait pas d’hypothèse sur ce que les IRI des ressources signifient. En pratique, RDF est typiquement utilisé en association avec des vocabulaires ou d’autres conventions qui fournissent des informations sémantiques sur ces ressources.

Pour permettre la définition de vocabulaires, RDF propose le langage RDF Schema [RDF11-SCHEMA]. Ce langage permet de définir des caractéristiques sémantiques des données RDF. Par exemple, on peut déclarer que l’IRI http://www.example.org/amiDe peut être utilisé comme propriété et que les sujets et objets des triplets ayant http://www.example.org/amiDe comme prédicat doivent être des ressources de la classe http://www.example.org/Personne.

RDF Schema utilise la notion de classe (classe) pour spécifier les catégories qui peuvent être utilisées pour classer des ressources. La relation entre une instance et sa classe est déclarée via la propriété type. Avec RDF Schema, on peut créer des hiérarchies de classes et de sous-classes et de propriétés et sous-propriétés. Des restrictions de types sur les sujets et objets de triplets particuliers peuvent être définies via les restrictions de domaine (domain) et de portée (range). Un exemple de restriction de domaine était donné ci-dessus : les sujets des triplets "amiDe" devraient être de la classe "Personne".

Les constructeurs principaux fournis par RDF Schema sont résumés dans la table ci-dessous :

Table 1 : constructeurs de RDF Schema
Constructeur Forme syntaxique Description
Class (une classe) C rdf:type rdfs:Class C (une ressource) est une classe RDF
Property (une classe) P rdf:type rdf:Property P (une ressource) est une propriété RDF
type (une propriété) I rdf:type C I (une ressource) est une instance de C (une classe)
subClassOf (une propriété) C1 rdfs:subClassOf C2 C1 (une classe) est une sous-classe de C2 (une classe)
subPropertyOf (une propriété) P1 rdfs:subPropertyOf P2 P1 (une propriété) est une sous-propriété de P2 (une propriété)
domain (une propriété) P rdfs:domain C le domaine de P (une propriété) est C (une classe)
range (une propriété) P rdfs:range C la portée de P (une propriété) est C (une classe)
Note

La forme syntaxique (deuxième colonne) est une notation préfixée qui est décrite plus en détail dans la section 5. Le fait que les constructeurs ont deux préfixes différents (rdf: et rdfs:) est un artefact historique quelque peu agaçant, qui est conservé pour des raisons de retrocompatibilité.

Avec l’aide de RDF Schema, on peut construire un modèle de données RDF. Un exemple informel simple :

Exemplei 5 : triplets RDF Schema (informels)
<Personne> <type> <Class>
<est un ami de> <type> <Property>
<est un ami de> <domain> <Personne>
<est un ami de> <range> <Personne>
<est un bon ami de> <subPropertyOf> <est un ami de>

On notera que, tandis que <est un ami de> est une propriété typiquement utilisée comme prédicat d’un triplet (tout comme c’était le cas dans l’exemple 1), les propriétés comme celle-ci sont elles-mêmes des ressources qui peuvent être décrites par des triplets ou utilisés comme valeurs dans des descriptions d’autres ressources. Dans cet exemple, <est un ami de> est le sujet de triplets qui lui affectent des valeurs de type, de domaine et de portée, et elle est objet d’un triplet qui décrit quelque chose à propos de la propriété <est un bon ami de>.

L’un des premiers vocabulaires RDF utilisé mondialement était le vocabulaire "Friend of a Friend" (FOAF) pour décrire des réseaux sociaux. D’autres exemples de vocabulaires RDF sont :

Dublin Core
L’initiative des métadonnées Dublin Core (Dublin Core Metadata Initiative) maintient un ensemble d’éléments de métadonnées pour décrire un large éventail de ressources. Ce vocabulaire offre des propriétés telles que "creator" (créateur), "publisher" (éditeur) et "title" (titre).
schema.org
Schema.org est un vocabulaire développé par un groupe de grands fournisseurs de moteurs de recherche. L’idée est que les webmestres peuvent utiliser ces termes pour baliser des pages Web, afin que les moteurs de recherche comprennent de quoi parlent ces pages.
SKOS
SKOS est un vocabulaire pour publier des schémas de classification tels que des terminologies et des thésaurus sur le Web. SKOS est depuis 2009 une recommandation du W3C et est largement utilisé dans le monde des bibliothèques. La Bibliothèque du Congrès a publié ses vedettes-matière en tant que vocabulaire SKOS.

Les vocabulaires tirent leur valeur de la réutilisation : plus des IRI de vocabulaire sont réutilisés par d’autres, plus il devient utile d’utiliser ces IRI (le dit effet de réseau). Cela signifie que vous devriez préférer réutiliser l’IRI de quelqu’un d’autre au lieu d’en inventer un nouveau.

Pour une spécification formelle de la sémantique des constructeurs de RDF Schema, le lecteur peut se référer au document de la sémantique de RDF [RDF11-MT]. Les utilisateurs intéressés par une modélisation sémantique plus complète des données RDF pourraient envisager d’utiliser OWL [OWL2-OVERVIEW]. OWL est un vocabulaire RDF, donc il peut être utilisé conjointement avec RDF Schema.

5. Écrire des graphes RDF

Un certain nombre de formats de sérialisation existent pour écrire des graphes RDF. Cependant, différentes façons d’écrire le même graphe conduisent exactement aux mêmes triplets, et sont donc logiquement équivalents.

Dans cette section, nous introduisons brièvement, à travers des exemples annotés, les formats suivants :

  1. la famille Turtle de langages RDF (N-Triples, Turtle, TriG et N-Quads) ;
  2. JSON-LD (syntaxe RDF fondée sur JSON) ;
  3. RDFa (pour l’incorporation dans HTML et XML) ;
  4. RDF/XML (syntaxe XML pour RDF).
Note

Conseil de lecture : la section 5.1 (Turtle et autres) traite de tous les concepts de base pour sérialiser RDF. Nous vous suggérons de lire les sections sur JSON-LD, RDFa et RDF/XML uniquement si vous êtes intéressé·e par cette utilisation particulière de RDF.

5.1 La famille Turtle de langages RDF

Dans cette sous-section, nous introduisons quatre langages RDF qui sont étroitement liés. Nous commençons par N-Triples, car il fournit une syntaxe de base pour écrire des triplets RDF. La syntaxe Turtle étend cette syntaxe de base avec diverses formes de sucre syntaxique pour améliorer la lisibilité. Par la suite nous discutons TriG et N-Quads, qui sont respectivement des extensions de Turtle et N-Triples pour coder plusieurs graphes. Ensemble, ces quatre langages sont appelés la « famille Turtle de langages RDF ».

5.1.1 N-Triples

N-Triples [N-TRIPLES] fournit un moyen simple, ligne à ligne et en texte brute, de sérialiser des graphes RDF. Le graphe informel de la figure 1 peut être représenté en N-Triples de la façon suivante :

Exemple 6 : N-Triples
01    <http://example.org/arnaud#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
02    <http://example.org/arnaud#me> <http://xmlns.com/foaf/0.1/knows> <http://example.org/béatrice#me> .
03    <http://example.org/arnaud#me> <http://schema.org/birthDate> "1990-07-14"^^<http://www.w3.org/2001/XMLSchema#date> .
04    <http://example.org/arnaud#me> <http://xmlns.com/foaf/0.1/topic_interest> <http://www.wikidata.org/entity/Q12418> .
05    <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/title> "La Joconde" .
06    <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/creator> <http://fr.dbpedia.org/resource/Léonard_de_Vinci> .
07    <http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619> <http://purl.org/dc/terms/subject> <http://www.wikidata.org/entity/Q12418> .

Chaque ligne représente un triplet. Les IRI complets sont entourés de chevrons (<>). Le point à la fin de la ligne signale la fin du triplet. À la ligne 3 nous voyons un exemple de littéral, en l’occurrence une date. Le type de données est accolé au littéral à la suite du délimiteur ^^. La représentation de la date suit les conventions du type de données date de XML Schema.

Puisque les littéraux de chaîne de caractères sont si omniprésents, N-Triples permet à l’utilisateur d’omettre le type de données lors de l’écriture d’un littéral de type chaîne. Ainsi, "La Joconde" à ligne 5 est équivalent à "La Joconde"^^xsd:string. Dans le cas de chaînes de caractères avec une balise de langue, la balise apparaît directement après la chaîne, séparée par le symbole @, p.ex. "La Gioconda"@it (le nom italien de la Joconde).

Note

Pour des raisons techniques, le type de données des chaînes à balise de langue n’est pas xsd:string mais rdf:langString. Le type de données des chaînes à balise de langue n’est jamais spécifié explicitement.

La figure ci-dessous montre les triplets résultant de l’exemple :

Graphe de l’échantillon de triplets
Figure 4 : graphe RDF résultant de l’exemple en N-Triples

Notez que les sept lignes de l’exemple en N-Triples correspondent aux sept arcs du diagramme ci-dessus.

N-Triples est souvent utilisé pour échanger de grandes quantités de données RDF et pour traiter de grands graphes RDF avec des outils de traitement de texte ligne-à-ligne.

5.1.2 Turtle

Turtle [TURTLE] est une extension de N-Triples. En plus de la syntaxe de base N-Triples, Turtle introduit un certain nombre de raccourcis syntaxiques, tels que la prise en charge des préfixes d’espace de noms, des listes et des raccourcis pour les littéraux typés. Turtle offre un compromis entre la facilité d’écriture, la facilité d’analyse et la lisibilité. Le graphe représenté dans la figure 4 peut être écrit en Turtle comme suit :

Exemple 7 : Turtle
01    BASE   <http://example.org/>
02    PREFIX foaf: <http://xmlns.com/foaf/0.1/>
03    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
04    PREFIX schema: <http://schema.org/>
05    PREFIX dcterms: <http://purl.org/dc/terms/>
06    PREFIX wd: <http://www.wikidata.org/entity/>
07 
08    <arnaud#me>
09        a foaf:Person ;
10        foaf:knows <béatrice#me> ;
11        schema:birthDate "1990-07-14"^^xsd:date ;
12        foaf:topic_interest wd:Q12418 .
13   
14    wd:Q12418
15        dcterms:title "La Joconde" ;
16        dcterms:creator <http://fr.dbpedia.org/resource/Léonard_de_Vinci> .
17  
18    <http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619>
19        dcterms:subject wd:Q12418 .

Cet exemple en Turtle est logiquement équivalent à celui en N-Triples. Les lignes 1 à 6 contiennent un certain nombre de directives qui permettent des raccourcis pour l’écriture des IRI. Les IRI relatifs (tel que arnaud#me à la ligne 8) sont résolus par rapport à un IRI de base précisé à la ligne 1. Les lignes 2 à 6 définissent les préfixes d’IRI (tel que foaf:), qui peuvent être utilisés pour les noms préfixés (tel que foaf:Person) à la place de l’IRI complet. L’IRI correspondant est construit en remplaçant le préfixe par sa valeur associée dans la directive PREFIX (dans cet exemple foaf:Person signifie <http://xmlns.com/foaf/0.1/Person>).

Les lignes 8 à 12 montrent comment Turtle permet de raccourcir un ensembe de triplets ayant le même sujet. Les lignes 9 à 12 ne spécifient que la partie prédicat-objet de triplets qui ont <http://example.org/arnaud#me> comme sujet. Les points-virgules à la fin des lignes 9 à 11 indiquent que les paires prédicat-objet qui les suivent font partie de nouveaux triplets qui réutilisent le sujet les plus récemment introduit dans les données — dans ce cas arnaud#me.

La ligne 9 montre un exemple d’un type particulier de sucre syntaxique. Le triplet devrait être interprété informellement comme « Arnaud est une personne » (en anglais Arnaud (is) a Person). Le prédicat a est un raccourci pour la propriété rdf:type qui modélise la relation d’instance (voir la table 1). Le mot-clé a est destiné à correspondre à l’intuition humaine au sujet de rdf:type (en anglais).

Représentation des nœuds vides

Ci-dessous, nous voyons deux variantes syntaxiques pour écrire des nœuds vides, en utilisant l’exemple précédent du cyprès.

Exemple 8 : nœuds vides
PREFIX lio: <http://purl.org/net/lio#> 

<http://fr.dbpedia.org/resource/La_Joconde> lio:shows _:x .
_:x a <http://fr.dbpedia.org/resource/Cyprès> .

Le terme _:x est un nœud vide. Il représente une ressource sans nom dépeinte dans la peinture de la Joconde ; la ressource anonyme est une instance de la classe Cyprès. L’exemple ci-dessus fournit une syntaxe concrète pour le graphe informel de la figure 2.

Turtle a une notation alternative pour les nœuds vides, qui ne nécessite pas l’utilisation d’une syntaxe comme _:x :

Exemple 9 : nœuds vides (notation alternative)
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

# Une ressource (nœud vide) s’intéresse à une autre ressource
# intitulée "La Joconde" et créée par Léonard de Vinci.

[] foaf:topic_interest [
          dcterms:title "La Joconde" ;
          dcterms:creator <http://fr.dbpedia.org/resource/Léonard_de_Vinci> ] .

Les crochets représentent ici un nœud vide. Les paires prédicat-objet à l’intérieur des crochets sont interprétées comme des triplets ayant le nœud vide comme sujet. Les lignes commençant par '#' représentent des commentaires.

Pour plus de détails sur la syntaxe de Turtle, veuillez consulter la spécification Turtle [TURTLE].

5.1.3 TriG

La syntaxe de Turtle ne supporte que la spécification de graphes uniques sans moyen de les « nommer ». TriG [TRIG] est une extension de Turtle permettant la spécification de multiples graphes sous la forme d’un jeu de données RDF.

Note

Dans RDF 1.1, tout document Turtle légal est un document TriG légal. On pourrait le voir comme un seul et même langage. Les noms Turtle et TriG subsistent pour des raisons historiques.

La version multi-graphes de notre exemple peut être spécifiée en TriG comme suit :

Example 10 : TriG
01    BASE   <http://example.org/> 
02    PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
03    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
04    PREFIX schema: <http://schema.org/> 
05    PREFIX dcterms: <http://purl.org/dc/terms/> 
06    PREFIX wd: <http://www.wikidata.org/entity/> 
07    
08    GRAPH <http://example.org/arnaud>
09      {
10        <arnaud#me>
11            a foaf:Person ;
12            foaf:knows <béatrice#me> ;
13            schema:birthDate "1990-07-14"^^xsd:date ;
14            foaf:topic_interest wd:Q12418 .
15      }
16  
17    GRAPH <https://www.wikidata.org/wiki/Special:EntityData/Q12418>
18      {
19        wd:Q12418
20            dcterms:title "La Joconde" ;
21            dcterms:creator <http://fr.dbpedia.org/resource/Léonard_de_Vinci> .
22    
23        <http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619>
24           dcterms:subject wd:Q12418 .
25      }
26  
27    <http://example.org/arnaud>
28        dcterms:publisher <http://example.org> ;
29        dcterms:rights <http://creativecommons.org/licenses/by/3.0/> .

Ce jeu de données RDF contient deux graphes nommés. Les lignes 8 et 17 listent les noms de ces deux graphes. Les triplets dans le graphe nommé sont placés entre des accolades (lignes 9 & 15, 18 & 25). En option, on peut précéder le nom du graphe du mot-clé GRAPH. Ceci peut améliorer la lisibilité, mais on l’introduit avant tout pour s’aligner avec SPARQL Update [SPARQL11-UPDATE].

La syntaxe des triplets et des directives du début se conforme à celle de Turtle.

Les deux triplets spécifiés aux lignes 27 à 29 ne font partie d’aucun graphe nommé. Ensemble, ils forment le graphe sans nom (« par défaut ») de ce jeu de données RDF.

La figure ci-dessous montre les triplets résultant de cet exemple.

Les triplets résultant de l’exemple en TriG
Figure 5 : les triplets résultant de l’exemple en TriG

5.1.4 N-Quads

N-Quads [N-QUADS] est une simple extension de N-Triples pour permettre l’échange des jeux de données RDF. N-Quads permet d’ajouter un quatrième élément à une ligne, indiquant l’IRI du graphe du triplet décrit sur cette ligne. Voici la version N-Quads de l’exemple TriG ci-dessous :

Exemple 11 : N-Quads
01    <http://example.org/arnaud#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://example.org/arnaud> .
02    <http://example.org/arnaud#me> <http://xmlns.com/foaf/0.1/knows> <http://example.org/béatrice#me> <http://example.org/arnaud> .
03    <http://example.org/arnaud#me> <http://schema.org/birthDate> "1990-07-14"^^<http://www.w3.org/2001/XMLSchema#date> <http://example.org/arnaud> .
04    <http://example.org/arnaud#me> <http://xmlns.com/foaf/0.1/topic_interest> <http://www.wikidata.org/entity/Q12418> <http://example.org/arnaud> .
05    <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/title> "La Joconde" <https://www.wikidata.org/wiki/Special:EntityData/Q12418> .
06    <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/creator> <http://fr.dbpedia.org/resource/Léonard_de_Vinci> <https://www.wikidata.org/wiki/Special:EntityData/Q12418> .
07    <http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619> <http://purl.org/dc/terms/subject> <http://www.wikidata.org/entity/Q12418> <https://www.wikidata.org/wiki/Special:EntityData/Q12418> .
08    <http://example.org/arnaud> <http://purl.org/dc/terms/publisher> <http://example.org> .
09    <http://example.org/arnaud> <http://purl.org/dc/terms/rights> <http://creativecommons.org/licenses/by/3.0/> .

Les neufs lignes dans l’exemple N-Quads correspondent aux neufs arcs de la figure 5. Les lignes 1 à 7 représentent des quadruplets, où le dernier élément est l’IRI du graphe. La partie du quadruplet avant l’IRI de graphe spécifie le sujet, le prédicat et l’objet de la déclaration, suivant les conventions syntaxiques de N-Triples. Les lignes 8 et 9 représentent les déclarations dans le graphe sans nom (par défaut), auxquelles il manque un quatrième élément et constitue ainsi des triplets habituels.

Comme N-Triples, N-Quads est généralement utilisé pour échanger de grands ensembles de données RDF et pour traiter RDF avec des outils de traitement de texte ligne à ligne.

5.2 JSON-LD

JSON-LD [JSON-LD] fournit une syntaxe JSON pour les graphes et les jeux de données RDF. JSON-LD peut être utilisé pour transformer des documents JSON en RDF avec un minimum de modifications. JSON-LD propose des identificateurs universels pour les objets JSON, un mécanisme par lequel un document JSON peut faire référence à un objet décrit dans un autre document JSON ailleurs sur le Web, ainsi que des types de données et la gestion de la langue. JSON-LD fournit également un moyen de sérialiser les jeux de données RDF à l’aide du mot-clé @graph.

L’exemple JSON-LD suivant code le graphe de la figure 4 :

Example 12 : JSON-LD
01    {
02      "@context": "contexte-exemple.json",
03      "@id": "http://example.org/arnaud#me",
04      "@type": "Personne",
05      "date_de_naissance": "1990-07-14",
06      "connait": "http://example.org/béatrice#me",
07      "centre_d_intérêt": {
08        "@id": "http://www.wikidata.org/entity/Q12418",
09        "titre": "La Joconde",
10        "sujet_de": "http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619",
11        "créateur": "http://fr.dbpedia.org/resource/Léonard_de_Vinci"
12      }
13    }

La clé @context sur la ligne 2 pointe vers un document JSON décrivant comment le document peut être associé à un graphe RDF (voir ci-dessous). Chaque objet JSON correspond à une ressource RDF. Dans cet exemple, la ressource principale décrite est http://example.org/arnaud#me, comme indiqué à la ligne 3, grâce à l’utilisation du mot-clé @id. Lorsque @id est utilisé comme une clé dans un document JSON-LD, il pointe sur un IRI identifiant la ressource correspondant à l’objet JSON en cours. Le type de cette ressource est décrit à la ligne 4, sa date de naissance à la ligne 5 et l’un de ses amis à la ligne 6. De la ligne 7 à 12, on décrit l’un de ses centres d’intérêt, le tableau de la Joconde.

Pour décrire cette peinture, on crée un nouvel objet JSON sur la ligne 7 et on l’associe à l’IRI de la Joconde sur Wikidata à la ligne 8. On décrit diverses propproiétés de cette peinture de la ligne 9 à 11.

Le contexte JSON-LD utilisé dans cet exemple est donné ci-dessous.

Exemple 13 : spécification du contexte JSON-LD
01    {
02      "@context": {
03        "foaf": "http://xmlns.com/foaf/0.1/", 
04        "Personne": "foaf:Person",
05        "centre_d_intérêt": "foaf:topic_interest",
06        "connait": {
07          "@id": "foaf:knows",
08          "@type": "@id"
09        },
10        "date_de_naissance": {
11          "@id": "http://schema.org/birthDate",
12          "@type": "http://www.w3.org/2001/XMLSchema#date"
13        },
14        "dcterms": "http://purl.org/dc/terms/",
15        "titre": "dcterms:title",
16        "créateur": {
17          "@id": "dcterms:creator",
18          "@type": "@id"
19        },
20        "sujet_de": {
21          "@reverse": "dcterms:subject",
22          "@type": "@id"
23        }
24      }
25    }

Ce contexte décrit comment un document JSON-LD peut être associé à un graphe RDF. Les lignes 4 à 9 spécifient comment associer Personne, centre_d_intérêt et connait aux types et propriétés dans le nom de domaine de FOAF défini à la ligne 3. On spécifie également à la ligne 8 que la clé connait à une valeur qui doit être interprétée comme un IRI, en utilisant les mots-clés @type et @id.

De la ligne 10 à la ligne 12, on associe date_de_naissance à l’IRI d’une propriété de schema.org et l’on spécifie que sa valeur peut être associée au type de données xsd:date.

De la ligne 14 à la ligne 23, on décrit comment associer titre, créateur et sujet_de à des IRI de propriétés de Dublin Core. Le mot-clé @reverse à la ligne 21 est utilisé pour spécifier que dès que l’on rencontre "sujet_de": "x" dans un document JSON-LD utilisant ce contexte, il faudrait l’associer à un triplet RDF dont le sujet est l’IRI x, dont la propriété est dcterms:subject et dont l’objet est la ressource correspondant à l’objet JSON parent.

5.3 RDFa

RDFa [RDFA-PRIMER] est une syntaxe RDF qui peut être utilisée pour intégrer des données RDF dans des documents HTML et XML. Ceci permet, par exemple, aux moteurs de recherche d’agréger ces données lorsqu’ils indexent les pages Web de les utiliser pour enrichir des résultats de recherche (voir, p.ex., schema.org et cet outil de test des données structurées).

L’exemple HTML ci-dessous encode le graphe RDF représenté dans la figure 4 :

Exemple 14 : RDFa
01  <body prefix="foaf: http://xmlns.com/foaf/0.1/
02                   schema: http://schema.org/
03                   dcterms: http://purl.org/dc/terms/">
04    <div resource="http://example.org/arnaud#me" typeof="foaf:Person">
05      <p>
06        Arnaud connait <a property="foaf:knows" href="http://example.org/béatrice#me">Béatrice</a>
07        et il est né le <time property="schema:birthDate" datatype="xsd:date">1990-07-14</time>.
08      </p>
09      <p>
10        Arnaud s'intéresse à <span property="foaf:topic_interest"
11        resource="http://www.wikidata.org/entity/Q12418">la Joconde</span>.
12      </p>
13    </div>
14    <div resource="http://www.wikidata.org/entity/Q12418">
15      <p>
16        La <span property="dcterms:title">Joconde</span> a été peinte par
17        <a property="dcterms:creator" href="http://fr.dbpedia.org/resource/Léonard_de_Vinci">Léonard de Vinci</a>
18        et elle est le sujet de la vidéo
19        <a href="http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619">'La Joconde à Washington'</a>.
20      </p>
21    </div>
22    <div resource="http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619">
23        <link property="dcterms:subject" href="http://www.wikidata.org/entity/Q12418"/>
24    </div>
25  </body>

L’exemple ci-dessus contient quatre attributs spécifiques de RDFa pour permettre la spécification de triplets RDF au sein du code HTML : resource, property, typeof et prefix.

L’attribut prefix à la ligne 1 spécifie des raccourcis d’IRI de manière similaire aux préfixes Turtle. Strictement parlant, ces préfixes particuliers pourraient avoir été omis, car RDFa a une liste de préfixes prédéfinis qui inclut ceux utilisés dans cet exemple.

Les éléments div des lignes 4 et 14 ont un attribut resource spécifiant l’IRI au sujet duquel des déclarations RDF peuvent être faites dans cet élément HTML. La signification de l’attribut typeof à la ligne 4 ressemble au raccourci a en Turtle : le sujet http://example.org/arnaud#me est une instance (rdf:type) de la classe foaf:Person.

À la ligne 6, nous voyons l’attribut property ; la valeur de cet attribut (foaf:knows) est interprétée comme l’IRI d’une propriété RDF ; la valeur de l’attribut href (http://example.org/béatrice#me) est interprétée ici comme l’objet du triplet. Ainsi, la déclaration RDF qui résulte de la ligne 6 est :

<http://example.org/arnaud#me> <http://xmlns.com/foaf/0.1/knows> <http://example.org/béatrice#me> .

Dans la ligne 7, nous voyons un triple avec comme objet une valeur littérale. L’attribut property est spécifié ici sur l’élément HTML time. HTML requiert que le contenu de l’élément time soit une valeur temporelle valide. En utilisant la sémantique de l’élément HTML time, RDFa peut interpréter la valeur comme une xsd:date sans une déclaration explicite de type de données.

Dans les lignes 10-11, nous voyons que l’attribut resource est également utilisé pour spécifier l’objet d’un triplet. Cette approche est utilisée lorsque l’objet est un IRI et que l’IRI lui-même ne fait pas partie du contenu HTML (tel qu’un attribut href). La ligne 16 contient un second exemple de littéral ("la Joconde"), défini ici comme le contenu de l’attribut span. Si RDFa ne peut pas déduire le type de données du littéral, il supposera que le type de données est xsd:string.

Il n’est pas toujours possible de définir des déclarations RDF au sein du contenu HTML du document. Dans ce cas, il est possible d’utiliser des constructions HTML qui ne rendent pas le contenu pour spécifier un triplet. Un exemple peut être trouvé sur les lignes 22-23. L’élément link sur la ligne 23 est utilisé ici pour spécifier le sujet de la vidéo Europeana (ligne 22).

L’utilisation de RDFa dans cet exemple est limitée à RDFa Lite [RDFA-LITE]. Pour plus d’informations sur RDFa, veuillez consulter le document RDFa Primer [RDFA-PRIMER].

5.4 RDF/XML

RDF/XML [RDF-SYNTAX-GRAMMAR] fournit une syntaxe XML pour les graphes RDF. Lorsque RDF a été développé à la fin des années 1990, c’était sa seule syntaxe, et certaines personnes appellent encore cette syntaxe « RDF ». En 2001, un précurseur de Turtle appelé « N3 » a été proposé, et progressivement les autres langages listés ici ont été adoptés et standardisés.

L’exemple RDF/XML ci-dessous code le graphe RDF représenté sur la figure 4 :

Exemple 15 : RDF/XML
01    <?xml version="1.0" encoding="utf-8"?>
02    <rdf:RDF
03             xmlns:dcterms="http://purl.org/dc/terms/"
04             xmlns:foaf="http://xmlns.com/foaf/0.1/"
05             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
06             xmlns:schema="http://schema.org/">
07       <rdf:Description rdf:about="http://example.org/arnaud#me">
08          <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
09          <schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-07-14</schema:birthDate>
10          <foaf:knows rdf:resource="http://example.org/béatrice#me"/>
11          <foaf:topic_interest rdf:resource="http://www.wikidata.org/entity/Q12418"/>
12       </rdf:Description>
13       <rdf:Description rdf:about="http://www.wikidata.org/entity/Q12418">
14          <dcterms:title>la Joconde</dcterms:title>
15          <dcterms:creator rdf:resource="http://fr.dbpedia.org/resource/Léonard_de_Vinci"/>
16       </rdf:Description>
17       <rdf:Description rdf:about="http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619">
18          <dcterms:subject rdf:resource="http://www.wikidata.org/entity/Q12418"/>
19       </rdf:Description>
20    </rdf:RDF>

En RDF/XML, les triplets RDF sont spécifiés dans un élément XML rdf:RDF (lignes 2 et 20). Les attributs de la balise initiale rdf:RDF (lignes 3-6) offrent un raccourci pour écrire les noms des éléments et attributs XML. L’élément XML rdf:Description (abréviation de http://www.w3.org/1999/02/22-rdf-syntax-ns#Description) est utilisé pour définir des ensembles de triplets qui ont pour sujet l’IRI spécifié dans l’attribut about. Le premier bloc de description (lignes 7-12) comporte quatre sous-éléments. Le nom du sous-élément est un IRI représentant une propriété RDF, par exemple, rdf:type (ligne 8). Ici, chaque sous-élément représente un triplet. Dans les cas où l’objet du triplet est également un IRI, le sous-élément de propriété n’a pas de contenu et l’IRI de l’objet est spécifié en utilisant l’attribut rdf:resource (lignes 8, 10-11, 15 et 18). Par exemple, la ligne 10 correspond au triplet :

<http://example.org/arnaud#me> <http://xmlns.com/foaf/0.1/knows> <http://example.org/béatrice#me> .

Lorsque l’objet du triplet est un littéral, la valeur littérale est entrée en tant que contenu de l’élément de propriété (lignes 9 et 14). Le type de données est spécifié en tant qu’attribut de l’élément de propriété (ligne 9). Si le type de données est omis (ligne 14) et qu’aucune balise de langue n’est présente, le littéral est considéré comme ayant le type de données xsd:string.

L’exemple montre une base de référence pour la syntaxe ; veuillez consulter le document RDF/XML [RDF11-XML] pour un traitement plus approfondi de la syntaxe. Il peut sembler étrange que les valeurs d’attribut contiennent des IRI complets, bien que pour certains d’entre eux des préfixes d’espace de noms aient été définis. En effet, ces préfixes ne peuvent être utilisés que pour les noms d’éléments et d’attributs XML.

6. Sémantique des graphes RDF

Un objectif primordial dans l’utilisation de RDF est de pouvoir fusionner automatiquement des informations utiles provenant de sources multiples pour former une collection plus importante, encore cohérente et utile. Comme point de départ pour cette fusion, toutes les informations sont véhiculées dans le même style simple, les triplets sujet-prédicat-objet, comme décrit ci-dessus. Pour garder l’information cohérente, cependant, nous avons besoin de plus qu’une simple syntaxe standard ; nous avons également besoin d’un accord sur la sémantique de ces triplets.

À ce stade de l’initiation, le lecteur est susceptible d’avoir une compréhension intuitive de la sémantique de RDF :

  1. Les IRI utilisés pour nommer le sujet, le prédicat et l’objet ont une portée « globale », en nommant la même chose chaque fois qu’ils sont utilisés.
  2. Chaque triplet est « vrai » exactement quand la relation de prédicat existe réellement entre le sujet et l’objet.
  3. Un graphe RDF est « vrai » exactement quand tous les triplets sont « vrais ».

Ces notions, et d’autres, sont spécifiées avec une précision mathématique dans le document sur la sémantique de RDF [RDF11-MT].

L’un des avantages de RDF ayant cette sémantique déclarative est que les systèmes peuvent faire des inférences logiques. C’est-à-dire, étant donné un certain nombre de triplets d’entrée qu’ils acceptent comme étant vrais, les systèmes peuvent dans certaines circonstances déduire que d’autres triplets doivent, logiquement, être également vrais. Nous disons que le premier ensemble de triplets « entraîne » les triplets supplémentaires. Ces systèmes, appelés « raisonneurs », peuvent aussi parfois déduire que les triplets donnés en entrée se contredisent.

Étant donné la flexibilité de RDF, où de nouveaux vocabulaires peuvent être créés lorsqu’on veut utiliser de nouveaux concepts, il y a plusieurs types de raisonnement que l’on peut vouloir faire. Lorsqu’un type particulier de raisonnement semble utile dans de nombreuses applications différentes, il peut être documenté comme un régime d’implication. Plusieurs régimes d’implication sont spécifiés dans la sémantique de RDF. Pour une description technique de certains autres régimes d’implication et comment les utiliser avec SPARQL, voir [SPARQL11-ENTAILMENT]. Notez que certains régimes d’implication sont assez faciles à mettre en œuvre et que le raisonnement peut être fait rapidement, alors que d’autres nécessitent des techniques sophistiquées pour être exécutés efficacement.

À titre d’exemple, considérons les deux énoncés suivants :

    ex:arnaud foaf:knows ex:béatrice .
    foaf:knows rdfs:domain foaf:Person .
    

Le document sur la sémantique de RDF nous dit que de ce graphe, il est permis de déduire le triplet suivant :

    ex:arnaud rdf:type foaf:Person .
   

La déduction ci-dessus est un exemple d’inférence de RDF Schema [RDF11-MT].

La sémantique de RDF nous dit aussi que le triplet :

   ex:arnaud ex:age "forty"^^xsd:integer . 
   

conduit à une incohérence logique, parce que le littéral ne respecte pas les contraintes définies pour le type de données integer de XML Schema.

Notez que les outils RDF peuvent ne pas reconnaître tous les types de données. Au minimum, les outils doivent prendre en charge les types de données pour les chaînes de caractères et les chaînes à balise de langue.

Contrairement à de nombreux autres langages de modélisation de données, RDF Schema permet une liberté de modélisation considérable. Par exemple, la même entité peut être utilisée à la fois comme une classe et comme une propriété. De plus, il n’y a pas de séparation stricte entre le monde des « classes » et celui des « instances ». Par conséquent, la sémantique RDF considère le graphique suivant comme valide :

   ex:Jumbo rdf:type ex:Éléphant .
   ex:Éléphant rdf:type ex:Espèce .
   

Ainsi, un éléphant peut être à la fois une classe (avec Jumbo comme exemple d’instance) et une instance (à savoir, de la classe des espèces animales).

Les exemples de cette section sont destinés à donner au lecteur une idée de ce que la sémantique de RDF vous apporte. Veuillez consulter [RDF11-MT] pour une description complète.

7. Données RDF

RDF vous permet de combiner des triplets de n’importe quelle source dans un graphe et de le traiter comme du RDF valide. Une grande quantité de données RDF est disponible en tant que données liées [LINKED-DATA]. Des jeux de données sont en cours de publication et d’interconnexion sur le Web à l’aide de RDF, et beaucoup d’entre eux offrent une fonction d’interrogation via SPARQL [SPARQL11-OVERVIEW]. Des exemples de tels jeux de données utilisés dans les exemples ci-dessus comprennent :

Une liste de jeux de données disponibles sous forme de données liées est maintenue par datahub.io.

Un certain nombre de termes de vocabulaire sont devenus populaires pour enregistrer des liens entre des sources de données RDF. Un exemple est la propriété sameAs fournie par le vocabulaire OWL. Cette propriété peut être utilisée pour indiquer que deux IRI pointent en fait vers la même ressource. Ceci est utile car différents éditeurs peuvent utiliser des identifiants différents pour désigner la même chose. Par exemple, VIAF (voir ci-dessus) a aussi un IRI dénotant Léonard de Vinci. Avec l’aide de owl:sameAs nous pouvons enregistrer cette information :

Exemple 16 : liens entre jeux de données
<http://fr.dbpedia.org/resource/Léonard_de_Vinci>
    owl:sameAs <http://viaf.org/viaf/24604287/> .

De tels liens peuvent être déployés par un logiciel de traitement de données RDF, par exemple en fusionnant ou en comparant des données RDF obtenues via des IRI qui pointent vers la même ressource.

8. Informations supplémentaires

Ceci conclut notre brève introduction à RDF. Veuillez consulter les références pour obtenir des informations plus détaillées. Vous pouvez également jeter un œil à la page du W3C sur les données liées.

A. Remerciements

Antoine Isaac a fourni de nombreux exemples, y compris les différentes formes syntaxiques. Pierre-Antoine Champin a fourni l’un des exemples JSON-LD. Andrew Wood a conçu les diagrammes. Sandro Hawke a écrit la première partie de la section sur la sémantique RDF.

Nous sommes reconnaissants pour les commentaires fournis par (dans l’ordre alphabétique) Gareth Adams, Thomas Baker, Dan Brickley, Pierre-Antoine Champin, Bob DuCharme, Sandro Hawke, Patrick Hayes, Ivan Herman, Kingsley Idehen, Antoine Isaac, Markus Lanthaler et David Wood.

L’introduction de ce document contient un certain nombre de phrases du RDF Primer de 2004 [RDF-PRIMER]. Pour le reste, l’initiation à RDF 1.1 est un document complètement nouveau.

B. Changements depuis la publication précédente

C. Références

C.1 Références informatives

[JSON-LD]
Manu Sporny, Gregg Kellogg, Markus Lanthaler, Editors. JSON-LD 1.0. 16 January 2014. W3C Recommendation. URL : http://www.w3.org/TR/json-ld/
[LINKED-DATA]
Tim Berners-Lee. Linked Data. Personal View, imperfect but published. URL : http://www.w3.org/DesignIssues/LinkedData.html
[N-QUADS]
Gavin Carothers. RDF 1.1 N-Quads. W3C Recommendation, 25 February 2014. URL : http://www.w3.org/TR/2014/REC-n-quads-20140225/. La version la plus récente est disponible à l’adresse http://www.w3.org/TR/n-quads/
[N-TRIPLES]
Gavin Carothers, Andy Seabourne. RDF 1.1 N-Triples. W3C Recommendation, 25 February 2014. URL : http://www.w3.org/TR/2014/REC-n-triples-20140225/. La version la plus récente est disponible à l’adresse http://www.w3.org/TR/n-triples/
[OWL2-OVERVIEW]
W3C OWL Working Group. OWL 2 Web Ontology Language Document Overview (Second Edition). 11 December 2012. W3C Recommendation. URL : http://www.w3.org/TR/owl2-overview/
[RDF-PRIMER]
Frank Manola; Eric Miller. RDF Primer. 10 February 2004. W3C Recommendation. URL : http://www.w3.org/TR/rdf-primer/
[RDF-SYNTAX-GRAMMAR]
Fabien Gandon; Guus Schreiber. RDF 1.1 XML Syntax. 25 February 2014. W3C Recommendation. URL : http://www.w3.org/TR/rdf-syntax-grammar/
[RDF11-CONCEPTS]
Richard Cyganiak, David Wood, Markus Lanthaler. RDF 1.1 Concepts and Abstract Syntax. W3C Recommendation, 25 February 2014. URL : http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/. La version la plus récente est disponible à l’adresse http://www.w3.org/TR/rdf11-concepts/
[RDF11-DATASETS]
Antoine Zimmermann. RDF 1.1: On Semantics of RDF Datasets. W3C Working Group Note, 25 February 2014. La version la plus récente est disponible à l’adresse http://www.w3.org/TR/rdf11-datasets/.
[RDF11-MT]
Patrick J. Hayes, Peter F. Patel-Schneider. RDF 1.1 Semantics. W3C Recommendation, 25 February 2014. URL : http://www.w3.org/TR/2014/REC-rdf11-mt-20140225/. La version la plus récente est disponible à l’adresse http://www.w3.org/TR/rdf11-mt/
[RDF11-NEW]
David Wood. What's New in RDF 1.1. W3C Working Group Note, 25 February 2014. La version la plus récente est disponible à l’adresse http://www.w3.org/TR/rdf11-new/.
[RDF11-SCHEMA]
Dan Brickley, R. V. Guha. RDF Schema 1.1. W3C Recommendation, 25 February 2014. URL : http://www.w3.org/TR/2014/REC-rdf-schema-20140225/. La version la plus récente est disponible à l’adresse http://www.w3.org/TR/rdf-schema/.
[RDF11-XML]
Fabien Gandon, Guus Schreiber. RDF 1.1 XML Syntax. W3C Recommendation, 25 February 2014. URL : http://www.w3.org/TR/2014/REC-rdf-syntax-grammar-20140225/. La version la plus récente est disponible à l’adresse http://www.w3.org/TR/rdf-syntax-grammar/.
[RDFA-LITE]
Manu Sporny. RDFa Lite 1.1. 7 June 2012. W3C Recommendation. URL : http://www.w3.org/TR/rdfa-lite/
[RDFA-PRIMER]
Ivan Herman; Ben Adida; Manu Sporny; Mark Birbeck. RDFa 1.1 Primer - Second Edition. 22 August 2013. W3C Note. URL : http://www.w3.org/TR/rdfa-primer/
[RFC3987]
M. Dürst; M. Suignard. Internationalized Resource Identifiers (IRIs). January 2005. RFC. URL : http://www.ietf.org/rfc/rfc3987.txt
[SPARQL11-ENTAILMENT]
Birte Glimm; Chimezie Ogbuji. SPARQL 1.1 Entailment Regimes. 21 March 2013. W3C Recommendation. URL : http://www.w3.org/TR/sparql11-entailment/
[SPARQL11-OVERVIEW]
The W3C SPARQL Working Group. SPARQL 1.1 Overview. 21 March 2013. W3C Recommendation. URL : http://www.w3.org/TR/sparql11-overview/
[SPARQL11-UPDATE]
Paul Gearon; Alexandre Passant; Axel Polleres. SPARQL 1.1 Update. 21 March 2013. W3C Recommendation. URL : http://www.w3.org/TR/sparql11-update/
[TRIG]
Gavin Carothers, Andy Seaborne. TriG: RDF Dataset Language. W3C Recommendation, 25 February 2014. URL : http://www.w3.org/TR/2014/REC-trig-20140225/. La version la plus récente est disponible à l’adresse http://www.w3.org/TR/trig/
[TURTLE]
Eric Prud'hommeaux, Gavin Carothers. RDF 1.1 Turtle: Terse RDF Triple Language. W3C Recommendation, 25 February 2014. URL : http://www.w3.org/TR/2014/REC-turtle-20140225/. La version la plus récente est disponible à l’adresse http://www.w3.org/TR/turtle/