diff options
author | Camil Staps | 2016-01-14 16:18:13 +0100 |
---|---|---|
committer | Camil Staps | 2016-01-14 16:18:13 +0100 |
commit | 5fc1546759fded0fd8e21a449b6f6b56e488d084 (patch) | |
tree | 75bec8b8d4d4233191433ef20717819e54920b69 | |
parent | Copyright (diff) |
Finish report
-rw-r--r-- | cfg-schema.png | bin | 0 -> 141390 bytes | |||
-rw-r--r-- | ordered-fact-type.png | bin | 0 -> 19330 bytes | |||
-rw-r--r-- | report.tex | 180 |
3 files changed, 145 insertions, 35 deletions
diff --git a/cfg-schema.png b/cfg-schema.png Binary files differnew file mode 100644 index 0000000..041e9d5 --- /dev/null +++ b/cfg-schema.png diff --git a/ordered-fact-type.png b/ordered-fact-type.png Binary files differnew file mode 100644 index 0000000..238065e --- /dev/null +++ b/ordered-fact-type.png @@ -2,7 +2,7 @@ \usepackage[dutch]{babel} \usepackage[hidelinks]{hyperref} -\usepackage[margin=28mm,bottom=32mm]{geometry} +\usepackage[margin=30mm,bottom=36mm]{geometry} \usepackage[utf8]{inputenc} \usepackage{graphicx} @@ -22,6 +22,11 @@ \renewcommand{\figureautorefname}{Figuur}% } +\usepackage{syntax} +\newcommand\nonterm[1]{\langle\mathit{#1}\rangle} +\newcommand\term[1]{\text{`\texttt{#1}'}} +\newcommand\termsf[1]{\text{`\textsf{#1}'}} + \usepackage{amssymb} \let\emptyset\varnothing @@ -68,7 +73,7 @@ } \makeatother -\title{Werkstuk Informatiesystemen} %todo working title +\title{Een evaluatie van informatiesystementheorie} \author{Camil Staps} \begin{document} @@ -77,29 +82,11 @@ \thispagestyle{fancy} \begin{abstract} - %todo + Dit werkstuk is een evaluatie van de theorie beschreven in Advanced information models \cite{aim}. De evaluatie is gedaan aan de hand van de IMDb \cite{imdb}. De omvang van de theorie en van de IMDb is zo groot dat deze evaluatie helaas onvolledig is. In plaats van een compleet beeld te geven, zullen we twee aspecten van de theorie uitlichten met een voorbeeld uit de IMDb, en aan de hand daarvan de theorie evalueren. \end{abstract} -%\section{Simpele typen} -%Laten we allereerst bekijken hoe makkelijk simpele typen werken. -% -%\begin{exmp}[Labels, simpele entiteiten en feiten] -% Een voorbeeld voor deze simpele typen is overal in de IMDb te vinden. Hier bekijken we nieuwsberichten. -% -% We definiëren de volgende verzamelingen: -% -% \begin{itemize} -% \item $\mathcal E \isdef \{\mathsf{Artikel}, \mathsf{Bron}, \mathsf{Film}\}$. -% \item $\mathcal L \isdef \{\mathsf{URL}, \mathsf{Inhoud}, \mathsf{Datum}\}$. -% \item $\mathcal P \isdef \{\mathsf{heeft-inhoud}, \mathsf{hoort-bij}, \mathsf{komt-van}, \mathsf{om}, \mathsf{schreef}, \mathsf{verwijst-naar}, \mathsf{wordt-genoemd-door}, \mathsf{heeft-url}, \mathsf{linkt-naar}, \mathsf{heeft-permalink}, \mathsf{permalink-van}\}$. -% \item $\mathcal F \isdef \{\mathsf{ai}, \mathsf{abd}, \mathsf{af}, \mathsf{bu}, \mathsf{au}\}$ met $\mathsf{ai}\isdef\{\mathsf{heeft-inhoud}, \mathsf{hoort-bij}\}, \mathsf{abd}\isdef\{\mathsf{komt-van},\mathsf{schreef},\mathsf{om}\}, \mathsf{af}\isdef\{\mathsf{verwijst-naar}, \mathsf{wordt-genoemd-door}\}, \mathsf{bu}\isdef\{\mathsf{heeft-url}, \mathsf{linkt-naar}\}, \mathsf{au}\isdef\{\mathsf{heeft-permalink}, \mathsf{permalink-van}\}$. Verder $\Base(\mathsf{heeft-inhoud}) = \Base(\mathsf{komt-van}) = \Base(\mathsf{verwijst-naar}) = \mathsf{Artikel}, \Base(\mathsf{hoort-bij}) = \mathsf{Inhoud}, \Base(\mathsf{om}) = \mathsf{Datum}, \Base(\mathsf{schreef}) = \Base(\mathsf{heeft-url}) = \mathsf{Bron}, \Base(\mathsf{wordt-genoemd-door}) = \mathsf{Film}, \Base(\mathsf{linkt-naar}) = \mathsf{URL}, \Base(\mathsf{heeft-permalink}) = \mathsf{Artikel}, \Base(\mathsf{permalink-van}) = \mathsf{URL}$. -% \end{itemize} -%\end{exmp} -% -%%todo - \section{Sequentietypen, objectificatie en constraints} -Laten we kijken of onze modelleermethode expressief genoeg is om alleen populaties toe te laten waarin de populatie van een entiteit volledig wordt opgedeeld in paarsgewijs disjuncte sequenties. +Het eerste onderdeel wat we zullen bekijken is dat van `gewone' typen. Hierin bekijken we objecttypen, feittypen, objectificaties, sequentietypen (en dus eigenlijk ook powertypen) en labeltypen. \subsection{Een voorbeeldschema} @@ -115,9 +102,7 @@ Een voorbeeld hiervan kunnen we vinden in de structuur van series en afleveringe \item $\mathcal O\isdef \mathcal E \cup \mathcal S \cup \mathcal L \cup \mathcal F$. \end{itemize} -We nemen $\mathcal I\isdef \langle\mathcal P,\mathcal O,\mathcal L,\mathcal E,\mathcal F,\mathcal G,\mathcal S,\mathcal C,\Base,\Elt,\prec,\Spec,\Gen,\mathcal D,\Dom\rangle$ met $\prec=\Spec=\Gen=\emptyset$, $\Elt=\{(\mathsf{Serie},\mathsf{Aflevering})\}$ en $\Dom=\{(\mathsf{Titel},\mathcal A^+),(\mathsf{I},\mathbb N^+)\}$ waar $\mathcal A$ uit letters, cijfers en leestekens bestaat. %todo p. 37 - -Verder definiëren we de verzameling $\mathcal R$ met de volgende constraints: +We nemen $\mathcal I\isdef \langle\mathcal P,\mathcal O,\mathcal L,\mathcal E,\mathcal F,\mathcal G,\mathcal S,\mathcal C,\Base,\Elt,\prec,\Spec,\Gen,\mathcal D,\Dom\rangle$ met $\prec=\Spec=\Gen=\emptyset$, $\Elt=\{(\mathsf{Serie},\mathsf{Aflevering})\}$ en $\Dom=\{(\mathsf{Titel},\mathcal A^+),(\mathsf{I},\mathbb N^+)\}$ waar $\mathcal A$ uit letters, cijfers en leestekens bestaat. Verder definiëren we de verzameling $\mathcal R$ met de volgende constraints: \begin{itemize} \item Totale rol: $\tau_s\isdef\{\in^s\}, \tau_a\isdef\{\in^e\}, \tau_e\isdef\{@^s\}, \tau_i\isdef\{@^i\}, \tau_t\isdef\{\mathsf{van}_s,\mathsf{van}_a\}, \tau_{st}\isdef\{\mathsf{heet}_s\}, \tau_{at}\isdef\{\mathsf{heet}_a\}$. Merk op dat dit strikter is dan de standaard constraints bij een sequentietype. @@ -135,7 +120,7 @@ Dit geeft schema $\Sigma=\langle\mathcal I,\mathcal R\rangle$ in \autoref{fig:se \end{figure} \subsection{Metavragen} -Om de expressiviteit van de wiskundige definities te kunnen evalueren, zullen we een aantal vragen over het model proberen te beantwoorden met behulp van de wiskundige definities. Alhoewel het antwoord op de meeste vragen eenvoudig is in te zien, is het doel hier ze met de formele definities te vinden. Als dit ook kan, dan betekent dit dat we het proces in principe ook kunnen automatiseren in bijvoorbeeld een modelleerapplicatie. +Om de expressiviteit van de wiskundige definities te kunnen evalueren, zullen we een aantal vragen \emph{over} het model proberen te beantwoorden met behulp van de wiskundige definities. Alhoewel het antwoord op de meeste vragen eenvoudig is in te zien, is het doel hier ze met de formele definities te vinden. Als dit ook kan, dan betekent dit dat we het proces in principe ook kunnen automatiseren in bijvoorbeeld een modelleerapplicatie. \subsubsection{Globale objectpopuleerbaarheid} We kunnen bewijzen dat dit schema globaal objectpopuleerbaar is. Dit doen we door een geldige populatie $\Pop$ aan te wijzen die instanties aan ieder objecttype toewijst: @@ -158,7 +143,7 @@ Gezien het schema behoeft het eigenlijk geen argumentatie dat deze populatie de \begin{itemize} \item We weten dat $\Pop\vDash\cstrtot(\tau_s)$, want \begin{align*} \bigcup_{q\in\tau_s}\Pop(\Base(q)) &= \Pop(\Base(\in^s)) = \Pop(\mathsf{Serie}) = \{s_1, s_2\}\\ - &= \{t(\in^s) \mid t \in \{(\in^s:s_1,\in^e:a_3), (\in^s:s_2,\in^e:a_1), (\in^s:s_2,\in^e:a_2)\}\}\\ + &= \{t(\in^s) \mid t \in \{\{\in^s:s_1,\in^e:a_3\}, \{\in^s:s_2,\in^e:a_1\}, \{\in^s:s_2,\in^e:a_2\}\}\}\\ &= \{t(\in^s) \mid t \in \Val{\pi_{\in^s}(\in)}(\Pop)\}\\ &= \Val{\theta_{\in^s}(\pi_{\in^s}(\in))}(\Pop)\\ &= \Val{\theta_{\in^s}(\pi_{\in^s}(\Fact(\in^s)))}(\Pop)\\ @@ -169,17 +154,17 @@ Gezien het schema behoeft het eigenlijk geen argumentatie dat deze populatie de \item Het constraint $\cstrtot(\tau_t)$ verdient een aparte behandeling, aangezien $|\tau_t|>1$. Onze populatie voldoet ook aan dit constraint. Er geldt $\Pop\vDash\cstrtot(\tau_t)$, want \begin{align*} \bigcup_{q\in\tau_t}\Pop(\Base(q)) =&\; \Pop(\Base(\mathsf{van}_s)) \cup \Pop(\Base(\mathsf{van}_a)) = \Pop(\mathsf{Titel})\\ - =&\; \{t(\mathsf{van}_s) \mid t \in \{(\mathsf{van}_s:\textsf{De Fractie},\mathsf{heet}_s:s_1),(\mathsf{van}_s:\textsf{Baantjer},\mathsf{heet}_s:s_2)\}\}\\ - &\; \cup \{t(\mathsf{van}_a) \mid t \in \{(\mathsf{van}_a:\textsf{De Cock en de moord op het bureau},\mathsf{heet}_a:a_1),\\ - &\qquad\qquad (\mathsf{van}_a:\textsf{De Cock en de Reclamemoord},\mathsf{heet}_a:a_2),\\ - &\qquad\qquad (\mathsf{van}_a:\textsf{Gasbellen},\mathsf{heet}_a:a_3)\}\}\\ + =&\; \{t(\mathsf{van}_s) \mid t \in \{\{\mathsf{van}_s:\textsf{De Fractie},\mathsf{heet}_s:s_1\},\{\mathsf{van}_s:\textsf{Baantjer},\mathsf{heet}_s:s_2\}\}\}\\ + &\; \cup \{t(\mathsf{van}_a) \mid t \in \{\{\mathsf{van}_a:\textsf{De Cock en de moord op het bureau},\mathsf{heet}_a:a_1\},\\ + &\qquad\qquad \{\mathsf{van}_a:\textsf{De Cock en de Reclamemoord},\mathsf{heet}_a:a_2\},\\ + &\qquad\qquad \}\mathsf{van}_a:\textsf{Gasbellen},\mathsf{heet}_a:a_3\}\}\}\\ =&\; \{t(\mathsf{van}_s) \mid t\in\Val{\pi_{\mathsf{van}_s}(\mathsf{st})}(\Pop)\} \cup \{t(\mathsf{van}_a) \mid t\in\Val{\pi_{\mathsf{van}_a}(\mathsf{at})}(\Pop)\}\\ =&\; \Val{\theta_{\mathsf{van}_s}(\pi_{\mathsf{van}_s}(\mathsf{st}))}(\Pop) \cup \Val{\theta_{\mathsf{van}_a}(\pi_{\mathsf{van}_a}(\mathsf{at}))}(\Pop)\\ =&\; \Val{\theta_{\mathsf{van}_s}(\pi_{\mathsf{van}_s}(\Fact({\mathsf{van}_s})))}(\Pop) \cup \Val{\theta_{\mathsf{van}_a}(\pi_{\mathsf{van}_a}(\Fact({\mathsf{van}_a})))}(\Pop)\\ =&\; \bigcup_{q\in\tau_t}\Val{\theta_q(\pi_q(\Fact(q)))}(\Pop). \end{align*} - \item $\Pop$ voldoet op triviale wijze aan de uniciteitsconstraints behorend bij de verzamelingen $\upsilon_e$, $\upsilon_s$, $\upsilon_a$, $\upsilon_{ts}$ en $\upsilon_{ta}$. We bekijken hier daarom alleen $\cstruniq(\upsilon_i)$. %todo + \item $\Pop$ voldoet op triviale wijze aan de uniciteitsconstraints behorend bij de verzamelingen $\upsilon_e$, $\upsilon_s$, $\upsilon_a$, $\upsilon_{ts}$ en $\upsilon_{ta}$. We bekijken hier daarom alleen $\cstruniq(\upsilon_i)$. In dit geval dienen we feittype $@$ unnesten. Dit geeft de afgeleide relatie $\xi(\upsilon_i)=\{\in^s, \in^e, @^i\}$ waarbij een uniciteitsconstraint op zowel $\{\in^e\}$ als $\{\in^e,\in^s\}$ ligt. Het eerste constraint correspondeert met $\cstruniq(\upsilon_e)$, het tweede met $\cstruniq(\upsilon_i)$. @@ -191,7 +176,7 @@ Gezien het schema behoeft het eigenlijk geen argumentatie dat deze populatie de We hebben gezien dat $\Pop$ aan alle constraints voldoet. Bovendien is $\Pop$ niet leeg. Hiermee hebben we dus bewezen dat bovenstaand schema globaal objectpopuleerbaar is: $\GlobObjPop(\Sigma)$. Hieruit volgt direct ook $\GlobAtomPop(\Sigma)$, $\LocObjPop(\Sigma)$ en $\LocAtomPop(\Sigma)$. \subsubsection{Zijn er populaties waarbij een bepaald objecttype niet gepopuleerd is?} -Het is voor te stellen dat we in bepaalde gevallen niet willen dat een objecttype niet gepopuleerd wordt. Waar we bij globale objectpopuleerbaarheid kijken of (alle) objecttypes gepopuleerd \emph{kunnen} worden, willen we nu kijken of we bepaalde objecttypes \emph{moeten} populeren. Voor alle duidelijkheid: dit is in feite equivalent met het controleren of het frequentieconstraint $\{1\dots\}$ op dit objecttype overbodig zou zijn. Hierbij laten we de lege populatie buiten beschouwing. +Het is voor te stellen dat we in bepaalde gevallen niet willen dat een objecttype niet gepopuleerd wordt. Waar we bij globale objectpopuleerbaarheid kijken of (alle) objecttypen gepopuleerd \emph{kunnen} worden, willen we nu kijken of we bepaalde objecttypen \emph{moeten} populeren. Voor alle duidelijkheid: dit is in feite equivalent met het controleren of het frequentieconstraint $\{1\dots\}$ op dit objecttype overbodig zou zijn. Hierbij laten we de lege populatie buiten beschouwing. Aangezien we de lege populatie buiten beschouwing laten, moet tenminste één objecttype gepopuleerd zijn. @@ -239,7 +224,6 @@ Wel hadden we op bepaalde punten handige keuzes nodig om het bewijs rond te krij En daarnaast: hoe zouden we moeten herkennen dat een schema \emph{niet} globaal objectpopuleerbaar is? Willen we dit bewijs daadwerkelijk automatiseren, dan kunnen we niet zomaar de hoogstwaarschijnlijk oneindig grote zoekruimte $\POP_{\mathcal I}$ doorzoeken om te kijken of er een populatie is die voldoet aan alle constraints. Bij de twee andere bewijzen spelen soortgelijke problemen. \subsection{Suggesties voor uitbreiding van de theorie} - \subsubsection{Orden de zoekruimte} Dit is niet zozeer een suggestie voor de uitbreiding van de theorie als wel een suggestie voor de automatisering van een bewijs voor globale objectpopuleerbaarheid waar hierboven al op werd gehint. Dezelfde methode zou natuurlijk ook gebruikt kunnen worden voor lokale objectpopuleerbaarheid en dergelijke. @@ -251,8 +235,134 @@ In theorie zou het ook mogelijk zijn om, als we van een populatie $\Pop$ weten d In ieder geval zou het op deze manier mogelijk zijn efficiënter naar mogelijk interessante populaties te zoeken, en bovendien is het op deze manier sneller te bepalen wanneer zo'n populatie niet bestaat (namelijk als er geen onbezochte, niet gesnoeide vertices meer in de graaf zitten). +\clearpage \section{Contextvrije grammatica's} -Het omschrijven van een contextvrije grammatica naar een informatiesysteem is een onderwerp wat nog volop in ontwikkeling is. %todo +Het omschrijven van een contextvrije grammatica naar een informatiesysteem is een onderwerp wat nog volop in ontwikkeling is. Hoewel de relatie met de IMDb wellicht wat vergezocht is, wil ik het toch even aanstippen. + +\subsection{Een voorbeeldschema} +Laten we de contextvrije grammatica $G$ in \autoref{fig:cfg-gram} bekijken. Het gaat hier om de definitie van een cast als een niet leeg lijstje van acteurs. + +\begin{figure}[h] + \centering + \begin{minipage}{21.6em} + \setlength{\grammarparsep}{0pt} + \setlength{\grammarindent}{8.5em} + \begin{grammar} + <Cast> ::= <Acteur> `, ' <Cast> | <Acteur> + + <Acteur> ::= <Voornaam> ` ' <Achternaam> + + <Voornaam> ::= <string> + + <Achternaam> ::= <string> + \end{grammar} + \end{minipage} + \caption{Een contextvrije grammatica} + \label{fig:cfg-gram} +\end{figure} + +Het bijbehorende schema $\Delta(G)$ is te zien in \autoref{fig:cfg-schema}. Hierbij zijn die nonterminals die alleen zijn om te schrijven tot $\nonterm{string}$ gerepresenteerd met labels. De standaardrepresentatie zou bijvoorbeeld vereisen dat $\nonterm{Voornaam}$ een generalisatie is van een geobjectificeerd unair feittype met als basis $\nonterm{string}$, maar dit heeft weinig toegevoegde waarde. + +\begin{figure}[b!] + \centering + \includegraphics[width=\maxwidth{.5\linewidth}]{cfg-schema} + \caption{De informatiestructuur als gegenereerd vanuit onze grammatica. Indien het onleesbaar is: de predicaten zijn $r_{1,c},r_{1,k},r_{1,a},r_{2,v},r_{2,s}$ en $r_{2,a}$. De naam komt telkens overeen met het bijbehorende feittype en de basis.} + \label{fig:cfg-schema} +\end{figure} + +\subsection{Een voorbeeldpopulatie} +Onze grammatica genereert de string $\termsf{Piet Römer, Victor Reinier}$ als volgt: +\begin{align*} + \nonterm{Cast} &\to \nonterm{Acteur} \;\term{, }\; \nonterm{Cast}\\ + &\to \nonterm{Voornaam} \;\term{ }\; \nonterm{Achternaam} \;\term{, }\; \nonterm{Cast}\\ + &\to \nonterm{string} \;\term{ }\; \nonterm{string} \;\term{, }\; \nonterm{Cast}\\ + &\to \termsf{Piet} \;\term{ }\; \termsf{Römer} \;\term{, }\; \nonterm{Cast}\\ + &\to \termsf{Piet} \;\term{ }\; \termsf{Römer} \;\term{, }\; \nonterm{Acteur}\\ + &\to \termsf{Piet} \;\term{ }\; \termsf{Römer} \;\term{, }\; \nonterm{Voornaam} \;\term{ }\; \nonterm{Achternaam}\\ + &\to \termsf{Piet} \;\term{ }\; \termsf{Römer} \;\term{, }\; \nonterm{string} \;\term{ }\; \nonterm{string}\\ + &\to \termsf{Piet} \;\term{ }\; \termsf{Römer} \;\term{, }\; \termsf{Victor} \;\term{ }\; \termsf{Reinier}\\ +\end{align*} + +Met de elementen van deze string kunnen we dus ook ons schema populeren: + +\begin{itemize} + \item $a_1 \isdef \{r_{2,v}:\termsf{Piet}, r_{1,s}:\term{ }, r_{1,a}:\termsf{Römer}\}$ en $a_2 \isdef \{r_{2,v}:\termsf{Victor}, r_{1,s}:\term{ }, r_{1,a}:\termsf{Reinier}\}$. + \item $c_1 \isdef \{r_{1,c}:c_2, r_{1,k}:\term{, }, r_{1,a}:a_1\}$ en $c_2\isdef a_2$. + \item $\Pop(\mathsf{Cast}) = \{c_1,c_2\}$. + \item $\Pop(\mathsf{Acteur}) = \{a_1,a_2\}$. + \item $\Pop(\mathsf{Voornaam}) = \{\termsf{Piet},\termsf{Victor}\}$. + \item $\Pop(\mathsf{Achternaam}) = \{\termsf{Römer},\termsf{Reinier}\}$. + \item $\Pop(\mathsf{Komma}) = \{\term{, }\}$. + \item $\Pop(\mathsf{Spatie}) = \{\term{ }\}$. + \item $\Pop(r_1) = \{c_1\}$. + \item $\Pop(r_2) = \{a_1, a_2\}$. +\end{itemize} + +\subsection{Evaluatie} +Een aantal dingen valt direct op: + +\begin{itemize} + \item Feittypen zijn niet geordend. Hierdoor kan de originele grammatica niet van het informatiesysteem worden gereconstrueerd. Het schema in \autoref{fig:cfg-schema} had evengoed een representatie van de regel $\nonterm{Acteur} ::= \nonterm{Achternaam} \;\term{ }\; \nonterm{Voornaam}$ kunnen bevatten. + + Daar komt nog bij dat als we niet tussen voor- en achternamen zouden differentiëren (we zouden bijvoorbeeld een regel $\nonterm{Acteur} ::= \nonterm{Naam}\;\term{ }\;\nonterm{Naam}$ kunnen hebben), de voorbeeldpopulatie zowel $\termsf{Piet Römer}$ als $\termsf{Römer Piet}$ als acteur had kunnen bevatten, zonder dat het duidelijk was welke van de twee werd bedoeld. Schema's worden op die manier al snel ambigu. + + \item De populatie bevat redundantie. Zo slaan we de populatie van het labeltype $\mathsf{Komma}$ op, terwijl vanaf het begin duidelijk is dat deze populatie altijd precies $\{\term{, }\}$ zal zijn. Dit komt terug in feittype $r_1$, en iets soortgelijks gebeurt voor $\mathsf{Spatie}$ en $r_2$. Het liefst zouden we deze terminals niet opslaan maar in het informatiesysteem inbouwen. +\end{itemize} + +\subsection{Suggesties voor uitbreiding van de theorie} +\subsubsection{Geordende feittypen} +Om het eerstgenoemde probleem hierboven op te lossen zouden we de volgende aanpassing kunnen doorvoeren. Waar een feittype $f$ nu een verzameling predicaten $\{p_1,p_2,\dots,p_n\}$ is, maken we hier nu een rijtje $\mathbb N^+\nrightarrow\mathcal P$ van. De grafische weergave van $\{(1,p_1),(2,p_2),(3,p_3)\}$ is dan als in \autoref{fig:ordered-fact-type}. Verder moet de volgende eigenschap gelden om af te dwingen dat elk predicaat precies één keer wordt gebruikt in één of ander feittype: + +$$\forall_{p\in\mathcal P}\exists!_{f\in\mathcal F}\exists!_{k\in\mathbb N^+}[f(k)=p].$$ + +\begin{figure} + \centering + \includegraphics[width=\maxwidth{.35\linewidth}]{ordered-fact-type} + \caption{De representatie van een geordend feittype $\{(1,p_1),(2,p_2),(3,p_3)\}$. De volgorde van de predicaten in de grafische weergave is irrelevant.} + \label{fig:ordered-fact-type} +\end{figure} + +\subsubsection{Een bijectieve transformatie} +De aanpassing hierboven maakt het bijna helemaal mogelijk van een informatiesysteem een contextvrije grammatica te maken. Het enige wat nog nodig is, is om in het informatiesysteem het startsymbool aan te geven. Dit doen we simpelweg door een extra element $S$ aan $\mathcal I$ toe te voegen. Dit zal hieronder duidelijk worden. + +Deze aanpassing zorgt ervoor dat we van een informatiesysteem op precies één manier een contextvrije grammatica kunnen maken, waardoor de transformatie een bijectie wordt: gegeven $\mathcal I=\langle\mathcal P,\mathcal O,\mathcal L,\mathcal E,\mathcal F,\mathcal G,\mathcal S,\mathcal C, \Base, \Elt, \prec, \Spec, \Gen, \mathcal D, \Dom, S\rangle$ (merk op dat het symbool $S$ hier als startsymbool is toegevoegd) genereren we een contextvrije grammatica $G=\langle N,\Sigma,\Pi,S\rangle$ met: + +\begin{itemize} + \item De verzameling nonterminals $N=\mathcal E$. + \item De verzameling terminals $\Sigma=\mathcal L$. + \item De verzameling productieregels $\Pi$, een relatie van $N$ naar $(N\cup\Sigma)^*$: + $$\Pi = \left\{(e, (p_1,p_2,\dots,p_n)) \mid \exists_{f\in\mathcal F}\left[e \Gen f \land \forall_{1\le k\le|f|}\left[f(k)=p_k\right]\right]\right\}.$$ + In woorden: $e$ produceert $p_1p_2\dots p_n$ precies dan als $e$ een generalisatie is van een feittype $f=\{(1,p_1),(2,p_2),\dots,(n,p_n)\}$. +\end{itemize} + +\subsubsection{Geen overbodige informatie opslaan} +Zoals al eerder gezegd slaan we onnodig veel informatie op wanneer we een informatiesysteem, wat gegenereerd is van een contextvrije grammatica, gaan populeren. Dit komt doordat er labeltypen zijn die altijd door precies één objectinstantie kan worden gepopuleerd. In het voorbeeld hierboven zijn dat de typen $\mathsf{Komma}$ en $\mathsf{Spatie}$. + +Een manier om dit tegen te gaan is door de informatie in deze labeltypen in de bijbehorende feittypen te zetten. Het idee is om elk feittype $f$ een functie $\hat f : \Pop(f) \to (N\cup\Sigma)^*$ mee te geven, de representatiefunctie. Deze functie geeft aan hoe een instantie in de populatie gerepresenteerd kan worden ($\nonterm{Voornaam}\;\term{ }\;\nonterm{Achternaam}$), terwijl de essentie van de instantie wordt bepaald door niet-triviale objecttypen ($\nonterm{Voornaam}$ en $\nonterm{Achternaam}$). In het voorbeeld van $r_2$ hierboven met de instantie $a_1$ zou $\hat f$ er dus zo uit zien: + +$$\hat f(\{r_{2,v}:\termsf{Piet},r_{2,a}:\termsf{Römer}\}) = \termsf{Piet Römer}.$$ + +In het algemeen ($\mid\mid$ is de concatenatieoperator): $$\hat f(\mathsf{pop}) = \mathsf{pop}(r_{2,v}) \mid\mid \term{ } \mid\mid \mathsf{pop}(r_{2,a}).$$ + +Merk op dat het predicaat $r_{2,s}$ niet meer bestaat, omdat we het bijbehorende labeltype hebben verwijderd uit de informatiestructuur. + +Belangrijk is verder dat één feittype meerdere representaties kan hebben. Dit was bijvoorbeeld het geval geweest als de grammatica ook een regel $\nonterm{Acteur} ::= \nonterm{Voornaam}\;\term{:}\;\nonterm{Achternaam}$ had gehad. De niet-triviale feittypen zijn in dit geval namelijk hetzelfde als voor de regel die een spatie tussen de voor- en achternaam zet. + +Hoe we de representatiefunctie opslaan is niet van groot belang. Eén mogelijkheid is om de verzameling $\mathcal F$ te herdefiniëren als een verzameling tupels $(f,\hat f)$. Het is niet handig om een functie $\hat{\mathcal F}$ te definiëren die voor ieder feittype $f$ alle mogelijke representatiefuncties $\hat f$ geeft. Zouden we dat doen, dan weten we -- nadat we het schema hebben gepopuleerd -- niet meer welke representatie bij welke feittypeinstantie hoort. In ons voorbeeld zouden we dan in een populatie niet kunnen differentiëren tussen $\termsf{Piet Römer}$ en $\termsf{Piet:Römer}$. In andere woorden: de representatiefunctie is een essentieel onderdeel van het bijbehorende feittype. + +Indien we deze wijziging doorvoeren, is het niet meer nodig feittypen als rijtjes op te slaan, maar voldoet de originele definitie als een verzameling van predicaten. De informatie die werd opgeslagen in de volgorde van het rijtje wordt nu verwerkt in de representatiefunctie. Het idee om feittypen als rijtjes predicaten te zien staat hierboven nog, omdat het een kleinere wijziging is die makkelijker is in te bouwen in de theorie. Mocht de wijziging in deze paragraaf onvoorziene problemen opleveren, dan raad ik aan om in ieder geval die wijziging door te voeren. + +Dit betekent ook dat de bijectieve transformatie hierboven beschreven moet worden aangepast. In plaats van de volgorde van de predicaten in een feittype moet deze nu de representatiefunctie meenemen. + +\section{Conclusie} +De theorie gepresenteerd in \cite{aim} zit gedegen in elkaar. De formele definities zijn precies genoeg om geautomatiseerd over informatiesystemen te kunnen redeneren. Dit is bijvoorbeeld van belang bij het ontwikkelen van modelleertoepassingen. Alhoewel het raamwerk van definities goed in elkaar zit, mist er wel wat in de hoek van de algoritmiek. Zo bekeken we naar aanleiding van de metavragen over het model van series en afleveringen wat goede keuzes zijn wanneer we een bewijs voor een bepaalde eigenschap van een model geautomatiseerd willen opstellen. We hebben een suggestie gedaan wat betreft de volgorde waarin men kan zoeken naar een populatie die aan eigenschappen als globale objectpopuleerbaarheid voldoet. + +Alhoewel het zeer nuttig is om contextvrije grammatica's naar informatiemodellen te kunnen transformeren (zodat we uiteindelijk bijvoorbeeld natuurlijke tekst in een relationele database kunnen opslaan en geavanceerde zoekqueries kunnen gebruiken op die database), is hier nog wel wat werk aan de winkel. Zo zijn de afgeleide modellen soms ambigu, en is het hierdoor niet mogelijk van een informatiemodel terug te gaan naar een grammatica. Bovendien zijn de populaties van de afgeleide schema's relatief groot doordat zij onnodig veel informatie bevatten. We hebben enkele suggesties gedaan om ambiguïteit te verwijderen en populaties te minimaliseren. + +\begin{thebibliography}{9} + \bibitem{aim} Advanced information models. Arthur ten Hofstede en Patrick van Bommel. Radboud Universiteit Nijmegen, november 2015. + \bibitem{imdb} International Movie Database, \url{http://imdb.com}. +\end{thebibliography} \end{document} |