Skip to content

Instantly share code, notes, and snippets.

@aneeshdurg
Last active March 27, 2022 03:55
Show Gist options
  • Save aneeshdurg/4d39c4df650aa35fa36308bbd3650153 to your computer and use it in GitHub Desktop.
Save aneeshdurg/4d39c4df650aa35fa36308bbd3650153 to your computer and use it in GitHub Desktop.
A OpenCypher query to create a graph modelling the heirarchy of OpenCypher expressions
CREATE
(OC_AddOrSubtractExpression :AddOrSubtractExpression),
(OC_AndExpression :AndExpression),
(OC_AnonymousPatternPart :AnonymousPatternPart),
(OC_Atom :Atom),
(OC_BooleanLiteral :BooleanLiteral),
(OC_CaseAlternatives :CaseAlternatives),
(OC_CaseExpression :CaseExpression),
(OC_ComparisonExpression :ComparisonExpression),
(OC_Create :Create),
(OC_Cypher :Cypher),
(OC_Dash :Dash),
(OC_Delete :Delete),
(OC_DoubleLiteral :DoubleLiteral),
(OC_ExplicitProcedureInvocation :ExplicitProcedureInvocation),
(OC_Expression :Expression),
(OC_FilterExpression :FilterExpression),
(OC_FunctionInvocation :FunctionInvocation),
(OC_FunctionName :FunctionName),
(OC_IdInColl :IdInColl),
(OC_ImplicitProcedureInvocation :ImplicitProcedureInvocation),
(OC_InQueryCall :InQueryCall),
(OC_IntegerLiteral :IntegerLiteral),
(OC_LabelName :LabelName),
(OC_LeftArrowHead :LeftArrowHead),
(OC_Limit :Limit),
(OC_ListComprehension :ListComprehension),
(OC_ListLiteral :ListLiteral),
(OC_ListOperatorExpression :ListOperatorExpression),
(OC_Literal :Literal),
(OC_MapLiteral :MapLiteral),
(OC_Match :Match),
(OC_MergeAction :MergeAction),
(OC_Merge :Merge),
(OC_MultiPartQuery :MultiPartQuery),
(OC_MultiplyDivideModuloExpression :MultiplyDivideModuloExpression),
(OC_Namespace :Namespace),
(OC_NodeLabel :NodeLabel),
(OC_NodeLabels :NodeLabels),
(OC_NodePattern :NodePattern),
(OC_NotExpression :NotExpression),
(OC_NullOperatorExpression :NullOperatorExpression),
(OC_NumberLiteral :NumberLiteral),
(OC_OrExpression :OrExpression),
(OC_Order :Order),
(OC_Parameter :Parameter),
(OC_ParenthesizedExpression :ParenthesizedExpression),
(OC_PartialComparisonExpression :PartialComparisonExpression),
(OC_PatternComprehension :PatternComprehension),
(OC_Pattern :Pattern),
(OC_PatternElementChain :PatternElementChain),
(OC_PatternElement :PatternElement),
(OC_PatternPart :PatternPart),
(OC_PowerOfExpression :PowerOfExpression),
(OC_ProcedureName :ProcedureName),
(OC_ProcedureResultField :ProcedureResultField),
(OC_ProjectionBody :ProjectionBody),
(OC_ProjectionItem :ProjectionItem),
(OC_ProjectionItems :ProjectionItems),
(OC_Properties :Properties),
(OC_PropertyExpression :PropertyExpression),
(OC_PropertyKeyName :PropertyKeyName),
(OC_PropertyLookup :PropertyLookup),
(OC_PropertyOrLabelsExpression :PropertyOrLabelsExpression),
(OC_Query :Query),
(OC_RangeLiteral :RangeLiteral),
(OC_ReadingClause :ReadingClause),
(OC_RegularQuery :RegularQuery),
(OC_RelTypeName :RelTypeName),
(OC_RelationshipDetail :RelationshipDetail),
(OC_RelationshipPattern :RelationshipPattern),
(OC_RelationshipTypes :RelationshipTypes),
(OC_RelationshipsPattern :RelationshipsPattern),
(OC_Remove :Remove),
(OC_RemoveItem :RemoveItem),
(OC_ReservedWord :ReservedWord),
(OC_Return :Return),
(OC_RightArrowHead :RightArrowHead),
(OC_SchemaName :SchemaName),
(OC_Set :Set),
(OC_SetItem :SetItem),
(OC_SinglePartQuery :SinglePartQuery),
(OC_SingleQuery :SingleQuery),
(OC_Skip :Skip),
(OC_SortItem :SortItem),
(OC_StandaloneCall :StandaloneCall),
(OC_Statement :Statement),
(OC_StringListNullOperatorExpression :StringListNullOperatorExpression),
(OC_StringOperatorExpression :StringOperatorExpression),
(OC_SymbolicName :SymbolicName),
(OC_UnaryAddOrSubtractExpression :UnaryAddOrSubtractExpression),
(OC_Union :Union),
(OC_Unwind :Unwind),
(OC_UpdatingClause :UpdatingClause),
(OC_Variable :Variable),
(OC_Where :Where),
(OC_With :With),
(OC_XorExpression :XorExpression),
(OC_YieldItem :YieldItem),
(OC_YieldItems :YieldItems)
CREATE
(OC_AddOrSubtractExpression)-[:CHILD]->(OC_MultiplyDivideModuloExpression),
(OC_AndExpression)-[:CHILD]->(OC_NotExpression),
(OC_AnonymousPatternPart)-[:CHILD]->(OC_PatternElement),
(OC_Atom)-[:CHILD]->(OC_CaseExpression),
(OC_Atom)-[:CHILD]->(OC_FilterExpression),
(OC_Atom)-[:CHILD]->(OC_FunctionInvocation),
(OC_Atom)-[:CHILD]->(OC_ListComprehension),
(OC_Atom)-[:CHILD]->(OC_Literal),
(OC_Atom)-[:CHILD]->(OC_Parameter),
(OC_Atom)-[:CHILD]->(OC_ParenthesizedExpression),
(OC_Atom)-[:CHILD]->(OC_PatternComprehension),
(OC_Atom)-[:CHILD]->(OC_RelationshipsPattern),
(OC_Atom)-[:CHILD]->(OC_Variable),
(OC_CaseAlternatives)-[:CHILD]->(OC_Expression),
(OC_CaseExpression)-[:CHILD]->(OC_CaseAlternatives),
(OC_CaseExpression)-[:CHILD]->(OC_Expression),
(OC_ComparisonExpression)-[:CHILD]->(OC_AddOrSubtractExpression),
(OC_ComparisonExpression)-[:CHILD]->(OC_PartialComparisonExpression),
(OC_Create)-[:CHILD]->(OC_Pattern),
(OC_Cypher)-[:CHILD]->(OC_Statement),
(OC_Delete)-[:CHILD]->(OC_Expression),
(OC_ExplicitProcedureInvocation)-[:CHILD]->(OC_Expression),
(OC_ExplicitProcedureInvocation)-[:CHILD]->(OC_ProcedureName),
(OC_Expression)-[:CHILD]->(OC_OrExpression),
(OC_FilterExpression)-[:CHILD]->(OC_IdInColl),
(OC_FilterExpression)-[:CHILD]->(OC_Where),
(OC_FunctionInvocation)-[:CHILD]->(OC_Expression),
(OC_FunctionInvocation)-[:CHILD]->(OC_FunctionName),
(OC_FunctionName)-[:CHILD]->(OC_Namespace),
(OC_FunctionName)-[:CHILD]->(OC_SymbolicName),
(OC_IdInColl)-[:CHILD]->(OC_Expression),
(OC_IdInColl)-[:CHILD]->(OC_Variable),
(OC_ImplicitProcedureInvocation)-[:CHILD]->(OC_ProcedureName),
(OC_InQueryCall)-[:CHILD]->(OC_ExplicitProcedureInvocation),
(OC_InQueryCall)-[:CHILD]->(OC_YieldItems),
(OC_LabelName)-[:CHILD]->(OC_SchemaName),
(OC_Limit)-[:CHILD]->(OC_Expression),
(OC_ListComprehension)-[:CHILD]->(OC_Expression),
(OC_ListComprehension)-[:CHILD]->(OC_FilterExpression),
(OC_ListLiteral)-[:CHILD]->(OC_Expression),
(OC_ListOperatorExpression)-[:CHILD]->(OC_Expression),
(OC_ListOperatorExpression)-[:CHILD]->(OC_PropertyOrLabelsExpression),
(OC_Literal)-[:CHILD]->(OC_BooleanLiteral),
(OC_Literal)-[:CHILD]->(OC_ListLiteral),
(OC_Literal)-[:CHILD]->(OC_MapLiteral),
(OC_Literal)-[:CHILD]->(OC_NumberLiteral),
(OC_MapLiteral)-[:CHILD]->(OC_Expression),
(OC_MapLiteral)-[:CHILD]->(OC_PropertyKeyName),
(OC_Match)-[:CHILD]->(OC_Pattern),
(OC_Match)-[:CHILD]->(OC_Where),
(OC_MergeAction)-[:CHILD]->(OC_Set),
(OC_Merge)-[:CHILD]->(OC_MergeAction),
(OC_Merge)-[:CHILD]->(OC_PatternPart),
(OC_MultiPartQuery)-[:CHILD]->(OC_ReadingClause),
(OC_MultiPartQuery)-[:CHILD]->(OC_SinglePartQuery),
(OC_MultiPartQuery)-[:CHILD]->(OC_UpdatingClause),
(OC_MultiPartQuery)-[:CHILD]->(OC_With),
(OC_MultiplyDivideModuloExpression)-[:CHILD]->(OC_PowerOfExpression),
(OC_Namespace)-[:CHILD]->(OC_SymbolicName),
(OC_NodeLabel)-[:CHILD]->(OC_LabelName),
(OC_NodeLabels)-[:CHILD]->(OC_NodeLabel),
(OC_NodePattern)-[:CHILD]->(OC_NodeLabels),
(OC_NodePattern)-[:CHILD]->(OC_Properties),
(OC_NodePattern)-[:CHILD]->(OC_Variable),
(OC_NotExpression)-[:CHILD]->(OC_ComparisonExpression),
(OC_NumberLiteral)-[:CHILD]->(OC_DoubleLiteral),
(OC_NumberLiteral)-[:CHILD]->(OC_IntegerLiteral),
(OC_OrExpression)-[:CHILD]->(OC_XorExpression),
(OC_Order)-[:CHILD]->(OC_SortItem),
(OC_Parameter)-[:CHILD]->(OC_SymbolicName),
(OC_ParenthesizedExpression)-[:CHILD]->(OC_Expression),
(OC_PartialComparisonExpression)-[:CHILD]->(OC_AddOrSubtractExpression),
(OC_PatternComprehension)-[:CHILD]->(OC_Expression),
(OC_PatternComprehension)-[:CHILD]->(OC_RelationshipsPattern),
(OC_PatternComprehension)-[:CHILD]->(OC_Variable),
(OC_Pattern)-[:CHILD]->(OC_PatternPart),
(OC_PatternElementChain)-[:CHILD]->(OC_NodePattern),
(OC_PatternElementChain)-[:CHILD]->(OC_RelationshipPattern),
(OC_PatternElement)-[:CHILD]->(OC_NodePattern),
(OC_PatternElement)-[:CHILD]->(OC_PatternElement),
(OC_PatternElement)-[:CHILD]->(OC_PatternElementChain),
(OC_PatternPart)-[:CHILD]->(OC_AnonymousPatternPart),
(OC_PatternPart)-[:CHILD]->(OC_Variable),
(OC_PowerOfExpression)-[:CHILD]->(OC_UnaryAddOrSubtractExpression),
(OC_ProcedureName)-[:CHILD]->(OC_Namespace),
(OC_ProcedureName)-[:CHILD]->(OC_SymbolicName),
(OC_ProcedureResultField)-[:CHILD]->(OC_SymbolicName),
(OC_ProjectionBody)-[:CHILD]->(OC_Limit),
(OC_ProjectionBody)-[:CHILD]->(OC_Order),
(OC_ProjectionBody)-[:CHILD]->(OC_ProjectionItems),
(OC_ProjectionBody)-[:CHILD]->(OC_Skip),
(OC_ProjectionItem)-[:CHILD]->(OC_Expression),
(OC_ProjectionItem)-[:CHILD]->(OC_Variable),
(OC_ProjectionItems)-[:CHILD]->(OC_ProjectionItem),
(OC_Properties)-[:CHILD]->(OC_MapLiteral),
(OC_Properties)-[:CHILD]->(OC_Parameter),
(OC_PropertyExpression)-[:CHILD]->(OC_Atom),
(OC_PropertyExpression)-[:CHILD]->(OC_PropertyLookup),
(OC_PropertyKeyName)-[:CHILD]->(OC_SchemaName),
(OC_PropertyLookup)-[:CHILD]->(OC_PropertyKeyName),
(OC_PropertyOrLabelsExpression)-[:CHILD]->(OC_Atom),
(OC_PropertyOrLabelsExpression)-[:CHILD]->(OC_NodeLabels),
(OC_PropertyOrLabelsExpression)-[:CHILD]->(OC_PropertyLookup),
(OC_Query)-[:CHILD]->(OC_RegularQuery),
(OC_Query)-[:CHILD]->(OC_StandaloneCall),
(OC_RangeLiteral)-[:CHILD]->(OC_IntegerLiteral),
(OC_ReadingClause)-[:CHILD]->(OC_InQueryCall),
(OC_ReadingClause)-[:CHILD]->(OC_Match),
(OC_ReadingClause)-[:CHILD]->(OC_Unwind),
(OC_RegularQuery)-[:CHILD]->(OC_SingleQuery),
(OC_RegularQuery)-[:CHILD]->(OC_Union),
(OC_RelTypeName)-[:CHILD]->(OC_SchemaName),
(OC_RelationshipDetail)-[:CHILD]->(OC_Properties),
(OC_RelationshipDetail)-[:CHILD]->(OC_RangeLiteral),
(OC_RelationshipDetail)-[:CHILD]->(OC_RelationshipTypes),
(OC_RelationshipDetail)-[:CHILD]->(OC_Variable),
(OC_RelationshipPattern)-[:CHILD]->(OC_Dash),
(OC_RelationshipPattern)-[:CHILD]->(OC_LeftArrowHead),
(OC_RelationshipPattern)-[:CHILD]->(OC_RelationshipDetail),
(OC_RelationshipPattern)-[:CHILD]->(OC_RightArrowHead),
(OC_RelationshipTypes)-[:CHILD]->(OC_RelTypeName),
(OC_RelationshipsPattern)-[:CHILD]->(OC_NodePattern),
(OC_RelationshipsPattern)-[:CHILD]->(OC_PatternElementChain),
(OC_Remove)-[:CHILD]->(OC_RemoveItem),
(OC_RemoveItem)-[:CHILD]->(OC_NodeLabels),
(OC_RemoveItem)-[:CHILD]->(OC_PropertyExpression),
(OC_RemoveItem)-[:CHILD]->(OC_Variable),
(OC_Return)-[:CHILD]->(OC_ProjectionBody),
(OC_SchemaName)-[:CHILD]->(OC_ReservedWord),
(OC_SchemaName)-[:CHILD]->(OC_SymbolicName),
(OC_Set)-[:CHILD]->(OC_SetItem),
(OC_SetItem)-[:CHILD]->(OC_Expression),
(OC_SetItem)-[:CHILD]->(OC_NodeLabels),
(OC_SetItem)-[:CHILD]->(OC_PropertyExpression),
(OC_SetItem)-[:CHILD]->(OC_Variable),
(OC_SinglePartQuery)-[:CHILD]->(OC_ReadingClause),
(OC_SinglePartQuery)-[:CHILD]->(OC_Return),
(OC_SinglePartQuery)-[:CHILD]->(OC_UpdatingClause),
(OC_SingleQuery)-[:CHILD]->(OC_MultiPartQuery),
(OC_SingleQuery)-[:CHILD]->(OC_SinglePartQuery),
(OC_Skip)-[:CHILD]->(OC_Expression),
(OC_SortItem)-[:CHILD]->(OC_Expression),
(OC_StandaloneCall)-[:CHILD]->(OC_ExplicitProcedureInvocation),
(OC_StandaloneCall)-[:CHILD]->(OC_ImplicitProcedureInvocation),
(OC_StandaloneCall)-[:CHILD]->(OC_YieldItems),
(OC_Statement)-[:CHILD]->(OC_Query),
(OC_StringListNullOperatorExpression)-[:CHILD]->(OC_ListOperatorExpression),
(OC_StringListNullOperatorExpression)-[:CHILD]->(OC_NullOperatorExpression),
(OC_StringListNullOperatorExpression)-[:CHILD]->(OC_PropertyOrLabelsExpression),
(OC_StringListNullOperatorExpression)-[:CHILD]->(OC_StringOperatorExpression),
(OC_StringOperatorExpression)-[:CHILD]->(OC_PropertyOrLabelsExpression),
(OC_UnaryAddOrSubtractExpression)-[:CHILD]->(OC_StringListNullOperatorExpression),
(OC_Union)-[:CHILD]->(OC_SingleQuery),
(OC_Unwind)-[:CHILD]->(OC_Expression),
(OC_Unwind)-[:CHILD]->(OC_Variable),
(OC_UpdatingClause)-[:CHILD]->(OC_Create),
(OC_UpdatingClause)-[:CHILD]->(OC_Delete),
(OC_UpdatingClause)-[:CHILD]->(OC_Merge),
(OC_UpdatingClause)-[:CHILD]->(OC_Remove),
(OC_UpdatingClause)-[:CHILD]->(OC_Set),
(OC_Variable)-[:CHILD]->(OC_SymbolicName),
(OC_Where)-[:CHILD]->(OC_Expression),
(OC_With)-[:CHILD]->(OC_ProjectionBody),
(OC_With)-[:CHILD]->(OC_Where),
(OC_XorExpression)-[:CHILD]->(OC_AndExpression),
(OC_YieldItem)-[:CHILD]->(OC_ProcedureResultField),
(OC_YieldItem)-[:CHILD]->(OC_Variable),
(OC_YieldItems)-[:CHILD]->(OC_Where),
(OC_YieldItems)-[:CHILD]->(OC_YieldItem)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment