SW-1-Setup

Navigation : Index | 2-RDFBasics >>

Objectifs d’apprentissage

A la fin de ce notebook, vous saurez : 1. Situer le Web sémantique dans l’histoire du Web et la vision de Tim Berners-Lee 2. Identifier les couches de la pile technologique du Web sémantique (RDF, SPARQL, OWL, SHACL) 3. Installer et configurer la bibliotheque dotNetRDF dans un environnement .NET Interactive 4. Créer et afficher votre premier graphe RDF (“Hello World” sémantique)

Concepts cles

Concept Description
Web sémantique Extension du Web ou l’information est comprehensible par les machines
RDF Modèle de données base sur des triplets (sujet-predicat-objet)
dotNetRDF Bibliotheque C# open-source pour manipuler des données RDF
Triplet Unite fondamentale de RDF : une assertion liant deux ressources

Prerequis

  • .NET 9.0 avec .NET Interactive pour Jupyter
  • Aucune connaissance prealable en Web sémantique requise

Duree estimee : 20 minutes


1. Contexte historique du Web sémantique

La vision de Tim Berners-Lee

En 2001, Tim Berners-Lee, inventeur du World Wide Web, publie avec James Hendler et Ora Lassila un article fondateur dans Scientific American intitule “The Semantic Web”. Sa vision : un Web ou les informations ne sont pas seulement lisibles par les humains, mais également comprehensibles et exploitables par les machines.

Le Web classique (Web 1.0/2.0) repose sur des documents HTML lies entre eux par des hyperliens. Le Web sémantique ajoute une couche de sens en structurant les données selon des standards ouverts.

La pile technologique du W3C (“Layer Cake”)

L’expression « Layer Cake » (gâteau en couches) désigne le diagramme d’architecture du Web sémantique, popularisé par Tim Berners-Lee lors de son keynote à la conférence XML 2000 et raffiné par la suite par le W3C Semantic Web Activity Group. Il représente la stratification des standards (URI -> RDF -> RDFS -> SPARQL -> OWL -> SHACL -> Trust/Proof) où chaque couche s’appuie sur les précédentes.

Le W3C (World Wide Web Consortium) a défini une architecture en couches pour le Web sémantique :

flowchart TD
    APP["Applications"] --> TPL["Trust / Proof / Logic"]
    TPL --> OWL["OWL (Ontologies)"]
    TPL --> SHACL["SHACL (Shapes)"]
    OWL --> SPARQL["SPARQL (Requetes)"]
    SHACL --> SPARQL
    SPARQL --> RDFS["RDFS (Schema / Vocabulaire)"]
    RDFS --> RDF["RDF (Modele de donnees)"]
    RDF --> SYN["XML / JSON-LD / Turtle (Syntaxe)"]
    SYN --> URI["URI / IRI (Identifiants)"]
    URI --> UNI["Unicode (Encodage)"]

Description des couches principales

Couche Standard Rôle Notebook(s) de la serie
Identifiants URI / IRI Nommer de facon unique chaque ressource SW-2
Modèle de données RDF Representer l’information en triplets SW-2, SW-3
Schema RDFS Définir des classes et proprietes SW-6
Requêtes SPARQL Interroger des graphes RDF SW-4
Ontologies OWL Raisonnement logique sur les données SW-7
Contraintes SHACL Valider la conformite des données SW-8

Point cle : Chaque couche s’appuie sur les précédentes. RDF est la fondation sur laquelle repose tout le reste.

La couche RDF (Resource Description Framework) repose sur le modèle abstrait défini dans RDF 1.1 Concepts and Abstract Syntax (Cyganiak, Wood, Lanthaler (eds.), Recommandation W3C, 25 février 2014) : un graphe est un ensemble de triplets (sujet-prédicat-objet) dont les composants sont des IRI, des blank nodes ou des littéraux. Ce modèle est celui que la bibliothèque dotNetRDF (dotnetrdf.org, open-source) implémente et que ce notebook manipule.

Pourquoi le Web sémantique ?

Le Web sémantique repond a plusieurs besoins concrets :

Problème du Web classique Solution du Web sémantique
Données en silos (chaque site a son format) Standards ouverts (RDF, SPARQL)
Liens entre documents, pas entre données Liens entre entites (Linked Data)
Recherche par mots-cles uniquement Requêtes structurees (SPARQL)
Pas de raisonnement automatique Inference logique (OWL, RDFS)

Exemples d’applications reelles : - Wikidata : base de connaissances structuree de Wikipedia - DBpedia : extraction automatique de données RDF depuis Wikipedia - Schema.org : vocabulaire utilise par Google, Bing, Yahoo pour le SEO sémantique - Graphes de connaissances : Google Knowledge Graph, Amazon Product Graph


2. Installation de dotNetRDF

Presentation de la bibliotheque

dotNetRDF est une bibliotheque open-source C# pour travailler avec RDF. Elle fournit : - Manipulation de graphes RDF en memoire - Lecture/ecriture dans 10+ formats de serialisation - Moteur de requêtes SPARQL - Support pour les Triple Stores - Integration avec des bases de données RDF (Fuseki, Blazegraph, etc.)

Installons le package NuGet dans notre environnement .NET Interactive.

// Installation du package dotNetRDF (version epinglee pour reproductibilite)
#r "nuget: dotNetRDF, 3.2.1"
Installing Packages
  • dotNetRDF

Interpretation

La commande #r "nuget: ..." est spécifique a .NET Interactive et permet d’installer des packages NuGet directement dans le notebook. L’installation telecharge la bibliotheque et ses dependances.

Note technique : Nous epinglons la version 3.2.1 pour garantir la reproductibilite. Sans version explicite, le notebook pourrait se comporter differemment dans le futur si une nouvelle version introduit des changements incompatibles.

Verification de l’installation

Verifions que les espaces de noms principaux de dotNetRDF sont accessibles.

// Verification des espaces de noms principaux
using VDS.RDF;
using VDS.RDF.Parsing;
using VDS.RDF.Writing;
using System;

Console.WriteLine("dotNetRDF charge avec succes.");
Console.WriteLine($"Espaces de noms disponibles : VDS.RDF, VDS.RDF.Parsing, VDS.RDF.Writing");
dotNetRDF charge avec succes.
Espaces de noms disponibles : VDS.RDF, VDS.RDF.Parsing, VDS.RDF.Writing

Interpretation

Si l’exécution s’est deroulee sans erreur, les trois espaces de noms principaux sont prets :

Espace de noms Contenu Usage
VDS.RDF Classes de base (Graph, Triple, INode) Creation et manipulation de graphes
VDS.RDF.Parsing Parsers (TurtleParser, RdfXmlParser) Lecture de fichiers RDF
VDS.RDF.Writing Writers (NTriplesWriter, RdfXmlWriter) Serialisation de graphes

3. Premier graphe RDF : “Hello World” sémantique

Objectif

Nous allons créer un graphe RDF minimal contenant deux triplets, puis les afficher. Cela illustre les opérations fondamentales : 1. Créer un graphe vide 2. Créer des noeuds (URI et literal) 3. Asserter des triplets 4. Parcourir et afficher les triplets

Étape 1 : Creation d’un graphe vide

Un graphe RDF est un conteneur de triplets. La classe Graph est l’implementation standard de l’interface IGraph dans dotNetRDF.

using VDS.RDF;

IGraph g = new Graph();

Console.WriteLine($"Graphe cree. Nombre de triplets : {g.Triples.Count}");
Graphe cree. Nombre de triplets : 0

Interpretation

A ce stade, nous avons créé un graphe vide. Un graphe RDF est une structure de données qui contiendra des triplets.

Propriete Valeur actuelle
Nombre de triplets 0
URI de base null (par defaut)
Espaces de noms Predefinis (rdf, rdfs, xsd)

Le graphe est pret a recevoir des triplets que nous allons ajouter dans la cellule suivante.

Étape 2 : Creation de noeuds et assertion de triplets

Nous allons maintenant créer des noeuds et les relier par des triplets. Un triplet se compose de : - Sujet : la ressource decrite (un noeud URI) - Predicat : la relation/propriete (un noeud URI) - Objet : la valeur ou ressource liee (noeud URI ou noeud literal)

