<div dir="ltr">Hi Vit,<div><br></div><div style>Attached is an FQL++ query that performs the SELECT query from the slides, as per the second part of your second question. It&#39;s now included as a built-in example, called &quot;Select CTDB&quot;, in FQL++. I&#39;ll also include the code verbatim below.</div>

<div style><br></div><div style>David</div><div style><br></div><div style><br></div><div style>----------</div><div style><div>//The query from <a href="http://categoricaldata.net/fql/introSlides.pdf#page=45">http://categoricaldata.net/fql/introSlides.pdf#page=45</a></div>

<div>//It&#39;s best to go to options and choose &quot;Pi ID creation strategy&quot; to be &quot;Summary as ID&quot;.</div><div><br></div><div>category C = {</div><div><span class="" style="white-space:pre">        </span>objects </div>

<div><span class="" style="white-space:pre">                </span>RL3, //numbers less than 3.</div><div><span class="" style="white-space:pre">                </span>R,  //numbers</div><div><span class="" style="white-space:pre">                </span>Book,</div>

<div><span class="" style="white-space:pre">                </span>Isbn_num,</div><div><span class="" style="white-space:pre">                </span>String;</div><div><span class="" style="white-space:pre">        </span>arrows </div><div><span class="" style="white-space:pre">                </span>i:RL3-&gt;R,</div>

<div><span class="" style="white-space:pre">                </span>price:Book-&gt;R,</div><div><span class="" style="white-space:pre">                </span>title:Book-&gt;String,</div><div><span class="" style="white-space:pre">                </span>isbn:Book-&gt;Isbn_num;<span class="" style="white-space:pre">        </span></div>

<div><span class="" style="white-space:pre">        </span>equations;</div><div>}</div><div><br></div><div>functor I = {</div><div><span class="" style="white-space:pre">        </span>objects </div><div><span class="" style="white-space:pre">                </span>RL3-&gt;{1,2},</div>

<div><span class="" style="white-space:pre">                </span>R-&gt;{1,2,3,4,5},</div><div><span class="" style="white-space:pre">                </span>Book-&gt;{1,2,3},</div><div><span class="" style="white-space:pre">                </span>Isbn_num-&gt;{1,2,3,249,258,4597},</div>

<div><span class="" style="white-space:pre">                </span>String-&gt;{&quot;a&quot;,&quot;b&quot;,&quot;GoneWind&quot;,&quot;Catch22&quot;,&quot;CatTheory&quot;};</div><div><span class="" style="white-space:pre">        </span>arrows</div>

<div><span class="" style="white-space:pre">                </span>att-&gt;{(1,1),(2,2),(3,3),(4,4),(5,5)},</div><div><span class="" style="white-space:pre">                </span>title-&gt;{(1,&quot;GoneWind&quot;),(2,&quot;Catch22&quot;), (3,&quot;CatTheory&quot;)},</div>

<div><span class="" style="white-space:pre">                </span>isbn-&gt;{(1,258),(2,4597),(3,249)}, //Note the last digit of the ISBN is the number of letters in the title.</div><div><span class="" style="white-space:pre">                </span>i-&gt;{(1,1),(2,2)},</div>

<div><span class="" style="white-space:pre">                </span>price-&gt;{(1,4),(2,3),(3,1)};</div><div>} :  C-&gt;Set</div><div><br></div><div>//Note that there is exactly one book whose price is less than 3.</div><div><br></div>
<div>
category D = {</div><div><span class="" style="white-space:pre">        </span>objects </div><div><span class="" style="white-space:pre">                </span>RL3,</div><div><span class="" style="white-space:pre">                </span>R, </div><div><span class="" style="white-space:pre">                </span>W,</div>

<div><span class="" style="white-space:pre">                </span>Book,</div><div><span class="" style="white-space:pre">                </span>Isbn_num,</div><div><span class="" style="white-space:pre">                </span>String;</div><div><span class="" style="white-space:pre">        </span>arrows </div>

<div><span class="" style="white-space:pre">                </span>title:Book-&gt;String,</div><div><span class="" style="white-space:pre">                </span>isbn:Book-&gt;Isbn_num,</div><div><span class="" style="white-space:pre">                </span>f:W-&gt;RL3,</div>

<div><span class="" style="white-space:pre">                </span>g:W-&gt;Book,</div><div><span class="" style="white-space:pre">                </span>i:RL3-&gt;R,</div><div><span class="" style="white-space:pre">                </span>price:Book-&gt;R;<span class="" style="white-space:pre">        </span></div>

<div><span class="" style="white-space:pre">        </span>equations</div><div><span class="" style="white-space:pre">                </span>W.f.i=W.g.price;</div><div>}</div><div><br></div><div>functor F = {</div><div><span class="" style="white-space:pre">        </span>objects </div>

<div><span class="" style="white-space:pre">                </span>RL3-&gt;RL3, </div><div><span class="" style="white-space:pre">                </span>R-&gt;R, </div><div><span class="" style="white-space:pre">                </span>Book-&gt;Book,</div><div><span class="" style="white-space:pre">                </span>Isbn_num-&gt;Isbn_num,</div>

<div><span class="" style="white-space:pre">                </span>String-&gt;String;</div><div><span class="" style="white-space:pre">        </span>arrows </div><div><span class="" style="white-space:pre">                </span>i-&gt;RL3.i, </div><div><span class="" style="white-space:pre">                </span>price-&gt;Book.price,</div>

<div><span class="" style="white-space:pre">                </span>title-&gt;Book.title,</div><div><span class="" style="white-space:pre">                </span>isbn-&gt;Book.isbn;</div><div>} : C -&gt; D</div><div><br></div><div><br></div><div>functor pi_F_I = apply pi F on object I</div>

