packages feed

hydra-0.5.0: src/gen-main/haskell/Hydra/Langs/Cypher/Features.hs

-- | A model for characterizing OpenCypher queries and implementations in terms of included features.

module Hydra.Langs.Cypher.Features where

import qualified Hydra.Core as Core
import Data.Int
import Data.List as L
import Data.Map as M
import Data.Set as S

-- | A set of features for aggregation functions.
data AggregateFeatures = 
  AggregateFeatures {
    -- | Whether to expect the avg() / AVG aggregate function.
    aggregateFeaturesAvg :: Bool,
    -- | Whether to expect the collect() / COLLECT aggregate function.
    aggregateFeaturesCollect :: Bool,
    -- | Whether to expect the count() / COUNT aggregate function.
    aggregateFeaturesCount :: Bool,
    -- | Whether to expect the max() / MAX aggregate function.
    aggregateFeaturesMax :: Bool,
    -- | Whether to expect the min() / MIN aggregate function.
    aggregateFeaturesMin :: Bool,
    -- | Whether to expect the percentileCont() function.
    aggregateFeaturesPercentileCont :: Bool,
    -- | Whether to expect the percentileDisc() function.
    aggregateFeaturesPercentileDisc :: Bool,
    -- | Whether to expect the stdev() function.
    aggregateFeaturesStdev :: Bool,
    -- | Whether to expect the sum() / SUM aggregate function.
    aggregateFeaturesSum :: Bool}
  deriving (Eq, Ord, Read, Show)

_AggregateFeatures = (Core.Name "hydra/langs/cypher/features.AggregateFeatures")

_AggregateFeatures_avg = (Core.Name "avg")

_AggregateFeatures_collect = (Core.Name "collect")

_AggregateFeatures_count = (Core.Name "count")

_AggregateFeatures_max = (Core.Name "max")

_AggregateFeatures_min = (Core.Name "min")

_AggregateFeatures_percentileCont = (Core.Name "percentileCont")

_AggregateFeatures_percentileDisc = (Core.Name "percentileDisc")

_AggregateFeatures_stdev = (Core.Name "stdev")

_AggregateFeatures_sum = (Core.Name "sum")

-- | A set of features for arithmetic operations.
data ArithmeticFeatures = 
  ArithmeticFeatures {
    -- | Whether to expect the + operator.
    arithmeticFeaturesPlus :: Bool,
    -- | Whether to expect the - operator.
    arithmeticFeaturesMinus :: Bool,
    -- | Whether to expect the * operator.
    arithmeticFeaturesMultiply :: Bool,
    -- | Whether to expect the / operator.
    arithmeticFeaturesDivide :: Bool,
    -- | Whether to expect the % operator.
    arithmeticFeaturesModulus :: Bool,
    -- | Whether to expect the ^ operator.
    arithmeticFeaturesPowerOf :: Bool}
  deriving (Eq, Ord, Read, Show)

_ArithmeticFeatures = (Core.Name "hydra/langs/cypher/features.ArithmeticFeatures")

_ArithmeticFeatures_plus = (Core.Name "plus")

_ArithmeticFeatures_minus = (Core.Name "minus")

_ArithmeticFeatures_multiply = (Core.Name "multiply")

_ArithmeticFeatures_divide = (Core.Name "divide")

_ArithmeticFeatures_modulus = (Core.Name "modulus")

_ArithmeticFeatures_powerOf = (Core.Name "powerOf")

-- | A set of features for various kinds of atomic expressions.
data AtomFeatures = 
  AtomFeatures {
    -- | Whether to expect CASE expressions.
    atomFeaturesCaseExpression :: Bool,
    -- | Whether to expect the COUNT (*) expression.
    atomFeaturesCount :: Bool,
    -- | Whether to expect existential subqueries.
    atomFeaturesExistentialSubquery :: Bool,
    -- | Whether to expect function invocation.
    atomFeaturesFunctionInvocation :: Bool,
    -- | Whether to expect lists, and if so, which specific features
    atomFeaturesList :: (Maybe ListFeatures),
    -- | Whether to expect literal values, and if so, which specific features
    atomFeaturesLiteral :: (Maybe LiteralFeatures),
    -- | Whether to expect parameter expressions.
    atomFeaturesParameter :: Bool,
    -- | Whether to expect pattern comprehensions.
    atomFeaturesPatternComprehension :: Bool,
    -- | Whether to expect relationship patterns as subexpressions.
    atomFeaturesPatternPredicate :: Bool,
    -- | Whether to expect quantifier expressions, and if so, which specific features
    atomFeaturesQuantifier :: (Maybe QuantifierFeatures),
    -- | Whether to expect variable expressions (note: included by most if not all implementations).
    atomFeaturesVariable :: Bool}
  deriving (Eq, Ord, Read, Show)

_AtomFeatures = (Core.Name "hydra/langs/cypher/features.AtomFeatures")

