Skip to content

Instantly share code, notes, and snippets.

@JKrag
Last active August 29, 2015 13:56
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 JKrag/8965086 to your computer and use it in GitHub Desktop.
Save JKrag/8965086 to your computer and use it in GitHub Desktop.
GraphGist for Neo4J - now with a reduced dataset for better performance
= Exploring Cat pedigress in Neo4J
:author: Jan Krag
:twitter: @jankrag
This is a Neo4J GraphGist where I discover how to model pedigrees in Neo, and various Cypher queries to explore the data.
The data used is from a public available online pedigree of cats. I have stripped of all the names and registration data for simplicity.
From a large dataset, I have extracted all the cats belonging to the very small breeds, giving a total of about 1000 cats instead of 200K.
The following picture shows my general sketch of the data-model. The arrows between cats could also have been illustrated as "recursive" arrows
back to the same cat node-type, but I think that this visualisation better describes the DAG (Directed Acyclical Graph) property of a pedigree/family tree.
image::https://dl.dropboxusercontent.com/u/2965928/graphGistPedigreeModel.png[]
For simplicity, I initialize the whole thing in one giant cypher, in order to be able to directly reference the nodes being linked.
The following shows a small, non-executing, sample of the various types of data inserted:
[source]
----
//First we create some breed "groups" (mostly invented for the occasion)
CREATE
(s:GROUP {group:"SHORTHAIR"}),
(l:GROUP {group:"LONGHAIR"}),
(u:GROUP {group:"UNKNOWN"}),
(h:GROUP {group:"HAIRLESS"}),
(c:GROUP {group:"CURLY"}),
//then we add some actual breeds, mapping these to the relevant groups
(acs:BREED {code:"ACS"})-[:TYPE]->(s),
(ass:BREED {code:"ASS"})-[:TYPE]->(s),
(bom:BREED {code:"BOM"})-[:TYPE]->(s),
(sfl:BREED {code:"SFL"})-[:TYPE]->(l),
(nem:BREED {code:"NEM"})-[:TYPE]->(l),
//now we start adding actual cats, and their relationships to breeds
(c1683:Cat {id:"1683", gender:"M"}), (c1683)-[:IS_BREED]->(jbt),
(c1752:Cat {id:"1752", gender:"M"}), (c1752)-[:IS_BREED]->(dsp),
(c1753:Cat {id:"1753", gender:"F"}), (c1753)-[:IS_BREED]->(dsp),
(c1754:Cat {id:"1754", gender:"F"}), (c1754)-[:IS_BREED]->(dsp),
//and last but not least, the essential links between cats and their parents (Sires and Dams in cat-speak)
(c194001)-[:SIRE]->(c157246),
(c194161)-[:SIRE]->(c154457),
(c194266)-[:SIRE]->(c160595),
(c194267)-[:SIRE]->(c171182),
(c1754)-[:DAM]->(c1753),
(c2040)-[:DAM]->(c20975),
(c2075)-[:DAM]->(c12357),
(c2232)-[:DAM]->(c179738)
----
//setup
//hide
[source,cypher]
----
CREATE
(s:GROUP {group:"SHORTHAIR"}),
(l:GROUP {group:"LONGHAIR"}),
(c:GROUP {group:"CURLY"}),
(acs:BREED {code:"ACS"})-[:TYPE]->(s),
(ass:BREED {code:"ASS"})-[:TYPE]->(s),
(bom:BREED {code:"BOM"})-[:TYPE]->(s),
(sfl:BREED {code:"SFL"})-[:TYPE]->(l),
(nem:BREED {code:"NEM"})-[:TYPE]->(l),
(tha:BREED {code:"THA"})-[:TYPE]->(s),
(c)<-[:TYPE]-(srl:BREED {code:"SRL"})-[:TYPE]->(l),
(c)<-[:TYPE]-(srs:BREED {code:"SRS"})-[:TYPE]->(s),
(jbt:BREED {code:"JBT"})-[:TYPE]->(s),
(c3050:Cat {id:"3050", gender:"M"}), (c3050)-[:IS_BREED]->(jbt),
(c9877:Cat {id:"9877", gender:"M"}), (c9877)-[:IS_BREED]->(jbt),
(c9879:Cat {id:"9879", gender:"F"}), (c9879)-[:IS_BREED]->(jbt),
(c9880:Cat {id:"9880", gender:"F"}), (c9880)-[:IS_BREED]->(jbt),
(c9881:Cat {id:"9881", gender:"M"}), (c9881)-[:IS_BREED]->(jbt),
(c9883:Cat {id:"9883", gender:"F"}), (c9883)-[:IS_BREED]->(jbt),
(c9884:Cat {id:"9884", gender:"M"}), (c9884)-[:IS_BREED]->(jbt),
(c9885:Cat {id:"9885", gender:"F"}), (c9885)-[:IS_BREED]->(jbt),
(c9886:Cat {id:"9886", gender:"F"}), (c9886)-[:IS_BREED]->(jbt),
(c9887:Cat {id:"9887", gender:"F"}), (c9887)-[:IS_BREED]->(jbt),
(c9888:Cat {id:"9888", gender:"F"}), (c9888)-[:IS_BREED]->(jbt),
(c9889:Cat {id:"9889", gender:"F"}), (c9889)-[:IS_BREED]->(jbt),
(c9892:Cat {id:"9892", gender:"M"}), (c9892)-[:IS_BREED]->(jbt),
(c9894:Cat {id:"9894", gender:"F"}), (c9894)-[:IS_BREED]->(jbt),
(c9896:Cat {id:"9896", gender:"M"}), (c9896)-[:IS_BREED]->(jbt),
(c9897:Cat {id:"9897", gender:"M"}), (c9897)-[:IS_BREED]->(jbt),
(c9902:Cat {id:"9902", gender:"F"}), (c9902)-[:IS_BREED]->(jbt),
(c9903:Cat {id:"9903", gender:"F"}), (c9903)-[:IS_BREED]->(jbt),
(c9904:Cat {id:"9904", gender:"F"}), (c9904)-[:IS_BREED]->(jbt),
(c11093:Cat {id:"11093", gender:"F"}), (c11093)-[:IS_BREED]->(jbt),
(c11094:Cat {id:"11094", gender:"M"}), (c11094)-[:IS_BREED]->(jbt),
(c11095:Cat {id:"11095", gender:"F"}), (c11095)-[:IS_BREED]->(jbt),
(c11347:Cat {id:"11347", gender:"M"}), (c11347)-[:IS_BREED]->(srs),
(c11348:Cat {id:"11348", gender:"M"}), (c11348)-[:IS_BREED]->(srl),
(c11349:Cat {id:"11349", gender:"F"}), (c11349)-[:IS_BREED]->(srl),
(c11350:Cat {id:"11350", gender:"F"}), (c11350)-[:IS_BREED]->(srl),
(c11739:Cat {id:"11739", gender:"F"}), (c11739)-[:IS_BREED]->(srs),
(c11742:Cat {id:"11742", gender:"F"}), (c11742)-[:IS_BREED]->(srs),
(c11761:Cat {id:"11761", gender:"F"}), (c11761)-[:IS_BREED]->(srs),
(c14202:Cat {id:"14202", gender:"M"}), (c14202)-[:IS_BREED]->(srl),
(c16257:Cat {id:"16257", gender:"M"}), (c16257)-[:IS_BREED]->(jbt),
(c16412:Cat {id:"16412", gender:"M"}), (c16412)-[:IS_BREED]->(srl),
(c16413:Cat {id:"16413", gender:"M"}), (c16413)-[:IS_BREED]->(srs),
(c16414:Cat {id:"16414", gender:"M"}), (c16414)-[:IS_BREED]->(srl),
(c16415:Cat {id:"16415", gender:"M"}), (c16415)-[:IS_BREED]->(srs),
(c16416:Cat {id:"16416", gender:"M"}), (c16416)-[:IS_BREED]->(srs),
(c16417:Cat {id:"16417", gender:"M"}), (c16417)-[:IS_BREED]->(srl),
(c16418:Cat {id:"16418", gender:"F"}), (c16418)-[:IS_BREED]->(srl),
(c16419:Cat {id:"16419", gender:"F"}), (c16419)-[:IS_BREED]->(srl),
(c16420:Cat {id:"16420", gender:"F"}), (c16420)-[:IS_BREED]->(srs),
(c16579:Cat {id:"16579", gender:"M"}), (c16579)-[:IS_BREED]->(tha),
(c17443:Cat {id:"17443", gender:"M"}), (c17443)-[:IS_BREED]->(srl),
(c17550:Cat {id:"17550", gender:"M"}), (c17550)-[:IS_BREED]->(srs),
(c17551:Cat {id:"17551", gender:"M"}), (c17551)-[:IS_BREED]->(srs),
(c17556:Cat {id:"17556", gender:"M"}), (c17556)-[:IS_BREED]->(srs),
(c17558:Cat {id:"17558", gender:"F"}), (c17558)-[:IS_BREED]->(srs),
(c17564:Cat {id:"17564", gender:"F"}), (c17564)-[:IS_BREED]->(srs),
(c18085:Cat {id:"18085", gender:"F"}), (c18085)-[:IS_BREED]->(srl),
(c19002:Cat {id:"19002", gender:"F"}), (c19002)-[:IS_BREED]->(srl),
(c19004:Cat {id:"19004", gender:"M"}), (c19004)-[:IS_BREED]->(srl),
(c19909:Cat {id:"19909", gender:"F"}), (c19909)-[:IS_BREED]->(jbt),
(c22325:Cat {id:"22325", gender:"M"}), (c22325)-[:IS_BREED]->(srl),
(c22326:Cat {id:"22326", gender:"F"}), (c22326)-[:IS_BREED]->(srl),
(c22329:Cat {id:"22329", gender:"M"}), (c22329)-[:IS_BREED]->(srs),
(c22330:Cat {id:"22330", gender:"F"}), (c22330)-[:IS_BREED]->(srs),
(c23842:Cat {id:"23842", gender:"M"}), (c23842)-[:IS_BREED]->(srl),
(c26366:Cat {id:"26366", gender:"M"}), (c26366)-[:IS_BREED]->(srl),
(c26368:Cat {id:"26368", gender:"F"}), (c26368)-[:IS_BREED]->(srl),
(c34120:Cat {id:"34120", gender:"M"}), (c34120)-[:IS_BREED]->(srs),
(c36422:Cat {id:"36422", gender:"F"}), (c36422)-[:IS_BREED]->(srs),
(c36425:Cat {id:"36425", gender:"F"}), (c36425)-[:IS_BREED]->(srs),
(c36429:Cat {id:"36429", gender:"F"}), (c36429)-[:IS_BREED]->(srs),
(c36430:Cat {id:"36430", gender:"M"}), (c36430)-[:IS_BREED]->(srs),
(c42864:Cat {id:"42864", gender:"M"}), (c42864)-[:IS_BREED]->(srl),
(c45761:Cat {id:"45761", gender:"M"}), (c45761)-[:IS_BREED]->(srs),
(c72061:Cat {id:"72061", gender:"M"}), (c72061)-[:IS_BREED]->(srs),
(c72065:Cat {id:"72065", gender:"F"}), (c72065)-[:IS_BREED]->(srl),
(c72068:Cat {id:"72068", gender:"M"}), (c72068)-[:IS_BREED]->(srl),
(c72069:Cat {id:"72069", gender:"F"}), (c72069)-[:IS_BREED]->(srl),
(c79797:Cat {id:"79797", gender:"F"}), (c79797)-[:IS_BREED]->(srl),
(c83171:Cat {id:"83171", gender:"F"}), (c83171)-[:IS_BREED]->(srs),
(c85535:Cat {id:"85535", gender:"M"}), (c85535)-[:IS_BREED]->(srs),
(c85629:Cat {id:"85629", gender:"F"}), (c85629)-[:IS_BREED]->(srs),
(c85716:Cat {id:"85716", gender:"M"}), (c85716)-[:IS_BREED]->(srs),
(c86755:Cat {id:"86755", gender:"M"}), (c86755)-[:IS_BREED]->(srl),
(c89211:Cat {id:"89211", gender:"M"}), (c89211)-[:IS_BREED]->(srs),
(c89254:Cat {id:"89254", gender:"M"}), (c89254)-[:IS_BREED]->(sfl),
(c98411:Cat {id:"98411", gender:"M"}), (c98411)-[:IS_BREED]->(nem),
(c98431:Cat {id:"98431", gender:"F"}), (c98431)-[:IS_BREED]->(nem),
(c101923:Cat {id:"101923", gender:"F"}), (c101923)-[:IS_BREED]->(srs),
(c101929:Cat {id:"101929", gender:"F"}), (c101929)-[:IS_BREED]->(srl),
(c106246:Cat {id:"106246", gender:"M"}), (c106246)-[:IS_BREED]->(srs),
(c108207:Cat {id:"108207", gender:"F"}), (c108207)-[:IS_BREED]->(jbt),
(c108209:Cat {id:"108209", gender:"F"}), (c108209)-[:IS_BREED]->(jbt),
(c108212:Cat {id:"108212", gender:"M"}), (c108212)-[:IS_BREED]->(jbt),
(c108214:Cat {id:"108214", gender:"M"}), (c108214)-[:IS_BREED]->(jbt),
(c108226:Cat {id:"108226", gender:"M"}), (c108226)-[:IS_BREED]->(jbt),
(c108228:Cat {id:"108228", gender:"M"}), (c108228)-[:IS_BREED]->(jbt),
(c108229:Cat {id:"108229", gender:"M"}), (c108229)-[:IS_BREED]->(jbt),
(c108233:Cat {id:"108233", gender:"F"}), (c108233)-[:IS_BREED]->(jbt),
(c108234:Cat {id:"108234", gender:"F"}), (c108234)-[:IS_BREED]->(jbt),
(c118049:Cat {id:"118049", gender:"M"}), (c118049)-[:IS_BREED]->(srl),
(c120922:Cat {id:"120922", gender:"F"}), (c120922)-[:IS_BREED]->(bom),
(c121715:Cat {id:"121715", gender:"F"}), (c121715)-[:IS_BREED]->(srs),
(c122798:Cat {id:"122798", gender:"F"}), (c122798)-[:IS_BREED]->(srl),
(c123682:Cat {id:"123682", gender:"M"}), (c123682)-[:IS_BREED]->(srl),
(c125409:Cat {id:"125409", gender:"M"}), (c125409)-[:IS_BREED]->(jbt),
(c125539:Cat {id:"125539", gender:"F"}), (c125539)-[:IS_BREED]->(jbt),
(c127289:Cat {id:"127289", gender:"F"}), (c127289)-[:IS_BREED]->(srs),
(c128175:Cat {id:"128175", gender:"F"}), (c128175)-[:IS_BREED]->(jbt),
(c128176:Cat {id:"128176", gender:"F"}), (c128176)-[:IS_BREED]->(jbt),
(c128178:Cat {id:"128178", gender:"M"}), (c128178)-[:IS_BREED]->(jbt),
(c128179:Cat {id:"128179", gender:"M"}), (c128179)-[:IS_BREED]->(jbt),
(c129275:Cat {id:"129275", gender:"M"}), (c129275)-[:IS_BREED]->(srl),
(c131289:Cat {id:"131289", gender:"F"}), (c131289)-[:IS_BREED]->(srs),
(c133549:Cat {id:"133549", gender:"M"}), (c133549)-[:IS_BREED]->(srl),
(c134427:Cat {id:"134427", gender:"M"}), (c134427)-[:IS_BREED]->(srs),
(c134432:Cat {id:"134432", gender:"M"}), (c134432)-[:IS_BREED]->(srs),
(c134795:Cat {id:"134795", gender:"M"}), (c134795)-[:IS_BREED]->(srl),
(c134924:Cat {id:"134924", gender:"M"}), (c134924)-[:IS_BREED]->(srs),
(c136831:Cat {id:"136831", gender:"M"}), (c136831)-[:IS_BREED]->(srl),
(c136832:Cat {id:"136832", gender:"F"}), (c136832)-[:IS_BREED]->(srs),
(c137139:Cat {id:"137139", gender:"M"}), (c137139)-[:IS_BREED]->(srs),
(c137260:Cat {id:"137260", gender:"M"}), (c137260)-[:IS_BREED]->(srs),
(c137854:Cat {id:"137854", gender:"F"}), (c137854)-[:IS_BREED]->(srl),
(c137887:Cat {id:"137887", gender:"F"}), (c137887)-[:IS_BREED]->(jbt),
(c137888:Cat {id:"137888", gender:"F"}), (c137888)-[:IS_BREED]->(jbt),
(c137889:Cat {id:"137889", gender:"F"}), (c137889)-[:IS_BREED]->(jbt),
(c137892:Cat {id:"137892", gender:"F"}), (c137892)-[:IS_BREED]->(jbt),
(c137894:Cat {id:"137894", gender:"M"}), (c137894)-[:IS_BREED]->(jbt),
(c137896:Cat {id:"137896", gender:"M"}), (c137896)-[:IS_BREED]->(jbt),
(c137898:Cat {id:"137898", gender:"M"}), (c137898)-[:IS_BREED]->(jbt),
(c137900:Cat {id:"137900", gender:"F"}), (c137900)-[:IS_BREED]->(jbt),
(c137901:Cat {id:"137901", gender:"M"}), (c137901)-[:IS_BREED]->(jbt),
(c137902:Cat {id:"137902", gender:"M"}), (c137902)-[:IS_BREED]->(jbt),
(c137904:Cat {id:"137904", gender:"M"}), (c137904)-[:IS_BREED]->(jbt),
(c137907:Cat {id:"137907", gender:"F"}), (c137907)-[:IS_BREED]->(jbt),
(c137908:Cat {id:"137908", gender:"F"}), (c137908)-[:IS_BREED]->(jbt),
(c139209:Cat {id:"139209", gender:"F"}), (c139209)-[:IS_BREED]->(jbt),
(c140667:Cat {id:"140667", gender:"F"}), (c140667)-[:IS_BREED]->(srl),
(c140687:Cat {id:"140687", gender:"M"}), (c140687)-[:IS_BREED]->(jbt),
(c140747:Cat {id:"140747", gender:"M"}), (c140747)-[:IS_BREED]->(jbt),
(c140826:Cat {id:"140826", gender:"M"}), (c140826)-[:IS_BREED]->(jbt),
(c140831:Cat {id:"140831", gender:"M"}), (c140831)-[:IS_BREED]->(jbt),
(c140832:Cat {id:"140832", gender:"F"}), (c140832)-[:IS_BREED]->(jbt),
(c140835:Cat {id:"140835", gender:"F"}), (c140835)-[:IS_BREED]->(srs),
(c140836:Cat {id:"140836", gender:"M"}), (c140836)-[:IS_BREED]->(jbt),
(c142288:Cat {id:"142288", gender:"M"}), (c142288)-[:IS_BREED]->(srl),
(c142289:Cat {id:"142289", gender:"M"}), (c142289)-[:IS_BREED]->(srs),
(c142290:Cat {id:"142290", gender:"F"}), (c142290)-[:IS_BREED]->(srs),
(c142292:Cat {id:"142292", gender:"F"}), (c142292)-[:IS_BREED]->(srs),
(c142294:Cat {id:"142294", gender:"M"}), (c142294)-[:IS_BREED]->(srl),
(c143497:Cat {id:"143497", gender:"F"}), (c143497)-[:IS_BREED]->(jbt),
(c145017:Cat {id:"145017", gender:"F"}), (c145017)-[:IS_BREED]->(srl),
(c145018:Cat {id:"145018", gender:"F"}), (c145018)-[:IS_BREED]->(srl),
(c145019:Cat {id:"145019", gender:"M"}), (c145019)-[:IS_BREED]->(srl),
(c145020:Cat {id:"145020", gender:"F"}), (c145020)-[:IS_BREED]->(srl),
(c148486:Cat {id:"148486", gender:"M"}), (c148486)-[:IS_BREED]->(jbt),
(c148487:Cat {id:"148487", gender:"M"}), (c148487)-[:IS_BREED]->(jbt),
(c153400:Cat {id:"153400", gender:"F"}), (c153400)-[:IS_BREED]->(srl),
(c155570:Cat {id:"155570", gender:"F"}), (c155570)-[:IS_BREED]->(jbt),
(c155572:Cat {id:"155572", gender:"M"}), (c155572)-[:IS_BREED]->(jbt),
(c155744:Cat {id:"155744", gender:"F"}), (c155744)-[:IS_BREED]->(srl),
(c156056:Cat {id:"156056", gender:"M"}), (c156056)-[:IS_BREED]->(srs),
(c157198:Cat {id:"157198", gender:"M"}), (c157198)-[:IS_BREED]->(srs),
(c157564:Cat {id:"157564", gender:"F"}), (c157564)-[:IS_BREED]->(srl),
(c159389:Cat {id:"159389", gender:"M"}), (c159389)-[:IS_BREED]->(srl),
(c159390:Cat {id:"159390", gender:"M"}), (c159390)-[:IS_BREED]->(srl),
(c159391:Cat {id:"159391", gender:"M"}), (c159391)-[:IS_BREED]->(srs),
(c159392:Cat {id:"159392", gender:"F"}), (c159392)-[:IS_BREED]->(srl),
(c159394:Cat {id:"159394", gender:"M"}), (c159394)-[:IS_BREED]->(srl),
(c159395:Cat {id:"159395", gender:"F"}), (c159395)-[:IS_BREED]->(srl),
(c159398:Cat {id:"159398", gender:"F"}), (c159398)-[:IS_BREED]->(srl),
(c160132:Cat {id:"160132", gender:"M"}), (c160132)-[:IS_BREED]->(srl),
(c162107:Cat {id:"162107", gender:"F"}), (c162107)-[:IS_BREED]->(srs),
(c162196:Cat {id:"162196", gender:"F"}), (c162196)-[:IS_BREED]->(srl),
(c162197:Cat {id:"162197", gender:"M"}), (c162197)-[:IS_BREED]->(srs),
(c164225:Cat {id:"164225", gender:"M"}), (c164225)-[:IS_BREED]->(srl),
(c165496:Cat {id:"165496", gender:"F"}), (c165496)-[:IS_BREED]->(srl),
(c166188:Cat {id:"166188", gender:"M"}), (c166188)-[:IS_BREED]->(jbt),
(c166189:Cat {id:"166189", gender:"M"}), (c166189)-[:IS_BREED]->(jbt),
(c166190:Cat {id:"166190", gender:"F"}), (c166190)-[:IS_BREED]->(jbt),
(c166821:Cat {id:"166821", gender:"M"}), (c166821)-[:IS_BREED]->(srs),
(c166822:Cat {id:"166822", gender:"M"}), (c166822)-[:IS_BREED]->(srs),
(c169984:Cat {id:"169984", gender:"M"}), (c169984)-[:IS_BREED]->(srs),
(c170282:Cat {id:"170282", gender:"M"}), (c170282)-[:IS_BREED]->(srs),
(c170852:Cat {id:"170852", gender:"M"}), (c170852)-[:IS_BREED]->(srl),
(c172435:Cat {id:"172435", gender:"F"}), (c172435)-[:IS_BREED]->(srs),
(c172450:Cat {id:"172450", gender:"M"}), (c172450)-[:IS_BREED]->(srs),
(c174541:Cat {id:"174541", gender:"M"}), (c174541)-[:IS_BREED]->(tha),
(c176015:Cat {id:"176015", gender:"F"}), (c176015)-[:IS_BREED]->(srs),
(c176106:Cat {id:"176106", gender:"F"}), (c176106)-[:IS_BREED]->(srs),
(c176170:Cat {id:"176170", gender:"M"}), (c176170)-[:IS_BREED]->(jbt),
(c180530:Cat {id:"180530", gender:"M"}), (c180530)-[:IS_BREED]->(srl),
(c182942:Cat {id:"182942", gender:"M"}), (c182942)-[:IS_BREED]->(jbt),
(c182945:Cat {id:"182945", gender:"F"}), (c182945)-[:IS_BREED]->(jbt),
(c182950:Cat {id:"182950", gender:"F"}), (c182950)-[:IS_BREED]->(jbt),
(c182951:Cat {id:"182951", gender:"F"}), (c182951)-[:IS_BREED]->(jbt),
(c182952:Cat {id:"182952", gender:"F"}), (c182952)-[:IS_BREED]->(jbt),
(c182961:Cat {id:"182961", gender:"M"}), (c182961)-[:IS_BREED]->(jbt),
(c182962:Cat {id:"182962", gender:"M"}), (c182962)-[:IS_BREED]->(jbt),
(c182963:Cat {id:"182963", gender:"M"}), (c182963)-[:IS_BREED]->(jbt),
(c182964:Cat {id:"182964", gender:"F"}), (c182964)-[:IS_BREED]->(jbt),
(c182965:Cat {id:"182965", gender:"F"}), (c182965)-[:IS_BREED]->(jbt),
(c182966:Cat {id:"182966", gender:"F"}), (c182966)-[:IS_BREED]->(jbt),
(c182967:Cat {id:"182967", gender:"M"}), (c182967)-[:IS_BREED]->(jbt),
(c182968:Cat {id:"182968", gender:"F"}), (c182968)-[:IS_BREED]->(jbt),
(c182970:Cat {id:"182970", gender:"F"}), (c182970)-[:IS_BREED]->(jbt),
(c182971:Cat {id:"182971", gender:"F"}), (c182971)-[:IS_BREED]->(jbt),
(c182972:Cat {id:"182972", gender:"F"}), (c182972)-[:IS_BREED]->(jbt),
(c183058:Cat {id:"183058", gender:"M"}), (c183058)-[:IS_BREED]->(srs),
(c184041:Cat {id:"184041", gender:"F"}), (c184041)-[:IS_BREED]->(tha),
(c185741:Cat {id:"185741", gender:"M"}), (c185741)-[:IS_BREED]->(jbt),
(c187816:Cat {id:"187816", gender:"F"}), (c187816)-[:IS_BREED]->(srl),
(c190735:Cat {id:"190735", gender:"M"}), (c190735)-[:IS_BREED]->(srl),
(c190736:Cat {id:"190736", gender:"F"}), (c190736)-[:IS_BREED]->(srl),
(c190737:Cat {id:"190737", gender:"F"}), (c190737)-[:IS_BREED]->(srl),
(c192387:Cat {id:"192387", gender:"F"}), (c192387)-[:IS_BREED]->(srs),
(c192707:Cat {id:"192707", gender:"M"}), (c192707)-[:IS_BREED]->(srs),
(c193159:Cat {id:"193159", gender:"M"}), (c193159)-[:IS_BREED]->(srl),
(c193275:Cat {id:"193275", gender:"F"}), (c193275)-[:IS_BREED]->(jbt),
(c193276:Cat {id:"193276", gender:"F"}), (c193276)-[:IS_BREED]->(jbt),
(c193790:Cat {id:"193790", gender:"M"}), (c193790)-[:IS_BREED]->(srs),
(c193844:Cat {id:"193844", gender:"F"}), (c193844)-[:IS_BREED]->(srl),
(c194161:Cat {id:"194161", gender:"M"}), (c194161)-[:IS_BREED]->(nem),
(c3050)-[:SIRE]->(c148979),
(c9877)-[:SIRE]->(c9884),
(c9879)-[:SIRE]->(c19908),
(c9880)-[:SIRE]->(c9884),
(c9881)-[:SIRE]->(c9897),
(c9883)-[:SIRE]->(c9897),
(c9884)-[:SIRE]->(c140687),
(c9885)-[:SIRE]->(c9884),
(c9886)-[:SIRE]->(c9896),
(c9887)-[:SIRE]->(c9897),
(c9888)-[:SIRE]->(c140836),
(c9889)-[:SIRE]->(c9897),
(c9892)-[:SIRE]->(c9897),
(c9894)-[:SIRE]->(c9884),
(c9896)-[:SIRE]->(c9897),
(c9897)-[:SIRE]->(c128179),
(c9902)-[:SIRE]->(c9897),
(c9903)-[:SIRE]->(c166188),
(c9904)-[:SIRE]->(c9897),
(c11093)-[:SIRE]->(c9877),
(c11094)-[:SIRE]->(c9877),
(c11095)-[:SIRE]->(c148487),
(c11347)-[:SIRE]->(c159391),
(c11348)-[:SIRE]->(c159391),
(c11349)-[:SIRE]->(c159391),
(c11350)-[:SIRE]->(c11348),
(c11739)-[:SIRE]->(c120072),
(c11742)-[:SIRE]->(c22328),
(c11761)-[:SIRE]->(c118449),
(c14202)-[:SIRE]->(c184660),
(c16257)-[:SIRE]->(c16256),
(c16412)-[:SIRE]->(c16414),
(c16413)-[:SIRE]->(c16415),
(c16414)-[:SIRE]->(c16417),
(c16415)-[:SIRE]->(c16416),
(c16416)-[:SIRE]->(c159389),
(c16417)-[:SIRE]->(c11347),
(c16418)-[:SIRE]->(c11347),
(c16419)-[:SIRE]->(c159394),
(c16420)-[:SIRE]->(c159389),
(c16579)-[:SIRE]->(c174541),
(c17443)-[:SIRE]->(c143866),
(c17550)-[:SIRE]->(c17551),
(c17551)-[:SIRE]->(c17556),
(c17556)-[:SIRE]->(c17560),
(c17558)-[:SIRE]->(c17557),
(c17564)-[:SIRE]->(c8583),
(c18085)-[:SIRE]->(c129275),
(c19002)-[:SIRE]->(c191528),
(c19004)-[:SIRE]->(c150265),
(c19909)-[:SIRE]->(c176170),
(c22325)-[:SIRE]->(c180530),
(c22326)-[:SIRE]->(c150853),
(c22329)-[:SIRE]->(c183058),
(c22330)-[:SIRE]->(c126549),
(c23842)-[:SIRE]->(c156831),
(c26366)-[:SIRE]->(c26341),
(c26368)-[:SIRE]->(c26341),
(c34120)-[:SIRE]->(c17008),
(c36422)-[:SIRE]->(c16413),
(c36425)-[:SIRE]->(c22329),
(c36429)-[:SIRE]->(c17550),
(c36430)-[:SIRE]->(c16413),
(c42864)-[:SIRE]->(c58754),
(c45761)-[:SIRE]->(c181647),
(c72061)-[:SIRE]->(c15344),
(c72065)-[:SIRE]->(c15344),
(c72068)-[:SIRE]->(c15344),
(c72069)-[:SIRE]->(c15344),
(c79797)-[:SIRE]->(c172450),
(c83171)-[:SIRE]->(c181287),
(c85535)-[:SIRE]->(c16413),
(c85629)-[:SIRE]->(c112619),
(c85716)-[:SIRE]->(c16413),
(c86755)-[:SIRE]->(c131565),
(c89211)-[:SIRE]->(c16413),
(c89254)-[:SIRE]->(c377),
(c98411)-[:SIRE]->(c133548),
(c98431)-[:SIRE]->(c5023),
(c101923)-[:SIRE]->(c153736),
(c101929)-[:SIRE]->(c153736),
(c106246)-[:SIRE]->(c190439),
(c108207)-[:SIRE]->(c11094),
(c108209)-[:SIRE]->(c137902),
(c108212)-[:SIRE]->(c137902),
(c108214)-[:SIRE]->(c137902),
(c108226)-[:SIRE]->(c137902),
(c108228)-[:SIRE]->(c11094),
(c108229)-[:SIRE]->(c11094),
(c108233)-[:SIRE]->(c137902),
(c108234)-[:SIRE]->(c137902),
(c118049)-[:SIRE]->(c193059),
(c120922)-[:SIRE]->(c154831),
(c121715)-[:SIRE]->(c123147),
(c122798)-[:SIRE]->(c179689),
(c123682)-[:SIRE]->(c14247),
(c125409)-[:SIRE]->(c16258),
(c125539)-[:SIRE]->(c139208),
(c127289)-[:SIRE]->(c193603),
(c128175)-[:SIRE]->(c150738),
(c128176)-[:SIRE]->(c128178),
(c128178)-[:SIRE]->(c150738),
(c128179)-[:SIRE]->(c128178),
(c129275)-[:SIRE]->(c133549),
(c131289)-[:SIRE]->(c178073),
(c133549)-[:SIRE]->(c186282),
(c134427)-[:SIRE]->(c193411),
(c134432)-[:SIRE]->(c23469),
(c134795)-[:SIRE]->(c156670),
(c134924)-[:SIRE]->(c16070),
(c136831)-[:SIRE]->(c127075),
(c136832)-[:SIRE]->(c127075),
(c137139)-[:SIRE]->(c176705),
(c137260)-[:SIRE]->(c192386),
(c137854)-[:SIRE]->(c143277),
(c137887)-[:SIRE]->(c16257),
(c137888)-[:SIRE]->(c183381),
(c137889)-[:SIRE]->(c16257),
(c137892)-[:SIRE]->(c183381),
(c137894)-[:SIRE]->(c137895),
(c137896)-[:SIRE]->(c183381),
(c137898)-[:SIRE]->(c137896),
(c137900)-[:SIRE]->(c183381),
(c137901)-[:SIRE]->(c140826),
(c137902)-[:SIRE]->(c137901),
(c137904)-[:SIRE]->(c137894),
(c137907)-[:SIRE]->(c19907),
(c137908)-[:SIRE]->(c9900),
(c139209)-[:SIRE]->(c1683),
(c140667)-[:SIRE]->(c193159),
(c140687)-[:SIRE]->(c155568),
(c140747)-[:SIRE]->(c140827),
(c140826)-[:SIRE]->(c140831),
(c140831)-[:SIRE]->(c19910),
(c140832)-[:SIRE]->(c140829),
(c140835)-[:SIRE]->(c137260),
(c140836)-[:SIRE]->(c3050),
(c142288)-[:SIRE]->(c142293),
(c142289)-[:SIRE]->(c142288),
(c142290)-[:SIRE]->(c184992),
(c142292)-[:SIRE]->(c161604),
(c142294)-[:SIRE]->(c184992),
(c143497)-[:SIRE]->(c9899),
(c145017)-[:SIRE]->(c145019),
(c145018)-[:SIRE]->(c192707),
(c145019)-[:SIRE]->(c16412),
(c145020)-[:SIRE]->(c22325),
(c148486)-[:SIRE]->(c148488),
(c148487)-[:SIRE]->(c148486),
(c153400)-[:SIRE]->(c153399),
(c155570)-[:SIRE]->(c155571),
(c155572)-[:SIRE]->(c125409),
(c155744)-[:SIRE]->(c23097),
(c156056)-[:SIRE]->(c177923),
(c157198)-[:SIRE]->(c157199),
(c157564)-[:SIRE]->(c142294),
(c159389)-[:SIRE]->(c157198),
(c159390)-[:SIRE]->(c159399),
(c159391)-[:SIRE]->(c162197),
(c159392)-[:SIRE]->(c159390),
(c159394)-[:SIRE]->(c159397),
(c159395)-[:SIRE]->(c157196),
(c159398)-[:SIRE]->(c157199),
(c160132)-[:SIRE]->(c160130),
(c162107)-[:SIRE]->(c166822),
(c162196)-[:SIRE]->(c162197),
(c162197)-[:SIRE]->(c157198),
(c164225)-[:SIRE]->(c139027),
(c165496)-[:SIRE]->(c142289),
(c166188)-[:SIRE]->(c9893),
(c166189)-[:SIRE]->(c9893),
(c166190)-[:SIRE]->(c137898),
(c166821)-[:SIRE]->(c136831),
(c166822)-[:SIRE]->(c166821),
(c169984)-[:SIRE]->(c171524),
(c170282)-[:SIRE]->(c137139),
(c170852)-[:SIRE]->(c169071),
(c172435)-[:SIRE]->(c123669),
(c172450)-[:SIRE]->(c167506),
(c174541)-[:SIRE]->(c192244),
(c176015)-[:SIRE]->(c8190),
(c176106)-[:SIRE]->(c136146),
(c176170)-[:SIRE]->(c126393),
(c180530)-[:SIRE]->(c132814),
(c182942)-[:SIRE]->(c9892),
(c182945)-[:SIRE]->(c9892),
(c182950)-[:SIRE]->(c9892),
(c182951)-[:SIRE]->(c9892),
(c182952)-[:SIRE]->(c9881),
(c182961)-[:SIRE]->(c9881),
(c182962)-[:SIRE]->(c9881),
(c182963)-[:SIRE]->(c9881),
(c182964)-[:SIRE]->(c9881),
(c182965)-[:SIRE]->(c9881),
(c182966)-[:SIRE]->(c9881),
(c182967)-[:SIRE]->(c9881),
(c182968)-[:SIRE]->(c9881),
(c182970)-[:SIRE]->(c9881),
(c182971)-[:SIRE]->(c9881),
(c182972)-[:SIRE]->(c9881),
(c183058)-[:SIRE]->(c156056),
(c184041)-[:SIRE]->(c16579),
(c185741)-[:SIRE]->(c137902),
(c187816)-[:SIRE]->(c193664),
(c190735)-[:SIRE]->(c23842),
(c190736)-[:SIRE]->(c190735),
(c190737)-[:SIRE]->(c23842),
(c192387)-[:SIRE]->(c192388),
(c192707)-[:SIRE]->(c184939),
(c193159)-[:SIRE]->(c24470),
(c193275)-[:SIRE]->(c155572),
(c193276)-[:SIRE]->(c155572),
(c193790)-[:SIRE]->(c132814),
(c193844)-[:SIRE]->(c119352),
(c194161)-[:SIRE]->(c154457),
(c3050)-[:DAM]->(c3049),
(c9877)-[:DAM]->(c9903),
(c9879)-[:DAM]->(c187601),
(c9880)-[:DAM]->(c9901),
(c9881)-[:DAM]->(c19909),
(c9883)-[:DAM]->(c138931),
(c9884)-[:DAM]->(c143497),
(c9885)-[:DAM]->(c9886),
(c9886)-[:DAM]->(c9880),
(c9887)-[:DAM]->(c187602),
(c9888)-[:DAM]->(c9902),
(c9889)-[:DAM]->(c9904),
(c9892)-[:DAM]->(c166190),
(c9894)-[:DAM]->(c9903),
(c9896)-[:DAM]->(c137903),
(c9897)-[:DAM]->(c128176),
(c9902)-[:DAM]->(c9887),
(c9903)-[:DAM]->(c9883),
(c9904)-[:DAM]->(c9879),
(c11093)-[:DAM]->(c9885),
(c11094)-[:DAM]->(c11095),
(c11095)-[:DAM]->(c9894),
(c11347)-[:DAM]->(c159395),
(c11348)-[:DAM]->(c159395),
(c11349)-[:DAM]->(c159395),
(c11350)-[:DAM]->(c190737),
(c11739)-[:DAM]->(c11742),
(c11742)-[:DAM]->(c181826),
(c11761)-[:DAM]->(c127289),
(c14202)-[:DAM]->(c187923),
(c16257)-[:DAM]->(c5823),
(c16412)-[:DAM]->(c16419),
(c16413)-[:DAM]->(c16418),
(c16414)-[:DAM]->(c16420),
(c16415)-[:DAM]->(c11350),
(c16416)-[:DAM]->(c176106),
(c16417)-[:DAM]->(c159392),
(c16418)-[:DAM]->(c159392),
(c16419)-[:DAM]->(c11349),
(c16420)-[:DAM]->(c176106),
(c16579)-[:DAM]->(c162912),
(c17443)-[:DAM]->(c143868),
(c17550)-[:DAM]->(c17564),
(c17551)-[:DAM]->(c17559),
(c17556)-[:DAM]->(c17549),
(c17558)-[:DAM]->(c17554),
(c17564)-[:DAM]->(c17558),
(c18085)-[:DAM]->(c18086),
(c19002)-[:DAM]->(c19003),
(c19004)-[:DAM]->(c19002),
(c19909)-[:DAM]->(c125539),
(c22325)-[:DAM]->(c155744),
(c22326)-[:DAM]->(c132812),
(c22329)-[:DAM]->(c131289),
(c22330)-[:DAM]->(c140667),
(c23842)-[:DAM]->(c192387),
(c26366)-[:DAM]->(c26347),
(c26368)-[:DAM]->(c26347),
(c34120)-[:DAM]->(c14796),
(c36422)-[:DAM]->(c162107),
(c36425)-[:DAM]->(c162107),
(c36429)-[:DAM]->(c36422),
(c36430)-[:DAM]->(c162107),
(c42864)-[:DAM]->(c183415),
(c45761)-[:DAM]->(c38233),
(c72061)-[:DAM]->(c123061),
(c72065)-[:DAM]->(c123061),
(c72068)-[:DAM]->(c123061),
(c72069)-[:DAM]->(c123061),
(c79797)-[:DAM]->(c169995),
(c83171)-[:DAM]->(c171819),
(c85535)-[:DAM]->(c36425),
(c85629)-[:DAM]->(c36425),
(c85716)-[:DAM]->(c36425),
(c86755)-[:DAM]->(c131564),
(c89211)-[:DAM]->(c85629),
(c89254)-[:DAM]->(c89147),
(c98411)-[:DAM]->(c98431),
(c98431)-[:DAM]->(c5031),
(c101923)-[:DAM]->(c101928),
(c101929)-[:DAM]->(c101928),
(c106246)-[:DAM]->(c19623),
(c108207)-[:DAM]->(c193276),
(c108209)-[:DAM]->(c193276),
(c108212)-[:DAM]->(c193276),
(c108214)-[:DAM]->(c11093),
(c108226)-[:DAM]->(c11093),
(c108228)-[:DAM]->(c193276),
(c108229)-[:DAM]->(c193276),
(c108233)-[:DAM]->(c193276),
(c108234)-[:DAM]->(c11093),
(c118049)-[:DAM]->(c163991),
(c120922)-[:DAM]->(c131376),
(c121715)-[:DAM]->(c18896),
(c122798)-[:DAM]->(c122799),
(c123682)-[:DAM]->(c123679),
(c125409)-[:DAM]->(c155573),
(c125539)-[:DAM]->(c125540),
(c127289)-[:DAM]->(c22905),
(c128175)-[:DAM]->(c128177),
(c128176)-[:DAM]->(c139209),
(c128178)-[:DAM]->(c176317),
(c128179)-[:DAM]->(c128175),
(c129275)-[:DAM]->(c166018),
(c131289)-[:DAM]->(c11761),
(c133549)-[:DAM]->(c164064),
(c134427)-[:DAM]->(c157224),
(c134432)-[:DAM]->(c134433),
(c134795)-[:DAM]->(c19001),
(c134924)-[:DAM]->(c22330),
(c136831)-[:DAM]->(c132816),
(c136832)-[:DAM]->(c132816),
(c137139)-[:DAM]->(c23291),
(c137260)-[:DAM]->(c20477),
(c137854)-[:DAM]->(c146677),
(c137887)-[:DAM]->(c137892),
(c137888)-[:DAM]->(c137908),
(c137889)-[:DAM]->(c137892),
(c137892)-[:DAM]->(c137890),
(c137894)-[:DAM]->(c137905),
(c137896)-[:DAM]->(c137906),
(c137898)-[:DAM]->(c137907),
(c137900)-[:DAM]->(c137899),
(c137901)-[:DAM]->(c137887),
(c137902)-[:DAM]->(c137897),
(c137904)-[:DAM]->(c137900),
(c137907)-[:DAM]->(c128180),
(c137908)-[:DAM]->(c137891),
(c139209)-[:DAM]->(c139207),
(c140667)-[:DAM]->(c7776),
(c140687)-[:DAM]->(c140688),
(c140747)-[:DAM]->(c140833),
(c140826)-[:DAM]->(c140832),
(c140831)-[:DAM]->(c140828),
(c140832)-[:DAM]->(c140830),
(c140835)-[:DAM]->(c23643),
(c140836)-[:DAM]->(c3047),
(c142288)-[:DAM]->(c159393),
(c142289)-[:DAM]->(c142292),
(c142290)-[:DAM]->(c142291),
(c142292)-[:DAM]->(c154223),
(c142294)-[:DAM]->(c159393),
(c143497)-[:DAM]->(c175491),
(c145017)-[:DAM]->(c145018),
(c145018)-[:DAM]->(c18085),
(c145019)-[:DAM]->(c124711),
(c145020)-[:DAM]->(c11739),
(c148486)-[:DAM]->(c148489),
(c148487)-[:DAM]->(c9886),
(c153400)-[:DAM]->(c153397),
(c155570)-[:DAM]->(c9895),
(c155572)-[:DAM]->(c155570),
(c155744)-[:DAM]->(c118212),
(c156056)-[:DAM]->(c136832),
(c157198)-[:DAM]->(c192385),
(c157564)-[:DAM]->(c142290),
(c159389)-[:DAM]->(c137854),
(c159390)-[:DAM]->(c19378),
(c159391)-[:DAM]->(c19378),
(c159392)-[:DAM]->(c159398),
(c159394)-[:DAM]->(c159396),
(c159395)-[:DAM]->(c159400),
(c159398)-[:DAM]->(c17455),
(c160132)-[:DAM]->(c150666),
(c162107)-[:DAM]->(c162196),
(c162196)-[:DAM]->(c140835),
(c162197)-[:DAM]->(c137854),
(c164225)-[:DAM]->(c153398),
(c165496)-[:DAM]->(c136462),
(c166188)-[:DAM]->(c166187),
(c166189)-[:DAM]->(c166187),
(c166190)-[:DAM]->(c137888),
(c166821)-[:DAM]->(c9435),
(c166822)-[:DAM]->(c1531),
(c169984)-[:DAM]->(c122380),
(c170282)-[:DAM]->(c170283),
(c170852)-[:DAM]->(c170851),
(c172435)-[:DAM]->(c170589),
(c172450)-[:DAM]->(c172435),
(c174541)-[:DAM]->(c126858),
(c176015)-[:DAM]->(c132497),
(c176106)-[:DAM]->(c13011),
(c176170)-[:DAM]->(c183897),
(c180530)-[:DAM]->(c132817),
(c182942)-[:DAM]->(c182971),
(c182945)-[:DAM]->(c182971),
(c182950)-[:DAM]->(c182971),
(c182951)-[:DAM]->(c182971),
(c182952)-[:DAM]->(c182971),
(c182961)-[:DAM]->(c9888),
(c182962)-[:DAM]->(c9888),
(c182963)-[:DAM]->(c9888),
(c182964)-[:DAM]->(c182971),
(c182965)-[:DAM]->(c9888),
(c182966)-[:DAM]->(c182970),
(c182967)-[:DAM]->(c9888),
(c182968)-[:DAM]->(c182971),
(c182970)-[:DAM]->(c9888),
(c182971)-[:DAM]->(c9888),
(c182972)-[:DAM]->(c9888),
(c183058)-[:DAM]->(c182341),
(c184041)-[:DAM]->(c192575),
(c185741)-[:DAM]->(c193276),
(c187816)-[:DAM]->(c9454),
(c190735)-[:DAM]->(c157564),
(c190736)-[:DAM]->(c165496),
(c190737)-[:DAM]->(c157564),
(c192387)-[:DAM]->(c157197),
(c192707)-[:DAM]->(c176015),
(c193159)-[:DAM]->(c146693),
(c193275)-[:DAM]->(c179185),
(c193276)-[:DAM]->(c179185),
(c193790)-[:DAM]->(c142654),
(c193844)-[:DAM]->(c126143),
(c194161)-[:DAM]->(c5146)
----
== Let the fun begin
=== Show all breeds in the data set with their breed group association.
[source,cypher]
----
MATCH (b:BREED)-->(g:GROUP)
RETURN b.code,g.group
----
//table
=== Show all Japanese Bobtail males
[source,cypher]
----
MATCH (c:Cat)-[:IS_BREED]->(b)
WHERE b.code = 'JBT' AND c.gender = 'M'
RETURN c
----
//table
=== Show only those Japanese bobtail males that have sired kittens
[source,cypher]
----
MATCH (kitten:Cat)-[:`SIRE`]->(c:Cat)-[:IS_BREED]->(b)
WHERE b.code = 'JBT' AND c.gender = 'M'
RETURN DISTINCT c,b
----
//table
=== Find any Selkirk Rex Shorthairs (SRS) that have a parent that is Selkirk Rex Longhair (SRL)
[source,cypher]
----
MATCH (abreed)<-[:IS_BREED]-(a:Cat)-->(b:Cat)-[:IS_BREED]->(bbreed)
WHERE abreed.code = "SRS" AND bbreed.code = "SRL"
RETURN abreed,a,b,bbreed
----
//table
=== Ancestry & shortest path
Check that Cat 128175 is an ancestor of Cat 9883, and return the shortest path between them.
[source,cypher]
----
MATCH p = shortestPath( (a:Cat)-[r:`SIRE`|`DAM`*]->(b:Cat)) WHERE a.id = '9883' AND b.id = '128175' RETURN p
----
//table
=== Find the cat that has the most kittens:
[source,cypher]
----
MATCH (n:Cat)<-[r:`SIRE`|`DAM`]-(c:Cat)
RETURN n.id,
count(DISTINCT c) AS Kittens
ORDER BY Kittens DESC
LIMIT 1
----
//output
== More examples of interesting query examples within this domain:
* Show 3 generation pedigree of cat X (easy query, but difficult to visualize sensibly within the current limits of GraphGist)
* Show "reverse" pedigree of cat A (i.e. showing all children, grandchildren and so on)
* Find any common ancestors of A and B to depth n - very useful before deciding whether to mate A to B.
== And as a bonus...
we can't have all this talk of cats without a little "Handfull of hapiness"
image::https://dl.dropboxusercontent.com/u/2965928/Handful_of_happiness.jpg[]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment