Skip to content

Instantly share code, notes, and snippets.

@kenwebb
Last active June 8, 2017 15:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kenwebb/9a17661d43849ee9eeb0aaf2cc395c8d to your computer and use it in GitHub Desktop.
Save kenwebb/9a17661d43849ee9eeb0aaf2cc395c8d to your computer and use it in GitHub Desktop.
Categorical Data IDE - AQL - Employees 3
<?xml version="1.0" encoding="UTF-8"?>
<!--Xholon Workbook http://www.primordion.com/Xholon/gwt/ MIT License, Copyright (C) Ken Webb, Thu Jun 08 2017 11:47:42 GMT-0400 (EDT)-->
<XholonWorkbook>
<Notes><![CDATA[
Xholon
------
Title: Categorical Data IDE - AQL - Employees 3
Description:
Url: http://www.primordion.com/Xholon/gwt/
InternalName: 9a17661d43849ee9eeb0aaf2cc395c8d based on 074f856a32c64e287a92b4292eb7d3c3
Keywords:
My Notes
--------
June 6, 2017
Test of CatAql.java in the new CatTheory mechanism.
Graphviz
--------
$wnd.xh.xport("Graphviz", $wnd.xh.root().parent().xpath("Chameleon/CattSystem/CatTheorySchema"), '{"gvFileExt":".gv","gvGraph":"digraph","layout":"dot","edgeOp":"->","gvCluster":"","shouldShowStateMachineEntities":false,"filter":"--Behavior,Script","nameTemplateNodeId":"^^^^i^","nameTemplateNodeLabel":"R^^^^^","shouldQuoteLabels":true,"shouldShowLinks":true,"shouldShowLinkLabels":true,"shouldSpecifyLayout":false,"maxLabelLen":-1,"shouldColor":true,"defaultColor":"#f0f8ff","shouldSpecifyShape":true,"shape":"ellipse","shouldSpecifySize":false,"size":"6","shouldSpecifyFontname":false,"fontname":"\"Courier New\"","shouldSpecifyArrowhead":true,"arrowhead":"vee","shouldSpecifyStylesheet":true,"stylesheet":"Xholon.css","shouldSpecifyRankdir":false,"rankdir":"LR","shouldDisplayGraph":true,"outputFormat":"svg"}');
$wnd.xh.xport("Graphviz", $wnd.xh.root().parent().xpath("Chameleon/CattSystem/CatTheoryInstance"), '{"gvFileExt":".gv","gvGraph":"digraph","layout":"dot","edgeOp":"->","gvCluster":"","shouldShowStateMachineEntities":false,"filter":"--Behavior,Script","nameTemplateNodeId":"^^^^i^","nameTemplateNodeLabel":"r C^^^","shouldQuoteLabels":true,"shouldShowLinks":true,"shouldShowLinkLabels":true,"shouldSpecifyLayout":false,"maxLabelLen":-1,"shouldColor":true,"defaultColor":"#f0f8ff","shouldSpecifyShape":true,"shape":"ellipse","shouldSpecifySize":false,"size":"6","shouldSpecifyFontname":false,"fontname":"\"Courier New\"","shouldSpecifyArrowhead":true,"arrowhead":"vee","shouldSpecifyStylesheet":true,"stylesheet":"Xholon.css","shouldSpecifyRankdir":true,"rankdir":"LR","shouldDisplayGraph":true,"outputFormat":"svg"}');
$wnd.xh.xport("Graphviz", $wnd.xh.root().parent().xpath("Chameleon/CattSystem"), '{"gvFileExt":".gv","gvGraph":"digraph","layout":"dot","edgeOp":"->","gvCluster":"","shouldShowStateMachineEntities":false,"filter":"--Behavior,Script","nameTemplateNodeId":"^^^^i^","nameTemplateNodeLabel":"R^^^^^","shouldQuoteLabels":true,"shouldShowLinks":true,"shouldShowLinkLabels":true,"shouldSpecifyLayout":false,"maxLabelLen":-1,"shouldColor":true,"defaultColor":"#f0f8ff","shouldSpecifyShape":true,"shape":"ellipse","shouldSpecifySize":false,"size":"6","shouldSpecifyFontname":false,"fontname":"\"Courier New\"","shouldSpecifyArrowhead":true,"arrowhead":"vee","shouldSpecifyStylesheet":true,"stylesheet":"Xholon.css","shouldSpecifyRankdir":false,"rankdir":"LR","shouldDisplayGraph":true,"outputFormat":"svg"}');
]]></Notes>
<_-.XholonClass>
<PhysicalSystem/>
<!-- check the Schema after everything has been loaded and configured -->
<!--<AqlSchemaChecker/>-->
</_-.XholonClass>
<xholonClassDetails>
</xholonClassDetails>
<PhysicalSystem>
<!--
I've put each statement on its own line, where possible.
-->
<CatAql instances="true" schemas="true" separateSchemaInstance="true" xhcName_System="CattSystem" setNodeSuffix="" pointToSchema="true"><![CDATA[
typeside Ty = literal {
types
string
nat
constants
Al Akin Bob Bo Carl Cork Dan Dunn Math CS : string
zero : nat
functions
succ : nat -> nat
plus : nat, nat -> nat
equations
forall x. plus(zero, x) = x
forall x, y. plus(succ(x),y) = succ(plus(x,y))
options
prover = completion
}
schema S = literal : Ty {
entities
Employee
Department
foreign_keys
manager : Employee -> Employee
worksIn : Employee -> Department
secretary : Department -> Employee
path_equations
manager.worksIn = worksIn
secretary.worksIn = Department
attributes
first last : Employee -> string
age : Employee -> nat
cummulative_age : Employee -> nat
name : Department -> string
observation_equations
forall e. cummulative_age(e) = plus(age(e), age(manager(e)))
options
prover = completion
}
instance I = literal : S {
generators
a b c : Employee
m s : Department
equations
first(a) = Al
first(b) = Bob
last(b) = Bo
first(c) = Carl
name(m) = Math
name(s) = CS
// age(a) = age(c)
manager(a) = b
manager(b) = b
manager(c) = c
worksIn(a) = m
worksIn(b) = m
worksIn(c) = s
secretary(s) = c
secretary(m) = b
// secretary(worksIn(a)) = manager(a)
// worksIn(a) = worksIn(manager(a))
// age(a) = zero.succ.succ
// age(manager(a)) = zero.succ
options
prover = completion
completion_precedence = "zero a b c m s Al Akin Bob Bo Carl Cork Dan Dunn Math CS first last name age manager worksIn secretary succ plus"
}
]]></CatAql>
<!--<AqlSchemaChecker/>-->
</PhysicalSystem>
<AqlSchemaCheckerbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[
// check foreign keys, path equations, and equations
var me, beh = {
postConfigure: function() {
me = this.cnode.parent();
me.println(me.xhc().name());
var node = me.parent().first();
while (node) {
switch (node.xhc().name()) {
case "Employee":
var links = node.links(false, true);
$wnd.console.log(links);
for (var i = 0; i < links.length; i++) {
var link = links[i];
var rnode = link.reffedNode;
if (rnode) {
switch (link.fieldName) {
case "manager":
// manager : Employee -> Employee
this.checkForeigKeyType("manager : Employee -> Employee ", rnode, "Employee");
// foreign_keys manager.worksIn = worksIn
me.println("manager.worksIn = worksIn " + (node.manager.worksIn == node.worksIn));
break;
case "worksIn":
// worksIn : Employee -> Department
this.checkForeigKeyType("worksIn : Employee -> Department ", rnode, "Department");
// equations secretary(worksIn(a)) = manager(a)
me.println("secretary(worksIn(a)) = manager(a) " + (node.worksIn.secretary == node.manager));
break;
default: break;
}
}
}
break;
case "Department":
var links = node.links(false, true);
$wnd.console.log(links);
for (var i = 0; i < links.length; i++) {
var link = links[i];
var rnode = link.reffedNode;
if (rnode) {
switch (link.fieldName) {
case "secretary":
// foreign_keys secretary : Department -> Employee
this.checkForeigKeyType("secretary : Department -> Employee ", rnode, "Employee");
// path_equation secretary.worksIn = Department
me.println("secretary.worksIn = Department " + (node.secretary.worksIn.xhc().name() == "Department"));
break;
default: break;
}
}
}
break;
default: break;
}
node = node.next();
}
},
checkForeigKeyType: function(label, node, expectedTypeName) {
me.println(label + (node.xhc().name() == expectedTypeName));
}
}
]]></AqlSchemaCheckerbehavior>
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml,
<?xml-stylesheet href="Xholon.css" type="text/css"?>
<!-- Generated by graphviz version 2.28.0 (20140111.2315)
-->
<!-- Title: 57 Pages: 1 -->
<svg width="350pt" height="249pt"
viewBox="0.00 0.00 350.22 248.80" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="CatTheorySchema" class="graph" transform="scale(1 1) rotate(0) translate(4 244.8)">
<title>57</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-244.8 346.224,-244.8 346.224,4 -4,4"/>
<text text-anchor="middle" x="171.112" y="-8.2" font-family="Times,serif" font-size="14.00">CatTheorySchema</text>
<!-- 48 -->
<g id="CatTheorySchema/string" class="node"><title>48</title>
<ellipse fill="#f0f8ff" stroke="black" cx="55.7095" cy="-42.8" rx="33.0468" ry="18"/>
<text text-anchor="middle" x="55.7095" y="-38.6" font-family="Times,serif" font-size="14.00">string</text>
</g>
<!-- 49 -->
<g id="CatTheorySchema/nat" class="node"><title>49</title>
<ellipse fill="#f0f8ff" stroke="black" cx="128.71" cy="-132.8" rx="27" ry="18"/>
<text text-anchor="middle" x="128.71" y="-128.6" font-family="Times,serif" font-size="14.00">nat</text>
</g>
<!-- 50 -->
<g id="CatTheorySchema/Employee" class="node"><title>50</title>
<ellipse fill="#f0f8ff" stroke="black" cx="109.71" cy="-222.8" rx="50.2862" ry="18"/>
<text text-anchor="middle" x="109.71" y="-218.6" font-family="Times,serif" font-size="14.00">Employee</text>
</g>
<!-- 50&#45;&gt;48 -->
<g id="CatTheorySchema_edge3" class="edge"><title>50&#45;&gt;48</title>
<path fill="none" stroke="black" d="M74.4743,-209.943C48.9197,-199.12 16.7273,-180.254 4.16253,-150.8 -8.5196,-121.071 13.6548,-87.6321 32.7548,-66.1726"/>
<polygon fill="black" stroke="black" points="39.5823,-58.8375 36.0629,-69.2233 36.1756,-62.4974 32.769,-66.1574 32.769,-66.1574 32.769,-66.1574 36.1756,-62.4974 29.4751,-63.0914 39.5823,-58.8375 39.5823,-58.8375"/>
<text text-anchor="middle" x="19.483" y="-128.6" font-family="Times,serif" font-size="14.00">first_</text>
</g>
<!-- 50&#45;&gt;48 -->
<g id="CatTheorySchema_edge4" class="edge"><title>50&#45;&gt;48</title>
<path fill="none" stroke="black" d="M96.351,-205.156C92.075,-199.489 87.4769,-193.014 83.7095,-186.8 74.4924,-171.597 71.0926,-167.912 66.2691,-150.8 58.8173,-124.364 56.4432,-92.9688 55.7715,-71.0485"/>
<polygon fill="black" stroke="black" points="55.5606,-60.8192 60.2659,-70.7243 55.6637,-65.8182 55.7668,-70.8171 55.7668,-70.8171 55.7668,-70.8171 55.6637,-65.8182 51.2678,-70.9099 55.5606,-60.8192 55.5606,-60.8192"/>
<text text-anchor="middle" x="79.9297" y="-128.6" font-family="Times,serif" font-size="14.00">last_</text>
</g>
<!-- 50&#45;&gt;49 -->
<g id="CatTheorySchema_edge5" class="edge"><title>50&#45;&gt;49</title>
<path fill="none" stroke="black" d="M96.5216,-205.374C89.7142,-194.809 83.863,-180.853 89.2803,-168.8 92.0384,-162.664 96.463,-157.166 101.37,-152.446"/>
<polygon fill="black" stroke="black" points="109.307,-145.689 104.61,-155.597 105.5,-148.93 101.693,-152.171 101.693,-152.171 101.693,-152.171 105.5,-148.93 98.7756,-148.744 109.307,-145.689 109.307,-145.689"/>
<text text-anchor="middle" x="99.4241" y="-173.6" font-family="Times,serif" font-size="14.00">age</text>
</g>
<!-- 50&#45;&gt;49 -->
<g id="CatTheorySchema_edge6" class="edge"><title>50&#45;&gt;49</title>
<path fill="none" stroke="black" d="M113.373,-204.833C116.08,-192.293 119.82,-174.972 122.929,-160.573"/>
<polygon fill="black" stroke="black" points="125.057,-150.715 127.345,-161.44 124.002,-155.603 122.947,-160.49 122.947,-160.49 122.947,-160.49 124.002,-155.603 118.548,-159.54 125.057,-150.715 125.057,-150.715"/>
<text text-anchor="middle" x="171.473" y="-173.6" font-family="Times,serif" font-size="14.00">cummulative_age</text>
</g>
<!-- 50&#45;&gt;50 -->
<g id="CatTheorySchema_edge1" class="edge"><title>50&#45;&gt;50</title>
<path fill="none" stroke="black" d="M154.507,-231.025C167.582,-230.741 177.71,-227.999 177.71,-222.8 177.71,-219.063 172.478,-216.596 164.68,-215.398"/>
<polygon fill="black" stroke="black" points="154.507,-214.575 164.837,-210.896 159.491,-214.978 164.474,-215.381 164.474,-215.381 164.474,-215.381 159.491,-214.978 164.111,-219.867 154.507,-214.575 154.507,-214.575"/>
<text text-anchor="middle" x="201.807" y="-218.6" font-family="Times,serif" font-size="14.00">manager</text>
</g>
<!-- 51 -->
<g id="CatTheorySchema/Department" class="node"><title>51</title>
<ellipse fill="#f0f8ff" stroke="black" cx="253.71" cy="-132.8" rx="56.4284" ry="18"/>
<text text-anchor="middle" x="253.71" y="-128.6" font-family="Times,serif" font-size="14.00">Department</text>
</g>
<!-- 50&#45;&gt;51 -->
<g id="CatTheorySchema_edge2" class="edge"><title>50&#45;&gt;51</title>
<path fill="none" stroke="black" d="M156.143,-216.04C178.798,-211.279 205.28,-202.601 224.71,-186.8 233.254,-179.851 239.668,-169.686 244.261,-160.113"/>
<polygon fill="black" stroke="black" points="248.26,-150.877 248.416,-161.842 246.273,-155.466 244.287,-160.054 244.287,-160.054 244.287,-160.054 246.273,-155.466 240.157,-158.266 248.26,-150.877 248.26,-150.877"/>
<text text-anchor="middle" x="262.646" y="-173.6" font-family="Times,serif" font-size="14.00">worksIn</text>
</g>
<!-- 51&#45;&gt;48 -->
<g id="CatTheorySchema_edge8" class="edge"><title>51&#45;&gt;48</title>
<path fill="none" stroke="black" d="M221.897,-117.661C185.772,-101.605 127.046,-75.5052 89.9451,-59.0158"/>
<polygon fill="black" stroke="black" points="80.5484,-54.8395 91.5141,-54.7888 85.1174,-56.8702 89.6865,-58.9009 89.6865,-58.9009 89.6865,-58.9009 85.1174,-56.8702 87.8588,-63.0131 80.5484,-54.8395 80.5484,-54.8395"/>
<text text-anchor="middle" x="191.369" y="-83.6" font-family="Times,serif" font-size="14.00">name_</text>
</g>
<!-- 51&#45;&gt;50 -->
<g id="CatTheorySchema_edge7" class="edge"><title>51&#45;&gt;50</title>
<path fill="none" stroke="black" d="M275.064,-149.478C287.296,-160.359 298.452,-174.968 288.71,-186.8 273.693,-205.037 215.369,-213.906 169.324,-218.131"/>
<polygon fill="black" stroke="black" points="159.112,-219.012 168.688,-213.669 164.093,-218.582 169.075,-218.152 169.075,-218.152 169.075,-218.152 164.093,-218.582 169.461,-222.635 159.112,-219.012 159.112,-219.012"/>
<text text-anchor="middle" x="316.967" y="-173.6" font-family="Times,serif" font-size="14.00">secretary</text>
</g>
</g>
</svg>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml,
<?xml-stylesheet href="Xholon.css" type="text/css"?>
<!-- Generated by graphviz version 2.28.0 (20140111.2315)
-->
<!-- Title: 58 Pages: 1 -->
<svg width="558pt" height="193pt"
viewBox="0.00 0.00 558.00 192.67" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="CatTheoryInstance" class="graph" transform="scale(1 1) rotate(0) translate(4 188.672)">
<title>58</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-188.672 554,-188.672 554,4 -4,4"/>
<text text-anchor="middle" x="275" y="-8.2" font-family="Times,serif" font-size="14.00">CatTheoryInstance</text>
<!-- 52 -->
<g id="CatTheoryInstance/Employee[@roleName=&#39;a&#39;]" class="node"><title>52</title>
<ellipse fill="#f0f8ff" stroke="black" cx="57" cy="-68.8715" rx="56.7833" ry="18"/>
<text text-anchor="middle" x="57" y="-64.6715" font-family="Times,serif" font-size="14.00">a Employee</text>
</g>
<!-- 53 -->
<g id="CatTheoryInstance/Employee[@roleName=&#39;b&#39;]" class="node"><title>53</title>
<ellipse fill="#f0f8ff" stroke="black" cx="265" cy="-72.8715" rx="57.3667" ry="18"/>
<text text-anchor="middle" x="265" y="-68.6715" font-family="Times,serif" font-size="14.00">b Employee</text>
</g>
<!-- 52&#45;&gt;53 -->
<g id="CatTheoryInstance_edge1" class="edge"><title>52&#45;&gt;53</title>
<path fill="none" stroke="black" d="M114.018,-69.9592C139.796,-70.4598 170.57,-71.0573 197.514,-71.5805"/>
<polygon fill="black" stroke="black" points="207.635,-71.777 197.55,-76.082 202.636,-71.6799 197.637,-71.5828 197.637,-71.5828 197.637,-71.5828 202.636,-71.6799 197.724,-67.0837 207.635,-71.777 207.635,-71.777"/>
<text text-anchor="middle" x="158" y="-76.0715" font-family="Times,serif" font-size="14.00">manager</text>
</g>
<!-- 55 -->
<g id="CatTheoryInstance/Department[@roleName=&#39;m&#39;]" class="node"><title>55</title>
<ellipse fill="#f0f8ff" stroke="black" cx="483" cy="-52.8715" rx="66.5912" ry="18"/>
<text text-anchor="middle" x="483" y="-48.6715" font-family="Times,serif" font-size="14.00">m Department</text>
</g>
<!-- 52&#45;&gt;55 -->
<g id="CatTheoryInstance_edge2" class="edge"><title>52&#45;&gt;55</title>
<path fill="none" stroke="black" d="M95.318,-55.5662C124.053,-46.0575 164.989,-34.0921 202,-29.0715 276.907,-18.9103 363.713,-29.7683 420.572,-39.9239"/>
<polygon fill="black" stroke="black" points="430.481,-41.7408 419.833,-44.3633 425.563,-40.839 420.645,-39.9371 420.645,-39.9371 420.645,-39.9371 425.563,-40.839 421.457,-35.5109 430.481,-41.7408 430.481,-41.7408"/>
<text text-anchor="middle" x="265" y="-34.0715" font-family="Times,serif" font-size="14.00">worksIn</text>
</g>
<!-- 53&#45;&gt;53 -->
<g id="CatTheoryInstance_edge3" class="edge"><title>53&#45;&gt;53</title>
<path fill="none" stroke="black" d="M246.217,-89.9088C242.383,-99.7294 248.645,-108.872 265,-108.872 275.222,-108.872 281.501,-105.3 283.837,-100.224"/>
<polygon fill="black" stroke="black" points="283.783,-89.9088 288.336,-99.8851 283.809,-94.9087 283.836,-99.9087 283.836,-99.9087 283.836,-99.9087 283.809,-94.9087 279.336,-99.9322 283.783,-89.9088 283.783,-89.9088"/>
<text text-anchor="middle" x="265" y="-113.072" font-family="Times,serif" font-size="14.00">manager</text>
</g>
<!-- 53&#45;&gt;55 -->
<g id="CatTheoryInstance_edge4" class="edge"><title>53&#45;&gt;55</title>
<path fill="none" stroke="black" d="M322.358,-74.4404C345.816,-74.4655 373.292,-73.6786 398,-70.8715 406.308,-69.9277 415.006,-68.534 423.524,-66.9327"/>
<polygon fill="black" stroke="black" points="433.407,-64.9721 424.474,-71.332 428.503,-65.9451 423.598,-66.918 423.598,-66.918 423.598,-66.918 428.503,-65.9451 422.723,-62.5041 433.407,-64.9721 433.407,-64.9721"/>
<text text-anchor="middle" x="372" y="-79.0715" font-family="Times,serif" font-size="14.00">worksIn</text>
</g>
<!-- 55&#45;&gt;53 -->
<g id="CatTheoryInstance_edge7" class="edge"><title>55&#45;&gt;53</title>
<path fill="none" stroke="black" d="M419.466,-47.4322C396.293,-46.5057 369.857,-46.7383 346,-50.0715 335.486,-51.5405 324.414,-54.0457 313.972,-56.8709"/>
<polygon fill="black" stroke="black" points="304.191,-59.6544 312.578,-52.5889 309,-58.2857 313.809,-56.9171 313.809,-56.9171 313.809,-56.9171 309,-58.2857 315.041,-61.2452 304.191,-59.6544 304.191,-59.6544"/>
<text text-anchor="middle" x="372" y="-55.0715" font-family="Times,serif" font-size="14.00">secretary</text>
</g>
<!-- 54 -->
<g id="CatTheoryInstance/Employee[@roleName=&#39;c&#39;]" class="node"><title>54</title>
<ellipse fill="#f0f8ff" stroke="black" cx="57" cy="-131.872" rx="56.7833" ry="18"/>
<text text-anchor="middle" x="57" y="-127.672" font-family="Times,serif" font-size="14.00">c Employee</text>
</g>
<!-- 54&#45;&gt;54 -->
<g id="CatTheoryInstance_edge5" class="edge"><title>54&#45;&gt;54</title>
<path fill="none" stroke="black" d="M39.1472,-149.281C35.8147,-158.959 41.7656,-167.872 57,-167.872 66.5215,-167.872 72.4166,-164.39 74.6854,-159.416"/>
<polygon fill="black" stroke="black" points="74.8528,-149.281 79.187,-159.354 74.7702,-154.281 74.6876,-159.28 74.6876,-159.28 74.6876,-159.28 74.7702,-154.281 70.1882,-159.206 74.8528,-149.281 74.8528,-149.281"/>
<text text-anchor="middle" x="57" y="-172.072" font-family="Times,serif" font-size="14.00">manager</text>
</g>
<!-- 56 -->
<g id="CatTheoryInstance/Department[@roleName=&#39;s&#39;]" class="node"><title>56</title>
<ellipse fill="#f0f8ff" stroke="black" cx="265" cy="-163.872" rx="62.5788" ry="18"/>
<text text-anchor="middle" x="265" y="-159.672" font-family="Times,serif" font-size="14.00">s Department</text>
</g>
<!-- 54&#45;&gt;56 -->
<g id="CatTheoryInstance_edge6" class="edge"><title>54&#45;&gt;56</title>
<path fill="none" stroke="black" d="M106.924,-140.686C115.283,-142.129 123.885,-143.575 132,-144.872 153.416,-148.293 176.833,-151.755 197.919,-154.769"/>
<polygon fill="black" stroke="black" points="208.064,-156.21 197.53,-159.259 203.113,-155.507 198.163,-154.803 198.163,-154.803 198.163,-154.803 203.113,-155.507 198.796,-150.348 208.064,-156.21 208.064,-156.21"/>
<text text-anchor="middle" x="158" y="-157.072" font-family="Times,serif" font-size="14.00">worksIn</text>
</g>
<!-- 56&#45;&gt;54 -->
<g id="CatTheoryInstance_edge8" class="edge"><title>56&#45;&gt;54</title>
<path fill="none" stroke="black" d="M231.676,-148.592C222.077,-143.958 211.572,-138.79 202,-133.872 193.898,-129.709 192.827,-126.319 184,-124.072 161.906,-118.447 136.962,-118.681 115.133,-120.942"/>
<polygon fill="black" stroke="black" points="105.02,-122.153 114.414,-116.496 109.985,-121.558 114.949,-120.964 114.949,-120.964 114.949,-120.964 109.985,-121.558 115.485,-125.432 105.02,-122.153 105.02,-122.153"/>
<text text-anchor="middle" x="158" y="-129.072" font-family="Times,serif" font-size="14.00">secretary</text>
</g>
</g>
</svg>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml,
<?xml-stylesheet href="Xholon.css" type="text/css"?>
<!-- Generated by graphviz version 2.28.0 (20140111.2315)
-->
<!-- Title: 47 Pages: 1 -->
<svg width="548pt" height="519pt"
viewBox="0.00 0.00 548.43 518.80" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="CattSystem" class="graph" transform="scale(1 1) rotate(0) translate(4 514.8)">
<title>47</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-514.8 544.429,-514.8 544.429,4 -4,4"/>
<text text-anchor="middle" x="270.215" y="-8.2" font-family="Times,serif" font-size="14.00">CattSystem</text>
<!-- 48 -->
<g id="CattSystem/CatTheorySchema/string" class="node"><title>48</title>
<ellipse fill="#f0f8ff" stroke="black" cx="317" cy="-42.8" rx="33.0468" ry="18"/>
<text text-anchor="middle" x="317" y="-38.6" font-family="Times,serif" font-size="14.00">string</text>
</g>
<!-- 49 -->
<g id="CattSystem/CatTheorySchema/nat" class="node"><title>49</title>
<ellipse fill="#f0f8ff" stroke="black" cx="496" cy="-132.8" rx="27" ry="18"/>
<text text-anchor="middle" x="496" y="-128.6" font-family="Times,serif" font-size="14.00">nat</text>
</g>
<!-- 50 -->
<g id="CattSystem/CatTheorySchema/Employee" class="node"><title>50</title>
<ellipse fill="#f0f8ff" stroke="black" cx="338" cy="-222.8" rx="50.2862" ry="18"/>
<text text-anchor="middle" x="338" y="-218.6" font-family="Times,serif" font-size="14.00">Employee</text>
</g>
<!-- 50&#45;&gt;48 -->
<g id="CattSystem_edge3" class="edge"><title>50&#45;&gt;48</title>
<path fill="none" stroke="black" d="M335.986,-204.733C332.333,-173.766 324.586,-108.099 320.201,-70.9292"/>
<polygon fill="black" stroke="black" points="319.007,-60.8157 324.648,-70.2196 319.593,-65.7813 320.179,-70.7468 320.179,-70.7468 320.179,-70.7468 319.593,-65.7813 315.71,-71.2741 319.007,-60.8157 319.007,-60.8157"/>
<text text-anchor="middle" x="344.774" y="-128.6" font-family="Times,serif" font-size="14.00">first_</text>
</g>
<!-- 50&#45;&gt;48 -->
<g id="CattSystem_edge4" class="edge"><title>50&#45;&gt;48</title>
<path fill="none" stroke="black" d="M346.695,-204.952C356.491,-183.729 369.95,-146.232 361,-114.8 356.16,-97.802 345.956,-80.8967 336.592,-67.8484"/>
<polygon fill="black" stroke="black" points="330.32,-59.4774 339.918,-64.7819 333.318,-63.4788 336.316,-67.4802 336.316,-67.4802 336.316,-67.4802 333.318,-63.4788 332.715,-70.1785 330.32,-59.4774 330.32,-59.4774"/>
<text text-anchor="middle" x="376.22" y="-128.6" font-family="Times,serif" font-size="14.00">last_</text>
</g>
<!-- 50&#45;&gt;49 -->
<g id="CattSystem_edge5" class="edge"><title>50&#45;&gt;49</title>
<path fill="none" stroke="black" d="M387.402,-219.012C434.589,-215.193 500.847,-206.417 517,-186.8 524.104,-178.172 520.855,-166.844 515.004,-156.876"/>
<polygon fill="black" stroke="black" points="509.387,-148.568 518.716,-154.332 512.188,-152.71 514.988,-156.852 514.988,-156.852 514.988,-156.852 512.188,-152.71 511.261,-159.373 509.387,-148.568 509.387,-148.568"/>
<text text-anchor="middle" x="530.715" y="-173.6" font-family="Times,serif" font-size="14.00">age</text>
</g>
<!-- 50&#45;&gt;49 -->
<g id="CattSystem_edge6" class="edge"><title>50&#45;&gt;49</title>
<path fill="none" stroke="black" d="M363.481,-207.261C373.294,-201.309 384.434,-194.108 394,-186.8 403.366,-179.645 403.574,-175.196 413.474,-168.8 428.594,-159.032 446.897,-150.946 462.421,-145.016"/>
<polygon fill="black" stroke="black" points="472.16,-141.434 464.328,-149.109 467.467,-143.16 462.774,-144.886 462.774,-144.886 462.774,-144.886 467.467,-143.16 461.221,-140.662 472.16,-141.434 472.16,-141.434"/>
<text text-anchor="middle" x="462.763" y="-173.6" font-family="Times,serif" font-size="14.00">cummulative_age</text>
</g>
<!-- 50&#45;&gt;50 -->
<g id="CattSystem_edge1" class="edge"><title>50&#45;&gt;50</title>
<path fill="none" stroke="black" d="M382.797,-231.025C395.872,-230.741 406,-227.999 406,-222.8 406,-219.063 400.768,-216.596 392.97,-215.398"/>
<polygon fill="black" stroke="black" points="382.797,-214.575 393.128,-210.896 387.781,-214.978 392.765,-215.381 392.765,-215.381 392.765,-215.381 387.781,-214.978 392.402,-219.867 382.797,-214.575 382.797,-214.575"/>
<text text-anchor="middle" x="430.097" y="-218.6" font-family="Times,serif" font-size="14.00">manager</text>
</g>
<!-- 51 -->
<g id="CattSystem/CatTheorySchema/Department" class="node"><title>51</title>
<ellipse fill="#f0f8ff" stroke="black" cx="203" cy="-132.8" rx="56.4284" ry="18"/>
<text text-anchor="middle" x="203" y="-128.6" font-family="Times,serif" font-size="14.00">Department</text>
</g>
<!-- 50&#45;&gt;51 -->
<g id="CattSystem_edge2" class="edge"><title>50&#45;&gt;51</title>
<path fill="none" stroke="black" d="M291.808,-215.706C257.585,-210.143 215.067,-200.66 204.128,-186.8 198.472,-179.634 197.03,-170.065 197.385,-161.031"/>
<polygon fill="black" stroke="black" points="198.482,-150.846 201.885,-161.271 197.946,-155.818 197.411,-160.789 197.411,-160.789 197.411,-160.789 197.946,-155.818 192.936,-160.306 198.482,-150.846 198.482,-150.846"/>
<text text-anchor="middle" x="227.936" y="-173.6" font-family="Times,serif" font-size="14.00">worksIn</text>
</g>
<!-- 51&#45;&gt;48 -->
<g id="CattSystem_edge8" class="edge"><title>51&#45;&gt;48</title>
<path fill="none" stroke="black" d="M221.237,-115.515C233.528,-104.757 250.254,-90.5326 265.68,-78.8 272.714,-73.4507 280.502,-67.9401 287.842,-62.9195"/>
<polygon fill="black" stroke="black" points="296.18,-57.2899 290.41,-66.6153 292.036,-60.0878 287.892,-62.8858 287.892,-62.8858 287.892,-62.8858 292.036,-60.0878 285.374,-59.1563 296.18,-57.2899 296.18,-57.2899"/>
<text text-anchor="middle" x="284.66" y="-83.6" font-family="Times,serif" font-size="14.00">name_</text>
</g>
<!-- 51&#45;&gt;50 -->
<g id="CattSystem_edge7" class="edge"><title>51&#45;&gt;50</title>
<path fill="none" stroke="black" d="M224.573,-149.768C232.577,-155.718 241.72,-162.545 250,-168.8 260.493,-176.728 262.453,-179.642 273.485,-186.8 282.144,-192.418 291.782,-197.984 300.913,-202.97"/>
<polygon fill="black" stroke="black" points="309.82,-207.742 298.88,-206.986 305.413,-205.381 301.005,-203.019 301.005,-203.019 301.005,-203.019 305.413,-205.381 303.131,-199.053 309.82,-207.742 309.82,-207.742"/>
<text text-anchor="middle" x="299.257" y="-173.6" font-family="Times,serif" font-size="14.00">secretary</text>
</g>
<!-- 52 -->
<g id="CattSystem/CatTheoryInstance/Employee[@roleName=&#39;a&#39;]" class="node"><title>52</title>
<ellipse fill="#f0f8ff" stroke="black" cx="338" cy="-492.8" rx="27" ry="18"/>
<text text-anchor="middle" x="338" y="-488.6" font-family="Times,serif" font-size="14.00">a</text>
</g>
<!-- 52&#45;&gt;50 -->
<g id="CattSystem_edge17" class="edge"><title>52&#45;&gt;50</title>
<path fill="none" stroke="black" d="M352.386,-477.247C364.535,-463.855 381.034,-442.79 388,-420.8 393.632,-403.02 399.57,-334.369 387,-294.8 381.532,-277.588 370.343,-260.837 360.036,-247.933"/>
<polygon fill="black" stroke="black" points="353.46,-240.042 363.319,-244.843 356.661,-243.883 359.862,-247.724 359.862,-247.724 359.862,-247.724 356.661,-243.883 356.405,-250.605 353.46,-240.042 353.46,-240.042"/>
<text text-anchor="middle" x="414.99" y="-353.6" font-family="Times,serif" font-size="14.00">schema</text>
</g>
<!-- 54 -->
<g id="CattSystem/CatTheoryInstance/Employee[@roleName=&#39;b&#39;]" class="node"><title>54</title>
<ellipse fill="#f0f8ff" stroke="black" cx="285" cy="-312.8" rx="27" ry="18"/>
<text text-anchor="middle" x="285" y="-308.6" font-family="Times,serif" font-size="14.00">b</text>
</g>
<!-- 52&#45;&gt;54 -->
<g id="CattSystem_edge9" class="edge"><title>52&#45;&gt;54</title>
<path fill="none" stroke="black" d="M338.417,-474.61C338.439,-446.814 335.741,-390.868 316,-348.8 313.773,-344.053 310.696,-339.474 307.34,-335.279"/>
<polygon fill="black" stroke="black" points="300.692,-327.745 310.682,-332.266 304,-331.494 307.308,-335.243 307.308,-335.243 307.308,-335.243 304,-331.494 303.934,-338.221 300.692,-327.745 300.692,-327.745"/>
<text text-anchor="middle" x="360.098" y="-398.6" font-family="Times,serif" font-size="14.00">manager</text>
</g>
<!-- 58 -->
<g id="CattSystem/CatTheoryInstance/Department[@roleName=&#39;m&#39;]" class="node"><title>58</title>
<ellipse fill="#f0f8ff" stroke="black" cx="239" cy="-402.8" rx="27" ry="18"/>
<text text-anchor="middle" x="239" y="-398.6" font-family="Times,serif" font-size="14.00">m</text>
</g>
<!-- 52&#45;&gt;58 -->
<g id="CattSystem_edge10" class="edge"><title>52&#45;&gt;58</title>
<path fill="none" stroke="black" d="M316.378,-481.88C304.327,-475.713 289.503,-467.019 278.128,-456.8 269.008,-448.607 260.666,-437.983 254.049,-428.401"/>
<polygon fill="black" stroke="black" points="248.484,-419.993 257.756,-425.848 251.243,-424.162 254.003,-428.332 254.003,-428.332 254.003,-428.332 251.243,-424.162 250.25,-430.816 248.484,-419.993 248.484,-419.993"/>
<text text-anchor="middle" x="301.936" y="-443.6" font-family="Times,serif" font-size="14.00">worksIn</text>
</g>
<!-- 54&#45;&gt;50 -->
<g id="CattSystem_edge18" class="edge"><title>54&#45;&gt;50</title>
<path fill="none" stroke="black" d="M294.721,-295.659C302.492,-282.757 313.533,-264.425 322.518,-249.507"/>
<polygon fill="black" stroke="black" points="327.799,-240.738 326.494,-251.626 325.219,-245.021 322.639,-249.304 322.639,-249.304 322.639,-249.304 325.219,-245.021 318.785,-246.983 327.799,-240.738 327.799,-240.738"/>
<text text-anchor="middle" x="337.99" y="-263.6" font-family="Times,serif" font-size="14.00">schema</text>
</g>
<!-- 54&#45;&gt;54 -->
<g id="CattSystem_edge11" class="edge"><title>54&#45;&gt;54</title>
<path fill="none" stroke="black" d="M309.532,-320.921C320.508,-321.695 330,-318.988 330,-312.8 330,-308.643 325.715,-306.057 319.574,-305.042"/>
<polygon fill="black" stroke="black" points="309.532,-304.679 319.688,-300.543 314.529,-304.859 319.526,-305.04 319.526,-305.04 319.526,-305.04 314.529,-304.859 319.363,-309.537 309.532,-304.679 309.532,-304.679"/>
<text text-anchor="middle" x="354.098" y="-308.6" font-family="Times,serif" font-size="14.00">manager</text>
</g>
<!-- 54&#45;&gt;58 -->
<g id="CattSystem_edge12" class="edge"><title>54&#45;&gt;58</title>
<path fill="none" stroke="black" d="M276.461,-330.136C269.666,-343.135 260.039,-361.552 252.245,-376.461"/>
<polygon fill="black" stroke="black" points="247.437,-385.659 248.082,-374.713 249.753,-381.228 252.07,-376.797 252.07,-376.797 252.07,-376.797 249.753,-381.228 256.058,-378.882 247.437,-385.659 247.437,-385.659"/>
<text text-anchor="middle" x="289.936" y="-353.6" font-family="Times,serif" font-size="14.00">worksIn</text>
</g>
<!-- 58&#45;&gt;51 -->
<g id="CattSystem_edge20" class="edge"><title>58&#45;&gt;51</title>
<path fill="none" stroke="black" d="M220.115,-389.747C211.995,-383.724 203.009,-375.799 197,-366.8 173.739,-331.964 175.31,-318.214 169.021,-276.8 162.75,-235.501 178.393,-188.547 190.488,-160.058"/>
<polygon fill="black" stroke="black" points="194.577,-150.79 194.657,-161.755 192.558,-155.364 190.54,-159.939 190.54,-159.939 190.54,-159.939 192.558,-155.364 186.423,-158.123 194.577,-150.79 194.577,-150.79"/>
<text text-anchor="middle" x="190.989" y="-263.6" font-family="Times,serif" font-size="14.00">schema</text>
</g>
<!-- 58&#45;&gt;54 -->
<g id="CattSystem_edge15" class="edge"><title>58&#45;&gt;54</title>
<path fill="none" stroke="black" d="M221.074,-389.2C208.108,-378.485 194.344,-362.673 203.485,-348.8 213.59,-333.464 231.969,-324.821 248.72,-319.963"/>
<polygon fill="black" stroke="black" points="258.852,-317.402 250.26,-324.216 254.004,-318.627 249.157,-319.853 249.157,-319.853 249.157,-319.853 254.004,-318.627 248.054,-315.49 258.852,-317.402 258.852,-317.402"/>
<text text-anchor="middle" x="229.257" y="-353.6" font-family="Times,serif" font-size="14.00">secretary</text>
</g>
<!-- 56 -->
<g id="CattSystem/CatTheoryInstance/Employee[@roleName=&#39;c&#39;]" class="node"><title>56</title>
<ellipse fill="#f0f8ff" stroke="black" cx="49" cy="-312.8" rx="27" ry="18"/>
<text text-anchor="middle" x="49" y="-308.6" font-family="Times,serif" font-size="14.00">c</text>
</g>
<!-- 56&#45;&gt;50 -->
<g id="CattSystem_edge19" class="edge"><title>56&#45;&gt;50</title>
<path fill="none" stroke="black" d="M75.2926,-307.918C108.377,-302.657 166.714,-292.125 215,-276.8 231.299,-271.627 269.471,-254.903 299.002,-241.609"/>
<polygon fill="black" stroke="black" points="308.247,-237.432 300.987,-245.65 303.691,-239.491 299.134,-241.549 299.134,-241.549 299.134,-241.549 303.691,-239.491 297.281,-237.448 308.247,-237.432 308.247,-237.432"/>
<text text-anchor="middle" x="278.99" y="-263.6" font-family="Times,serif" font-size="14.00">schema</text>
</g>
<!-- 56&#45;&gt;56 -->
<g id="CattSystem_edge13" class="edge"><title>56&#45;&gt;56</title>
<path fill="none" stroke="black" d="M73.5325,-320.921C84.5078,-321.695 94,-318.988 94,-312.8 94,-308.643 89.7151,-306.057 83.5743,-305.042"/>
<polygon fill="black" stroke="black" points="73.5325,-304.679 83.6885,-300.543 78.5292,-304.859 83.5259,-305.04 83.5259,-305.04 83.5259,-305.04 78.5292,-304.859 83.3634,-309.537 73.5325,-304.679 73.5325,-304.679"/>
<text text-anchor="middle" x="118.097" y="-308.6" font-family="Times,serif" font-size="14.00">manager</text>
</g>
<!-- 60 -->
<g id="CattSystem/CatTheoryInstance/Department[@roleName=&#39;s&#39;]" class="node"><title>60</title>
<ellipse fill="#f0f8ff" stroke="black" cx="27" cy="-402.8" rx="27" ry="18"/>
<text text-anchor="middle" x="27" y="-398.6" font-family="Times,serif" font-size="14.00">s</text>
</g>
<!-- 56&#45;&gt;60 -->
<g id="CattSystem_edge14" class="edge"><title>56&#45;&gt;60</title>
<path fill="none" stroke="black" d="M65.3104,-327.64C75.768,-338.271 86.1545,-353.36 79,-366.8 74.4185,-375.406 66.6747,-382.276 58.5432,-387.569"/>
<polygon fill="black" stroke="black" points="49.6989,-392.703 56.0884,-383.791 54.0232,-390.193 58.3475,-387.683 58.3475,-387.683 58.3475,-387.683 54.0232,-390.193 60.6066,-391.575 49.6989,-392.703 49.6989,-392.703"/>
<text text-anchor="middle" x="104.936" y="-353.6" font-family="Times,serif" font-size="14.00">worksIn</text>
</g>
<!-- 60&#45;&gt;51 -->
<g id="CattSystem_edge21" class="edge"><title>60&#45;&gt;51</title>
<path fill="none" stroke="black" d="M19.5423,-385.377C10.8195,-363.626 -0.784024,-324.547 13,-294.8 44.036,-227.821 118.188,-178.569 164.139,-153.192"/>
<polygon fill="black" stroke="black" points="173.211,-148.289 166.553,-157.002 168.812,-150.666 164.414,-153.044 164.414,-153.044 164.414,-153.044 168.812,-150.666 162.274,-149.085 173.211,-148.289 173.211,-148.289"/>
<text text-anchor="middle" x="55.9895" y="-263.6" font-family="Times,serif" font-size="14.00">schema</text>
</g>
<!-- 60&#45;&gt;56 -->
<g id="CattSystem_edge16" class="edge"><title>60&#45;&gt;56</title>
<path fill="none" stroke="black" d="M23.2273,-384.704C21.6108,-374.125 20.8279,-360.396 24.4852,-348.8 25.7299,-344.853 27.5961,-340.965 29.7538,-337.297"/>
<polygon fill="black" stroke="black" points="35.5302,-328.724 33.674,-339.532 32.7361,-332.871 29.9421,-337.017 29.9421,-337.017 29.9421,-337.017 32.7361,-332.871 26.2103,-334.503 35.5302,-328.724 35.5302,-328.724"/>
<text text-anchor="middle" x="50.2574" y="-353.6" font-family="Times,serif" font-size="14.00">secretary</text>
</g>
</g>
</svg>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
</XholonWorkbook>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment