\documentclass{f4_beamer} \usepackage{graphicx} \usepackage{float} \usepackage{subfigure} \usepackage{xspace} \usepackage{textcomp} \usepackage{tabularx} \usepackage{booktabs} \usepackage{amsmath} \usepackage{subfigure} \usepackage{here} \usepackage{verbatim} \usepackage{listings} \usepackage{url} \usepackage{caption} \usepackage[autostyle=true,german=quotes]{csquotes} % Suppress numbering captions \captionsetup{labelformat=empty} % Setup für Codeblocks \lstset{ % Optionen breaklines=true, breakatwhitespace=true, breakautoindent=true, frame=single, %framexleftmargin=19pt, inputencoding=utf8, %language=awk, %numbers=left, %numbersep=8pt, showspaces=false, showstringspaces=false, tabsize=1, %xleftmargin=19pt, captionpos=b, % Styling basicstyle=\footnotesize\ttfamily, commentstyle=\footnotesize, keywordstyle=\footnotesize\ttfamily, numberstyle=\footnotesize, stringstyle=\footnotesize\ttfamily, } % Hack für Sonderzeichen in Codeblocks \lstset{literate=% {Ö}{{\"O}}1 {Ä}{{\"A}}1 {Ü}{{\"U}}1 {ß}{{\ss}}1 {ü}{{\"u}}1 {ä}{{\"a}}1 {ö}{{\"o}}1 {°}{{${^\circ}$}}1 } \mode \title{Intelligente Systeme} \subtitle{Ontologieprojekt: RDFS Ontologie } \author{Marcel Felix, Jan Philipp Timme} \date{\today} \begin{document} \begin{frame}{Szenario} \begin{itemize} \item Welt der Spielekonsolen mit Bewertungen \item Spielekonsolen mit einigen Attributen beschrieben \item Spielekonsolen werden von Organisationen hergestellt \item Spielekonsolen haben einen Nachfolger/Vorgänger \item Organisationen haben einen CEO \item \dots \end{itemize} \end{frame} \begin{frame}[fragile]{Selbstdefinierte Prädikate} \begin{lstlisting} :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 . :consoleName rdf:type rdf:Property ; rdfs:domain :GameConsole ; rdfs:range xsd:string . \end{lstlisting} \end{frame} \begin{frame}[fragile]{Ein eigener Datentyp und mehr \dots} \begin{lstlisting} # 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} \begin{frame}[fragile]{Überblick Daten A-Box (1/2)} \begin{lstlisting} @prefix : . @prefix rdf: . @prefix xsd: . @prefix rdfs: . @prefix foaf: . @prefix 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 : . @prefix rdf: . @prefix xsd: . @prefix rdfs: . @prefix foaf: . @prefix 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} % The end. \end{document}