This commit is contained in:
Gokhan Kul 2018-02-12 12:14:40 -05:00
commit 216f58a655
10 changed files with 2199 additions and 7 deletions

View file

@ -0,0 +1,342 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CSE 4/562 - Spring 2018</title>
<meta name="description" content="CSE 4/562 - Spring 2018">
<meta name="author" content="Oliver Kennedy">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" href="../reveal.js-3.6.0/css/reveal.css">
<link rel="stylesheet" href="ubodin.css" id="theme">
<!-- Code syntax highlighting -->
<link rel="stylesheet" href="../reveal.js-3.6.0/lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? '../reveal.js-3.6.0/css/print/pdf.css' : '../reveal.js-3.6.0/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<script src="../reveal.js-3.6.0/lib/js/head.min.js"></script>
<!--[if lt IE 9]>
<script src="../reveal.js-3.6.0/lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="header">
<!-- Any Talk-Specific Header Content Goes Here -->
CSE 4/562 - Database Systems
</div>
<div class="slides">
<section>
<h1>Query Evaluation</h1>
<h3>CSE 4/562 Database Systems</h3>
<h5>February 12, 2018</h5>
</section>
<section>
<section>
<h3>Query Evaluation Styles</h3>
<dl>
<dt class="fragment highlight-grey" data-fragment-index="2">All-At-Once (Collections)</dt>
<dd class="fragment highlight-grey" data-fragment-index="2">Bottom-up, one operator at a time.</dd>
<dt>Volcano-Style (Iterators)</dt>
<dd>Operators "request" one tuple at a time from children.</dd>
<dt class="fragment highlight-grey" data-fragment-index="1">Push-Style (Buffers)</dt>
<dd class="fragment highlight-grey" data-fragment-index="1">Operators continuously produce/consume tuples.</dd>
</dl>
</section>
<section>
<h3>Basic Mindset</h3>
<img src="graphics/2018-02-05-RA-Tree.svg" style="display: inline-block; vertical-align: middle;" />
<pre style="display: inline-block; vertical-align: middle; margin-left: 20px; width:550px;"><code class="python">
r = get_table("R")
s = get_table("S")
temp1 = apply_join(r, s, "R.B = S.B")
temp2 = apply_select(temp1, "S.C = 10")
result = apply_projection(temp2, "R.A")
</code></pre>
</section>
<section>
<h3>Basic Mindset</h3>
<pre><code class="python">
def build_tree(operator):
if """ operator is a base table """:
return get_table(...)
elif """ operator is a selection """:
return apply_select(operator.child, operator.condition)
elif """ handle remaining cases similarly """:
</code></pre>
</section>
<section>
<h3>Select</h3>
<p class="fragment" style="display: inline-block; vertical-align: middle; margin-right: 100px">
$$\sigma_{A \neq 3} R$$
</p>
<table style="display: inline-block; vertical-align: middle;">
<tr><th>A</th><th>B</th></tr>
<tr><td>1</td><td>2</td></tr>
<tr class="fragment highlight-grey"><td>3</td><td>4</td></tr>
<tr><td>5</td><td>6</td></tr>
</table>
</section>
<section>
<h3>Select</h3>
<pre><code class="python">
def apply_select(input, condition)
result = []
for row in input:
if condition(row):
result += [row]
return result;
</code></pre>
<p class="fragment">(All-At-Once)</p>
</section>
<section>
<h3>Select</h3>
<p style="display: inline-block; vertical-align: middle; margin-right: 100px">
$$\sigma_{A \neq 3} R$$
</p>
<table style="display: inline-block; vertical-align: middle; font-size: 80%">
<tr><th>A</th><th>B</th><td></td></tr>
<tr class="fragment"><td colspan="2"><code>getNext()</code></td><td style="text-align: left"><code>for row in input:</code></td></tr>
<tr class="fragment"><td>1</td><td>2</td><td class="fragment" style="color: green; text-align: left;"><code style="margin-left: 30px;">return row;</code></td></tr>
<tr class="fragment"><td colspan="2"><code>getNext()</code></td><td style="text-align: left"><code>for row in input:</code></td></tr>
<tr class="fragment"><td>3</td><td>4</td><td class="fragment" style="color: red; text-align: left;"><span style="margin-left: 30px;">X</span></td></tr>
<tr class="fragment" ><td>5</td><td>6</td><td class="fragment" style="color: green; text-align: left;"><code style="margin-left: 30px;">return row;</code></td></tr>
<tr class="fragment"><td colspan="2"><code>getNext()</code></td><td style="text-align: left"><code>for row in input:</code></td></tr>
<tr class="fragment"><td colspan="2"><code>None</code></td><td class="fragment" style="color: red; text-align: left;"><code>return None;</code></td></tr>
</table>
</section>
<section>
<h3>Select</h3>
<svg data-src="graphics/2018-02-12-Flow-Select.svg" />
</section>
<section>
<h3>Project</h3>
<svg data-src="graphics/2018-02-12-Flow-Project.svg" />
</section>
<section>
<h3>Union</h3>
<svg data-src="graphics/2018-02-12-Flow-Union.svg" />
</section>
<section>
<h3>Cross</h3>
<pre><code class="python">
def apply_cross(lhs, rhs):
result = []
for r in lhs:
for s in rhs:
result += [r + s]
return result
</code></pre>
</section>
<section>
<h3>Cross</h3>
<svg data-src="graphics/2018-02-12-Flow-Cross.svg" />
</section>
<section>
<p>What's the complexity of this cross-product algorithm?</p>
<p>... in terms of compute</p>
<p>... in terms of IOs</p>
</section>
</section>
<section>
<section>
<h3>Cross Product Problems</h3>
<dl>
<dt>Need to scan the inner relation multiple times!</dt>
<dd class="fragment">Load data intelligently to mitigate expensive IOs</dd>
<dt>Every tuple needs to be paired with every other tuple!</dt>
<dd class="fragment">Exploit join conditions to minimize pairs of tuples</dd>
</dl>
</section>
<section>
<h3>Preloading Data</h3>
<p class="fragment">Nested-Loop Join</p>
<pre><code class="python">
def apply_cross(lhs, rhs):
result = []
while r = lhs.next():
while s = rhs.next():
result += [r + s]
rhs.reset()
return result
</code></pre>
<p>Need to evaluate <code>rhs</code> iterator once per record in <code>lhs</code></p>
</section>
<section>
<h3>Preloading Data</h3>
<p><b>Naive Solution</b>: Preload records from <code>lhs</code></p>
<pre><code class="python">
def apply_cross(lhs, rhs):
result = []
rhs_preloaded = []
while s = rhs.next():
rhs_preloaded += [s]
while r = lhs.next():
for s in rhs_preloaded:
result += [r + s]
return result
</code></pre>
<p class="fragment">Any problems with this?</p>
</section>
<section>
<h3>Preloading Data</h3>
<p><b>Better Solution</b>: Load both <code>lhs</code> and <code>rhs</code> records in blocks.</p>
<pre><code class="python">
def apply_cross(lhs, rhs):
result = []
while r_block = lhs.take(100):
while s_block = rhs.take(100):
for r in r_block:
for s in s_block:
result += [r + s]
rhs.reset()
return result
</code></pre>
</section>
<section>
<h3>Block-Nested Loop Join</h3>
<svg data-src="graphics/2018-02-12-Join-BNLJ.svg" class="stretch" />
</section>
<section>
<h3>Join Conditions</h3>
</section>
</section>
</div></div>
<script src="../reveal.js-3.6.0/js/reveal.js"></script>
<script>
// Full list of configuration options available at:
// https://github.com/hakimel/../reveal.js#configuration
Reveal.initialize({
controls: false,
progress: true,
history: true,
center: true,
slideNumber: true,
transition: 'fade', // none/fade/slide/convex/concave/zoom
chart: {
defaults: {
global: {
title: { fontColor: "#333", fontSize: 24 },
legend: {
labels: { fontColor: "#333", fontSize: 20 },
},
responsiveness: true
},
scale: {
scaleLabel: { fontColor: "#333", fontSize: 20 },
gridLines: { color: "#333", zeroLineColor: "#333" },
ticks: { fontColor: "#333", fontSize: 16 },
}
},
line: { borderColor: [ "rgba(20,220,220,.8)" , "rgba(220,120,120,.8)", "rgba(20,120,220,.8)" ], "borderDash": [ [5,10], [0,0] ]},
bar: { backgroundColor: [
"rgba(220,220,220,0.8)",
"rgba(151,187,205,0.8)",
"rgba(205,151,187,0.8)",
"rgba(187,205,151,0.8)"
]
},
pie: { backgroundColor: [ ["rgba(0,0,0,.8)" , "rgba(220,20,20,.8)", "rgba(20,220,20,.8)", "rgba(220,220,20,.8)", "rgba(20,20,220,.8)"] ]},
radar: { borderColor: [ "rgba(20,220,220,.8)" , "rgba(220,120,120,.8)", "rgba(20,120,220,.8)" ]},
},
// Optional ../reveal.js plugins
dependencies: [
{ src: '../reveal.js-3.6.0/lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: '../reveal.js-3.6.0/plugin/math/math.js',
condition: function() { return true; },
mathjax: '../reveal.js-3.6.0/js/MathJax.js'
},
{ src: '../reveal.js-3.6.0/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: '../reveal.js-3.6.0/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: '../reveal.js-3.6.0/plugin/highlight/highlight.js', async: true, condition: function() { return !!document.querySelector( 'pre code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: '../reveal.js-3.6.0/plugin/zoom-js/zoom.js', async: true },
{ src: '../reveal.js-3.6.0/plugin/notes/notes.js', async: true },
// Chart.min.js
{ src: '../reveal.js-3.6.0/plugin/chart/Chart.min.js'},
// the plugin
{ src: '../reveal.js-3.6.0/plugin/chart/csv2chart.js'},
{ src: '../reveal.js-3.6.0/plugin/svginline/es6-promise.auto.js', async: false },
{ src: '../reveal.js-3.6.0/plugin/svginline/data-src-svg.js', async: false }
]
});
</script>
</body>
</html>

View file

@ -49,7 +49,7 @@
<div class="slides">
<section>
<h1>Extended Relational Algebra</h1>
<h1>Extended RA</h1>
<h3>CSE 4/562 Database Systems</h3>
<h5>February 12, 2018</h5>
</section>
@ -59,7 +59,7 @@
<h3>Extended Relational Algebra</h3>
<dl>
<dt class="fragment highlight-grey" data-fragment-index="1">Set Operations</dt>
<dt class="fragment highlight-grey" data-fragment-index="1">Set/Bag Operations</dt>
<dd class="fragment highlight-grey" data-fragment-index="1">Select ($\sigma$), Project ($\pi$), Join ($\bowtie$), Union ($\cup$)</dd>
<dt>Bag Operations</dt>
@ -71,6 +71,30 @@
<dt>Arithmetic Operations</dt>
<dd>Extended Projection ($\pi$), Aggregation ($\sigma$), Grouping ($\gamma$)</dd>
</dl>
<dl>
</dl>
</section>
<section>
<h3>Sort / Limit</h3>
<p>
$$\tau_{A}(R)$$
The tuples of $R$ in ascending order according to 'A'
</p>
<p>
$$\textbf{L}_{n}(R)$$
The first $n$ tuples of R
<div style="font-size: 60%">(Typically combined with sort. If not, pick arbitrarily.)</div>
</p>
</section>
<section>
<h3>Distinct</h3>
</section>
</section>

View file

@ -0,0 +1,423 @@
<?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="185.3418mm"
height="107.16741mm"
viewBox="0 0 185.3418 107.16741"
version="1.1"
id="svg8"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="2018-02-12-Flow-Cross.svg">
<defs
id="defs2">
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker10141"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path10139"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(1,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path868"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(1,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker9660"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path9658"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker8965"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path8963"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker7249"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
inkscape:connector-curvature="0"
id="path7247"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker5139"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path5137"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker4462"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
inkscape:connector-curvature="0"
id="path4460"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker3960"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path3958"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1227"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1225"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1193"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1191"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="331.24022"
inkscape:cy="251.75303"
inkscape:document-units="mm"
inkscape:current-layer="g8961"
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="1031"
inkscape:window-x="0"
inkscape:window-y="1"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<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(23.819361,-13.025584)">
<g
id="g9869">
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path40"
d="m 129.79702,13.026488 0.0756,20.902083"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
<text
id="text3432"
y="21.11385"
x="131.89551"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:7.05555534px;stroke-width:0.26458332"
y="21.11385"
x="131.89551"
id="tspan3430"
sodipodi:role="line">start</tspan></text>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="94.508446"
y="45.230064"
id="text12"
class="fragment"><tspan
sodipodi:role="line"
id="tspan10"
x="94.508446"
y="45.230064"
style="stroke-width:0.26458332">Have Old 'r'?</tspan></text>
<g
id="g8961"
class="fragment"
transform="translate(-39.952084,-46.566667)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="113.11009"
y="88.318016"
id="text8953"><tspan
sodipodi:role="line"
id="tspan8951"
x="113.11009"
y="88.318016"
style="font-size:7.05555534px;stroke-width:0.26458332">no</tspan></text>
<text
id="text8957"
y="68.449379"
x="17.008928"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="68.449379"
x="17.008928"
id="tspan8955"
sodipodi:role="line">Read LHS Row 'r'</tspan><tspan
style="stroke-width:0.26458332"
y="81.678543"
x="17.008928"
sodipodi:role="line"
id="tspan10281">and Reset RHS</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path8959"
d="M 133.46339,85.862501 97.97143,76.526488"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker8965)" />
</g>
<g
id="g9929"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="57.490177"
y="81.94313"
id="text5083"><tspan
sodipodi:role="line"
id="tspan5081"
x="57.490177"
y="81.94313"
style="stroke-width:0.26458332">Read RHS Row 's'</tspan></text>
<text
id="text9648"
y="60.801346"
x="53.843437"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:7.05555534px;stroke-width:0.26458332"
y="60.801346"
x="53.843437"
id="tspan9646"
sodipodi:role="line">not empty</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker9660)"
d="m 41.652975,38.502083 17.160118,32.99732"
id="path9654"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
</g>
<g
id="g9644"
transform="translate(-0.26458367,56.35625)"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="98.028847"
y="39.634682"
id="text3391"><tspan
sodipodi:role="line"
id="tspan3389"
x="98.028847"
y="39.634682"
style="font-size:7.05555534px;stroke-width:0.26458332">not empty</tspan></text>
<text
id="text16"
y="63.686882"
x="70.719345"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="63.686882"
x="70.719345"
id="tspan14"
sodipodi:role="line">Return &lt;r s&gt;</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path32"
d="M 88.219642,27.91875 104.85059,53.243153"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7249)" />
</g>
<g
id="g9907"
class="fragment">
<text
id="text5079"
y="61.330517"
x="117.60801"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:7.05555534px;stroke-width:0.26458332"
y="61.330517"
x="117.60801"
id="tspan5077"
sodipodi:role="line">yes</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker10141)"
d="m 121.55714,48.820834 -15.11905,22.67857"
id="path5085"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
</g>
<g
transform="translate(-143.13958,-8.9958333)"
class="fragment"
id="g3932">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="126.65983"
y="82.309517"
id="text3924"><tspan
sodipodi:role="line"
id="tspan3922"
x="126.65983"
y="82.309517"
style="stroke-width:0.26458332">Done</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4462)"
d="m 146.84375,46.628571 -8.20208,24.984226"
id="path3926"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
id="text3930"
y="58.420097"
x="118.93092"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:7.05555534px;stroke-width:0.26458332"
y="58.420097"
x="118.93092"
id="tspan3928"
sodipodi:role="line">empty</tspan></text>
</g>
<g
id="g5135"
class="fragment"
transform="translate(-22.754167,35.983333)">
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path5129"
d="M 86.783333,51.126488 C 59.680757,74.970227 41.200165,10.149137 39.612512,1.2878217"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5139)" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="44.847588"
y="58.420097"
id="text5133"><tspan
sodipodi:role="line"
id="tspan5131"
x="44.847588"
y="58.420097"
style="font-size:7.05555534px;stroke-width:0.26458332">empty</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1,252 @@
<?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="162.57216mm"
height="105.71951mm"
viewBox="0 0 162.57216 105.71951"
version="1.1"
id="svg8"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="2018-02-12-Flow-Project.svg">
<defs
id="defs2">
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1227"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1225"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1193"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1191"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1165"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1163"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1143"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1141"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path850"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="42.71157"
inkscape:cy="326.28069"
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="1031"
inkscape:window-x="0"
inkscape:window-y="1"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-7.012178,-13.025584)">
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 95.930357,13.026488 0.07559,20.902083"
id="path40"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="56.143864"
y="46.023815"
id="text12"
class="fragment"><tspan
sodipodi:role="line"
id="tspan10"
x="56.143864"
y="46.023815"
style="stroke-width:0.26458332">Read One Row</tspan></text>
<g
id="g3198"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="37.439262"
y="59.478432"
id="text3391"><tspan
sodipodi:role="line"
id="tspan3389"
x="37.439262"
y="59.478432"
style="font-size:7.05555534px;stroke-width:0.26458332">not empty</tspan></text>
<text
id="text16"
y="82.472298"
x="19.65476"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="82.472298"
x="19.65476"
id="tspan14"
sodipodi:role="line">Compute New Row</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path32"
d="M 82.398808,48.291667 67.27976,70.970237"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1165)" />
</g>
<g
id="g3232"
class="fragment">
<text
id="text24"
y="118.59524"
x="36.537827"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="118.59524"
x="36.537827"
id="tspan22"
sodipodi:role="line">Return Row</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path36"
d="M 65.578867,86.089285 65.389881,108.61667"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1227)" />
</g>
<g
id="g3215"
class="fragment">
<text
id="text20"
y="82.309517"
x="139.09525"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="82.309517"
x="139.09525"
id="tspan18"
sodipodi:role="line">Done!</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path34"
d="m 121.70833,49.803571 15.875,18.898809"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1143)" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="130.57259"
y="59.213848"
id="text3377"><tspan
sodipodi:role="line"
id="tspan3375"
x="130.57259"
y="59.213848"
style="font-size:7.05555534px;stroke-width:0.26458332">empty</tspan></text>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="98.028847"
y="21.11385"
id="text3432"><tspan
sodipodi:role="line"
id="tspan3430"
x="98.028847"
y="21.11385"
style="font-size:7.05555534px;stroke-width:0.26458332">start</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,285 @@
<?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="162.57216mm"
height="105.71951mm"
viewBox="0 0 162.57216 105.71951"
version="1.1"
id="svg8"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="2018-02-12-Flow-Select.svg">
<defs
id="defs2">
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1227"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1225"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1193"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1191"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1165"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1163"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1143"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1141"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path850"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="42.71157"
inkscape:cy="326.28069"
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="1031"
inkscape:window-x="0"
inkscape:window-y="1"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<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(-7.012178,-13.025584)">
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 95.930357,13.026488 0.07559,20.902083"
id="path40"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="56.143864"
y="46.023815"
id="text12"
class="fragment"><tspan
sodipodi:role="line"
id="tspan10"
x="56.143864"
y="46.023815"
style="stroke-width:0.26458332">Read One Row</tspan></text>
<g
id="g3198"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="37.439262"
y="59.743015"
id="text3391"><tspan
sodipodi:role="line"
id="tspan3389"
x="37.439262"
y="59.743015"
style="font-size:7.05555534px;stroke-width:0.26458332">not empty</tspan></text>
<text
id="text16"
y="82.472298"
x="19.65476"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="82.472298"
x="19.65476"
id="tspan14"
sodipodi:role="line">Check Condition</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path32"
d="M 82.398808,48.291667 67.27976,70.970237"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1165)" />
</g>
<g
id="g3232"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="80.830925"
y="93.345093"
id="text3383"><tspan
sodipodi:role="line"
id="tspan3381"
x="80.830925"
y="93.345093"
style="font-size:7.05555534px;stroke-width:0.26458332">satisfied</tspan></text>
<text
id="text24"
y="118.59524"
x="64.319077"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="118.59524"
x="64.319077"
id="tspan22"
sodipodi:role="line">Return Row</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path36"
d="M 74.839284,86.089285 89.202381,106.5"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1227)" />
</g>
<g
id="g3416"
class="fragment">
<path
class=""
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path38"
d="m 45.357142,86.089285 c 0,0 -9.751785,23.812495 -27.214285,21.166665 C 6.7657737,105.13928 6.7657738,74.069643 7.5595238,56.607143 c 0,-14.022917 5.7844582,-34.311254 27.2898812,-38.780357 20.396751,-0.385142 30.1625,16.101785 30.1625,16.101785"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1193)" />
<text
id="text3387"
y="112.92427"
x="10.187177"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:7.05555534px;stroke-width:0.26458332"
y="112.92427"
x="10.187177"
id="tspan3385"
sodipodi:role="line">unsatisfied</tspan></text>
</g>
<g
id="g3215"
class="fragment">
<text
id="text20"
y="82.309517"
x="139.09525"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="82.309517"
x="139.09525"
id="tspan18"
sodipodi:role="line">Done!</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path34"
d="m 121.70833,49.803571 15.875,18.898809"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1143)" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="130.57259"
y="59.213848"
id="text3377"><tspan
sodipodi:role="line"
id="tspan3375"
x="130.57259"
y="59.213848"
style="font-size:7.05555534px;stroke-width:0.26458332">empty</tspan></text>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="98.028847"
y="21.11385"
id="text3432"><tspan
sodipodi:role="line"
id="tspan3430"
x="98.028847"
y="21.11385"
style="font-size:7.05555534px;stroke-width:0.26458332">start</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -0,0 +1,319 @@
<?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="173.15916mm"
height="103.56505mm"
viewBox="0 0 173.15917 103.56505"
version="1.1"
id="svg8"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="2018-02-12-Flow-Union.svg">
<defs
id="defs2">
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker4462"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4460"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker3960"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path3958"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1227"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1225"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1193"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1191"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1165"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1163"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1143"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1141"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path850"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="-8.9972"
inkscape:cy="318.13782"
inkscape:document-units="mm"
inkscape:current-layer="g3956"
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="1031"
inkscape:window-x="0"
inkscape:window-y="1"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-20.693457,-13.025584)">
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 95.930357,13.026488 0.07559,20.902083"
id="path40"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="98.028847"
y="21.11385"
id="text3432"><tspan
sodipodi:role="line"
id="tspan3430"
x="98.028847"
y="21.11385"
style="font-size:7.05555534px;stroke-width:0.26458332">start</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="56.143864"
y="46.023815"
id="text12"
class="fragment"><tspan
sodipodi:role="line"
id="tspan10"
x="56.143864"
y="46.023815"
style="stroke-width:0.26458332">Read LHS Row</tspan></text>
<g
id="g3198"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="37.703846"
y="59.743015"
id="text3391"><tspan
sodipodi:role="line"
id="tspan3389"
x="37.703846"
y="59.743015"
style="font-size:7.05555534px;stroke-width:0.26458332">not empty</tspan></text>
<text
id="text16"
y="82.472298"
x="19.65476"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="82.472298"
x="19.65476"
id="tspan14"
sodipodi:role="line">Return Row</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path32"
d="M 82.398808,48.291667 67.27976,70.970237"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1165)" />
</g>
<g
transform="translate(-8.2020834,-0.52916667)"
class="fragment"
id="g3932">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="125.07233"
y="82.309517"
id="text3924"><tspan
sodipodi:role="line"
id="tspan3922"
x="125.07233"
y="82.309517"
style="stroke-width:0.26458332">Read RHS Row</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4462)"
d="m 120.65,48.745238 17.99167,22.867559"
id="path3926"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
id="text3930"
y="59.213848"
x="130.57259"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:7.05555534px;stroke-width:0.26458332"
y="59.213848"
x="130.57259"
id="tspan3928"
sodipodi:role="line">empty</tspan></text>
</g>
<g
class="fragment"
id="g3956"
transform="translate(57.414583,44.45)">
<text
id="text3948"
y="45.190933"
x="30.824678"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:7.05555534px;stroke-width:0.26458332"
y="45.190933"
x="30.824678"
id="tspan3946"
sodipodi:role="line">not empty</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker3960)"
d="M 56.998808,33.475 25.475593,33.663987"
id="path3954"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
</g>
<g
id="g3215"
class="fragment"
transform="translate(-3.175,34.13125)">
<text
id="text20"
y="82.309517"
x="139.09525"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="82.309517"
x="139.09525"
id="tspan18"
sodipodi:role="line">Done!</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path34"
d="M 151.87083,50.597321 152.4,72.406547"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1143)" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="126.86842"
y="68.474266"
id="text3377"><tspan
sodipodi:role="line"
id="tspan3375"
x="126.86842"
y="68.474266"
style="font-size:7.05555534px;stroke-width:0.26458332">empty</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -0,0 +1,269 @@
<?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="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg10469"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="2018-02-12-Join-NLJ.svg">
<defs
id="defs10463" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="228"
inkscape:cy="562.793"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1031"
inkscape:window-x="0"
inkscape:window-y="1"
inkscape:window-maximized="1" />
<metadata
id="metadata10466">
<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">
<g
id="g10604">
<g
id="g10525">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10471"
width="27.214285"
height="18.142857"
x="24.946428"
y="35.440475" />
<rect
y="53.583332"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10473"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10529">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10475"
width="27.214285"
height="18.142857"
x="24.946428"
y="74.372025" />
<rect
y="92.514885"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10477"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10533">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10479"
width="27.214285"
height="18.142857"
x="24.946428"
y="113.30355" />
<rect
y="131.44637"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10481"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10537">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10483"
width="27.214285"
height="18.142857"
x="24.946428"
y="152.235" />
<rect
y="170.37785"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10485"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10558">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10471-7"
width="27.214285"
height="18.142857"
x="105.07738"
y="35.440475" />
<rect
y="53.583328"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10473-9"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10554">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10475-3"
width="27.214285"
height="18.142857"
x="105.07738"
y="74.372032" />
<rect
y="92.514885"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10477-8"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10550">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10479-0"
width="27.214285"
height="18.142857"
x="105.07738"
y="113.30355" />
<rect
y="131.44637"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10481-2"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10546">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10483-4"
width="27.214285"
height="18.142857"
x="105.07738"
y="152.235" />
<rect
y="170.37785"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10485-8"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
<g
id="g10615"
style="stroke:#000000"
class="fragment">
<path
inkscape:connector-curvature="0"
id="path10560"
d="M 52.160712,53.583331 H 105.07738"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path10562"
d="M 105.07738,92.514886 52.160713,53.583332 105.07738,131.44637"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path10564"
d="M 52.160712,53.583331 105.07738,170.37785"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g10619"
style="stroke:#000000"
class="fragment">
<path
inkscape:connector-curvature="0"
id="path10566"
d="M 105.07738,53.583331 52.160712,92.514885 h 52.916668"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path10568"
d="M 105.07738,131.44637 52.160712,92.514877 105.07738,170.37785"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g10629"
style="stroke:#000000"
class="fragment">
<path
inkscape:connector-curvature="0"
id="path10570"
d="M 52.160712,131.44636 105.07738,53.583329"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<g
style="stroke:#000000"
id="g10623">
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 105.07738,92.514885 52.160712,131.44641 h 52.916668"
id="path10572"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 52.160712,131.44636 52.916668,38.93149"
id="path10574"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g10633"
style="stroke:#000000"
class="fragment">
<path
inkscape:connector-curvature="0"
id="path10576"
d="M 105.07738,53.583331 52.160712,170.37785 105.07738,92.514885"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path10578"
d="M 105.07738,131.44637 52.160712,170.37785 H 105.07738"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.6 KiB