_AtomFeatures_caseExpression = (Core.Name "caseExpression")

_AtomFeatures_count = (Core.Name "count")

_AtomFeatures_existentialSubquery = (Core.Name "existentialSubquery")

_AtomFeatures_functionInvocation = (Core.Name "functionInvocation")

_AtomFeatures_list = (Core.Name "list")

_AtomFeatures_literal = (Core.Name "literal")

_AtomFeatures_parameter = (Core.Name "parameter")

_AtomFeatures_patternComprehension = (Core.Name "patternComprehension")

_AtomFeatures_patternPredicate = (Core.Name "patternPredicate")

_AtomFeatures_quantifier = (Core.Name "quantifier")

_AtomFeatures_variable = (Core.Name "variable")

-- | A set of features for comparison operators and functions.
data ComparisonFeatures = 
  ComparisonFeatures {
    -- | Whether to expect the = comparison operator.
    comparisonFeaturesEqual :: Bool,
    -- | Whether to expect the > comparison operator.
    comparisonFeaturesGreaterThan :: Bool,
    -- | Whether to expect the >= comparison operator.
    comparisonFeaturesGreaterThanOrEqual :: Bool,
    -- | Whether to expect the < comparison operator.
    comparisonFeaturesLessThan :: Bool,
    -- | Whether to expect the <= comparison operator.
    comparisonFeaturesLessThanOrEqual :: Bool,
    -- | Whether to expect the <> comparison operator.
    comparisonFeaturesNotEqual :: Bool,
    -- | Whether to expect the nullIf() function.
    comparisonFeaturesNullIf :: Bool}
  deriving (Eq, Ord, Read, Show)

_ComparisonFeatures = (Core.Name "hydra/langs/cypher/features.ComparisonFeatures")

_ComparisonFeatures_equal = (Core.Name "equal")

_ComparisonFeatures_greaterThan = (Core.Name "greaterThan")

_ComparisonFeatures_greaterThanOrEqual = (Core.Name "greaterThanOrEqual")

_ComparisonFeatures_lessThan = (Core.Name "lessThan")

_ComparisonFeatures_lessThanOrEqual = (Core.Name "lessThanOrEqual")

_ComparisonFeatures_notEqual = (Core.Name "notEqual")

_ComparisonFeatures_nullIf = (Core.Name "nullIf")

-- | A set of features which characterize an OpenCypher query or implementation. Any features which are omitted from the set are assumed to be unsupported or nonrequired.
data CypherFeatures = 
  CypherFeatures {
    -- | Whether to expect aggregate functions, and if so, which specific features
    cypherFeaturesAggregate :: (Maybe AggregateFeatures),
    -- | Whether to expect arithmetic operations, and if so, which specific features
    cypherFeaturesArithmetic :: (Maybe ArithmeticFeatures),
    -- | Whether to expect atomic expressions, and if so, which specific features
    cypherFeaturesAtom :: (Maybe AtomFeatures),
    -- | Whether to expect comparison operations, and if so, which specific features
    cypherFeaturesComparison :: (Maybe ComparisonFeatures),
    -- | Whether to expect delete operations, and if so, which specific features
    cypherFeaturesDelete :: (Maybe DeleteFeatures),
    -- | Whether to expect element functions, and if so, which specific features
    cypherFeaturesElement :: (Maybe ElementFeatures),
    -- | Whether to expect logical operations, and if so, which specific features
    cypherFeaturesLogical :: (Maybe LogicalFeatures),
    -- | Whether to expect property map functions, and if so, which specific features
    cypherFeaturesMap :: (Maybe MapFeatures),
    -- | Whether to expect match queries, and if so, which specific features
    cypherFeaturesMatch :: (Maybe MatchFeatures),
    -- | Whether to expect merge operations, and if so, which specific features
    cypherFeaturesMerge :: (Maybe MergeFeatures),
    -- | Whether to expect node patterns, and if so, which specific features
    cypherFeaturesNodePattern :: (Maybe NodePatternFeatures),
    -- | Whether to expect IS NULL / IS NOT NULL checks, and if so, which specific features
    cypherFeaturesNull :: (Maybe NullFeatures),
    -- | Whether to expect numeric functions, and if so, which specific features
    cypherFeaturesNumeric :: (Maybe NumericFeatures),
    -- | Whether to expect path functions, and if so, which specific features
    cypherFeaturesPath :: (Maybe PathFeatures),
    -- | Whether to expect procedure calls, and if so, which specific features
    cypherFeaturesProcedureCall :: (Maybe ProcedureCallFeatures),
    -- | Whether to expect projection operations, and if so, which specific features
    cypherFeaturesProjection :: (Maybe ProjectionFeatures),
    -- | Whether to expect random value generation, and if so, which specific features
    cypherFeaturesRandomness :: (Maybe RandomnessFeatures),
    -- | Whether to expect range literals, and if so, which specific features
    cypherFeaturesRangeLiteral :: (Maybe RangeLiteralFeatures),
    -- | Whether to expect reading operations, and if so, which specific features
    cypherFeaturesReading :: (Maybe ReadingFeatures),
    -- | Whether to expect relationship directions, and if so, which specific features
    cypherFeaturesRelationshipDirection :: (Maybe RelationshipDirectionFeatures),
    -- | Whether to expect relationship patterns, and if so, which specific features
    cypherFeaturesRelationshipPattern :: (Maybe RelationshipPatternFeatures),
    -- | Whether to expect remove operations, and if so, which specific features
    cypherFeaturesRemove :: (Maybe RemoveFeatures),
    -- | Whether to expect schema functions, and if so, which specific features
    cypherFeaturesSchema :: (Maybe SchemaFeatures),
    -- | Whether to expect set operations, and if so, which specific features
    cypherFeaturesSet :: (Maybe SetFeatures),
    -- | Whether to expect string operations, and if so, which specific features
    cypherFeaturesString :: (Maybe StringFeatures),
    -- | Whether to expect updating operations, and if so, which specific features
    cypherFeaturesUpdating :: (Maybe UpdatingFeatures)}
  deriving (Eq, Ord, Read, Show)

