commit 694b2446ab69c1b9dc27bd864fe4619dbb72c4da Author: François Pelletier Date: Wed May 3 01:17:18 2017 -0400 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..38bfa46 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +*.aux +*.glo +*.idx +*.log +*.toc +*.ist +*.acn +*.acr +*.alg +*.bbl +*.blg +*.dvi +*.glg +*.gls +*.ilg +*.ind +*.lof +*.lot +*.maf +*.mtc +*.mtc1 +*.out +*.synctex.gz + diff --git a/Architecture.png b/Architecture.png new file mode 100644 index 0000000..e4b0f09 Binary files /dev/null and b/Architecture.png differ diff --git a/Semantic_web_stack.png b/Semantic_web_stack.png new file mode 100644 index 0000000..fe63044 Binary files /dev/null and b/Semantic_web_stack.png differ diff --git a/WorldWideWeb_FSF_GNU.png b/WorldWideWeb_FSF_GNU.png new file mode 100644 index 0000000..a5d98e0 Binary files /dev/null and b/WorldWideWeb_FSF_GNU.png differ diff --git a/exemple1.sparql b/exemple1.sparql new file mode 100644 index 0000000..e81ec98 --- /dev/null +++ b/exemple1.sparql @@ -0,0 +1,9 @@ +PREFIX foaf: +SELECT ?name + ?email +WHERE + { + ?person a foaf:Person . + ?person foaf:name ?name . + ?person foaf:mbox ?email . + } diff --git a/exemple1owl.rdf b/exemple1owl.rdf new file mode 100644 index 0000000..e3aae2e --- /dev/null +++ b/exemple1owl.rdf @@ -0,0 +1,18 @@ + + + + + Adresse courriel de la personne + + + + + diff --git a/exemple1rdf.rdf b/exemple1rdf.rdf new file mode 100644 index 0000000..854dfc6 --- /dev/null +++ b/exemple1rdf.rdf @@ -0,0 +1,14 @@ + + + + Pelletier + Francois + 418-440-6904 + + francois@francoispelletier.org + + + \ No newline at end of file diff --git a/exemple1xml.xml b/exemple1xml.xml new file mode 100644 index 0000000..3d2db85 --- /dev/null +++ b/exemple1xml.xml @@ -0,0 +1,11 @@ + + + + Pelletier + Francois + 418-440-6904 + francois@francoispelletier.org + + + + diff --git a/exemple2.sparql b/exemple2.sparql new file mode 100644 index 0000000..b487813 --- /dev/null +++ b/exemple2.sparql @@ -0,0 +1,6 @@ +select * where { + service { + ?p ?y + } + } + \ No newline at end of file diff --git a/lod.png b/lod.png new file mode 100644 index 0000000..e246b90 Binary files /dev/null and b/lod.png differ diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..e88b56d Binary files /dev/null and b/logo.png differ diff --git a/oneweb.png b/oneweb.png new file mode 100644 index 0000000..5818867 Binary files /dev/null and b/oneweb.png differ diff --git a/slides.nav b/slides.nav new file mode 100644 index 0000000..fbe0d67 --- /dev/null +++ b/slides.nav @@ -0,0 +1,76 @@ +\beamer@endinputifotherversion {3.36pt} +\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}} +\headcommand {\beamer@framepages {1}{1}} +\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}} +\headcommand {\beamer@framepages {2}{2}} +\headcommand {\sectionentry {1}{Le World Wide Web}{3}{Le World Wide Web}{0}} +\headcommand {\beamer@sectionpages {1}{2}} +\headcommand {\beamer@subsectionpages {1}{2}} +\headcommand {\slideentry {1}{0}{1}{3/3}{}{0}} +\headcommand {\beamer@framepages {3}{3}} +\headcommand {\slideentry {1}{0}{2}{4/4}{}{0}} +\headcommand {\beamer@framepages {4}{4}} +\headcommand {\slideentry {1}{0}{3}{5/5}{}{0}} +\headcommand {\beamer@framepages {5}{5}} +\headcommand {\slideentry {1}{0}{4}{6/6}{}{0}} +\headcommand {\beamer@framepages {6}{6}} +\headcommand {\slideentry {1}{0}{5}{7/7}{}{0}} +\headcommand {\beamer@framepages {7}{7}} +\headcommand {\slideentry {1}{0}{6}{8/8}{}{0}} +\headcommand {\beamer@framepages {8}{8}} +\headcommand {\sectionentry {2}{Web S\IeC {\'e}mantique}{9}{Web S\IeC {\'e}mantique}{0}} +\headcommand {\beamer@sectionpages {3}{8}} +\headcommand {\beamer@subsectionpages {3}{8}} +\headcommand {\slideentry {2}{0}{1}{9/9}{}{0}} +\headcommand {\beamer@framepages {9}{9}} +\headcommand {\slideentry {2}{0}{2}{10/10}{}{0}} +\headcommand {\beamer@framepages {10}{10}} +\headcommand {\slideentry {2}{0}{3}{11/11}{}{0}} +\headcommand {\beamer@framepages {11}{11}} +\headcommand {\slideentry {2}{0}{4}{12/12}{}{0}} +\headcommand {\beamer@framepages {12}{12}} +\headcommand {\sectionentry {3}{Composantes du web s\IeC {\'e}mantique}{13}{Composantes du web s\IeC {\'e}mantique}{0}} +\headcommand {\beamer@sectionpages {9}{12}} +\headcommand {\beamer@subsectionpages {9}{12}} +\headcommand {\slideentry {3}{0}{1}{13/13}{}{0}} +\headcommand {\beamer@framepages {13}{13}} +\headcommand {\slideentry {3}{0}{2}{14/14}{}{0}} +\headcommand {\beamer@framepages {14}{14}} +\headcommand {\slideentry {3}{0}{3}{15/15}{}{0}} +\headcommand {\beamer@framepages {15}{15}} +\headcommand {\slideentry {3}{0}{4}{16/16}{}{0}} +\headcommand {\beamer@framepages {16}{16}} +\headcommand {\slideentry {3}{0}{5}{17/17}{}{0}} +\headcommand {\beamer@framepages {17}{17}} +\headcommand {\slideentry {3}{0}{6}{18/18}{}{0}} +\headcommand {\beamer@framepages {18}{18}} +\headcommand {\slideentry {3}{0}{7}{19/19}{}{0}} +\headcommand {\beamer@framepages {19}{19}} +\headcommand {\slideentry {3}{0}{8}{20/20}{}{0}} +\headcommand {\beamer@framepages {20}{20}} +\headcommand {\slideentry {3}{0}{9}{21/21}{}{0}} +\headcommand {\beamer@framepages {21}{21}} +\headcommand {\slideentry {3}{0}{10}{22/22}{}{0}} +\headcommand {\beamer@framepages {22}{22}} +\headcommand {\slideentry {3}{0}{11}{23/23}{}{0}} +\headcommand {\beamer@framepages {23}{23}} +\headcommand {\sectionentry {4}{Projets du web s\IeC {\'e}mantique}{24}{Projets du web s\IeC {\'e}mantique}{0}} +\headcommand {\beamer@sectionpages {13}{23}} +\headcommand {\beamer@subsectionpages {13}{23}} +\headcommand {\slideentry {4}{0}{1}{24/24}{}{0}} +\headcommand {\beamer@framepages {24}{24}} +\headcommand {\slideentry {4}{0}{2}{25/25}{}{0}} +\headcommand {\beamer@framepages {25}{25}} +\headcommand {\slideentry {4}{0}{3}{26/26}{}{0}} +\headcommand {\beamer@framepages {26}{26}} +\headcommand {\slideentry {4}{0}{4}{27/27}{}{0}} +\headcommand {\beamer@framepages {27}{27}} +\headcommand {\slideentry {4}{0}{5}{28/28}{}{0}} +\headcommand {\beamer@framepages {28}{28}} +\headcommand {\slideentry {4}{0}{6}{29/29}{}{0}} +\headcommand {\beamer@framepages {29}{29}} +\headcommand {\beamer@partpages {1}{29}} +\headcommand {\beamer@subsectionpages {24}{29}} +\headcommand {\beamer@sectionpages {24}{29}} +\headcommand {\beamer@documentpages {29}} +\headcommand {\def \inserttotalframenumber {29}} diff --git a/slides.pdf b/slides.pdf new file mode 100644 index 0000000..7d6ca5d Binary files /dev/null and b/slides.pdf differ diff --git a/slides.snm b/slides.snm new file mode 100644 index 0000000..a20538b --- /dev/null +++ b/slides.snm @@ -0,0 +1,10 @@ +\beamer@slide {sec:www}{3} +\beamer@slide {fig:www4next}{4} +\beamer@slide {fig:oneweb}{6} +\beamer@slide {sec:websem}{9} +\beamer@slide {sec:compwebsem}{13} +\beamer@slide {fig:websemcake}{13} +\beamer@slide {fig:typexml}{18} +\beamer@slide {sec:projets}{24} +\beamer@slide {fig:lodcloud}{24} +\beamer@slide {fig:lodcloud}{26} diff --git a/slides.tex b/slides.tex new file mode 100644 index 0000000..874f641 --- /dev/null +++ b/slides.tex @@ -0,0 +1,374 @@ +\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 +%% 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:\\ + . + \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} \ No newline at end of file diff --git a/xml-datatypes.png b/xml-datatypes.png new file mode 100644 index 0000000..8438216 Binary files /dev/null and b/xml-datatypes.png differ