packages feed

hydra-pg-0.17.0: src/main/haskell/OpenGql/Grammar.hs

-- Note: this is an automatically generated file. Do not edit.
-- | A GQL model based on the OpenGQL ANTLR grammar, version 15b256b (2024-09-05), available at: https://github.com/opengql/grammar/blob/main/GQL.g4

module OpenGql.Grammar where
import qualified Hydra.Core as Core
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.Scientific as Sci
data GqlProgram =
  GqlProgram {
    gqlProgramActivity :: (Maybe ProgramActivity),
    gqlProgramClose :: (Maybe SessionCloseCommand)}
  deriving (Eq, Ord, Read, Show)
_GqlProgram = Core.Name "openGql.grammar.GqlProgram"
_GqlProgram_activity = Core.Name "activity"
_GqlProgram_close = Core.Name "close"
data ProgramActivity =
  ProgramActivitySession SessionActivity |
  ProgramActivityTransaction TransactionActivity
  deriving (Eq, Ord, Read, Show)
_ProgramActivity = Core.Name "openGql.grammar.ProgramActivity"
_ProgramActivity_session = Core.Name "session"
_ProgramActivity_transaction = Core.Name "transaction"
data SessionActivity =
  SessionActivityReset [SessionResetCommand] |
  SessionActivitySetAndResetCommands SessionSetAndResetCommands
  deriving (Eq, Ord, Read, Show)
_SessionActivity = Core.Name "openGql.grammar.SessionActivity"
_SessionActivity_reset = Core.Name "reset"
_SessionActivity_setAndResetCommands = Core.Name "setAndResetCommands"
data SessionSetAndResetCommands =
  SessionSetAndResetCommands {
    sessionSetAndResetCommandsSet :: [SessionSetCommand],
    sessionSetAndResetCommandsReset :: [SessionResetCommand]}
  deriving (Eq, Ord, Read, Show)
_SessionSetAndResetCommands = Core.Name "openGql.grammar.SessionSetAndResetCommands"
_SessionSetAndResetCommands_set = Core.Name "set"
_SessionSetAndResetCommands_reset = Core.Name "reset"
data TransactionActivity =
  TransactionActivityStart StartAndMaybeProcedureAndMaybeEnd |
  TransactionActivityProcedure ProcedureAndMaybeEnd |
  TransactionActivityEnd EndTransactionCommand
  deriving (Eq, Ord, Read, Show)
_TransactionActivity = Core.Name "openGql.grammar.TransactionActivity"
_TransactionActivity_start = Core.Name "start"
_TransactionActivity_procedure = Core.Name "procedure"
_TransactionActivity_end = Core.Name "end"
data StartAndMaybeProcedureAndMaybeEnd =
  StartAndMaybeProcedureAndMaybeEnd {
    startAndMaybeProcedureAndMaybeEndStart :: StartTransactionCommand,
    startAndMaybeProcedureAndMaybeEndProcedureAndEnd :: (Maybe ProcedureAndMaybeEnd)}
  deriving (Eq, Ord, Read, Show)
_StartAndMaybeProcedureAndMaybeEnd = Core.Name "openGql.grammar.StartAndMaybeProcedureAndMaybeEnd"
_StartAndMaybeProcedureAndMaybeEnd_start = Core.Name "start"
_StartAndMaybeProcedureAndMaybeEnd_procedureAndEnd = Core.Name "procedureAndEnd"
data ProcedureAndMaybeEnd =
  ProcedureAndMaybeEnd {
    procedureAndMaybeEndProcedure :: ProcedureSpecification,
    procedureAndMaybeEndEnd :: (Maybe EndTransactionCommand)}
  deriving (Eq, Ord, Read, Show)
_ProcedureAndMaybeEnd = Core.Name "openGql.grammar.ProcedureAndMaybeEnd"
_ProcedureAndMaybeEnd_procedure = Core.Name "procedure"
_ProcedureAndMaybeEnd_end = Core.Name "end"
data EndTransactionCommand =
  EndTransactionCommandRollback RollbackCommand |
  EndTransactionCommandCommit CommitCommand
  deriving (Eq, Ord, Read, Show)
_EndTransactionCommand = Core.Name "openGql.grammar.EndTransactionCommand"
_EndTransactionCommand_rollback = Core.Name "rollback"
_EndTransactionCommand_commit = Core.Name "commit"
data SessionSetCommand =
  SessionSetCommandSchema SessionSetSchemaClause |
  SessionSetCommandGraph SessionSetGraphClause |
  SessionSetCommandTimeZone SessionSetTimeZoneClause |
  SessionSetCommandParameter SessionSetParameterClause
  deriving (Eq, Ord, Read, Show)
_SessionSetCommand = Core.Name "openGql.grammar.SessionSetCommand"
_SessionSetCommand_schema = Core.Name "schema"
_SessionSetCommand_graph = Core.Name "graph"
_SessionSetCommand_timeZone = Core.Name "timeZone"
_SessionSetCommand_parameter = Core.Name "parameter"
type SessionSetSchemaClause = SchemaReference
_SessionSetSchemaClause = Core.Name "openGql.grammar.SessionSetSchemaClause"
type SessionSetGraphClause = GraphExpression
_SessionSetGraphClause = Core.Name "openGql.grammar.SessionSetGraphClause"
type SessionSetTimeZoneClause = SetTimeZoneValue
_SessionSetTimeZoneClause = Core.Name "openGql.grammar.SessionSetTimeZoneClause"
type SetTimeZoneValue = TimeZoneString
_SetTimeZoneValue = Core.Name "openGql.grammar.SetTimeZoneValue"
data SessionSetParameterClause =
  SessionSetParameterClauseGraph SessionSetGraphParameterClause |
  SessionSetParameterClauseBindings SessionSetBindingTableParameterClause |
  SessionSetParameterClauseValue SessionSetValueParameterClause
  deriving (Eq, Ord, Read, Show)
_SessionSetParameterClause = Core.Name "openGql.grammar.SessionSetParameterClause"
_SessionSetParameterClause_graph = Core.Name "graph"
_SessionSetParameterClause_bindings = Core.Name "bindings"
_SessionSetParameterClause_value = Core.Name "value"
data SessionSetGraphParameterClause =
  SessionSetGraphParameterClause {
    sessionSetGraphParameterClauseGraph :: SessionSetParameterName,
    sessionSetGraphParameterClauseInitializer :: OptTypedGraphInitializer}
  deriving (Eq, Ord, Read, Show)
_SessionSetGraphParameterClause = Core.Name "openGql.grammar.SessionSetGraphParameterClause"
_SessionSetGraphParameterClause_graph = Core.Name "graph"
_SessionSetGraphParameterClause_initializer = Core.Name "initializer"
data SessionSetBindingTableParameterClause =
  SessionSetBindingTableParameterClause {
    sessionSetBindingTableParameterClauseBinding :: Bool,
    sessionSetBindingTableParameterClauseParam :: SessionSetParameterName,
    sessionSetBindingTableParameterClauseInit :: OptTypedBindingTableInitializer}
  deriving (Eq, Ord, Read, Show)
_SessionSetBindingTableParameterClause = Core.Name "openGql.grammar.SessionSetBindingTableParameterClause"
_SessionSetBindingTableParameterClause_binding = Core.Name "binding"
_SessionSetBindingTableParameterClause_param = Core.Name "param"
_SessionSetBindingTableParameterClause_init = Core.Name "init"
data SessionSetValueParameterClause =
  SessionSetValueParameterClause {
    sessionSetValueParameterClauseValue :: SessionSetParameterName,
    sessionSetValueParameterClauseInitializer :: OptTypedValueInitializer}
  deriving (Eq, Ord, Read, Show)
_SessionSetValueParameterClause = Core.Name "openGql.grammar.SessionSetValueParameterClause"
_SessionSetValueParameterClause_value = Core.Name "value"
_SessionSetValueParameterClause_initializer = Core.Name "initializer"
data SessionSetParameterName =
  SessionSetParameterName {
    sessionSetParameterNameIfNotExists :: Bool,
    sessionSetParameterNameParameter :: SessionParameterSpecification}
  deriving (Eq, Ord, Read, Show)
_SessionSetParameterName = Core.Name "openGql.grammar.SessionSetParameterName"
_SessionSetParameterName_ifNotExists = Core.Name "ifNotExists"
_SessionSetParameterName_parameter = Core.Name "parameter"
type SessionResetCommand = (Maybe SessionResetArguments)
_SessionResetCommand = Core.Name "openGql.grammar.SessionResetCommand"
data SessionResetArguments =
  SessionResetArgumentsParametersOrCharacteristics AllParametersOrCharacteristics |
  SessionResetArgumentsSchema |
  SessionResetArgumentsGraph |
  SessionResetArgumentsTimeZone |
  SessionResetArgumentsParameterSessionSpecification ParameterSessionSpecification
  deriving (Eq, Ord, Read, Show)
_SessionResetArguments = Core.Name "openGql.grammar.SessionResetArguments"
_SessionResetArguments_parametersOrCharacteristics = Core.Name "parametersOrCharacteristics"
_SessionResetArguments_schema = Core.Name "schema"
_SessionResetArguments_graph = Core.Name "graph"
_SessionResetArguments_timeZone = Core.Name "timeZone"
_SessionResetArguments_parameterSessionSpecification = Core.Name "parameterSessionSpecification"
data AllParametersOrCharacteristics =
  AllParametersOrCharacteristics {
    allParametersOrCharacteristicsAll :: Bool,
    allParametersOrCharacteristicsType :: ParametersOrCharacteristics}
  deriving (Eq, Ord, Read, Show)
_AllParametersOrCharacteristics = Core.Name "openGql.grammar.AllParametersOrCharacteristics"
_AllParametersOrCharacteristics_all = Core.Name "all"
_AllParametersOrCharacteristics_type = Core.Name "type"
data ParametersOrCharacteristics =
  ParametersOrCharacteristicsParameters |
  ParametersOrCharacteristicsCharacteristics
  deriving (Eq, Ord, Read, Show)
_ParametersOrCharacteristics = Core.Name "openGql.grammar.ParametersOrCharacteristics"
_ParametersOrCharacteristics_parameters = Core.Name "parameters"
_ParametersOrCharacteristics_characteristics = Core.Name "characteristics"
data ParameterSessionSpecification =
  ParameterSessionSpecification {
    parameterSessionSpecificationParameter :: Bool,
    parameterSessionSpecificationSessionParameterSpecification :: SessionParameterSpecification}
  deriving (Eq, Ord, Read, Show)
_ParameterSessionSpecification = Core.Name "openGql.grammar.ParameterSessionSpecification"
_ParameterSessionSpecification_parameter = Core.Name "parameter"
_ParameterSessionSpecification_sessionParameterSpecification = Core.Name "sessionParameterSpecification"
type SessionCloseCommand = ()
_SessionCloseCommand = Core.Name "openGql.grammar.SessionCloseCommand"
type SessionParameterSpecification = ParameterName
_SessionParameterSpecification = Core.Name "openGql.grammar.SessionParameterSpecification"
type StartTransactionCommand = (Maybe TransactionCharacteristics)
_StartTransactionCommand = Core.Name "openGql.grammar.StartTransactionCommand"
type TransactionCharacteristics = [TransactionMode]
_TransactionCharacteristics = Core.Name "openGql.grammar.TransactionCharacteristics"
type TransactionMode = TransactionAccessMode
_TransactionMode = Core.Name "openGql.grammar.TransactionMode"
data TransactionAccessMode =
  TransactionAccessModeReadOnly |
  TransactionAccessModeReadWrite
  deriving (Eq, Ord, Read, Show)
_TransactionAccessMode = Core.Name "openGql.grammar.TransactionAccessMode"
_TransactionAccessMode_readOnly = Core.Name "readOnly"
_TransactionAccessMode_readWrite = Core.Name "readWrite"
type RollbackCommand = ()
_RollbackCommand = Core.Name "openGql.grammar.RollbackCommand"
type CommitCommand = ()
_CommitCommand = Core.Name "openGql.grammar.CommitCommand"
type NestedProcedureSpecification = ProcedureSpecification
_NestedProcedureSpecification = Core.Name "openGql.grammar.NestedProcedureSpecification"
type ProcedureSpecification = ProcedureBody
_ProcedureSpecification = Core.Name "openGql.grammar.ProcedureSpecification"
type NestedDataModifyingProcedureSpecification = ProcedureBody
_NestedDataModifyingProcedureSpecification = Core.Name "openGql.grammar.NestedDataModifyingProcedureSpecification"
type NestedQuerySpecification = ProcedureBody
_NestedQuerySpecification = Core.Name "openGql.grammar.NestedQuerySpecification"
data ProcedureBody =
  ProcedureBody {
    procedureBodyAtSchema :: (Maybe AtSchemaClause),
    procedureBodyBindings :: (Maybe BindingVariableDefinitionBlock),
    procedureBodyStatements :: StatementBlock}
  deriving (Eq, Ord, Read, Show)
_ProcedureBody = Core.Name "openGql.grammar.ProcedureBody"
_ProcedureBody_atSchema = Core.Name "atSchema"
_ProcedureBody_bindings = Core.Name "bindings"
_ProcedureBody_statements = Core.Name "statements"
type BindingVariableDefinitionBlock = [BindingVariableDefinition]
_BindingVariableDefinitionBlock = Core.Name "openGql.grammar.BindingVariableDefinitionBlock"
data BindingVariableDefinition =
  BindingVariableDefinitionGraph GraphVariableDefinition |
  BindingVariableDefinitionTable BindingTableVariableDefinition |
  BindingVariableDefinitionValue ValueVariableDefinition
  deriving (Eq, Ord, Read, Show)
_BindingVariableDefinition = Core.Name "openGql.grammar.BindingVariableDefinition"
_BindingVariableDefinition_graph = Core.Name "graph"
_BindingVariableDefinition_table = Core.Name "table"
_BindingVariableDefinition_value = Core.Name "value"
data StatementBlock =
  StatementBlock {
    statementBlockStatement :: Statement,
    statementBlockNextStatements :: [NextStatement]}
  deriving (Eq, Ord, Read, Show)
_StatementBlock = Core.Name "openGql.grammar.StatementBlock"
_StatementBlock_statement = Core.Name "statement"
_StatementBlock_nextStatements = Core.Name "nextStatements"
data Statement =
  StatementLinearCatalogModifying LinearCatalogModifyingStatement |
  StatementLinearDataModifying LinearDataModifyingStatement |
  StatementCompositeQuery CompositeQueryStatement
  deriving (Eq, Ord, Read, Show)
_Statement = Core.Name "openGql.grammar.Statement"
_Statement_linearCatalogModifying = Core.Name "linearCatalogModifying"
_Statement_linearDataModifying = Core.Name "linearDataModifying"
_Statement_compositeQuery = Core.Name "compositeQuery"
data NextStatement =
  NextStatement {
    nextStatementYieldClause :: (Maybe YieldClause),
    nextStatementStatement :: Statement}
  deriving (Eq, Ord, Read, Show)
_NextStatement = Core.Name "openGql.grammar.NextStatement"
_NextStatement_yieldClause = Core.Name "yieldClause"
_NextStatement_statement = Core.Name "statement"
data GraphVariableDefinition =
  GraphVariableDefinition {
    graphVariableDefinitionVariable :: BindingVariable,
    graphVariableDefinitionInitializer :: OptTypedGraphInitializer}
  deriving (Eq, Ord, Read, Show)
_GraphVariableDefinition = Core.Name "openGql.grammar.GraphVariableDefinition"
_GraphVariableDefinition_variable = Core.Name "variable"
_GraphVariableDefinition_initializer = Core.Name "initializer"
data OptTypedGraphInitializer =
  OptTypedGraphInitializer {
    optTypedGraphInitializerType :: (Maybe TypedGraphReferenceValueType),
    optTypedGraphInitializerInitializer :: GraphInitializer}
  deriving (Eq, Ord, Read, Show)
_OptTypedGraphInitializer = Core.Name "openGql.grammar.OptTypedGraphInitializer"
_OptTypedGraphInitializer_type = Core.Name "type"
_OptTypedGraphInitializer_initializer = Core.Name "initializer"
data TypedGraphReferenceValueType =
  TypedGraphReferenceValueType {
    typedGraphReferenceValueTypeTyped :: (Maybe Typed),
    typedGraphReferenceValueTypeValueType :: GraphReferenceValueType}
  deriving (Eq, Ord, Read, Show)
_TypedGraphReferenceValueType = Core.Name "openGql.grammar.TypedGraphReferenceValueType"
_TypedGraphReferenceValueType_typed = Core.Name "typed"
_TypedGraphReferenceValueType_valueType = Core.Name "valueType"
type GraphInitializer = ()
_GraphInitializer = Core.Name "openGql.grammar.GraphInitializer"
data BindingTableVariableDefinition =
  BindingTableVariableDefinition {
    bindingTableVariableDefinitionBinding :: Bool,
    bindingTableVariableDefinitionVariable :: BindingVariable,
    bindingTableVariableDefinitionInitializer :: OptTypedBindingTableInitializer}
  deriving (Eq, Ord, Read, Show)
_BindingTableVariableDefinition = Core.Name "openGql.grammar.BindingTableVariableDefinition"
_BindingTableVariableDefinition_binding = Core.Name "binding"
_BindingTableVariableDefinition_variable = Core.Name "variable"
_BindingTableVariableDefinition_initializer = Core.Name "initializer"
data OptTypedBindingTableInitializer =
  OptTypedBindingTableInitializer {
    optTypedBindingTableInitializerType :: (Maybe TypedBindingTableReferenceValueType),
    optTypedBindingTableInitializerInitializer :: BindingTableInitializer}
  deriving (Eq, Ord, Read, Show)
_OptTypedBindingTableInitializer = Core.Name "openGql.grammar.OptTypedBindingTableInitializer"
_OptTypedBindingTableInitializer_type = Core.Name "type"
_OptTypedBindingTableInitializer_initializer = Core.Name "initializer"
data TypedBindingTableReferenceValueType =
  TypedBindingTableReferenceValueType {
    typedBindingTableReferenceValueTypeTyped :: (Maybe Typed),
    typedBindingTableReferenceValueTypeValueType :: BindingTableReferenceValueType}
  deriving (Eq, Ord, Read, Show)
_TypedBindingTableReferenceValueType = Core.Name "openGql.grammar.TypedBindingTableReferenceValueType"
_TypedBindingTableReferenceValueType_typed = Core.Name "typed"
_TypedBindingTableReferenceValueType_valueType = Core.Name "valueType"
type BindingTableInitializer = ()
_BindingTableInitializer = Core.Name "openGql.grammar.BindingTableInitializer"
data ValueVariableDefinition =
  ValueVariableDefinition {
    valueVariableDefinitionVariable :: BindingVariable,
    valueVariableDefinitionInitializer :: OptTypedValueInitializer}
  deriving (Eq, Ord, Read, Show)
_ValueVariableDefinition = Core.Name "openGql.grammar.ValueVariableDefinition"
_ValueVariableDefinition_variable = Core.Name "variable"
_ValueVariableDefinition_initializer = Core.Name "initializer"
data OptTypedValueInitializer =
  OptTypedValueInitializer {
    optTypedValueInitializerType :: (Maybe TypedValueType),
    optTypedValueInitializerInitializer :: ValueInitializer}
  deriving (Eq, Ord, Read, Show)
_OptTypedValueInitializer = Core.Name "openGql.grammar.OptTypedValueInitializer"
_OptTypedValueInitializer_type = Core.Name "type"
_OptTypedValueInitializer_initializer = Core.Name "initializer"
data TypedValueType =
  TypedValueType {
    typedValueTypeTyped :: (Maybe Typed),
    typedValueTypeValueType :: ValueType}
  deriving (Eq, Ord, Read, Show)
_TypedValueType = Core.Name "openGql.grammar.TypedValueType"
_TypedValueType_typed = Core.Name "typed"
_TypedValueType_valueType = Core.Name "valueType"
type ValueInitializer = ()
_ValueInitializer = Core.Name "openGql.grammar.ValueInitializer"
data GraphExpression =
  GraphExpressionObject ObjectExpressionPrimary |
  GraphExpressionReference GraphReference |
  GraphExpressionName ObjectNameOrBindingVariable |
  GraphExpressionCurrent CurrentGraph
  deriving (Eq, Ord, Read, Show)
_GraphExpression = Core.Name "openGql.grammar.GraphExpression"
_GraphExpression_object = Core.Name "object"
_GraphExpression_reference = Core.Name "reference"
_GraphExpression_name = Core.Name "name"
_GraphExpression_current = Core.Name "current"
data CurrentGraph =
  CurrentGraphGraph |
  CurrentGraphPropertyGraph
  deriving (Eq, Ord, Read, Show)
_CurrentGraph = Core.Name "openGql.grammar.CurrentGraph"
_CurrentGraph_graph = Core.Name "graph"
_CurrentGraph_propertyGraph = Core.Name "propertyGraph"
data BindingTableExpression =
  BindingTableExpressionNested NestedBindingTableQuerySpecification |
  BindingTableExpressionObject ObjectExpressionPrimary |
  BindingTableExpressionTable BindingTableReference |
  BindingTableExpressionName ObjectNameOrBindingVariable
  deriving (Eq, Ord, Read, Show)
_BindingTableExpression = Core.Name "openGql.grammar.BindingTableExpression"
_BindingTableExpression_nested = Core.Name "nested"
_BindingTableExpression_object = Core.Name "object"
_BindingTableExpression_table = Core.Name "table"
_BindingTableExpression_name = Core.Name "name"
type NestedBindingTableQuerySpecification = ()
_NestedBindingTableQuerySpecification = Core.Name "openGql.grammar.NestedBindingTableQuerySpecification"
data ObjectExpressionPrimary =
  ObjectExpressionPrimaryVariable PrimaryValueExpression |
  ObjectExpressionPrimaryParenthesized ParenthesizedValueExpression |
  ObjectExpressionPrimaryNonParenthesized NonParenthesizedPrimaryValueExpressionSpecialCase
  deriving (Eq, Ord, Read, Show)
_ObjectExpressionPrimary = Core.Name "openGql.grammar.ObjectExpressionPrimary"
_ObjectExpressionPrimary_variable = Core.Name "variable"
_ObjectExpressionPrimary_parenthesized = Core.Name "parenthesized"
_ObjectExpressionPrimary_nonParenthesized = Core.Name "nonParenthesized"
type LinearCatalogModifyingStatement = [SimpleCatalogModifyingStatement]
_LinearCatalogModifyingStatement = Core.Name "openGql.grammar.LinearCatalogModifyingStatement"
data SimpleCatalogModifyingStatement =
  SimpleCatalogModifyingStatementPrimitive PrimitiveCatalogModifyingStatement |
  SimpleCatalogModifyingStatementCallProcedure CallCatalogModifyingProcedureStatement
  deriving (Eq, Ord, Read, Show)
_SimpleCatalogModifyingStatement = Core.Name "openGql.grammar.SimpleCatalogModifyingStatement"
_SimpleCatalogModifyingStatement_primitive = Core.Name "primitive"
_SimpleCatalogModifyingStatement_callProcedure = Core.Name "callProcedure"
data PrimitiveCatalogModifyingStatement =
  PrimitiveCatalogModifyingStatementCreateSchema CreateSchemaStatement |
  PrimitiveCatalogModifyingStatementDropSchema DropSchemaStatement |
  PrimitiveCatalogModifyingStatementCreateGraph CreateGraphStatement |
  PrimitiveCatalogModifyingStatementDropGraph DropGraphStatement |
  PrimitiveCatalogModifyingStatementCreateGraphType CreateGraphTypeStatement |
  PrimitiveCatalogModifyingStatementDropGraphType DropGraphTypeStatement
  deriving (Eq, Ord, Read, Show)
_PrimitiveCatalogModifyingStatement = Core.Name "openGql.grammar.PrimitiveCatalogModifyingStatement"
_PrimitiveCatalogModifyingStatement_createSchema = Core.Name "createSchema"
_PrimitiveCatalogModifyingStatement_dropSchema = Core.Name "dropSchema"
_PrimitiveCatalogModifyingStatement_createGraph = Core.Name "createGraph"
_PrimitiveCatalogModifyingStatement_dropGraph = Core.Name "dropGraph"
_PrimitiveCatalogModifyingStatement_createGraphType = Core.Name "createGraphType"
_PrimitiveCatalogModifyingStatement_dropGraphType = Core.Name "dropGraphType"
data CreateSchemaStatement =
  CreateSchemaStatement {
    createSchemaStatementIfNotExists :: Bool,
    createSchemaStatementParentAndName :: CatalogSchemaParentAndName}
  deriving (Eq, Ord, Read, Show)
_CreateSchemaStatement = Core.Name "openGql.grammar.CreateSchemaStatement"
_CreateSchemaStatement_ifNotExists = Core.Name "ifNotExists"
_CreateSchemaStatement_parentAndName = Core.Name "parentAndName"
data DropSchemaStatement =
  DropSchemaStatement {
    dropSchemaStatementIfExists :: Bool,
    dropSchemaStatementParentAndName :: CatalogSchemaParentAndName}
  deriving (Eq, Ord, Read, Show)
_DropSchemaStatement = Core.Name "openGql.grammar.DropSchemaStatement"
_DropSchemaStatement_ifExists = Core.Name "ifExists"
_DropSchemaStatement_parentAndName = Core.Name "parentAndName"
data CreateGraphStatement =
  CreateGraphStatement {
    createGraphStatementCreateOption :: CreateGraphOption,
    createGraphStatementParentAndName :: CatalogGraphParentAndName,
    createGraphStatementType :: GraphTypeOption,
    createGraphStatementSource :: (Maybe GraphSource)}
  deriving (Eq, Ord, Read, Show)
_CreateGraphStatement = Core.Name "openGql.grammar.CreateGraphStatement"
_CreateGraphStatement_createOption = Core.Name "createOption"
_CreateGraphStatement_parentAndName = Core.Name "parentAndName"
_CreateGraphStatement_type = Core.Name "type"
_CreateGraphStatement_source = Core.Name "source"
data CreateGraphOption =
  CreateGraphOptionGraphIfNotExists Bool |
  CreateGraphOptionOrReplace
  deriving (Eq, Ord, Read, Show)
_CreateGraphOption = Core.Name "openGql.grammar.CreateGraphOption"
_CreateGraphOption_graphIfNotExists = Core.Name "graphIfNotExists"
_CreateGraphOption_orReplace = Core.Name "orReplace"
data GraphTypeOption =
  GraphTypeOptionOpenGraphType OpenGraphType |
  GraphTypeOptionOfGraphType OfGraphType
  deriving (Eq, Ord, Read, Show)
_GraphTypeOption = Core.Name "openGql.grammar.GraphTypeOption"
_GraphTypeOption_openGraphType = Core.Name "openGraphType"
_GraphTypeOption_ofGraphType = Core.Name "ofGraphType"
data OpenGraphType =
  OpenGraphType {
    openGraphTypeTyped :: (Maybe Typed),
    openGraphTypeGraph :: Bool}
  deriving (Eq, Ord, Read, Show)
_OpenGraphType = Core.Name "openGql.grammar.OpenGraphType"
_OpenGraphType_typed = Core.Name "typed"
_OpenGraphType_graph = Core.Name "graph"
data OfGraphType =
  OfGraphTypeLikeGraph GraphTypeLikeGraph |
  OfGraphTypeReference TypedGraphTypeReference |
  OfGraphTypeNested TypedNestedGraphTypeSpecification
  deriving (Eq, Ord, Read, Show)
_OfGraphType = Core.Name "openGql.grammar.OfGraphType"
_OfGraphType_likeGraph = Core.Name "likeGraph"
_OfGraphType_reference = Core.Name "reference"
_OfGraphType_nested = Core.Name "nested"
type GraphTypeLikeGraph = GraphExpression
_GraphTypeLikeGraph = Core.Name "openGql.grammar.GraphTypeLikeGraph"
type GraphSource = GraphExpression
_GraphSource = Core.Name "openGql.grammar.GraphSource"
data TypedGraphTypeReference =
  TypedGraphTypeReference {
    typedGraphTypeReferenceTyped :: (Maybe Typed),
    typedGraphTypeReferenceReference :: GraphTypeReference}
  deriving (Eq, Ord, Read, Show)
_TypedGraphTypeReference = Core.Name "openGql.grammar.TypedGraphTypeReference"
_TypedGraphTypeReference_typed = Core.Name "typed"
_TypedGraphTypeReference_reference = Core.Name "reference"
data TypedNestedGraphTypeSpecification =
  TypedNestedGraphTypeSpecification {
    typedNestedGraphTypeSpecificationTyped :: (Maybe Typed),
    typedNestedGraphTypeSpecificationGraph :: Bool,
    typedNestedGraphTypeSpecificationSpecification :: NestedGraphTypeSpecification}
  deriving (Eq, Ord, Read, Show)
_TypedNestedGraphTypeSpecification = Core.Name "openGql.grammar.TypedNestedGraphTypeSpecification"
_TypedNestedGraphTypeSpecification_typed = Core.Name "typed"
_TypedNestedGraphTypeSpecification_graph = Core.Name "graph"
_TypedNestedGraphTypeSpecification_specification = Core.Name "specification"
data DropGraphStatement =
  DropGraphStatement {
    dropGraphStatementIfExists :: Bool,
    dropGraphStatementParentAndName :: CatalogGraphParentAndName}
  deriving (Eq, Ord, Read, Show)
_DropGraphStatement = Core.Name "openGql.grammar.DropGraphStatement"
_DropGraphStatement_ifExists = Core.Name "ifExists"
_DropGraphStatement_parentAndName = Core.Name "parentAndName"
data CreateGraphTypeStatement =
  CreateGraphTypeStatement {
    createGraphTypeStatementCreateOption :: CreateGraphTypeOption,
    createGraphTypeStatementParentAndName :: CatalogGraphTypeParentAndName,
    createGraphTypeStatementSource :: GraphTypeSource}
  deriving (Eq, Ord, Read, Show)
_CreateGraphTypeStatement = Core.Name "openGql.grammar.CreateGraphTypeStatement"
_CreateGraphTypeStatement_createOption = Core.Name "createOption"
_CreateGraphTypeStatement_parentAndName = Core.Name "parentAndName"
_CreateGraphTypeStatement_source = Core.Name "source"
data CreateGraphTypeOption =
  CreateGraphTypeOptionTypeIfNotExists Bool |
  CreateGraphTypeOptionOrReplace
  deriving (Eq, Ord, Read, Show)
_CreateGraphTypeOption = Core.Name "openGql.grammar.CreateGraphTypeOption"
_CreateGraphTypeOption_typeIfNotExists = Core.Name "typeIfNotExists"
_CreateGraphTypeOption_orReplace = Core.Name "orReplace"
data GraphTypeSource =
  GraphTypeSourceCopyOf CopyOfGraphType |
  GraphTypeSourceLikeGraph GraphTypeLikeGraph |
  GraphTypeSourceNestedSpecification NestedGraphTypeSpecification
  deriving (Eq, Ord, Read, Show)
_GraphTypeSource = Core.Name "openGql.grammar.GraphTypeSource"
_GraphTypeSource_copyOf = Core.Name "copyOf"
_GraphTypeSource_likeGraph = Core.Name "likeGraph"
_GraphTypeSource_nestedSpecification = Core.Name "nestedSpecification"
type CopyOfGraphType = GraphTypeReference
_CopyOfGraphType = Core.Name "openGql.grammar.CopyOfGraphType"
data DropGraphTypeStatement =
  DropGraphTypeStatement {
    dropGraphTypeStatementIfExists :: Bool,
    dropGraphTypeStatementParentAndName :: CatalogGraphTypeParentAndName}
  deriving (Eq, Ord, Read, Show)
_DropGraphTypeStatement = Core.Name "openGql.grammar.DropGraphTypeStatement"
_DropGraphTypeStatement_ifExists = Core.Name "ifExists"
_DropGraphTypeStatement_parentAndName = Core.Name "parentAndName"
type CallCatalogModifyingProcedureStatement = CallProcedureStatement
_CallCatalogModifyingProcedureStatement = Core.Name "openGql.grammar.CallCatalogModifyingProcedureStatement"
data LinearDataModifyingStatement =
  LinearDataModifyingStatementFocused FocusedLinearDataModifyingStatement |
  LinearDataModifyingStatementAmbient AmbientLinearDataModifyingStatement
  deriving (Eq, Ord, Read, Show)
_LinearDataModifyingStatement = Core.Name "openGql.grammar.LinearDataModifyingStatement"
_LinearDataModifyingStatement_focused = Core.Name "focused"
_LinearDataModifyingStatement_ambient = Core.Name "ambient"
data FocusedLinearDataModifyingStatement =
  FocusedLinearDataModifyingStatementSimple FocusedLinearDataModifyingStatementBody |
  FocusedLinearDataModifyingStatementNested FocusedNestedDataModifyingProcedureSpecification
  deriving (Eq, Ord, Read, Show)
_FocusedLinearDataModifyingStatement = Core.Name "openGql.grammar.FocusedLinearDataModifyingStatement"
_FocusedLinearDataModifyingStatement_simple = Core.Name "simple"
_FocusedLinearDataModifyingStatement_nested = Core.Name "nested"
data FocusedLinearDataModifyingStatementBody =
  FocusedLinearDataModifyingStatementBody {
    focusedLinearDataModifyingStatementBodyUseGraph :: UseGraphClause,
    focusedLinearDataModifyingStatementBodySimpleAccess :: SimpleLinearDataAccessingStatement,
    focusedLinearDataModifyingStatementBodyPrimitiveResult :: (Maybe PrimitiveResultStatement)}
  deriving (Eq, Ord, Read, Show)