_CypherFeatures = (Core.Name "hydra/langs/cypher/features.CypherFeatures")

_CypherFeatures_aggregate = (Core.Name "aggregate")

_CypherFeatures_arithmetic = (Core.Name "arithmetic")

_CypherFeatures_atom = (Core.Name "atom")

_CypherFeatures_comparison = (Core.Name "comparison")

_CypherFeatures_delete = (Core.Name "delete")

_CypherFeatures_element = (Core.Name "element")

_CypherFeatures_logical = (Core.Name "logical")

_CypherFeatures_map = (Core.Name "map")

_CypherFeatures_match = (Core.Name "match")

_CypherFeatures_merge = (Core.Name "merge")

_CypherFeatures_nodePattern = (Core.Name "nodePattern")

_CypherFeatures_null = (Core.Name "null")

_CypherFeatures_numeric = (Core.Name "numeric")

_CypherFeatures_path = (Core.Name "path")

_CypherFeatures_procedureCall = (Core.Name "procedureCall")

_CypherFeatures_projection = (Core.Name "projection")

_CypherFeatures_randomness = (Core.Name "randomness")

_CypherFeatures_rangeLiteral = (Core.Name "rangeLiteral")

_CypherFeatures_reading = (Core.Name "reading")

_CypherFeatures_relationshipDirection = (Core.Name "relationshipDirection")

_CypherFeatures_relationshipPattern = (Core.Name "relationshipPattern")

_CypherFeatures_remove = (Core.Name "remove")

_CypherFeatures_schema = (Core.Name "schema")

_CypherFeatures_set = (Core.Name "set")

_CypherFeatures_string = (Core.Name "string")

_CypherFeatures_updating = (Core.Name "updating")

-- | A set of features for delete operations.
data DeleteFeatures = 
  DeleteFeatures {
    -- | Whether to expect the basic DELETE clause.
    deleteFeaturesDelete :: Bool,
    -- | Whether to expect the DETACH DELETE clause.
    deleteFeaturesDetachDelete :: Bool}
  deriving (Eq, Ord, Read, Show)

_DeleteFeatures = (Core.Name "hydra/langs/cypher/features.DeleteFeatures")

_DeleteFeatures_delete = (Core.Name "delete")

_DeleteFeatures_detachDelete = (Core.Name "detachDelete")

-- | A set of features for element functions.
data ElementFeatures = 
  ElementFeatures {
    -- | Whether to expect the elementId() function.
    elementFeaturesElementId :: Bool,
    -- | Whether to expect the endNode() function.
    elementFeaturesEndNode :: Bool,
    -- | Whether to expect the labels() function.
    elementFeaturesLabels :: Bool,
    -- | Whether to expect the properties() function.
    elementFeaturesProperties :: Bool,
    -- | Whether to expect the startNode() function.
    elementFeaturesStartNode :: Bool}
  deriving (Eq, Ord, Read, Show)

_ElementFeatures = (Core.Name "hydra/langs/cypher/features.ElementFeatures")

_ElementFeatures_elementId = (Core.Name "elementId")

_ElementFeatures_endNode = (Core.Name "endNode")

_ElementFeatures_labels = (Core.Name "labels")

_ElementFeatures_properties = (Core.Name "properties")

_ElementFeatures_startNode = (Core.Name "startNode")

