Probdb slides

pull/1/head
Oliver Kennedy 2019-05-01 01:51:31 -04:00
parent a0b90eb833
commit df72083f76
8 changed files with 1421 additions and 3 deletions

View File

@ -8,7 +8,7 @@ end
def data_table(schema, data, params = {})
tablename_style = params.fetch(:tablename_style, { "font-weight" => "bold", "text-decoration" => "underline" })
rownum_style = params.fetch(:rownum_style, { "font-size" => "50%", "font-face" => "Courier, fixed-width", "vertical-align"=> "middle" })
annotation_style = params.fetch(:annotation_style, rownum_style)
annotation_style = params.fetch(:annotation_style, rownum_style.merge("text-align" => :left, "font-size" => "70%"))
separator_style = params.fetch(:separator_style, { "border-right" => "1px solid black" })
num_cols = data.map { |row| row.size if row.is_a? Array }.compact.max
@ -25,10 +25,10 @@ def data_table(schema, data, params = {})
raise "Unknown rowtype: #{row}"
end
end
if params.has_key? :annotations
if params.has_key? :annotations and not params[:annotations].nil?
data = data.zip(params[:annotations]).map do |row, annot|
if annot.nil? then row
else row+[tag("td", ""+annot.to_s, annotation_style)] end
else row+[tag("td", ""+annot.to_s, style: annotation_style)] end
end
num_cols += 1
end

View File

@ -298,6 +298,93 @@ dependencies:
</section>
</section>
<section>
<section>
<p>Does this work? <span class="fragment">... not quite</span></p>
<p class="fragment">Is it a true provenance polynomial?</p>
</section>
<% [0, 1, 2].each do |plug_in_values| %>
<section>
<p>Plug in "F" for $R_1$ (i.e., simulate removing $R_1$ from the input)</p>
<%= data_table(["A","B", "C"],
[
[1, 2, 1],
[1, 2, 2],
[1, 3, 3],
[2, 3, 3],
[2, 1, 4],
[4, 5, 5]
],
annotations:
case plug_in_values
when 0 then [
"$R_1 \\wedge S_1$",
"$R_1 \\wedge S_2$",
"$R_2 \\wedge S_3$",
"$R_3 \\wedge S_3$",
"$T_1$",
"$T_2$"
]
when 1 then [
"$F \\wedge S_1$",
"$F \\wedge S_2$",
"$T \\wedge S_3$",
"$T \\wedge S_3$",
"$T$",
"$T$"
]
when 2 then [
"$F$",
"$F$",
"$T$",
"$T$",
"$T$",
"$T$"
]
end,
name: "$Q_1'$") %>
</section>
<% end %>
<section>
<%= data_table(["A","B","C","$\\phi_1$","$\\phi_2$"],
[
[1, 3, 3, "$R_2$", "$S_3$"],
[2, 3, 3, "$R_3$", "$S_3$"],
[2, 1, 4, "$T_1$", "<code>NULL</code>"],
[4, 5, 5, "$T_2$", "<code>NULL</code>"]
],
name: "$Q_1'$") %>
</section>
<section>
<%= data_table(["A","COUNT"],
[
[1, "<span class='fragment highlight-red' data-fragment-index='2'>1</span>", "$R_2$", "$S_3$"],
[2, 2, "$R_3$", "$S_3$"],
[2, 2, "$T_1$", "<code>NULL</code>"],
[4, 1, "$T_2$", "<code>NULL</code>"]
],
name: "$_A\\gamma_{COUNT}(Q_1')$") %>
<div class="fragment" data-fragment-index='1'>
<p>vs</p>
<%= data_table(["A","COUNT"],
[
[1, "<span class='fragment highlight-red' data-fragment-index='2'>3</span>", "$R_2$", "$S_3$"],
[2, 2, "$R_3$", "$S_3$"],
[2, 2, "$T_1$", "<code>NULL</code>"],
[4, 1, "$T_2$", "<code>NULL</code>"]
],
name: "$_A\\gamma_{COUNT}(Q_1)$") %>
</div>
</section>
<section>
<p>Not quite a provenance polynomial...</p>
<p>...but still correct for lineage queries</p>
<p class="fragment">(and there are other solutions)</p>
</section>
</section>
<section>
<section>
<p><b>Pro:</b> Standardized, relational representation</p>

View File

@ -0,0 +1,379 @@
---
template: templates/cse4562_2019_slides.erb
title: Incomplete and Probabilistic Databases
date: April 26, 2019
textbook: "<a href='https://github.com/UBOdin/mimir/wiki/Concepts-CTables'>PDB Concepts and C-Tables</a>"
dependencies:
- lib/slide_utils.rb
---
<%
require "slide_utils.rb"
%>
<section>
<section>
<img src="graphics/2019-04-31-4or9.png" height="300px" />
</section>
<section>
<img src="graphics/2019-04-31-guacamole.png" class="stretch" />
<attribution><a href="https://www.anishathalye.com/2017/07/25/synthesizing-adversarial-examples/">https://www.anishathalye.com/2017/07/25/synthesizing-adversarial-examples/</a></attribution>
</section>
<section>
<img src="graphics/2019-04-31-catVSdog.jpg" class="stretch" />
<attribution><a href="https://www.pyimagesearch.com/pyimagesearch-gurus/?src=post-deep-learning-libs">Deep Learning Demystified</a></attribution>
</section>
<section>
<h3>What happens when you don't know your data precisely?</h3>
</section>
<section>
<pre><code>
SELECT * FROM Posts WHERE image_class = 'Cat';
</code></pre>
<pre class="fragment"><code>
SELECT COUNT(*) FROM Posts WHERE image_class = 'Cat';
</code></pre>
<pre class="fragment"><code>
SELECT user_id FROM Posts
WHERE image_class = 'Cat'
GROUP BY user_id HAVING COUNT(*) > 10;
</code></pre>
</section>
</section>
<section>
<section>
<h3 class="fragment">Incomplete Databases<br/>↓</h3>
<h3>Probabilistic Databases</h3>
</section>
<section>
<ol>
<li>Representing Incompleteness</li>
<li class="fragment">Querying Incomplete Data</li>
<li class="fragment">Implementing It</li>
</ol>
</section>
<section>
<table><tr><td>
<%= data_table(["Name", "ZipCode"], [["Alice", "10003"], ["Bob","1<span class='fragment highlight-current-red' data-fragment-index='1'>4</span>260"]], name: "$R_1$", rowids: true) %>
</td><td class="fragment" data-fragment-index="3">or</td>
<td class="fragment highlight-current-grey" data-fragment-index="2">
<%= data_table(["Name", "Division"], [["Alice", "10003"], ["Bob","1<span class='fragment highlight-current-red' data-fragment-index='1'>9</span>260"]], name: "$R_2$", rowids: true) %>
</td></tr></table>
</section>
<section>
<p><b>Incomplete Database</b> ($\mathcal D$): A set of <i>possible worlds</i></p>
<p class="fragment"><b>Possible World</b> ($D \in \mathcal D$): One (of many) database instances</p>
<p class="fragment">(Require all possible worlds to have the same schema)</p>
</section>
<section>
<p>What does it mean to run a query on an incomplete database?</p>
<p class="fragment" data-fragment-index="1"><span class="fragment fade-out" data-fragment-index="2">$Q(\mathcal D) = ?$</span></p>
<p class="fragment" data-fragment-index="2">$Q(\mathcal D) = \{\;Q(D)\;|\;D \in \mathcal D \}$</p>
</section>
<section>
<table><tr><td>
<%= data_table(["Name", "ZipCode"], [["Alice", "10003"], ["Bob","14260"]], name: "$R_1$", rowids: true) %>
</td><td>or</td><td>
<%= data_table(["Name", "Division"], [["Alice", "10003"], ["Bob","19260"]], name: "$R_2$", rowids: true) %>
</td></tr></table>
<p class="fragment" style="font-size: 90%">$$Q_1 = \pi_{Name}\big( \sigma_{state = \texttt{'NY'}} (R \bowtie_{zip} ZipLookups) \big)$$</p>
<table class="fragment"><tr>
<td style="font-size: 600%; margin: 0px; padding: 0px; height: 0.5em;">{</td>
<td style="vertical-align: middle;">
<%= data_table(["Name"], [["Alice"], ["Bob"]], name: "$Q(R_1)$", rowids: true) %>
</td><td style="vertical-align: middle; font-weight: bold;">or</td><td style="vertical-align: middle;">
<%= data_table(["Name"], [["Alice"]], name: "$Q(R_2)$", rowids: true) %>
</td>
<td style="font-size: 600%; margin: 0px; padding: 0px; height: 0.5em;">}</td>
</tr></table>
<aside class="notes">
19260 is Phoenixville, PA
</aside>
</section>
<section>
<table><tr><td>
<%= data_table(["Name", "ZipCode"], [["Alice", "10003"], ["Bob","14260"]], name: "$R_1$", rowids: true) %>
</td><td>or</td><td>
<%= data_table(["Name", "Division"], [["Alice", "10003"], ["Bob","19260"]], name: "$R_2$", rowids: true) %>
</td></tr></table>
<p class="fragment" style="font-size: 80%">$$Q_2 = \pi_{Name}\big( \sigma_{region = \texttt{'Northeast'}} (R \bowtie_{zip} ZipLookups) \big)$$</p>
<table class="fragment">
<td style="font-size: 600%; margin: 0px; padding: 0px; height: 0.5em;">{</td>
<td style="vertical-align: middle;">
<%= data_table(["Name"], [["Alice"], ["Bob"]], name: "$Q(R_1)$", rowids: true) %>
</td><td style="vertical-align: middle; font-weight: bold;">or</td><td style="vertical-align: middle;">
<%= data_table(["Name"], [["Alice"], ["Bob"]], name: "$Q(R_2)$", rowids: true) %>
</td>
<td style="font-size: 600%; margin: 0px; padding: 0px; height: 0.5em;">}</td>
</tr></table>
</section>
<section>
<table><tr><td>
<%= data_table(["Name", "ZipCode"], [["Alice", "10003"], ["Bob","14260"]], name: "$R_1$", rowids: true) %>
</td><td>or</td><td>
<%= data_table(["Name", "Division"], [["Alice", "10003"], ["Bob","19260"]], name: "$R_2$", rowids: true) %>
</td></tr></table>
<p style="font-size: 80%">$$Q_2 = \pi_{Name}\big( \sigma_{region = \texttt{'Northeast'}} (R \bowtie_{zip} ZipLookups) \big)$$</p>
<table><tr>
<td style="font-size: 600%; margin: 0px; padding: 0px; height: 0.5em;">{</td>
<td style="vertical-align: middle;">
<%= data_table(["Name"], [["Alice"], ["Bob"]], name: "$Q(R_1)$ or $Q(R_2)$", rowids: true) %>
</td>
<td style="font-size: 600%; margin: 0px; padding: 0px; height: 0.5em;">}</td>
</tr></table>
</section>
<section>
<img src="graphics/2019-04-31-NormalDB.svg" /><br/>
<hr class="fragment" data-fragment-index="1"/>
<svg data-src="graphics/2019-04-31-IncompleteDB.svg" class="fragment" data-fragment-index="1"/>
</section>
</section>
<section>
<section>
<p><b>Challenge:</b> There can be <u>lots</u> of possible worlds.</p>
</section>
<section>
<p><b>Observation: </b> Possibilities for database creation break down into lots of independent choices.</p>
<p class="fragment"><u>Factorize</u> the database.</p>
</section>
<section>
<table><tr><td>
<%= data_table(["Name", "ZipCode"], [["Alice", "10003"], ["Bob","14260"], ["Carol", "13201"]], name: "$R_1$", rowids: true) %>
</td><td>
<%= data_table(["Name", "Division"], [["Alice", "10003"], ["Bob","19260"], ["Carol", "18201"]], name: "$R_2$", rowids: true) %>
</td></tr>
<tr><td>
<%= data_table(["Name", "ZipCode"], [["Alice", "10003"], ["Bob","14260"], ["Carol", "13201"]], name: "$R_3$", rowids: true) %>
</td><td>
<%= data_table(["Name", "Division"], [["Alice", "10003"], ["Bob","19260"], ["Carol", "18201"]], name: "$R_4$", rowids: true) %>
</td></tr></table>
<p class="fragment">Alice appears in both databases. <br/>The only differences are Bob and Carol's zip codes.</p>
</section>
<section>
<h3>List Out Choices</h3>
<ul>
<li>$\texttt{bob}$<span class="fragment" data-fragment-index="1">$ \in \{ 4, 9 \}$</span> (Bob's zip code digit)</li>
<li>$\texttt{carol}$<span class="fragment" data-fragment-index="1">$ \in \{ 3, 8 \}$</span> (Carol's zip code digit)</li>
</ul>
</section>
<% [false, true].each do |with_annotations| %>
<section>
<%= data_table(
["Name", "ZipCode"],
[ ["Alice", "10003"],
["Bob","14260"],
["Bob","14290"],
["Carol","13201"],
["Carol","18201"]
],
name: "$\\mathcal R$",
rowids: true,
annotations: if with_annotations then [
"always",
"if $\\texttt{bob} = 4$",
"if $\\texttt{bob} = 9$",
"if $\\texttt{carol} = 3$",
"if $\\texttt{carol} = 8$"
] else nil end
) %>
<div class="fragment">
<div style="font-size: 200%">+</div>
<p>$\big[\;\texttt{bob} \in \{4, 9\},\; \texttt{carol} \in \{3, 8\}\;\big]$</p>
</div>
</section>
<% end %>
<section>
<%= data_table(
["Name", "ZipCode"],
[ ["Alice", "10003"],
["Bob","14260"],
["Bob","14290"],
["Carol","13201"],
["Carol","18201"]
],
name: "$\\mathcal R$",
rowids: true,
annotations: [
"a",
"b",
"c",
"d",
"e"
]
) %>
<div style="font-size: 200%">+</div>
<p>Pick one of each: $\big[\;\{a\},\; \{b, c\},\; \{d, e\}\;\big]$</p>
<p>Set those variables to $T$ and all others to $F$</p>
</section>
<section>
<p>$R_1 \equiv \big[a \rightarrow T, b \rightarrow T, d \rightarrow T, * \rightarrow F\big]$</p>
<%= data_table(
["Name", "ZipCode"],
[ ["Alice", "10003"],
["Bob","14260"],
["Bob","14290"],
["Carol","13201"],
["Carol","18201"]
],
name: "$\\mathcal R$",
rowids: true,
annotations: [
"T (a)",
"T (b)",
"F (c)",
"T (d)",
"F (e)"
]
) %>
</section>
<section>
<p>Use provenance as before...</p>
<p class="fragment">... but what about aggregates?</p>
</section>
<section>
<pre><code>
SELECT COUNT(*)
FROM R NATURAL JOIN ZipCodeLookup
WHERE State = 'NY'
</code></pre>
<p style="font-size: 70%" class="fragment">
$$= \begin{cases}
1 & \textbf{if } \texttt{bob} = 9 \wedge \texttt{carol} = 8\\
2 & \textbf{if } \texttt{bob} = 4 \wedge \texttt{carol} = 8 \\&\; \vee\; \texttt{bob} = 9 \wedge \texttt{carol} = 3\\
3 & \textbf{if } \texttt{bob} = 4 \wedge \texttt{carol} = 3
\end{cases}$$</p>
<p class="fragment"><b>Problem: </b> A combinatorial explosion of possibilities</p>
</section>
<section>
<p><b>Idea: </b> Simplify the problem</p>
<ol>
<li class="fragment">Is a particular tuple <i>Possible</i>?</li>
<li class="fragment">Is a particular tuple <i>Certain</i>?</li>
</ol>
</section>
<section>
<dl>
<div class="fragment">
<dt>Certain Tuple</dt>
<dd>A tuple that appears in all possible worlds</dd>
<dd class="fragment">$\forall D \in \mathcal D : t \in D$</dd>
</div>
<div class="fragment">
<dt>Possible Tuple</dt>
<dd>A tuple that appears in at least one possible world</dd>
<dd class="fragment">$\exists D \in \mathcal D : t \in D$</dd>
</div>
</dl>
</section>
<section>
<h3>Non-aggregate queries</h3>
<dl>
<dt>Is a tuple Certain?</dt>
<dd class="fragment">Is the provenance polynomial a tautology?</dd>
<dt>Is a tuple Possible?</dt>
<dd class="fragment">Is the provenance polynomial a contradiction?</dd>
</dl>
<p class="fragment">Pick your favorite SAT solver, plug in and go</p>
</section>
<section>
<h3>Aggregate queries</h3>
<p style="margin-top: 50px; margin-bottom: 50px;">
As before, factorize the possible outcomes
</p>
<p class="fragment">
$$1 + \{\;1\;\textbf{if}\;\texttt{bob} = 4\;\} + \{\;1\;\textbf{if}\;\texttt{carol} = 3\;\}$$
</p>
<p style="margin-top: 50px;" class="fragment">
Not bigger than the aggregate input...
</p>
<p class="fragment">
...but at least it only reduces to bin-packing <br/>(or a similarly NP problem.)
</p>
</section>
<section>
<p>In short, incomplete databases are limited, but have some uses.</p>
<p class="fragment">What about probabilities?</p>
</section>
</section>
<section>
<section>
<p><b>Idea: </b> Make $\texttt{bob}$ and $\texttt{carol}$ random variables.</p>
</section>
<section>
<p>$$\texttt{bob} = \begin{cases} 4 & p = 0.8 \\ 9 & p = 0.2\end{cases}$$</p>
<p>$$\texttt{carol} = \begin{cases} 3 & p = 0.4 \\ 8 & p = 0.6\end{cases}$$</p>
</section>
<section>
<p style="font-size: 70%">
$$Q(\mathcal D) = \begin{cases}
1 & \textbf{if } \texttt{bob} = 9 \wedge \texttt{carol} = 8\\
2 & \textbf{if } \texttt{bob} = 4 \wedge \texttt{carol} = 8 \\&\; \vee\; \texttt{bob} = 9 \wedge \texttt{carol} = 3\\
3 & \textbf{if } \texttt{bob} = 4 \wedge \texttt{carol} = 3
\end{cases}$$</p>
<p style="font-size: 90%" class="fragment">
$$ = \begin{cases}
1 & p = 0.2 \times 0.6\\
2 & p = 0.8 \times 0.6 + 0.2 \times 0.4\\
3 & p = 0.8 \times 0.4 \end{cases}$$
</p>
<p class="fragment">
$$ = \begin{cases}
1 & p = 0.12\\
2 & p = 0.56\\
3 & p = 0.32\end{cases}$$
</p>
</section>
<section>
<p>
$$Q(\mathcal D) = \begin{cases}
1 & p = 0.12\\
2 & p = 0.56\\
3 & p = 0.32\end{cases}$$
</p>
<p class="fragment" style="margin-top: 50px;">$E\left[Q(\mathcal D)\right] = 0.12+1.12+0.96 = 2.20$</p>
<p class="fragment" style="margin-top: 50px;">$P\left[Q(\mathcal D) \geq 2\right] = 0.56+0.32 = 0.88$</p>
</section>
<section>
<p>In general, computing probabilities exactly is <code>#P</code></p>
<p style="margin-top: 50px;" class="fragment">... so we approximate</p>
</section>
<section>
<p><b>Idea 1</b>: Sample. Pick 10 random possible worlds and compute results for each.</p>
</section>
</section>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@ -0,0 +1,691 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="209.90529mm"
height="47.977795mm"
viewBox="0 0 209.90529 47.977795"
version="1.1"
id="svg2281"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="2019-04-31-IncompleteDB.svg">
<defs
id="defs2275" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="433.54927"
inkscape:cy="-8.759925"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1043"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata2278">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-0.12473969,-12.963488)">
<g
id="g5016">
<path
inkscape:connector-curvature="0"
id="path338"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 3.478641,47.077117 v -17.78001 c 0,-1.22682 4.9784,-2.2225 11.1125,-2.2225 6.1341,0 11.1125,0.99568 11.1125,2.2225 v 17.78001 c 0,1.22682 -4.9784,2.2225 -11.1125,2.2225 -6.1341,0 -11.1125,-0.99568 -11.1125,-2.2225" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g340">
<path
inkscape:connector-curvature="0"
id="path342"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 36.5,231.7 v -50.4 c -0.5,-3.4776 13.612,-6.3 31,-6.3 17.388,0 31.5,2.8224 32,6.3 v 50.4 C 99,235.1776 84.888,238 67.5,238 50.112,238 36,235.1776 36,231.7 m 0,-50.4 c 0,3.4776 14.112,6.3 31.5,6.3 17.388,0 31.5,-2.8224 31.5,-6.3" />
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,14.591141,38.187107)"
id="g344">
<text
id="text348"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-13.67578,0.15)">
<tspan
id="tspan346"
sodipodi:role="line"
y="0"
x="0 8.0039997 14.6784 20.6784 27.3528">Base</tspan>
</text>
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,14.591141,38.187107)"
id="g350">
<text
id="text354"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-12.67383,14.15)">
<tspan
id="tspan352"
sodipodi:role="line"
y="0"
x="0 8.6664 15.3408 18.679199">Data</tspan>
</text>
</g>
</g>
<g
id="g5005"
class="fragment"
data-fragment-index="3">
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g24">
<path
inkscape:connector-curvature="0"
id="path26"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 479.8963,207.3686 29.3634,-3.0031" />
</g>
<path
inkscape:connector-curvature="0"
id="path28"
style="fill:#181818;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 173.80321,37.089547 -3.49829,-0.91884 0.25841,2.5268 z" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g30">
<path
inkscape:connector-curvature="0"
id="path32"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 518.8098,203.3888 -9.9164,-2.6046 0.7325,7.1626 z" />
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g34">
<path
inkscape:connector-curvature="0"
id="path36"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 472.9897,201.1892 36.1263,-1.1696" />
</g>
<path
inkscape:connector-curvature="0"
id="path38"
style="fill:#181818;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 173.76835,35.791397 -3.426,-1.15976 0.0822,2.53866 z" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g40">
<path
inkscape:connector-curvature="0"
id="path42"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 518.711,199.709 -9.7115,-3.2875 0.233,7.1962 z" />
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g44">
<path
inkscape:connector-curvature="0"
id="path46"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 465.9906,194.748 43.1239,1.3292" />
</g>
<path
inkscape:connector-curvature="0"
id="path48"
style="fill:#181818;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 173.768,34.614497 -3.34596,-1.37372 -0.0782,2.5388 z" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g50">
<path
inkscape:connector-curvature="0"
id="path52"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 518.71,196.3729 -9.4846,-3.894 -0.2218,7.1966 z" />
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g54">
<path
inkscape:connector-curvature="0"
id="path56"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 458.9229,188.0667 50.296,4.4379" />
</g>
<path
inkscape:connector-curvature="0"
id="path58"
style="fill:#181818;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 173.79329,33.547517 -3.26192,-1.56277 -0.22324,2.53019 z" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g60">
<path
inkscape:connector-curvature="0"
id="path62"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 518.7817,193.3484 -9.2464,-4.4299 -0.6328,7.1722 z" />
</g>
<path
inkscape:connector-curvature="0"
id="path138"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 180.16739,19.313497 h 24.4475 c 2.89179,0 5.23875,7.112 5.23875,15.875 0,8.763 -2.34696,15.875 -5.23875,15.875 h -24.4475 c -2.89179,0 -5.23875,-7.112 -5.23875,-15.875 0,-8.763 2.34696,-15.875 5.23875,-15.875" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g140">
<path
inkscape:connector-curvature="0"
id="path142"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 536.85,153.5 h 69.3 C 614.3472,153 621,173.16 621,198 c 0,24.84 -6.6528,45 -14.85,45.5 h -69.3 C 528.6528,243 522,222.84 522,198 c 0,-24.84 6.6528,-45 14.85,-45" />
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,192.39114,35.188497)"
id="g144">
<text
id="text148"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-33.02051,-17)">
<tspan
id="tspan146"
sodipodi:role="line"
y="0"
x="0 8.0039997 14.004 20.6784 27.3528 33.352798 36.686401 43.360802 46.694401 49.360802 56.035198 62.709599">Expectation,</tspan>
</text>
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,192.39114,35.188497)"
id="g150">
<text
id="text154"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-20.90039,-3)">
<tspan
id="tspan152"
sodipodi:role="line"
y="0"
x="0 8.0039997 11.3376 18.011999 26.6784 33.352798 38.468399">StdDev,</tspan>
</text>
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,192.39114,35.188497)"
id="g156">
<text
id="text160"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-29.00684,11)">
<tspan
id="tspan158"
sodipodi:role="line"
y="0"
x="0 8.6664 11.3328 17.3328 20.666401 27.340799 34.015202 38.0112 44.6856 54.681599">Histogram,</tspan>
</text>
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,192.39114,35.188497)"
id="g162">
<text
id="text166"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-14.00391,25)">
<tspan
id="tspan164"
sodipodi:role="line"
y="0"
x="0 6.6743999 10.008 16.007999">etc…</tspan>
</text>
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,166.0651,26.898217)"
id="g266">
<text
id="text270"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-22.11,4)">
<tspan
id="tspan268"
sodipodi:role="line"
y="0"
x="0 7.776 14.448 20.892 23.556 29.556 35.556 38.220001">Analysis</tspan>
</text>
</g>
</g>
<g
id="g4965"
class="fragment"
data-fragment-index="2">
<path
inkscape:connector-curvature="0"
id="path168"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 128.41489,19.313497 h 20.0025 c 2.36601,0 4.28625,4.9784 4.28625,11.1125 0,6.1341 -1.92024,11.1125 -4.28625,11.1125 h -20.0025 c -2.36601,0 -4.28625,-4.9784 -4.28625,-11.1125 0,-6.1341 1.92024,-11.1125 4.28625,-11.1125" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g170">
<path
inkscape:connector-curvature="0"
id="path172"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 390.15,153.5 h 56.7 c 6.7068,-0.5 12.15,13.612 12.15,31 0,17.388 -5.4432,31.5 -12.15,32 h -56.7 C 383.4432,216 378,201.888 378,184.5 378,167.112 383.4432,153 390.15,153" />
</g>
<path
inkscape:connector-curvature="0"
id="path174"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 130.88433,22.488497 h 20.0025 c 2.36601,0 4.28625,4.9784 4.28625,11.1125 0,6.1341 -1.92024,11.1125 -4.28625,11.1125 h -20.0025 c -2.36601,0 -4.28625,-4.9784 -4.28625,-11.1125 0,-6.1341 1.92024,-11.1125 4.28625,-11.1125" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g176">
<path
inkscape:connector-curvature="0"
id="path178"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 397.15,162.5 h 56.7 c 6.7068,-0.5 12.15,13.612 12.15,31 0,17.388 -5.4432,31.5 -12.15,32 h -56.7 C 390.4432,225 385,210.888 385,193.5 385,176.112 390.4432,162 397.15,162" />
</g>
<path
inkscape:connector-curvature="0"
id="path180"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 133.35378,25.663497 h 20.0025 c 2.36601,0 4.28625,4.9784 4.28625,11.1125 0,6.1341 -1.92024,11.1125 -4.28625,11.1125 h -20.0025 c -2.36601,0 -4.28625,-4.9784 -4.28625,-11.1125 0,-6.1341 1.92024,-11.1125 4.28625,-11.1125" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g182">
<path
inkscape:connector-curvature="0"
id="path184"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 404.15,171.5 h 56.7 c 6.7068,-0.5 12.15,13.612 12.15,31 0,17.388 -5.4432,31.5 -12.15,32 h -56.7 C 397.4432,234 392,219.888 392,202.5 392,185.112 397.4432,171 404.15,171" />
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g186">
<path
inkscape:connector-curvature="0"
id="path188"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 279,185 h 86.1" />
</g>
<path
inkscape:connector-curvature="0"
id="path190"
style="fill:#181818;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 122.96447,30.425997 -3.38667,-1.27 v 2.54 z" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g192">
<path
inkscape:connector-curvature="0"
id="path194"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 374.7,184.5 -9.6,-3.6 v 7.2 z" />
</g>
<path
inkscape:connector-curvature="0"
id="path196"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 135.82322,28.838497 h 20.0025 c 2.36601,0 4.28625,4.9784 4.28625,11.1125 0,6.1341 -1.92024,11.1125 -4.28625,11.1125 h -20.0025 c -2.36601,0 -4.28625,-4.9784 -4.28625,-11.1125 0,-6.1341 1.92024,-11.1125 4.28625,-11.1125" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g198">
<path
inkscape:connector-curvature="0"
id="path200"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 411.15,180.5 h 56.7 c 6.7068,-0.5 12.15,13.612 12.15,31 0,17.388 -5.4432,31.5 -12.15,32 h -56.7 C 404.4432,243 399,228.888 399,211.5 399,194.112 404.4432,180 411.15,180" />
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,145.82447,39.951007)"
id="g202">
<text
id="text206"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-26.6748,-10)">
<tspan
id="tspan204"
sodipodi:role="line"
y="0"
x="0 3.9960001 12 18.6744 24.6744 30.6744 33.340801 40.015202 42.681599 49.355999">(Possible)</tspan>
</text>
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,145.82447,39.951007)"
id="g208">
<text
id="text212"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-16.33887,4)">
<tspan
id="tspan210"
sodipodi:role="line"
y="0"
x="0 9.3336 16.007999 22.6824 26.6784 32.678398">Query</tspan>
</text>
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,145.82447,39.951007)"
id="g214">
<text
id="text218"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-20.00684,18)">
<tspan
id="tspan216"
sodipodi:role="line"
y="0"
x="0 8.6664 15.3408 21.340799 28.0152 30.681601 34.015202">Results</tspan>
</text>
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,110.01753,26.369057)"
id="g254">
<text
id="text258"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-19.726,6)">
<tspan
id="tspan256"
sodipodi:role="line"
y="0"
x="0 9.1199999 15.792 22.236 26.232">Query</tspan>
</text>
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,110.01753,26.369057)"
id="g260">
<text
id="text264"
style="font-variant:normal;font-weight:normal;font-size:10px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(12.506,1)">
<tspan
id="tspan262"
y="0"
x="0">N</tspan>
</text>
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g272">
<path
inkscape:connector-curvature="0"
id="path274"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 300,212 h 86.1" />
</g>
<path
inkscape:connector-curvature="0"
id="path276"
style="fill:#181818;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 130.3728,39.950997 -3.38666,-1.27 v 2.54 z" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g278">
<path
inkscape:connector-curvature="0"
id="path280"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 395.7,211.5 -9.6,-3.6 v 7.2 z" />
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g282">
<path
inkscape:connector-curvature="0"
id="path284"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 293,203 h 86.1" />
</g>
<path
inkscape:connector-curvature="0"
id="path286"
style="fill:#181818;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 127.90336,36.775997 -3.38667,-1.27 v 2.54 z" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g288">
<path
inkscape:connector-curvature="0"
id="path290"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 388.7,202.5 -9.6,-3.6 v 7.2 z" />
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g292">
<path
inkscape:connector-curvature="0"
id="path294"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 286,194 h 86.1" />
</g>
<path
inkscape:connector-curvature="0"
id="path296"
style="fill:#181818;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 125.43391,33.600997 -3.38666,-1.27 v 2.54 z" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g298">
<path
inkscape:connector-curvature="0"
id="path300"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 381.7,193.5 -9.6,-3.6 v 7.2 z" />
</g>
</g>
<g
id="g4916"
class="fragment"
data-fragment-index="1">
<path
inkscape:connector-curvature="0"
id="path64"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 44.753641,16.138497 h 53.975 v 44.45 h -53.975 z" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g66">
<path
inkscape:connector-curvature="0"
id="path68"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 153.5,144.5 h 153 v 126 h -153 z" />
</g>
<path
inkscape:connector-curvature="0"
id="path88"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 54.119891,19.313497 h 28.8925 c 3.41757,0 6.19125,4.9784 6.19125,11.1125 0,6.1341 -2.77368,11.1125 -6.19125,11.1125 h -28.8925 c -3.41757,0 -6.19125,-4.9784 -6.19125,-11.1125 0,-6.1341 2.77368,-11.1125 6.19125,-11.1125" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g90">
<path
inkscape:connector-curvature="0"
id="path92"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 179.55,153.5 h 81.9 c 9.6876,-0.5 17.55,13.612 17.55,31 0,17.388 -7.8624,31.5 -17.55,32 h -81.9 C 169.8624,216 162,201.888 162,184.5 162,167.112 169.8624,153 179.55,153" />
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,90.967531,56.884337)"
id="g94">
<text
id="text98"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-16.782,4)">
<tspan
id="tspan96"
sodipodi:role="line"
y="0"
x="0 10.452 17.34 24.455999 30.9">Model</tspan>
</text>
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g110">
<path
inkscape:connector-curvature="0"
id="path112"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 99,206.5972 41.1001,0.1269" />
</g>
<path
inkscape:connector-curvature="0"
id="path114"
style="fill:#181818;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 43.589471,38.276607 -3.38271,-1.28044 -0.008,2.54 z" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g116">
<path
inkscape:connector-curvature="0"
id="path118"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 149.7,206.7537 -9.5888,-3.6296 -0.0222,7.2 z" />
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,34.523081,32.366277)"
id="g236">
<text
id="text240"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-19.116,-3)">
<tspan
id="tspan238"
sodipodi:role="line"
y="0"
x="0 10.452 17.34 24.455999 30.9 33.563999">Model-</tspan>
</text>
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,34.523081,32.366277)"
id="g242">
<text
id="text246"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-21.228,11)">
<tspan
id="tspan244"
sodipodi:role="line"
y="0"
x="0 7.1160002 13.788 16.452 19.115999 26.232 28.896 35.568001">building</tspan>
</text>
</g>
<path
inkscape:connector-curvature="0"
id="path302"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 56.589331,22.488497 h 28.8925 c 3.41757,0 6.19125,4.9784 6.19125,11.1125 0,6.1341 -2.77368,11.1125 -6.19125,11.1125 h -28.8925 c -3.41757,0 -6.19125,-4.9784 -6.19125,-11.1125 0,-6.1341 2.77368,-11.1125 6.19125,-11.1125" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g304">
<path
inkscape:connector-curvature="0"
id="path306"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 186.55,162.5 h 81.9 c 9.6876,-0.5 17.55,13.612 17.55,31 0,17.388 -7.8624,31.5 -17.55,32 h -81.9 C 176.8624,225 169,210.888 169,193.5 169,176.112 176.8624,162 186.55,162" />
</g>
<path
inkscape:connector-curvature="0"
id="path308"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 59.058781,25.663497 h 28.8925 c 3.41757,0 6.19125,4.9784 6.19125,11.1125 0,6.1341 -2.77368,11.1125 -6.19125,11.1125 h -28.8925 c -3.41757,0 -6.19125,-4.9784 -6.19125,-11.1125 0,-6.1341 2.77368,-11.1125 6.19125,-11.1125" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g310">
<path
inkscape:connector-curvature="0"
id="path312"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 193.55,171.5 h 81.9 c 9.6876,-0.5 17.55,13.612 17.55,31 0,17.388 -7.8624,31.5 -17.55,32 h -81.9 C 183.8624,234 176,219.888 176,202.5 176,185.112 183.8624,171 193.55,171" />
</g>
<path
inkscape:connector-curvature="0"
id="path314"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 61.528221,28.838497 h 28.8925 c 3.41757,0 6.19125,4.9784 6.19125,11.1125 0,6.1341 -2.77368,11.1125 -6.19125,11.1125 h -28.8925 c -3.41757,0 -6.19125,-4.9784 -6.19125,-11.1125 0,-6.1341 2.77368,-11.1125 6.19125,-11.1125" />
<g
transform="matrix(0.35277777,0,0,0.35277777,-9.221359,-34.661493)"
id="g316">
<path
inkscape:connector-curvature="0"
id="path318"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
d="m 200.55,180.5 h 81.9 c 9.6876,-0.5 17.55,13.612 17.55,31 0,17.388 -7.8624,31.5 -17.55,32 h -81.9 C 190.8624,243 183,228.888 183,211.5 183,194.112 190.8624,180 200.55,180" />
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,75.974471,39.951007)"
id="g320">
<text
id="text324"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-32.01562,-10)">
<tspan
id="tspan322"
sodipodi:role="line"
y="0"
x="0 3.9960001 11.3436 14.6772 22.6812 29.3556 35.355598 41.355598 44.021999 50.6964 53.362801 60.037201">(A Possible)</tspan>
</text>
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,75.974471,39.951007)"
id="g326">
<text
id="text330"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-26.68359,4)">
<tspan
id="tspan328"
sodipodi:role="line"
y="0"
x="0 8.6664 15.3408 18.0072 24.681601 28.02 30.686399 37.360802 44.035198 50.709599 53.375999">Relational</tspan>
</text>
</g>
<g
transform="matrix(0.35277777,0,0,0.35277777,75.974471,39.951007)"
id="g332">
<text
id="text336"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="translate(-40.69336,18)">
<tspan
id="tspan334"
sodipodi:role="line"
y="0"
x="0 8.6664 15.3408 22.0152 26.0112 32.6856 38.6856 45.360001 52.034401 55.368 62.0424 65.375999 68.042397 74.716797">Representation</tspan>
</text>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -0,0 +1,261 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="152.75279mm"
height="22.754185mm"
viewBox="0 0 152.75279 22.754185"
version="1.1"
id="svg1201"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="2019-04-31-NormalDB.svg">
<defs
id="defs1195" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="-215.61902"
inkscape:cy="-408.42854"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="2560"
inkscape:window-height="1387"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata1198">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-33.236699,-18.015766)">
<path
d="m 87.229357,18.192173 h 28.892503 c 3.41757,0 6.19125,4.9784 6.19125,11.1125 0,6.1341 -2.77368,11.1125 -6.19125,11.1125 H 87.229357 c -3.41757,0 -6.19125,-4.9784 -6.19125,-11.1125 0,-6.1341 2.77368,-11.1125 6.19125,-11.1125"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
id="path70"
inkscape:connector-curvature="0" />
<g
id="g72"
transform="matrix(0.35277777,0,0,0.35277777,20.713106,5.4921729)">
<path
d="m 188.55,36.5 h 81.9 c 9.6876,-0.5 17.55,13.612 17.55,31 0,17.388 -7.8624,31.5 -17.55,32 h -81.9 C 178.8624,99 171,84.888 171,67.5 171,50.112 178.8624,36 188.55,36"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="path74"
inkscape:connector-curvature="0" />
</g>
<g
id="g76"
transform="matrix(0.35277777,0,0,0.35277777,101.67561,29.304673)">
<text
transform="translate(-26.68359,-3)"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text80">
<tspan
x="0 8.6664 15.3408 18.0072 24.681601 28.02 30.686399 37.360802 44.035198 50.709599 53.375999"
y="0"
sodipodi:role="line"
id="tspan78">Relational</tspan>
</text>
</g>
<g
id="g82"
transform="matrix(0.35277777,0,0,0.35277777,101.67561,29.304673)">
<text
transform="translate(-40.69336,11)"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text86">
<tspan
x="0 8.6664 15.3408 22.0152 26.0112 32.6856 38.6856 45.360001 52.034401 55.368 62.0424 65.375999 68.042397 74.716797"
y="0"
sodipodi:role="line"
id="tspan84">Representation</tspan>
</text>
</g>
<g
id="g100"
transform="matrix(0.35277777,0,0,0.35277777,20.713106,5.4921729)">
<path
d="m 99,68 h 59.1"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="path102"
inkscape:connector-curvature="0" />
</g>
<path
d="m 79.873937,29.304673 -3.38667,-1.27 v 2.54 z"
style="fill:#181818;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
id="path104"
inkscape:connector-curvature="0" />
<g
id="g106"
transform="matrix(0.35277777,0,0,0.35277777,20.713106,5.4921729)">
<path
d="m 167.7,67.5 -9.6,-3.6 v 7.2 z"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="path108"
inkscape:connector-curvature="0" />
</g>
<path
d="m 161.52435,18.192173 h 20.0025 c 2.36601,0 4.28625,4.9784 4.28625,11.1125 0,6.1341 -1.92024,11.1125 -4.28625,11.1125 h -20.0025 c -2.36601,0 -4.28625,-4.9784 -4.28625,-11.1125 0,-6.1341 1.92024,-11.1125 4.28625,-11.1125"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
id="path120"
inkscape:connector-curvature="0" />
<g
id="g122"
transform="matrix(0.35277777,0,0,0.35277777,20.713106,5.4921729)">
<path
d="m 399.15,36.5 h 56.7 c 6.7068,-0.5 12.15,13.612 12.15,31 0,17.388 -5.4432,31.5 -12.15,32 h -56.7 C 392.4432,99 387,84.888 387,67.5 387,50.112 392.4432,36 399.15,36"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="path124"
inkscape:connector-curvature="0" />
</g>
<g
id="g126"
transform="matrix(0.35277777,0,0,0.35277777,171.5256,29.304673)">
<text
transform="translate(-16.33887,-3)"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text130">
<tspan
x="0 9.3336 16.007999 22.6824 26.6784 32.678398"
y="0"
sodipodi:role="line"
id="tspan128">Query</tspan>
</text>
</g>
<g
id="g132"
transform="matrix(0.35277777,0,0,0.35277777,171.5256,29.304673)">
<text
transform="translate(-20.00684,11)"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text136">
<tspan
x="0 8.6664 15.3408 21.340799 28.0152 30.681601 34.015202"
y="0"
sodipodi:role="line"
id="tspan134">Results</tspan>
</text>
</g>
<g
id="g220"
transform="matrix(0.35277777,0,0,0.35277777,20.713106,5.4921729)">
<path
d="m 288,68 h 86.1"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="path222"
inkscape:connector-curvature="0" />
</g>
<path
d="m 156.07394,29.304673 -3.38667,-1.27 v 2.54 z"
style="fill:#181818;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
id="path224"
inkscape:connector-curvature="0" />
<g
id="g226"
transform="matrix(0.35277777,0,0,0.35277777,20.713106,5.4921729)">
<path
d="m 383.7,67.5 -9.6,-3.6 v 7.2 z"
style="fill:none;stroke:#181818;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="path228"
inkscape:connector-curvature="0" />
</g>
<g
id="g230"
transform="matrix(0.35277777,0,0,0.35277777,67.191577,26.129673)">
<text
transform="translate(-10.446,4)"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text234">
<tspan
x="0 7.3319998 14.22"
y="0"
sodipodi:role="line"
id="tspan232">ETL</tspan>
</text>
</g>
<g
id="g248"
transform="matrix(0.35277777,0,0,0.35277777,139.77561,26.129673)">
<text
transform="translate(-16.116,4)"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text252">
<tspan
x="0 9.1199999 15.792 22.236 26.232"
y="0"
sodipodi:role="line"
id="tspan250">Query</tspan>
</text>
</g>
<path
d="m 33.413107,38.194673 v -17.78 c 0,-1.22682 4.9784,-2.2225 11.1125,-2.2225 6.1341,0 11.1125,0.99568 11.1125,2.2225 v 17.78 c 0,1.22682 -4.9784,2.2225 -11.1125,2.2225 -6.1341,0 -11.1125,-0.99568 -11.1125,-2.2225"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
id="path356"
inkscape:connector-curvature="0" />
<g
id="g358"
transform="matrix(0.35277777,0,0,0.35277777,20.713106,5.4921729)">
<path
d="M 36.5,92.7 V 42.3 C 36,38.8224 50.112,36 67.5,36 c 17.388,0 31.5,2.8224 32,6.3 V 92.7 C 99,96.1776 84.888,99 67.5,99 50.112,99 36,96.1776 36,92.7 m 0,-50.4 c 0,3.4776 14.112,6.3 31.5,6.3 17.388,0 31.5,-2.8224 31.5,-6.3"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="path360"
inkscape:connector-curvature="0" />
</g>
<g
id="g362"
transform="matrix(0.35277777,0,0,0.35277777,44.525607,29.304673)">
<text
transform="translate(-13.67578,0.15)"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text366">
<tspan
x="0 8.0039997 14.6784 20.6784 27.3528"
y="0"
sodipodi:role="line"
id="tspan364">Base</tspan>
</text>
</g>
<g
id="g368"
transform="matrix(0.35277777,0,0,0.35277777,44.525607,29.304673)">
<text
transform="translate(-12.67383,14.15)"
style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text372">
<tspan
x="0 8.6664 15.3408 18.679199"
y="0"
sodipodi:role="line"
id="tspan370">Data</tspan>
</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB