:commit // it's easier just to create these labels after-the-fact rather than muddy // the query generation :begin MATCH (n:TameSymbol {type: "class"}) SET n:TameClass; MATCH (n:TameSymbol {type: "rate"}) SET n:TameRate; MATCH (n:TameSymbol {type: "gen"}) SET n:TameGen; MATCH (n:TameSymbol {type: "cgen"}) SET n:TameCgen; MATCH (n:TameSymbol {type: "type"}) SET n:TameType; MATCH (n:TameSymbol {type: "const"}) SET n:TameConst; MATCH (n:TameSymbol {type: "func"}) SET n:TameFunc; MATCH (n:TameSymbol {type: "param"}) SET n:TameParam; MATCH (n:TameSymbol {type: "map"}) SET n:TameMapInput; MATCH (n:TameSymbol {type: "retmap"}) SET n:TameMapReturn; MATCH (n:TameSymbol {extern: "true"}) SET n:TameExtern; MATCH (n:TameSymbol {generated: "true"}) SET n:TameSymbolGenerated; MATCH (n:TamePackage {program: "true"}) SET n:TameProgram; :commit // these are created in post.neo4j beacuse (a) they're used only for // querying and (b) they're more convenient to define with the new labels :begin CREATE INDEX ON :TameSymbol(name); CREATE INDEX ON :TameConst(value); CREATE INDEX ON :TameClass(orig_name); :commit // cleanup that's easier to do here than in XSLT :begin // typedefs define constants, not use them MATCH (c:TameConst)<-[r:USES]-(t:TameType) CREATE UNIQUE (c)<-[:DEFINES]-(t) DELETE r; // same with unions MATCH (t:TameType)<-[r:USES]-(u:TameType) CREATE UNIQUE (t)<-[:DEFINES]-(u) DELETE r; // maps map, not use MATCH (n:TameMapInput)-[r:USES]->(p:TameParam) CREATE (n)-[:MAPS]->(p) DELETE r; :commit // for convenience in querying; framework-wide conventions :begin MATCH (n:TameClass) WHERE n.orig_name STARTS WITH "submit-" SET n:SubmitRule; MATCH (n:TamePackage {program: "true"}) WHERE n.name STARTS WITH "suppliers/" SET n:Supplier; :commit // megarater-specific :begin MATCH (c:TameConst)<-[*0..3]-(:TameType {name: "classCode"}) SET c:ClassCode; :commit