-- | A set of features for list functionality.
data ListFeatures = 
  ListFeatures {
    -- | Whether to expect the all() function.
    listFeaturesAll :: Bool,
    -- | Whether to expect the any() function.
    listFeaturesAny :: Bool,
    -- | Whether to expect the coalesce() function.
    listFeaturesCoalesce :: Bool,
    -- | Whether to expect the isEmpty() function.
    listFeaturesIsEmpty :: Bool,
    -- | Whether to expect the head() function.
    listFeaturesHead :: Bool,
    -- | Whether to expect the last() function.
    listFeaturesLast :: Bool,
    -- | Whether to expect basic list comprehensions.
    listFeaturesListComprehension :: Bool,
    -- | Whether to expect list range comprehensions (e.g. [1..10]).
    listFeaturesListRange :: Bool,
    -- | Whether to expect the none() function.
    listFeaturesNone :: Bool,
    -- | Whether to expect the reduce() function.
    listFeaturesReduce :: Bool,
    -- | Whether to expect the reverse() function.
    listFeaturesReverse :: Bool,
    -- | Whether to expect the single() function.
    listFeaturesSingle :: Bool,
    -- | Whether to expect the size() function.
    listFeaturesSize :: Bool,
    -- | Whether to expect the tail() function.
    listFeaturesTail :: Bool,
    -- | Whether to expect the toBooleanList() function.
    listFeaturesToBooleanList :: Bool,
    -- | Whether to expect the toFloatList() function.
    listFeaturesToFloatList :: Bool,
    -- | Whether to expect the toIntegerList() function.
    listFeaturesToIntegerList :: Bool,
    -- | Whether to expect the toStringList() function.
    listFeaturesToStringList :: Bool}
  deriving (Eq, Ord, Read, Show)

_ListFeatures = (Core.Name "hydra/langs/cypher/features.ListFeatures")

_ListFeatures_all = (Core.Name "all")

_ListFeatures_any = (Core.Name "any")

_ListFeatures_coalesce = (Core.Name "coalesce")

_ListFeatures_isEmpty = (Core.Name "isEmpty")

_ListFeatures_head = (Core.Name "head")

_ListFeatures_last = (Core.Name "last")

_ListFeatures_listComprehension = (Core.Name "listComprehension")

_ListFeatures_listRange = (Core.Name "listRange")

_ListFeatures_none = (Core.Name "none")

_ListFeatures_reduce = (Core.Name "reduce")

_ListFeatures_reverse = (Core.Name "reverse")

_ListFeatures_single = (Core.Name "single")

_ListFeatures_size = (Core.Name "size")

_ListFeatures_tail = (Core.Name "tail")

_ListFeatures_toBooleanList = (Core.Name "toBooleanList")

_ListFeatures_toFloatList = (Core.Name "toFloatList")

_ListFeatures_toIntegerList = (Core.Name "toIntegerList")

_ListFeatures_toStringList = (Core.Name "toStringList")

-- | A set of features for various types of literal values.
data LiteralFeatures = 
  LiteralFeatures {
    -- | Whether to expect boolean literals (note: included by most if not all implementations).
    literalFeaturesBoolean :: Bool,
    -- | Whether to expect double-precision floating-point literals.
    literalFeaturesDouble :: Bool,
    -- | Whether to expect integer literals.
    literalFeaturesInteger :: Bool,
    -- | Whether to expect list literals.
    literalFeaturesList :: Bool,
    -- | Whether to expect map literals.
    literalFeaturesMap :: Bool,
    -- | Whether to expect the NULL literal.
    literalFeaturesNull :: Bool,
    -- | Whether to expect string literals (note: included by most if not all implementations).
    literalFeaturesString :: Bool}
  deriving (Eq, Ord, Read, Show)

_LiteralFeatures = (Core.Name "hydra/langs/cypher/features.LiteralFeatures")

_LiteralFeatures_boolean = (Core.Name "boolean")

_LiteralFeatures_double = (Core.Name "double")

_LiteralFeatures_integer = (Core.Name "integer")

_LiteralFeatures_list = (Core.Name "list")

_LiteralFeatures_map = (Core.Name "map")

_LiteralFeatures_null = (Core.Name "null")

_LiteralFeatures_string = (Core.Name "string")

-- | A set of features for logical operations.
data LogicalFeatures = 
  LogicalFeatures {
    -- | Whether to expect the AND operator.
    logicalFeaturesAnd :: Bool,
    -- | Whether to expect the NOT operator.
    logicalFeaturesNot :: Bool,
    -- | Whether to expect the OR operator.
    logicalFeaturesOr :: Bool,
    -- | Whether to expect the XOR operator.
    logicalFeaturesXor :: Bool}
  deriving (Eq, Ord, Read, Show)

_LogicalFeatures = (Core.Name "hydra/langs/cypher/features.LogicalFeatures")

_LogicalFeatures_and = (Core.Name "and")

_LogicalFeatures_not = (Core.Name "not")

_LogicalFeatures_or = (Core.Name "or")

_LogicalFeatures_xor = (Core.Name "xor")

-- | A set of features for property map functions.
data MapFeatures = 
  MapFeatures {
    -- | Whether to expect the keys() function.
    mapFeaturesKeys :: Bool}
  deriving (Eq, Ord, Read, Show)

