374 lines
14 KiB
TeX
374 lines
14 KiB
TeX
|
\documentclass[pdf,11pt]{beamer}
|
||
|
\usepackage[square,sort,numbers]{natbib}% Pour pouvoir utiliser une bibliographie externe
|
||
|
\usepackage[french]{babel} % Pour préciser la langue du document
|
||
|
\usepackage[utf8]{inputenc} % Précise comment le texte est saisi : cela permet de tapper directement les accents
|
||
|
\usepackage[T1]{fontenc} % Précise la façon dont le document actuel est encodé
|
||
|
\usepackage{setspace}
|
||
|
\usepackage{datetime}
|
||
|
|
||
|
\mode<presentation>
|
||
|
%% preamble
|
||
|
\title{Le web sémantique}
|
||
|
\subtitle{Présentation du 6 mai 2017 à LinuQ}
|
||
|
\author{François Pelletier}
|
||
|
\date{Édité le \today}
|
||
|
|
||
|
\bibliographystyle{plainnat} % Pour changer le style de bibliographie
|
||
|
\addto{\captionsfrench}{\renewcommand{\refname}{Bibliographie}} % Comme le langage défini est le français, "Références" aurait été le titre par défaut pour la bibliographie
|
||
|
|
||
|
\usepackage{amsmath,amsthm,amssymb,amsfonts} % Pour pouvoir inclure certains symboles et environnements mathématiques
|
||
|
\usepackage{enumerate} % Pour mieux gérer la commande enumerate dans les sections
|
||
|
\usepackage{graphicx} % Pour inclure des images
|
||
|
\usepackage{color} % Pour inclure du texte en couleur
|
||
|
\usepackage{units} % Pour pouvoir tapper les unités correctement
|
||
|
\usepackage{pgf,tikz} % Utilisation du module tikz, qui permet de tracer des belles images
|
||
|
\usepackage{hyperref}
|
||
|
\usepackage{caption}
|
||
|
\usepackage{listingsutf8}
|
||
|
\usepackage{courier}
|
||
|
|
||
|
\definecolor{gray}{rgb}{0.4,0.4,0.4}
|
||
|
\definecolor{darkblue}{rgb}{0.0,0.0,0.6}
|
||
|
\definecolor{cyan}{rgb}{0.0,0.6,0.6}
|
||
|
|
||
|
\lstset{
|
||
|
basicstyle=\footnotesize\ttfamily,
|
||
|
columns=fullflexible,
|
||
|
showstringspaces=false,
|
||
|
commentstyle=\color{gray}\upshape
|
||
|
}
|
||
|
|
||
|
\lstdefinelanguage{XML}
|
||
|
{
|
||
|
morestring=[b]",
|
||
|
morestring=[s]{>}{<},
|
||
|
morecomment=[s]{<?}{?>},
|
||
|
stringstyle=\color{black},
|
||
|
identifierstyle=\color{darkblue},
|
||
|
keywordstyle=\color{cyan},
|
||
|
morekeywords={xmlns,version,type}% list your attributes here
|
||
|
}
|
||
|
|
||
|
\usetikzlibrary{shapes.geometric, arrows} % Quand on exporte une image GeoGebra, on a besoin de préciser cela
|
||
|
|
||
|
\usecolortheme{dolphin}
|
||
|
\useoutertheme{infolines}
|
||
|
\setbeamertemplate{headline}[default]
|
||
|
|
||
|
% logo of my university
|
||
|
\titlegraphic{\includegraphics[width=2cm]{logo}}
|
||
|
\begin{document}
|
||
|
|
||
|
\begin{frame}
|
||
|
\titlepage
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\tableofcontents
|
||
|
\end{frame}
|
||
|
|
||
|
\section{Le World Wide Web}
|
||
|
\label{sec:www}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Le World Wide Web}
|
||
|
\begin{itemize}
|
||
|
\item Une immense collection d'information et de données qui peuvent être accédées via Internet en utilisant le protocole HTTP. On utilise principalement un navigateur (Firefox, Chromium, Konqueror).
|
||
|
\item Introduit au CERN par Tim Berners-Lee.
|
||
|
\item Documents hypertextes connectés par des hyperliens.
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
Le premier navigateur était WorldWideWeb for NeXT.
|
||
|
\begin{figure}[h!]
|
||
|
\centering
|
||
|
\includegraphics[width=8cm]{WorldWideWeb_FSF_GNU.png}
|
||
|
\caption{WorldWideWeb for NeXT}
|
||
|
\label{fig:www4next}
|
||
|
\end{figure}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Qui standardise le web?}
|
||
|
\begin{itemize}
|
||
|
\item \textbf{IETF}: Internet Engineering Task Force\\
|
||
|
Définit les protocoles de communication
|
||
|
\item \textbf{W3C}: World Wide Web Consortium\\
|
||
|
Définit les standards du WWW: HTML, CSS, XML, SVG, OWL, ...
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\begin{figure}[!ht]
|
||
|
\centering
|
||
|
\includegraphics[width=10cm]{oneweb}
|
||
|
\caption{Un seul web (2004)}
|
||
|
\label{fig:oneweb}
|
||
|
\end{figure}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Les URI}
|
||
|
Les Uniform Resource Identifier servent à identifier les différentes ressources du WWW. Il y en a deux types principaux:
|
||
|
\begin{itemize}
|
||
|
\item URN: Uniform Resource Name: Basée sur le nom de la ressource
|
||
|
\item URL: Uniform Resource Locator: Basée sur l'adresse d'information de la ressource.
|
||
|
\item Caractéristiques:
|
||
|
\begin{itemize}
|
||
|
\item Universalité: peut être utilisée peu importe le service
|
||
|
\item Unicité: Chaque ressource est identifiable uniquement
|
||
|
\item Extensibilité: Permet d'identifier de nouvelles ressources
|
||
|
\item Fixabilité: Une URI soit être lisible par l'humain et imprimable, pas seulement électronique.
|
||
|
\end{itemize}
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Les époques du web}
|
||
|
\begin{itemize}
|
||
|
\item Web 1.0: Le web statique
|
||
|
\begin{itemize}
|
||
|
\item \href{http://web.archive.org/web/20150401104147/http://www2.warnerbros.com/spacejam/movie/jam.htm}{Space Jam (lien)}
|
||
|
\item \href{https://jayj.dk/grim/}{jayj.dk}
|
||
|
\end{itemize}
|
||
|
\item Web 2.0: Création de contenu et participation
|
||
|
\begin{itemize}
|
||
|
\item \href{http://www.livejournal.com/}{LiveJournal}
|
||
|
\item \href{https://myspace.com/}{MySpace}
|
||
|
\item \href{https://www.facebook.com/}{Facebook}
|
||
|
\end{itemize}
|
||
|
\item Web 3.0: Web sémantique et d'exécution. Données ouvertes, services web et interfaces de programmation (API)
|
||
|
\begin{itemize}
|
||
|
\item \href{http://wiki.dbpedia.org/}{DBPedia}
|
||
|
\item \href{https://www.programmableweb.com/}{ProgrammableWeb}
|
||
|
\end{itemize}
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\section{Web Sémantique}
|
||
|
\label{sec:websem}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Pourquoi un web sémantique?}
|
||
|
Le web actuel a ses limites:
|
||
|
\begin{itemize}
|
||
|
\item Des milliards de documents sur le web, seule une petite partie est indexée par les moteurs de recherche.
|
||
|
\item Le nombre double à tous les 6 mois
|
||
|
\item Il devient difficile de:
|
||
|
\begin{itemize}
|
||
|
\item trouver de l'information pertinente
|
||
|
\item différencier les données et la publicité
|
||
|
\item associer de la crédibilité à une information
|
||
|
\end{itemize}
|
||
|
\item Il y a beaucoup de redondance, de copies et ça rend le web de mois en moins efficace.
|
||
|
\item Un robot ne peut distinguer la signification, le contexte et la pertinence de l'information.
|
||
|
\item Très peu de métadonnées sur la signification des documents et de leurs parties. Toutes les métadonnées doivent être créées par l'auteur.
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Problèmes à résoudre}
|
||
|
Deux types de problèmes abordés par le web sémantique:
|
||
|
\begin{itemize}
|
||
|
\item La recherche d'information: la recherche par mots clés apporte beaucoup de résultats peu pertinents. Besoin d'un système de terminologie formel: les ontologies. Hiérarchie de concepts et langage commun.
|
||
|
\item L'extraction d'information: seul les humains peuvent extraire l'information correctement. Les robots manquent de contexte et de connaissances générales du monde.
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Exemples d'usages potentiels}
|
||
|
\begin{itemize}
|
||
|
\item Recherche contextuelle et personnalisée: Utilise les attributs et les connaissances de celui qui fait la recherche pour éliminer les résultats peu pertinents
|
||
|
\item Planification sous contraintes: On effectue une planfication où on a des contraintes de ressources, budgetaires, ...
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Objectifs du web sémantique}
|
||
|
\begin{itemize}
|
||
|
\item Organisation des connaissances en domaines séparés selon leur signification
|
||
|
\item Outils automatique de maintenance, de correction des incohérences et d'extraction de nouvelles connaissances
|
||
|
\item Remplacer la recherche par mots-clés par la recherche baés sur le contenu par une série de questions et réponses.
|
||
|
\item Recherche orientée vers l'expérience utilisateur
|
||
|
\item Extraction et présentation de connaissances
|
||
|
\item Répondre à des questions à partir du contenus de plusieurs documents
|
||
|
\item Contrôler l'accès à différents niveaux d'information
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\section{Composantes du web sémantique}
|
||
|
\label{sec:compwebsem}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Le gâteau du web sémantique}
|
||
|
\begin{figure}[h!]
|
||
|
\centering
|
||
|
\includegraphics[width=5cm]{Semantic_web_stack}
|
||
|
\caption{Le gâteau du web sémantique}
|
||
|
\label{fig:websemcake}
|
||
|
\end{figure}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Composantes du web sémantique: le XML}
|
||
|
\begin{itemize}
|
||
|
\item XML signifie eXtensible Markup Language.
|
||
|
\item Il sert à stocker et à transporter des données. Il est possible d'inclure des métadonnées via les étiquettes.
|
||
|
\item Il est à la fois lisible par l'humain et par l'ordinateur.
|
||
|
\item Il est donc approprié pour le web sémantique, mais il lui manque justement cette couche sémantique.
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\lstinputlisting[caption=Exemple de document XML, language=XML]{exemple1xml.xml}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{RDF}
|
||
|
\begin{itemize}
|
||
|
\item RDF: Resource Description Framework
|
||
|
\item Les relations entre des ressources identifiées par des URI sont représentées par des triplets (sujet, prédicat, objet) de la forme suivante:\\
|
||
|
<Ressource, Propriété, Valeur>.
|
||
|
\item Le RDF ne contient pas de définition du vocabulaire. Il faut donc définir tous les termes utilisés dans un schéma RDFS.
|
||
|
\item Le RDF Schema permet de définir le vocabulaire en utilisant les propriétés suivantes:\\
|
||
|
Class, Property, Type, subClassOf, Domain, Range.
|
||
|
On voit que c'est très inspiré de la programmation orientée objet.
|
||
|
\end{itemize}
|
||
|
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\lstinputlisting[caption=Exemple de document RDF, language=XML]{exemple1rdf.rdf}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\begin{figure}[!ht]
|
||
|
\centering
|
||
|
\includegraphics[height=7cm]{xml-datatypes}
|
||
|
\caption{Type des données XML}
|
||
|
\label{fig:typexml}
|
||
|
\end{figure}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{OWL: Définir les ontologies}
|
||
|
\begin{itemize}
|
||
|
\item Ontologie: Description de la taxonomie (vocabulaire) et de la structure des connaissances dans un domaine.
|
||
|
\item OWL: Web Ontology Language
|
||
|
\item Basé sur la logique descriptive.
|
||
|
\item Définit des classes et des propriétés à utiliser dans un document RDF. C'est une généralisation de RDFS.
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\lstinputlisting[caption=Exemple de document OWL, language=XML]{exemple1owl.rdf}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{SPARQL}
|
||
|
\begin{itemize}
|
||
|
\item SPARQL: SPARQL Protocol and RDF Query Language
|
||
|
\item Permet de faire des requêtes de type clé-valeurs sur des données qui respectent la spécification RDF
|
||
|
\item Fournit les opérateurs de fusion, de tri et d'aggrégation: JOIN, SORT, AGGREGATE
|
||
|
\item Fournit aussi des opérateurs de traversée de graphes
|
||
|
\item Extension: GeoSPARQL
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\lstinputlisting[caption=Exemple de requête SPARQL, language=SQL]{exemple1.sparql}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\lstinputlisting[caption=Exemple de requête SPARQL appelant un service, language=SQL]{exemple2.sparql}
|
||
|
\end{frame}
|
||
|
|
||
|
\section{Projets du web sémantique}
|
||
|
\label{sec:projets}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Quelques projets du web sémantique}
|
||
|
\begin{figure}[ht!]
|
||
|
\centering
|
||
|
\includegraphics[height=7cm]{lod}
|
||
|
\caption{\href{http://lod-cloud.net/}{Linked Open Data Cloud}}
|
||
|
\label{fig:lodcloud}
|
||
|
\end{figure}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Quelques ressources sur les graphes}
|
||
|
Bases de connaissances:
|
||
|
\begin{itemize}
|
||
|
\item \href{http://dbpedia.org}{DBPedia}
|
||
|
\item \href{http://babelnet.org/}{BabelNet}
|
||
|
\end{itemize}
|
||
|
Ontologies et schémas
|
||
|
\begin{itemize}
|
||
|
\item \href{http://dublincore.org/}{Dublin Core}
|
||
|
\item \href{http://schema.org/}{schema.org}
|
||
|
\end{itemize}
|
||
|
Répertoires
|
||
|
\begin{itemize}
|
||
|
\item \href{https://www.w3.org/2001/sw/sweo/public/UseCases/}{Semantic Web Case Studies and Use Cases}
|
||
|
\item \href{https://datahub.io/}{Datahub}
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\begin{figure}[!ht]
|
||
|
\centering
|
||
|
\includegraphics[width=10cm]{Architecture}
|
||
|
\caption{Construire des applications \href{https://protegewiki.stanford.edu/wiki/File:Architecture.png}{Source})}
|
||
|
\label{fig:lodcloud}
|
||
|
\end{figure}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Logiciels libres pour explorer et développer le web sémantique}
|
||
|
\begin{itemize}
|
||
|
\item Outils d'exploration:
|
||
|
\begin{itemize}
|
||
|
\item \href{https://corese.inria.fr/}{CoReSe}
|
||
|
\item \href{https://github.com/GeoKnow/Facete}{Facete} Logiciel utilisé par \href{http://data.europa.eu/euodp/en/data/}{European Union Open Data Portal}
|
||
|
\item \href{https://gephi.org/}{Gephi}
|
||
|
\item \href{http://osds.openlinksw.com/}{Structured Data Sniffer (Module pour navigateur)}
|
||
|
\end{itemize}
|
||
|
\item Outils de développement:
|
||
|
\begin{itemize}
|
||
|
\item \href{https://www.opensemanticsearch.org/}{Open Semantic Search}
|
||
|
\item \href{http://jena.apache.org/}{Apache Jena}
|
||
|
\item \href{http://protege.stanford.edu/}{Stanford Protégé}
|
||
|
\item \href{http://www.fedora-commons.org/features}{Fedora Commons}
|
||
|
\end{itemize}
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Logiciels libres pour explorer et développer le web sémantique}
|
||
|
\begin{itemize}
|
||
|
\item Bases de données (triple store):
|
||
|
\begin{itemize}
|
||
|
\item \href{http://virtuoso.openlinksw.com/}{OpenLink Virtuoso}
|
||
|
\item \href{http://jena.apache.org/documentation/tdb/index.html}{Jena TDB}
|
||
|
\item \href{https://bitbucket.org/openrdf/sesame}{Sesame (RDF4J)}
|
||
|
\end{itemize}
|
||
|
\item Bibliothèques et langages:
|
||
|
\begin{itemize}
|
||
|
\item \href{http://www.swi-prolog.org}{SWI Prolog}
|
||
|
\item \href{http://robstewart57.github.io/rdf4h/}{RDF 4 Haskell}
|
||
|
\end{itemize}
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Exemples pratiques}
|
||
|
\begin{itemize}
|
||
|
\item \href{http://semanticweb.cs.vu.nl/R/sparql_lop/sparql_lop.html}{Exemple R: Linked Open Piracy}
|
||
|
\item \href{http://linkedscience.org/tools/sparql-package-for-r/tutorial-on-sparql-package-for-r/}{Exemple R: Données spatiales liées}
|
||
|
\item \href{http://www.bradybutterfield.com/musicGenreFDG/}{Music Genre - Force directed graph}
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\end{document}
|