À la découverte du Web sémantique


Pour cette découverte des utilisations du Web sémantique, je vous propose de revivre la soirée « ILoveMyData » des Sfeiriens où nous avons vu que :
1. Le Web actuel est restreint à une utilisation humaine, de sorte que la machine ne peut pas interpréter ces données, et donc ne peut pas les exploiter de manière efficace.
2. Le Web sémantique permet de représenter les données grâce aux triplets RDF sous forme de Sujet Predicat Objet. Les triplets RDF constituent la A-Box de la base de connaissance.
3. Comment ajouter de la connaissance à ces triplets RDF, en utilisant des ontologies qui modélisent les infos liée à un domaine. La définition des concepts et des prédicats représente la T-Box de la base de connaissance.
4. Comment interroger ces données grâce à SPARQL.
5. Comment inférer de nouvelles connaissances grâce à un raisonneur qui à partir de la T-Box et de la A-Box, déduit de nouveaux triplets.

Dans cet article, nous allons prendre un cas pratique et introduire les technologies du Web sémantique pour transformer une information que seul un être humain peut interpréter, vers une information exploitable par une machine. Mais avant, un rappel rapide des différentes technologies du Web sémantique s’impose.

Web Sémantique 1.png

Les différentes couches technologiques du Web sémantique

Le Web sémantique utilise plusieurs technologies qui s’empilent en couches et chacune exploite les capacités de celles qui se situent en dessous.

  1. URI/IRI (Unified Resource Identifier / Internationalized Resource Identifier) est la couche nommée hypertexte, qui permet l’identification des ressources du Web. Très connue et documentée, c’est la base du Web sémantique : elle est essentielle pour relier des ressources entre elles. Un exemple d’URI dans dbpedia.
  2. RDF (Resource Description Framework) : est un modèle et un langage de description de ressources sous forme de triplet (Sujet, Predicat, Objet). Les différents triplets forment un graphe sémantique orienté où les sujet et objet représentent les noeuds et les prédicats représentent les arcs. RDF est aussi une syntaxe du langage. Un exemple de triplet RDF est : Paris is_part_of France
  3. RDFs (RDF schema) est un langage qui permet de définir les concepts et les prédicats et les organiser en hiérarchie. Par exemple Capital rdfs:subClassOf City et hasMother rdfs:subPropertyOf hasParent. RDFs permet des inférences simples.
  4. OWL (Ontologie Web Language) est un langage qui fournit des primitives additionnelles pour définir les concepts et les relations. Par exemple la relation d’équivalence entre classes : Person owl:equivalentClass Human
  5. SPARQL est un protocole et un langage de requête pour RDF.

Ces cinq couches sont des standards du W3C. D’autres, plus modernes (RIF, logique unifiée, preuve, confiance, UI & application) sont en cours de spécification pour venir les compléter.

Cas pratique

Dans notre exemple, nous allons nous baser sur le diagramme d’organisation de SFEIR. Comme expliqué plus haut, seul un être humain peut interpréter et comprendre ce diagramme correctement : un programme se trouve dans l’incapacité d’exploiter ces informations. Nous allons remédier à ce problème en plusieurs étapes.

  1. Identifier les concepts pertinents pour modéliser ce domaine.
  2. Lister les relations sémantiques qui lient ces concepts.
  3. Organiser ces concepts et relations dans une ontologie.
  4. Lier les individus en fonction des relations sémantiques, formant ainsi des triplets RDF. Ces derniers constituent alors la base de faits que nous pourrons interroger par des requêtes SPARQL.

1. Identification des concepts

