Import Cypher from Arrow

We tried to parse the cypher syntax used to add graph elements to neo4j. See Import from Arrow.

It offered to write this in cypher.

CREATE (n1:Person {name: "Patric Cunningham"})-[:Father]->(n0:Person {name: "Ward Cunningham"})<-[:Father]-(n2:Person {name: "Christopher Cunningham"})-[:Mother]->(n3:Person {name: "Karen Cunningham"})<-[:Mother]-(n1)-[:Residence]->(:Town {name: "Medford"}), (n0)-[:Residence]->(:Town {name: "Portland"})<-[:Residence]-(n3), (n2)-[:Residence]->(:Town {name: "Seattle"})

This looks pretty easy to parse either open coded as recursive descent or run through a PEG generator.

create = 'CREATE' path (',' path)* path = node (relation node)+ node = '(' id (':' label props? )? ')' relation = '-' rel? '->' | '<-' rel? '-' rel = '[' id (: type props?)? ')'

http://ward.dojo.fed.wiki/assets/pages/import-from-arrow/parse-cypher.html HEIGHT 400