_MapFeatures = (Core.Name "hydra/langs/cypher/features.MapFeatures")

_MapFeatures_keys = (Core.Name "keys")

-- | A set of features for match queries.
data MatchFeatures = 
  MatchFeatures {
    -- | Whether to expect the basic (non-optional) MATCH clause.
    matchFeaturesMatch :: Bool,
    -- | Whether to expect OPTIONAL MATCH.
    matchFeaturesOptionalMatch :: Bool}
  deriving (Eq, Ord, Read, Show)

_MatchFeatures = (Core.Name "hydra/langs/cypher/features.MatchFeatures")

_MatchFeatures_match = (Core.Name "match")

_MatchFeatures_optionalMatch = (Core.Name "optionalMatch")

-- | A set of features for merge operations.
data MergeFeatures = 
  MergeFeatures {
    -- | Whether to expect the basic MERGE clause.
    mergeFeaturesMerge :: Bool,
    -- | Whether to expect MERGE with the ON CREATE action.
    mergeFeaturesMergeOnCreate :: Bool,
    -- | Whether to expect MERGE with the ON MATCH action.
    mergeFeaturesMergeOnMatch :: Bool}
  deriving (Eq, Ord, Read, Show)

_MergeFeatures = (Core.Name "hydra/langs/cypher/features.MergeFeatures")

_MergeFeatures_merge = (Core.Name "merge")

_MergeFeatures_mergeOnCreate = (Core.Name "mergeOnCreate")

_MergeFeatures_mergeOnMatch = (Core.Name "mergeOnMatch")

-- | A set of features for node patterns.
data NodePatternFeatures = 
  NodePatternFeatures {
    -- | Whether to expect specifying multiple labels in a node pattern.
    nodePatternFeaturesMultipleLabels :: Bool,
    -- | Whether to expect specifying a parameter as part of a node pattern.
    nodePatternFeaturesParameter :: Bool,
    -- | Whether to expect specifying a key/value map of properties in a node pattern.
    nodePatternFeaturesPropertyMap :: Bool,
    -- | Whether to expect binding a variable to a node in a node pattern (note: included by most if not all implementations).
    nodePatternFeaturesVariableNode :: Bool,
    -- | Whether to expect omitting labels from a node pattern.
    nodePatternFeaturesWildcardLabel :: Bool}
  deriving (Eq, Ord, Read, Show)

_NodePatternFeatures = (Core.Name "hydra/langs/cypher/features.NodePatternFeatures")

_NodePatternFeatures_multipleLabels = (Core.Name "multipleLabels")

_NodePatternFeatures_parameter = (Core.Name "parameter")

_NodePatternFeatures_propertyMap = (Core.Name "propertyMap")

_NodePatternFeatures_variableNode = (Core.Name "variableNode")

_NodePatternFeatures_wildcardLabel = (Core.Name "wildcardLabel")

-- | A set of features for IS NULL / IS NOT NULL checks.
data NullFeatures = 
  NullFeatures {
    -- | Whether to expect the IS NULL operator.
    nullFeaturesIsNull :: Bool,
    -- | Whether to expect the IS NOT NULL operator.
    nullFeaturesIsNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)

_NullFeatures = (Core.Name "hydra/langs/cypher/features.NullFeatures")

_NullFeatures_isNull = (Core.Name "isNull")

_NullFeatures_isNotNull = (Core.Name "isNotNull")

-- | A set of features for numeric functions.
data NumericFeatures = 
  NumericFeatures {
    -- | Whether to expect the abs() function.
    numericFeaturesAbs :: Bool,
    -- | Whether to expect the ceil() function.
    numericFeaturesCeil :: Bool,
    -- | Whether to expect the e() function.
    numericFeaturesE :: Bool,
    -- | Whether to expect the exp() function.
    numericFeaturesExp :: Bool,
    -- | Whether to expect the floor() function.
    numericFeaturesFloor :: Bool,
    -- | Whether to expect the isNaN() function.
    numericFeaturesIsNaN :: Bool,
    -- | Whether to expect the log() function.
    numericFeaturesLog :: Bool,
    -- | Whether to expect the log10() function.
    numericFeaturesLog10 :: Bool,
    -- | Whether to expect the range() function.
    numericFeaturesRange :: Bool,
    -- | Whether to expect the round() function.
    numericFeaturesRound :: Bool,
    -- | Whether to expect the sign() function.
    numericFeaturesSign :: Bool,
    -- | Whether to expect the sqrt() function.
    numericFeaturesSqrt :: Bool}
  deriving (Eq, Ord, Read, Show)

_NumericFeatures = (Core.Name "hydra/langs/cypher/features.NumericFeatures")

_NumericFeatures_abs = (Core.Name "abs")

_NumericFeatures_ceil = (Core.Name "ceil")

_NumericFeatures_e = (Core.Name "e")

_NumericFeatures_exp = (Core.Name "exp")