<div><br></div><div>category E = {</div><div><span class="" style="white-space:pre">        </span>objects W, String, Isbn_num;</div><div><span class="" style="white-space:pre">        </span>arrows title:W-&gt;String, isbn:W-&gt;Isbn_num;</div>

<div><span class="" style="white-space:pre">        </span>equations;</div><div>}</div><div><br></div><div>functor G = {</div><div><span class="" style="white-space:pre">        </span>objects W-&gt;W, String-&gt;String, Isbn_num-&gt;Isbn_num;</div>

<div><span class="" style="white-space:pre">        </span>arrows title-&gt;W.g.title, isbn-&gt;W.g.isbn;</div><div>} : E -&gt; D</div><div><br></div><div>functor Select = apply delta G on object pi_F_I</div><div><br></div></div>

</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jul 2, 2014 at 6:28 AM, Koksa, Vit <span dir="ltr">&lt;<a href="mailto:Vit.Koksa@honeywell.com" target="_blank">Vit.Koksa@honeywell.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Hi David,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Thank you a lot for the explanation and the piece of the FQL code which helped me to proceed with my exercise.<u></u><u></u></span></p>


<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Btw., the compilation of my code with a pi-ed instance with just a small amount of data seemed to last forever, before the SQL Engine was changed from Naïve
 to H2 in the Options (or before I reduced the small amount of data to really just a few items). Unchecking Elements and Observables and the other options of the viewer brought no significant speed-up there. As the long waiting periods might deter some new
 users I suggest to consider automatic switching from Naïve to H2 engine if the compilation doesn’t
</span><span lang="CS" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">finish after some
</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">time-out.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">With best regards.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Vit<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> David Spivak [mailto:<a href="mailto:dspivak@gmail.com" target="_blank">dspivak@gmail.com</a>]
<br>
<b>Sent:</b> Tuesday, July 01, 2014 7:33 PM<br>
<b>To:</b> Koksa, Vit<br>
<b>Cc:</b> <a href="mailto:categoricaldata_announce@categoricaldata.net" target="_blank">categoricaldata_announce@categoricaldata.net</a><br>
<b>Subject:</b> Re: [Categoricaldata_announce] newbie to FQL<u></u><u></u></span></p>
</div><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">Hi Vit,<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks for the email; I&#39;m glad you&#39;re using this tool and finding it a nice way to get acquainted with category theory. <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Your first question is a bit easier. The high-level answer is that &quot;the limit of an empty diagram is the terminal object&quot;. Basically since nothing is hitting a3 or a4, the sets that Pi puts there are empty products, i.e. terminal objects
 in Set. The terminal object in Set is the set with one element. You can see this issue as a kind of generalization of the fact that 5^0=1 because 5^0 is an empty product (multiply 5*5*5...&amp;5, but do it 0 times) and the answer is 1.<u></u><u></u></p>


</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Your second question is more involved. To answer your first question we will try to write an FQL file that does this example and send it to you (and the list) soon. As to your second question, given a schema S=[A   B] consisting of just
 two nodes, A and B, one can make a new schema T=[A &lt;--X ---&gt;B] with an additional object and two additional arrows. Then one can create a functor F: S--&gt;T. The query pi F will put the product into X with the foreign keys you want. See the attached FQL file.<u></u><u></u></p>


</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Best regards,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">David<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><u></u> <u></u></p>
<div>
<p class="MsoNormal">On Tue, Jul 1, 2014 at 5:28 AM, Koksa, Vit &lt;<a href="mailto:Vit.Koksa@honeywell.com" target="_blank">Vit.Koksa@honeywell.com</a>&gt; wrote:<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal">Hello,<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Is there any discussion forum on FQL available, please? I didn’t find any, so I resort to send my e-mail to this mailing list. The FQL IDE is a very interesting and user-friendly
 tool, it enables even people without a deep mathematical background like me to play with categories. But I don’t see things, which would be obvious to the more knowledgeable people.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">The questions which I have currently in mind are:<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">1.  The FQL sample code “Query Composition” contains the query q1: S -&gt; T . To see how the data migration proceeds inside this query I added these two instances:<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">instance Delta_sm = delta sm I<u></u><u></u></p>
<p class="MsoNormal">instance Pi_fm = pi fm Delta_sm<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">What I don’t understand is why both tables a3 and a4 in Pi_fm contain a record, when there is no mapping to these tables of the schema A from the tables of the schema B in the schema
 mapping fm.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">2. How would the example given on the slide 45 of
<a href="http://categoricaldata.net/fql/introSlides.pdf" target="_blank">http://categoricaldata.net/fql/introSlides.pdf</a> be encoded in FQL?
<u></u><u></u></p>
<p class="MsoNormal">(SELECT title, isbn FROM book WHERE price &gt; 100)<u></u><u></u></p>
<p class="MsoNormal">In particular and more generally I don’t know how to migrate data from nodes {a, b} to nodes {a, b, aXb} where aXb is the product/join of a and b, while “preserving” the foreign
 keys from aXb elements to their constituent parts in a and b.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">With regards.<u></u><u></u></p>
<p class="MsoNormal"><span style="color:#888888">Vit<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
_______________________________________________<br>
Categoricaldata_announce mailing list<br>
<a href="mailto:Categoricaldata_announce@categoricaldata.net" target="_blank">Categoricaldata_announce@categoricaldata.net</a><br>
<a href="https://lists.hcoop.net/listinfo/categoricaldata_announce" target="_blank">https://lists.hcoop.net/listinfo/categoricaldata_announce</a><u></u><u></u></p>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</div></div></div>
</div>

</blockquote></div><br></div>