using VDS.RDF;
using System;

IGraph g = new Graph();

// Creation des noeuds URI (sujet et predicat)
IUriNode dotNetRDF = g.CreateUriNode(UriFactory.Create("http://www.dotnetrdf.org"));
IUriNode says = g.CreateUriNode(UriFactory.Create("http://example.org/says"));

// Creation des noeuds literals (objets)
ILiteralNode helloWorld = g.CreateLiteralNode("Hello World");
ILiteralNode bonjourMonde = g.CreateLiteralNode("Bonjour tout le Monde", "fr");

// Assertion des triplets dans le graphe
g.Assert(new Triple(dotNetRDF, says, helloWorld));
g.Assert(new Triple(dotNetRDF, says, bonjourMonde));

Console.WriteLine($"Nombre de triplets dans le graphe : {g.Triples.Count}");
Console.WriteLine();

// Affichage des triplets
foreach (Triple t in g.Triples)
{
    Console.WriteLine(t.ToString());
}
Nombre de triplets dans le graphe : 2

http://www.dotnetrdf.org/ , http://example.org/says , Hello World^^http://www.w3.org/2001/XMLSchema#string
http://www.dotnetrdf.org/ , http://example.org/says , Bonjour tout le Monde@fr

Interpretation du “Hello World” RDF

Nous avons créé un graphe contenant deux triplets qui partagent le même sujet et le même predicat, mais différent par l’objet :

Triplet Sujet Predicat Objet
1 <http://www.dotnetrdf.org> <http://example.org/says> "Hello World"
2 <http://www.dotnetrdf.org> <http://example.org/says> "Bonjour tout le Monde"@fr

Types de noeuds utilises :

Type Interface Exemple Rôle
URI Node IUriNode http://www.dotnetrdf.org Identifie une ressource (sujet ou predicat)
Literal Node ILiteralNode "Hello World" Valeur textuelle (objet)
Literal avec langue ILiteralNode "Bonjour tout le Monde"@fr Valeur avec etiquette de langue

Point cle : La méthode g.Assert() ajoute un triplet au graphe. La méthode UriFactory.Create() interne les URIs pour optimiser la memoire et les comparaisons d’egalite.

Attention : La sortie affichée par ToString() n’est pas une syntaxe RDF standard. C’est une representation de debogage. Pour une serialisation conforme, il faut utiliser un Writer (cf. SW-2).


4. Vue d’ensemble de la serie Semantic Web

Ce notebook est le premier d’une serie de notebooks progressifs organises en 4 parties, couvrant l’ensemble du spectre du Web sémantique.

