Web Sémantique RDF Olivier.Corby@sophia.inria.fr
Semantic Web World Wide Web Consortium : www.w3.org Extension du Web actuel où l’information serait munie d’une signification (meaning) bien définie Pour faciliter le travail en coopération homme-machine Un Web de données et de documents
Semantic Web Évolution du Web pour permettre le traitement automatique des informations (par programme) Documents et données structurés (XML) Associer sémantique (sens) aux documents http://www.scientificamerican.com/2001/0501issu e/0501berners-lee.html
Semantic Web : Vision W3C
Applications Préparer automatiquement un voyage, par l’Internet, en combinant des informations (hôtel, avion, voiture) Etre prévenu d’informations sur un thème donné : conférence, publication, etc.
Applications Annotation de documents multimedia : trouver une séquence avec un facteur cycliste Site Web d’entreprise structuré par un référentiel Documentation technique
XML Extensible Markup Language Langage de description et d’échange de : documents structurés données structurées Conçu par le World Wide Web Consortium (W3C) www.w3.org
XML Définit la structure (syntaxe) comme un arbre de syntaxe abstraite Mais rien sur la signification, le sens : la sémantique La sémantique permet de définir la signification des balises, donc des informations. Contraint les traitements
XML <book> <author>John Maynard Keynes</author> <title>General Theory of Employment …</title> .. </book>
XML <aaa> <bbb>John Maynard Keynes</bbb> <ccc>General Theory of Employment …</ccc> .. </aaa> Définit une structure mais pas le sens
Sens <book> book a kind of Document <author> Documents have an author, which is a Person, <title> a title which is a Literal
Sens Décrire le sens avec un certain consensus En utilisant des vocabulaires standardisés : ontologie
RDF Resource Description Framework Annotations sémantiques décrivant le contenu des documents Permet de faire des recherches d'information en utilisant ces annotations
RDF Suite Le moteur de recherche : exploite les annotations effectue des inférences élémentaires retrouve des documents pertinents
RDF et Schema http://www.w3.org/RDF RDF sert à annoter des documents pour décrire le contenu Ces descriptions reposent sur un vocabulaire partagé : une ontologie RDF Vocabulary Description Language 1.0: RDF SchemaW3C Working Draft 10 Octobre http://www.w3.org/RDF
RDF Schema Classes de ressource et Propriétés Spécialisation Syntaxe XML Propriétés sont entités à part entière, comme les classes et les instances.
Pourquoi les propriétés ? Car le Web est un réseau où tout le monde peut participer Une classe n'est pas définie entièrement localement Elle peut être réutilisée et complétée par ailleurs : on peut donc définir de nouvelles propriétés sur une classe existante Web based design vs Top down
Modèle RDF RDF repose sur un modèle de triplet : resource propriété valeur appelés respectivement : resource property value Les valeurs sont soit des ressources, soit des littéraux (valeurs atomiques)
Modèle RDF (2) Une ressource (e.g. document ou fragment de document) est désignée par un URI Peut être accessible par URI Exemple : http://www.essi.fr/cours/log11 ns:titre ‘Modélisation des connaissances’ Noté : ex:log11 ns:titre ‘Modélisation …’
RDF : syntaxe XML <rdf:Description rdf:about=‘http://www.essi.fr/cours/log11’> <titre>Modélisation des connaissances </titre> </rdf:Description>
Ajouter du sens La ressource est un cours, un cours a des enseignants, l’enseignant est un chercheur de l'INRIA, etc.
Exemple ex:log11 rdf:type ns:Cours ex:log11 ns:titre “Modélisation des connaissances” ns:Cours rdf:type rdfs:Class
RDF/XML <rdf:Description rdf:about=‘http://www.essi.fr/cours/log11’> <rdf:type rdf:resource='#Cours'/> <titre>Modélisation des connaissances </titre> </rdf:Description> <rdfs:Class ID='Cours'/>
Classes ns:Cours rdf:type rdfs:Class ns:CoursDEA rdf:type rdfs:Class ns:CoursDEA rdfs:subClassOf ns:Cours ns:CoursESSI rdfs:subClassOf ns:Cours
Classes <rdfs:Class rdf:ID='Cours'/> <rdfs:Class rdf:ID='CoursDEA'> <rdfs:subClassOf rdf:resource='#Cours'/> </rdfs:Class> <rdfs:Class rdf:ID='CoursESSI'>
Classes (2) <rdfs:Class rdf:ID='CoursCommun'> <rdfs:subClassOf rdf:resource='#CoursDEA'/> <rdfs:subClassOf rdf:resource='#CoursESSI'/> </rdfs:Class> <rdf:Property rdf:ID='titre'> <rdfs:domain rdf:resource='#Cours'/> <rdfs:range rdf:resource=’&rdfs;Literal’/> </rdf:Property>
Propriétés <rdf:Property rdf:ID=‘enseignant’> <rdfs:domain rdf:resource='#Cours'/> <rdfs:range rdf:resource='#Personne'/> </rdf:Property> <rdf:Property rdf:ID='nom'> <rdfs:domain rdf:resource='#Personne'/> <rdfs:range rdf:resource=’&rdfs;Literal'/>
Classes <rdfs:Class rdf:ID='Personne'/> <rdfs:Class rdf:ID='MaitreDeConf'> <rdfs:subClassOf rdf:resource='#Personne'/> </rdfs:Class> <rdfs:Class rdf:ID='Chercheur'>
Annotation <rdf:Description rdf:about='http://www.essi.fr/cours/log11’> <rdf:type rdf:resource='#Cours'/> <titre>Modélisation des connaissances</titre> <num>Log11</num> <enseignant> <Chercheur rdf:about='http://www.inria.fr/Olivier.Corby’> <nom>Olivier Corby</nom> <institut>INRIA</institut> </Chercheur> </enseignant> </rdf:Description>
Requêtes Trouver les cours dont O. Corby est enseignant ? Qui enseigne le cours LOG11 ? Y a-t-il un enseignant-chercheur ? Y a-t-il une Personne de l'INRIA ?
Requêtes A la OQL (Object Query Language) select c.num, p.nom from c Cours, p Personne where c.titre like ‘connaissance’ and p.institut = ‘INRIA’
Traits avancés Modularité Multi héritage, multi instanciation Conteneurs
Namespace Pour modulariser les schemas : À un schema est associé un nom symbolique : un URI Les balises issues du schema sont préfixées par cet URI, appelé namespace
Namespace (2) <rdf:Description xmlns:ns=‘http://www.inria.fr/acacia/cours#’ > <ns:titre>Modélisation des connaissances </ns:titre>
Exemple <rdf:Description rdf:about=‘http://www.essi.fr/cours/log11’ xmlns:ns=‘http://www.inria.fr/acacia/cours#’ xmlns:rdf=‘http://www.w3.org/1999/02/22-rdf- syntax-ns#’> <rdf:type rdf:resource=‘#Cours'/> <ns:titre>Modélisation des connaissances </ns:titre> <ns:num>Log11</ns:num>
Exemple (suite) <ns:enseignant> <ns:Chercheur rdf:about=‘http://www.inria.fr/Olivier.Corby’> <ns:nom>Olivier Corby</ns:nom> <ns:institut>INRIA</ns:institut> </ns:Chercheur> </ns:enseignant> </rdf:Description>
Héritage multiple Une classe peut spécialiser plusieurs classes <rdfs:Class rdf:ID=‘EnseignantChercheur’> <rdfs:subClassOf rdf:resource=‘#Enseignant’/> <rdfs:subClassOf rdf:resource=‘#Chercheur’/> </rdfs:Class>
Multi instanciation Une description peut être instance de plusieurs classes <rdf:Description rdf:about=‘http://www.inria.fr/Olivier.Corby’> <rdf:type rdf:resource=‘#Chercheur’/> <ns:institut>INRIA</ns:institut> <rdf:type rdf:resource=‘#Enseignant’/> <ns:etablissement>UNSA</ns:etablissement> </rdf:Description>
Plusieurs Schema Utiliser plusieurs schemas, grâce aux namespaces : <rdf:Description xmlns:rdf=`&rdf;’ xmlns:ns=`http://www.inria.fr/acacia/cours#’ xmlns:ex=`http://www.essi.fr/namespace#’> <ns:institut>INRIA</ns:institut> <ex:formation>UNSA</ex:formation> </rdf:Description>
Propriété : domaine Le domaine est la conjonction des domaines <rdf:Property rdf:ID=‘vitesse’> <rdfs:domain rdf:resource=‘#Objet’/> <rdfs:domain rdf:resource=‘#Mobile’/> <rdfs:range rdf:resource=‘&rdfs;Literal’/> </rdf:Property>
Domaines ns:vitesse rdf:type rdf:Property ns:vitesse rdfs:domain ns:Objet ns:vitesse rdfs:domain ns:Mobile ns:vitesse rdfs:range rdfs:Literal ex:car ns:vitesse “100” ex:car rdf:type ns:Objet ex:car rdf:type ns:Mobile
Sous-propriété Une propriété peut être spécialisée : <rdf:Property rdf:ID='coordinateur'> <rdfs:subPropertyOf rdf:resource='#enseignant'/> </rdf:Property> ex:bob ns:coordinateur ex:cours Þ ex:bob ns:enseignant ex:cours coordinateur est inclus dans enseignant
Sous propriété (2) <ns:Cours rdf:about=‘http://www.essi.fr/cours/log11’> <ns:coordinateur rdf:resource=‘http://www.inria.fr/Olivier.Corby’/> </ns:Cours> Þ <ns:Cours rdf:about=‘http://www.essi.fr/cours/log11’> <ns:enseignant rdf:resource=‘http://www.inria.fr/Olivier.Corby’/>
Nom externe de Propriété Une propriété peut avoir plusieurs noms externes : labels Peuvent être multilingue <rdf:Property rdf:ID=‘name’> <rdfs:domain rdf:resource='Person'/> <rdfs:range rdf:resource=’&rdfs;Literal'/> <rdfs:label xml:lang='fr'>nom</rdfs:label> <rdfs:label xml:lang='en'>name</rdfs:label> </rdf:Property>
Datatype Pour typer les valeurs litérales, RDF repose sur les datatypes de XML Schema xmlns:xsd=‘http://www.w3.org/2001/XMLSchema#’ xsd:integer xsd:float xsd:string xsd:date xsd:boolean ...
RDF Datatype <!ENTITY xsd ”http://www.w3.org/2001/XMLSchema#” > <c:Person> <c:age rdf:datatype=‘&xsd;integer’>43</c:age> <c:name rdf:datatype=‘&xsd;string’>Laurent </c:name> </c:Person>
Limitation de RDF Impossible de surcharger la signature d’une propriété pour la spécialiser Class Primate Class Man subClassOf Primate Class Chimpanzee subClassOf Primate <rdf:Property rdf:ID=‘child’> <rdfs:domain rdf:resource='#Primate'/> <rdfs:range rdf:resource='#Primate'/> </rdf:Property>
Raffinement impossible La propriété child étant définie, il est impossible de la raffiner : <rdf:Property rdf:ID=‘child’> <rdfs:domain rdf:resource='#Man'/> <rdfs:range rdf:resource='#Man'/> </rdf:Property>
Solution en RDF Spécialiser la propriété : <rdf:Property rdf:ID='manChild'> <rdfs:subPropertyOf rdf:resource='#child'/> <rdfs:domain rdf:resource='#Man'/> <rdfs:range rdf:resource='#Man'/> </rdf:Property> Ou utiliser OWL
Collection Quand la valeur d’une propriété est une collection de valeurs : <rdf:Description rdf:about=‘http://www.essi.fr/cours/log11’> <ns:staff> <rdf:Bag> <rdf:li>Olivier Corby</rdf:li> <rdf:li>Sabine Moisan</rdf:li> <rdf:li>Alain Giboin</rdf:li> </rdf:Bag> </ns:staff> </rdf:Description>
Conteneurs (2) rdfs:Container rdf:Bag : collection rdf:Seq : séquence ordonnée rdf:Alt : alternative. Liste de valeurs possibles pour la propriété Ils peut y avoir duplication de valeurs
Liste <ex:Group> <ex:members rdf:parseType=‘Collection’> <ex:Person rdf:about=‘#JohnDoe’/> <ex:Person rdf:about=‘#MisterX’/> </ex:members> </ex:Group>
Liste <ex:Group> <ex:members> <rdf:List> <rdf:first rdf:resource=‘#JohnDoe’ /> <rdf:rest> <rdf:first rdf:resource=‘#MisterX’ > <rdf:rest rdf:resource=‘&rdf;nil’/> </rdf:List> </rdf:rest> </ex:members> </ex:Group>
Ressource anonyme Ressource intermédiaire, sans identificateur Sémantique existentielle : il existe une ressource <ns:Cours> <ns:auteur> <ns:Person> <ns:name>O. Corby</ns:name> </ns:Person> </ns:auteur> </ns:Cours>
Relation n-aire Les propriétés sont des relations binaires Pour décrire une relation n-aire, utiliser une ressource anonyme : <ns:Mobile> <ns:vitesse rdf:parseType=‘Resource’> <rdf:value>130</rdf:value> <ns:unit>km/h</ns:unit> </ns:vitesse> </ns:Mobile>
Relation n-aire <ns:Mobile> <ns:vitesse> <rdf:Description> <rdf:value>130</rdf:value> <ns:unit>km/h</ns:unit> </rdf:Description> </ns:vitesse> </ns:Mobile>
Sémantique Tous les énoncés RDF sont considérés comme vrais, dans un même environnement, la conjonction des énoncés est considérée comme vrai également Il n’y a pas de contexte local (dans lequel quelque chose serait vrai) Il n’y a pas de négation RDF est monotone : ce qui est vrai reste vrai au fur et a mesure que l’on rajoute de l’information RDF est un sous-ensemble de la logique du premier ordre avec des prédicats binaires et des variables existentielles.
Typage : domain Les règles de typage diffèrent des modèles objet traditionnels. L’utilisation d’une propriété sur une ressource entraine que la ressource soit du type indiqué par le domaine de la propriété ex:title rdfs:domain ex:Cours ex:log11 ex:title “Modélisation des connaissances” ex:log11 rdf:type ex:Cours
Typage : range Si une ressource est la valeur d’une propriété, la ressource est du type indiqué par le range de la propriété ex:enseignant rdfs:range ex:Person ex:log11 ex:enseignant ex:olivier ex:olivier rdf:type ex:Person
Typage : class Si une ressource a pour type C, alors C est une classe : rdf:type rdfs:range rdfs:Class ex:olivier rdf:type ex:Person ex:Person rdf:type rdfs:Class
Exemple de Schema RDFS <rdfs:Class rdf:ID="Document"> <rdfs:subClassOf rdf:resource="#Entity"/> <rdfs:subClassOf rdf:resource="#EntityConcerningATopic"/> <rdfs:subClassOf rdf:resource="#NumberableEntity"/> <rdfs:comment xml:lang="en">Entity including elements serving as a representation of thinking.</rdfs:comment> <rdfs:comment xml:lang="fr">Entite comprenant des elements de representation de la pensee.</rdfs:comment> <rdfs:label xml:lang="en">document</rdfs:label> <rdfs:label xml:lang="fr">document</rdfs:label> </rdfs:Class>
Exemple (2) <rdf:Property rdf:ID="Designation"> <rdfs:subPropertyOf rdf:resource="#SomeRelation"/> <rdfs:range rdf:resource=”&rdfs;#Literal"/> <rdfs:domain rdf:resource="#Something"/> <rdfs:comment xml:lang="en">Identifying word or words by which a thing is called and classified or distinguished from others.</rdfs:comment> <rdfs:comment xml:lang="fr">Identifiant le ou les mots par lesquels une chose s appelle et est classifiee ou distinguee des autres.</rdfs:comment> <rdfs:label xml:lang="en">designation</rdfs:label> <rdfs:label xml:lang="fr">designation</rdfs:label> </rdf:Property>
Exemple (3) <c:ResearchReport rdf:about=”http://www.inria.fr/rapports/sophia/RR- 3071.html"> <c:title>Modèles Génériques de Gestion de Conflits dans la Conception Concourante</c:title> <c:CreatedBy> <c:Person rdf:about=”http://www.inria.fr/acacia/Nada.Natta"> <c:FirstName>Nada</c:FirstName> <c:FamilyName>Matta</c:FamilyName></c:Person> </c:CreatedBy> <c:CreatedBy> <c:Person rdf:about=" http://www.inria.fr/acacia/Olivier.Corby"> <c:FirstName>Olivier</c:FirstName> <c:FamilyName>Corby</c:FamilyName></c:Person> </c:CreatedBy>
Exemple (3) <c:CreationDate>12-1996</c:CreationDate> <c:CreatedBy> <c:ProjectGroup rdf:about="http://www.inria.fr/recherche/equipes/acac ia.en.html"> <c:Designation>Acacia</c:Designation> </c:ProjectGroup> </c:CreatedBy> </c:ResearchReport>
Requête Find Document about XML written by a person from the Acacia project return the title of the document and the name of the author
Interrogation Lever les ambiguïtés grâce à l'ontologie Exploiter la conceptualisation et la subsomption Document ? Article Person ? Student Designation ? Title
Extensions : Corese COnceptual REsource Search Engine Implémentation de RDF basée sur les graphes conceptuels Moteur de recherche sémantique
Langage de reqête RDF avec des variables et des opérateurs ~ contient ^ commence par < <= = >= > chaine ou nombre % expression régulière <: <=: =: >=: >: comparaison de type ! opérateur de négation != !~ !<: etc. | ou booléen : ~XML | ~RDF
Exemple <c:Document c:Title='~XML’> <c:CreatedBy rdf:resource='?p'/> </c:Document> <c:Person rdf:about='?p' c:Name='?n’> <c:memberOf rdf:resource='?o'/> </c:Person> <c:Organization rdf:about='?o' c:Designation='~Acacia'/>
Inférence Trouver des documents écrits par un collaborateur de R.D. collaborateur : membre de l’équipe dirigée par R.D. Trouver un institut qui travaille sur le sujet S : un de ses membres travaille sur S
Règle si Institut ?i inclut Personne ?p ET alors ?i a pour interet ?s ?p a pour interet Sujet ?s alors ?i a pour interet ?s
Règle de graphe [Institut: ?i]-(inclut)-[Personne: ?p] -(interet)-[Sujet: ?s] [Institut: ?i]-(interet)-[Sujet: ?s]
Règle RDF <cos:rule> <cos:if> <s:Institut rdf:about=`?i’> <s:inclut> <s:Personne rdf:about=‘?p’> <s:interet rdf:resource=‘?s’/> </s:Personne> </s:inclut> </s:Institut> </cos:if> <cos:then> <s:Institut rdf:about=‘?i’> <s:interet rdf:resource=‘?s’/> </s:Institut> </cos:then> </cos:rule>
Règle de graphe règles de graphe conceptuel Pour appliquer une règle CD sur un graphe G : 1. Trouver C’, une occurrence de C dans G par projection : C’ C 2. Joindre la conclusion D au graphe G sur les concepts de C’ trouvés par projection
Test de condition Query : [Institut: ?i]- -(inclut)-[Person: ?p] -(interet)-[Sujet: ?s] Cible:[Projet: Acacia]-{ -(inclut)-[Person: O.Corby]-(interet)- [ModelisationConnaissance] -(inclut)-[PhdStudent: L.A] … }
Déduction [Projet: Acacia]-{ -(interet)-[ModelisationConnaissance] -(inclut)- [Person: O.Corby]-(interet)- [ModelisationConnaissance] -(inclut)-[PhdStudent: L.A] … }
Type défini IF [Human ?x]-(has)-[Desease] THEN [Patient ?x]
Futur du Semantic Web Documents structurés XML XML Schema XQuery Ressources annotées par du RDF RDF Schema Navigation basée sur un système conceptuel Associer des concepts de l’ontologie RDF Schema à des balises de document structurés:
Futur du Semantic Web Agents intelligents dotés de capacités d'inférences Rechercher et combiner l'information sur le Web Exemple : préparer un voyage avec : Transport : avion ou train Hébergement : hôtel ou gite Déplacement : voiture de location
Correspondance Balise « Concept <auteur> <ecrivain> <realisateur> <compositeur> } Createur
Concept « Balise Createur Peintre Sculpteur Ecrivain Musicien cree(Createur, uvre) peint(Peintre,Toile) peint < cree Toile < uvre
Recherche d'information Grâce à la correspondance : balise Û concept, Le système possède une représentation du sens des balises
Exemple : <auteur>Olivier Corby</auteur> Û Createur: Olivier Corby Le système utilise ensuite l’ontologie relative au concept de créateur pour répondre à des requètes
Travaux OntoBroker, SHOE RDF et Graphes Conceptuels : Corese, DRDFS Projet Escrire : comparer GC, objets et logique de description CoMMA : mémoire d’entreprise DAML OIL OWL, Semantic Web Working Group W3C
Applications Mémoire d’entreprise : Corporate Semantic Web Le Schema RDF peut être le référentiel métier Système documentaire Web Services Le Web de demain
Bibliographie www.w3.org/XML www.w3.org/RDF http://www.w3.org/2001/sw/ www.oasis-open.org Méthodes et outils pour la gestion des connaissances, R. Dieng et. al. Dunod XML, Langage et applications A. Michard, Eyrolles