_FocusedLinearDataModifyingStatementBody = Core.Name "openGql.grammar.FocusedLinearDataModifyingStatementBody"
_FocusedLinearDataModifyingStatementBody_useGraph = Core.Name "useGraph"
_FocusedLinearDataModifyingStatementBody_simpleAccess = Core.Name "simpleAccess"
_FocusedLinearDataModifyingStatementBody_primitiveResult = Core.Name "primitiveResult"
data FocusedNestedDataModifyingProcedureSpecification =
  FocusedNestedDataModifyingProcedureSpecification {
    focusedNestedDataModifyingProcedureSpecificationUseGraph :: UseGraphClause,
    focusedNestedDataModifyingProcedureSpecificationNestedSpec :: NestedDataModifyingProcedureSpecification}
  deriving (Eq, Ord, Read, Show)
_FocusedNestedDataModifyingProcedureSpecification =
    Core.Name "openGql.grammar.FocusedNestedDataModifyingProcedureSpecification"
_FocusedNestedDataModifyingProcedureSpecification_useGraph = Core.Name "useGraph"
_FocusedNestedDataModifyingProcedureSpecification_nestedSpec = Core.Name "nestedSpec"
data AmbientLinearDataModifyingStatement =
  AmbientLinearDataModifyingStatementSimple AmbientLinearDataModifyingStatementBody |
  AmbientLinearDataModifyingStatementNested NestedDataModifyingProcedureSpecification
  deriving (Eq, Ord, Read, Show)
_AmbientLinearDataModifyingStatement = Core.Name "openGql.grammar.AmbientLinearDataModifyingStatement"
_AmbientLinearDataModifyingStatement_simple = Core.Name "simple"
_AmbientLinearDataModifyingStatement_nested = Core.Name "nested"
data AmbientLinearDataModifyingStatementBody =
  AmbientLinearDataModifyingStatementBody {
    ambientLinearDataModifyingStatementBodySimpleAccess :: SimpleLinearDataAccessingStatement,
    ambientLinearDataModifyingStatementBodyPrimitiveResult :: (Maybe PrimitiveResultStatement)}
  deriving (Eq, Ord, Read, Show)
_AmbientLinearDataModifyingStatementBody = Core.Name "openGql.grammar.AmbientLinearDataModifyingStatementBody"
_AmbientLinearDataModifyingStatementBody_simpleAccess = Core.Name "simpleAccess"
_AmbientLinearDataModifyingStatementBody_primitiveResult = Core.Name "primitiveResult"
type SimpleLinearDataAccessingStatement = [SimpleDataAccessingStatement]
_SimpleLinearDataAccessingStatement = Core.Name "openGql.grammar.SimpleLinearDataAccessingStatement"
data SimpleDataAccessingStatement =
  SimpleDataAccessingStatementQuery SimpleQueryStatement |
  SimpleDataAccessingStatementModifying SimpleDataModifyingStatement
  deriving (Eq, Ord, Read, Show)
_SimpleDataAccessingStatement = Core.Name "openGql.grammar.SimpleDataAccessingStatement"
_SimpleDataAccessingStatement_query = Core.Name "query"
_SimpleDataAccessingStatement_modifying = Core.Name "modifying"
data SimpleDataModifyingStatement =
  SimpleDataModifyingStatementPrimitive PrimitiveDataModifyingStatement |
  SimpleDataModifyingStatementCallProcedure CallDataModifyingProcedureStatement
  deriving (Eq, Ord, Read, Show)
_SimpleDataModifyingStatement = Core.Name "openGql.grammar.SimpleDataModifyingStatement"
_SimpleDataModifyingStatement_primitive = Core.Name "primitive"
_SimpleDataModifyingStatement_callProcedure = Core.Name "callProcedure"
data PrimitiveDataModifyingStatement =
  PrimitiveDataModifyingStatementInsert InsertStatement |
  PrimitiveDataModifyingStatementSet SetStatement |
  PrimitiveDataModifyingStatementRemove RemoveStatement |
  PrimitiveDataModifyingStatementDelete DeleteStatement
  deriving (Eq, Ord, Read, Show)
_PrimitiveDataModifyingStatement = Core.Name "openGql.grammar.PrimitiveDataModifyingStatement"
_PrimitiveDataModifyingStatement_insert = Core.Name "insert"
_PrimitiveDataModifyingStatement_set = Core.Name "set"
_PrimitiveDataModifyingStatement_remove = Core.Name "remove"
_PrimitiveDataModifyingStatement_delete = Core.Name "delete"
type InsertStatement = InsertGraphPattern
_InsertStatement = Core.Name "openGql.grammar.InsertStatement"
type SetStatement = SetItemList
_SetStatement = Core.Name "openGql.grammar.SetStatement"
type SetItemList = [SetItem]
_SetItemList = Core.Name "openGql.grammar.SetItemList"
data SetItem =
  SetItemProperty SetPropertyItem |
  SetItemAllProperties SetAllPropertiesItem |
  SetItemLabel SetLabelItem
  deriving (Eq, Ord, Read, Show)