Pour modéliser un domaine, il faut identifier les concepts qui permettent de porter la connaissance du domaine en question. Pour simplifier notre cas, nous allons nous restreindre au domaine de discours autour des centres de compétences, des teamleaders et des consultants. Pour chaque concept, je donne une petite définition pour le moment informelle que nous formaliserons plus tard selon les besoins.
Pour cet exemple, j’ai utilisé Protégé, l’éditeur d’ontologie standard pour définir les concepts et les relations. La définition de l’ontologie constitue la T-Box de la base de connaissance. Les instances, appelées également individus constituent la A-Box de la Base de connaissances.

  • Team leader : un teamLeader est une personne qui possède la qualité de leadership (qualité nécessaire, mais pas suffisante). Dans le contexte de SFEIR, un teamLeader est nommé à ce poste (relation suffisante). Un TeamLeader has_for_manager Directeur des opérations. Un TeamLeader est responsable de tâches spécifiques.
  • Centre de compétence : groupe qui a pour membre des consultants et qui est dirigé par un TeamLeader.
  • Comité de Direction : au sein d’une organisation ou d’une entreprise, c’est un groupe généralement restreint de personnes, formant un ensemble constitué, investi d’un pouvoir de surveillance et de décision.
  • Consultant : est un prestataire de services qui offre son savoir-faire à un client durant une mission. Il est membre d’un centre de compétence et il a pour teamleader le manager du centre dont il est membre.
  • Directeur des opérations : est un membre de l’équipe de direction d’une entreprise. Dans cette fonction, il doit assurer la direction du périmètre de production qui lui est confiée. Pour réussir sa mission, des ressources productives (compétences humaines, matérielles, logicielles, etc.) lui sont allouées. Il en a la gestion et le management des activités.
  • Directeur Technique : est un employé chargé de s’occuper de la direction des questions scientifiques et techniques au sein d’une organisation. Il est responsable de la transformation d’un capital (monétaire, intellectuel ou politique) en capital technologique qui aidera l’entreprise dans la poursuite de ses objectifs.
  • Directeur Continous Delivery : personne qui a la compétence des outils et des méthodes de la livraison continue.
  • PDG : président-directeur général est le dirigeant de plus haut rang dans l’entreprise. Le président-directeur général cumule les fonctions de président du conseil d’administration et de directeur général (DG) au sein de la société.

Web Sémantique 3.jpg
Ontologie des concepts de l’organigramme de SFEIR. (is-a) relation.

2. Identification des relations

Une fois les concepts pertinents définis, il faut préciser les relations sémantiques qui nous permettent de modéliser la connaissance qui nous intéresse dans ce domaine.

  • has_for_manager : est une relation pour exprimer le lien hiérarchique entre deux agents. Par exemple un CentreDeCompetence has_for_manager a TeamLeader. La relation inverse de has_for_manager est is_manger_of.
  • is_member_of : est une relation pour exprimer qu’une entité est membre d’un groupe. Par exemple un Consultant is_member_of a CentreDeCompétence. Sa relation inverse est has_for_member. is_member_of est une relation plus générique qui peut lier une entité à un groupe donc sont domaine est Entity et son range est Group.
  • has_for_task : est une relation qui relie un agent à une tache. Par exemple un TeamLeader has_for _task TeamLeaderTask. Sa relation inverse est is_task_for.
    has_for_quality : est une relation qui permet de relier une qualité inhérente à une entité. Par exemple a TeamLeader has_for_quality a Leadership.

Web Sémantique 4.png
Hiérarchies des concepts (à gauche), description d’un concept (à droite) dans Protégé, l’éditeur d’ontologie standard

Web Sémantique 5.png
Hiérarchies des relations (à droite), description d’une relation (à gauche)

3. Représentation de l’information par des triplets RDF

Grâce à ces concepts et relations, nous pouvons maintenant représenter les individus et leurs relations par des triplets RDF sous forme de sujet, prédicat, objet.

@prefix <http://www.semanticWeb.org/SFEIR/ontologies/2015/personelSFEIR>
@prefix owl: <http://www.w3.org/2002/07/owl>
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>
:SFEIR rdf:type :SSII .
:pierredalmaz rdf:type :PDG . 
:pierredalmaz :is_manager_of :SFEIR .
:didiergirard rdf:type :Consultant .
:didiergirard rdf:type :DirecteurDesOperations .
:aurelienpelletier rdf:type :Consultant .
:aurelienpelletier rdf:type:TeamLeader .
:cyrilbalit rdf:type :DirecteurTechniqueFront .
:celinelouvet rdf:type :Consultant .
:celinelouvet rdf:type :TeamLeaderBack .
:davidaboulkheir rdf:type :Consultant .
:davidaboulkheir rdf:type :TeamLeaderFront .
:geoffreygarnotel rdf:type :Consultant .
:geoffreygarnotel rdf:type :TeamLeader .
:amelhafsa rdf:type :Consultant , 
:amelhafsa :has_for_manager :geoffreygarnotel .
:amelhafsa :is_member_of :centrejava1 .
:centrejava1 rdf:type :CentreDeComptence .
:centrejava1 :has_for_manager :geoffreygarnotel .
:lyndatemal rdf:type :Consultant . 
:lyndatemal :has_for_manager :geoffreygarnotel . 
:lyndatemal :is_member_of :centrejava1

