\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}