View file

@ -0,0 +1,274 @@
<?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="107.84523mm"
height="153.58023mm"
viewBox="0 0 107.84523 153.58023"
version="1.1"
id="svg10469"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="2018-02-12-Join-NLJ.svg">
<defs
id="defs10463" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="134.65917"
inkscape:cy="153.73742"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1031"
inkscape:window-x="0"
inkscape:window-y="1"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata10466">
<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(-24.696428,-35.190475)">
<g
id="g10604">
<g
id="g10525">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10471"
width="27.214285"
height="18.142857"
x="24.946428"
y="35.440475" />
<rect
y="53.583332"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10473"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10529">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10475"
width="27.214285"
height="18.142857"
x="24.946428"
y="74.372025" />
<rect
y="92.514885"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10477"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10533">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10479"
width="27.214285"
height="18.142857"
x="24.946428"
y="113.30355" />
<rect
y="131.44637"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10481"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10537">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10483"
width="27.214285"
height="18.142857"
x="24.946428"
y="152.235" />
<rect
y="170.37785"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10485"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10558">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10471-7"
width="27.214285"
height="18.142857"
x="105.07738"
y="35.440475" />
<rect
y="53.583328"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10473-9"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10554">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10475-3"
width="27.214285"
height="18.142857"
x="105.07738"
y="74.372032" />
<rect
y="92.514885"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10477-8"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10550">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10479-0"
width="27.214285"
height="18.142857"
x="105.07738"
y="113.30355" />
<rect
y="131.44637"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10481-2"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10546">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10483-4"
width="27.214285"
height="18.142857"
x="105.07738"
y="152.235" />
<rect
y="170.37785"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10485-8"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
<g
id="g10615"
style="stroke:#000000"
class="fragment current-visible">
<path
inkscape:connector-curvature="0"
id="path10560"
d="M 52.160712,53.583331 H 105.07738"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path10562"
d="M 105.07738,92.514886 52.160713,53.583332 105.07738,131.44637"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path10564"
d="M 52.160712,53.583331 105.07738,170.37785"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g10619"
style="stroke:#000000"
class="fragment show-current">
<path
inkscape:connector-curvature="0"
id="path10566"
d="M 105.07738,53.583331 52.160712,92.514885 h 52.916668"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path10568"
d="M 105.07738,131.44637 52.160712,92.514877 105.07738,170.37785"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g10629"
style="stroke:#000000"
class="fragment show-current">
<path
inkscape:connector-curvature="0"
id="path10570"
d="M 52.160712,131.44636 105.07738,53.583329"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<g
style="stroke:#000000"
id="g10623">
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 105.07738,92.514885 52.160712,131.44641 h 52.916668"
id="path10572"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 52.160712,131.44636 52.916668,38.93149"
id="path10574"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g10633"
style="stroke:#000000"
class="fragment show-current">
<path
inkscape:connector-curvature="0"
id="path10576"
d="M 105.07738,53.583331 52.160712,170.37785 105.07738,92.514885"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path10578"
d="M 105.07738,131.44637 52.160712,170.37785 H 105.07738"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.8 KiB