_NumericFeatures_floor = (Core.Name "floor")

_NumericFeatures_isNaN = (Core.Name "isNaN")

_NumericFeatures_log = (Core.Name "log")

_NumericFeatures_log10 = (Core.Name "log10")

_NumericFeatures_range = (Core.Name "range")

_NumericFeatures_round = (Core.Name "round")

_NumericFeatures_sign = (Core.Name "sign")

_NumericFeatures_sqrt = (Core.Name "sqrt")

-- | A set of features for path functions.
data PathFeatures = 
  PathFeatures {
    -- | Whether to expect the length() function.
    pathFeaturesLength :: Bool,
    -- | Whether to expect the nodes() function.
    pathFeaturesNodes :: Bool,
    -- | Whether to expect the relationships() function.
    pathFeaturesRelationships :: Bool,
    -- | Whether to expect the shortestPath() function.
    pathFeaturesShortestPath :: Bool}
  deriving (Eq, Ord, Read, Show)

_PathFeatures = (Core.Name "hydra/langs/cypher/features.PathFeatures")

_PathFeatures_length = (Core.Name "length")

_PathFeatures_nodes = (Core.Name "nodes")

_PathFeatures_relationships = (Core.Name "relationships")

_PathFeatures_shortestPath = (Core.Name "shortestPath")

-- | A set of features for procedure calls.
data ProcedureCallFeatures = 
  ProcedureCallFeatures {
    -- | Whether to expect CALL within a query.
    procedureCallFeaturesInQueryCall :: Bool,
    -- | Whether to expect standalone / top-level CALL.
    procedureCallFeaturesStandaloneCall :: Bool,
    -- | Whether to expect the YIELD clause in CALL.
    procedureCallFeaturesYield :: Bool}
  deriving (Eq, Ord, Read, Show)

_ProcedureCallFeatures = (Core.Name "hydra/langs/cypher/features.ProcedureCallFeatures")

_ProcedureCallFeatures_inQueryCall = (Core.Name "inQueryCall")

_ProcedureCallFeatures_standaloneCall = (Core.Name "standaloneCall")

_ProcedureCallFeatures_yield = (Core.Name "yield")

-- | A set of features for projections.
data ProjectionFeatures = 
  ProjectionFeatures {
    -- | Whether to expect the LIMIT clause.
    projectionFeaturesLimit :: Bool,
    -- | Whether to expect the ORDER BY clause.
    projectionFeaturesOrderBy :: Bool,
    -- | Whether to expect the DISTINCT keyword.
    projectionFeaturesProjectDistinct :: Bool,
    -- | Whether to expect the * projection.
    projectionFeaturesProjectAll :: Bool,
    -- | Whether to expect the AS keyword.
    projectionFeaturesProjectAs :: Bool,
    -- | Whether to expect the SKIP clause.
    projectionFeaturesSkip :: Bool,
    -- | Whether to expect the ASC/ASCENDING and DESC/DESCENDING keywords.
    projectionFeaturesSortOrder :: Bool}
  deriving (Eq, Ord, Read, Show)

_ProjectionFeatures = (Core.Name "hydra/langs/cypher/features.ProjectionFeatures")

_ProjectionFeatures_limit = (Core.Name "limit")

_ProjectionFeatures_orderBy = (Core.Name "orderBy")

_ProjectionFeatures_projectDistinct = (Core.Name "projectDistinct")

_ProjectionFeatures_projectAll = (Core.Name "projectAll")

_ProjectionFeatures_projectAs = (Core.Name "projectAs")

_ProjectionFeatures_skip = (Core.Name "skip")

_ProjectionFeatures_sortOrder = (Core.Name "sortOrder")

-- | A set of features for quantifier expressions.
data QuantifierFeatures = 
  QuantifierFeatures {
    -- | Whether to expect the ALL quantifier.
    quantifierFeaturesAll :: Bool,
    -- | Whether to expect the ANY quantifier.
    quantifierFeaturesAny :: Bool,
    -- | Whether to expect the exists() function.
    quantifierFeaturesExists :: Bool,
    -- | Whether to expect the NONE quantifier.
    quantifierFeaturesNone :: Bool,
    -- | Whether to expect the SINGLE quantifier.
    quantifierFeaturesSingle :: Bool}
  deriving (Eq, Ord, Read, Show)

_QuantifierFeatures = (Core.Name "hydra/langs/cypher/features.QuantifierFeatures")

_QuantifierFeatures_all = (Core.Name "all")

_QuantifierFeatures_any = (Core.Name "any")

_QuantifierFeatures_exists = (Core.Name "exists")

_QuantifierFeatures_none = (Core.Name "none")

_QuantifierFeatures_single = (Core.Name "single")

-- | A set of features for random value generation.
data RandomnessFeatures = 
  RandomnessFeatures {
    -- | Whether to expect the rand() function.
    randomnessFeaturesRand :: Bool,
    -- | Whether to expect the randomUUID() function.
    randomnessFeaturesRandomUUID :: Bool}
  deriving (Eq, Ord, Read, Show)