_SetItem = Core.Name "openGql.grammar.SetItem"
_SetItem_property = Core.Name "property"
_SetItem_allProperties = Core.Name "allProperties"
_SetItem_label = Core.Name "label"
data SetPropertyItem =
  SetPropertyItem {
    setPropertyItemVariable :: BindingVariableReference,
    setPropertyItemPropertyName :: PropertyName,
    setPropertyItemValue :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_SetPropertyItem = Core.Name "openGql.grammar.SetPropertyItem"
_SetPropertyItem_variable = Core.Name "variable"
_SetPropertyItem_propertyName = Core.Name "propertyName"
_SetPropertyItem_value = Core.Name "value"
data SetAllPropertiesItem =
  SetAllPropertiesItem {
    setAllPropertiesItemVariable :: BindingVariableReference,
    setAllPropertiesItemProperties :: (Maybe PropertyKeyValuePairList)}
  deriving (Eq, Ord, Read, Show)
_SetAllPropertiesItem = Core.Name "openGql.grammar.SetAllPropertiesItem"
_SetAllPropertiesItem_variable = Core.Name "variable"
_SetAllPropertiesItem_properties = Core.Name "properties"
data SetLabelItem =
  SetLabelItem {
    setLabelItemVariable :: BindingVariableReference,
    setLabelItemIsOrColon :: IsOrColon,
    setLabelItemLabel :: LabelName}
  deriving (Eq, Ord, Read, Show)
_SetLabelItem = Core.Name "openGql.grammar.SetLabelItem"
_SetLabelItem_variable = Core.Name "variable"
_SetLabelItem_isOrColon = Core.Name "isOrColon"
_SetLabelItem_label = Core.Name "label"
type RemoveStatement = RemoveItemList
_RemoveStatement = Core.Name "openGql.grammar.RemoveStatement"
type RemoveItemList = [RemoveItem]
_RemoveItemList = Core.Name "openGql.grammar.RemoveItemList"
data RemoveItem =
  RemoveItemProperty RemovePropertyItem |
  RemoveItemLabel RemoveLabelItem
  deriving (Eq, Ord, Read, Show)
_RemoveItem = Core.Name "openGql.grammar.RemoveItem"
_RemoveItem_property = Core.Name "property"
_RemoveItem_label = Core.Name "label"
data RemovePropertyItem =
  RemovePropertyItem {
    removePropertyItemVariable :: BindingVariableReference,
    removePropertyItemPropertyName :: PropertyName}
  deriving (Eq, Ord, Read, Show)
_RemovePropertyItem = Core.Name "openGql.grammar.RemovePropertyItem"
_RemovePropertyItem_variable = Core.Name "variable"
_RemovePropertyItem_propertyName = Core.Name "propertyName"
data RemoveLabelItem =
  RemoveLabelItem {
    removeLabelItemVariable :: BindingVariableReference,
    removeLabelItemIsOrColon :: IsOrColon,
    removeLabelItemLabel :: LabelName}
  deriving (Eq, Ord, Read, Show)
_RemoveLabelItem = Core.Name "openGql.grammar.RemoveLabelItem"
_RemoveLabelItem_variable = Core.Name "variable"
_RemoveLabelItem_isOrColon = Core.Name "isOrColon"
_RemoveLabelItem_label = Core.Name "label"
data DeleteStatement =
  DeleteStatement {
    deleteStatementDetach :: (Maybe DetachOption),
    deleteStatementItems :: DeleteItemList}
  deriving (Eq, Ord, Read, Show)
_DeleteStatement = Core.Name "openGql.grammar.DeleteStatement"
_DeleteStatement_detach = Core.Name "detach"
_DeleteStatement_items = Core.Name "items"
data DetachOption =
  DetachOptionDetach |
  DetachOptionNoDetach
  deriving (Eq, Ord, Read, Show)
_DetachOption = Core.Name "openGql.grammar.DetachOption"
_DetachOption_detach = Core.Name "detach"
_DetachOption_noDetach = Core.Name "noDetach"
type DeleteItemList = [DeleteItem]
_DeleteItemList = Core.Name "openGql.grammar.DeleteItemList"
type DeleteItem = ValueExpression
_DeleteItem = Core.Name "openGql.grammar.DeleteItem"
type CallDataModifyingProcedureStatement = CallProcedureStatement
_CallDataModifyingProcedureStatement = Core.Name "openGql.grammar.CallDataModifyingProcedureStatement"
type CompositeQueryStatement = CompositeQueryExpression
_CompositeQueryStatement = Core.Name "openGql.grammar.CompositeQueryStatement"
data CompositeQueryExpression =
  CompositeQueryExpressionSimple CompositeQueryExpressionConjunction |
  CompositeQueryExpressionPrimary CompositeQueryPrimary
  deriving (Eq, Ord, Read, Show)
_CompositeQueryExpression = Core.Name "openGql.grammar.CompositeQueryExpression"
_CompositeQueryExpression_simple = Core.Name "simple"
_CompositeQueryExpression_primary = Core.Name "primary"
data CompositeQueryExpressionConjunction =
  CompositeQueryExpressionConjunction {
    compositeQueryExpressionConjunctionLeft :: CompositeQueryExpression,
    compositeQueryExpressionConjunctionConjunction :: QueryConjunction,
    compositeQueryExpressionConjunctionRight :: CompositeQueryPrimary}
  deriving (Eq, Ord, Read, Show)
_CompositeQueryExpressionConjunction = Core.Name "openGql.grammar.CompositeQueryExpressionConjunction"
_CompositeQueryExpressionConjunction_left = Core.Name "left"
_CompositeQueryExpressionConjunction_conjunction = Core.Name "conjunction"
_CompositeQueryExpressionConjunction_right = Core.Name "right"
data QueryConjunction =
  QueryConjunctionSetOperator SetOperator |
  QueryConjunctionOtherwise
  deriving (Eq, Ord, Read, Show)
_QueryConjunction = Core.Name "openGql.grammar.QueryConjunction"
_QueryConjunction_setOperator = Core.Name "setOperator"
_QueryConjunction_otherwise = Core.Name "otherwise"
data SetOperator =
  SetOperator {
    setOperatorOperatorType :: SetOperatorType,
    setOperatorQuantifier :: (Maybe SetQuantifier)}
  deriving (Eq, Ord, Read, Show)
_SetOperator = Core.Name "openGql.grammar.SetOperator"
_SetOperator_operatorType = Core.Name "operatorType"
_SetOperator_quantifier = Core.Name "quantifier"
data SetOperatorType =
  SetOperatorTypeUnion |
  SetOperatorTypeExcept |
  SetOperatorTypeIntersect
  deriving (Eq, Ord, Read, Show)
_SetOperatorType = Core.Name "openGql.grammar.SetOperatorType"
_SetOperatorType_union = Core.Name "union"
_SetOperatorType_except = Core.Name "except"
_SetOperatorType_intersect = Core.Name "intersect"
type CompositeQueryPrimary = LinearQueryStatement
_CompositeQueryPrimary = Core.Name "openGql.grammar.CompositeQueryPrimary"
data LinearQueryStatement =
  LinearQueryStatementFocused FocusedLinearQueryStatement |
  LinearQueryStatementAmbient AmbientLinearQueryStatement
  deriving (Eq, Ord, Read, Show)
_LinearQueryStatement = Core.Name "openGql.grammar.LinearQueryStatement"
_LinearQueryStatement_focused = Core.Name "focused"
_LinearQueryStatement_ambient = Core.Name "ambient"
data FocusedLinearQueryStatement =
  FocusedLinearQueryStatementParts FocusedLinearQueryStatementPartsAndResult |
  FocusedLinearQueryStatementPrimitive FocusedPrimitiveResultStatement |
  FocusedLinearQueryStatementNested FocusedNestedQuerySpecification |
  FocusedLinearQueryStatementSelect SelectStatement
  deriving (Eq, Ord, Read, Show)
_FocusedLinearQueryStatement = Core.Name "openGql.grammar.FocusedLinearQueryStatement"
_FocusedLinearQueryStatement_parts = Core.Name "parts"
_FocusedLinearQueryStatement_primitive = Core.Name "primitive"
_FocusedLinearQueryStatement_nested = Core.Name "nested"
_FocusedLinearQueryStatement_select = Core.Name "select"
data FocusedLinearQueryStatementPartsAndResult =
  FocusedLinearQueryStatementPartsAndResult {
    focusedLinearQueryStatementPartsAndResultParts :: [FocusedLinearQueryStatementPart],
    focusedLinearQueryStatementPartsAndResultResult :: FocusedLinearQueryAndPrimitiveResultStatementPart}
  deriving (Eq, Ord, Read, Show)
_FocusedLinearQueryStatementPartsAndResult = Core.Name "openGql.grammar.FocusedLinearQueryStatementPartsAndResult"
_FocusedLinearQueryStatementPartsAndResult_parts = Core.Name "parts"
_FocusedLinearQueryStatementPartsAndResult_result = Core.Name "result"
data FocusedLinearQueryStatementPart =
  FocusedLinearQueryStatementPart {
    focusedLinearQueryStatementPartUseGraph :: UseGraphClause,
    focusedLinearQueryStatementPartSimple :: SimpleLinearQueryStatement}
  deriving (Eq, Ord, Read, Show)
_FocusedLinearQueryStatementPart = Core.Name "openGql.grammar.FocusedLinearQueryStatementPart"
_FocusedLinearQueryStatementPart_useGraph = Core.Name "useGraph"
_FocusedLinearQueryStatementPart_simple = Core.Name "simple"
data FocusedLinearQueryAndPrimitiveResultStatementPart =
  FocusedLinearQueryAndPrimitiveResultStatementPart {
    focusedLinearQueryAndPrimitiveResultStatementPartUseGraph :: UseGraphClause,
    focusedLinearQueryAndPrimitiveResultStatementPartSimple :: SimpleLinearQueryStatement,
    focusedLinearQueryAndPrimitiveResultStatementPartPrimitiveResult :: PrimitiveResultStatement}
  deriving (Eq, Ord, Read, Show)
_FocusedLinearQueryAndPrimitiveResultStatementPart =
    Core.Name "openGql.grammar.FocusedLinearQueryAndPrimitiveResultStatementPart"
_FocusedLinearQueryAndPrimitiveResultStatementPart_useGraph = Core.Name "useGraph"
_FocusedLinearQueryAndPrimitiveResultStatementPart_simple = Core.Name "simple"
_FocusedLinearQueryAndPrimitiveResultStatementPart_primitiveResult = Core.Name "primitiveResult"
data FocusedPrimitiveResultStatement =
  FocusedPrimitiveResultStatement {
    focusedPrimitiveResultStatementUseGraph :: UseGraphClause,
    focusedPrimitiveResultStatementPrimitiveResult :: PrimitiveResultStatement}
  deriving (Eq, Ord, Read, Show)
_FocusedPrimitiveResultStatement = Core.Name "openGql.grammar.FocusedPrimitiveResultStatement"
_FocusedPrimitiveResultStatement_useGraph = Core.Name "useGraph"
_FocusedPrimitiveResultStatement_primitiveResult = Core.Name "primitiveResult"
data FocusedNestedQuerySpecification =
  FocusedNestedQuerySpecification {
    focusedNestedQuerySpecificationUseGraph :: UseGraphClause,
    focusedNestedQuerySpecificationNested :: NestedQuerySpecification}
  deriving (Eq, Ord, Read, Show)
_FocusedNestedQuerySpecification = Core.Name "openGql.grammar.FocusedNestedQuerySpecification"
_FocusedNestedQuerySpecification_useGraph = Core.Name "useGraph"
_FocusedNestedQuerySpecification_nested = Core.Name "nested"
data AmbientLinearQueryStatement =
  AmbientLinearQueryStatementSimple AmbientLinearQueryStatementSimpleAndPrimitiveResult |
  AmbientLinearQueryStatementNested NestedQuerySpecification
  deriving (Eq, Ord, Read, Show)
_AmbientLinearQueryStatement = Core.Name "openGql.grammar.AmbientLinearQueryStatement"
_AmbientLinearQueryStatement_simple = Core.Name "simple"
_AmbientLinearQueryStatement_nested = Core.Name "nested"
data AmbientLinearQueryStatementSimpleAndPrimitiveResult =
  AmbientLinearQueryStatementSimpleAndPrimitiveResult {
    ambientLinearQueryStatementSimpleAndPrimitiveResultSimple :: (Maybe SimpleLinearQueryStatement),
    ambientLinearQueryStatementSimpleAndPrimitiveResultPrimitiveResult :: PrimitiveResultStatement}
  deriving (Eq, Ord, Read, Show)
_AmbientLinearQueryStatementSimpleAndPrimitiveResult =
    Core.Name "openGql.grammar.AmbientLinearQueryStatementSimpleAndPrimitiveResult"
_AmbientLinearQueryStatementSimpleAndPrimitiveResult_simple = Core.Name "simple"
_AmbientLinearQueryStatementSimpleAndPrimitiveResult_primitiveResult = Core.Name "primitiveResult"
type SimpleLinearQueryStatement = [SimpleQueryStatement]
_SimpleLinearQueryStatement = Core.Name "openGql.grammar.SimpleLinearQueryStatement"
data SimpleQueryStatement =
  SimpleQueryStatementPrimitive PrimitiveQueryStatement |
  SimpleQueryStatementCall CallQueryStatement
  deriving (Eq, Ord, Read, Show)
_SimpleQueryStatement = Core.Name "openGql.grammar.SimpleQueryStatement"
_SimpleQueryStatement_primitive = Core.Name "primitive"
_SimpleQueryStatement_call = Core.Name "call"
data PrimitiveQueryStatement =
  PrimitiveQueryStatementMatch MatchStatement |
  PrimitiveQueryStatementLet LetStatement |
  PrimitiveQueryStatementFor ForStatement |
  PrimitiveQueryStatementFilter FilterStatement |
  PrimitiveQueryStatementOrderByAndPage OrderByAndPageStatement
  deriving (Eq, Ord, Read, Show)
_PrimitiveQueryStatement = Core.Name "openGql.grammar.PrimitiveQueryStatement"
_PrimitiveQueryStatement_match = Core.Name "match"
_PrimitiveQueryStatement_let = Core.Name "let"
_PrimitiveQueryStatement_for = Core.Name "for"
_PrimitiveQueryStatement_filter = Core.Name "filter"
_PrimitiveQueryStatement_orderByAndPage = Core.Name "orderByAndPage"
data MatchStatement =
  MatchStatementSimple SimpleMatchStatement |
  MatchStatementOptional OptionalMatchStatement
  deriving (Eq, Ord, Read, Show)
_MatchStatement = Core.Name "openGql.grammar.MatchStatement"
_MatchStatement_simple = Core.Name "simple"
_MatchStatement_optional = Core.Name "optional"
type SimpleMatchStatement = GraphPatternBindingTable
_SimpleMatchStatement = Core.Name "openGql.grammar.SimpleMatchStatement"
type OptionalMatchStatement = OptionalOperand
_OptionalMatchStatement = Core.Name "openGql.grammar.OptionalMatchStatement"
data OptionalOperand =
  OptionalOperandSimple SimpleMatchStatement |
  OptionalOperandBraceBlock MatchStatementBlock |
  OptionalOperandParenBlock MatchStatementBlock
  deriving (Eq, Ord, Read, Show)
_OptionalOperand = Core.Name "openGql.grammar.OptionalOperand"
_OptionalOperand_simple = Core.Name "simple"
_OptionalOperand_braceBlock = Core.Name "braceBlock"
_OptionalOperand_parenBlock = Core.Name "parenBlock"
type MatchStatementBlock = [MatchStatement]
_MatchStatementBlock = Core.Name "openGql.grammar.MatchStatementBlock"
type CallQueryStatement = CallProcedureStatement
_CallQueryStatement = Core.Name "openGql.grammar.CallQueryStatement"
data FilterStatement =
  FilterStatementWhereClause WhereClause |
  FilterStatementSearchCondition SearchCondition
  deriving (Eq, Ord, Read, Show)
_FilterStatement = Core.Name "openGql.grammar.FilterStatement"
_FilterStatement_whereClause = Core.Name "whereClause"
_FilterStatement_searchCondition = Core.Name "searchCondition"
type LetStatement = LetVariableDefinitionList
_LetStatement = Core.Name "openGql.grammar.LetStatement"
type LetVariableDefinitionList = [LetVariableDefinition]
_LetVariableDefinitionList = Core.Name "openGql.grammar.LetVariableDefinitionList"
data LetVariableDefinition =
  LetVariableDefinitionValueVariable ValueVariableDefinition |
  LetVariableDefinitionBindingEqualsValue BindingEqualsValue
  deriving (Eq, Ord, Read, Show)
_LetVariableDefinition = Core.Name "openGql.grammar.LetVariableDefinition"
_LetVariableDefinition_valueVariable = Core.Name "valueVariable"
_LetVariableDefinition_bindingEqualsValue = Core.Name "bindingEqualsValue"
data BindingEqualsValue =
  BindingEqualsValue {
    bindingEqualsValueBinding :: BindingVariable,
    bindingEqualsValueValue :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_BindingEqualsValue = Core.Name "openGql.grammar.BindingEqualsValue"
_BindingEqualsValue_binding = Core.Name "binding"
_BindingEqualsValue_value = Core.Name "value"
data ForStatement =
  ForStatement {
    forStatementItem :: ForItem,
    forStatementOrdinalityOrOffset :: (Maybe ForOrdinalityOrOffset)}
  deriving (Eq, Ord, Read, Show)
_ForStatement = Core.Name "openGql.grammar.ForStatement"
_ForStatement_item = Core.Name "item"
_ForStatement_ordinalityOrOffset = Core.Name "ordinalityOrOffset"
data ForItem =
  ForItem {
    forItemAlias :: ForItemAlias,
    forItemSource :: ForItemSource}
  deriving (Eq, Ord, Read, Show)
_ForItem = Core.Name "openGql.grammar.ForItem"
_ForItem_alias = Core.Name "alias"
_ForItem_source = Core.Name "source"
type ForItemAlias = BindingVariable
_ForItemAlias = Core.Name "openGql.grammar.ForItemAlias"
type ForItemSource = ValueExpression
_ForItemSource = Core.Name "openGql.grammar.ForItemSource"
data ForOrdinalityOrOffset =
  ForOrdinalityOrOffset {
    forOrdinalityOrOffsetType :: OrdinalityOrOffsetType,
    forOrdinalityOrOffsetVariable :: BindingVariable}
  deriving (Eq, Ord, Read, Show)
_ForOrdinalityOrOffset = Core.Name "openGql.grammar.ForOrdinalityOrOffset"
_ForOrdinalityOrOffset_type = Core.Name "type"
_ForOrdinalityOrOffset_variable = Core.Name "variable"
data OrdinalityOrOffsetType =
  OrdinalityOrOffsetTypeOrdinality |
  OrdinalityOrOffsetTypeOffset
  deriving (Eq, Ord, Read, Show)
_OrdinalityOrOffsetType = Core.Name "openGql.grammar.OrdinalityOrOffsetType"
_OrdinalityOrOffsetType_ordinality = Core.Name "ordinality"
_OrdinalityOrOffsetType_offset = Core.Name "offset"
data OrderByAndPageStatement =
  OrderByAndPageStatementOrderByAndOptionalOffsetAndLimit OrderByAndOptionalOffsetAndLimit |
  OrderByAndPageStatementOffsetAndOptionalLimit OffsetAndOptionalLimit |
  OrderByAndPageStatementLimitOnly LimitClause
  deriving (Eq, Ord, Read, Show)
_OrderByAndPageStatement = Core.Name "openGql.grammar.OrderByAndPageStatement"
_OrderByAndPageStatement_orderByAndOptionalOffsetAndLimit = Core.Name "orderByAndOptionalOffsetAndLimit"
_OrderByAndPageStatement_offsetAndOptionalLimit = Core.Name "offsetAndOptionalLimit"
_OrderByAndPageStatement_limitOnly = Core.Name "limitOnly"
data OrderByAndOptionalOffsetAndLimit =
  OrderByAndOptionalOffsetAndLimit {
    orderByAndOptionalOffsetAndLimitOrderBy :: OrderByClause,
    orderByAndOptionalOffsetAndLimitOffset :: (Maybe OffsetClause),
    orderByAndOptionalOffsetAndLimitLimit :: (Maybe LimitClause)}
  deriving (Eq, Ord, Read, Show)
_OrderByAndOptionalOffsetAndLimit = Core.Name "openGql.grammar.OrderByAndOptionalOffsetAndLimit"
_OrderByAndOptionalOffsetAndLimit_orderBy = Core.Name "orderBy"
_OrderByAndOptionalOffsetAndLimit_offset = Core.Name "offset"
_OrderByAndOptionalOffsetAndLimit_limit = Core.Name "limit"
data OffsetAndOptionalLimit =
  OffsetAndOptionalLimit {
    offsetAndOptionalLimitOffset :: OffsetClause,
    offsetAndOptionalLimitLimit :: (Maybe LimitClause)}
  deriving (Eq, Ord, Read, Show)
_OffsetAndOptionalLimit = Core.Name "openGql.grammar.OffsetAndOptionalLimit"
_OffsetAndOptionalLimit_offset = Core.Name "offset"
_OffsetAndOptionalLimit_limit = Core.Name "limit"
data PrimitiveResultStatement =
  PrimitiveResultStatementReturnAndOptionalOrderBy ReturnAndOptionalOrderByAndPage |
  PrimitiveResultStatementFinish
  deriving (Eq, Ord, Read, Show)
_PrimitiveResultStatement = Core.Name "openGql.grammar.PrimitiveResultStatement"
_PrimitiveResultStatement_returnAndOptionalOrderBy = Core.Name "returnAndOptionalOrderBy"
_PrimitiveResultStatement_finish = Core.Name "finish"
data ReturnAndOptionalOrderByAndPage =
  ReturnAndOptionalOrderByAndPage {
    returnAndOptionalOrderByAndPageReturn :: ReturnStatement,
    returnAndOptionalOrderByAndPageOrderByAndPage :: (Maybe OrderByAndPageStatement)}
  deriving (Eq, Ord, Read, Show)
_ReturnAndOptionalOrderByAndPage = Core.Name "openGql.grammar.ReturnAndOptionalOrderByAndPage"
_ReturnAndOptionalOrderByAndPage_return = Core.Name "return"
_ReturnAndOptionalOrderByAndPage_orderByAndPage = Core.Name "orderByAndPage"
type ReturnStatement = ReturnStatementBody
_ReturnStatement = Core.Name "openGql.grammar.ReturnStatement"
data ReturnStatementBody =
  ReturnStatementBodyItems ReturnItemsAndGroupBy |
  ReturnStatementBodyNoBindings
  deriving (Eq, Ord, Read, Show)
_ReturnStatementBody = Core.Name "openGql.grammar.ReturnStatementBody"
_ReturnStatementBody_items = Core.Name "items"
_ReturnStatementBody_noBindings = Core.Name "noBindings"
data ReturnItemsAndGroupBy =
  ReturnItemsAndGroupBy {
    returnItemsAndGroupByQuantifier :: (Maybe SetQuantifier),
    returnItemsAndGroupByItems :: ReturnItems,
    returnItemsAndGroupByGroupBy :: (Maybe GroupByClause)}
  deriving (Eq, Ord, Read, Show)
_ReturnItemsAndGroupBy = Core.Name "openGql.grammar.ReturnItemsAndGroupBy"
_ReturnItemsAndGroupBy_quantifier = Core.Name "quantifier"
_ReturnItemsAndGroupBy_items = Core.Name "items"
_ReturnItemsAndGroupBy_groupBy = Core.Name "groupBy"
data ReturnItems =
  ReturnItemsAsterisk |
  ReturnItemsItemList ReturnItemList
  deriving (Eq, Ord, Read, Show)
_ReturnItems = Core.Name "openGql.grammar.ReturnItems"
_ReturnItems_asterisk = Core.Name "asterisk"
_ReturnItems_itemList = Core.Name "itemList"
type ReturnItemList = [ReturnItem]
_ReturnItemList = Core.Name "openGql.grammar.ReturnItemList"
data ReturnItem =
  ReturnItem {
    returnItemExpression :: AggregatingValueExpression,
    returnItemAlias :: (Maybe ReturnItemAlias)}
  deriving (Eq, Ord, Read, Show)
_ReturnItem = Core.Name "openGql.grammar.ReturnItem"
_ReturnItem_expression = Core.Name "expression"
_ReturnItem_alias = Core.Name "alias"
type ReturnItemAlias = String
_ReturnItemAlias = Core.Name "openGql.grammar.ReturnItemAlias"
data SelectStatement =
  SelectStatement {
    selectStatementQuantifier :: (Maybe SetQuantifier),
    selectStatementItems :: SelectItems,
    selectStatementBody :: (Maybe SelectStatementBodyAndClauses)}
  deriving (Eq, Ord, Read, Show)
_SelectStatement = Core.Name "openGql.grammar.SelectStatement"
_SelectStatement_quantifier = Core.Name "quantifier"
_SelectStatement_items = Core.Name "items"
_SelectStatement_body = Core.Name "body"
data SelectItems =
  SelectItemsAsterisk |
  SelectItemsItemList SelectItemList
  deriving (Eq, Ord, Read, Show)
_SelectItems = Core.Name "openGql.grammar.SelectItems"
_SelectItems_asterisk = Core.Name "asterisk"
_SelectItems_itemList = Core.Name "itemList"
data SelectStatementBodyAndClauses =
  SelectStatementBodyAndClauses {
    selectStatementBodyAndClausesBody :: SelectStatementBody,
    selectStatementBodyAndClausesWhere :: (Maybe WhereClause),
    selectStatementBodyAndClausesGroupBy :: (Maybe GroupByClause),
    selectStatementBodyAndClausesHaving :: (Maybe HavingClause),
    selectStatementBodyAndClausesOrderBy :: (Maybe OrderByClause),
    selectStatementBodyAndClausesOffset :: (Maybe OffsetClause),
    selectStatementBodyAndClausesLimit :: (Maybe LimitClause)}
  deriving (Eq, Ord, Read, Show)
_SelectStatementBodyAndClauses = Core.Name "openGql.grammar.SelectStatementBodyAndClauses"
_SelectStatementBodyAndClauses_body = Core.Name "body"
_SelectStatementBodyAndClauses_where = Core.Name "where"
_SelectStatementBodyAndClauses_groupBy = Core.Name "groupBy"
_SelectStatementBodyAndClauses_having = Core.Name "having"
_SelectStatementBodyAndClauses_orderBy = Core.Name "orderBy"
_SelectStatementBodyAndClauses_offset = Core.Name "offset"
_SelectStatementBodyAndClauses_limit = Core.Name "limit"
type SelectItemList = [SelectItem]
_SelectItemList = Core.Name "openGql.grammar.SelectItemList"
data SelectItem =
  SelectItem {
    selectItemExpression :: AggregatingValueExpression,
    selectItemAlias :: (Maybe SelectItemAlias)}
  deriving (Eq, Ord, Read, Show)
_SelectItem = Core.Name "openGql.grammar.SelectItem"
_SelectItem_expression = Core.Name "expression"
_SelectItem_alias = Core.Name "alias"
type SelectItemAlias = String
_SelectItemAlias = Core.Name "openGql.grammar.SelectItemAlias"
type HavingClause = SearchCondition
_HavingClause = Core.Name "openGql.grammar.HavingClause"
data SelectStatementBody =
  SelectStatementBodyGraphMatchList SelectGraphMatchList |
  SelectStatementBodyQuerySpecification SelectQuerySpecification
  deriving (Eq, Ord, Read, Show)
_SelectStatementBody = Core.Name "openGql.grammar.SelectStatementBody"
_SelectStatementBody_graphMatchList = Core.Name "graphMatchList"
_SelectStatementBody_querySpecification = Core.Name "querySpecification"
type SelectGraphMatchList = [SelectGraphMatch]
_SelectGraphMatchList = Core.Name "openGql.grammar.SelectGraphMatchList"
data SelectGraphMatch =
  SelectGraphMatch {
    selectGraphMatchGraphExpression :: GraphExpression,
    selectGraphMatchMatchStatement :: MatchStatement}
  deriving (Eq, Ord, Read, Show)
_SelectGraphMatch = Core.Name "openGql.grammar.SelectGraphMatch"
_SelectGraphMatch_graphExpression = Core.Name "graphExpression"
_SelectGraphMatch_matchStatement = Core.Name "matchStatement"
data SelectQuerySpecification =
  SelectQuerySpecificationNested NestedQuerySpecification |
  SelectQuerySpecificationGraphAndNested GraphAndNestedQuerySpecification
  deriving (Eq, Ord, Read, Show)
_SelectQuerySpecification = Core.Name "openGql.grammar.SelectQuerySpecification"
_SelectQuerySpecification_nested = Core.Name "nested"
_SelectQuerySpecification_graphAndNested = Core.Name "graphAndNested"
data GraphAndNestedQuerySpecification =
  GraphAndNestedQuerySpecification {
    graphAndNestedQuerySpecificationGraphExpression :: GraphExpression,
    graphAndNestedQuerySpecificationNested :: NestedQuerySpecification}
  deriving (Eq, Ord, Read, Show)
_GraphAndNestedQuerySpecification = Core.Name "openGql.grammar.GraphAndNestedQuerySpecification"
_GraphAndNestedQuerySpecification_graphExpression = Core.Name "graphExpression"
_GraphAndNestedQuerySpecification_nested = Core.Name "nested"
data CallProcedureStatement =
  CallProcedureStatement {
    callProcedureStatementOptional :: Bool,
    callProcedureStatementCall :: ProcedureCall}
  deriving (Eq, Ord, Read, Show)
_CallProcedureStatement = Core.Name "openGql.grammar.CallProcedureStatement"
_CallProcedureStatement_optional = Core.Name "optional"
_CallProcedureStatement_call = Core.Name "call"
data ProcedureCall =
  ProcedureCallInline InlineProcedureCall |
  ProcedureCallNamed NamedProcedureCall
  deriving (Eq, Ord, Read, Show)
_ProcedureCall = Core.Name "openGql.grammar.ProcedureCall"
_ProcedureCall_inline = Core.Name "inline"
_ProcedureCall_named = Core.Name "named"
data InlineProcedureCall =
  InlineProcedureCall {
    inlineProcedureCallScope :: (Maybe VariableScopeClause),
    inlineProcedureCallNested :: NestedProcedureSpecification}
  deriving (Eq, Ord, Read, Show)
_InlineProcedureCall = Core.Name "openGql.grammar.InlineProcedureCall"
_InlineProcedureCall_scope = Core.Name "scope"
_InlineProcedureCall_nested = Core.Name "nested"
type VariableScopeClause = (Maybe BindingVariableReferenceList)
_VariableScopeClause = Core.Name "openGql.grammar.VariableScopeClause"
type BindingVariableReferenceList = [BindingVariableReference]
_BindingVariableReferenceList = Core.Name "openGql.grammar.BindingVariableReferenceList"
data NamedProcedureCall =
  NamedProcedureCall {
    namedProcedureCallReference :: ProcedureReference,
    namedProcedureCallArguments :: (Maybe ProcedureArgumentList),
    namedProcedureCallYield :: (Maybe YieldClause)}
  deriving (Eq, Ord, Read, Show)
_NamedProcedureCall = Core.Name "openGql.grammar.NamedProcedureCall"
_NamedProcedureCall_reference = Core.Name "reference"
_NamedProcedureCall_arguments = Core.Name "arguments"
_NamedProcedureCall_yield = Core.Name "yield"
type ProcedureArgumentList = [ProcedureArgument]
_ProcedureArgumentList = Core.Name "openGql.grammar.ProcedureArgumentList"
type ProcedureArgument = ValueExpression
_ProcedureArgument = Core.Name "openGql.grammar.ProcedureArgument"
type AtSchemaClause = SchemaReference
_AtSchemaClause = Core.Name "openGql.grammar.AtSchemaClause"
type UseGraphClause = GraphExpression
_UseGraphClause = Core.Name "openGql.grammar.UseGraphClause"
data GraphPatternBindingTable =
  GraphPatternBindingTable {
    graphPatternBindingTablePattern :: GraphPattern,
    graphPatternBindingTableYieldClause :: (Maybe GraphPatternYieldClause)}
  deriving (Eq, Ord, Read, Show)
_GraphPatternBindingTable = Core.Name "openGql.grammar.GraphPatternBindingTable"
_GraphPatternBindingTable_pattern = Core.Name "pattern"
_GraphPatternBindingTable_yieldClause = Core.Name "yieldClause"
type GraphPatternYieldClause = GraphPatternYieldItemList
_GraphPatternYieldClause = Core.Name "openGql.grammar.GraphPatternYieldClause"
data GraphPatternYieldItemList =
  GraphPatternYieldItemListItems [GraphPatternYieldItem] |
  GraphPatternYieldItemListNoBindings
  deriving (Eq, Ord, Read, Show)
_GraphPatternYieldItemList = Core.Name "openGql.grammar.GraphPatternYieldItemList"
_GraphPatternYieldItemList_items = Core.Name "items"
_GraphPatternYieldItemList_noBindings = Core.Name "noBindings"
type GraphPatternYieldItem = BindingVariableReference
_GraphPatternYieldItem = Core.Name "openGql.grammar.GraphPatternYieldItem"
data GraphPattern =
  GraphPattern {
    graphPatternMatchMode :: (Maybe MatchMode),
    graphPatternPathPatterns :: PathPatternList,
    graphPatternKeepClause :: (Maybe KeepClause),
    graphPatternWhereClause :: (Maybe GraphPatternWhereClause)}
  deriving (Eq, Ord, Read, Show)
_GraphPattern = Core.Name "openGql.grammar.GraphPattern"
_GraphPattern_matchMode = Core.Name "matchMode"
_GraphPattern_pathPatterns = Core.Name "pathPatterns"
_GraphPattern_keepClause = Core.Name "keepClause"
_GraphPattern_whereClause = Core.Name "whereClause"
data MatchMode =
  MatchModeRepeatableElements RepeatableElementsMatchMode |
  MatchModeDifferentEdges DifferentEdgesMatchMode
  deriving (Eq, Ord, Read, Show)
_MatchMode = Core.Name "openGql.grammar.MatchMode"
_MatchMode_repeatableElements = Core.Name "repeatableElements"
_MatchMode_differentEdges = Core.Name "differentEdges"
type RepeatableElementsMatchMode = ElementBindingsOrElements
_RepeatableElementsMatchMode = Core.Name "openGql.grammar.RepeatableElementsMatchMode"
type DifferentEdgesMatchMode = EdgeBindingsOrEdges
_DifferentEdgesMatchMode = Core.Name "openGql.grammar.DifferentEdgesMatchMode"
data ElementBindingsOrElements =
  ElementBindingsOrElementsElementBindings Bool |
  ElementBindingsOrElementsElements
  deriving (Eq, Ord, Read, Show)
_ElementBindingsOrElements = Core.Name "openGql.grammar.ElementBindingsOrElements"
_ElementBindingsOrElements_elementBindings = Core.Name "elementBindings"
_ElementBindingsOrElements_elements = Core.Name "elements"
data EdgeBindingsOrEdges =
  EdgeBindingsOrEdgesEdgeBindings Bool |
  EdgeBindingsOrEdgesEdges
  deriving (Eq, Ord, Read, Show)
_EdgeBindingsOrEdges = Core.Name "openGql.grammar.EdgeBindingsOrEdges"
_EdgeBindingsOrEdges_edgeBindings = Core.Name "edgeBindings"
_EdgeBindingsOrEdges_edges = Core.Name "edges"
type PathPatternList = [PathPattern]
_PathPatternList = Core.Name "openGql.grammar.PathPatternList"
data PathPattern =
  PathPattern {
    pathPatternVariableDeclaration :: (Maybe PathVariableDeclaration),
    pathPatternPrefix :: (Maybe PathPatternPrefix),
    pathPatternExpression :: PathPatternExpression}
  deriving (Eq, Ord, Read, Show)
_PathPattern = Core.Name "openGql.grammar.PathPattern"
_PathPattern_variableDeclaration = Core.Name "variableDeclaration"
_PathPattern_prefix = Core.Name "prefix"
_PathPattern_expression = Core.Name "expression"
type PathVariableDeclaration = PathVariable
_PathVariableDeclaration = Core.Name "openGql.grammar.PathVariableDeclaration"
type KeepClause = PathPatternPrefix
_KeepClause = Core.Name "openGql.grammar.KeepClause"
type GraphPatternWhereClause = SearchCondition
_GraphPatternWhereClause = Core.Name "openGql.grammar.GraphPatternWhereClause"
type InsertGraphPattern = InsertPathPatternList
_InsertGraphPattern = Core.Name "openGql.grammar.InsertGraphPattern"
type InsertPathPatternList = [InsertPathPattern]
_InsertPathPatternList = Core.Name "openGql.grammar.InsertPathPatternList"
data InsertPathPattern =
  InsertPathPattern {
    insertPathPatternStartNode :: InsertNodePattern,
    insertPathPatternEdgesAndNodes :: [InsertEdgeAndNode]}
  deriving (Eq, Ord, Read, Show)
_InsertPathPattern = Core.Name "openGql.grammar.InsertPathPattern"
_InsertPathPattern_startNode = Core.Name "startNode"
_InsertPathPattern_edgesAndNodes = Core.Name "edgesAndNodes"
data InsertEdgeAndNode =
  InsertEdgeAndNode {
    insertEdgeAndNodeEdge :: InsertEdgePattern,
    insertEdgeAndNodeNode :: InsertNodePattern}
  deriving (Eq, Ord, Read, Show)
_InsertEdgeAndNode = Core.Name "openGql.grammar.InsertEdgeAndNode"
_InsertEdgeAndNode_edge = Core.Name "edge"
_InsertEdgeAndNode_node = Core.Name "node"
type InsertNodePattern = (Maybe InsertElementPatternFiller)
_InsertNodePattern = Core.Name "openGql.grammar.InsertNodePattern"
data InsertEdgePattern =
  InsertEdgePatternPointingLeft InsertEdgePointingLeft |
  InsertEdgePatternPointingRight InsertEdgePointingRight |
  InsertEdgePatternUndirected InsertEdgeUndirected
  deriving (Eq, Ord, Read, Show)
_InsertEdgePattern = Core.Name "openGql.grammar.InsertEdgePattern"
_InsertEdgePattern_pointingLeft = Core.Name "pointingLeft"
_InsertEdgePattern_pointingRight = Core.Name "pointingRight"
_InsertEdgePattern_undirected = Core.Name "undirected"
type InsertEdgePointingLeft = (Maybe InsertElementPatternFiller)
_InsertEdgePointingLeft = Core.Name "openGql.grammar.InsertEdgePointingLeft"
type InsertEdgePointingRight = (Maybe InsertElementPatternFiller)
_InsertEdgePointingRight = Core.Name "openGql.grammar.InsertEdgePointingRight"
type InsertEdgeUndirected = (Maybe InsertElementPatternFiller)
_InsertEdgeUndirected = Core.Name "openGql.grammar.InsertEdgeUndirected"
data InsertElementPatternFiller =
  InsertElementPatternFiller {
    insertElementPatternFillerVariableDeclaration :: (Maybe ElementVariableDeclaration),
    insertElementPatternFillerLabelAndProperties :: (Maybe LabelAndPropertySetSpecification)}
  deriving (Eq, Ord, Read, Show)
_InsertElementPatternFiller = Core.Name "openGql.grammar.InsertElementPatternFiller"
_InsertElementPatternFiller_variableDeclaration = Core.Name "variableDeclaration"
_InsertElementPatternFiller_labelAndProperties = Core.Name "labelAndProperties"
data LabelAndPropertySetSpecification =
  LabelAndPropertySetSpecification {
    labelAndPropertySetSpecificationIsOrColon :: (Maybe IsOrColon),
    labelAndPropertySetSpecificationLabelSet :: (Maybe LabelSetSpecification),
    labelAndPropertySetSpecificationPropertySpecification :: (Maybe ElementPropertySpecification)}
  deriving (Eq, Ord, Read, Show)
_LabelAndPropertySetSpecification = Core.Name "openGql.grammar.LabelAndPropertySetSpecification"
_LabelAndPropertySetSpecification_isOrColon = Core.Name "isOrColon"
_LabelAndPropertySetSpecification_labelSet = Core.Name "labelSet"
_LabelAndPropertySetSpecification_propertySpecification = Core.Name "propertySpecification"
data PathPatternPrefix =
  PathPatternPrefixModePrefix PathModePrefix |
  PathPatternPrefixSearchPrefix PathSearchPrefix
  deriving (Eq, Ord, Read, Show)
_PathPatternPrefix = Core.Name "openGql.grammar.PathPatternPrefix"
_PathPatternPrefix_modePrefix = Core.Name "modePrefix"
_PathPatternPrefix_searchPrefix = Core.Name "searchPrefix"
data PathModePrefix =
  PathModePrefix {
    pathModePrefixMode :: PathMode,
    pathModePrefixOrPaths :: (Maybe PathOrPaths)}
  deriving (Eq, Ord, Read, Show)
_PathModePrefix = Core.Name "openGql.grammar.PathModePrefix"
_PathModePrefix_mode = Core.Name "mode"
_PathModePrefix_orPaths = Core.Name "orPaths"
data PathMode =
  PathModeWalk |
  PathModeTrail |
  PathModeSimple |
  PathModeAcyclic
  deriving (Eq, Ord, Read, Show)
_PathMode = Core.Name "openGql.grammar.PathMode"
_PathMode_walk = Core.Name "walk"
_PathMode_trail = Core.Name "trail"
_PathMode_simple = Core.Name "simple"
_PathMode_acyclic = Core.Name "acyclic"
data PathSearchPrefix =
  PathSearchPrefixAll AllPathSearch |
  PathSearchPrefixAny AnyPathSearch |
  PathSearchPrefixShortest ShortestPathSearch
  deriving (Eq, Ord, Read, Show)
_PathSearchPrefix = Core.Name "openGql.grammar.PathSearchPrefix"
_PathSearchPrefix_all = Core.Name "all"
_PathSearchPrefix_any = Core.Name "any"
_PathSearchPrefix_shortest = Core.Name "shortest"
data AllPathSearch =
  AllPathSearch {
    allPathSearchMode :: (Maybe PathMode),
    allPathSearchOrPaths :: (Maybe PathOrPaths)}
  deriving (Eq, Ord, Read, Show)
_AllPathSearch = Core.Name "openGql.grammar.AllPathSearch"
_AllPathSearch_mode = Core.Name "mode"
_AllPathSearch_orPaths = Core.Name "orPaths"
data PathOrPaths =
  PathOrPathsPath |
  PathOrPathsPaths
  deriving (Eq, Ord, Read, Show)
_PathOrPaths = Core.Name "openGql.grammar.PathOrPaths"
_PathOrPaths_path = Core.Name "path"
_PathOrPaths_paths = Core.Name "paths"
data AnyPathSearch =
  AnyPathSearch {
    anyPathSearchNumberOfPaths :: (Maybe NumberOfPaths),
    anyPathSearchMode :: (Maybe PathMode),
    anyPathSearchOrPaths :: (Maybe PathOrPaths)}
  deriving (Eq, Ord, Read, Show)
_AnyPathSearch = Core.Name "openGql.grammar.AnyPathSearch"
_AnyPathSearch_numberOfPaths = Core.Name "numberOfPaths"
_AnyPathSearch_mode = Core.Name "mode"
_AnyPathSearch_orPaths = Core.Name "orPaths"
type NumberOfPaths = NonNegativeIntegerSpecification
_NumberOfPaths = Core.Name "openGql.grammar.NumberOfPaths"
data ShortestPathSearch =
  ShortestPathSearchAllShortest AllShortestPathSearch |
  ShortestPathSearchAnyShortest AnyShortestPathSearch |
  ShortestPathSearchCountedShortest CountedShortestPathSearch |
  ShortestPathSearchCountedShortestGroup CountedShortestGroupSearch
  deriving (Eq, Ord, Read, Show)
_ShortestPathSearch = Core.Name "openGql.grammar.ShortestPathSearch"
_ShortestPathSearch_allShortest = Core.Name "allShortest"
_ShortestPathSearch_anyShortest = Core.Name "anyShortest"
_ShortestPathSearch_countedShortest = Core.Name "countedShortest"
_ShortestPathSearch_countedShortestGroup = Core.Name "countedShortestGroup"
data AllShortestPathSearch =
  AllShortestPathSearch {
    allShortestPathSearchMode :: (Maybe PathMode),
    allShortestPathSearchOrPaths :: (Maybe PathOrPaths)}
  deriving (Eq, Ord, Read, Show)
_AllShortestPathSearch = Core.Name "openGql.grammar.AllShortestPathSearch"
_AllShortestPathSearch_mode = Core.Name "mode"
_AllShortestPathSearch_orPaths = Core.Name "orPaths"
data AnyShortestPathSearch =
  AnyShortestPathSearch {
    anyShortestPathSearchMode :: (Maybe PathMode),
    anyShortestPathSearchOrPaths :: (Maybe PathOrPaths)}
  deriving (Eq, Ord, Read, Show)
_AnyShortestPathSearch = Core.Name "openGql.grammar.AnyShortestPathSearch"
_AnyShortestPathSearch_mode = Core.Name "mode"
_AnyShortestPathSearch_orPaths = Core.Name "orPaths"
data CountedShortestPathSearch =
  CountedShortestPathSearch {
    countedShortestPathSearchNumberOfPaths :: NumberOfPaths,
    countedShortestPathSearchMode :: (Maybe PathMode),
    countedShortestPathSearchOrPaths :: (Maybe PathOrPaths)}
  deriving (Eq, Ord, Read, Show)
_CountedShortestPathSearch = Core.Name "openGql.grammar.CountedShortestPathSearch"
_CountedShortestPathSearch_numberOfPaths = Core.Name "numberOfPaths"
_CountedShortestPathSearch_mode = Core.Name "mode"
_CountedShortestPathSearch_orPaths = Core.Name "orPaths"
data CountedShortestGroupSearch =
  CountedShortestGroupSearch {
    countedShortestGroupSearchNumberOfGroups :: (Maybe NumberOfGroups),
    countedShortestGroupSearchMode :: (Maybe PathMode),
    countedShortestGroupSearchOrPaths :: (Maybe PathOrPaths),
    countedShortestGroupSearchGroups :: Bool}
  deriving (Eq, Ord, Read, Show)
_CountedShortestGroupSearch = Core.Name "openGql.grammar.CountedShortestGroupSearch"
_CountedShortestGroupSearch_numberOfGroups = Core.Name "numberOfGroups"
_CountedShortestGroupSearch_mode = Core.Name "mode"
_CountedShortestGroupSearch_orPaths = Core.Name "orPaths"
_CountedShortestGroupSearch_groups = Core.Name "groups"
type NumberOfGroups = NonNegativeIntegerSpecification
_NumberOfGroups = Core.Name "openGql.grammar.NumberOfGroups"
data PathPatternExpression =
  PathPatternExpressionTerm PathTerm |
  PathPatternExpressionMultisetAlternation [PathTerm] |
  PathPatternExpressionPatternUnion [PathTerm]
  deriving (Eq, Ord, Read, Show)
_PathPatternExpression = Core.Name "openGql.grammar.PathPatternExpression"
_PathPatternExpression_term = Core.Name "term"
_PathPatternExpression_multisetAlternation = Core.Name "multisetAlternation"
_PathPatternExpression_patternUnion = Core.Name "patternUnion"
type PathTerm = [PathFactor]
_PathTerm = Core.Name "openGql.grammar.PathTerm"
data PathFactor =
  PathFactorPrimary PathPrimary |
  PathFactorQuantifiedPrimary QuantifiedPathPrimary |
  PathFactorQuestionedPrimary QuestionedPathPrimary
  deriving (Eq, Ord, Read, Show)
_PathFactor = Core.Name "openGql.grammar.PathFactor"
_PathFactor_primary = Core.Name "primary"
_PathFactor_quantifiedPrimary = Core.Name "quantifiedPrimary"
_PathFactor_questionedPrimary = Core.Name "questionedPrimary"
data QuantifiedPathPrimary =
  QuantifiedPathPrimary {
    quantifiedPathPrimaryPrimary :: PathPrimary,
    quantifiedPathPrimaryQuantifier :: GraphPatternQuantifier}
  deriving (Eq, Ord, Read, Show)
_QuantifiedPathPrimary = Core.Name "openGql.grammar.QuantifiedPathPrimary"
_QuantifiedPathPrimary_primary = Core.Name "primary"
_QuantifiedPathPrimary_quantifier = Core.Name "quantifier"
type QuestionedPathPrimary = PathPrimary
_QuestionedPathPrimary = Core.Name "openGql.grammar.QuestionedPathPrimary"
data PathPrimary =
  PathPrimaryElementPattern ElementPattern |
  PathPrimaryParenthesizedExpression ParenthesizedPathPatternExpression |
  PathPrimarySimplifiedExpression SimplifiedPathPatternExpression
  deriving (Eq, Ord, Read, Show)
_PathPrimary = Core.Name "openGql.grammar.PathPrimary"
_PathPrimary_elementPattern = Core.Name "elementPattern"
_PathPrimary_parenthesizedExpression = Core.Name "parenthesizedExpression"
_PathPrimary_simplifiedExpression = Core.Name "simplifiedExpression"
data ElementPattern =
  ElementPatternNode NodePattern |
  ElementPatternEdge EdgePattern
  deriving (Eq, Ord, Read, Show)
_ElementPattern = Core.Name "openGql.grammar.ElementPattern"
_ElementPattern_node = Core.Name "node"
_ElementPattern_edge = Core.Name "edge"
type NodePattern = ElementPatternFiller
_NodePattern = Core.Name "openGql.grammar.NodePattern"
data ElementPatternFiller =
  ElementPatternFiller {
    elementPatternFillerVariableDeclaration :: (Maybe ElementVariableDeclaration),
    elementPatternFillerIsLabelExpression :: (Maybe IsLabelExpression),
    elementPatternFillerPredicate :: (Maybe ElementPatternPredicate)}
  deriving (Eq, Ord, Read, Show)
_ElementPatternFiller = Core.Name "openGql.grammar.ElementPatternFiller"
_ElementPatternFiller_variableDeclaration = Core.Name "variableDeclaration"
_ElementPatternFiller_isLabelExpression = Core.Name "isLabelExpression"
_ElementPatternFiller_predicate = Core.Name "predicate"
data ElementVariableDeclaration =
  ElementVariableDeclaration {
    elementVariableDeclarationTemp :: (Maybe Bool),
    elementVariableDeclarationVariable :: ElementVariable}
  deriving (Eq, Ord, Read, Show)
_ElementVariableDeclaration = Core.Name "openGql.grammar.ElementVariableDeclaration"
_ElementVariableDeclaration_temp = Core.Name "temp"
_ElementVariableDeclaration_variable = Core.Name "variable"
data IsLabelExpression =
  IsLabelExpression {
    isLabelExpressionIsOrColon :: IsOrColon,
    isLabelExpressionLabel :: LabelExpression}
  deriving (Eq, Ord, Read, Show)
_IsLabelExpression = Core.Name "openGql.grammar.IsLabelExpression"
_IsLabelExpression_isOrColon = Core.Name "isOrColon"
_IsLabelExpression_label = Core.Name "label"
data IsOrColon =
  IsOrColonIs |
  IsOrColonColon
  deriving (Eq, Ord, Read, Show)
_IsOrColon = Core.Name "openGql.grammar.IsOrColon"
_IsOrColon_is = Core.Name "is"
_IsOrColon_colon = Core.Name "colon"
data ElementPatternPredicate =
  ElementPatternPredicateWhereClause ElementPatternWhereClause |
  ElementPatternPredicatePropertySpecification ElementPropertySpecification
  deriving (Eq, Ord, Read, Show)
_ElementPatternPredicate = Core.Name "openGql.grammar.ElementPatternPredicate"
_ElementPatternPredicate_whereClause = Core.Name "whereClause"
_ElementPatternPredicate_propertySpecification = Core.Name "propertySpecification"
type ElementPatternWhereClause = SearchCondition
_ElementPatternWhereClause = Core.Name "openGql.grammar.ElementPatternWhereClause"
type ElementPropertySpecification = PropertyKeyValuePairList
_ElementPropertySpecification = Core.Name "openGql.grammar.ElementPropertySpecification"
type PropertyKeyValuePairList = [PropertyKeyValuePair]
_PropertyKeyValuePairList = Core.Name "openGql.grammar.PropertyKeyValuePairList"
data PropertyKeyValuePair =
  PropertyKeyValuePair {
    propertyKeyValuePairName :: PropertyName,
    propertyKeyValuePairValue :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_PropertyKeyValuePair = Core.Name "openGql.grammar.PropertyKeyValuePair"
_PropertyKeyValuePair_name = Core.Name "name"
_PropertyKeyValuePair_value = Core.Name "value"
data EdgePattern =
  EdgePatternFullEdge FullEdgePattern |
  EdgePatternAbbreviatedEdge AbbreviatedEdgePattern
  deriving (Eq, Ord, Read, Show)
_EdgePattern = Core.Name "openGql.grammar.EdgePattern"
_EdgePattern_fullEdge = Core.Name "fullEdge"
_EdgePattern_abbreviatedEdge = Core.Name "abbreviatedEdge"
data FullEdgePattern =
  FullEdgePatternPointingLeft FullEdgePointingLeft |
  FullEdgePatternUndirected FullEdgeUndirected |
  FullEdgePatternPointingRight FullEdgePointingRight |
  FullEdgePatternLeftOrUndirected FullEdgeLeftOrUndirected |
  FullEdgePatternUndirectedOrRight FullEdgeUndirectedOrRight |
  FullEdgePatternLeftOrRight FullEdgeLeftOrRight |
  FullEdgePatternAnyDirection FullEdgeAnyDirection
  deriving (Eq, Ord, Read, Show)
_FullEdgePattern = Core.Name "openGql.grammar.FullEdgePattern"
_FullEdgePattern_pointingLeft = Core.Name "pointingLeft"
_FullEdgePattern_undirected = Core.Name "undirected"
_FullEdgePattern_pointingRight = Core.Name "pointingRight"
_FullEdgePattern_leftOrUndirected = Core.Name "leftOrUndirected"
_FullEdgePattern_undirectedOrRight = Core.Name "undirectedOrRight"
_FullEdgePattern_leftOrRight = Core.Name "leftOrRight"
_FullEdgePattern_anyDirection = Core.Name "anyDirection"
type FullEdgePointingLeft = ElementPatternFiller
_FullEdgePointingLeft = Core.Name "openGql.grammar.FullEdgePointingLeft"
type FullEdgeUndirected = ElementPatternFiller
_FullEdgeUndirected = Core.Name "openGql.grammar.FullEdgeUndirected"
type FullEdgePointingRight = ElementPatternFiller
_FullEdgePointingRight = Core.Name "openGql.grammar.FullEdgePointingRight"
type FullEdgeLeftOrUndirected = ElementPatternFiller
_FullEdgeLeftOrUndirected = Core.Name "openGql.grammar.FullEdgeLeftOrUndirected"
type FullEdgeUndirectedOrRight = ElementPatternFiller
_FullEdgeUndirectedOrRight = Core.Name "openGql.grammar.FullEdgeUndirectedOrRight"
type FullEdgeLeftOrRight = ElementPatternFiller
_FullEdgeLeftOrRight = Core.Name "openGql.grammar.FullEdgeLeftOrRight"
type FullEdgeAnyDirection = ElementPatternFiller
_FullEdgeAnyDirection = Core.Name "openGql.grammar.FullEdgeAnyDirection"
data AbbreviatedEdgePattern =
  AbbreviatedEdgePatternLeftArrow |
  AbbreviatedEdgePatternTilde |
  AbbreviatedEdgePatternRightArrow |
  AbbreviatedEdgePatternLeftArrowTilde |
  AbbreviatedEdgePatternTildeRightArrow |
  AbbreviatedEdgePatternLeftMinusRight |
  AbbreviatedEdgePatternMinusSign
  deriving (Eq, Ord, Read, Show)
_AbbreviatedEdgePattern = Core.Name "openGql.grammar.AbbreviatedEdgePattern"
_AbbreviatedEdgePattern_leftArrow = Core.Name "leftArrow"
_AbbreviatedEdgePattern_tilde = Core.Name "tilde"
_AbbreviatedEdgePattern_rightArrow = Core.Name "rightArrow"
_AbbreviatedEdgePattern_leftArrowTilde = Core.Name "leftArrowTilde"
_AbbreviatedEdgePattern_tildeRightArrow = Core.Name "tildeRightArrow"
_AbbreviatedEdgePattern_leftMinusRight = Core.Name "leftMinusRight"
_AbbreviatedEdgePattern_minusSign = Core.Name "minusSign"
data ParenthesizedPathPatternExpression =
  ParenthesizedPathPatternExpression {
    parenthesizedPathPatternExpressionSubpathDeclaration :: (Maybe SubpathVariableDeclaration),
    parenthesizedPathPatternExpressionPathMode :: (Maybe PathModePrefix),
    parenthesizedPathPatternExpressionExpression :: PathPatternExpression,
    parenthesizedPathPatternExpressionWhereClause :: (Maybe ParenthesizedPathPatternWhereClause)}
  deriving (Eq, Ord, Read, Show)
_ParenthesizedPathPatternExpression = Core.Name "openGql.grammar.ParenthesizedPathPatternExpression"
_ParenthesizedPathPatternExpression_subpathDeclaration = Core.Name "subpathDeclaration"
_ParenthesizedPathPatternExpression_pathMode = Core.Name "pathMode"
_ParenthesizedPathPatternExpression_expression = Core.Name "expression"
_ParenthesizedPathPatternExpression_whereClause = Core.Name "whereClause"
type SubpathVariableDeclaration = SubpathVariable
_SubpathVariableDeclaration = Core.Name "openGql.grammar.SubpathVariableDeclaration"
type ParenthesizedPathPatternWhereClause = SearchCondition
_ParenthesizedPathPatternWhereClause = Core.Name "openGql.grammar.ParenthesizedPathPatternWhereClause"
data LabelExpression =
  LabelExpressionNegation LabelExpression |
  LabelExpressionConjunction ConjunctionLabelExpression |
  LabelExpressionDisjunction DisjunctionLabelExpression |
  LabelExpressionName LabelName |
  LabelExpressionWildcard |
  LabelExpressionParenthesized LabelExpression
  deriving (Eq, Ord, Read, Show)
_LabelExpression = Core.Name "openGql.grammar.LabelExpression"
_LabelExpression_negation = Core.Name "negation"
_LabelExpression_conjunction = Core.Name "conjunction"
_LabelExpression_disjunction = Core.Name "disjunction"
_LabelExpression_name = Core.Name "name"
_LabelExpression_wildcard = Core.Name "wildcard"
_LabelExpression_parenthesized = Core.Name "parenthesized"
data ConjunctionLabelExpression =
  ConjunctionLabelExpression {
    conjunctionLabelExpressionLeft :: LabelExpression,
    conjunctionLabelExpressionRight :: LabelExpression}
  deriving (Eq, Ord, Read, Show)
_ConjunctionLabelExpression = Core.Name "openGql.grammar.ConjunctionLabelExpression"
_ConjunctionLabelExpression_left = Core.Name "left"
_ConjunctionLabelExpression_right = Core.Name "right"
data DisjunctionLabelExpression =
  DisjunctionLabelExpression {
    disjunctionLabelExpressionLeft :: LabelExpression,
    disjunctionLabelExpressionRight :: LabelExpression}
  deriving (Eq, Ord, Read, Show)
_DisjunctionLabelExpression = Core.Name "openGql.grammar.DisjunctionLabelExpression"
_DisjunctionLabelExpression_left = Core.Name "left"
_DisjunctionLabelExpression_right = Core.Name "right"
type PathVariableReference = BindingVariableReference
_PathVariableReference = Core.Name "openGql.grammar.PathVariableReference"
type ElementVariableReference = BindingVariableReference
_ElementVariableReference = Core.Name "openGql.grammar.ElementVariableReference"
data GraphPatternQuantifier =
  GraphPatternQuantifierAsterisk |
  GraphPatternQuantifierPlusSign |
  GraphPatternQuantifierFixed FixedQuantifier |
  GraphPatternQuantifierGeneral GeneralQuantifier
  deriving (Eq, Ord, Read, Show)
_GraphPatternQuantifier = Core.Name "openGql.grammar.GraphPatternQuantifier"
_GraphPatternQuantifier_asterisk = Core.Name "asterisk"
_GraphPatternQuantifier_plusSign = Core.Name "plusSign"
_GraphPatternQuantifier_fixed = Core.Name "fixed"
_GraphPatternQuantifier_general = Core.Name "general"
type FixedQuantifier = UnsignedInteger
_FixedQuantifier = Core.Name "openGql.grammar.FixedQuantifier"
data GeneralQuantifier =
  GeneralQuantifier {
    generalQuantifierLowerBound :: (Maybe LowerBound),
    generalQuantifierUpperBound :: (Maybe UpperBound)}
  deriving (Eq, Ord, Read, Show)
_GeneralQuantifier = Core.Name "openGql.grammar.GeneralQuantifier"
_GeneralQuantifier_lowerBound = Core.Name "lowerBound"
_GeneralQuantifier_upperBound = Core.Name "upperBound"
type LowerBound = UnsignedInteger
_LowerBound = Core.Name "openGql.grammar.LowerBound"
type UpperBound = UnsignedInteger
_UpperBound = Core.Name "openGql.grammar.UpperBound"
data SimplifiedPathPatternExpression =
  SimplifiedPathPatternExpressionLeft SimplifiedDefaultingLeft |
  SimplifiedPathPatternExpressionUndirected SimplifiedDefaultingUndirected |
  SimplifiedPathPatternExpressionRight SimplifiedDefaultingRight |
  SimplifiedPathPatternExpressionLeftOrUndirected SimplifiedDefaultingLeftOrUndirected |
  SimplifiedPathPatternExpressionUndirectedOrRight SimplifiedDefaultingUndirectedOrRight |
  SimplifiedPathPatternExpressionLeftOrRight SimplifiedDefaultingLeftOrRight |
  SimplifiedPathPatternExpressionAnyDirection SimplifiedDefaultingAnyDirection
  deriving (Eq, Ord, Read, Show)
_SimplifiedPathPatternExpression = Core.Name "openGql.grammar.SimplifiedPathPatternExpression"
_SimplifiedPathPatternExpression_left = Core.Name "left"
_SimplifiedPathPatternExpression_undirected = Core.Name "undirected"
_SimplifiedPathPatternExpression_right = Core.Name "right"
_SimplifiedPathPatternExpression_leftOrUndirected = Core.Name "leftOrUndirected"
_SimplifiedPathPatternExpression_undirectedOrRight = Core.Name "undirectedOrRight"
_SimplifiedPathPatternExpression_leftOrRight = Core.Name "leftOrRight"
_SimplifiedPathPatternExpression_anyDirection = Core.Name "anyDirection"
type SimplifiedDefaultingLeft = SimplifiedContents
_SimplifiedDefaultingLeft = Core.Name "openGql.grammar.SimplifiedDefaultingLeft"
type SimplifiedDefaultingUndirected = SimplifiedContents
_SimplifiedDefaultingUndirected = Core.Name "openGql.grammar.SimplifiedDefaultingUndirected"
type SimplifiedDefaultingRight = SimplifiedContents
_SimplifiedDefaultingRight = Core.Name "openGql.grammar.SimplifiedDefaultingRight"
type SimplifiedDefaultingLeftOrUndirected = SimplifiedContents
_SimplifiedDefaultingLeftOrUndirected = Core.Name "openGql.grammar.SimplifiedDefaultingLeftOrUndirected"
type SimplifiedDefaultingUndirectedOrRight = SimplifiedContents
_SimplifiedDefaultingUndirectedOrRight = Core.Name "openGql.grammar.SimplifiedDefaultingUndirectedOrRight"
type SimplifiedDefaultingLeftOrRight = SimplifiedContents
_SimplifiedDefaultingLeftOrRight = Core.Name "openGql.grammar.SimplifiedDefaultingLeftOrRight"
type SimplifiedDefaultingAnyDirection = SimplifiedContents
_SimplifiedDefaultingAnyDirection = Core.Name "openGql.grammar.SimplifiedDefaultingAnyDirection"
data SimplifiedContents =
  SimplifiedContentsTerm SimplifiedTerm |
  SimplifiedContentsPathUnion SimplifiedPathUnion |
  SimplifiedContentsMultisetAlternation SimplifiedMultisetAlternation
  deriving (Eq, Ord, Read, Show)
_SimplifiedContents = Core.Name "openGql.grammar.SimplifiedContents"
_SimplifiedContents_term = Core.Name "term"
_SimplifiedContents_pathUnion = Core.Name "pathUnion"
_SimplifiedContents_multisetAlternation = Core.Name "multisetAlternation"
type SimplifiedPathUnion = [SimplifiedTerm]
_SimplifiedPathUnion = Core.Name "openGql.grammar.SimplifiedPathUnion"
type SimplifiedMultisetAlternation = [SimplifiedTerm]
_SimplifiedMultisetAlternation = Core.Name "openGql.grammar.SimplifiedMultisetAlternation"
data SimplifiedTerm =
  SimplifiedTermFactorLow SimplifiedFactorLow |
  SimplifiedTermConcatenation SimplifiedConcatenation
  deriving (Eq, Ord, Read, Show)
_SimplifiedTerm = Core.Name "openGql.grammar.SimplifiedTerm"
_SimplifiedTerm_factorLow = Core.Name "factorLow"
_SimplifiedTerm_concatenation = Core.Name "concatenation"
data SimplifiedConcatenation =
  SimplifiedConcatenation {
    simplifiedConcatenationInitialTerm :: SimplifiedTerm,
    simplifiedConcatenationNextFactor :: SimplifiedFactorLow}
  deriving (Eq, Ord, Read, Show)
_SimplifiedConcatenation = Core.Name "openGql.grammar.SimplifiedConcatenation"
_SimplifiedConcatenation_initialTerm = Core.Name "initialTerm"
_SimplifiedConcatenation_nextFactor = Core.Name "nextFactor"
data SimplifiedFactorLow =
  SimplifiedFactorLowFactorHigh SimplifiedFactorHigh |
  SimplifiedFactorLowConjunction SimplifiedConjunction
  deriving (Eq, Ord, Read, Show)
_SimplifiedFactorLow = Core.Name "openGql.grammar.SimplifiedFactorLow"
_SimplifiedFactorLow_factorHigh = Core.Name "factorHigh"
_SimplifiedFactorLow_conjunction = Core.Name "conjunction"
data SimplifiedConjunction =
  SimplifiedConjunction {
    simplifiedConjunctionLeft :: SimplifiedFactorLow,
    simplifiedConjunctionRight :: SimplifiedFactorHigh}
  deriving (Eq, Ord, Read, Show)
_SimplifiedConjunction = Core.Name "openGql.grammar.SimplifiedConjunction"
_SimplifiedConjunction_left = Core.Name "left"
_SimplifiedConjunction_right = Core.Name "right"
data SimplifiedFactorHigh =
  SimplifiedFactorHighTertiary SimplifiedTertiary |
  SimplifiedFactorHighQuantified SimplifiedQuantified |
  SimplifiedFactorHighQuestioned SimplifiedQuestioned
  deriving (Eq, Ord, Read, Show)
_SimplifiedFactorHigh = Core.Name "openGql.grammar.SimplifiedFactorHigh"
_SimplifiedFactorHigh_tertiary = Core.Name "tertiary"
_SimplifiedFactorHigh_quantified = Core.Name "quantified"
_SimplifiedFactorHigh_questioned = Core.Name "questioned"
data SimplifiedQuantified =
  SimplifiedQuantified {
    simplifiedQuantifiedTertiary :: SimplifiedTertiary,
    simplifiedQuantifiedQuantifier :: GraphPatternQuantifier}
  deriving (Eq, Ord, Read, Show)
_SimplifiedQuantified = Core.Name "openGql.grammar.SimplifiedQuantified"
_SimplifiedQuantified_tertiary = Core.Name "tertiary"
_SimplifiedQuantified_quantifier = Core.Name "quantifier"
type SimplifiedQuestioned = SimplifiedTertiary
_SimplifiedQuestioned = Core.Name "openGql.grammar.SimplifiedQuestioned"
data SimplifiedTertiary =
  SimplifiedTertiaryDirectionOverride SimplifiedDirectionOverride |
  SimplifiedTertiarySecondary SimplifiedSecondary
  deriving (Eq, Ord, Read, Show)
_SimplifiedTertiary = Core.Name "openGql.grammar.SimplifiedTertiary"
_SimplifiedTertiary_directionOverride = Core.Name "directionOverride"
_SimplifiedTertiary_secondary = Core.Name "secondary"
data SimplifiedDirectionOverride =
  SimplifiedDirectionOverrideOverrideLeft SimplifiedOverrideLeft |
  SimplifiedDirectionOverrideOverrideUndirected SimplifiedOverrideUndirected |
  SimplifiedDirectionOverrideOverrideRight SimplifiedOverrideRight |
  SimplifiedDirectionOverrideOverrideLeftOrUndirected SimplifiedOverrideLeftOrUndirected |
  SimplifiedDirectionOverrideOverrideUndirectedOrRight SimplifiedOverrideUndirectedOrRight |
  SimplifiedDirectionOverrideOverrideLeftOrRight SimplifiedOverrideLeftOrRight |
  SimplifiedDirectionOverrideOverrideAnyDirection SimplifiedOverrideAnyDirection
  deriving (Eq, Ord, Read, Show)
_SimplifiedDirectionOverride = Core.Name "openGql.grammar.SimplifiedDirectionOverride"
_SimplifiedDirectionOverride_overrideLeft = Core.Name "overrideLeft"
_SimplifiedDirectionOverride_overrideUndirected = Core.Name "overrideUndirected"
_SimplifiedDirectionOverride_overrideRight = Core.Name "overrideRight"
_SimplifiedDirectionOverride_overrideLeftOrUndirected = Core.Name "overrideLeftOrUndirected"
_SimplifiedDirectionOverride_overrideUndirectedOrRight = Core.Name "overrideUndirectedOrRight"
_SimplifiedDirectionOverride_overrideLeftOrRight = Core.Name "overrideLeftOrRight"
_SimplifiedDirectionOverride_overrideAnyDirection = Core.Name "overrideAnyDirection"
type SimplifiedOverrideLeft = SimplifiedSecondary
_SimplifiedOverrideLeft = Core.Name "openGql.grammar.SimplifiedOverrideLeft"
type SimplifiedOverrideUndirected = SimplifiedSecondary
_SimplifiedOverrideUndirected = Core.Name "openGql.grammar.SimplifiedOverrideUndirected"
type SimplifiedOverrideRight = SimplifiedSecondary
_SimplifiedOverrideRight = Core.Name "openGql.grammar.SimplifiedOverrideRight"
type SimplifiedOverrideLeftOrUndirected = SimplifiedSecondary
_SimplifiedOverrideLeftOrUndirected = Core.Name "openGql.grammar.SimplifiedOverrideLeftOrUndirected"
type SimplifiedOverrideUndirectedOrRight = SimplifiedSecondary
_SimplifiedOverrideUndirectedOrRight = Core.Name "openGql.grammar.SimplifiedOverrideUndirectedOrRight"
type SimplifiedOverrideLeftOrRight = SimplifiedSecondary
_SimplifiedOverrideLeftOrRight = Core.Name "openGql.grammar.SimplifiedOverrideLeftOrRight"
type SimplifiedOverrideAnyDirection = SimplifiedSecondary
_SimplifiedOverrideAnyDirection = Core.Name "openGql.grammar.SimplifiedOverrideAnyDirection"
data SimplifiedSecondary =
  SimplifiedSecondaryPrimary SimplifiedPrimary |
  SimplifiedSecondaryNegation SimplifiedNegation
  deriving (Eq, Ord, Read, Show)
_SimplifiedSecondary = Core.Name "openGql.grammar.SimplifiedSecondary"
_SimplifiedSecondary_primary = Core.Name "primary"
_SimplifiedSecondary_negation = Core.Name "negation"
type SimplifiedNegation = SimplifiedPrimary
_SimplifiedNegation = Core.Name "openGql.grammar.SimplifiedNegation"
data SimplifiedPrimary =
  SimplifiedPrimaryLabelName LabelName |
  SimplifiedPrimaryParenthesizedContents SimplifiedContents
  deriving (Eq, Ord, Read, Show)
_SimplifiedPrimary = Core.Name "openGql.grammar.SimplifiedPrimary"
_SimplifiedPrimary_labelName = Core.Name "labelName"
_SimplifiedPrimary_parenthesizedContents = Core.Name "parenthesizedContents"
type WhereClause = SearchCondition
_WhereClause = Core.Name "openGql.grammar.WhereClause"
type YieldClause = YieldItemList
_YieldClause = Core.Name "openGql.grammar.YieldClause"
type YieldItemList = [YieldItem]
_YieldItemList = Core.Name "openGql.grammar.YieldItemList"
data YieldItem =
  YieldItem {
    yieldItemName :: YieldItemName,
    yieldItemAlias :: (Maybe YieldItemAlias)}
  deriving (Eq, Ord, Read, Show)
_YieldItem = Core.Name "openGql.grammar.YieldItem"
_YieldItem_name = Core.Name "name"
_YieldItem_alias = Core.Name "alias"
type YieldItemName = FieldName
_YieldItemName = Core.Name "openGql.grammar.YieldItemName"
type YieldItemAlias = BindingVariable
_YieldItemAlias = Core.Name "openGql.grammar.YieldItemAlias"
type GroupByClause = GroupingElementList
_GroupByClause = Core.Name "openGql.grammar.GroupByClause"
data GroupingElementList =
  GroupingElementListElements [GroupingElement] |
  GroupingElementListEmptySet
  deriving (Eq, Ord, Read, Show)
_GroupingElementList = Core.Name "openGql.grammar.GroupingElementList"
_GroupingElementList_elements = Core.Name "elements"
_GroupingElementList_emptySet = Core.Name "emptySet"
type GroupingElement = BindingVariableReference
_GroupingElement = Core.Name "openGql.grammar.GroupingElement"
type OrderByClause = SortSpecificationList
_OrderByClause = Core.Name "openGql.grammar.OrderByClause"
type SortSpecificationList = [SortSpecification]
_SortSpecificationList = Core.Name "openGql.grammar.SortSpecificationList"
data SortSpecification =
  SortSpecification {
    sortSpecificationSortKey :: SortKey,
    sortSpecificationOrdering :: (Maybe OrderingSpecification),
    sortSpecificationNullOrdering :: (Maybe NullOrdering)}
  deriving (Eq, Ord, Read, Show)
_SortSpecification = Core.Name "openGql.grammar.SortSpecification"
_SortSpecification_sortKey = Core.Name "sortKey"
_SortSpecification_ordering = Core.Name "ordering"
_SortSpecification_nullOrdering = Core.Name "nullOrdering"
type SortKey = AggregatingValueExpression
_SortKey = Core.Name "openGql.grammar.SortKey"
data OrderingSpecification =
  OrderingSpecificationAscending |
  OrderingSpecificationDescending
  deriving (Eq, Ord, Read, Show)
_OrderingSpecification = Core.Name "openGql.grammar.OrderingSpecification"
_OrderingSpecification_ascending = Core.Name "ascending"
_OrderingSpecification_descending = Core.Name "descending"
data NullOrdering =
  NullOrderingNullsFirst |
  NullOrderingNullsLast
  deriving (Eq, Ord, Read, Show)
_NullOrdering = Core.Name "openGql.grammar.NullOrdering"
_NullOrdering_nullsFirst = Core.Name "nullsFirst"
_NullOrdering_nullsLast = Core.Name "nullsLast"
type LimitClause = NonNegativeIntegerSpecification
_LimitClause = Core.Name "openGql.grammar.LimitClause"
data OffsetClause =
  OffsetClause {
    offsetClauseSynonym :: OffsetSynonym,
    offsetClauseValue :: NonNegativeIntegerSpecification}
  deriving (Eq, Ord, Read, Show)
_OffsetClause = Core.Name "openGql.grammar.OffsetClause"
_OffsetClause_synonym = Core.Name "synonym"
_OffsetClause_value = Core.Name "value"
data OffsetSynonym =
  OffsetSynonymOffset |
  OffsetSynonymSkipReservedWord
  deriving (Eq, Ord, Read, Show)
_OffsetSynonym = Core.Name "openGql.grammar.OffsetSynonym"
_OffsetSynonym_offset = Core.Name "offset"
_OffsetSynonym_skipReservedWord = Core.Name "skipReservedWord"
data SchemaReference =
  SchemaReferenceAbsoluteReference AbsoluteCatalogSchemaReference |
  SchemaReferenceRelativeReference RelativeCatalogSchemaReference |
  SchemaReferenceParameterSpecification ReferenceParameterSpecification
  deriving (Eq, Ord, Read, Show)
_SchemaReference = Core.Name "openGql.grammar.SchemaReference"
_SchemaReference_absoluteReference = Core.Name "absoluteReference"
_SchemaReference_relativeReference = Core.Name "relativeReference"
_SchemaReference_parameterSpecification = Core.Name "parameterSpecification"
data AbsoluteCatalogSchemaReference =
  AbsoluteCatalogSchemaReferenceRoot |
  AbsoluteCatalogSchemaReferenceDirectoryAndSchema AbsoluteDirectoryAndSchema
  deriving (Eq, Ord, Read, Show)
_AbsoluteCatalogSchemaReference = Core.Name "openGql.grammar.AbsoluteCatalogSchemaReference"
_AbsoluteCatalogSchemaReference_root = Core.Name "root"
_AbsoluteCatalogSchemaReference_directoryAndSchema = Core.Name "directoryAndSchema"
data AbsoluteDirectoryAndSchema =
  AbsoluteDirectoryAndSchema {
    absoluteDirectoryAndSchemaDirectoryPath :: AbsoluteDirectoryPath,
    absoluteDirectoryAndSchemaSchemaName :: SchemaName}
  deriving (Eq, Ord, Read, Show)
_AbsoluteDirectoryAndSchema = Core.Name "openGql.grammar.AbsoluteDirectoryAndSchema"
_AbsoluteDirectoryAndSchema_directoryPath = Core.Name "directoryPath"
_AbsoluteDirectoryAndSchema_schemaName = Core.Name "schemaName"
type CatalogSchemaParentAndName = AbsoluteDirectoryAndSchema
_CatalogSchemaParentAndName = Core.Name "openGql.grammar.CatalogSchemaParentAndName"
data RelativeCatalogSchemaReference =
  RelativeCatalogSchemaReferencePredefinedReference PredefinedSchemaReference |
  RelativeCatalogSchemaReferenceDirectoryAndSchema RelativeDirectoryAndSchema
  deriving (Eq, Ord, Read, Show)
_RelativeCatalogSchemaReference = Core.Name "openGql.grammar.RelativeCatalogSchemaReference"
_RelativeCatalogSchemaReference_predefinedReference = Core.Name "predefinedReference"
_RelativeCatalogSchemaReference_directoryAndSchema = Core.Name "directoryAndSchema"
data RelativeDirectoryAndSchema =
  RelativeDirectoryAndSchema {
    relativeDirectoryAndSchemaDirectoryPath :: RelativeDirectoryPath,
    relativeDirectoryAndSchemaSchemaName :: SchemaName}
  deriving (Eq, Ord, Read, Show)
_RelativeDirectoryAndSchema = Core.Name "openGql.grammar.RelativeDirectoryAndSchema"
_RelativeDirectoryAndSchema_directoryPath = Core.Name "directoryPath"
_RelativeDirectoryAndSchema_schemaName = Core.Name "schemaName"
data PredefinedSchemaReference =
  PredefinedSchemaReferenceHomeSchema |
  PredefinedSchemaReferenceCurrentSchema |
  PredefinedSchemaReferencePeriod
  deriving (Eq, Ord, Read, Show)
_PredefinedSchemaReference = Core.Name "openGql.grammar.PredefinedSchemaReference"
_PredefinedSchemaReference_homeSchema = Core.Name "homeSchema"
_PredefinedSchemaReference_currentSchema = Core.Name "currentSchema"
_PredefinedSchemaReference_period = Core.Name "period"
type AbsoluteDirectoryPath = (Maybe SimpleDirectoryPath)
_AbsoluteDirectoryPath = Core.Name "openGql.grammar.AbsoluteDirectoryPath"
data RelativeDirectoryPath =
  RelativeDirectoryPath {
    relativeDirectoryPathParentDirectories :: Int,
    relativeDirectoryPathSimplePath :: (Maybe SimpleDirectoryPath)}
  deriving (Eq, Ord, Read, Show)
_RelativeDirectoryPath = Core.Name "openGql.grammar.RelativeDirectoryPath"
_RelativeDirectoryPath_parentDirectories = Core.Name "parentDirectories"
_RelativeDirectoryPath_simplePath = Core.Name "simplePath"
type SimpleDirectoryPath = [DirectoryName]
_SimpleDirectoryPath = Core.Name "openGql.grammar.SimpleDirectoryPath"
data GraphReference =
  GraphReferenceParentAndGraphName ParentAndGraphName |
  GraphReferenceDelimitedGraphName DelimitedGraphName |
  GraphReferenceHomeGraph HomeGraph |
  GraphReferenceParameterSpecification ReferenceParameterSpecification
  deriving (Eq, Ord, Read, Show)
_GraphReference = Core.Name "openGql.grammar.GraphReference"
_GraphReference_parentAndGraphName = Core.Name "parentAndGraphName"
_GraphReference_delimitedGraphName = Core.Name "delimitedGraphName"
_GraphReference_homeGraph = Core.Name "homeGraph"
_GraphReference_parameterSpecification = Core.Name "parameterSpecification"
data ParentAndGraphName =
  ParentAndGraphName {
    parentAndGraphNameParentReference :: CatalogObjectParentReference,
    parentAndGraphNameGraphName :: GraphName}
  deriving (Eq, Ord, Read, Show)
_ParentAndGraphName = Core.Name "openGql.grammar.ParentAndGraphName"
_ParentAndGraphName_parentReference = Core.Name "parentReference"
_ParentAndGraphName_graphName = Core.Name "graphName"
data CatalogGraphParentAndName =
  CatalogGraphParentAndName {
    catalogGraphParentAndNameParentReference :: (Maybe CatalogObjectParentReference),
    catalogGraphParentAndNameGraphName :: GraphName}
  deriving (Eq, Ord, Read, Show)
_CatalogGraphParentAndName = Core.Name "openGql.grammar.CatalogGraphParentAndName"
_CatalogGraphParentAndName_parentReference = Core.Name "parentReference"
_CatalogGraphParentAndName_graphName = Core.Name "graphName"
data HomeGraph =
  HomeGraphHomePropertyGraph |
  HomeGraphHomeGraph
  deriving (Eq, Ord, Read, Show)
_HomeGraph = Core.Name "openGql.grammar.HomeGraph"
_HomeGraph_homePropertyGraph = Core.Name "homePropertyGraph"
_HomeGraph_homeGraph = Core.Name "homeGraph"
data GraphTypeReference =
  GraphTypeReferenceParentAndTypeName CatalogGraphTypeParentAndName |
  GraphTypeReferenceParameterSpecification ReferenceParameterSpecification
  deriving (Eq, Ord, Read, Show)
_GraphTypeReference = Core.Name "openGql.grammar.GraphTypeReference"
_GraphTypeReference_parentAndTypeName = Core.Name "parentAndTypeName"
_GraphTypeReference_parameterSpecification = Core.Name "parameterSpecification"
data CatalogGraphTypeParentAndName =
  CatalogGraphTypeParentAndName {
    catalogGraphTypeParentAndNameParentReference :: (Maybe CatalogObjectParentReference),
    catalogGraphTypeParentAndNameGraphTypeName :: GraphTypeName}
  deriving (Eq, Ord, Read, Show)
_CatalogGraphTypeParentAndName = Core.Name "openGql.grammar.CatalogGraphTypeParentAndName"
_CatalogGraphTypeParentAndName_parentReference = Core.Name "parentReference"
_CatalogGraphTypeParentAndName_graphTypeName = Core.Name "graphTypeName"
data BindingTableReference =
  BindingTableReferenceParentAndTableName ParentAndTableName |
  BindingTableReferenceDelimitedBindingTableName DelimitedBindingTableName |
  BindingTableReferenceParameterSpecification ReferenceParameterSpecification
  deriving (Eq, Ord, Read, Show)
_BindingTableReference = Core.Name "openGql.grammar.BindingTableReference"
_BindingTableReference_parentAndTableName = Core.Name "parentAndTableName"
_BindingTableReference_delimitedBindingTableName = Core.Name "delimitedBindingTableName"
_BindingTableReference_parameterSpecification = Core.Name "parameterSpecification"
data ParentAndTableName =
  ParentAndTableName {
    parentAndTableNameParentReference :: CatalogObjectParentReference,
    parentAndTableNameTableName :: BindingTableName}
  deriving (Eq, Ord, Read, Show)
_ParentAndTableName = Core.Name "openGql.grammar.ParentAndTableName"
_ParentAndTableName_parentReference = Core.Name "parentReference"
_ParentAndTableName_tableName = Core.Name "tableName"
data ProcedureReference =
  ProcedureReferenceParentAndProcedureName CatalogProcedureParentAndName |
  ProcedureReferenceParameterSpecification ReferenceParameterSpecification
  deriving (Eq, Ord, Read, Show)
_ProcedureReference = Core.Name "openGql.grammar.ProcedureReference"
_ProcedureReference_parentAndProcedureName = Core.Name "parentAndProcedureName"
_ProcedureReference_parameterSpecification = Core.Name "parameterSpecification"
data CatalogProcedureParentAndName =
  CatalogProcedureParentAndName {
    catalogProcedureParentAndNameParentReference :: (Maybe CatalogObjectParentReference),
    catalogProcedureParentAndNameProcedureName :: ProcedureName}
  deriving (Eq, Ord, Read, Show)
_CatalogProcedureParentAndName = Core.Name "openGql.grammar.CatalogProcedureParentAndName"
_CatalogProcedureParentAndName_parentReference = Core.Name "parentReference"
_CatalogProcedureParentAndName_procedureName = Core.Name "procedureName"
data CatalogObjectParentReference =
  CatalogObjectParentReferenceSchemaAndObjects SchemaAndObjects |
  CatalogObjectParentReferenceObjectsOnly [ObjectName]
  deriving (Eq, Ord, Read, Show)
_CatalogObjectParentReference = Core.Name "openGql.grammar.CatalogObjectParentReference"
_CatalogObjectParentReference_schemaAndObjects = Core.Name "schemaAndObjects"
_CatalogObjectParentReference_objectsOnly = Core.Name "objectsOnly"
data SchemaAndObjects =
  SchemaAndObjects {
    schemaAndObjectsSchemaReference :: SchemaReference,
    schemaAndObjectsObjects :: [ObjectName]}
  deriving (Eq, Ord, Read, Show)
_SchemaAndObjects = Core.Name "openGql.grammar.SchemaAndObjects"
_SchemaAndObjects_schemaReference = Core.Name "schemaReference"
_SchemaAndObjects_objects = Core.Name "objects"
type ReferenceParameterSpecification = ()
_ReferenceParameterSpecification = Core.Name "openGql.grammar.ReferenceParameterSpecification"
type NestedGraphTypeSpecification = GraphTypeSpecificationBody
_NestedGraphTypeSpecification = Core.Name "openGql.grammar.NestedGraphTypeSpecification"
type GraphTypeSpecificationBody = ElementTypeList
_GraphTypeSpecificationBody = Core.Name "openGql.grammar.GraphTypeSpecificationBody"
type ElementTypeList = [ElementTypeSpecification]
_ElementTypeList = Core.Name "openGql.grammar.ElementTypeList"
data ElementTypeSpecification =
  ElementTypeSpecificationNodeType NodeTypeSpecification |
  ElementTypeSpecificationEdgeType EdgeTypeSpecification
  deriving (Eq, Ord, Read, Show)
_ElementTypeSpecification = Core.Name "openGql.grammar.ElementTypeSpecification"
_ElementTypeSpecification_nodeType = Core.Name "nodeType"
_ElementTypeSpecification_edgeType = Core.Name "edgeType"
data NodeTypeSpecification =
  NodeTypeSpecificationPattern NodeTypePattern |
  NodeTypeSpecificationPhrase NodeTypePhrase
  deriving (Eq, Ord, Read, Show)
_NodeTypeSpecification = Core.Name "openGql.grammar.NodeTypeSpecification"
_NodeTypeSpecification_pattern = Core.Name "pattern"
_NodeTypeSpecification_phrase = Core.Name "phrase"
data NodeTypePattern =
  NodeTypePattern {
    nodeTypePatternSynonymAndTypeName :: (Maybe NodeSynonymAndTypeName),
    nodeTypePatternAlias :: (Maybe LocalNodeTypeAlias),
    nodeTypePatternFiller :: (Maybe NodeTypeFiller)}
  deriving (Eq, Ord, Read, Show)
_NodeTypePattern = Core.Name "openGql.grammar.NodeTypePattern"
_NodeTypePattern_synonymAndTypeName = Core.Name "synonymAndTypeName"
_NodeTypePattern_alias = Core.Name "alias"
_NodeTypePattern_filler = Core.Name "filler"
data NodeSynonymAndTypeName =
  NodeSynonymAndTypeName {
    nodeSynonymAndTypeNameNodeSynonym :: NodeSynonym,
    nodeSynonymAndTypeNameTypeName :: (Maybe NodeTypeName)}
  deriving (Eq, Ord, Read, Show)
_NodeSynonymAndTypeName = Core.Name "openGql.grammar.NodeSynonymAndTypeName"
_NodeSynonymAndTypeName_nodeSynonym = Core.Name "nodeSynonym"
_NodeSynonymAndTypeName_typeName = Core.Name "typeName"
data NodeTypePhrase =
  NodeTypePhrase {
    nodeTypePhraseSynonym :: NodeSynonym,
    nodeTypePhraseTypePhraseFiller :: NodeTypePhraseFiller,
    nodeTypePhraseAlias :: (Maybe LocalNodeTypeAlias)}
  deriving (Eq, Ord, Read, Show)
_NodeTypePhrase = Core.Name "openGql.grammar.NodeTypePhrase"
_NodeTypePhrase_synonym = Core.Name "synonym"
_NodeTypePhrase_typePhraseFiller = Core.Name "typePhraseFiller"
_NodeTypePhrase_alias = Core.Name "alias"
data NodeTypePhraseFiller =
  NodeTypePhraseFillerTypeName NodeTypeNameWithFiller |
  NodeTypePhraseFillerFillerOnly NodeTypeFiller
  deriving (Eq, Ord, Read, Show)
_NodeTypePhraseFiller = Core.Name "openGql.grammar.NodeTypePhraseFiller"
_NodeTypePhraseFiller_typeName = Core.Name "typeName"
_NodeTypePhraseFiller_fillerOnly = Core.Name "fillerOnly"
data NodeTypeNameWithFiller =
  NodeTypeNameWithFiller {
    nodeTypeNameWithFillerTypeName :: NodeTypeName,
    nodeTypeNameWithFillerFiller :: (Maybe NodeTypeFiller)}
  deriving (Eq, Ord, Read, Show)
_NodeTypeNameWithFiller = Core.Name "openGql.grammar.NodeTypeNameWithFiller"
_NodeTypeNameWithFiller_typeName = Core.Name "typeName"
_NodeTypeNameWithFiller_filler = Core.Name "filler"
data NodeTypeFiller =
  NodeTypeFillerKeyLabelSet NodeKeyLabelSetWithContent |
  NodeTypeFillerImpliedContent NodeTypeImpliedContent
  deriving (Eq, Ord, Read, Show)
_NodeTypeFiller = Core.Name "openGql.grammar.NodeTypeFiller"
_NodeTypeFiller_keyLabelSet = Core.Name "keyLabelSet"
_NodeTypeFiller_impliedContent = Core.Name "impliedContent"
data NodeKeyLabelSetWithContent =
  NodeKeyLabelSetWithContent {
    nodeKeyLabelSetWithContentKeyLabelSet :: NodeTypeKeyLabelSet,
    nodeKeyLabelSetWithContentImpliedContent :: (Maybe NodeTypeImpliedContent)}
  deriving (Eq, Ord, Read, Show)
_NodeKeyLabelSetWithContent = Core.Name "openGql.grammar.NodeKeyLabelSetWithContent"
_NodeKeyLabelSetWithContent_keyLabelSet = Core.Name "keyLabelSet"
_NodeKeyLabelSetWithContent_impliedContent = Core.Name "impliedContent"
type LocalNodeTypeAlias = String
_LocalNodeTypeAlias = Core.Name "openGql.grammar.LocalNodeTypeAlias"
data NodeTypeImpliedContent =
  NodeTypeImpliedContentLabelSet NodeTypeLabelSet |
  NodeTypeImpliedContentPropertyTypes NodeTypePropertyTypes |
  NodeTypeImpliedContentLabelSetWithProperties NodeLabelSetWithProperties
  deriving (Eq, Ord, Read, Show)
_NodeTypeImpliedContent = Core.Name "openGql.grammar.NodeTypeImpliedContent"
_NodeTypeImpliedContent_labelSet = Core.Name "labelSet"
_NodeTypeImpliedContent_propertyTypes = Core.Name "propertyTypes"
_NodeTypeImpliedContent_labelSetWithProperties = Core.Name "labelSetWithProperties"
data NodeLabelSetWithProperties =
  NodeLabelSetWithProperties {
    nodeLabelSetWithPropertiesLabelSet :: NodeTypeLabelSet,
    nodeLabelSetWithPropertiesPropertyTypes :: NodeTypePropertyTypes}
  deriving (Eq, Ord, Read, Show)
_NodeLabelSetWithProperties = Core.Name "openGql.grammar.NodeLabelSetWithProperties"
_NodeLabelSetWithProperties_labelSet = Core.Name "labelSet"
_NodeLabelSetWithProperties_propertyTypes = Core.Name "propertyTypes"
type NodeTypeKeyLabelSet = (Maybe LabelSetPhrase)
_NodeTypeKeyLabelSet = Core.Name "openGql.grammar.NodeTypeKeyLabelSet"
type NodeTypeLabelSet = LabelSetPhrase
_NodeTypeLabelSet = Core.Name "openGql.grammar.NodeTypeLabelSet"
type NodeTypePropertyTypes = PropertyTypesSpecification
_NodeTypePropertyTypes = Core.Name "openGql.grammar.NodeTypePropertyTypes"
data EdgeTypeSpecification =
  EdgeTypeSpecificationPattern EdgeTypePattern |
  EdgeTypeSpecificationPhrase EdgeTypePhrase
  deriving (Eq, Ord, Read, Show)
_EdgeTypeSpecification = Core.Name "openGql.grammar.EdgeTypeSpecification"
_EdgeTypeSpecification_pattern = Core.Name "pattern"
_EdgeTypeSpecification_phrase = Core.Name "phrase"
data EdgeTypePattern =
  EdgeTypePattern {
    edgeTypePatternKindAndSynonym :: (Maybe EdgeKindAndSynonym),
    edgeTypePatternPatternType :: EdgeTypePatternType}
  deriving (Eq, Ord, Read, Show)
_EdgeTypePattern = Core.Name "openGql.grammar.EdgeTypePattern"
_EdgeTypePattern_kindAndSynonym = Core.Name "kindAndSynonym"
_EdgeTypePattern_patternType = Core.Name "patternType"
data EdgeKindAndSynonym =
  EdgeKindAndSynonym {
    edgeKindAndSynonymKind :: (Maybe EdgeKind),
    edgeKindAndSynonymSynonym :: EdgeSynonym,
    edgeKindAndSynonymTypeName :: (Maybe EdgeTypeName)}
  deriving (Eq, Ord, Read, Show)
_EdgeKindAndSynonym = Core.Name "openGql.grammar.EdgeKindAndSynonym"
_EdgeKindAndSynonym_kind = Core.Name "kind"
_EdgeKindAndSynonym_synonym = Core.Name "synonym"
_EdgeKindAndSynonym_typeName = Core.Name "typeName"
data EdgeTypePatternType =
  EdgeTypePatternTypeDirected EdgeTypePatternDirected |
  EdgeTypePatternTypeUndirected EdgeTypePatternUndirected
  deriving (Eq, Ord, Read, Show)
_EdgeTypePatternType = Core.Name "openGql.grammar.EdgeTypePatternType"
_EdgeTypePatternType_directed = Core.Name "directed"
_EdgeTypePatternType_undirected = Core.Name "undirected"
data EdgeTypePhrase =
  EdgeTypePhrase {
    edgeTypePhraseKind :: EdgeKind,
    edgeTypePhraseSynonym :: EdgeSynonym,
    edgeTypePhraseTypeNameAndFiller :: EdgeTypePhraseFiller,
    edgeTypePhraseEndpointPair :: EndpointPairPhrase}
  deriving (Eq, Ord, Read, Show)
_EdgeTypePhrase = Core.Name "openGql.grammar.EdgeTypePhrase"
_EdgeTypePhrase_kind = Core.Name "kind"
_EdgeTypePhrase_synonym = Core.Name "synonym"
_EdgeTypePhrase_typeNameAndFiller = Core.Name "typeNameAndFiller"
_EdgeTypePhrase_endpointPair = Core.Name "endpointPair"
data EdgeTypePhraseFiller =
  EdgeTypePhraseFillerTypeNameWithFiller EdgeTypeNameWithFiller |
  EdgeTypePhraseFillerFillerOnly EdgeTypeFiller
  deriving (Eq, Ord, Read, Show)
_EdgeTypePhraseFiller = Core.Name "openGql.grammar.EdgeTypePhraseFiller"
_EdgeTypePhraseFiller_typeNameWithFiller = Core.Name "typeNameWithFiller"
_EdgeTypePhraseFiller_fillerOnly = Core.Name "fillerOnly"
data EdgeTypeNameWithFiller =
  EdgeTypeNameWithFiller {
    edgeTypeNameWithFillerTypeName :: EdgeTypeName,
    edgeTypeNameWithFillerFiller :: (Maybe EdgeTypeFiller)}
  deriving (Eq, Ord, Read, Show)
_EdgeTypeNameWithFiller = Core.Name "openGql.grammar.EdgeTypeNameWithFiller"
_EdgeTypeNameWithFiller_typeName = Core.Name "typeName"
_EdgeTypeNameWithFiller_filler = Core.Name "filler"
data EdgeTypeFiller =
  EdgeTypeFillerKeyLabelSetWithContent EdgeKeyLabelSetWithContent |
  EdgeTypeFillerImpliedContent EdgeTypeImpliedContent
  deriving (Eq, Ord, Read, Show)
_EdgeTypeFiller = Core.Name "openGql.grammar.EdgeTypeFiller"
_EdgeTypeFiller_keyLabelSetWithContent = Core.Name "keyLabelSetWithContent"
_EdgeTypeFiller_impliedContent = Core.Name "impliedContent"
data EdgeKeyLabelSetWithContent =
  EdgeKeyLabelSetWithContent {
    edgeKeyLabelSetWithContentKeyLabelSet :: EdgeTypeKeyLabelSet,
    edgeKeyLabelSetWithContentImpliedContent :: (Maybe EdgeTypeImpliedContent)}
  deriving (Eq, Ord, Read, Show)
_EdgeKeyLabelSetWithContent = Core.Name "openGql.grammar.EdgeKeyLabelSetWithContent"
_EdgeKeyLabelSetWithContent_keyLabelSet = Core.Name "keyLabelSet"
_EdgeKeyLabelSetWithContent_impliedContent = Core.Name "impliedContent"
data EdgeTypeImpliedContent =
  EdgeTypeImpliedContentLabelSet EdgeTypeLabelSet |
  EdgeTypeImpliedContentPropertyTypes EdgeTypePropertyTypes |
  EdgeTypeImpliedContentLabelSetWithProperties EdgeLabelSetWithProperties
  deriving (Eq, Ord, Read, Show)
_EdgeTypeImpliedContent = Core.Name "openGql.grammar.EdgeTypeImpliedContent"
_EdgeTypeImpliedContent_labelSet = Core.Name "labelSet"
_EdgeTypeImpliedContent_propertyTypes = Core.Name "propertyTypes"
_EdgeTypeImpliedContent_labelSetWithProperties = Core.Name "labelSetWithProperties"
data EdgeLabelSetWithProperties =
  EdgeLabelSetWithProperties {
    edgeLabelSetWithPropertiesLabelSet :: EdgeTypeLabelSet,
    edgeLabelSetWithPropertiesPropertyTypes :: EdgeTypePropertyTypes}
  deriving (Eq, Ord, Read, Show)
_EdgeLabelSetWithProperties = Core.Name "openGql.grammar.EdgeLabelSetWithProperties"
_EdgeLabelSetWithProperties_labelSet = Core.Name "labelSet"
_EdgeLabelSetWithProperties_propertyTypes = Core.Name "propertyTypes"
type EdgeTypeKeyLabelSet = (Maybe LabelSetPhrase)
_EdgeTypeKeyLabelSet = Core.Name "openGql.grammar.EdgeTypeKeyLabelSet"
type EdgeTypeLabelSet = LabelSetPhrase
_EdgeTypeLabelSet = Core.Name "openGql.grammar.EdgeTypeLabelSet"
type EdgeTypePropertyTypes = PropertyTypesSpecification
_EdgeTypePropertyTypes = Core.Name "openGql.grammar.EdgeTypePropertyTypes"
data EdgeTypePatternDirected =
  EdgeTypePatternDirectedPointingRight EdgeTypePatternPointingRight |
  EdgeTypePatternDirectedPointingLeft EdgeTypePatternPointingLeft
  deriving (Eq, Ord, Read, Show)
_EdgeTypePatternDirected = Core.Name "openGql.grammar.EdgeTypePatternDirected"
_EdgeTypePatternDirected_pointingRight = Core.Name "pointingRight"
_EdgeTypePatternDirected_pointingLeft = Core.Name "pointingLeft"
data EdgeTypePatternPointingRight =
  EdgeTypePatternPointingRight {
    edgeTypePatternPointingRightSource :: SourceNodeTypeReference,
    edgeTypePatternPointingRightArc :: ArcTypePointingRight,
    edgeTypePatternPointingRightDestination :: DestinationNodeTypeReference}
  deriving (Eq, Ord, Read, Show)
_EdgeTypePatternPointingRight = Core.Name "openGql.grammar.EdgeTypePatternPointingRight"
_EdgeTypePatternPointingRight_source = Core.Name "source"
_EdgeTypePatternPointingRight_arc = Core.Name "arc"
_EdgeTypePatternPointingRight_destination = Core.Name "destination"
data EdgeTypePatternPointingLeft =
  EdgeTypePatternPointingLeft {
    edgeTypePatternPointingLeftDestination :: DestinationNodeTypeReference,
    edgeTypePatternPointingLeftArc :: ArcTypePointingLeft,
    edgeTypePatternPointingLeftSource :: SourceNodeTypeReference}
  deriving (Eq, Ord, Read, Show)
_EdgeTypePatternPointingLeft = Core.Name "openGql.grammar.EdgeTypePatternPointingLeft"
_EdgeTypePatternPointingLeft_destination = Core.Name "destination"
_EdgeTypePatternPointingLeft_arc = Core.Name "arc"
_EdgeTypePatternPointingLeft_source = Core.Name "source"
data EdgeTypePatternUndirected =
  EdgeTypePatternUndirected {
    edgeTypePatternUndirectedSource :: SourceNodeTypeReference,
    edgeTypePatternUndirectedArc :: ArcTypeUndirected,
    edgeTypePatternUndirectedDestination :: DestinationNodeTypeReference}
  deriving (Eq, Ord, Read, Show)
_EdgeTypePatternUndirected = Core.Name "openGql.grammar.EdgeTypePatternUndirected"
_EdgeTypePatternUndirected_source = Core.Name "source"
_EdgeTypePatternUndirected_arc = Core.Name "arc"
_EdgeTypePatternUndirected_destination = Core.Name "destination"
type ArcTypePointingRight = EdgeTypeFiller
_ArcTypePointingRight = Core.Name "openGql.grammar.ArcTypePointingRight"
type ArcTypePointingLeft = EdgeTypeFiller
_ArcTypePointingLeft = Core.Name "openGql.grammar.ArcTypePointingLeft"
type ArcTypeUndirected = EdgeTypeFiller
_ArcTypeUndirected = Core.Name "openGql.grammar.ArcTypeUndirected"
data SourceNodeTypeReference =
  SourceNodeTypeReferenceAlias SourceNodeTypeAlias |
  SourceNodeTypeReferenceFiller (Maybe NodeTypeFiller)
  deriving (Eq, Ord, Read, Show)
_SourceNodeTypeReference = Core.Name "openGql.grammar.SourceNodeTypeReference"
_SourceNodeTypeReference_alias = Core.Name "alias"
_SourceNodeTypeReference_filler = Core.Name "filler"
data DestinationNodeTypeReference =
  DestinationNodeTypeReferenceAlias DestinationNodeTypeAlias |
  DestinationNodeTypeReferenceFiller (Maybe NodeTypeFiller)
  deriving (Eq, Ord, Read, Show)
_DestinationNodeTypeReference = Core.Name "openGql.grammar.DestinationNodeTypeReference"
_DestinationNodeTypeReference_alias = Core.Name "alias"
_DestinationNodeTypeReference_filler = Core.Name "filler"
data EdgeKind =
  EdgeKindDirected |
  EdgeKindUndirected
  deriving (Eq, Ord, Read, Show)
_EdgeKind = Core.Name "openGql.grammar.EdgeKind"
_EdgeKind_directed = Core.Name "directed"
_EdgeKind_undirected = Core.Name "undirected"
type EndpointPairPhrase = EndpointPair
_EndpointPairPhrase = Core.Name "openGql.grammar.EndpointPairPhrase"
data EndpointPair =
  EndpointPairDirectedPair EndpointPairDirected |
  EndpointPairUndirectedPair EndpointPairUndirected
  deriving (Eq, Ord, Read, Show)
_EndpointPair = Core.Name "openGql.grammar.EndpointPair"
_EndpointPair_directedPair = Core.Name "directedPair"
_EndpointPair_undirectedPair = Core.Name "undirectedPair"
data EndpointPairDirected =
  EndpointPairDirectedPointingRight EndpointPairPointingRight |
  EndpointPairDirectedPointingLeft EndpointPairPointingLeft
  deriving (Eq, Ord, Read, Show)
_EndpointPairDirected = Core.Name "openGql.grammar.EndpointPairDirected"
_EndpointPairDirected_pointingRight = Core.Name "pointingRight"
_EndpointPairDirected_pointingLeft = Core.Name "pointingLeft"
data EndpointPairPointingRight =
  EndpointPairPointingRight {
    endpointPairPointingRightSourceAlias :: SourceNodeTypeAlias,
    endpointPairPointingRightConnector :: ConnectorPointingRight,
    endpointPairPointingRightDestinationAlias :: DestinationNodeTypeAlias}
  deriving (Eq, Ord, Read, Show)
_EndpointPairPointingRight = Core.Name "openGql.grammar.EndpointPairPointingRight"
_EndpointPairPointingRight_sourceAlias = Core.Name "sourceAlias"
_EndpointPairPointingRight_connector = Core.Name "connector"
_EndpointPairPointingRight_destinationAlias = Core.Name "destinationAlias"
data EndpointPairPointingLeft =
  EndpointPairPointingLeft {
    endpointPairPointingLeftDestinationAlias :: DestinationNodeTypeAlias,
    endpointPairPointingLeftSourceAlias :: SourceNodeTypeAlias}
  deriving (Eq, Ord, Read, Show)
_EndpointPairPointingLeft = Core.Name "openGql.grammar.EndpointPairPointingLeft"
_EndpointPairPointingLeft_destinationAlias = Core.Name "destinationAlias"
_EndpointPairPointingLeft_sourceAlias = Core.Name "sourceAlias"
data EndpointPairUndirected =
  EndpointPairUndirected {
    endpointPairUndirectedSourceAlias :: SourceNodeTypeAlias,
    endpointPairUndirectedConnector :: ConnectorUndirected,
    endpointPairUndirectedDestinationAlias :: DestinationNodeTypeAlias}
  deriving (Eq, Ord, Read, Show)
_EndpointPairUndirected = Core.Name "openGql.grammar.EndpointPairUndirected"
_EndpointPairUndirected_sourceAlias = Core.Name "sourceAlias"
_EndpointPairUndirected_connector = Core.Name "connector"
_EndpointPairUndirected_destinationAlias = Core.Name "destinationAlias"
data ConnectorPointingRight =
  ConnectorPointingRightTo |
  ConnectorPointingRightRightArrow
  deriving (Eq, Ord, Read, Show)
_ConnectorPointingRight = Core.Name "openGql.grammar.ConnectorPointingRight"
_ConnectorPointingRight_to = Core.Name "to"
_ConnectorPointingRight_rightArrow = Core.Name "rightArrow"
data ConnectorUndirected =
  ConnectorUndirectedTo |
  ConnectorUndirectedTilde
  deriving (Eq, Ord, Read, Show)
_ConnectorUndirected = Core.Name "openGql.grammar.ConnectorUndirected"
_ConnectorUndirected_to = Core.Name "to"
_ConnectorUndirected_tilde = Core.Name "tilde"
type SourceNodeTypeAlias = String
_SourceNodeTypeAlias = Core.Name "openGql.grammar.SourceNodeTypeAlias"
type DestinationNodeTypeAlias = String
_DestinationNodeTypeAlias = Core.Name "openGql.grammar.DestinationNodeTypeAlias"
data LabelSetPhrase =
  LabelSetPhraseSingleLabel LabelName |
  LabelSetPhraseMultipleLabels LabelSetSpecification |
  LabelSetPhraseIsOrColonWithLabels IsOrColonWithLabels
  deriving (Eq, Ord, Read, Show)
_LabelSetPhrase = Core.Name "openGql.grammar.LabelSetPhrase"
_LabelSetPhrase_singleLabel = Core.Name "singleLabel"
_LabelSetPhrase_multipleLabels = Core.Name "multipleLabels"
_LabelSetPhrase_isOrColonWithLabels = Core.Name "isOrColonWithLabels"
data IsOrColonWithLabels =
  IsOrColonWithLabels {
    isOrColonWithLabelsIsOrColon :: IsOrColon,
    isOrColonWithLabelsLabels :: LabelSetSpecification}
  deriving (Eq, Ord, Read, Show)
_IsOrColonWithLabels = Core.Name "openGql.grammar.IsOrColonWithLabels"
_IsOrColonWithLabels_isOrColon = Core.Name "isOrColon"
_IsOrColonWithLabels_labels = Core.Name "labels"
type LabelSetSpecification = [LabelName]
_LabelSetSpecification = Core.Name "openGql.grammar.LabelSetSpecification"
type PropertyTypesSpecification = (Maybe PropertyTypeList)
_PropertyTypesSpecification = Core.Name "openGql.grammar.PropertyTypesSpecification"
type PropertyTypeList = [PropertyType]
_PropertyTypeList = Core.Name "openGql.grammar.PropertyTypeList"
data PropertyType =
  PropertyType {
    propertyTypeName :: PropertyName,
    propertyTypeTyped :: (Maybe Typed),
    propertyTypeValueType :: PropertyValueType}
  deriving (Eq, Ord, Read, Show)
_PropertyType = Core.Name "openGql.grammar.PropertyType"
_PropertyType_name = Core.Name "name"
_PropertyType_typed = Core.Name "typed"
_PropertyType_valueType = Core.Name "valueType"
type PropertyValueType = ValueType
_PropertyValueType = Core.Name "openGql.grammar.PropertyValueType"
data BindingTableType =
  BindingTableType {
    bindingTableTypeBinding :: Bool,
    bindingTableTypeFieldTypes :: FieldTypesSpecification}
  deriving (Eq, Ord, Read, Show)
_BindingTableType = Core.Name "openGql.grammar.BindingTableType"
_BindingTableType_binding = Core.Name "binding"
_BindingTableType_fieldTypes = Core.Name "fieldTypes"
data ValueType =
  ValueTypePredefinedType PredefinedType |
  ValueTypePathValueType PathValueType |
  ValueTypeListValueTypeAlt1 ListValueTypeAlt1 |
  ValueTypeListValueTypeAlt2 ListValueTypeAlt2 |
  ValueTypeListValueTypeAlt3 ListValueTypeAlt3 |
  ValueTypeRecordType RecordType |
  ValueTypeOpenDynamicUnionType OpenDynamicUnionType |
  ValueTypeDynamicPropertyValueType DynamicPropertyValueType |
  ValueTypeClosedDynamicUnionTypeAlt1 ClosedDynamicUnionTypeAlt1 |
  ValueTypeClosedDynamicUnionTypeAlt2 ClosedDynamicUnionTypeAlt2
  deriving (Eq, Ord, Read, Show)
_ValueType = Core.Name "openGql.grammar.ValueType"
_ValueType_predefinedType = Core.Name "predefinedType"
_ValueType_pathValueType = Core.Name "pathValueType"
_ValueType_listValueTypeAlt1 = Core.Name "listValueTypeAlt1"
_ValueType_listValueTypeAlt2 = Core.Name "listValueTypeAlt2"
_ValueType_listValueTypeAlt3 = Core.Name "listValueTypeAlt3"
_ValueType_recordType = Core.Name "recordType"
_ValueType_openDynamicUnionType = Core.Name "openDynamicUnionType"
_ValueType_dynamicPropertyValueType = Core.Name "dynamicPropertyValueType"
_ValueType_closedDynamicUnionTypeAlt1 = Core.Name "closedDynamicUnionTypeAlt1"
_ValueType_closedDynamicUnionTypeAlt2 = Core.Name "closedDynamicUnionTypeAlt2"
data ListValueTypeAlt1 =
  ListValueTypeAlt1 {
    listValueTypeAlt1TypeName :: ListValueTypeName,
    listValueTypeAlt1ValueType :: ValueType,
    listValueTypeAlt1MaxLength :: (Maybe MaxLength),
    listValueTypeAlt1NotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_ListValueTypeAlt1 = Core.Name "openGql.grammar.ListValueTypeAlt1"
_ListValueTypeAlt1_typeName = Core.Name "typeName"
_ListValueTypeAlt1_valueType = Core.Name "valueType"
_ListValueTypeAlt1_maxLength = Core.Name "maxLength"
_ListValueTypeAlt1_notNull = Core.Name "notNull"
data ListValueTypeAlt2 =
  ListValueTypeAlt2 {
    listValueTypeAlt2ValueType :: ValueType,
    listValueTypeAlt2TypeName :: ListValueTypeName,
    listValueTypeAlt2MaxLength :: (Maybe MaxLength),
    listValueTypeAlt2NotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_ListValueTypeAlt2 = Core.Name "openGql.grammar.ListValueTypeAlt2"
_ListValueTypeAlt2_valueType = Core.Name "valueType"
_ListValueTypeAlt2_typeName = Core.Name "typeName"
_ListValueTypeAlt2_maxLength = Core.Name "maxLength"
_ListValueTypeAlt2_notNull = Core.Name "notNull"
data ListValueTypeAlt3 =
  ListValueTypeAlt3 {
    listValueTypeAlt3TypeName :: ListValueTypeName,
    listValueTypeAlt3MaxLength :: (Maybe MaxLength),
    listValueTypeAlt3NotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_ListValueTypeAlt3 = Core.Name "openGql.grammar.ListValueTypeAlt3"
_ListValueTypeAlt3_typeName = Core.Name "typeName"
_ListValueTypeAlt3_maxLength = Core.Name "maxLength"
_ListValueTypeAlt3_notNull = Core.Name "notNull"
data OpenDynamicUnionType =
  OpenDynamicUnionType {
    openDynamicUnionTypeValue :: Bool,
    openDynamicUnionTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_OpenDynamicUnionType = Core.Name "openGql.grammar.OpenDynamicUnionType"
_OpenDynamicUnionType_value = Core.Name "value"
_OpenDynamicUnionType_notNull = Core.Name "notNull"
data DynamicPropertyValueType =
  DynamicPropertyValueType {
    dynamicPropertyValueTypeAny :: (Maybe Bool),
    dynamicPropertyValueTypeProperty :: (),
    dynamicPropertyValueTypeValue :: (),
    dynamicPropertyValueTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_DynamicPropertyValueType = Core.Name "openGql.grammar.DynamicPropertyValueType"
_DynamicPropertyValueType_any = Core.Name "any"
_DynamicPropertyValueType_property = Core.Name "property"
_DynamicPropertyValueType_value = Core.Name "value"
_DynamicPropertyValueType_notNull = Core.Name "notNull"
data ClosedDynamicUnionTypeAlt1 =
  ClosedDynamicUnionTypeAlt1 {
    closedDynamicUnionTypeAlt1AnyValue :: (Maybe Bool),
    closedDynamicUnionTypeAlt1ValueTypes :: [ValueType]}
  deriving (Eq, Ord, Read, Show)
_ClosedDynamicUnionTypeAlt1 = Core.Name "openGql.grammar.ClosedDynamicUnionTypeAlt1"
_ClosedDynamicUnionTypeAlt1_anyValue = Core.Name "anyValue"
_ClosedDynamicUnionTypeAlt1_valueTypes = Core.Name "valueTypes"
data ClosedDynamicUnionTypeAlt2 =
  ClosedDynamicUnionTypeAlt2 {
    closedDynamicUnionTypeAlt2ValueTypes :: [ValueType]}
  deriving (Eq, Ord, Read, Show)
_ClosedDynamicUnionTypeAlt2 = Core.Name "openGql.grammar.ClosedDynamicUnionTypeAlt2"
_ClosedDynamicUnionTypeAlt2_valueTypes = Core.Name "valueTypes"
type Typed = ()
_Typed = Core.Name "openGql.grammar.Typed"
data PredefinedType =
  PredefinedTypeBooleanType BooleanType |
  PredefinedTypeCharacterStringType CharacterStringType |
  PredefinedTypeByteStringType ByteStringType |
  PredefinedTypeNumericType NumericType |
  PredefinedTypeTemporalType TemporalType |
  PredefinedTypeReferenceValueType ReferenceValueType |
  PredefinedTypeImmaterialValueType ImmaterialValueType
  deriving (Eq, Ord, Read, Show)
_PredefinedType = Core.Name "openGql.grammar.PredefinedType"
_PredefinedType_booleanType = Core.Name "booleanType"
_PredefinedType_characterStringType = Core.Name "characterStringType"
_PredefinedType_byteStringType = Core.Name "byteStringType"
_PredefinedType_numericType = Core.Name "numericType"
_PredefinedType_temporalType = Core.Name "temporalType"
_PredefinedType_referenceValueType = Core.Name "referenceValueType"
_PredefinedType_immaterialValueType = Core.Name "immaterialValueType"
data BooleanType =
  BooleanType {
    booleanTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_BooleanType = Core.Name "openGql.grammar.BooleanType"
_BooleanType_notNull = Core.Name "notNull"
data CharacterStringType =
  CharacterStringTypeStringType StringType |
  CharacterStringTypeCharType CharType |
  CharacterStringTypeVarcharType VarcharType
  deriving (Eq, Ord, Read, Show)
_CharacterStringType = Core.Name "openGql.grammar.CharacterStringType"
_CharacterStringType_stringType = Core.Name "stringType"
_CharacterStringType_charType = Core.Name "charType"
_CharacterStringType_varcharType = Core.Name "varcharType"
data StringType =
  StringType {
    stringTypeMinLength :: (Maybe MinLength),
    stringTypeMaxLength :: (Maybe MaxLength),
    stringTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_StringType = Core.Name "openGql.grammar.StringType"
_StringType_minLength = Core.Name "minLength"
_StringType_maxLength = Core.Name "maxLength"
_StringType_notNull = Core.Name "notNull"
data CharType =
  CharType {
    charTypeFixedLength :: (Maybe FixedLength),
    charTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_CharType = Core.Name "openGql.grammar.CharType"
_CharType_fixedLength = Core.Name "fixedLength"
_CharType_notNull = Core.Name "notNull"
data VarcharType =
  VarcharType {
    varcharTypeMaxLength :: (Maybe MaxLength),
    varcharTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_VarcharType = Core.Name "openGql.grammar.VarcharType"
_VarcharType_maxLength = Core.Name "maxLength"
_VarcharType_notNull = Core.Name "notNull"
data ByteStringType =
  ByteStringTypeBytesType BytesType |
  ByteStringTypeBinaryType BinaryType |
  ByteStringTypeVarbinaryType VarbinaryType
  deriving (Eq, Ord, Read, Show)
_ByteStringType = Core.Name "openGql.grammar.ByteStringType"
_ByteStringType_bytesType = Core.Name "bytesType"
_ByteStringType_binaryType = Core.Name "binaryType"
_ByteStringType_varbinaryType = Core.Name "varbinaryType"
data BytesType =
  BytesType {
    bytesTypeMinLength :: (Maybe MinLength),
    bytesTypeMaxLength :: (Maybe MaxLength),
    bytesTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_BytesType = Core.Name "openGql.grammar.BytesType"
_BytesType_minLength = Core.Name "minLength"
_BytesType_maxLength = Core.Name "maxLength"
_BytesType_notNull = Core.Name "notNull"
data BinaryType =
  BinaryType {
    binaryTypeFixedLength :: (Maybe FixedLength),
    binaryTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_BinaryType = Core.Name "openGql.grammar.BinaryType"
_BinaryType_fixedLength = Core.Name "fixedLength"
_BinaryType_notNull = Core.Name "notNull"
data VarbinaryType =
  VarbinaryType {
    varbinaryTypeMaxLength :: (Maybe MaxLength),
    varbinaryTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_VarbinaryType = Core.Name "openGql.grammar.VarbinaryType"
_VarbinaryType_maxLength = Core.Name "maxLength"
_VarbinaryType_notNull = Core.Name "notNull"
type MinLength = UnsignedInteger
_MinLength = Core.Name "openGql.grammar.MinLength"
type FixedLength = UnsignedInteger
_FixedLength = Core.Name "openGql.grammar.FixedLength"
type MaxLength = UnsignedInteger
_MaxLength = Core.Name "openGql.grammar.MaxLength"
data NumericType =
  NumericTypeExact ExactNumericType |
  NumericTypeApproximate ApproximateNumericType
  deriving (Eq, Ord, Read, Show)
_NumericType = Core.Name "openGql.grammar.NumericType"
_NumericType_exact = Core.Name "exact"
_NumericType_approximate = Core.Name "approximate"
data ExactNumericType =
  ExactNumericTypeBinary BinaryExactNumericType |
  ExactNumericTypeDecimal DecimalExactNumericType
  deriving (Eq, Ord, Read, Show)
_ExactNumericType = Core.Name "openGql.grammar.ExactNumericType"
_ExactNumericType_binary = Core.Name "binary"
_ExactNumericType_decimal = Core.Name "decimal"
data BinaryExactNumericType =
  BinaryExactNumericTypeSigned SignedBinaryExactNumericType |
  BinaryExactNumericTypeUnsigned UnsignedBinaryExactNumericType
  deriving (Eq, Ord, Read, Show)
_BinaryExactNumericType = Core.Name "openGql.grammar.BinaryExactNumericType"
_BinaryExactNumericType_signed = Core.Name "signed"
_BinaryExactNumericType_unsigned = Core.Name "unsigned"
data SignedBinaryExactNumericType =
  SignedBinaryExactNumericTypeInt8 Int8Type |
  SignedBinaryExactNumericTypeInt16 Int16Type |
  SignedBinaryExactNumericTypeInt32 Int32Type |
  SignedBinaryExactNumericTypeInt64 Int64Type |
  SignedBinaryExactNumericTypeInt128 Int128Type |
  SignedBinaryExactNumericTypeInt256 Int256Type |
  SignedBinaryExactNumericTypeSmallInt SmallIntType |
  SignedBinaryExactNumericTypeIntWithPrecision IntWithPrecision |
  SignedBinaryExactNumericTypeBigInt BigIntType |
  SignedBinaryExactNumericTypeSignedVerboseType SignedVerboseBinaryExactNumericType
  deriving (Eq, Ord, Read, Show)
_SignedBinaryExactNumericType = Core.Name "openGql.grammar.SignedBinaryExactNumericType"
_SignedBinaryExactNumericType_int8 = Core.Name "int8"
_SignedBinaryExactNumericType_int16 = Core.Name "int16"
_SignedBinaryExactNumericType_int32 = Core.Name "int32"
_SignedBinaryExactNumericType_int64 = Core.Name "int64"
_SignedBinaryExactNumericType_int128 = Core.Name "int128"
_SignedBinaryExactNumericType_int256 = Core.Name "int256"
_SignedBinaryExactNumericType_smallInt = Core.Name "smallInt"
_SignedBinaryExactNumericType_intWithPrecision = Core.Name "intWithPrecision"
_SignedBinaryExactNumericType_bigInt = Core.Name "bigInt"
_SignedBinaryExactNumericType_signedVerboseType = Core.Name "signedVerboseType"
data Int8Type =
  Int8Type {
    int8TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Int8Type = Core.Name "openGql.grammar.Int8Type"
_Int8Type_notNull = Core.Name "notNull"
data Int16Type =
  Int16Type {
    int16TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Int16Type = Core.Name "openGql.grammar.Int16Type"
_Int16Type_notNull = Core.Name "notNull"
data Int32Type =
  Int32Type {
    int32TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Int32Type = Core.Name "openGql.grammar.Int32Type"
_Int32Type_notNull = Core.Name "notNull"
data Int64Type =
  Int64Type {
    int64TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Int64Type = Core.Name "openGql.grammar.Int64Type"
_Int64Type_notNull = Core.Name "notNull"
data Int128Type =
  Int128Type {
    int128TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Int128Type = Core.Name "openGql.grammar.Int128Type"
_Int128Type_notNull = Core.Name "notNull"
data Int256Type =
  Int256Type {
    int256TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Int256Type = Core.Name "openGql.grammar.Int256Type"
_Int256Type_notNull = Core.Name "notNull"
data SmallIntType =
  SmallIntType {
    smallIntTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_SmallIntType = Core.Name "openGql.grammar.SmallIntType"
_SmallIntType_notNull = Core.Name "notNull"
data BigIntType =
  BigIntType {
    bigIntTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_BigIntType = Core.Name "openGql.grammar.BigIntType"
_BigIntType_notNull = Core.Name "notNull"
data IntWithPrecision =
  IntWithPrecision {
    intWithPrecisionPrecision :: (Maybe Precision),
    intWithPrecisionNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_IntWithPrecision = Core.Name "openGql.grammar.IntWithPrecision"
_IntWithPrecision_precision = Core.Name "precision"
_IntWithPrecision_notNull = Core.Name "notNull"
data SignedVerboseBinaryExactNumericType =
  SignedVerboseBinaryExactNumericType {
    signedVerboseBinaryExactNumericTypeSigned :: Bool,
    signedVerboseBinaryExactNumericTypeVerboseType :: VerboseBinaryExactNumericType}
  deriving (Eq, Ord, Read, Show)
_SignedVerboseBinaryExactNumericType = Core.Name "openGql.grammar.SignedVerboseBinaryExactNumericType"
_SignedVerboseBinaryExactNumericType_signed = Core.Name "signed"
_SignedVerboseBinaryExactNumericType_verboseType = Core.Name "verboseType"
data UnsignedBinaryExactNumericType =
  UnsignedBinaryExactNumericTypeUint8 Uint8Type |
  UnsignedBinaryExactNumericTypeUint16 Uint16Type |
  UnsignedBinaryExactNumericTypeUint32 Uint32Type |
  UnsignedBinaryExactNumericTypeUint64 Uint64Type |
  UnsignedBinaryExactNumericTypeUint128 Uint128Type |
  UnsignedBinaryExactNumericTypeUint256 Uint256Type |
  UnsignedBinaryExactNumericTypeUSmallInt USmallIntType |
  UnsignedBinaryExactNumericTypeUintWithPrecision UintWithPrecision |
  UnsignedBinaryExactNumericTypeUBigInt UBigIntType |
  UnsignedBinaryExactNumericTypeUnsigned VerboseBinaryExactNumericType
  deriving (Eq, Ord, Read, Show)
_UnsignedBinaryExactNumericType = Core.Name "openGql.grammar.UnsignedBinaryExactNumericType"
_UnsignedBinaryExactNumericType_uint8 = Core.Name "uint8"
_UnsignedBinaryExactNumericType_uint16 = Core.Name "uint16"
_UnsignedBinaryExactNumericType_uint32 = Core.Name "uint32"
_UnsignedBinaryExactNumericType_uint64 = Core.Name "uint64"
_UnsignedBinaryExactNumericType_uint128 = Core.Name "uint128"
_UnsignedBinaryExactNumericType_uint256 = Core.Name "uint256"
_UnsignedBinaryExactNumericType_uSmallInt = Core.Name "uSmallInt"
_UnsignedBinaryExactNumericType_uintWithPrecision = Core.Name "uintWithPrecision"
_UnsignedBinaryExactNumericType_uBigInt = Core.Name "uBigInt"
_UnsignedBinaryExactNumericType_unsigned = Core.Name "unsigned"
data Uint8Type =
  Uint8Type {
    uint8TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Uint8Type = Core.Name "openGql.grammar.Uint8Type"
_Uint8Type_notNull = Core.Name "notNull"
data Uint16Type =
  Uint16Type {
    uint16TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Uint16Type = Core.Name "openGql.grammar.Uint16Type"
_Uint16Type_notNull = Core.Name "notNull"
data Uint32Type =
  Uint32Type {
    uint32TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Uint32Type = Core.Name "openGql.grammar.Uint32Type"
_Uint32Type_notNull = Core.Name "notNull"
data Uint64Type =
  Uint64Type {
    uint64TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Uint64Type = Core.Name "openGql.grammar.Uint64Type"
_Uint64Type_notNull = Core.Name "notNull"
data Uint128Type =
  Uint128Type {
    uint128TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Uint128Type = Core.Name "openGql.grammar.Uint128Type"
_Uint128Type_notNull = Core.Name "notNull"
data Uint256Type =
  Uint256Type {
    uint256TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Uint256Type = Core.Name "openGql.grammar.Uint256Type"
_Uint256Type_notNull = Core.Name "notNull"
data USmallIntType =
  USmallIntType {
    uSmallIntTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_USmallIntType = Core.Name "openGql.grammar.USmallIntType"
_USmallIntType_notNull = Core.Name "notNull"
data UBigIntType =
  UBigIntType {
    uBigIntTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_UBigIntType = Core.Name "openGql.grammar.UBigIntType"
_UBigIntType_notNull = Core.Name "notNull"
data UintWithPrecision =
  UintWithPrecision {
    uintWithPrecisionPrecision :: (Maybe Precision),
    uintWithPrecisionNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_UintWithPrecision = Core.Name "openGql.grammar.UintWithPrecision"
_UintWithPrecision_precision = Core.Name "precision"
_UintWithPrecision_notNull = Core.Name "notNull"
data VerboseBinaryExactNumericType =
  VerboseBinaryExactNumericTypeInteger8 Integer8Type |
  VerboseBinaryExactNumericTypeInteger16 Integer16Type |
  VerboseBinaryExactNumericTypeInteger32 Integer32Type |
  VerboseBinaryExactNumericTypeInteger64 Integer64Type |
  VerboseBinaryExactNumericTypeInteger128 Integer128Type |
  VerboseBinaryExactNumericTypeInteger256 Integer256Type |
  VerboseBinaryExactNumericTypeSmallInteger SmallIntegerType |
  VerboseBinaryExactNumericTypeIntegerWithPrecision IntegerWithPrecision |
  VerboseBinaryExactNumericTypeBigInteger BigIntegerType
  deriving (Eq, Ord, Read, Show)
_VerboseBinaryExactNumericType = Core.Name "openGql.grammar.VerboseBinaryExactNumericType"
_VerboseBinaryExactNumericType_integer8 = Core.Name "integer8"
_VerboseBinaryExactNumericType_integer16 = Core.Name "integer16"
_VerboseBinaryExactNumericType_integer32 = Core.Name "integer32"
_VerboseBinaryExactNumericType_integer64 = Core.Name "integer64"
_VerboseBinaryExactNumericType_integer128 = Core.Name "integer128"
_VerboseBinaryExactNumericType_integer256 = Core.Name "integer256"
_VerboseBinaryExactNumericType_smallInteger = Core.Name "smallInteger"
_VerboseBinaryExactNumericType_integerWithPrecision = Core.Name "integerWithPrecision"
_VerboseBinaryExactNumericType_bigInteger = Core.Name "bigInteger"
data Integer8Type =
  Integer8Type {
    integer8TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Integer8Type = Core.Name "openGql.grammar.Integer8Type"
_Integer8Type_notNull = Core.Name "notNull"
data Integer16Type =
  Integer16Type {
    integer16TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Integer16Type = Core.Name "openGql.grammar.Integer16Type"
_Integer16Type_notNull = Core.Name "notNull"
data Integer32Type =
  Integer32Type {
    integer32TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Integer32Type = Core.Name "openGql.grammar.Integer32Type"
_Integer32Type_notNull = Core.Name "notNull"
data Integer64Type =
  Integer64Type {
    integer64TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Integer64Type = Core.Name "openGql.grammar.Integer64Type"
_Integer64Type_notNull = Core.Name "notNull"
data Integer128Type =
  Integer128Type {
    integer128TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Integer128Type = Core.Name "openGql.grammar.Integer128Type"
_Integer128Type_notNull = Core.Name "notNull"
data Integer256Type =
  Integer256Type {
    integer256TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Integer256Type = Core.Name "openGql.grammar.Integer256Type"
_Integer256Type_notNull = Core.Name "notNull"
data SmallIntegerType =
  SmallIntegerType {
    smallIntegerTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_SmallIntegerType = Core.Name "openGql.grammar.SmallIntegerType"
_SmallIntegerType_notNull = Core.Name "notNull"
data BigIntegerType =
  BigIntegerType {
    bigIntegerTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_BigIntegerType = Core.Name "openGql.grammar.BigIntegerType"
_BigIntegerType_notNull = Core.Name "notNull"
data IntegerWithPrecision =
  IntegerWithPrecision {
    integerWithPrecisionPrecision :: (Maybe Precision),
    integerWithPrecisionNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_IntegerWithPrecision = Core.Name "openGql.grammar.IntegerWithPrecision"
_IntegerWithPrecision_precision = Core.Name "precision"
_IntegerWithPrecision_notNull = Core.Name "notNull"
type Precision = UnsignedDecimalInteger
_Precision = Core.Name "openGql.grammar.Precision"
type DecimalExactNumericType = (Maybe PrecisionAndScale)
_DecimalExactNumericType = Core.Name "openGql.grammar.DecimalExactNumericType"
data PrecisionAndScale =
  PrecisionAndScale {
    precisionAndScalePrecision :: Precision,
    precisionAndScaleScale :: (Maybe Scale),
    precisionAndScaleNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_PrecisionAndScale = Core.Name "openGql.grammar.PrecisionAndScale"
_PrecisionAndScale_precision = Core.Name "precision"
_PrecisionAndScale_scale = Core.Name "scale"
_PrecisionAndScale_notNull = Core.Name "notNull"
type Scale = UnsignedDecimalInteger
_Scale = Core.Name "openGql.grammar.Scale"
data ApproximateNumericType =
  ApproximateNumericTypeFloat16 Float16Type |
  ApproximateNumericTypeFloat32 Float32Type |
  ApproximateNumericTypeFloat64 Float64Type |
  ApproximateNumericTypeFloat128 Float128Type |
  ApproximateNumericTypeFloat256 Float256Type |
  ApproximateNumericTypeFloatWithPrecision FloatTypeWithPrecision |
  ApproximateNumericTypeReal RealType |
  ApproximateNumericTypeDoubleWithPrecision DoubleTypeWithPrecision
  deriving (Eq, Ord, Read, Show)
_ApproximateNumericType = Core.Name "openGql.grammar.ApproximateNumericType"
_ApproximateNumericType_float16 = Core.Name "float16"
_ApproximateNumericType_float32 = Core.Name "float32"
_ApproximateNumericType_float64 = Core.Name "float64"
_ApproximateNumericType_float128 = Core.Name "float128"
_ApproximateNumericType_float256 = Core.Name "float256"
_ApproximateNumericType_floatWithPrecision = Core.Name "floatWithPrecision"
_ApproximateNumericType_real = Core.Name "real"
_ApproximateNumericType_doubleWithPrecision = Core.Name "doubleWithPrecision"
data Float16Type =
  Float16Type {
    float16TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Float16Type = Core.Name "openGql.grammar.Float16Type"
_Float16Type_notNull = Core.Name "notNull"
data Float32Type =
  Float32Type {
    float32TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Float32Type = Core.Name "openGql.grammar.Float32Type"
_Float32Type_notNull = Core.Name "notNull"
data Float64Type =
  Float64Type {
    float64TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Float64Type = Core.Name "openGql.grammar.Float64Type"
_Float64Type_notNull = Core.Name "notNull"
data Float128Type =
  Float128Type {
    float128TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Float128Type = Core.Name "openGql.grammar.Float128Type"
_Float128Type_notNull = Core.Name "notNull"
data Float256Type =
  Float256Type {
    float256TypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_Float256Type = Core.Name "openGql.grammar.Float256Type"
_Float256Type_notNull = Core.Name "notNull"
data FloatTypeWithPrecision =
  FloatTypeWithPrecision {
    floatTypeWithPrecisionPrecisionAndScale :: (Maybe PrecisionAndScale),
    floatTypeWithPrecisionNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_FloatTypeWithPrecision = Core.Name "openGql.grammar.FloatTypeWithPrecision"
_FloatTypeWithPrecision_precisionAndScale = Core.Name "precisionAndScale"
_FloatTypeWithPrecision_notNull = Core.Name "notNull"
data RealType =
  RealType {
    realTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_RealType = Core.Name "openGql.grammar.RealType"
_RealType_notNull = Core.Name "notNull"
data DoubleTypeWithPrecision =
  DoubleTypeWithPrecision {
    doubleTypeWithPrecisionPrecision :: Bool,
    doubleTypeWithPrecisionNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_DoubleTypeWithPrecision = Core.Name "openGql.grammar.DoubleTypeWithPrecision"
_DoubleTypeWithPrecision_precision = Core.Name "precision"
_DoubleTypeWithPrecision_notNull = Core.Name "notNull"
data TemporalType =
  TemporalTypeInstantType TemporalInstantType |
  TemporalTypeDurationType TemporalDurationType
  deriving (Eq, Ord, Read, Show)
_TemporalType = Core.Name "openGql.grammar.TemporalType"
_TemporalType_instantType = Core.Name "instantType"
_TemporalType_durationType = Core.Name "durationType"
data TemporalInstantType =
  TemporalInstantTypeDatetimeType DatetimeType |
  TemporalInstantTypeLocalDatetimeTypeChoice LocalDatetimeTypeChoice |
  TemporalInstantTypeDateType DateType |
  TemporalInstantTypeTimeType TimeType |
  TemporalInstantTypeLocalTimeTypeChoice LocalTimeTypeChoice
  deriving (Eq, Ord, Read, Show)
_TemporalInstantType = Core.Name "openGql.grammar.TemporalInstantType"
_TemporalInstantType_datetimeType = Core.Name "datetimeType"
_TemporalInstantType_localDatetimeTypeChoice = Core.Name "localDatetimeTypeChoice"
_TemporalInstantType_dateType = Core.Name "dateType"
_TemporalInstantType_timeType = Core.Name "timeType"
_TemporalInstantType_localTimeTypeChoice = Core.Name "localTimeTypeChoice"
data DatetimeType =
  DatetimeTypeZonedDatetime ZonedDatetimeType |
  DatetimeTypeTimestampWithTimeZone TimestampWithTimeZoneType
  deriving (Eq, Ord, Read, Show)
_DatetimeType = Core.Name "openGql.grammar.DatetimeType"
_DatetimeType_zonedDatetime = Core.Name "zonedDatetime"
_DatetimeType_timestampWithTimeZone = Core.Name "timestampWithTimeZone"
data ZonedDatetimeType =
  ZonedDatetimeType {
    zonedDatetimeTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_ZonedDatetimeType = Core.Name "openGql.grammar.ZonedDatetimeType"
_ZonedDatetimeType_notNull = Core.Name "notNull"
data TimestampWithTimeZoneType =
  TimestampWithTimeZoneType {
    timestampWithTimeZoneTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_TimestampWithTimeZoneType = Core.Name "openGql.grammar.TimestampWithTimeZoneType"
_TimestampWithTimeZoneType_notNull = Core.Name "notNull"
data LocalDatetimeTypeChoice =
  LocalDatetimeTypeChoiceLocalDatetime LocalDatetimeType |
  LocalDatetimeTypeChoiceTimestampWithoutTimeZone TimestampWithoutTimeZoneType
  deriving (Eq, Ord, Read, Show)
_LocalDatetimeTypeChoice = Core.Name "openGql.grammar.LocalDatetimeTypeChoice"
_LocalDatetimeTypeChoice_localDatetime = Core.Name "localDatetime"
_LocalDatetimeTypeChoice_timestampWithoutTimeZone = Core.Name "timestampWithoutTimeZone"
data LocalDatetimeType =
  LocalDatetimeType {
    localDatetimeTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_LocalDatetimeType = Core.Name "openGql.grammar.LocalDatetimeType"
_LocalDatetimeType_notNull = Core.Name "notNull"
data TimestampWithoutTimeZoneType =
  TimestampWithoutTimeZoneType {
    timestampWithoutTimeZoneTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_TimestampWithoutTimeZoneType = Core.Name "openGql.grammar.TimestampWithoutTimeZoneType"
_TimestampWithoutTimeZoneType_notNull = Core.Name "notNull"
data DateType =
  DateType {
    dateTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_DateType = Core.Name "openGql.grammar.DateType"
_DateType_notNull = Core.Name "notNull"
data TimeType =
  TimeTypeZonedTime ZonedTimeType |
  TimeTypeTimeWithTimeZone TimeWithTimeZoneType
  deriving (Eq, Ord, Read, Show)
_TimeType = Core.Name "openGql.grammar.TimeType"
_TimeType_zonedTime = Core.Name "zonedTime"
_TimeType_timeWithTimeZone = Core.Name "timeWithTimeZone"
data ZonedTimeType =
  ZonedTimeType {
    zonedTimeTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_ZonedTimeType = Core.Name "openGql.grammar.ZonedTimeType"
_ZonedTimeType_notNull = Core.Name "notNull"
data TimeWithTimeZoneType =
  TimeWithTimeZoneType {
    timeWithTimeZoneTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_TimeWithTimeZoneType = Core.Name "openGql.grammar.TimeWithTimeZoneType"
_TimeWithTimeZoneType_notNull = Core.Name "notNull"
data LocalTimeTypeChoice =
  LocalTimeTypeChoiceLocalTime LocalTimeType |
  LocalTimeTypeChoiceTimeWithoutTimeZone TimeWithoutTimeZoneType
  deriving (Eq, Ord, Read, Show)
_LocalTimeTypeChoice = Core.Name "openGql.grammar.LocalTimeTypeChoice"
_LocalTimeTypeChoice_localTime = Core.Name "localTime"
_LocalTimeTypeChoice_timeWithoutTimeZone = Core.Name "timeWithoutTimeZone"
data LocalTimeType =
  LocalTimeType {
    localTimeTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_LocalTimeType = Core.Name "openGql.grammar.LocalTimeType"
_LocalTimeType_notNull = Core.Name "notNull"
data TimeWithoutTimeZoneType =
  TimeWithoutTimeZoneType {
    timeWithoutTimeZoneTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_TimeWithoutTimeZoneType = Core.Name "openGql.grammar.TimeWithoutTimeZoneType"
_TimeWithoutTimeZoneType_notNull = Core.Name "notNull"
data TemporalDurationType =
  TemporalDurationType {
    temporalDurationTypeQualifier :: TemporalDurationQualifier,
    temporalDurationTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_TemporalDurationType = Core.Name "openGql.grammar.TemporalDurationType"
_TemporalDurationType_qualifier = Core.Name "qualifier"
_TemporalDurationType_notNull = Core.Name "notNull"
data TemporalDurationQualifier =
  TemporalDurationQualifierYearToMonth |
  TemporalDurationQualifierDayToSecond
  deriving (Eq, Ord, Read, Show)
_TemporalDurationQualifier = Core.Name "openGql.grammar.TemporalDurationQualifier"
_TemporalDurationQualifier_yearToMonth = Core.Name "yearToMonth"
_TemporalDurationQualifier_dayToSecond = Core.Name "dayToSecond"
data ReferenceValueType =
  ReferenceValueTypeGraph GraphReferenceValueType |
  ReferenceValueTypeBindingTable BindingTableReferenceValueType |
  ReferenceValueTypeNode NodeReferenceValueType |
  ReferenceValueTypeEdge EdgeReferenceValueType
  deriving (Eq, Ord, Read, Show)
_ReferenceValueType = Core.Name "openGql.grammar.ReferenceValueType"
_ReferenceValueType_graph = Core.Name "graph"
_ReferenceValueType_bindingTable = Core.Name "bindingTable"
_ReferenceValueType_node = Core.Name "node"
_ReferenceValueType_edge = Core.Name "edge"
data ImmaterialValueType =
  ImmaterialValueTypeNullType NullType |
  ImmaterialValueTypeEmptyType EmptyType
  deriving (Eq, Ord, Read, Show)
_ImmaterialValueType = Core.Name "openGql.grammar.ImmaterialValueType"
_ImmaterialValueType_nullType = Core.Name "nullType"
_ImmaterialValueType_emptyType = Core.Name "emptyType"
type NullType = ()
_NullType = Core.Name "openGql.grammar.NullType"
type EmptyType = ()
_EmptyType = Core.Name "openGql.grammar.EmptyType"
data GraphReferenceValueType =
  GraphReferenceValueTypeOpen OpenGraphReferenceValueType |
  GraphReferenceValueTypeClosed ClosedGraphReferenceValueType
  deriving (Eq, Ord, Read, Show)
_GraphReferenceValueType = Core.Name "openGql.grammar.GraphReferenceValueType"
_GraphReferenceValueType_open = Core.Name "open"
_GraphReferenceValueType_closed = Core.Name "closed"
data ClosedGraphReferenceValueType =
  ClosedGraphReferenceValueType {
    closedGraphReferenceValueTypeProperty :: Bool,
    closedGraphReferenceValueTypeNestedSpec :: NestedGraphTypeSpecification,
    closedGraphReferenceValueTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_ClosedGraphReferenceValueType = Core.Name "openGql.grammar.ClosedGraphReferenceValueType"
_ClosedGraphReferenceValueType_property = Core.Name "property"
_ClosedGraphReferenceValueType_nestedSpec = Core.Name "nestedSpec"
_ClosedGraphReferenceValueType_notNull = Core.Name "notNull"
data OpenGraphReferenceValueType =
  OpenGraphReferenceValueType {
    openGraphReferenceValueTypeAny :: (Maybe Bool),
    openGraphReferenceValueTypeProperty :: Bool,
    openGraphReferenceValueTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_OpenGraphReferenceValueType = Core.Name "openGql.grammar.OpenGraphReferenceValueType"
_OpenGraphReferenceValueType_any = Core.Name "any"
_OpenGraphReferenceValueType_property = Core.Name "property"
_OpenGraphReferenceValueType_notNull = Core.Name "notNull"
data BindingTableReferenceValueType =
  BindingTableReferenceValueType {
    bindingTableReferenceValueTypeBindingTableType :: BindingTableType,
    bindingTableReferenceValueTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_BindingTableReferenceValueType = Core.Name "openGql.grammar.BindingTableReferenceValueType"
_BindingTableReferenceValueType_bindingTableType = Core.Name "bindingTableType"
_BindingTableReferenceValueType_notNull = Core.Name "notNull"
data NodeReferenceValueType =
  NodeReferenceValueTypeOpen OpenNodeReferenceValueType |
  NodeReferenceValueTypeClosed ClosedNodeReferenceValueType
  deriving (Eq, Ord, Read, Show)
_NodeReferenceValueType = Core.Name "openGql.grammar.NodeReferenceValueType"
_NodeReferenceValueType_open = Core.Name "open"
_NodeReferenceValueType_closed = Core.Name "closed"
data ClosedNodeReferenceValueType =
  ClosedNodeReferenceValueType {
    closedNodeReferenceValueTypeNodeTypeSpec :: NodeTypeSpecification,
    closedNodeReferenceValueTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_ClosedNodeReferenceValueType = Core.Name "openGql.grammar.ClosedNodeReferenceValueType"
_ClosedNodeReferenceValueType_nodeTypeSpec = Core.Name "nodeTypeSpec"
_ClosedNodeReferenceValueType_notNull = Core.Name "notNull"
data OpenNodeReferenceValueType =
  OpenNodeReferenceValueType {
    openNodeReferenceValueTypeAny :: Bool,
    openNodeReferenceValueTypeNodeSynonym :: NodeSynonym,
    openNodeReferenceValueTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_OpenNodeReferenceValueType = Core.Name "openGql.grammar.OpenNodeReferenceValueType"
_OpenNodeReferenceValueType_any = Core.Name "any"
_OpenNodeReferenceValueType_nodeSynonym = Core.Name "nodeSynonym"
_OpenNodeReferenceValueType_notNull = Core.Name "notNull"
data EdgeReferenceValueType =
  EdgeReferenceValueTypeOpen OpenEdgeReferenceValueType |
  EdgeReferenceValueTypeClosed ClosedEdgeReferenceValueType
  deriving (Eq, Ord, Read, Show)
_EdgeReferenceValueType = Core.Name "openGql.grammar.EdgeReferenceValueType"
_EdgeReferenceValueType_open = Core.Name "open"
_EdgeReferenceValueType_closed = Core.Name "closed"
data ClosedEdgeReferenceValueType =
  ClosedEdgeReferenceValueType {
    closedEdgeReferenceValueTypeEdgeTypeSpec :: EdgeTypeSpecification,
    closedEdgeReferenceValueTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_ClosedEdgeReferenceValueType = Core.Name "openGql.grammar.ClosedEdgeReferenceValueType"
_ClosedEdgeReferenceValueType_edgeTypeSpec = Core.Name "edgeTypeSpec"
_ClosedEdgeReferenceValueType_notNull = Core.Name "notNull"
data OpenEdgeReferenceValueType =
  OpenEdgeReferenceValueType {
    openEdgeReferenceValueTypeAny :: Bool,
    openEdgeReferenceValueTypeEdgeSynonym :: EdgeSynonym,
    openEdgeReferenceValueTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_OpenEdgeReferenceValueType = Core.Name "openGql.grammar.OpenEdgeReferenceValueType"
_OpenEdgeReferenceValueType_any = Core.Name "any"
_OpenEdgeReferenceValueType_edgeSynonym = Core.Name "edgeSynonym"
_OpenEdgeReferenceValueType_notNull = Core.Name "notNull"
data PathValueType =
  PathValueType {
    pathValueTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_PathValueType = Core.Name "openGql.grammar.PathValueType"
_PathValueType_notNull = Core.Name "notNull"
data ListValueTypeName =
  ListValueTypeName {
    listValueTypeNameGroup :: Bool,
    listValueTypeNameSynonym :: ListValueTypeNameSynonym}
  deriving (Eq, Ord, Read, Show)
_ListValueTypeName = Core.Name "openGql.grammar.ListValueTypeName"
_ListValueTypeName_group = Core.Name "group"
_ListValueTypeName_synonym = Core.Name "synonym"
data ListValueTypeNameSynonym =
  ListValueTypeNameSynonymList |
  ListValueTypeNameSynonymArray
  deriving (Eq, Ord, Read, Show)
_ListValueTypeNameSynonym = Core.Name "openGql.grammar.ListValueTypeNameSynonym"
_ListValueTypeNameSynonym_list = Core.Name "list"
_ListValueTypeNameSynonym_array = Core.Name "array"
data RecordType =
  RecordTypeAnyRecord AnyRecordType |
  RecordTypeSpecifiedRecord SpecifiedRecordType
  deriving (Eq, Ord, Read, Show)
_RecordType = Core.Name "openGql.grammar.RecordType"
_RecordType_anyRecord = Core.Name "anyRecord"
_RecordType_specifiedRecord = Core.Name "specifiedRecord"
data AnyRecordType =
  AnyRecordType {
    anyRecordTypeAny :: Bool,
    anyRecordTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_AnyRecordType = Core.Name "openGql.grammar.AnyRecordType"
_AnyRecordType_any = Core.Name "any"
_AnyRecordType_notNull = Core.Name "notNull"
data SpecifiedRecordType =
  SpecifiedRecordType {
    specifiedRecordTypeRecord :: Bool,
    specifiedRecordTypeFieldTypes :: FieldTypesSpecification,
    specifiedRecordTypeNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)
_SpecifiedRecordType = Core.Name "openGql.grammar.SpecifiedRecordType"
_SpecifiedRecordType_record = Core.Name "record"
_SpecifiedRecordType_fieldTypes = Core.Name "fieldTypes"
_SpecifiedRecordType_notNull = Core.Name "notNull"
type FieldTypesSpecification = (Maybe FieldTypeList)
_FieldTypesSpecification = Core.Name "openGql.grammar.FieldTypesSpecification"
type FieldTypeList = [FieldType]
_FieldTypeList = Core.Name "openGql.grammar.FieldTypeList"
type NotNull = ()
_NotNull = Core.Name "openGql.grammar.NotNull"
data FieldType =
  FieldType {
    fieldTypeFieldName :: FieldName,
    fieldTypeTyped :: (Maybe Typed),
    fieldTypeValueType :: ValueType}
  deriving (Eq, Ord, Read, Show)
_FieldType = Core.Name "openGql.grammar.FieldType"
_FieldType_fieldName = Core.Name "fieldName"
_FieldType_typed = Core.Name "typed"
_FieldType_valueType = Core.Name "valueType"
type SearchCondition = BooleanValueExpression
_SearchCondition = Core.Name "openGql.grammar.SearchCondition"
data Predicate =
  PredicateExistsPredicate ExistsPredicate |
  PredicateNullPredicate NullPredicate |
  PredicateValueTypePredicate ValueTypePredicate |
  PredicateDirectedPredicate DirectedPredicate |
  PredicateLabeledPredicate LabeledPredicate |
  PredicateSourceDestinationPredicate SourceDestinationPredicate |
  PredicateAllDifferentPredicate AllDifferentPredicate |
  PredicateSamePredicate SamePredicate |
  PredicatePropertyExistsPredicate PropertyExistsPredicate
  deriving (Eq, Ord, Read, Show)
_Predicate = Core.Name "openGql.grammar.Predicate"
_Predicate_existsPredicate = Core.Name "existsPredicate"
_Predicate_nullPredicate = Core.Name "nullPredicate"
_Predicate_valueTypePredicate = Core.Name "valueTypePredicate"
_Predicate_directedPredicate = Core.Name "directedPredicate"
_Predicate_labeledPredicate = Core.Name "labeledPredicate"
_Predicate_sourceDestinationPredicate = Core.Name "sourceDestinationPredicate"
_Predicate_allDifferentPredicate = Core.Name "allDifferentPredicate"
_Predicate_samePredicate = Core.Name "samePredicate"
_Predicate_propertyExistsPredicate = Core.Name "propertyExistsPredicate"
data ComparisonPredicatePart2 =
  ComparisonPredicatePart2 {
    comparisonPredicatePart2CompOp :: CompOp,
    comparisonPredicatePart2ValueExpression :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_ComparisonPredicatePart2 = Core.Name "openGql.grammar.ComparisonPredicatePart2"
_ComparisonPredicatePart2_compOp = Core.Name "compOp"
_ComparisonPredicatePart2_valueExpression = Core.Name "valueExpression"
data CompOp =
  CompOpEquals |
  CompOpNotEquals |
  CompOpLessThan |
  CompOpGreaterThan |
  CompOpLessThanOrEquals |
  CompOpGreaterThanOrEquals
  deriving (Eq, Ord, Read, Show)
_CompOp = Core.Name "openGql.grammar.CompOp"
_CompOp_equals = Core.Name "equals"
_CompOp_notEquals = Core.Name "notEquals"
_CompOp_lessThan = Core.Name "lessThan"
_CompOp_greaterThan = Core.Name "greaterThan"
_CompOp_lessThanOrEquals = Core.Name "lessThanOrEquals"
_CompOp_greaterThanOrEquals = Core.Name "greaterThanOrEquals"
data ExistsPredicate =
  ExistsPredicateGraphPatternBrace GraphPattern |
  ExistsPredicateGraphPatternParen GraphPattern |
  ExistsPredicateMatchBlockBrace MatchStatementBlock |
  ExistsPredicateMatchBlockParen MatchStatementBlock |
  ExistsPredicateNestedQuery NestedQuerySpecification
  deriving (Eq, Ord, Read, Show)
_ExistsPredicate = Core.Name "openGql.grammar.ExistsPredicate"
_ExistsPredicate_graphPatternBrace = Core.Name "graphPatternBrace"
_ExistsPredicate_graphPatternParen = Core.Name "graphPatternParen"
_ExistsPredicate_matchBlockBrace = Core.Name "matchBlockBrace"
_ExistsPredicate_matchBlockParen = Core.Name "matchBlockParen"
_ExistsPredicate_nestedQuery = Core.Name "nestedQuery"
data NullPredicate =
  NullPredicate {
    nullPredicateValueExpression :: PrimaryValueExpression,
    nullPredicateNullPart :: NullPredicatePart2}
  deriving (Eq, Ord, Read, Show)
_NullPredicate = Core.Name "openGql.grammar.NullPredicate"
_NullPredicate_valueExpression = Core.Name "valueExpression"
_NullPredicate_nullPart = Core.Name "nullPart"
data NullPredicatePart2 =
  NullPredicatePart2 {
    nullPredicatePart2Not :: Bool}
  deriving (Eq, Ord, Read, Show)
_NullPredicatePart2 = Core.Name "openGql.grammar.NullPredicatePart2"
_NullPredicatePart2_not = Core.Name "not"
data ValueTypePredicate =
  ValueTypePredicate {
    valueTypePredicateValueExpression :: PrimaryValueExpression,
    valueTypePredicateValueTypePart :: ValueTypePredicatePart2}
  deriving (Eq, Ord, Read, Show)
_ValueTypePredicate = Core.Name "openGql.grammar.ValueTypePredicate"
_ValueTypePredicate_valueExpression = Core.Name "valueExpression"
_ValueTypePredicate_valueTypePart = Core.Name "valueTypePart"
data ValueTypePredicatePart2 =
  ValueTypePredicatePart2 {
    valueTypePredicatePart2Not :: Bool,
    valueTypePredicatePart2Typed :: Typed,
    valueTypePredicatePart2ValueType :: ValueType}
  deriving (Eq, Ord, Read, Show)
_ValueTypePredicatePart2 = Core.Name "openGql.grammar.ValueTypePredicatePart2"
_ValueTypePredicatePart2_not = Core.Name "not"
_ValueTypePredicatePart2_typed = Core.Name "typed"
_ValueTypePredicatePart2_valueType = Core.Name "valueType"
data NormalizedPredicatePart2 =
  NormalizedPredicatePart2 {
    normalizedPredicatePart2Not :: Bool,
    normalizedPredicatePart2NormalForm :: (Maybe NormalForm)}
  deriving (Eq, Ord, Read, Show)
_NormalizedPredicatePart2 = Core.Name "openGql.grammar.NormalizedPredicatePart2"
_NormalizedPredicatePart2_not = Core.Name "not"
_NormalizedPredicatePart2_normalForm = Core.Name "normalForm"
data DirectedPredicate =
  DirectedPredicate {
    directedPredicateElementVariableReference :: ElementVariableReference,
    directedPredicateDirectedPart :: DirectedPredicatePart2}
  deriving (Eq, Ord, Read, Show)
_DirectedPredicate = Core.Name "openGql.grammar.DirectedPredicate"
_DirectedPredicate_elementVariableReference = Core.Name "elementVariableReference"
_DirectedPredicate_directedPart = Core.Name "directedPart"
data DirectedPredicatePart2 =
  DirectedPredicatePart2 {
    directedPredicatePart2Not :: Bool}
  deriving (Eq, Ord, Read, Show)
_DirectedPredicatePart2 = Core.Name "openGql.grammar.DirectedPredicatePart2"
_DirectedPredicatePart2_not = Core.Name "not"
data LabeledPredicate =
  LabeledPredicate {
    labeledPredicateElementVariableReference :: ElementVariableReference,
    labeledPredicateLabeledPart :: LabeledPredicatePart2}
  deriving (Eq, Ord, Read, Show)
_LabeledPredicate = Core.Name "openGql.grammar.LabeledPredicate"
_LabeledPredicate_elementVariableReference = Core.Name "elementVariableReference"
_LabeledPredicate_labeledPart = Core.Name "labeledPart"
data LabeledPredicatePart2 =
  LabeledPredicatePart2 {
    labeledPredicatePart2IsLabeledOrColon :: IsLabeledOrColon,
    labeledPredicatePart2LabelExpression :: LabelExpression}
  deriving (Eq, Ord, Read, Show)
_LabeledPredicatePart2 = Core.Name "openGql.grammar.LabeledPredicatePart2"
_LabeledPredicatePart2_isLabeledOrColon = Core.Name "isLabeledOrColon"
_LabeledPredicatePart2_labelExpression = Core.Name "labelExpression"
data IsLabeledOrColon =
  IsLabeledOrColonNot Bool |
  IsLabeledOrColonColon
  deriving (Eq, Ord, Read, Show)
_IsLabeledOrColon = Core.Name "openGql.grammar.IsLabeledOrColon"
_IsLabeledOrColon_not = Core.Name "not"
_IsLabeledOrColon_colon = Core.Name "colon"
data SourceDestinationPredicate =
  SourceDestinationPredicateSourcePredicate SourcePredicate |
  SourceDestinationPredicateDestinationPredicate DestinationPredicate
  deriving (Eq, Ord, Read, Show)
_SourceDestinationPredicate = Core.Name "openGql.grammar.SourceDestinationPredicate"
_SourceDestinationPredicate_sourcePredicate = Core.Name "sourcePredicate"
_SourceDestinationPredicate_destinationPredicate = Core.Name "destinationPredicate"
type NodeReference = ElementVariableReference
_NodeReference = Core.Name "openGql.grammar.NodeReference"
data SourcePredicate =
  SourcePredicate {
    sourcePredicateNot :: Bool,
    sourcePredicateSourceOf :: EdgeReference}
  deriving (Eq, Ord, Read, Show)
_SourcePredicate = Core.Name "openGql.grammar.SourcePredicate"
_SourcePredicate_not = Core.Name "not"
_SourcePredicate_sourceOf = Core.Name "sourceOf"
data DestinationPredicate =
  DestinationPredicate {
    destinationPredicateNodeReference :: NodeReference,
    destinationPredicateNot :: Bool,
    destinationPredicateDestinationOf :: EdgeReference}
  deriving (Eq, Ord, Read, Show)
_DestinationPredicate = Core.Name "openGql.grammar.DestinationPredicate"
_DestinationPredicate_nodeReference = Core.Name "nodeReference"
_DestinationPredicate_not = Core.Name "not"
_DestinationPredicate_destinationOf = Core.Name "destinationOf"
type EdgeReference = ElementVariableReference
_EdgeReference = Core.Name "openGql.grammar.EdgeReference"
data AllDifferentPredicate =
  AllDifferentPredicate {
    allDifferentPredicateReferences :: [ElementVariableReference]}
  deriving (Eq, Ord, Read, Show)
_AllDifferentPredicate = Core.Name "openGql.grammar.AllDifferentPredicate"
_AllDifferentPredicate_references = Core.Name "references"
data SamePredicate =
  SamePredicate {
    samePredicateReferences :: [ElementVariableReference]}
  deriving (Eq, Ord, Read, Show)
_SamePredicate = Core.Name "openGql.grammar.SamePredicate"
_SamePredicate_references = Core.Name "references"
data PropertyExistsPredicate =
  PropertyExistsPredicate {
    propertyExistsPredicateElementVariableReference :: ElementVariableReference,
    propertyExistsPredicatePropertyName :: PropertyName}
  deriving (Eq, Ord, Read, Show)
_PropertyExistsPredicate = Core.Name "openGql.grammar.PropertyExistsPredicate"
_PropertyExistsPredicate_elementVariableReference = Core.Name "elementVariableReference"
_PropertyExistsPredicate_propertyName = Core.Name "propertyName"
data ValueExpression =
  ValueExpressionSigned SignedExpr |
  ValueExpressionMultDiv MultDivExpr |
  ValueExpressionAddSubtract AddSubtractExpr |
  ValueExpressionConcatenation ConcatenationExpr |
  ValueExpressionNot NotExpr |
  ValueExpressionIsNot IsNotExpr |
  ValueExpressionConjunctive ConjunctiveExpr |
  ValueExpressionDisjunctive DisjunctiveExpr |
  ValueExpressionComparison ComparisonExpr |
  ValueExpressionPredicate Predicate |
  ValueExpressionNormalizedPredicate NormalizedPredicateExpr |
  ValueExpressionPropertyGraph GraphExpression |
  ValueExpressionBindingTable BindingTableExpression |
  ValueExpressionValueFunction ValueFunction |
  ValueExpressionPrimary PrimaryValueExpression
  deriving (Eq, Ord, Read, Show)
_ValueExpression = Core.Name "openGql.grammar.ValueExpression"
_ValueExpression_signed = Core.Name "signed"
_ValueExpression_multDiv = Core.Name "multDiv"
_ValueExpression_addSubtract = Core.Name "addSubtract"
_ValueExpression_concatenation = Core.Name "concatenation"
_ValueExpression_not = Core.Name "not"
_ValueExpression_isNot = Core.Name "isNot"
_ValueExpression_conjunctive = Core.Name "conjunctive"
_ValueExpression_disjunctive = Core.Name "disjunctive"
_ValueExpression_comparison = Core.Name "comparison"
_ValueExpression_predicate = Core.Name "predicate"
_ValueExpression_normalizedPredicate = Core.Name "normalizedPredicate"
_ValueExpression_propertyGraph = Core.Name "propertyGraph"
_ValueExpression_bindingTable = Core.Name "bindingTable"
_ValueExpression_valueFunction = Core.Name "valueFunction"
_ValueExpression_primary = Core.Name "primary"
data SignedExpr =
  SignedExpr {
    signedExprSign :: Sign,
    signedExprValueExpression :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_SignedExpr = Core.Name "openGql.grammar.SignedExpr"
_SignedExpr_sign = Core.Name "sign"
_SignedExpr_valueExpression = Core.Name "valueExpression"
data MultDivExpr =
  MultDivExpr {
    multDivExprLeft :: ValueExpression,
    multDivExprOperator :: MultDivOperator,
    multDivExprRight :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_MultDivExpr = Core.Name "openGql.grammar.MultDivExpr"
_MultDivExpr_left = Core.Name "left"
_MultDivExpr_operator = Core.Name "operator"
_MultDivExpr_right = Core.Name "right"
data AddSubtractExpr =
  AddSubtractExpr {
    addSubtractExprLeft :: ValueExpression,
    addSubtractExprOperator :: AddSubtractOperator,
    addSubtractExprRight :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_AddSubtractExpr = Core.Name "openGql.grammar.AddSubtractExpr"
_AddSubtractExpr_left = Core.Name "left"
_AddSubtractExpr_operator = Core.Name "operator"
_AddSubtractExpr_right = Core.Name "right"
data ConcatenationExpr =
  ConcatenationExpr {
    concatenationExprLeft :: ValueExpression,
    concatenationExprRight :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_ConcatenationExpr = Core.Name "openGql.grammar.ConcatenationExpr"
_ConcatenationExpr_left = Core.Name "left"
_ConcatenationExpr_right = Core.Name "right"
type NotExpr = ValueExpression
_NotExpr = Core.Name "openGql.grammar.NotExpr"
data IsNotExpr =
  IsNotExpr {
    isNotExprValueExpression :: ValueExpression,
    isNotExprNot :: Bool,
    isNotExprTruthValue :: TruthValue}
  deriving (Eq, Ord, Read, Show)
_IsNotExpr = Core.Name "openGql.grammar.IsNotExpr"
_IsNotExpr_valueExpression = Core.Name "valueExpression"
_IsNotExpr_not = Core.Name "not"
_IsNotExpr_truthValue = Core.Name "truthValue"
data ConjunctiveExpr =
  ConjunctiveExpr {
    conjunctiveExprLeft :: ValueExpression,
    conjunctiveExprRight :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_ConjunctiveExpr = Core.Name "openGql.grammar.ConjunctiveExpr"
_ConjunctiveExpr_left = Core.Name "left"
_ConjunctiveExpr_right = Core.Name "right"
data DisjunctiveExpr =
  DisjunctiveExpr {
    disjunctiveExprLeft :: ValueExpression,
    disjunctiveExprOperator :: DisjunctiveOperator,
    disjunctiveExprRight :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_DisjunctiveExpr = Core.Name "openGql.grammar.DisjunctiveExpr"
_DisjunctiveExpr_left = Core.Name "left"
_DisjunctiveExpr_operator = Core.Name "operator"
_DisjunctiveExpr_right = Core.Name "right"
data ComparisonExpr =
  ComparisonExpr {
    comparisonExprValueExpression :: ValueExpression,
    comparisonExprComparison :: ComparisonPredicatePart2}
  deriving (Eq, Ord, Read, Show)
_ComparisonExpr = Core.Name "openGql.grammar.ComparisonExpr"
_ComparisonExpr_valueExpression = Core.Name "valueExpression"
_ComparisonExpr_comparison = Core.Name "comparison"
data NormalizedPredicateExpr =
  NormalizedPredicateExpr {
    normalizedPredicateExprValueExpression :: ValueExpression,
    normalizedPredicateExprNormalizedPredicate :: NormalizedPredicatePart2}
  deriving (Eq, Ord, Read, Show)
_NormalizedPredicateExpr = Core.Name "openGql.grammar.NormalizedPredicateExpr"
_NormalizedPredicateExpr_valueExpression = Core.Name "valueExpression"
_NormalizedPredicateExpr_normalizedPredicate = Core.Name "normalizedPredicate"
data Sign =
  SignPlus |
  SignMinus
  deriving (Eq, Ord, Read, Show)
_Sign = Core.Name "openGql.grammar.Sign"
_Sign_plus = Core.Name "plus"
_Sign_minus = Core.Name "minus"
data MultDivOperator =
  MultDivOperatorMultiply |
  MultDivOperatorDivide
  deriving (Eq, Ord, Read, Show)
_MultDivOperator = Core.Name "openGql.grammar.MultDivOperator"
_MultDivOperator_multiply = Core.Name "multiply"
_MultDivOperator_divide = Core.Name "divide"
data AddSubtractOperator =
  AddSubtractOperatorAdd |
  AddSubtractOperatorSubtract
  deriving (Eq, Ord, Read, Show)
_AddSubtractOperator = Core.Name "openGql.grammar.AddSubtractOperator"
_AddSubtractOperator_add = Core.Name "add"
_AddSubtractOperator_subtract = Core.Name "subtract"
data DisjunctiveOperator =
  DisjunctiveOperatorOr |
  DisjunctiveOperatorXor
  deriving (Eq, Ord, Read, Show)
_DisjunctiveOperator = Core.Name "openGql.grammar.DisjunctiveOperator"
_DisjunctiveOperator_or = Core.Name "or"
_DisjunctiveOperator_xor = Core.Name "xor"
data ValueFunction =
  ValueFunctionNumeric NumericValueFunction |
  ValueFunctionDatetimeSubtraction DatetimeSubtraction |
  ValueFunctionDatetime DatetimeValueFunction |
  ValueFunctionDuration DurationValueFunction |
  ValueFunctionCharacterOrByteString CharacterOrByteStringFunction |
  ValueFunctionList ListValueFunction
  deriving (Eq, Ord, Read, Show)
_ValueFunction = Core.Name "openGql.grammar.ValueFunction"
_ValueFunction_numeric = Core.Name "numeric"
_ValueFunction_datetimeSubtraction = Core.Name "datetimeSubtraction"
_ValueFunction_datetime = Core.Name "datetime"
_ValueFunction_duration = Core.Name "duration"
_ValueFunction_characterOrByteString = Core.Name "characterOrByteString"
_ValueFunction_list = Core.Name "list"
type BooleanValueExpression = ValueExpression
_BooleanValueExpression = Core.Name "openGql.grammar.BooleanValueExpression"
data CharacterOrByteStringFunction =
  CharacterOrByteStringFunctionSub SubCharacterOrByteString |
  CharacterOrByteStringFunctionTrimSingle TrimSingleCharacterOrByteString |
  CharacterOrByteStringFunctionFold FoldCharacterString |
  CharacterOrByteStringFunctionTrimMultiCharacter TrimMultiCharacterCharacterString |
  CharacterOrByteStringFunctionNormalize NormalizeCharacterString
  deriving (Eq, Ord, Read, Show)
_CharacterOrByteStringFunction = Core.Name "openGql.grammar.CharacterOrByteStringFunction"
_CharacterOrByteStringFunction_sub = Core.Name "sub"
_CharacterOrByteStringFunction_trimSingle = Core.Name "trimSingle"
_CharacterOrByteStringFunction_fold = Core.Name "fold"
_CharacterOrByteStringFunction_trimMultiCharacter = Core.Name "trimMultiCharacter"
_CharacterOrByteStringFunction_normalize = Core.Name "normalize"
data SubCharacterOrByteString =
  SubCharacterOrByteString {
    subCharacterOrByteStringSide :: Side,
    subCharacterOrByteStringValueExpression :: ValueExpression,
    subCharacterOrByteStringStringLength :: StringLength}
  deriving (Eq, Ord, Read, Show)
_SubCharacterOrByteString = Core.Name "openGql.grammar.SubCharacterOrByteString"
_SubCharacterOrByteString_side = Core.Name "side"
_SubCharacterOrByteString_valueExpression = Core.Name "valueExpression"
_SubCharacterOrByteString_stringLength = Core.Name "stringLength"
data Side =
  SideLeft |
  SideRight
  deriving (Eq, Ord, Read, Show)
_Side = Core.Name "openGql.grammar.Side"
_Side_left = Core.Name "left"
_Side_right = Core.Name "right"
type TrimSingleCharacterOrByteString = TrimOperands
_TrimSingleCharacterOrByteString = Core.Name "openGql.grammar.TrimSingleCharacterOrByteString"
data FoldCharacterString =
  FoldCharacterString {
    foldCharacterStringCase :: Case,
    foldCharacterStringValueExpression :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_FoldCharacterString = Core.Name "openGql.grammar.FoldCharacterString"
_FoldCharacterString_case = Core.Name "case"
_FoldCharacterString_valueExpression = Core.Name "valueExpression"
data Case =
  CaseUpper |
  CaseLower
  deriving (Eq, Ord, Read, Show)
_Case = Core.Name "openGql.grammar.Case"
_Case_upper = Core.Name "upper"
_Case_lower = Core.Name "lower"
data TrimMultiCharacterCharacterString =
  TrimMultiCharacterCharacterString {
    trimMultiCharacterCharacterStringTrimType :: TrimType,
    trimMultiCharacterCharacterStringValueExpression :: ValueExpression,
    trimMultiCharacterCharacterStringOptionalValueExpression :: (Maybe ValueExpression)}
  deriving (Eq, Ord, Read, Show)
_TrimMultiCharacterCharacterString = Core.Name "openGql.grammar.TrimMultiCharacterCharacterString"
_TrimMultiCharacterCharacterString_trimType = Core.Name "trimType"
_TrimMultiCharacterCharacterString_valueExpression = Core.Name "valueExpression"
_TrimMultiCharacterCharacterString_optionalValueExpression = Core.Name "optionalValueExpression"
data TrimType =
  TrimTypeBtrim |
  TrimTypeLtrim |
  TrimTypeRtrim
  deriving (Eq, Ord, Read, Show)
_TrimType = Core.Name "openGql.grammar.TrimType"
_TrimType_btrim = Core.Name "btrim"
_TrimType_ltrim = Core.Name "ltrim"
_TrimType_rtrim = Core.Name "rtrim"
data NormalizeCharacterString =
  NormalizeCharacterString {
    normalizeCharacterStringValueExpression :: ValueExpression,
    normalizeCharacterStringNormalForm :: (Maybe NormalForm)}
  deriving (Eq, Ord, Read, Show)
_NormalizeCharacterString = Core.Name "openGql.grammar.NormalizeCharacterString"
_NormalizeCharacterString_valueExpression = Core.Name "valueExpression"
_NormalizeCharacterString_normalForm = Core.Name "normalForm"
type NodeReferenceValueExpression = PrimaryValueExpression
_NodeReferenceValueExpression = Core.Name "openGql.grammar.NodeReferenceValueExpression"
type EdgeReferenceValueExpression = PrimaryValueExpression
_EdgeReferenceValueExpression = Core.Name "openGql.grammar.EdgeReferenceValueExpression"
type AggregatingValueExpression = ValueExpression
_AggregatingValueExpression = Core.Name "openGql.grammar.AggregatingValueExpression"
data PrimaryValueExpression =
  PrimaryValueExpressionParenthesized ParenthesizedValueExpression |
  PrimaryValueExpressionAggregateFunction AggregateFunction |
  PrimaryValueExpressionUnsignedValueSpecification UnsignedValueSpecification |
  PrimaryValueExpressionPathValueConstructor PathValueConstructor |
  PrimaryValueExpressionPropertyReference PropertyReference |
  PrimaryValueExpressionValueQueryExpression ValueQueryExpression |
  PrimaryValueExpressionCaseExpression CaseExpression |
  PrimaryValueExpressionCastSpecification CastSpecification |
  PrimaryValueExpressionElementIdFunction ElementIdFunction |
  PrimaryValueExpressionLetValueExpression LetValueExpression |
  PrimaryValueExpressionBindingVariableReference BindingVariableReference
  deriving (Eq, Ord, Read, Show)
_PrimaryValueExpression = Core.Name "openGql.grammar.PrimaryValueExpression"
_PrimaryValueExpression_parenthesized = Core.Name "parenthesized"
_PrimaryValueExpression_aggregateFunction = Core.Name "aggregateFunction"
_PrimaryValueExpression_unsignedValueSpecification = Core.Name "unsignedValueSpecification"
_PrimaryValueExpression_pathValueConstructor = Core.Name "pathValueConstructor"
_PrimaryValueExpression_propertyReference = Core.Name "propertyReference"
_PrimaryValueExpression_valueQueryExpression = Core.Name "valueQueryExpression"
_PrimaryValueExpression_caseExpression = Core.Name "caseExpression"
_PrimaryValueExpression_castSpecification = Core.Name "castSpecification"
_PrimaryValueExpression_elementIdFunction = Core.Name "elementIdFunction"
_PrimaryValueExpression_letValueExpression = Core.Name "letValueExpression"
_PrimaryValueExpression_bindingVariableReference = Core.Name "bindingVariableReference"
type ParenthesizedValueExpression = ValueExpression
_ParenthesizedValueExpression = Core.Name "openGql.grammar.ParenthesizedValueExpression"
data NonParenthesizedPrimaryValueExpression =
  NonParenthesizedPrimaryValueExpressionSpecial NonParenthesizedPrimaryValueExpressionSpecialCase |
  NonParenthesizedPrimaryValueExpressionBindingVariable BindingVariableReference
  deriving (Eq, Ord, Read, Show)
_NonParenthesizedPrimaryValueExpression = Core.Name "openGql.grammar.NonParenthesizedPrimaryValueExpression"
_NonParenthesizedPrimaryValueExpression_special = Core.Name "special"
_NonParenthesizedPrimaryValueExpression_bindingVariable = Core.Name "bindingVariable"
data NonParenthesizedPrimaryValueExpressionSpecialCase =
  NonParenthesizedPrimaryValueExpressionSpecialCaseAggregateFunction AggregateFunction |
  NonParenthesizedPrimaryValueExpressionSpecialCaseUnsignedValueSpecification UnsignedValueSpecification |
  NonParenthesizedPrimaryValueExpressionSpecialCasePathValueConstructor PathValueConstructor |
  NonParenthesizedPrimaryValueExpressionSpecialCasePropertyReference PropertyReference |
  NonParenthesizedPrimaryValueExpressionSpecialCaseValueQueryExpression ValueQueryExpression |
  NonParenthesizedPrimaryValueExpressionSpecialCaseCaseExpression CaseExpression |
  NonParenthesizedPrimaryValueExpressionSpecialCaseCastSpecification CastSpecification |
  NonParenthesizedPrimaryValueExpressionSpecialCaseElementIdFunction ElementIdFunction |
  NonParenthesizedPrimaryValueExpressionSpecialCaseLetValueExpression LetValueExpression
  deriving (Eq, Ord, Read, Show)
_NonParenthesizedPrimaryValueExpressionSpecialCase =
    Core.Name "openGql.grammar.NonParenthesizedPrimaryValueExpressionSpecialCase"
_NonParenthesizedPrimaryValueExpressionSpecialCase_aggregateFunction = Core.Name "aggregateFunction"
_NonParenthesizedPrimaryValueExpressionSpecialCase_unsignedValueSpecification = Core.Name "unsignedValueSpecification"
_NonParenthesizedPrimaryValueExpressionSpecialCase_pathValueConstructor = Core.Name "pathValueConstructor"
_NonParenthesizedPrimaryValueExpressionSpecialCase_propertyReference = Core.Name "propertyReference"
_NonParenthesizedPrimaryValueExpressionSpecialCase_valueQueryExpression = Core.Name "valueQueryExpression"
_NonParenthesizedPrimaryValueExpressionSpecialCase_caseExpression = Core.Name "caseExpression"
_NonParenthesizedPrimaryValueExpressionSpecialCase_castSpecification = Core.Name "castSpecification"
_NonParenthesizedPrimaryValueExpressionSpecialCase_elementIdFunction = Core.Name "elementIdFunction"
_NonParenthesizedPrimaryValueExpressionSpecialCase_letValueExpression = Core.Name "letValueExpression"
data UnsignedValueSpecification =
  UnsignedValueSpecificationUnsignedLiteral UnsignedLiteral |
  UnsignedValueSpecificationGeneralValueSpecification GeneralValueSpecification
  deriving (Eq, Ord, Read, Show)
_UnsignedValueSpecification = Core.Name "openGql.grammar.UnsignedValueSpecification"
_UnsignedValueSpecification_unsignedLiteral = Core.Name "unsignedLiteral"
_UnsignedValueSpecification_generalValueSpecification = Core.Name "generalValueSpecification"
data NonNegativeIntegerSpecification =
  NonNegativeIntegerSpecificationUnsignedInteger UnsignedInteger |
  NonNegativeIntegerSpecificationDynamicParameterSpecification DynamicParameterSpecification
  deriving (Eq, Ord, Read, Show)
_NonNegativeIntegerSpecification = Core.Name "openGql.grammar.NonNegativeIntegerSpecification"
_NonNegativeIntegerSpecification_unsignedInteger = Core.Name "unsignedInteger"
_NonNegativeIntegerSpecification_dynamicParameterSpecification = Core.Name "dynamicParameterSpecification"
data GeneralValueSpecification =
  GeneralValueSpecificationDynamicParameterSpecification DynamicParameterSpecification |
  GeneralValueSpecificationSessionUser
  deriving (Eq, Ord, Read, Show)
_GeneralValueSpecification = Core.Name "openGql.grammar.GeneralValueSpecification"
_GeneralValueSpecification_dynamicParameterSpecification = Core.Name "dynamicParameterSpecification"
_GeneralValueSpecification_sessionUser = Core.Name "sessionUser"
type DynamicParameterSpecification = ParameterName
_DynamicParameterSpecification = Core.Name "openGql.grammar.DynamicParameterSpecification"
data LetValueExpression =
  LetValueExpression {
    letValueExpressionLetVariables :: LetVariableDefinitionList,
    letValueExpressionValueExpression :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_LetValueExpression = Core.Name "openGql.grammar.LetValueExpression"
_LetValueExpression_letVariables = Core.Name "letVariables"
_LetValueExpression_valueExpression = Core.Name "valueExpression"
type ValueQueryExpression = NestedQuerySpecification
_ValueQueryExpression = Core.Name "openGql.grammar.ValueQueryExpression"
data CaseExpression =
  CaseExpressionAbbreviation CaseAbbreviation |
  CaseExpressionSpecification CaseSpecification
  deriving (Eq, Ord, Read, Show)
_CaseExpression = Core.Name "openGql.grammar.CaseExpression"
_CaseExpression_abbreviation = Core.Name "abbreviation"
_CaseExpression_specification = Core.Name "specification"
data CaseAbbreviation =
  CaseAbbreviationNullIf NullIfAbbreviation |
  CaseAbbreviationCoalesce [ValueExpression]
  deriving (Eq, Ord, Read, Show)
_CaseAbbreviation = Core.Name "openGql.grammar.CaseAbbreviation"
_CaseAbbreviation_nullIf = Core.Name "nullIf"
_CaseAbbreviation_coalesce = Core.Name "coalesce"
data NullIfAbbreviation =
  NullIfAbbreviation {
    nullIfAbbreviationFirst :: ValueExpression,
    nullIfAbbreviationSecond :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_NullIfAbbreviation = Core.Name "openGql.grammar.NullIfAbbreviation"
_NullIfAbbreviation_first = Core.Name "first"
_NullIfAbbreviation_second = Core.Name "second"
data CaseSpecification =
  CaseSpecificationSimple SimpleCase |
  CaseSpecificationSearched SearchedCase
  deriving (Eq, Ord, Read, Show)
_CaseSpecification = Core.Name "openGql.grammar.CaseSpecification"
_CaseSpecification_simple = Core.Name "simple"
_CaseSpecification_searched = Core.Name "searched"
data SimpleCase =
  SimpleCase {
    simpleCaseCaseOperand :: CaseOperand,
    simpleCaseWhenClauses :: [SimpleWhenClause],
    simpleCaseElseClause :: (Maybe ElseClause)}
  deriving (Eq, Ord, Read, Show)
_SimpleCase = Core.Name "openGql.grammar.SimpleCase"
_SimpleCase_caseOperand = Core.Name "caseOperand"
_SimpleCase_whenClauses = Core.Name "whenClauses"
_SimpleCase_elseClause = Core.Name "elseClause"
data SearchedCase =
  SearchedCase {
    searchedCaseWhenClauses :: [SearchedWhenClause],
    searchedCaseElseClause :: (Maybe ElseClause)}
  deriving (Eq, Ord, Read, Show)
_SearchedCase = Core.Name "openGql.grammar.SearchedCase"
_SearchedCase_whenClauses = Core.Name "whenClauses"
_SearchedCase_elseClause = Core.Name "elseClause"
data SimpleWhenClause =
  SimpleWhenClause {
    simpleWhenClauseWhenOperands :: WhenOperandList,
    simpleWhenClauseResult :: Result}
  deriving (Eq, Ord, Read, Show)
_SimpleWhenClause = Core.Name "openGql.grammar.SimpleWhenClause"
_SimpleWhenClause_whenOperands = Core.Name "whenOperands"
_SimpleWhenClause_result = Core.Name "result"
data SearchedWhenClause =
  SearchedWhenClause {
    searchedWhenClauseSearchCondition :: SearchCondition,
    searchedWhenClauseResult :: Result}
  deriving (Eq, Ord, Read, Show)
_SearchedWhenClause = Core.Name "openGql.grammar.SearchedWhenClause"
_SearchedWhenClause_searchCondition = Core.Name "searchCondition"
_SearchedWhenClause_result = Core.Name "result"
type ElseClause = Result
_ElseClause = Core.Name "openGql.grammar.ElseClause"
data CaseOperand =
  CaseOperandValueExpression NonParenthesizedPrimaryValueExpression |
  CaseOperandElementReference ElementVariableReference
  deriving (Eq, Ord, Read, Show)
_CaseOperand = Core.Name "openGql.grammar.CaseOperand"
_CaseOperand_valueExpression = Core.Name "valueExpression"
_CaseOperand_elementReference = Core.Name "elementReference"
type WhenOperandList = [WhenOperand]
_WhenOperandList = Core.Name "openGql.grammar.WhenOperandList"
data WhenOperand =
  WhenOperandValueExpression NonParenthesizedPrimaryValueExpression |
  WhenOperandComparison ComparisonPredicatePart2 |
  WhenOperandNullPredicate NullPredicatePart2 |
  WhenOperandValueTypePredicate ValueTypePredicatePart2 |
  WhenOperandNormalizedPredicate NormalizedPredicatePart2 |
  WhenOperandDirectedPredicate DirectedPredicatePart2 |
  WhenOperandLabeledPredicate LabeledPredicatePart2 |
  WhenOperandSourcePredicate SourcePredicate |
  WhenOperandDestinationPredicate DestinationPredicate
  deriving (Eq, Ord, Read, Show)
_WhenOperand = Core.Name "openGql.grammar.WhenOperand"
_WhenOperand_valueExpression = Core.Name "valueExpression"
_WhenOperand_comparison = Core.Name "comparison"
_WhenOperand_nullPredicate = Core.Name "nullPredicate"
_WhenOperand_valueTypePredicate = Core.Name "valueTypePredicate"
_WhenOperand_normalizedPredicate = Core.Name "normalizedPredicate"
_WhenOperand_directedPredicate = Core.Name "directedPredicate"
_WhenOperand_labeledPredicate = Core.Name "labeledPredicate"
_WhenOperand_sourcePredicate = Core.Name "sourcePredicate"
_WhenOperand_destinationPredicate = Core.Name "destinationPredicate"
data Result =
  ResultSimple ResultExpression |
  ResultNullLiteral
  deriving (Eq, Ord, Read, Show)
_Result = Core.Name "openGql.grammar.Result"
_Result_simple = Core.Name "simple"
_Result_nullLiteral = Core.Name "nullLiteral"
type ResultExpression = ValueExpression
_ResultExpression = Core.Name "openGql.grammar.ResultExpression"
data CastSpecification =
  CastSpecification {
    castSpecificationOperand :: CastOperand,
    castSpecificationTarget :: CastTarget}
  deriving (Eq, Ord, Read, Show)
_CastSpecification = Core.Name "openGql.grammar.CastSpecification"
_CastSpecification_operand = Core.Name "operand"
_CastSpecification_target = Core.Name "target"
data CastOperand =
  CastOperandValueExpression ValueExpression |
  CastOperandNullLiteral
  deriving (Eq, Ord, Read, Show)
_CastOperand = Core.Name "openGql.grammar.CastOperand"
_CastOperand_valueExpression = Core.Name "valueExpression"
_CastOperand_nullLiteral = Core.Name "nullLiteral"
type CastTarget = ValueType
_CastTarget = Core.Name "openGql.grammar.CastTarget"
data AggregateFunction =
  AggregateFunctionCountAll |
  AggregateFunctionGeneralSetFunction GeneralSetFunction |
  AggregateFunctionBinarySetFunction BinarySetFunction
  deriving (Eq, Ord, Read, Show)
_AggregateFunction = Core.Name "openGql.grammar.AggregateFunction"
_AggregateFunction_countAll = Core.Name "countAll"
_AggregateFunction_generalSetFunction = Core.Name "generalSetFunction"
_AggregateFunction_binarySetFunction = Core.Name "binarySetFunction"
data GeneralSetFunction =
  GeneralSetFunction {
    generalSetFunctionFunctionType :: GeneralSetFunctionType,
    generalSetFunctionSetQuantifier :: (Maybe SetQuantifier),
    generalSetFunctionValueExpression :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_GeneralSetFunction = Core.Name "openGql.grammar.GeneralSetFunction"
_GeneralSetFunction_functionType = Core.Name "functionType"
_GeneralSetFunction_setQuantifier = Core.Name "setQuantifier"
_GeneralSetFunction_valueExpression = Core.Name "valueExpression"
data BinarySetFunction =
  BinarySetFunction {
    binarySetFunctionFunctionType :: BinarySetFunctionType,
    binarySetFunctionDependentValue :: DependentValueExpression,
    binarySetFunctionIndependentValue :: IndependentValueExpression}
  deriving (Eq, Ord, Read, Show)
_BinarySetFunction = Core.Name "openGql.grammar.BinarySetFunction"
_BinarySetFunction_functionType = Core.Name "functionType"
_BinarySetFunction_dependentValue = Core.Name "dependentValue"
_BinarySetFunction_independentValue = Core.Name "independentValue"
data GeneralSetFunctionType =
  GeneralSetFunctionTypeAvg |
  GeneralSetFunctionTypeCount |
  GeneralSetFunctionTypeMax |
  GeneralSetFunctionTypeMin |
  GeneralSetFunctionTypeSum |
  GeneralSetFunctionTypeCollectList |
  GeneralSetFunctionTypeStddevSamp |
  GeneralSetFunctionTypeStddevPop
  deriving (Eq, Ord, Read, Show)
_GeneralSetFunctionType = Core.Name "openGql.grammar.GeneralSetFunctionType"
_GeneralSetFunctionType_avg = Core.Name "avg"
_GeneralSetFunctionType_count = Core.Name "count"
_GeneralSetFunctionType_max = Core.Name "max"
_GeneralSetFunctionType_min = Core.Name "min"
_GeneralSetFunctionType_sum = Core.Name "sum"
_GeneralSetFunctionType_collectList = Core.Name "collectList"
_GeneralSetFunctionType_stddevSamp = Core.Name "stddevSamp"
_GeneralSetFunctionType_stddevPop = Core.Name "stddevPop"
data SetQuantifier =
  SetQuantifierDistinct |
  SetQuantifierAll
  deriving (Eq, Ord, Read, Show)
_SetQuantifier = Core.Name "openGql.grammar.SetQuantifier"
_SetQuantifier_distinct = Core.Name "distinct"
_SetQuantifier_all = Core.Name "all"
data BinarySetFunctionType =
  BinarySetFunctionTypePercentileCont |
  BinarySetFunctionTypePercentileDisc
  deriving (Eq, Ord, Read, Show)
_BinarySetFunctionType = Core.Name "openGql.grammar.BinarySetFunctionType"
_BinarySetFunctionType_percentileCont = Core.Name "percentileCont"
_BinarySetFunctionType_percentileDisc = Core.Name "percentileDisc"
data DependentValueExpression =
  DependentValueExpression {
    dependentValueExpressionSetQuantifier :: (Maybe SetQuantifier),
    dependentValueExpressionNumericValue :: NumericValueExpression}
  deriving (Eq, Ord, Read, Show)
_DependentValueExpression = Core.Name "openGql.grammar.DependentValueExpression"
_DependentValueExpression_setQuantifier = Core.Name "setQuantifier"
_DependentValueExpression_numericValue = Core.Name "numericValue"
type IndependentValueExpression = NumericValueExpression
_IndependentValueExpression = Core.Name "openGql.grammar.IndependentValueExpression"
type ElementIdFunction = ElementVariableReference
_ElementIdFunction = Core.Name "openGql.grammar.ElementIdFunction"
data PropertyReference =
  PropertyReference {
    propertyReferenceValueExpression :: PrimaryValueExpression,
    propertyReferencePropertyName :: PropertyName}
  deriving (Eq, Ord, Read, Show)
_PropertyReference = Core.Name "openGql.grammar.PropertyReference"
_PropertyReference_valueExpression = Core.Name "valueExpression"
_PropertyReference_propertyName = Core.Name "propertyName"
type BindingVariableReference = BindingVariable
_BindingVariableReference = Core.Name "openGql.grammar.BindingVariableReference"
type PathValueExpression = ValueExpression
_PathValueExpression = Core.Name "openGql.grammar.PathValueExpression"
type PathValueConstructor = PathValueConstructorByEnumeration
_PathValueConstructor = Core.Name "openGql.grammar.PathValueConstructor"
type PathValueConstructorByEnumeration = PathElementList
_PathValueConstructorByEnumeration = Core.Name "openGql.grammar.PathValueConstructorByEnumeration"
data PathElementList =
  PathElementList {
    pathElementListStart :: PathElementListStart,
    pathElementListSteps :: [PathElementListStep]}
  deriving (Eq, Ord, Read, Show)
_PathElementList = Core.Name "openGql.grammar.PathElementList"
_PathElementList_start = Core.Name "start"
_PathElementList_steps = Core.Name "steps"
type PathElementListStart = NodeReferenceValueExpression
_PathElementListStart = Core.Name "openGql.grammar.PathElementListStart"
data PathElementListStep =
  PathElementListStep {
    pathElementListStepEdgeReference :: EdgeReferenceValueExpression,
    pathElementListStepNodeReference :: NodeReferenceValueExpression}
  deriving (Eq, Ord, Read, Show)
_PathElementListStep = Core.Name "openGql.grammar.PathElementListStep"
_PathElementListStep_edgeReference = Core.Name "edgeReference"
_PathElementListStep_nodeReference = Core.Name "nodeReference"
type ListValueExpression = ValueExpression
_ListValueExpression = Core.Name "openGql.grammar.ListValueExpression"
data ListValueFunction =
  ListValueFunctionTrim TrimListFunction |
  ListValueFunctionElements ElementsFunction
  deriving (Eq, Ord, Read, Show)
_ListValueFunction = Core.Name "openGql.grammar.ListValueFunction"
_ListValueFunction_trim = Core.Name "trim"
_ListValueFunction_elements = Core.Name "elements"
data TrimListFunction =
  TrimListFunction {
    trimListFunctionListValue :: ListValueExpression,
    trimListFunctionNumericValue :: NumericValueExpression}
  deriving (Eq, Ord, Read, Show)
_TrimListFunction = Core.Name "openGql.grammar.TrimListFunction"
_TrimListFunction_listValue = Core.Name "listValue"
_TrimListFunction_numericValue = Core.Name "numericValue"
type ElementsFunction = PathValueExpression
_ElementsFunction = Core.Name "openGql.grammar.ElementsFunction"
type ListValueConstructor = ListValueConstructorByEnumeration
_ListValueConstructor = Core.Name "openGql.grammar.ListValueConstructor"
data ListValueConstructorByEnumeration =
  ListValueConstructorByEnumeration {
    listValueConstructorByEnumerationListValueTypeName :: (Maybe ListValueTypeName),
    listValueConstructorByEnumerationElements :: (Maybe ListElementList)}
  deriving (Eq, Ord, Read, Show)
_ListValueConstructorByEnumeration = Core.Name "openGql.grammar.ListValueConstructorByEnumeration"
_ListValueConstructorByEnumeration_listValueTypeName = Core.Name "listValueTypeName"
_ListValueConstructorByEnumeration_elements = Core.Name "elements"
type ListElementList = [ListElement]
_ListElementList = Core.Name "openGql.grammar.ListElementList"
type ListElement = ValueExpression
_ListElement = Core.Name "openGql.grammar.ListElement"
type RecordConstructor = FieldsSpecification
_RecordConstructor = Core.Name "openGql.grammar.RecordConstructor"
type FieldsSpecification = (Maybe FieldList)
_FieldsSpecification = Core.Name "openGql.grammar.FieldsSpecification"
type FieldList = [Field]
_FieldList = Core.Name "openGql.grammar.FieldList"
data Field =
  Field {
    fieldName :: FieldName,
    fieldValue :: ValueExpression}
  deriving (Eq, Ord, Read, Show)
_Field = Core.Name "openGql.grammar.Field"
_Field_name = Core.Name "name"
_Field_value = Core.Name "value"
type TruthValue = BooleanLiteral
_TruthValue = Core.Name "openGql.grammar.TruthValue"
data NumericValueExpression =
  NumericValueExpressionSigned SignedNumericValueExpression |
  NumericValueExpressionMultiplicationOrDivision MulDivNumericValueExpression |
  NumericValueExpressionAdditionOrSubtraction AddSubNumericValueExpression |
  NumericValueExpressionPrimary PrimaryValueExpression |
  NumericValueExpressionFunction NumericValueFunction
  deriving (Eq, Ord, Read, Show)
_NumericValueExpression = Core.Name "openGql.grammar.NumericValueExpression"
_NumericValueExpression_signed = Core.Name "signed"
_NumericValueExpression_multiplicationOrDivision = Core.Name "multiplicationOrDivision"
_NumericValueExpression_additionOrSubtraction = Core.Name "additionOrSubtraction"
_NumericValueExpression_primary = Core.Name "primary"
_NumericValueExpression_function = Core.Name "function"
data SignedNumericValueExpression =
  SignedNumericValueExpression {
    signedNumericValueExpressionSign :: Sign,
    signedNumericValueExpressionExpression :: NumericValueExpression}
  deriving (Eq, Ord, Read, Show)
_SignedNumericValueExpression = Core.Name "openGql.grammar.SignedNumericValueExpression"
_SignedNumericValueExpression_sign = Core.Name "sign"
_SignedNumericValueExpression_expression = Core.Name "expression"
data MulDivNumericValueExpression =
  MulDivNumericValueExpression {
    mulDivNumericValueExpressionLeft :: NumericValueExpression,
    mulDivNumericValueExpressionOperator :: MultDivOperator,
    mulDivNumericValueExpressionRight :: NumericValueExpression}
  deriving (Eq, Ord, Read, Show)
_MulDivNumericValueExpression = Core.Name "openGql.grammar.MulDivNumericValueExpression"
_MulDivNumericValueExpression_left = Core.Name "left"
_MulDivNumericValueExpression_operator = Core.Name "operator"
_MulDivNumericValueExpression_right = Core.Name "right"
data AddSubNumericValueExpression =
  AddSubNumericValueExpression {
    addSubNumericValueExpressionLeft :: NumericValueExpression,
    addSubNumericValueExpressionOperator :: AddSubtractOperator,
    addSubNumericValueExpressionRight :: NumericValueExpression}
  deriving (Eq, Ord, Read, Show)
_AddSubNumericValueExpression = Core.Name "openGql.grammar.AddSubNumericValueExpression"
_AddSubNumericValueExpression_left = Core.Name "left"
_AddSubNumericValueExpression_operator = Core.Name "operator"
_AddSubNumericValueExpression_right = Core.Name "right"
data NumericValueFunction =
  NumericValueFunctionLength LengthExpression |
  NumericValueFunctionCardinality CardinalityExpression |
  NumericValueFunctionAbsoluteValue AbsoluteValueExpression |
  NumericValueFunctionModulus ModulusExpression |
  NumericValueFunctionTrigonometric TrigonometricFunction |
  NumericValueFunctionLogarithm GeneralLogarithmFunction |
  NumericValueFunctionCommonLogarithm CommonLogarithm |
  NumericValueFunctionNaturalLogarithm NaturalLogarithm |
  NumericValueFunctionExponential ExponentialFunction |
  NumericValueFunctionPower PowerFunction |
  NumericValueFunctionSquareRoot SquareRoot |
  NumericValueFunctionFloor FloorFunction |
  NumericValueFunctionCeiling CeilingFunction
  deriving (Eq, Ord, Read, Show)
_NumericValueFunction = Core.Name "openGql.grammar.NumericValueFunction"
_NumericValueFunction_length = Core.Name "length"
_NumericValueFunction_cardinality = Core.Name "cardinality"
_NumericValueFunction_absoluteValue = Core.Name "absoluteValue"
_NumericValueFunction_modulus = Core.Name "modulus"
_NumericValueFunction_trigonometric = Core.Name "trigonometric"
_NumericValueFunction_logarithm = Core.Name "logarithm"
_NumericValueFunction_commonLogarithm = Core.Name "commonLogarithm"
_NumericValueFunction_naturalLogarithm = Core.Name "naturalLogarithm"
_NumericValueFunction_exponential = Core.Name "exponential"
_NumericValueFunction_power = Core.Name "power"
_NumericValueFunction_squareRoot = Core.Name "squareRoot"
_NumericValueFunction_floor = Core.Name "floor"
_NumericValueFunction_ceiling = Core.Name "ceiling"
data LengthExpression =
  LengthExpressionChar CharLengthExpression |
  LengthExpressionByte ByteLengthExpression |
  LengthExpressionPath PathLengthExpression
  deriving (Eq, Ord, Read, Show)
_LengthExpression = Core.Name "openGql.grammar.LengthExpression"
_LengthExpression_char = Core.Name "char"
_LengthExpression_byte = Core.Name "byte"
_LengthExpression_path = Core.Name "path"
data CardinalityExpression =
  CardinalityExpressionCardinality CardinalityArgumentExpression |
  CardinalityExpressionSize ListValueExpression
  deriving (Eq, Ord, Read, Show)
_CardinalityExpression = Core.Name "openGql.grammar.CardinalityExpression"
_CardinalityExpression_cardinality = Core.Name "cardinality"
_CardinalityExpression_size = Core.Name "size"
type CardinalityArgumentExpression = ValueExpression
_CardinalityArgumentExpression = Core.Name "openGql.grammar.CardinalityArgumentExpression"
type CharLengthExpression = CharacterStringValueExpression
_CharLengthExpression = Core.Name "openGql.grammar.CharLengthExpression"
type ByteLengthExpression = ByteStringValueExpression
_ByteLengthExpression = Core.Name "openGql.grammar.ByteLengthExpression"
type PathLengthExpression = PathValueExpression
_PathLengthExpression = Core.Name "openGql.grammar.PathLengthExpression"
type AbsoluteValueExpression = ValueExpression
_AbsoluteValueExpression = Core.Name "openGql.grammar.AbsoluteValueExpression"
data ModulusExpression =
  ModulusExpression {
    modulusExpressionDividend :: NumericValueExpressionDividend,
    modulusExpressionDivisor :: NumericValueExpressionDivisor}
  deriving (Eq, Ord, Read, Show)
_ModulusExpression = Core.Name "openGql.grammar.ModulusExpression"
_ModulusExpression_dividend = Core.Name "dividend"
_ModulusExpression_divisor = Core.Name "divisor"
type NumericValueExpressionDividend = NumericValueExpression
_NumericValueExpressionDividend = Core.Name "openGql.grammar.NumericValueExpressionDividend"
type NumericValueExpressionDivisor = NumericValueExpression
_NumericValueExpressionDivisor = Core.Name "openGql.grammar.NumericValueExpressionDivisor"
data TrigonometricFunction =
  TrigonometricFunction {
    trigonometricFunctionName :: TrigonometricFunctionName,
    trigonometricFunctionValue :: NumericValueExpression}
  deriving (Eq, Ord, Read, Show)
_TrigonometricFunction = Core.Name "openGql.grammar.TrigonometricFunction"
_TrigonometricFunction_name = Core.Name "name"
_TrigonometricFunction_value = Core.Name "value"
data TrigonometricFunctionName =
  TrigonometricFunctionNameSin |
  TrigonometricFunctionNameCos |
  TrigonometricFunctionNameTan |
  TrigonometricFunctionNameCot |
  TrigonometricFunctionNameSinh |
  TrigonometricFunctionNameCosh |
  TrigonometricFunctionNameTanh |
  TrigonometricFunctionNameAsin |
  TrigonometricFunctionNameAcos |
  TrigonometricFunctionNameAtan |
  TrigonometricFunctionNameDegrees |
  TrigonometricFunctionNameRadians
  deriving (Eq, Ord, Read, Show)
_TrigonometricFunctionName = Core.Name "openGql.grammar.TrigonometricFunctionName"
_TrigonometricFunctionName_sin = Core.Name "sin"
_TrigonometricFunctionName_cos = Core.Name "cos"
_TrigonometricFunctionName_tan = Core.Name "tan"
_TrigonometricFunctionName_cot = Core.Name "cot"
_TrigonometricFunctionName_sinh = Core.Name "sinh"
_TrigonometricFunctionName_cosh = Core.Name "cosh"
_TrigonometricFunctionName_tanh = Core.Name "tanh"
_TrigonometricFunctionName_asin = Core.Name "asin"
_TrigonometricFunctionName_acos = Core.Name "acos"
_TrigonometricFunctionName_atan = Core.Name "atan"
_TrigonometricFunctionName_degrees = Core.Name "degrees"
_TrigonometricFunctionName_radians = Core.Name "radians"
data GeneralLogarithmFunction =
  GeneralLogarithmFunction {
    generalLogarithmFunctionBase :: GeneralLogarithmBase,
    generalLogarithmFunctionArgument :: GeneralLogarithmArgument}
  deriving (Eq, Ord, Read, Show)
_GeneralLogarithmFunction = Core.Name "openGql.grammar.GeneralLogarithmFunction"
_GeneralLogarithmFunction_base = Core.Name "base"
_GeneralLogarithmFunction_argument = Core.Name "argument"
type GeneralLogarithmBase = NumericValueExpression
_GeneralLogarithmBase = Core.Name "openGql.grammar.GeneralLogarithmBase"
type GeneralLogarithmArgument = NumericValueExpression
_GeneralLogarithmArgument = Core.Name "openGql.grammar.GeneralLogarithmArgument"
type CommonLogarithm = NumericValueExpression
_CommonLogarithm = Core.Name "openGql.grammar.CommonLogarithm"
type NaturalLogarithm = NumericValueExpression
_NaturalLogarithm = Core.Name "openGql.grammar.NaturalLogarithm"
type ExponentialFunction = NumericValueExpression
_ExponentialFunction = Core.Name "openGql.grammar.ExponentialFunction"
data PowerFunction =
  PowerFunction {
    powerFunctionBase :: NumericValueExpressionBase,
    powerFunctionExponent :: NumericValueExpressionExponent}
  deriving (Eq, Ord, Read, Show)
_PowerFunction = Core.Name "openGql.grammar.PowerFunction"
_PowerFunction_base = Core.Name "base"
_PowerFunction_exponent = Core.Name "exponent"
type NumericValueExpressionBase = NumericValueExpression
_NumericValueExpressionBase = Core.Name "openGql.grammar.NumericValueExpressionBase"
type NumericValueExpressionExponent = NumericValueExpression
_NumericValueExpressionExponent = Core.Name "openGql.grammar.NumericValueExpressionExponent"
type SquareRoot = NumericValueExpression
_SquareRoot = Core.Name "openGql.grammar.SquareRoot"
type FloorFunction = NumericValueExpression
_FloorFunction = Core.Name "openGql.grammar.FloorFunction"
type CeilingFunction = NumericValueExpression
_CeilingFunction = Core.Name "openGql.grammar.CeilingFunction"
type CharacterStringValueExpression = ValueExpression
_CharacterStringValueExpression = Core.Name "openGql.grammar.CharacterStringValueExpression"
type ByteStringValueExpression = ValueExpression
_ByteStringValueExpression = Core.Name "openGql.grammar.ByteStringValueExpression"
data TrimOperands =
  TrimOperands {
    trimOperandsSpecification :: (Maybe TrimSpecification),
    trimOperandsCharacterOrByteString :: (Maybe TrimCharacterOrByteString),
    trimOperandsSource :: TrimCharacterOrByteStringSource}
  deriving (Eq, Ord, Read, Show)
_TrimOperands = Core.Name "openGql.grammar.TrimOperands"
_TrimOperands_specification = Core.Name "specification"
_TrimOperands_characterOrByteString = Core.Name "characterOrByteString"
_TrimOperands_source = Core.Name "source"
type TrimCharacterOrByteStringSource = ValueExpression
_TrimCharacterOrByteStringSource = Core.Name "openGql.grammar.TrimCharacterOrByteStringSource"
data TrimSpecification =
  TrimSpecificationLeading |
  TrimSpecificationTrailing |
  TrimSpecificationBoth
  deriving (Eq, Ord, Read, Show)
_TrimSpecification = Core.Name "openGql.grammar.TrimSpecification"
_TrimSpecification_leading = Core.Name "leading"
_TrimSpecification_trailing = Core.Name "trailing"
_TrimSpecification_both = Core.Name "both"
type TrimCharacterOrByteString = ValueExpression
_TrimCharacterOrByteString = Core.Name "openGql.grammar.TrimCharacterOrByteString"
data NormalForm =
  NormalFormNfc |
  NormalFormNfd |
  NormalFormNfkc |
  NormalFormNfkd
  deriving (Eq, Ord, Read, Show)
_NormalForm = Core.Name "openGql.grammar.NormalForm"
_NormalForm_nfc = Core.Name "nfc"
_NormalForm_nfd = Core.Name "nfd"
_NormalForm_nfkc = Core.Name "nfkc"
_NormalForm_nfkd = Core.Name "nfkd"
type StringLength = NumericValueExpression
_StringLength = Core.Name "openGql.grammar.StringLength"
type DatetimeValueExpression = ValueExpression
_DatetimeValueExpression = Core.Name "openGql.grammar.DatetimeValueExpression"
data DatetimeValueFunction =
  DatetimeValueFunctionDateFunction DateFunction |
  DatetimeValueFunctionTimeFunction TimeFunction |
  DatetimeValueFunctionDatetimeFunction DatetimeFunction |
  DatetimeValueFunctionLocaltimeFunction LocaltimeFunction |
  DatetimeValueFunctionLocaldatetimeFunction LocaldatetimeFunction
  deriving (Eq, Ord, Read, Show)
_DatetimeValueFunction = Core.Name "openGql.grammar.DatetimeValueFunction"
_DatetimeValueFunction_dateFunction = Core.Name "dateFunction"
_DatetimeValueFunction_timeFunction = Core.Name "timeFunction"
_DatetimeValueFunction_datetimeFunction = Core.Name "datetimeFunction"
_DatetimeValueFunction_localtimeFunction = Core.Name "localtimeFunction"
_DatetimeValueFunction_localdatetimeFunction = Core.Name "localdatetimeFunction"
data DateFunction =
  DateFunctionCurrentDate |
  DateFunctionDateWithParams (Maybe DateFunctionParameters)
  deriving (Eq, Ord, Read, Show)
_DateFunction = Core.Name "openGql.grammar.DateFunction"
_DateFunction_currentDate = Core.Name "currentDate"
_DateFunction_dateWithParams = Core.Name "dateWithParams"
data TimeFunction =
  TimeFunctionCurrentTime |
  TimeFunctionZonedTimeWithParams (Maybe TimeFunctionParameters)
  deriving (Eq, Ord, Read, Show)
_TimeFunction = Core.Name "openGql.grammar.TimeFunction"
_TimeFunction_currentTime = Core.Name "currentTime"
_TimeFunction_zonedTimeWithParams = Core.Name "zonedTimeWithParams"
type LocaltimeFunction = (Maybe TimeFunctionParameters)
_LocaltimeFunction = Core.Name "openGql.grammar.LocaltimeFunction"
data DatetimeFunction =
  DatetimeFunctionCurrentTimestamp |
  DatetimeFunctionZonedDatetimeWithParams (Maybe DatetimeFunctionParameters)
  deriving (Eq, Ord, Read, Show)
_DatetimeFunction = Core.Name "openGql.grammar.DatetimeFunction"
_DatetimeFunction_currentTimestamp = Core.Name "currentTimestamp"
_DatetimeFunction_zonedDatetimeWithParams = Core.Name "zonedDatetimeWithParams"
data LocaldatetimeFunction =
  LocaldatetimeFunctionLocalTimestamp |
  LocaldatetimeFunctionLocalDatetimeWithParams (Maybe DatetimeFunctionParameters)
  deriving (Eq, Ord, Read, Show)
_LocaldatetimeFunction = Core.Name "openGql.grammar.LocaldatetimeFunction"
_LocaldatetimeFunction_localTimestamp = Core.Name "localTimestamp"
_LocaldatetimeFunction_localDatetimeWithParams = Core.Name "localDatetimeWithParams"
data DateFunctionParameters =
  DateFunctionParametersDateString DateString |
  DateFunctionParametersRecordConstructor RecordConstructor
  deriving (Eq, Ord, Read, Show)
_DateFunctionParameters = Core.Name "openGql.grammar.DateFunctionParameters"
_DateFunctionParameters_dateString = Core.Name "dateString"
_DateFunctionParameters_recordConstructor = Core.Name "recordConstructor"
data TimeFunctionParameters =
  TimeFunctionParametersTimeString TimeString |
  TimeFunctionParametersRecordConstructor RecordConstructor
  deriving (Eq, Ord, Read, Show)
_TimeFunctionParameters = Core.Name "openGql.grammar.TimeFunctionParameters"
_TimeFunctionParameters_timeString = Core.Name "timeString"
_TimeFunctionParameters_recordConstructor = Core.Name "recordConstructor"
data DatetimeFunctionParameters =
  DatetimeFunctionParametersDatetimeString DatetimeString |
  DatetimeFunctionParametersRecordConstructor RecordConstructor
  deriving (Eq, Ord, Read, Show)
_DatetimeFunctionParameters = Core.Name "openGql.grammar.DatetimeFunctionParameters"
_DatetimeFunctionParameters_datetimeString = Core.Name "datetimeString"
_DatetimeFunctionParameters_recordConstructor = Core.Name "recordConstructor"
type DurationValueExpression = ValueExpression
_DurationValueExpression = Core.Name "openGql.grammar.DurationValueExpression"
data DatetimeSubtraction =
  DatetimeSubtraction {
    datetimeSubtractionParameters :: DatetimeSubtractionParameters,
    datetimeSubtractionTemporalDurationQualifier :: (Maybe TemporalDurationQualifier)}
  deriving (Eq, Ord, Read, Show)
_DatetimeSubtraction = Core.Name "openGql.grammar.DatetimeSubtraction"
_DatetimeSubtraction_parameters = Core.Name "parameters"
_DatetimeSubtraction_temporalDurationQualifier = Core.Name "temporalDurationQualifier"
data DatetimeSubtractionParameters =
  DatetimeSubtractionParameters {
    datetimeSubtractionParametersExpression1 :: DatetimeValueExpression1,
    datetimeSubtractionParametersExpression2 :: DatetimeValueExpression2}
  deriving (Eq, Ord, Read, Show)
_DatetimeSubtractionParameters = Core.Name "openGql.grammar.DatetimeSubtractionParameters"
_DatetimeSubtractionParameters_expression1 = Core.Name "expression1"
_DatetimeSubtractionParameters_expression2 = Core.Name "expression2"
type DatetimeValueExpression1 = DatetimeValueExpression
_DatetimeValueExpression1 = Core.Name "openGql.grammar.DatetimeValueExpression1"
type DatetimeValueExpression2 = DatetimeValueExpression
_DatetimeValueExpression2 = Core.Name "openGql.grammar.DatetimeValueExpression2"
data DurationValueFunction =
  DurationValueFunctionDurationFunction DurationFunction |
  DurationValueFunctionAbsoluteValue AbsoluteValueExpression
  deriving (Eq, Ord, Read, Show)
_DurationValueFunction = Core.Name "openGql.grammar.DurationValueFunction"
_DurationValueFunction_durationFunction = Core.Name "durationFunction"
_DurationValueFunction_absoluteValue = Core.Name "absoluteValue"
type DurationFunction = DurationFunctionParameters
_DurationFunction = Core.Name "openGql.grammar.DurationFunction"
data DurationFunctionParameters =
  DurationFunctionParametersDurationString DurationString |
  DurationFunctionParametersRecordConstructor RecordConstructor
  deriving (Eq, Ord, Read, Show)
_DurationFunctionParameters = Core.Name "openGql.grammar.DurationFunctionParameters"
_DurationFunctionParameters_durationString = Core.Name "durationString"
_DurationFunctionParameters_recordConstructor = Core.Name "recordConstructor"
type ObjectName = String
_ObjectName = Core.Name "openGql.grammar.ObjectName"
type ObjectNameOrBindingVariable = String
_ObjectNameOrBindingVariable = Core.Name "openGql.grammar.ObjectNameOrBindingVariable"
type DirectoryName = String
_DirectoryName = Core.Name "openGql.grammar.DirectoryName"
type SchemaName = String
_SchemaName = Core.Name "openGql.grammar.SchemaName"
type GraphName = String
_GraphName = Core.Name "openGql.grammar.GraphName"
type DelimitedGraphName = String
_DelimitedGraphName = Core.Name "openGql.grammar.DelimitedGraphName"
type GraphTypeName = String
_GraphTypeName = Core.Name "openGql.grammar.GraphTypeName"
type NodeTypeName = String
_NodeTypeName = Core.Name "openGql.grammar.NodeTypeName"
type EdgeTypeName = String
_EdgeTypeName = Core.Name "openGql.grammar.EdgeTypeName"
data BindingTableName =
  BindingTableNameRegularIdentifier String |
  BindingTableNameDelimitedBindingTableName DelimitedBindingTableName
  deriving (Eq, Ord, Read, Show)
_BindingTableName = Core.Name "openGql.grammar.BindingTableName"
_BindingTableName_regularIdentifier = Core.Name "regularIdentifier"
_BindingTableName_delimitedBindingTableName = Core.Name "delimitedBindingTableName"
type DelimitedBindingTableName = String
_DelimitedBindingTableName = Core.Name "openGql.grammar.DelimitedBindingTableName"
type ProcedureName = String
_ProcedureName = Core.Name "openGql.grammar.ProcedureName"
type LabelName = String
_LabelName = Core.Name "openGql.grammar.LabelName"
type PropertyName = String
_PropertyName = Core.Name "openGql.grammar.PropertyName"
type FieldName = String
_FieldName = Core.Name "openGql.grammar.FieldName"
type ElementVariable = BindingVariable
_ElementVariable = Core.Name "openGql.grammar.ElementVariable"
type PathVariable = BindingVariable
_PathVariable = Core.Name "openGql.grammar.PathVariable"
type SubpathVariable = String
_SubpathVariable = Core.Name "openGql.grammar.SubpathVariable"
type BindingVariable = String
_BindingVariable = Core.Name "openGql.grammar.BindingVariable"
data UnsignedLiteral =
  UnsignedLiteralNumeric UnsignedNumericLiteral |
  UnsignedLiteralGeneral GeneralLiteral
  deriving (Eq, Ord, Read, Show)
_UnsignedLiteral = Core.Name "openGql.grammar.UnsignedLiteral"
_UnsignedLiteral_numeric = Core.Name "numeric"
_UnsignedLiteral_general = Core.Name "general"
data GeneralLiteral =
  GeneralLiteralBoolean BooleanLiteral |
  GeneralLiteralCharacterString CharacterStringLiteral |
  GeneralLiteralByteString ByteStringLiteral |
  GeneralLiteralTemporal TemporalLiteral |
  GeneralLiteralDuration DurationLiteral |
  GeneralLiteralNullLiteral NullLiteral |
  GeneralLiteralList ListLiteral |
  GeneralLiteralRecord RecordLiteral
  deriving (Eq, Ord, Read, Show)
_GeneralLiteral = Core.Name "openGql.grammar.GeneralLiteral"
_GeneralLiteral_boolean = Core.Name "boolean"
_GeneralLiteral_characterString = Core.Name "characterString"
_GeneralLiteral_byteString = Core.Name "byteString"
_GeneralLiteral_temporal = Core.Name "temporal"
_GeneralLiteral_duration = Core.Name "duration"
_GeneralLiteral_nullLiteral = Core.Name "nullLiteral"
_GeneralLiteral_list = Core.Name "list"
_GeneralLiteral_record = Core.Name "record"
data TemporalLiteral =
  TemporalLiteralDate DateLiteral |
  TemporalLiteralTime TimeLiteral |
  TemporalLiteralDatetime DatetimeLiteral
  deriving (Eq, Ord, Read, Show)
_TemporalLiteral = Core.Name "openGql.grammar.TemporalLiteral"
_TemporalLiteral_date = Core.Name "date"
_TemporalLiteral_time = Core.Name "time"
_TemporalLiteral_datetime = Core.Name "datetime"
type DateLiteral = DateString
_DateLiteral = Core.Name "openGql.grammar.DateLiteral"
type TimeLiteral = TimeString
_TimeLiteral = Core.Name "openGql.grammar.TimeLiteral"
type DatetimeLiteral = DatetimeString
_DatetimeLiteral = Core.Name "openGql.grammar.DatetimeLiteral"
type ListLiteral = ListValueConstructorByEnumeration
_ListLiteral = Core.Name "openGql.grammar.ListLiteral"
type RecordLiteral = RecordConstructor
_RecordLiteral = Core.Name "openGql.grammar.RecordLiteral"
type Identifier = String
_Identifier = Core.Name "openGql.grammar.Identifier"
type RegularIdentifier = String
_RegularIdentifier = Core.Name "openGql.grammar.RegularIdentifier"
type TimeZoneString = CharacterStringLiteral
_TimeZoneString = Core.Name "openGql.grammar.TimeZoneString"
type CharacterStringLiteral = String
_CharacterStringLiteral = Core.Name "openGql.grammar.CharacterStringLiteral"
data UnsignedNumericLiteral =
  UnsignedNumericLiteralExact ExactNumericLiteral |
  UnsignedNumericLiteralApproximate ApproximateNumericLiteral
  deriving (Eq, Ord, Read, Show)
_UnsignedNumericLiteral = Core.Name "openGql.grammar.UnsignedNumericLiteral"
_UnsignedNumericLiteral_exact = Core.Name "exact"
_UnsignedNumericLiteral_approximate = Core.Name "approximate"
data ExactNumericLiteral =
  ExactNumericLiteralScientificWithSuffix String |
  ExactNumericLiteralCommonWithSuffix String |
  ExactNumericLiteralCommonWithoutSuffix String |
  ExactNumericLiteralIntegerWithSuffix String |
  ExactNumericLiteralUnsignedInteger UnsignedInteger
  deriving (Eq, Ord, Read, Show)
_ExactNumericLiteral = Core.Name "openGql.grammar.ExactNumericLiteral"
_ExactNumericLiteral_scientificWithSuffix = Core.Name "scientificWithSuffix"
_ExactNumericLiteral_commonWithSuffix = Core.Name "commonWithSuffix"
_ExactNumericLiteral_commonWithoutSuffix = Core.Name "commonWithoutSuffix"
_ExactNumericLiteral_integerWithSuffix = Core.Name "integerWithSuffix"
_ExactNumericLiteral_unsignedInteger = Core.Name "unsignedInteger"
data ApproximateNumericLiteral =
  ApproximateNumericLiteralScientificWithSuffix String |
  ApproximateNumericLiteralScientificWithoutSuffix String |
  ApproximateNumericLiteralCommonWithSuffix String |
  ApproximateNumericLiteralIntegerWithSuffix String
  deriving (Eq, Ord, Read, Show)
_ApproximateNumericLiteral = Core.Name "openGql.grammar.ApproximateNumericLiteral"
_ApproximateNumericLiteral_scientificWithSuffix = Core.Name "scientificWithSuffix"
_ApproximateNumericLiteral_scientificWithoutSuffix = Core.Name "scientificWithoutSuffix"
_ApproximateNumericLiteral_commonWithSuffix = Core.Name "commonWithSuffix"
_ApproximateNumericLiteral_integerWithSuffix = Core.Name "integerWithSuffix"
data UnsignedInteger =
  UnsignedIntegerDecimal String |
  UnsignedIntegerHexadecimal String |
  UnsignedIntegerOctal String |
  UnsignedIntegerBinary String
  deriving (Eq, Ord, Read, Show)
_UnsignedInteger = Core.Name "openGql.grammar.UnsignedInteger"
_UnsignedInteger_decimal = Core.Name "decimal"
_UnsignedInteger_hexadecimal = Core.Name "hexadecimal"
_UnsignedInteger_octal = Core.Name "octal"
_UnsignedInteger_binary = Core.Name "binary"
type UnsignedDecimalInteger = String
_UnsignedDecimalInteger = Core.Name "openGql.grammar.UnsignedDecimalInteger"
type NullLiteral = ()
_NullLiteral = Core.Name "openGql.grammar.NullLiteral"
type DateString = CharacterStringLiteral
_DateString = Core.Name "openGql.grammar.DateString"
type TimeString = CharacterStringLiteral
_TimeString = Core.Name "openGql.grammar.TimeString"
type DatetimeString = CharacterStringLiteral
_DatetimeString = Core.Name "openGql.grammar.DatetimeString"
type DurationLiteral = DurationString
_DurationLiteral = Core.Name "openGql.grammar.DurationLiteral"
type DurationString = CharacterStringLiteral
_DurationString = Core.Name "openGql.grammar.DurationString"
data NodeSynonym =
  NodeSynonymNode |
  NodeSynonymVertex
  deriving (Eq, Ord, Read, Show)
_NodeSynonym = Core.Name "openGql.grammar.NodeSynonym"
_NodeSynonym_node = Core.Name "node"
_NodeSynonym_vertex = Core.Name "vertex"
data EdgesSynonym =
  EdgesSynonymEdges |
  EdgesSynonymRelationships
  deriving (Eq, Ord, Read, Show)
_EdgesSynonym = Core.Name "openGql.grammar.EdgesSynonym"
_EdgesSynonym_edges = Core.Name "edges"
_EdgesSynonym_relationships = Core.Name "relationships"
data EdgeSynonym =
  EdgeSynonymEdge |
  EdgeSynonymRelationship
  deriving (Eq, Ord, Read, Show)
_EdgeSynonym = Core.Name "openGql.grammar.EdgeSynonym"
_EdgeSynonym_edge = Core.Name "edge"
_EdgeSynonym_relationship = Core.Name "relationship"
data Implies =
  ImpliesRightDoubleArrow |
  ImpliesImplies
  deriving (Eq, Ord, Read, Show)
_Implies = Core.Name "openGql.grammar.Implies"
_Implies_rightDoubleArrow = Core.Name "rightDoubleArrow"
_Implies_implies = Core.Name "implies"
type ParameterName = String
_ParameterName = Core.Name "openGql.grammar.ParameterName"
data BooleanLiteral =
  BooleanLiteralTrue |
  BooleanLiteralFalse |
  BooleanLiteralUnknown
  deriving (Eq, Ord, Read, Show)
_BooleanLiteral = Core.Name "openGql.grammar.BooleanLiteral"
_BooleanLiteral_true = Core.Name "true"
_BooleanLiteral_false = Core.Name "false"
_BooleanLiteral_unknown = Core.Name "unknown"
type ByteStringLiteral = String
_ByteStringLiteral = Core.Name "openGql.grammar.ByteStringLiteral"