View file

@ -12,13 +12,16 @@ schedule:
bio: |
Julia Stoyanovich is Assistant Professor of Computer Science at Drexel University, and an affiliated faculty at the Center for Information Technology Policy at Princeton. She is a recipient of an NSF CAREER award and of an NSF/CRA Computing Innovations Fellowship. Julia's research focuses on responsible data management and analysis practices: on operationalizing fairness, diversity, transparency, and data protection in all stages of the data acquisition and processing lifecycle. She established the Data, Responsibly consortium, serves on the ACM task force to revise the Code of Ethics and Professional Conduct, and is active in the New York City algorithmic transparency effort. In addition to data ethics, Julia works on management and analysis of preference data, and on querying large evolving graphs. She holds M.S. and Ph.D. degrees in Computer Science from Columbia University, and a B.S. in Computer Science and in Mathematics and Statistics from the University of Massachusetts at Amherst.
- when: March 7 (tentative); Time TBD
what: Title TBD
what: "Deep Curation: Putting Open Science Data to Work"
who: Bill Howe (University of Washington)
where: Location TBD
details:
abstract: TBD
abstract: |
Data in public repositories and in the scientific literature remains remarkably underused despite significant investments in open data and open science. Making data available online turns out to be the easy part; making the data usable for data science requires new services to support longitudinal, multi-dataset analysis rather than just settling for keyword search.<br/>
In the Deep Curation project, we use distant supervision and co-learning to automatically label datasets with zero training data. We have applied this approach to curate gene expression data and identify figures in the scientific literature, outperforming state-of-the-art supervised methods that rely on supervision. We then use claims extracted from the text of papers to guide probabilistic data integration and schema matching, affording experiments to automatically verify claims against open data, providing a repository-wide "report card" for the utility of data and the reliability of the claims against them.
bio: |
Bill Howe is an Associate Professor in the Information School, Adjunct Associate Professor in Computer Science &amp; Engineering, and Associate Director and Senior Data Science Fellow at the UW eScience Institute. He is a co-founder of Urban@UW, and with support from the MacArthur Foundation and Microsoft, leads UW's participation in the MetroLab Network. He created a first MOOC on Data Science through Coursera, and led the creation of the UW Data Science Masters Degree, where he serves as its first Program Director and Faculty Chair. He also serves on the Steering Committee of the Center for Statistics in the Social Sciences.
headshot: "https://faculty.washington.edu/~billhowe/images/billhowe.png"
- when: May 15; Time TBD
what: Rethinking Query Execution on Big Data
who: Dan Suciu (University of Washington)

View file

@ -42,9 +42,10 @@ In this course, you will learn...
<li><strong>Project Groups</strong>: 1-3 people</li>
<li><strong>Grading</strong>:
<ul>
<li>50% exams<ul>
<li>25% Midterm on Mar.12 (in class)</li>
<li>25% Comprehensive Final on TBD</li>
<li>50% theory<ul>
<li>10% Homeworks (1%/homework, Only 10 best grades)</li>
<li>20% (or 15%) Midterm on Mar.12 (in class)</li>
<li>20% (or 25%) Comprehensive Final on TBD</li>
</ul>
</li>
<li>50% projects</li>