Add presentation

Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
This commit is contained in:
Yohann D'ANELLO 2022-01-31 15:17:26 +01:00
parent b1832fc527
commit 2df039f2bd
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
2 changed files with 160 additions and 0 deletions

4
.gitignore vendored
View File

@ -1,4 +1,8 @@
*.aux *.aux
*.log *.log
*.nav
*.nt *.nt
*.out
*.pdf *.pdf
*.snm
*.toc

156
Presentation.tex Normal file
View File

@ -0,0 +1,156 @@
\documentclass[aspectratio=169]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usetheme{metropolis}
\title{Keys in Graphs}
\author{Yohann D'Anello}
\date{January, $31^{\text{st}}$ 2022}
\begin{document}
\begin{frame}
\maketitle
\end{frame}
\begin{frame}{Project goal}
This project aims to find Graph keys, as defined in
\footnote{\url{https://www.researchgate.net/publication/283189709_Keys_for_graphs}}.
A Graph Key describes the relations that an object can have with their keys, and
what relations these involved objects can have.
\end{frame}
\begin{frame}{Graph key example}
\begin{center}
\begin{tikzpicture}[y=3cm]
\node[draw] (0) at (0, 0) {Book};
\node[] (00) at (-3, -1) {x};
\node[draw] (01) at (-1, -1) {Person};
\node[] (02) at (1, -1) {y};
\node[draw] (03) at (3, -1) {Company};
\node[draw] (010) at (-2, -2) {Country};
\node[] (011) at (0, -2) {z};
\node[] (030) at (3, -2) {t};
\draw[->] (0) -- (00) node[midway,above,sloped] {title};
\draw[->] (0) -- (01) node[midway,above,sloped] {author};
\draw[->] (0) -- (02) node[midway,above,sloped] {subtitle};
\draw[->] (0) -- (03) node[midway,above,sloped] {publisher};
\draw[->] (01) -- (010) node[midway,above,sloped] {nationality};
\draw[->] (01) -- (011) node[midway,above,sloped] {last name};
\draw[->] (03) -- (030) node[midway,above,sloped] {identifier};
\end{tikzpicture}
\end{center}
\end{frame}
\begin{frame}{How generate keys?}
To generate these keys, one suggests to find $n$-almost keys using SAKey,
then to explore involved relations that define a domain and a range, and to
explore recursively the related fields.
\begin{itemize}
\item Choose a dataset
\item Use \emph{SAKey} to find $n$-almost keys in the dataset
\item Find extracted relations that define a domain and a range
\item Explore recursively graph keys of discovered related items
\item Concatene these graphs
\end{itemize}
\end{frame}
\begin{frame}{Implementation}
\begin{itemize}
\item Simple script using Python 3.9+
\item Libraries: \emph{beautifulsoup4}, \emph{lxml} (ontology parsing),
\emph{SPARQLWrapper} (for SPARQL queries)
\item Uses the given binary for SAKey
\item Source code: \url{https://gitlab.crans.org/ynerant/graph-keys}
\end{itemize}
\end{frame}
\begin{frame}{Algorithm}
\begin{itemize}
\item Input: class name $c$, threshold $n$, query limit $l$, recursivity limit $r$
\item Query DBPedia to get $l$ first rows of triples that describe the class $c$
\item Use \emph{SAKey} to find $n$-almost keys in the computed dataset of $l$ triples
\item Parse relations and filter those define a range
\item Process recursively on each discovered range with decrementing $r$, until $r$ is equal to $0$
\item Compute all given graphs
\item Display them
\end{itemize}
\end{frame}
\begin{frame}{Usage}
\texttt{./main.py Library 5 -{}-limit 3000 -{}-recursion 3}
\end{frame}
\begin{frame}{Difference with the given binary}
\begin{itemize}
\item Given material: linear
\item Given datasets: concern only one type of data, impossible to explore more with these triples
\item $\implies$ Choice to query DBPedia to get more data
\end{itemize}
\end{frame}
\begin{frame}{Discovered ranges}
\begin{itemize}
\item Example: we discovered that \texttt{[inCemetery, hasSize]} is a key for
\emph{GraveMonument}
\item Relation \texttt{inCemetery} has for domain \texttt{GraveMonument}
and for range \texttt{Cemetery}
\item We can now query data about cemeteries to get larger keys
\end{itemize}
\begin{center}
\begin{tikzpicture}[y=3cm]
\node[draw] (0) at (0, 0) {GraveMonument};
\node[draw] (1) at (-2, -1) {Cemetery};
\node (2) at (2, -1) {x};
\draw[->] (0) -- (1) node[midway,above,sloped] {inCemetery};
\draw[->] (0) -- (2) node[midway,above,sloped] {hasSize};
\end{tikzpicture}
\end{center}
\end{frame}
\begin{frame}{Output example}
\begin{figure}[H]
\centering
\begin{tikzpicture}[x=3cm]
\node[draw] (0) at (0, 0) {Library};
\pause
\node[draw] (0-0) at (1, 0) {Place};
\draw[->] (0) -- (0-0) node[midway,above,sloped] {location};
\pause
\node[draw] (0-0-0) at (2, 0) {City};
\draw[->] (0-0) -- (0-0-0) node[midway,above,sloped] {capital};
\pause
\node[draw] (0-0-0-0) at (3, 0) {Image};
\draw[->] (0-0-0) -- (0-0-0-0) node[midway,above,sloped] {thumbnail};
\end{tikzpicture}
\caption{Sample output of the program}
\end{figure}
\end{frame}
\begin{frame}{Limitations}
\begin{itemize}
\item Only few keys are well-typed (with a domain and/or a range)
\item We only extend minimal $n$-almost keys
\item We never generate minimal graph keys $\implies$ some keys could never be generated
\item Lot of paths
\end{itemize}
\end{frame}
\begin{frame}{Further works}
\begin{itemize}
\item Generate graphs with leaves (easy)
\item Explore triples of the form \texttt{?x ?r ?y} where we specify
the class of \texttt{?y} instead of \texttt{?x}
\item Explore relations that does not define any range (hard)
\item Take into account the \texttt{sameAs} relation
\item Find a way to generate more complex graphs
\end{itemize}
\end{frame}
\end{document}