Toute information en RDF est représentée par un triplet,
signifiant qu’une chose est en relation avec une autre.
Exemple :
Le laboratoire LIRIS (sujet)
a pour membre (prédicat)
Pierre-Antoine Champin (objet)
Les choses sont nommées par des IRIs :
On peut représenter ceci graphiquement :
Dans RDF, les URIs ne sont utilisés que comme des identifiants opaques.
Les représentations qui sont éventuellement accessibles via ces URIs (par déréférencement) n’ont aucune influence sur leur sémantique.
Notons que le mouvement Linked Data préconise une utilisation particulière des URIs dans laquelle les réprésentations doivent être cohérentes avec la sémantique. Cependant cette contrainte n’est pas inhérente à RDF.
Pour simplifier les notations, on définit des préfixes courts correspondant à des préfixes d’IRI :
liris: → http://liris.cnrs.fr/#
foaf: → http://xmlns.com/foaf/0.1/
champin: → http://champin.net/#
On utilise ensuite des noms préfixés :
liris:lab foaf:member champin:pa
et également sous forme graphique :
On peut également lier une ressource à une donnée typée (chaîne de caractère, entier, réel...), nommée un littéral.
champin:pa foaf:name "Pierre-Antoine Champin"
Traditionnellement, on représente les littéraux par des nœuds rectangulaires :
Enfin, RDF permet de parler d’une ressource sans connaître son IRI. Cela revient en logique à utiliser une variable quantifiée existentiellement.
(quelque chose) foaf:name "Alain Mille"
On parle alors de nœud muet (par analogie aux variables muettes).
Graphiquement, on représente cette ressource par un nœud vierge (blank node).
En informatique, la sémantique d’un langage est souvent définie par les inférences (déductions) qu’on peut faire avec ce langage.
La structure du graphe permet de faire un minimum d’inférence, sans même avoir besoin de connaître le vocabulaire.
Indice
Par analogie, de l’arbre XML <a b="foo" c="bar"/>, on peut « inférer » l’arbre <a c="bar" b="foo"/> sans même connaître la sémantique des balises ou des attributs, car l’ordre des attributs n’est pas significatif.
Bien sûr, des inférences supplémentaires peuvent être faites en prêtant une sémantique particulière aux IRIs utilisés dans le graphe.
Par exemple, si :
et si tata est une relation symétrique et transitive, alors (entre autre) :
On verra plus tard des langages (RDF-Schema, OWL) permettant de définit la sémantique de certains IRIs.
Mais ces langages ne peuvent pas remettre en cause les inférences présentées ci-avant.
Indice
Analogie : lorsqu’on définit un format XML, on prête une sémantique particulière aux éléments et attributs de ce format, mais on ne peut pas prêter de sémantique à l’ordre des attributs ;
- sémantiquement, ce ne serait plus du XML,
- pragmatiquement, les outils standards (analyseur syntaxique, sérialiseurs) ne permettraient pas de contrôler cet aspect de la syntaxe.
Note
Dans cette section, on illustre chacune des syntaxes concrères avec l’exemple de graphe donné plus haut.
Syntaxe: | http://www.w3.org/TR/rdf-syntax-grammar/ |
---|---|
Valideur: | http://www.w3.org/RDF/Validator/ |
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/" >
<foaf:Group rdf:about="http://liris.cnrs.fr/#lab">
<foaf:member>
<foaf:Person>
<foaf:name>Alain Mille</foaf:name>
<foaf:knows
rdf:resource="http://champin.net/#pa"/>
</foaf:Person>
</foaf:member>
<foaf:member>
<foaf:Person rdf:about="http://champin.net/#pa">
<foaf:name>Pierre-Antoine Champin</foaf:name>
</foaf:Person>
</foaf:member>
</foaf:Group>
</rdf:RDF>
Syntaxe: | http://www.w3.org/TR/turtle/ |
---|---|
Valideur: | http://www.rdfabout.com/demo/validator/ |
RDFa est une utilisation d’attributs (existants ou supplémentaires) de (X)HTML pour y inclure du RDF (à la manière des micro-formats) :
Syntaxe: | http://www.w3.org/TR/rdfa-primer/ |
---|---|
Valideur: | http://check.rdfa.info/ |
Distiller: | http://www.w3.org/2012/pyRdfa/ |
<p prefix="foaf http://xmlns.com/foaf/0.1/"
about="_:am">
<span property="foaf:name"
>Alain Mille</span>
est membre du
<a rev="foaf:member" href="http://liris.cnrs.fr/#lab"
>LIRIS</a>.
Il connaît
<span rel="foaf:knows" href="http://champin.net/#pa">
<span property="foaf:name"
>Pierre-Antoine Champin</span>,
un autre membre de
<span rev="foaf:member" href="http://liris.cnrs.fr/#lab">
ce laboratoire.</span>
</span> </p>
Syntaxe: | http://www.w3.org/TR/json-ld-syntax/ |
---|---|
Valideur: | http://json-ld.org/playground/ |
Méta-données à propos des documents :
description: | http://lov.okfn.org/dataset/lov/details/vocabulary_dcterms.html |
---|---|
homepage: | http://purl.org/dc/terms/ |
Description de personnes et de leur réseau social
description: | http://lov.okfn.org/dataset/lov/details/vocabulary_foaf.html |
---|---|
homepage: | http://www.foaf-project.org/ |
Description de communautés en ligne
description: | http://lov.okfn.org/dataset/lov/details/vocabulary_sioc.html |
---|---|
homepage: | http://rdfs.org/sioc/spec/ |
Coordonnées géographiques
description: | http://lov.okfn.org/dataset/lov/details/vocabulary_geo.html |
---|---|
homepage: | (rdf) http://www.w3.org/2003/01/geo/wgs84_pos |
e-commerce
description: | http://lov.okfn.org/dataset/lov/details/vocabulary_gr.html |
---|---|
homepage: | http://purl.org/goodrelations/v1 |
Vocabulaire généraliste
description: | http://lov.okfn.org/dataset/lov/details/vocabulary_schema.html |
---|---|
homepage: | http://schema.org/ |