Update on Overleaf.

This commit is contained in:
Jan Philipp Timme 2018-01-02 21:53:36 +00:00 committed by overleaf
parent 579c3a347f
commit dda975cc3e

363
main.tex
View File

@ -12,6 +12,7 @@
\usepackage{verbatim} \usepackage{verbatim}
\usepackage{listings} \usepackage{listings}
\usepackage{url} \usepackage{url}
\usepackage{xcolor}
\usepackage{caption} \usepackage{caption}
\usepackage[autostyle=true,german=quotes]{csquotes} \usepackage[autostyle=true,german=quotes]{csquotes}
@ -54,336 +55,124 @@
{°}{{${^\circ}$}}1 {°}{{${^\circ}$}}1
} }
% Define colors
\definecolor{hlr}{RGB}{255,180,180}
\definecolor{hlg}{RGB}{180,255,180}
\definecolor{hlb}{RGB}{180,180,255}
\mode<presentation> \mode<presentation>
\title{Intelligente Systeme} \title{IPv6}
\subtitle{Ontologieprojekt: RDFS Ontologie } \subtitle{Einführung und Sicherheitsaspekte}
\author{Marcel Felix, Jan Philipp Timme} \author{Jan Philipp Timme}
\date{\today} \date{\today}
\begin{document} \begin{document}
%\tableofcontents[hideallsubsections] \tableofcontents[hideallsubsections]
\section{Einleitung} \section{Einstieg IPv6}
\begin{frame}{Szenario}
\begin{frame}{Neuigkeiten mit IPv6}
\begin{itemize} \begin{itemize}
\item Welt der Spielekonsolen mit Bewertungen \item 128 Bit Adressraum
\item Spielekonsolen mit einigen Attributen beschrieben \item Neu: Link-lokale Adressen
\item Spielekonsolen werden von Organisationen hergestellt \item Multicast anstelle von Broadcast
\item Spielekonsolen haben einen Nachfolger/Vorgänger \item ICMPv6 für Betrieb essentiell
\item Organisationen haben einen CEO \item Konfiguration via SLAAC und DHCPv6
\item \dots \item Router Advertisments
\item Vollwertiges Routing, kein NAT!
\item Paketfragmentierung nur durch den Absender
\end{itemize} \end{itemize}
\end{frame} \end{frame}
\begin{frame}[fragile]{Selbstdefinierte Prädikate} \begin{frame}{Notation und Kurzschreibweise}
\begin{lstlisting} Gegeben: IPv6-Adresse
:foundingYear rdf:type rdf:Property ; \texttt{2001:0db8:2407:08d3:0000:0000:0000:1234} \newline
rdfs:domain foaf:Organization ; \newline
rdfs:range xsd:int . 1) Führende Nullen streichen \newline
\texttt{2001:\colorbox{hlb}{0}db8:2407:\colorbox{hlb}{0}8d3:\colorbox{hlb}{000}0:\colorbox{hlb}{000}0:\colorbox{hlb}{000}0:1234} \newline
:internetEnabled rdf:type rdf:Property ; $\Rightarrow$ \texttt{2001:db8:2407:8d3:0:0:0:1234} \newline
rdfs:domain :GameConsole ; \newline
rdfs:range xsd:boolean . 2) Zusammenhängende Nullsegmente mit \texttt{::} ersetzen
\texttt{2001:db8:2407:8d3:\colorbox{hlb}{0:0:0}:1234} \newline
:consoleName rdf:type rdf:Property ; $\Rightarrow$ \texttt{2001:db8:2407:8d3::1234}
rdfs:domain :GameConsole ;
rdfs:range xsd:string .
\end{lstlisting}
\end{frame} \end{frame}
\begin{frame}[fragile]{Ein eigener Datentyp und mehr \dots} \begin{frame}{Präfix}
\begin{lstlisting} IPv6-Adresse mit angegebener Prefix-Länge: \texttt{2001:db8:2407:8d3::1234/128}
# rdfs:Datatype
:PriceEur rdf:type rdfs:Datatype .
:PriceEur rdfs:label "Preis in Euro"^^xsd:string .
# rdfs:subPropertyOf
:predecessorOfConsole rdfs:subPropertyOf :relatedToConsole .
:successorOfConsole rdfs:subPropertyOf :relatedToConsole .
# rdfs:subClassOf
:GameConsole rdf:type rdfs:Class .
:PortableGameConsole rdf:type rdfs:Class .
:PortableGameConsole rdfs:subClassOf :GameConsole .
\end{lstlisting}
\end{frame} \end{frame}
\subsection{Adressklassen}
\begin{frame}[fragile]{Überblick Daten A-Box (1/2)} \begin{frame}{Adressklassen: Unspezifizierte Adresse\footnote{Siehe RFC 4291, Kapitel 2.5.2.}}
\begin{lstlisting} Aus IPv4 bekannt als \texttt{0.0.0.0/0} \newline
@prefix : <http://example.com/ins_uebung/#> . \newline
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . In IPv6: \texttt{0000:0000:0000:0000:0000:0000:0000:0000} (kurz: \texttt{::}) \newline
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rev: <http://purl.org/stuff/rev#> .
:Nintendo rdf:type foaf:Organization ;
:ceo :Kimishima ;
:foundingYear 1889 ;
foaf:name "Nintendo Co., Ltd."^^xsd:string .
:Kimishima rdf:type foaf:Person ;
foaf:familyName "Kimishima"^^xsd:string ;
foaf:givenName "Tatsumi"^^xsd:string .
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]{Überblick Daten A-Box (2/2)}
\begin{lstlisting}
:Switch rdf:type :PortableGameConsole .
:Switch rev:hasReview :SwitchReviewByJPT .
:Wii rdf:type :GameConsole .
:Wii_u rdf:type :GameConsole ;
:internetEnabled true ;
:consoleName "Wii U"^^xsd:string ;
:numOfSupportedControllers 8 ;
:predecessorOfConsole :Wii ;
:releaseYear 2012 ;
:successorOfConsole :Switch .
\end{lstlisting}
...
\end{frame}
\begin{frame}[fragile]{T-Box (1/2)}
\begin{lstlisting}
@prefix : <http://example.com/ins_uebung/#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rev: <http://purl.org/stuff/rev#> .
# Our own properties
:ceo rdf:type rdf:Property ;
rdfs:domain foaf:Organization ;
rdfs:range foaf:Person .
:foundingYear rdf:type rdf:Property ;
rdfs:domain foaf:Organization ;
rdfs:range xsd:int .
:internetEnabled rdf:type rdf:Property ;
rdfs:domain :GameConsole ;
rdfs:range xsd:boolean .
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]{T-Box (2/2)}
\begin{lstlisting}
:consoleName rdf:type rdf:Property ;
rdfs:domain :GameConsole ;
rdfs:range xsd:string .
:numOfSupportedControllers rdf:type rdf:Property ;
rdfs:domain :GameConsole ;
rdfs:range xsd:string .
:successorOfConsole rdf:type rdf:Property ;
rdfs:domain :GameConsole ;
rdfs:range :GameConsole .
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]{Anwendung von RDFS-Regeln}
Gegeben sei folgende A-Box
\begin{lstlisting}
:Wii_U rdf:type :GameConsole .
:Switch :successorOfConsole :Wii_U .
\end{lstlisting}
mit dieser T-Box
\begin{lstlisting}
:successorOfConsole rdf:type rdf:Property ;
rdfs:domain :GameConsole ;
rdfs:range :GameConsole .
\end{lstlisting}
Anwendung der Regel \texttt{rdfs2}
\begin{lstlisting}
s p o .
p rdfs:domain c . ==> s rdf:type c .
\end{lstlisting}
Ergebnis:
\begin{lstlisting}
:Switch rdf:type :GameConsole .
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]{SPARQL-Anfragen (1/2)}
Wie viele verschiedene Konsolen wurden von Nintendo hergestellt?
\begin{lstlisting}
SELECT COUNT(?console) AS ?numConsoles
WHERE {
?console :madeBy ?organization .
}
GROUP BY ?organization
\end{lstlisting}
Welche Konsolen kamen nach Jahr X raus?
\begin{lstlisting}
SELECT ?console
WHERE {
?console :madeBy :Nintendo .
?console :releaseYear ?releaseYear .
FILTER(?releaseYear > 1997)
}
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]{SPARQL-Anfragen (2/2)}
Einen CEO einer Konsole zuordnen.
\begin{lstlisting}
CONSTRUCT {
?ceo :isRelatedToConsole ?console .
}
WHERE {
?console rdf:type :GameConsole .
?console :madeBy ?org .
?org :ceo ?ceo .
?ceo rdf:type foaf:Person .
}
\end{lstlisting}
Alle Konsolen die mindestens ein Review haben.
\begin{lstlisting}
SELECT DISTINCT ?console
WHERE {
?console rev:hasReview ?anyReview .
}
\end{lstlisting}
\end{frame}
\begin{frame}{Description Logic: T-Box (1/2)}
A PortableGameConsole is a specific type of GameConsole.
\begin{itemize} \begin{itemize}
\item \texttt{PortableGameConsole $\sqsubseteq$ GameConsole} \item Zeigt das Fehlen einer Adresse an
\item \dots oder signalisiert Erreichbarkeit eines Sockets auf allen Adressen eines Geräts
\item Darf nie einem Gerät zugewiesen werden
\item Als Quelladresse für Pakete erlaubt
\begin{itemize}
\item \dots sofern Rechner noch keine IPv6-Adresse besitzt
\item \dots diese dürfen dann nicht geroutet werden
\end{itemize}
\end{itemize} \end{itemize}
\end{frame} \end{frame}
\begin{frame}{Description Logic: T-Box (2/2)} \begin{frame}{Adressklassen: Loopback Adresse\footnote{Siehe RFC 4291, Kapitel 2.5.3.}}
An Organization can have a Person as CEO. Aus IPv4 bekannt als \texttt{127.0.0.1/8} \newline
\newline
\texttt{0000:0000:0000:0000:0000:0000:0000:0001} (kurz: \texttt{::1})
\newline
\begin{itemize} \begin{itemize}
\item \texttt{$\exists$ ceo.$\top$ $\sqsubseteq$ Organization} \item Wie bereits aus IPv4 bekannt
\item \texttt{Organization $\sqsubseteq$ $\forall$ceo.Person}
\end{itemize}
A GameConsole is made by an Organization.
\begin{itemize}
\item \texttt{$\exists$ madeBy.$\top$ $\sqsubseteq$ GameConsole}
\item \texttt{GameConsole $\sqsubseteq$ $\forall$madeBy.Organization}
\end{itemize} \end{itemize}
\end{frame} \end{frame}
\begin{frame}{Description Logic: R-Box (1/2)} \begin{frame}{Adressklassen: Globale Unicast Adresse (GUA)\footnote{Siehe RFC 4291, Kapitel 2.5.4.}}
Analog zu global gerouteter IPv4-Adresse \newline
\newline
\texttt{2001:db8:2407:8d3::1234}
\newline
\begin{itemize} \begin{itemize}
\item \texttt{$\exists$ successorOfConsole.$\top$ $\sqsubseteq$ relatedToConsole} \item Wie bereits aus IPv4 bekannt
\end{itemize} \end{itemize}
\end{frame} \end{frame}
\begin{frame}{Description Logic: R-Box (2/2)} \section{Hauptteil}
\begin{frame}{TODO}
\begin{itemize} \begin{itemize}
\item \texttt{relatedToConsole $\circ$ relatedToConsole $\sqsubseteq$ relatedToConsole} \item TODO
\item \texttt{successorOfConsole $\circ$ successorOfConsole $\sqsubseteq$ successorOfConsole}
\item \texttt{predecessorOfConsole $\circ$ predecessorOfConsole $\sqsubseteq$ predecessorOfConsole}
\end{itemize} \end{itemize}
\end{frame} \end{frame}
\begin{frame}{Description Logic: A-Box} \section{Schluss}
\begin{frame}{TODO}
\begin{itemize} \begin{itemize}
\item \texttt{\{Nintendo\} $\sqsubseteq$ foaf:Organization} \item TODO
\item \texttt{\{Nintendo\} $\sqsubseteq$ $\exists$ :ceo.Kimishima}
\item \texttt{\{Nintendo\} $\sqsubseteq$ $\exists$ :foundingYear.\{1889\}}
\item \texttt{\{Nintendo\} $\sqsubseteq$ $\exists$ :foaf:name.\{Nintendo Co., Ltd.\}}
\item \texttt{\{Wii\_U\} $\sqsubseteq$ foaf:Organization}
\item \texttt{\{Wii\_U\} $\sqsubseteq$ $\exists$ :consoleName.\{Wii U\}}
\item \texttt{\{Wii\_U\} $\sqsubseteq$ $\exists$ :predecessorOfConsole.Wii}
\item \texttt{\{Wii\_U\} $\sqsubseteq$ $\exists$ :successorOfConsole.Switch}
\end{itemize} \end{itemize}
\end{frame} \end{frame}
\begin{frame}{Description Logic: New Concepts} \begin{frame}{}
Boolean concept constructors:
\begin{itemize} \begin{itemize}
\item \texttt{HomeConsole $\equiv$ GameConsole $\sqcap$ $\neg$ PortableConsole} \item
\end{itemize}
Existential restriction:
\begin{itemize}
\item \texttt{NintendoConsole $\sqsubseteq$ $\exists$ madeBy.Nintendo}
\end{itemize}
Universal restriction:
\begin{itemize}
\item \texttt{GameConsole $\sqsubseteq$ $\forall$madeBy.Organization $\wedge$ $\forall$foundingYear.\{ $\geq$1700\}}
\end{itemize}
Number restrictions:
\begin{itemize}
\item \texttt{PartyConsole $\sqsubseteq$ $\leq$1 madeBy.Organization}
\end{itemize}
Reflexivity restriction:
\begin{itemize}
\item \texttt{GameConsole $\sqsubseteq$ $\nexists$ predecessorOfConsole.Self}
\end{itemize}
Nominals:
\begin{itemize}
\item \texttt{HomeConsole $\equiv$ \{Switch\} $\sqcap$ \{Wii\} $\sqcap$ \{Wii U\}}
\end{itemize} \end{itemize}
\end{frame} \end{frame}
\begin{frame}[fragile]{OWL (1/2)} \begin{frame}{}
\begin{lstlisting} \begin{itemize}
:HomeConsole owl:differentFrom :PortableConsole . \item
\end{lstlisting} \end{itemize}
\begin{lstlisting}
:predecessorOfConsole owl:propertyChainAxiom (:predecessorOfConsole :predecessorOfConsole) .
\end{lstlisting}
\begin{lstlisting}
:HomeConsole owl:equivalentClass [
rdf:type owl:Class ;
owl:intersectionOf (
:GameConsole [owl:complementOf :PortableConsole]
)
] .
\end{lstlisting}
\begin{lstlisting}
:NintendoConsole owl:equivalentClass [
rdf:type owl:Restriction ;
owl:onProperty :madeBy ;
owl:someValuesFrom :Nintendo
] .
\end{lstlisting}
\end{frame} \end{frame}
\begin{frame}[fragile]{OWL (2/2)} \begin{frame}{}
\begin{lstlisting} \begin{itemize}
:PartyConsole rdf:equivalentClass [ \item
rdf:type owl:Restriction ; \end{itemize}
owl:minQualifiedCardinality "2"^^xsd:nonNegativeInteger ;
owl:onProperty :numOfSupportedControllers ;
owl:onClass :GameConsole
] .
\end{lstlisting}
\end{frame} \end{frame}
\begin{frame}[fragile]{Jena Rules}
With Jena built-ins
\begin{lstlisting}
[rule1: (?con rdf:type :GameConsole) (?con :predecessorOfConsole ?otherCon)
noValue(?otherCon :successorOfConsole ?con)
-> (?otherCon :successorOfConsole ?con)]
\end{lstlisting}
Removing facts
\begin{lstlisting}
[rule2: (?con :hasPrice ?someValue)
-> remove(?con :hasPrice ?someValue)]
\end{lstlisting}
Insert new facts
\begin{lstlisting}
[rule3: (?con rev:hasReview ?rev) (?rev rev:reviewer ?reviewer)
-> (?reviewer :hasReviewedConsole ?con)]
\end{lstlisting}
Testing with Jena Rule \dots by using the rules in our code.
\end{frame}
% The end. % The end.
\end{document} \end{document}