_RandomnessFeatures = (Core.Name "hydra/langs/cypher/features.RandomnessFeatures")

_RandomnessFeatures_rand = (Core.Name "rand")

_RandomnessFeatures_randomUUID = (Core.Name "randomUUID")

-- | A set of features for range literals within relationship patterns.
data RangeLiteralFeatures = 
  RangeLiteralFeatures {
    -- | Whether to expect range literals with both lower and upper bounds.
    rangeLiteralFeaturesBounds :: Bool,
    -- | Whether to expect range literals providing an exact number of repetitions.
    rangeLiteralFeaturesExactRange :: Bool,
    -- | Whether to expect range literals with a lower bound (only).
    rangeLiteralFeaturesLowerBound :: Bool,
    -- | Whether to expect the * range literal.
    rangeLiteralFeaturesStarRange :: Bool,
    -- | Whether to expect range literals with an upper bound (only).
    rangeLiteralFeaturesUpperBound :: Bool}
  deriving (Eq, Ord, Read, Show)

_RangeLiteralFeatures = (Core.Name "hydra/langs/cypher/features.RangeLiteralFeatures")

_RangeLiteralFeatures_bounds = (Core.Name "bounds")

_RangeLiteralFeatures_exactRange = (Core.Name "exactRange")

_RangeLiteralFeatures_lowerBound = (Core.Name "lowerBound")

_RangeLiteralFeatures_starRange = (Core.Name "starRange")

_RangeLiteralFeatures_upperBound = (Core.Name "upperBound")

-- | A set of features for specific syntax related to reading data from the graph..
data ReadingFeatures = 
  ReadingFeatures {
    -- | Whether to expect the UNION operator.
    readingFeaturesUnion :: Bool,
    -- | Whether to expect the UNION ALL operator.
    readingFeaturesUnionAll :: Bool,
    -- | Whether to expect the UNWIND clause.
    readingFeaturesUnwind :: Bool}
  deriving (Eq, Ord, Read, Show)

_ReadingFeatures = (Core.Name "hydra/langs/cypher/features.ReadingFeatures")

_ReadingFeatures_union = (Core.Name "union")

_ReadingFeatures_unionAll = (Core.Name "unionAll")

_ReadingFeatures_unwind = (Core.Name "unwind")

-- | A set of features for relationship directions / arrow patterns.
data RelationshipDirectionFeatures = 
  RelationshipDirectionFeatures {
    -- | Whether to expect the two-headed arrow (<-[]->) relationship direction.
    relationshipDirectionFeaturesBoth :: Bool,
    -- | Whether to expect the left arrow (<-[]-) relationship direction.
    relationshipDirectionFeaturesLeft :: Bool,
    -- | Whether to expect the headless arrow (-[]-) relationship direction.
    relationshipDirectionFeaturesNeither :: Bool,
    -- | Whether to expect the right arrow (-[]->) relationship direction.
    relationshipDirectionFeaturesRight :: Bool}
  deriving (Eq, Ord, Read, Show)

_RelationshipDirectionFeatures = (Core.Name "hydra/langs/cypher/features.RelationshipDirectionFeatures")

_RelationshipDirectionFeatures_both = (Core.Name "both")

_RelationshipDirectionFeatures_left = (Core.Name "left")

_RelationshipDirectionFeatures_neither = (Core.Name "neither")

_RelationshipDirectionFeatures_right = (Core.Name "right")

-- | A set of features for relationship patterns.
data RelationshipPatternFeatures = 
  RelationshipPatternFeatures {
    -- | Whether to expect specifying a disjunction of multiple types in a relationship pattern.
    relationshipPatternFeaturesMultipleTypes :: Bool,
    -- | Whether to expect binding a variable to a relationship in a relationship pattern (note: included by most if not all implementations).
    relationshipPatternFeaturesVariableRelationship :: Bool,
    -- | Whether to expect omitting types from a relationship pattern.
    relationshipPatternFeaturesWildcardType :: Bool}
  deriving (Eq, Ord, Read, Show)

_RelationshipPatternFeatures = (Core.Name "hydra/langs/cypher/features.RelationshipPatternFeatures")

_RelationshipPatternFeatures_multipleTypes = (Core.Name "multipleTypes")

_RelationshipPatternFeatures_variableRelationship = (Core.Name "variableRelationship")

_RelationshipPatternFeatures_wildcardType = (Core.Name "wildcardType")

-- | A set of features for REMOVE operations.
data RemoveFeatures = 
  RemoveFeatures {
    -- | Whether to expect REMOVE Variable:NodeLabels.
    removeFeaturesByLabel :: Bool,
    -- | Whether to expect REMOVE PropertyExpression.
    removeFeaturesByProperty :: Bool}
  deriving (Eq, Ord, Read, Show)