Partie 1 : Fondations RDF (.NET C#)

# Notebook Duree Sujet
1 SW-1-Setup (ce notebook) 20 min Installation, contexte, premier graphe
2 SW-2-RDFBasics 45 min Triplets, types de noeuds, serialisation
3 SW-3-GraphOperations 50 min Lecture, ecriture, fusion, listes RDF
4 SW-4-SPARQL 45 min Query Builder, SELECT, FILTER, OPTIONAL

Partie 2 : Données Liees et Ontologies (.NET C#)

# Notebook Duree Sujet
5 SW-5-LinkedData 50 min DBpedia, Wikidata, requêtes federees
6 SW-6-RDFS 40 min Vocabulaire RDFS, inference, hiérarchies
7 SW-7-OWL 50 min OWL 2, ontologies, raisonnement

Partie 3 : Ecosysteme Python et Standards Modernes

# Notebook Duree Sujet
8 SW-8-Python-SHACL 50 min SHACL : validation et qualite des donnees RDF
9 SW-9-Python-JSONLD 45 min JSON-LD : le Web semantique rencontre JSON
10 SW-10-Python-RDFStar 40 min RDF 1.2 (RDF-Star) : assertions sur des assertions
11 SW-11-Python-KnowledgeGraphs 40 min Graphes de connaissances : construction et exploration

Partie 4 : Graphes de Connaissances et IA

# Notebook Duree Sujet
12 SW-12-Python-GraphRAG 55 min GraphRAG : graphes de connaissances et LLMs
13 SW-13-Python-Reasoners 50 min Comparaison des raisonneurs OWL

Duree totale estimee : environ 10 heures de travail pratique.


Resume

Élément Ce que nous avons appris
Web sémantique Vision de Tim Berners-Lee, pile W3C, données comprehensibles par les machines
dotNetRDF Bibliotheque C# pour RDF, installee via NuGet
Graphe RDF Conteneur de triplets, créé avec new Graph()
Triplet Sujet-Predicat-Objet, asserte avec g.Assert()
Noeuds IUriNode (ressources), ILiteralNode (valeurs)

Prochaine étape

Dans le notebook suivant (SW-2-RDFBasics), nous approfondirons : - Les différents types de noeuds RDF (URI, Blank, Literal type/langue) - La serialisation dans plusieurs formats (NTriples, RDF/XML, Turtle) - La lecture de fichiers RDF existants


Navigation : Index | 2-RDFBasics >>

Resume et perspectives

Ce premier notebook a pose les fondations du Web sémantique en couvrant trois aspects essentiels. D’une part, le contexte historique : la vision de Tim Berners-Lee d’un Web comprehensible par les machines, concrétisée par la pile technologique du W3C (URI, RDF, RDFS, SPARQL, OWL, SHACL). D’autre part, l’installation et la configuration de dotNetRDF, la bibliotheque C# qui nous accompagnera tout au long de la serie. Enfin, la creation de notre premier graphe RDF, illustrant le modèle fondamental des triplets (sujet-predicat-objet) et les différents types de noeuds (URI, literal, literal avec langue).

Les concepts maitrisés ici – graphe, triplet, noeuds URI et literals, méthode Assert() – constituent le socle sur lequel s’appuient tous les notebooks suivants. La distinction entre IUriNode et ILiteralNode est particulierement importante car elle conditionne la maniere dont les données sont representees et interrogees.

Dans le notebook suivant (SW-2-RDFBasics), nous approfondirons ces bases avec les différents formats de serialisation (Turtle, N-Triples, RDF/XML, JSON-LD), les blank nodes, et la lecture de fichiers RDF existants.


Exercice : validez votre installation dotNetRDF

Pour confirmer que votre environnement est correctement configure, créez un petit graphe RDF et affichez le nombre de triplets qu’il contient.

Objectif : créer un graphe avec un seul triplet de votre choix (par exemple <http://example.org/moi> <http://xmlns.com/foaf/0.1/name> "Votre nom"), puis afficher g.Triples.Count.

Completez la cellule ci-dessous : decommentez les étapes suggerees et remplacez les valeurs par les votres.

// Exercice : validez votre installation dotNetRDF
// Etapes suggerees (decommentez et completez) :
//   using VDS.RDF;
//   IGraph g = new Graph();
//   IUriNode moi = g.CreateUriNode(UriFactory.Create("http://example.org/moi"));
//   IUriNode name = g.CreateUriNode(UriFactory.Create("http://xmlns.com/foaf/0.1/name"));
//   ILiteralNode monNom = g.CreateLiteralNode("Votre nom");
//   g.Assert(new Triple(moi, name, monNom));
//   Console.WriteLine($"Nombre de triplets : {g.Triples.Count}");

Console.WriteLine("Exercice a completer");
Exercice a completer

References savantes

  • The Semantic Web - Berners-Lee, Hendler, Lassila, Scientific American 284(5), mai 2001. Article fondateur exposant la vision d’un Web comprehensible par les machines (déjà cite dans la section 1).
  • RDF 1.1 Concepts and Abstract Syntax - Cyganiak, Wood, Lanthaler (eds.), Recommandation W3C, 25 fevrier 2014. Modèle de données abstrait (triplets sujet-predicat-objet, IRIs, blank nodes, litteraux) qui fonde la couche RDF du Layer Cake.
  • Semantic Web Layer Cake - architecture en couches popularisee par Berners-Lee (keynote XML 2000) et raffinee par le W3C Semantic Web Activity Group. Represente la stratification des standards du Web sémantique.
  • dotNetRDF - bibliotheque open-source .NET (dotnetrdf.org) pour la manipulation de graphes RDF, utilisee tout au long de cette serie de notebooks.
Retour au sommet