880 likes | 1.09k Views
Corese moteur de recherche sémantique. Olivier.Corby@sophia.inria.fr http://www.inria.fr/acacia/corese. L’équipe de recherche ACACIA. Modèles, méthodes et outils pour la gestion des connaissances.
E N D
Coresemoteur de recherche sémantique Olivier.Corby@sophia.inria.fr http://www.inria.fr/acacia/corese
L’équipe de recherche ACACIA • Modèles, méthodes et outils pour la gestion des connaissances. • Ingénierie des connaissances et Web sémantique pour construire et exploiter une mémoire d’entreprise • Approche Web Sémantique d’entreprise • Scénarios : • Mémoire de projet (Renault, CSTB) • Veille technologique (CSTB) • Gestion des compétences (Telecom Valley)
Les problèmes de recherche • Multi expertise, points de vue multiples • Mémoire distribuée (projet européen CoMMA) • Acquisition des connaissances à partir de textes • Recherche d’information guidée par des modèles de connaissance • Conception et évaluation suivant la méthode des scénarios
Web Sémantique & CORESE "The Semantic Web is an extension of the current web in which information is given well-defined meaning, better enabling computers and people to work in cooperation." Tim Berners-Lee, James Hendler, Ora Lassila,The Semantic Web, Scientific American, May 2001 • Web Sémantique d’entreprise • CORESE: moteur de recherche sémantique • Recherche information & Knowledge Management • Standards W3C (langages RDF, RDFS, OWL)
Caractéristiques de CORESE • Développement: • Depuis 1999 • ~ 10 homme ansde R&D • Une Opération Développement Logiciel INRIA • Deux facettes au package CORESE: • Modules pour unServeur Web Sémantique • Logiciel avec API, intégré et intégrable
Fonctionnalités de CORESE • Traiter, valider & résoudre requêtes basées sur des ontologies • Améliorer la recherche d’information avec sémantique & inférences • Portail & Serveur sémantique • Interfaces dynamiques et formulaires,mise en page et présentation • Intégration XHTML + XML + XSLT + RDF
Ontologies: Annotations: Règles: Requêtes: Humain désignation Homme Femme nom titre Homme: #tdevaux nom Dévaux Sujet:Génétique intérêt Humain:?x membre Groupe:?g Humain:?y membre Humain:?x collègue Humain:?y Homme:# tdevaux intérêt Sujet:?t Représenter les connaissances
<accident> <date> 19 Mai 2000 </date> <description> <facteur>le facteur </description> </accident> Ontologies Documents XML Légataires Utilisateurs <ns:article rdf:about="http://intranet/articles/ecai.doc"> <ns:title>MAS and Corporate Semantic Web</ns:title> <ns:author> <ns:person rdf:about="http://intranet/employee/id109" /> </ns:author> </ns:article> <rdfs:Class rdf:ID="thing"/> <rdfs:Class rdf:ID="person"> <rdfs:subClassOf rdf:resource="#thing"/> </rdfs:Class> requête réponse suggestion Schémas en RDFS Annotations en RDF composées d’instances des schémas RDFS RDFS RDF Requête Règles RDF/S Serveur Web sémantique CG Support Pile du Web QUERIES PROJECTION RULES CG Base CORESE ONTOLOGY CG Résultat RDFS CG Règles INFERENCES RDF XML NAMESPACES CG Requête URI UNICODE Moteur de recherche sémantique
RDF Resource Description Framework W3C language for the Semantic Web Representing resources in the Web Triple model : resource property value RDF/XML Syntax RDF Schema : RDF Vocabulary Description Language
RDF vs Conceptual Graphs rdfs:Class Concept Type rdf:Property Relation rdfs:Resource Concept rdfs:domain rdfs:range Signature RDF Graph CG Published at ICCS 2000
Ontologie (concepts / classes) class Document class Report subClassOf Document class Topic class ComputerScience subClassOf Topic Document Report Memo Topic ComputerScience Maths
Ontologie (relations / propriétés) property authordomain Documentrange Person property concerndomain Documentrange Topic Person Document author Topic Document concern
Ontologie RDFS / XML <rdfs:Class rdf:ID=‘Document’/> <rdfs:class rdf:ID=‘Report’> <rdfs:subClassOf rdf:resource=‘#Document’/> </rdfs:Class> <rdf:Property rdf:ID=‘author’> <rdfs:domain rdf:resource=‘#Document’/> <rdfs:range rdf:resource=‘#Person’/> </rdf:Property>
Annotation Le rapport RR-1834 a été écrit par le chercheurOlivier Corby et porte sur le langage de programmation JAVA Report http://www.inria.fr/RR-1834.html author http://www.inria.fr/o.corby concern http://www.inria.fr/acacia#Java Researcher http://www.inria.fr/o.corby name “Olivier Corby” Report http://www.inria.fr/RR-1834.html Researcher http://www.inria.fr/o.corby author Olivier Corby name Java http://www.inria.fr/acacia#Java concern
Exemple de Requête Exprimée dans le vocabulaire de l’ontologie, exemple : Trouver des documents sur Java ?doc rdf:type c:Document ?doc c:concern ?topic ?topic rdf:type c:Java Document ?doc Java ?topic concern
Requêtes & exploitation ontologie • Les rapports et les articlessont des documents, … • Les documents ont des auteurs, qui sont des personnes, … • Les personnes ont des centres d’intérêt … Document Report Article Memo Person Document author Topic Person interest
Langage de requête select data where exp exp : resource property value ?x rdf:type c:Person resource operator value ?name = “Olivier”
Langage de requête • Opérateurs: = <= ~ != … • XML Schema Datatypes : number, boolean, string, date, etc. • Langage utilisé: xml:lang=“en-us” • Combinaison expressions booléennesand / or • Non existence d’arc, arc optionnel, chemin • Interroger RDF Schema
Interroger l’ontologie Trouver les sous-classes de Personne avec leurs labels / termes en Anglais ?x rdfs:subClassOf c:Person ?x rdfs:label ?l@en ?x rdfs:label “homme”@fr Trouver les traductions anglaises des labels de la classe homme
~ contain ^ startWith in is contained in < <= = >= > nombre ou string ! negation : != !~ <: <=: =: >=: >: type Opérateurs de requête
Trouver un document : ?doc rdf:type ex:Document Le titre contient XML : ?doc ex:title ?title ?title ~ “XML” La date est antérieure à 2004 : ?doc ex:date ?date ?date <= “2004-01-01” Opérateurs
Opérateurs avec variable Deux auteurs différents : ?doc ex:author ?p1 ?doc ex:author ?p2 ?p2 != ?p1
Opérateurs avec variable Deux personnes de même nom : ?p1 rdf:type ex:Person ?p1 ex:name ?x ?p2 rdf:type ex:Person ?p2 ex:name ?x ?p1 != ?p2
Opérateurs de type Un document de type égal à TechnicalReport ?x rdf:type ex:Document ?x =: ex:TechnicalReport Un document qui ne soit pas un Rapport technique : ?x rdf:type ex:Document ?x !<=: ex:TechnicalReport
Arc absent Trouver une personne qui n’est pas l’auteur d’une thèse : ?p rdf:type ex:Person ?doc rdf:type ex:Thesis ?p not::ex:author ?doc
Arc optionnel Trouver une personne auteur d’un livre, retourner l’éditeur s’il existe et son nom s’il existe : ?p rdf:type ex:Person ?p ex:author ?doc ?doc option::ex:publisher ?pub ?pub option::ex:name ?name
Chemin Trouver par quel chemin deux personnes sont reliées, chemin de longueur au plus n : ?x rdf:type ex:Person ?y rdf:type ex:Person ?x ex:relation[2] ?y Essaie : (1) ?x ex:relation ?y (2) ?x ex:relation ?t ?t ex:relation ?y
Tous les chemins Trouver par quels chemins deux personnes sont reliées, chemins de longueur au plus n : ?x rdf:type ex:Person ?y rdf:type ex:Person ?x all::ex:relation[2] ?y Essaie : (1) ?x ex:relation ?y (2) ?x ex:relation ?t ?t ex:relation ?y
Propriété générique Ressources reliées par n’importe quelle propriété : ?x ?p ?y Ressources reliées par des propriétés différentes : ?x ?p1 ?y ?x ?p2 ?y ?p1 != ?p2
Propriété générique Trouver un document dont le titre contient XML et retourner toutes ses propriétés : ?doc ex:title ?t ?t ~ “XML” ?doc ?p ?value
Ou booléen ?x c:member ?y or ?y c:member ?z ?x rdf:type c:Man or ?x rdf:type c:Woman ?date = 1959-10-16 or ?date = 1992-04-24
Grammaire des expressions exp ::= term ‘or’ exp | term ; term ::= fact term | fact ; fact ::= triple | test | ‘(‘ exp ‘)’ ; triple ::= resource property value ; test ::= resource oper value ;
XML Schema Datatypes ?p c:name “Olivier”^^xsd:string ?p c:age 30^^xsd:float ?p c:birthDate 1959-10-16^^xsd:date ?p c:date ?d^^xsd:date
Qualifiers • Distinct • Group • Count
Distinct ?x c:friend ?f1 ?x c:friend ?f2 (1) Joe c:friend Jules (3) Joe c:friend Jules Joe c:friend Jim Joe c:friend Jules (2) Joe c:friend Jim (4) Joe c:friend Jim Joe c:friend Jules Joe c:friend Jim
Distinct (cont) ?x c:friend ?f1 ?x c:friend ?f2 ?f1 != ?f2 (1) Joe c:friend Jules Joe c:friend Jim (2) Joe c:friend Jim Joe c:friend Jules
Distinct (cont) Eliminer les réponses identiques aux permutations près ?x c:friend distinct::?f1 ?x c:friend distinct::?f2 ?f1 != ?f2 (1) Joe c:friend Jules Joe c:friend Jim
Group by ?doc rdf:type ex:Document ?doc ex:author ?person ?doc ex:date ?date D1 John 1990 D2 Jack 2000 D3 John 2004 D4 Jack 2000
Group by Grouper les documents par auteur et par date ?doc rdf:type ex:Document ?doc ex:author group::?person ?doc ex:date group::?date John 1990 D1 2004 D3 Jack 2000 D2 D4
Count Une requête a pour réponse G1 .. Gn count::?x Compter les occurrences différentes de x dans le graphe résultat Ex : compter les ouvrages d’un auteur
Count Ex : compter les ouvrages des auteurs count::?doc ex:author group::?person John D1 D3 (2) Jack D2 D4 (2)
Paramétrage select list liste des projections merge toutgrouper dans un seul résultat projection 100 result 10 where
Recherche approchée • Rechercher la meilleure approximation en fonction de l’ontologie. • Exemple: • Requête Rapport Technique sur Java écrit par un ingénieur ? • Réponse approchée : Rapport Technique Support de cours Ingénieur Equipe
Distance dans l’ontologie Objet Document Acteur Personne Équipe Rapport Cours Ingénieur Chercheur R. Recherche R. Technique Support C.
Distance dans l’ontologie Objet 1 Document Acteur 1/2 Personne Équipe Rapport Cours 1/4 Ingénieur Chercheur R. Recherche R. Technique Support C.
Calcul de distances • Calcul de la distance ontologique • Distance = somme des longueurs des chemins entre concepts approximés • Minimiser la distance, classer résultats par distance croissante et seuillage • Syntaxe: select more where exp
Inférences & Règles Exploiter des inférences (règles) pour la recherche d’information Si un membre d’une équipe a un centre d’intérêt alors l’équipe a aussi ce centre d’intérêt ?person interestedBy ?topic ?person member ?team ?team interestedBy ?topic Person ?person Topic ?topic interestedBy interestedBy Team ?team member
Inférences & Règles Classer une ressource Si une personne a écrit une thèse sur un sujet alors c’est un docteur et un expert du sujet. ?person author ?doc ?doc rdf:type PhDThesis ?doc concern ?topic ?person expertIn ?topic ?person rdf:type PhD PhDThesis ?doc Person ?person author Topic ?topic concern PhD ?person expertIn
Syntaxe RDF/XML <cos:rule> <cos:if>?person author ?doc?doc rdf:type PhDThesis?doc concern ?topic </cos:if> <cos:then>?person expertIn ?topic?person rdf:type PhD </cos:then> </cos:rule>
Sémantique : symétrie <cos:rule> <cos:if> ?x c:brother ?y </cos:if> <cos:then> ?y c:brother ?x </cos:then> </cos:rule>