Les lignes 1 à 3 sont la définition des name spaces utilisés pour décrire les triplets.
La ligne 4 définit SFEIR en tant qu’instance du concept SSII.
Les lignes 5 à 6 déclarent pierredalmaz en tant que PDG qui est le manager de SFEIR.
Les lignes 16 à 17 définissent geoffreygarnotel en tant que Consultant et TeamLeader.
Les lignes 21 à 22 définissent centrejava1 en tant que centre de compétence dont le manager est geoffreygarnotel.
Les lignes 23 à 25 définissent lyndatemal en tant que consultant, membre du centre de Compétence centrejava1 et a pour manager geoffreygarnotel.

Notez que, avec ces quelques triplets RDF nous avons pu représenter une information pertinente sur les différents rôles que peuvent jouer certaines personnes, ainsi que des relations sémantiques qui lient ces rôles.

4. Interrogation de la base de fait via SPARQL

Une fois la base de fait alimentée avec des triplets, nous pouvons l’interroger grâces à SPARQL (SPARQL Protocol and RDF Query Languag), langage de requêtes, mais aussi un format de résultats et un protocole. Dans cet exemple, nous allons nous intéresser uniquement au premier aspect.

SPARQL est très puissant et il est possible d’écrire des requêtes très complexes et très précises. Comme c’est un standard, il peut être utilisé pour interroger n’importe quelle base de triplets à partir d’un sparql endpoint.

Ce paragraphe présente quelques exemples de requêtes simples.
Remarque : les résultats affichés dans ces petits exemples ne sont qu’à titre démonstratif. Car d’un côté la base de connaissance n’est pas exhaustive, et de l’autre, le format d’affichage en table dépend de l’éditeur d’ontologie Protégé qui n’offre pas d’autre option de visualisation.

R1 : Quel est le manager de SFEIR, quel est son rôle et de quel type est cette entreprise ?

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>
REFIX ex: <http://www.semanticWeb.org/SFEIR/ontologies/2015/personelSFEIR>
	
SELECT ?pdg ?typePdg ?typeSFEIR 
WHERE {  
       ?pdg to:is_manager_of ex:SFEIR.
       ex:SFEIR a ?typeSFEIR.
	       ?pdg a ?typePdg.
}
  • Les lignes 1 et 2 représentent les URI utilisées dans la requête.
  • La ligne 4 représente la clause SELECT suivit de la liste des variables recherchées par la requête. Elles sont toujours précédées par un point d’interrogation.
  • Les lignes 5 à 9 représentent la clause WHERE où les patterns qui doivent matcher le graphe sont définis.
  • La ligne 6 match le sujet qui satisfait le prédicat is_manager_of lié à l’objet : SFEIR
  • La ligne 7 match le type de l’individu ex:SFEIR
  • La ligne 8 match le type de celui qui manage ex:SFEIR

Web Sémantique 6.png
Résultat de la requête R1 dans protégé

Ainsi, c’est Pierre Dalmaz, en tant que PDG, qui manage SFEIR, qui est une SSII.

R2 : Quels sont les consultants membres du centre de compétence qui a pour manager :geoffreygarnotel ?

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>
PREFIX ex: <http://www.semanticWeb.org/SFEIR/ontologies/2015/personelSFEIR>

SELECT ?consultant ?centreDeCompetence 
WHERE { 
        ?consultant ex:is_member_of ?centreDeCompetence. 
        ?centreDeCompetence rdf:type ex:CentreDeComptence.
        ?centreDeCompetence ex:has_for_manager ex:geoffreygarnotel.            
}

Web Sémantique 7.png

R3: Quels sont les TeamLeader et combien de consultants managent-ils ?

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>
PREFIX ex: <http://www.semanticWeb.org/SFEIR/ontologies/2015/personelSFEIR>

SELECT ?teamLeader ( COUNT( ?Consultant) AS ?count )
WHERE {        
                ?centreDeCompetence ex:has_for_manager ?teamLeader.
                ?centreDeCompetence a ex:CentreDeComptence.
                ?Consultant ex:is_member_of  ?centreDeCompetence.
	                  
	} group by ?teamLeader

Web Sémantique 8.png

Les requêtes sparql peuvent paraître déroutantes à première vue quand on n’en a pas l’habitude. Cependant, une fois la logique de la structuration des requêtes acquise, ça devient plus simple. Pour faire une requête ciblée, il suffit de connaître l’ontologie qui modélise les triplets en question.
Dans le cas d’une base de connaissances dont on ignore l’ontologie de description des entités, il existe des requêtes génériques qui permettent de récupérer par exemple tous les triplets, pour avoir une vue globale de la base :