_RemoveFeatures = (Core.Name "hydra/langs/cypher/features.RemoveFeatures")

_RemoveFeatures_byLabel = (Core.Name "byLabel")

_RemoveFeatures_byProperty = (Core.Name "byProperty")

-- | A set of features for schema functions.
data SchemaFeatures = 
  SchemaFeatures {
    -- | Whether to expect the type() function.
    schemaFeaturesType :: Bool,
    -- | Whether to expect the valueType() function.
    schemaFeaturesValueType :: Bool}
  deriving (Eq, Ord, Read, Show)

_SchemaFeatures = (Core.Name "hydra/langs/cypher/features.SchemaFeatures")

_SchemaFeatures_type = (Core.Name "type")

_SchemaFeatures_valueType = (Core.Name "valueType")

-- | A set of features for set definitions.
data SetFeatures = 
  SetFeatures {
    -- | Whether to expect defining a set using PropertyExpression = Expression.
    setFeaturesPropertyEquals :: Bool,
    -- | Whether to expect defining a set using Variable = Expression.
    setFeaturesVariableEquals :: Bool,
    -- | Whether to expect defining a set using Variable += Expression.
    setFeaturesVariablePlusEquals :: Bool,
    -- | Whether to expect defining a set using Variable:NodeLabels.
    setFeaturesVariableWithNodeLabels :: Bool}
  deriving (Eq, Ord, Read, Show)

_SetFeatures = (Core.Name "hydra/langs/cypher/features.SetFeatures")

_SetFeatures_propertyEquals = (Core.Name "propertyEquals")

_SetFeatures_variableEquals = (Core.Name "variableEquals")

_SetFeatures_variablePlusEquals = (Core.Name "variablePlusEquals")

_SetFeatures_variableWithNodeLabels = (Core.Name "variableWithNodeLabels")

-- | A set of features for string functions.
data StringFeatures = 
  StringFeatures {
    -- | Whether to expect the char_length() function.
    stringFeaturesChar_length :: Bool,
    -- | Whether to expect the character_length() function.
    stringFeaturesCharacter_length :: Bool,
    -- | Whether to expect the contains() / CONTAINS aggregate function.
    stringFeaturesContains :: Bool,
    -- | Whether to expect the endsWith() / ENDS WITH aggregate function.
    stringFeaturesEndsWith :: Bool,
    -- | Whether to expect the in() / IN aggregate function.
    stringFeaturesIn :: Bool,
    -- | Whether to expect the startsWith() / STARTS WITH aggregate function.
    stringFeaturesStartsWith :: Bool,
    -- | Whether to expect the toBoolean() function.
    stringFeaturesToBoolean :: Bool,
    -- | Whether to expect the toBooleanOrNull() function.
    stringFeaturesToBooleanOrNull :: Bool,
    -- | Whether to expect the toFloat() function.
    stringFeaturesToFloat :: Bool,
    -- | Whether to expect the toFloatOrNull() function.
    stringFeaturesToFloatOrNull :: Bool,
    -- | Whether to expect the toInteger() function.
    stringFeaturesToInteger :: Bool,
    -- | Whether to expect the toIntegerOrNull() function.
    stringFeaturesToIntegerOrNull :: Bool}
  deriving (Eq, Ord, Read, Show)

_StringFeatures = (Core.Name "hydra/langs/cypher/features.StringFeatures")

_StringFeatures_char_length = (Core.Name "char_length")

_StringFeatures_character_length = (Core.Name "character_length")

_StringFeatures_contains = (Core.Name "contains")

_StringFeatures_endsWith = (Core.Name "endsWith")

_StringFeatures_in = (Core.Name "in")

_StringFeatures_startsWith = (Core.Name "startsWith")

_StringFeatures_toBoolean = (Core.Name "toBoolean")

_StringFeatures_toBooleanOrNull = (Core.Name "toBooleanOrNull")

_StringFeatures_toFloat = (Core.Name "toFloat")

_StringFeatures_toFloatOrNull = (Core.Name "toFloatOrNull")

_StringFeatures_toInteger = (Core.Name "toInteger")

_StringFeatures_toIntegerOrNull = (Core.Name "toIntegerOrNull")

-- | A set of features for specific syntax related to updating data in the graph.
data UpdatingFeatures = 
  UpdatingFeatures {
    -- | Whether to expect the CREATE clause.
    updatingFeaturesCreate :: Bool,
    -- | Whether to expect the SET clause.
    updatingFeaturesSet :: Bool,
    -- | Whether to expect multi-part queries using WITH.
    updatingFeaturesWith :: Bool}
  deriving (Eq, Ord, Read, Show)

_UpdatingFeatures = (Core.Name "hydra/langs/cypher/features.UpdatingFeatures")

_UpdatingFeatures_create = (Core.Name "create")

_UpdatingFeatures_set = (Core.Name "set")

_UpdatingFeatures_with = (Core.Name "with")