SELECT *
WHERE { ?s ?p ?o .} Limit 1000

Si nous voulons savoir tout ce qui concerne une ressource particulière, et comment elle est liée aux autres, il suffit d’écrire une requête où elle apparaît en sujet et objet dans les triplets. Par exemple si on s’intéresse à :geoffreygarnotel, la requête correspondante s’écrit comme suit :

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>
PREFIX ex: <http://www.semanticWeb.org/SFEIR/ontologies/2015/personelSFEIR>

SELECT *
WHERE { :geoffreygarnotel ?p1 ?o .
         ?s ?p2 :geoffreygarnotel .
}   

5. Inférence

L’inférence est parmi l’un des nombreux points forts de l’utilisation des ontologies. En effet, grâce à un moteur d’inférence, de nouvelles relations sont déduites à partir des ressources explicitement déclarées et du modèle d’ontologique utilisé.

Dans notre cas, nous avons déclaré dans l’ontologie que tout TeamLeader a la qualité de leadership. Ce qui implique que toute personne déclarée en tant que TeamLeader va automatiquement avoir la relation avec la qualité de leadership sans quelle soit déclaré explicitement dans la base de fait.

Nous avons également déclaré dans l’ontologie qu’un teamLeader est managé par Didier Girard. Cette relation est également inférée pour chaque instance de TeamLeader.

Ce visuel montre les relations inférées dans l’éditeur Protégé :

Web Sémantique 9.png
Inférence des relations has_for_manager et has_for_quality (à droite en jaune)

Les relations inverses permettent d’inférer de nouvelles relations. Ici, nous avons ajouté explicitement l’assertion :
:lyndatemal :is_member_of :centrejava1
Le moteur d’inférence, déduit grâce à l’ontologie l’assertion suivante :
:centrejava1 :has_for_member :lyndatemal

Web Sémantique 10.png
Inférence sur les membres d’un centre de compétence. Les relations inférées sont sur lignées en jaune

6. Extension et enrichissement

Il est possible d’enrichir une ontologie, selon les besoins du domaine, en ajoutant des concepts et/ou des relations. Dans notre cas, nous pouvons affiner le concept Consultant pour représenter les différents types de consultants que l’on peut définir selon deux axes sémantiques :

Un premier axe qui distingue les consultants selon les langages et technologies qu’ils utilisent : consultant java, .net, front et fullStack par exemple. Le second axe qualifie les consultants selon le niveau d’expérience : junior, confirmé, expert.

Une autre manière d’enrichir une ontologie serait d’exploiter celles connues et largement utilisées, ou, le cas échéant, de faire un mapping entre les concepts de l’ontologie avec les concepts de celle utilisée de façon plus large.

Par exemple dans notre cas le concept “Person”, qui est défini localement, peut être remplacé par le concept “Person” de l’ontologie FOAF (Friend of a Friend). Pour cela il suffit d’ajouter l’uri de la définition de person dans FOAF et de faire subsumer nos concepts de cette URI :

@prefix <http://www.semanticWeb.org/SFEIR/ontologies/2015/personelSFEIR>
@prefix owl: <http://www.w3.org/2002/07/owl>
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema>
@prefix foaf: <http://xmlns.com.foaf.0.1/>

:Consultant rdfs:subClassOf foaf:Person.
:PDG rdfs:subClassOf foaf:Person.
:SSII rdfs:subClassOf foaf:Organization.

7. Conclusion

D’un organigramme, interprétable uniquement par les humains, nous sommes donc arrivés à une modélisation exploitable par la machine : c’est le rôle du Web sémantique. Prendre des données a priori totalement hors de portée d’un ordinateur pour en faire des datas exploitables par différents types d’applications.

Grâce à l’ontologie, nous pouvons définir des relations sémantiques entre les individus, ce qui permet une richesse dans la description des entités manipulées. La structure de l’ontologie grâce à la relation (is-a) est également importante pour définir la connaissance du domaine.

Une fois les concepts et les relations définis (T-Box), les instances ou les individus déclarés (A-Box), le cadre de la simple base de données classique est dépassé : nous sommes en possession d’une base de connaissances, exploitable avec SPARQL.

Ces technologies permettent de lier et croiser des données provenant de plusieurs sources et peuvent être exploitées aussi bien côté Web qu’au niveau d’un CRM ou d’un SI d’entreprise.

Vous aimerez aussi...