packages feed

hydra-0.15.0: src/main/haskell/Hydra/Cypher/Features.hs

-- Note: this is an automatically generated file. Do not edit.

-- | A model for characterizing OpenCypher queries and implementations in terms of included features.Based on the OpenCypher grammar and the list of standard Cypher functions at https://neo4j.com/docs/cypher-manual/current/functions. Current as of August 2024.

module Hydra.Cypher.Features where

import qualified Hydra.Core as Core
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.Scientific as Sci

-- | 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 {
    -- | Arithmetic operations
    cypherFeaturesArithmetic :: ArithmeticFeatures,
    -- | Various kinds of atomic expressions
    cypherFeaturesAtom :: AtomFeatures,
    -- | Comparison operators and functions
    cypherFeaturesComparison :: ComparisonFeatures,
    -- | Delete operations
    cypherFeaturesDelete :: DeleteFeatures,
    -- | Standard Cypher functions
    cypherFeaturesFunction :: FunctionFeatures,
    -- | List functionality
    cypherFeaturesList :: ListFeatures,
    -- | Various types of literal values
    cypherFeaturesLiteral :: LiteralFeatures,
    -- | Logical operations
    cypherFeaturesLogical :: LogicalFeatures,
    -- | Match queries
    cypherFeaturesMatch :: MatchFeatures,
    -- | Merge operations
    cypherFeaturesMerge :: MergeFeatures,
    -- | Node patterns
    cypherFeaturesNodePattern :: NodePatternFeatures,
    -- | IS NULL / IS NOT NULL checks
    cypherFeaturesNull :: NullFeatures,
    -- | Path functions only found in OpenCypher
    cypherFeaturesPath :: PathFeatures,
    -- | Procedure calls
    cypherFeaturesProcedureCall :: ProcedureCallFeatures,
    -- | Projections
    cypherFeaturesProjection :: ProjectionFeatures,
    -- | Quantifier expressions
    cypherFeaturesQuantifier :: QuantifierFeatures,
    -- | Range literals within relationship patterns
    cypherFeaturesRangeLiteral :: RangeLiteralFeatures,
    -- | Specific syntax related to reading data from the graph.
    cypherFeaturesReading :: ReadingFeatures,
    -- | Relationship directions / arrow patterns
    cypherFeaturesRelationshipDirection :: RelationshipDirectionFeatures,
    -- | Relationship patterns
    cypherFeaturesRelationshipPattern :: RelationshipPatternFeatures,
    -- | REMOVE operations
    cypherFeaturesRemove :: RemoveFeatures,
    -- | Set definitions
    cypherFeaturesSet :: SetFeatures,
    -- | String functions/keywords only found in OpenCypher
    cypherFeaturesString :: StringFeatures,
    -- | Specific syntax related to updating data in the graph
    cypherFeaturesUpdating :: UpdatingFeatures}
  deriving (Eq, Ord, Read, Show)

_CypherFeatures = Core.Name "hydra.cypher.features.CypherFeatures"

_CypherFeatures_arithmetic = Core.Name "arithmetic"

_CypherFeatures_atom = Core.Name "atom"

_CypherFeatures_comparison = Core.Name "comparison"

_CypherFeatures_delete = Core.Name "delete"

_CypherFeatures_function = Core.Name "function"

_CypherFeatures_list = Core.Name "list"

_CypherFeatures_literal = Core.Name "literal"

_CypherFeatures_logical = Core.Name "logical"

_CypherFeatures_match = Core.Name "match"

_CypherFeatures_merge = Core.Name "merge"

_CypherFeatures_nodePattern = Core.Name "nodePattern"

_CypherFeatures_null = Core.Name "null"

_CypherFeatures_path = Core.Name "path"

_CypherFeatures_procedureCall = Core.Name "procedureCall"

_CypherFeatures_projection = Core.Name "projection"

_CypherFeatures_quantifier = Core.Name "quantifier"

_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_set = Core.Name "set"

_CypherFeatures_string = Core.Name "string"

_CypherFeatures_updating = Core.Name "updating"

-- | Arithmetic operations
data ArithmeticFeatures =
  ArithmeticFeatures {
    -- | The + operator
    arithmeticFeaturesPlus :: Bool,
    -- | The - operator
    arithmeticFeaturesMinus :: Bool,
    -- | The * operator
    arithmeticFeaturesMultiply :: Bool,
    -- | The / operator
    arithmeticFeaturesDivide :: Bool,
    -- | The % operator
    arithmeticFeaturesModulus :: Bool,
    -- | The ^ operator
    arithmeticFeaturesPowerOf :: Bool}
  deriving (Eq, Ord, Read, Show)

_ArithmeticFeatures = Core.Name "hydra.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"

-- | Various kinds of atomic expressions
data AtomFeatures =
  AtomFeatures {
    -- | CASE expressions
    atomFeaturesCaseExpression :: Bool,
    -- | The COUNT (*) expression
    atomFeaturesCount :: Bool,
    -- | Existential subqueries
    atomFeaturesExistentialSubquery :: Bool,
    -- | Function invocation
    atomFeaturesFunctionInvocation :: Bool,
    -- | Parameter expressions
    atomFeaturesParameter :: Bool,
    -- | Pattern comprehensions
    atomFeaturesPatternComprehension :: Bool,
    -- | Relationship patterns as subexpressions
    atomFeaturesPatternPredicate :: Bool,
    -- | Variable expressions (note: included by most if not all implementations).
    atomFeaturesVariable :: Bool}
  deriving (Eq, Ord, Read, Show)

_AtomFeatures = Core.Name "hydra.cypher.features.AtomFeatures"

_AtomFeatures_caseExpression = Core.Name "caseExpression"

_AtomFeatures_count = Core.Name "count"

_AtomFeatures_existentialSubquery = Core.Name "existentialSubquery"

_AtomFeatures_functionInvocation = Core.Name "functionInvocation"

_AtomFeatures_parameter = Core.Name "parameter"

_AtomFeatures_patternComprehension = Core.Name "patternComprehension"

_AtomFeatures_patternPredicate = Core.Name "patternPredicate"

_AtomFeatures_variable = Core.Name "variable"

-- | Comparison operators and functions
data ComparisonFeatures =
  ComparisonFeatures {
    -- | The = comparison operator
    comparisonFeaturesEqual :: Bool,
    -- | The > comparison operator
    comparisonFeaturesGreaterThan :: Bool,
    -- | The >= comparison operator
    comparisonFeaturesGreaterThanOrEqual :: Bool,
    -- | The < comparison operator
    comparisonFeaturesLessThan :: Bool,
    -- | The <= comparison operator
    comparisonFeaturesLessThanOrEqual :: Bool,
    -- | The <> comparison operator
    comparisonFeaturesNotEqual :: Bool}
  deriving (Eq, Ord, Read, Show)

_ComparisonFeatures = Core.Name "hydra.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"

-- | Delete operations
data DeleteFeatures =
  DeleteFeatures {
    -- | The basic DELETE clause
    deleteFeaturesDelete :: Bool,
    -- | The DETACH DELETE clause
    deleteFeaturesDetachDelete :: Bool}
  deriving (Eq, Ord, Read, Show)

_DeleteFeatures = Core.Name "hydra.cypher.features.DeleteFeatures"

_DeleteFeatures_delete = Core.Name "delete"

_DeleteFeatures_detachDelete = Core.Name "detachDelete"

-- | Standard Cypher functions
data FunctionFeatures =
  FunctionFeatures {
    -- | Aggregate functions
    functionFeaturesAggregateFunction :: AggregateFunctionFeatures,
    -- | Database functions
    functionFeaturesDatabaseFunction :: DatabaseFunctionFeatures,
    -- | GenAI functions
    functionFeaturesGenAIFunction :: GenAIFunctionFeatures,
    -- | Graph functions
    functionFeaturesGraphFunction :: GraphFunctionFeatures,
    -- | List functions
    functionFeaturesListFunction :: ListFunctionFeatures,
    -- | Load CSV functions
    functionFeaturesLoadCSVFunction :: LoadCSVFunctionFeatures,
    -- | Logarithmic functions
    functionFeaturesLogarithmicFunction :: LogarithmicFunctionFeatures,
    -- | Numeric functions
    functionFeaturesNumericFunction :: NumericFunctionFeatures,
    -- | Predicate functions
    functionFeaturesPredicateFunction :: PredicateFunctionFeatures,
    -- | Scalar functions
    functionFeaturesScalarFunction :: ScalarFunctionFeatures,
    -- | Spatial functions
    functionFeaturesSpatialFunction :: SpatialFunctionFeatures,
    -- | String functions
    functionFeaturesStringFunction :: StringFunctionFeatures,
    -- | Temporal duration functions
    functionFeaturesTemporalDurationFunction :: TemporalDurationFunctionFeatures,
    -- | Temporal instant functions
    functionFeaturesTemporalInstantFunction :: TemporalInstantFunctionFeatures,
    -- | Trigonometric functions
    functionFeaturesTrigonometricFunction :: TrigonometricFunctionFeatures,
    -- | Vector functions
    functionFeaturesVectorFunction :: VectorFunctionFeatures}
  deriving (Eq, Ord, Read, Show)

_FunctionFeatures = Core.Name "hydra.cypher.features.FunctionFeatures"

_FunctionFeatures_aggregateFunction = Core.Name "aggregateFunction"

_FunctionFeatures_databaseFunction = Core.Name "databaseFunction"

_FunctionFeatures_genAIFunction = Core.Name "genAIFunction"

_FunctionFeatures_graphFunction = Core.Name "graphFunction"

_FunctionFeatures_listFunction = Core.Name "listFunction"

_FunctionFeatures_loadCSVFunction = Core.Name "loadCSVFunction"

_FunctionFeatures_logarithmicFunction = Core.Name "logarithmicFunction"

_FunctionFeatures_numericFunction = Core.Name "numericFunction"

_FunctionFeatures_predicateFunction = Core.Name "predicateFunction"

_FunctionFeatures_scalarFunction = Core.Name "scalarFunction"

_FunctionFeatures_spatialFunction = Core.Name "spatialFunction"

_FunctionFeatures_stringFunction = Core.Name "stringFunction"

_FunctionFeatures_temporalDurationFunction = Core.Name "temporalDurationFunction"

_FunctionFeatures_temporalInstantFunction = Core.Name "temporalInstantFunction"

_FunctionFeatures_trigonometricFunction = Core.Name "trigonometricFunction"

_FunctionFeatures_vectorFunction = Core.Name "vectorFunction"

-- | Aggregate functions
data AggregateFunctionFeatures =
  AggregateFunctionFeatures {
    -- | The avg() function / AVG. Returns the average of a set of DURATION values.; Returns the average of a set of FLOAT values.; Returns the average of a set of INTEGER values.
    aggregateFunctionFeaturesAvg :: Bool,
    -- | The collect() function / COLLECT. Returns a list containing the values returned by an expression.
    aggregateFunctionFeaturesCollect :: Bool,
    -- | The count() function / COUNT. Returns the number of values or rows.
    aggregateFunctionFeaturesCount :: Bool,
    -- | The max() function / MAX. Returns the maximum value in a set of values.
    aggregateFunctionFeaturesMax :: Bool,
    -- | The min() function / MIN. Returns the minimum value in a set of values.
    aggregateFunctionFeaturesMin :: Bool,
    -- | The percentileCont() function. Returns the percentile of a value over a group using linear interpolation.
    aggregateFunctionFeaturesPercentileCont :: Bool,
    -- | The percentileDisc() function. Returns the nearest FLOAT value to the given percentile over a group using a rounding method.; Returns the nearest INTEGER value to the given percentile over a group using a rounding method.
    aggregateFunctionFeaturesPercentileDisc :: Bool,
    -- | The stdev() function. Returns the standard deviation for the given value over a group for a sample of a population.
    aggregateFunctionFeaturesStdev :: Bool,
    -- | The stdevp() function. Returns the standard deviation for the given value over a group for an entire population.
    aggregateFunctionFeaturesStdevp :: Bool,
    -- | The sum() function / SUM. Returns the sum of a set of DURATION values.; Returns the sum of a set of FLOAT values.; Returns the sum of a set of INTEGER values.
    aggregateFunctionFeaturesSum :: Bool}
  deriving (Eq, Ord, Read, Show)

_AggregateFunctionFeatures = Core.Name "hydra.cypher.features.AggregateFunctionFeatures"

_AggregateFunctionFeatures_avg = Core.Name "avg"

_AggregateFunctionFeatures_collect = Core.Name "collect"

_AggregateFunctionFeatures_count = Core.Name "count"

_AggregateFunctionFeatures_max = Core.Name "max"

_AggregateFunctionFeatures_min = Core.Name "min"

_AggregateFunctionFeatures_percentileCont = Core.Name "percentileCont"

_AggregateFunctionFeatures_percentileDisc = Core.Name "percentileDisc"

_AggregateFunctionFeatures_stdev = Core.Name "stdev"

_AggregateFunctionFeatures_stdevp = Core.Name "stdevp"

_AggregateFunctionFeatures_sum = Core.Name "sum"

-- | Database functions
data DatabaseFunctionFeatures =
  DatabaseFunctionFeatures {
    -- | The db.nameFromElementId() function. Resolves the database name from the given element id. Introduced in 5.12.
    databaseFunctionFeaturesDbNameFromElementId :: Bool}
  deriving (Eq, Ord, Read, Show)

_DatabaseFunctionFeatures = Core.Name "hydra.cypher.features.DatabaseFunctionFeatures"

_DatabaseFunctionFeatures_dbNameFromElementId = Core.Name "dbNameFromElementId"

-- | GenAI functions
data GenAIFunctionFeatures =
  GenAIFunctionFeatures {
    -- | The genai.vector.encode() function. Encode a given resource as a vector using the named provider. Introduced in 5.17.
    genAIFunctionFeaturesGenaiVectorEncode :: Bool}
  deriving (Eq, Ord, Read, Show)

_GenAIFunctionFeatures = Core.Name "hydra.cypher.features.GenAIFunctionFeatures"

_GenAIFunctionFeatures_genaiVectorEncode = Core.Name "genaiVectorEncode"

-- | Graph functions
data GraphFunctionFeatures =
  GraphFunctionFeatures {
    -- | The graph.byElementId() function. Resolves the constituent graph to which a given element id belongs. Introduced in 5.13.
    graphFunctionFeaturesGraphByElementId :: Bool,
    -- | The graph.byName() function. Resolves a constituent graph by name.
    graphFunctionFeaturesGraphByName :: Bool,
    -- | The graph.names() function. Returns a list containing the names of all graphs in the current composite database.
    graphFunctionFeaturesGraphNames :: Bool,
    -- | The graph.propertiesByName() function. Returns a map containing the properties associated with the given graph.
    graphFunctionFeaturesGraphPropertiesByName :: Bool}
  deriving (Eq, Ord, Read, Show)

_GraphFunctionFeatures = Core.Name "hydra.cypher.features.GraphFunctionFeatures"

_GraphFunctionFeatures_graphByElementId = Core.Name "graphByElementId"

_GraphFunctionFeatures_graphByName = Core.Name "graphByName"

_GraphFunctionFeatures_graphNames = Core.Name "graphNames"

_GraphFunctionFeatures_graphPropertiesByName = Core.Name "graphPropertiesByName"

-- | List functions
data ListFunctionFeatures =
  ListFunctionFeatures {
    -- | The keys() function. Returns a LIST<STRING> containing the STRING representations for all the property names of a MAP.; Returns a LIST<STRING> containing the STRING representations for all the property names of a NODE.; Returns a LIST<STRING> containing the STRING representations for all the property names of a RELATIONSHIP.
    listFunctionFeaturesKeys :: Bool,
    -- | The labels() function. Returns a LIST<STRING> containing the STRING representations for all the labels of a NODE.
    listFunctionFeaturesLabels :: Bool,
    -- | The nodes() function. Returns a LIST<NODE> containing all the NODE values in a PATH.
    listFunctionFeaturesNodes :: Bool,
    -- | The range() function. Returns a LIST<INTEGER> comprising all INTEGER values within a specified range.; Returns a LIST<INTEGER> comprising all INTEGER values within a specified range created with step length.
    listFunctionFeaturesRange :: Bool,
    -- | The reduce() function. Runs an expression against individual elements of a LIST<ANY>, storing the result of the expression in an accumulator.
    listFunctionFeaturesReduce :: Bool,
    -- | The relationships() function. Returns a LIST<RELATIONSHIP> containing all the RELATIONSHIP values in a PATH.
    listFunctionFeaturesRelationships :: Bool,
    -- | The reverse() function. Returns a LIST<ANY> in which the order of all elements in the given LIST<ANY> have been reversed.
    listFunctionFeaturesReverse :: Bool,
    -- | The tail() function. Returns all but the first element in a LIST<ANY>.
    listFunctionFeaturesTail :: Bool,
    -- | The toBooleanList() function. Converts a LIST<ANY> of values to a LIST<BOOLEAN> values. If any values are not convertible to BOOLEAN they will be null in the LIST<BOOLEAN> returned.
    listFunctionFeaturesToBooleanList :: Bool,
    -- | The toFloatList() function. Converts a LIST<ANY> to a LIST<FLOAT> values. If any values are not convertible to FLOAT they will be null in the LIST<FLOAT> returned.
    listFunctionFeaturesToFloatList :: Bool,
    -- | The toIntegerList() function. Converts a LIST<ANY> to a LIST<INTEGER> values. If any values are not convertible to INTEGER they will be null in the LIST<INTEGER> returned.
    listFunctionFeaturesToIntegerList :: Bool,
    -- | The toStringList() function. Converts a LIST<ANY> to a LIST<STRING> values. If any values are not convertible to STRING they will be null in the LIST<STRING> returned.
    listFunctionFeaturesToStringList :: Bool}
  deriving (Eq, Ord, Read, Show)

_ListFunctionFeatures = Core.Name "hydra.cypher.features.ListFunctionFeatures"

_ListFunctionFeatures_keys = Core.Name "keys"

_ListFunctionFeatures_labels = Core.Name "labels"

_ListFunctionFeatures_nodes = Core.Name "nodes"

_ListFunctionFeatures_range = Core.Name "range"

_ListFunctionFeatures_reduce = Core.Name "reduce"

_ListFunctionFeatures_relationships = Core.Name "relationships"

_ListFunctionFeatures_reverse = Core.Name "reverse"

_ListFunctionFeatures_tail = Core.Name "tail"

_ListFunctionFeatures_toBooleanList = Core.Name "toBooleanList"

_ListFunctionFeatures_toFloatList = Core.Name "toFloatList"

_ListFunctionFeatures_toIntegerList = Core.Name "toIntegerList"

_ListFunctionFeatures_toStringList = Core.Name "toStringList"

-- | Load CSV functions
data LoadCSVFunctionFeatures =
  LoadCSVFunctionFeatures {
    -- | The file() function. Returns the absolute path of the file that LOAD CSV is using.
    loadCSVFunctionFeaturesFile :: Bool,
    -- | The linenumber() function. Returns the line number that LOAD CSV is currently using.
    loadCSVFunctionFeaturesLinenumber :: Bool}
  deriving (Eq, Ord, Read, Show)

_LoadCSVFunctionFeatures = Core.Name "hydra.cypher.features.LoadCSVFunctionFeatures"

_LoadCSVFunctionFeatures_file = Core.Name "file"

_LoadCSVFunctionFeatures_linenumber = Core.Name "linenumber"

-- | Logarithmic functions
data LogarithmicFunctionFeatures =
  LogarithmicFunctionFeatures {
    -- | The e() function. Returns the base of the natural logarithm, e.
    logarithmicFunctionFeaturesE :: Bool,
    -- | The exp() function. Returns e^n, where e is the base of the natural logarithm, and n is the value of the argument expression.
    logarithmicFunctionFeaturesExp :: Bool,
    -- | The log() function. Returns the natural logarithm of a FLOAT.
    logarithmicFunctionFeaturesLog :: Bool,
    -- | The log10() function. Returns the common logarithm (base 10) of a FLOAT.
    logarithmicFunctionFeaturesLog10 :: Bool,
    -- | The sqrt() function. Returns the square root of a FLOAT.
    logarithmicFunctionFeaturesSqrt :: Bool}
  deriving (Eq, Ord, Read, Show)

_LogarithmicFunctionFeatures = Core.Name "hydra.cypher.features.LogarithmicFunctionFeatures"

_LogarithmicFunctionFeatures_e = Core.Name "e"

_LogarithmicFunctionFeatures_exp = Core.Name "exp"

_LogarithmicFunctionFeatures_log = Core.Name "log"

_LogarithmicFunctionFeatures_log10 = Core.Name "log10"

_LogarithmicFunctionFeatures_sqrt = Core.Name "sqrt"

-- | Numeric functions
data NumericFunctionFeatures =
  NumericFunctionFeatures {
    -- | The abs() function. Returns the absolute value of a FLOAT.; Returns the absolute value of an INTEGER.
    numericFunctionFeaturesAbs :: Bool,
    -- | The ceil() function. Returns the smallest FLOAT that is greater than or equal to a number and equal to an INTEGER.
    numericFunctionFeaturesCeil :: Bool,
    -- | The floor() function. Returns the largest FLOAT that is less than or equal to a number and equal to an INTEGER.
    numericFunctionFeaturesFloor :: Bool,
    -- | The isNaN() function. Returns true if the floating point number is NaN.; Returns true if the integer number is NaN.
    numericFunctionFeaturesIsNaN :: Bool,
    -- | The rand() function. Returns a random FLOAT in the range from 0 (inclusive) to 1 (exclusive).
    numericFunctionFeaturesRand :: Bool,
    -- | The round() function. Returns the value of a number rounded to the nearest INTEGER.; Returns the value of a number rounded to the specified precision using rounding mode HALF_UP.; Returns the value of a number rounded to the specified precision with the specified rounding mode.
    numericFunctionFeaturesRound :: Bool,
    -- | The sign() function. Returns the signum of a FLOAT: 0 if the number is 0, -1 for any negative number, and 1 for any positive number.; Returns the signum of an INTEGER: 0 if the number is 0, -1 for any negative number, and 1 for any positive number.
    numericFunctionFeaturesSign :: Bool}
  deriving (Eq, Ord, Read, Show)

_NumericFunctionFeatures = Core.Name "hydra.cypher.features.NumericFunctionFeatures"

_NumericFunctionFeatures_abs = Core.Name "abs"

_NumericFunctionFeatures_ceil = Core.Name "ceil"

_NumericFunctionFeatures_floor = Core.Name "floor"

_NumericFunctionFeatures_isNaN = Core.Name "isNaN"

_NumericFunctionFeatures_rand = Core.Name "rand"

_NumericFunctionFeatures_round = Core.Name "round"

_NumericFunctionFeatures_sign = Core.Name "sign"

-- | Predicate functions
data PredicateFunctionFeatures =
  PredicateFunctionFeatures {
    -- | The all() function. Returns true if the predicate holds for all elements in the given LIST<ANY>.
    predicateFunctionFeaturesAll :: Bool,
    -- | The any() function. Returns true if the predicate holds for at least one element in the given LIST<ANY>.
    predicateFunctionFeaturesAny :: Bool,
    -- | The exists() function. Returns true if a match for the pattern exists in the graph.
    predicateFunctionFeaturesExists :: Bool,
    -- | The isEmpty() function. Checks whether a LIST<ANY> is empty.; Checks whether a MAP is empty.; Checks whether a STRING is empty.
    predicateFunctionFeaturesIsEmpty :: Bool,
    -- | The none() function. Returns true if the predicate holds for no element in the given LIST<ANY>.
    predicateFunctionFeaturesNone :: Bool,
    -- | The single() function. Returns true if the predicate holds for exactly one of the elements in the given LIST<ANY>.
    predicateFunctionFeaturesSingle :: Bool}
  deriving (Eq, Ord, Read, Show)

_PredicateFunctionFeatures = Core.Name "hydra.cypher.features.PredicateFunctionFeatures"

_PredicateFunctionFeatures_all = Core.Name "all"

_PredicateFunctionFeatures_any = Core.Name "any"

_PredicateFunctionFeatures_exists = Core.Name "exists"

_PredicateFunctionFeatures_isEmpty = Core.Name "isEmpty"

_PredicateFunctionFeatures_none = Core.Name "none"

_PredicateFunctionFeatures_single = Core.Name "single"

-- | Scalar functions
data ScalarFunctionFeatures =
  ScalarFunctionFeatures {
    -- | The char_length() function. Returns the number of Unicode characters in a STRING.
    scalarFunctionFeaturesChar_length :: Bool,
    -- | The character_length() function. Returns the number of Unicode characters in a STRING.
    scalarFunctionFeaturesCharacter_length :: Bool,
    -- | The coalesce() function. Returns the first non-null value in a list of expressions.
    scalarFunctionFeaturesCoalesce :: Bool,
    -- | The elementId() function. Returns a node identifier, unique within a specific transaction and DBMS.; Returns a relationship identifier, unique within a specific transaction and DBMS.
    scalarFunctionFeaturesElementId :: Bool,
    -- | The endNode() function. Returns a relationship identifier, unique within a specific transaction and DBMS.
    scalarFunctionFeaturesEndNode :: Bool,
    -- | The head() function. Returns the first element in a LIST<ANY>.
    scalarFunctionFeaturesHead :: Bool,
    -- | The id() function. [Deprecated] Returns the id of a NODE. Replaced by elementId().; [Deprecated] Returns the id of a RELATIONSHIP. Replaced by elementId().
    scalarFunctionFeaturesId :: Bool,
    -- | The last() function. Returns the last element in a LIST<ANY>.
    scalarFunctionFeaturesLast :: Bool,
    -- | The length() function. Returns the length of a PATH.
    scalarFunctionFeaturesLength :: Bool,
    -- | The nullIf() function. Returns null if the two given parameters are equivalent, otherwise returns the value of the first parameter.
    scalarFunctionFeaturesNullIf :: Bool,
    -- | The properties() function. Returns a MAP containing all the properties of a MAP.; Returns a MAP containing all the properties of a NODE.; Returns a MAP containing all the properties of a RELATIONSHIP.
    scalarFunctionFeaturesProperties :: Bool,
    -- | The randomUUID() function. Generates a random UUID.
    scalarFunctionFeaturesRandomUUID :: Bool,
    -- | The size() function. Returns the number of items in a LIST<ANY>.; Returns the number of Unicode characters in a STRING.
    scalarFunctionFeaturesSize :: Bool,
    -- | The startNode() function. Returns the start NODE of a RELATIONSHIP.
    scalarFunctionFeaturesStartNode :: Bool,
    -- | The toBoolean() function. Converts a STRING value to a BOOLEAN value.; Converts a BOOLEAN value to a BOOLEAN value.; Converts an INTEGER value to a BOOLEAN value.
    scalarFunctionFeaturesToBoolean :: Bool,
    -- | The toBooleanOrNull() function. Converts a value to a BOOLEAN value, or null if the value cannot be converted.
    scalarFunctionFeaturesToBooleanOrNull :: Bool,
    -- | The toFloat() function. Converts an INTEGER value to a FLOAT value.; Converts a STRING value to a FLOAT value.
    scalarFunctionFeaturesToFloat :: Bool,
    -- | The toFloatOrNull() function. Converts a value to a FLOAT value, or null if the value cannot be converted.
    scalarFunctionFeaturesToFloatOrNull :: Bool,
    -- | The toInteger() function. Converts a FLOAT value to an INTEGER value.; Converts a BOOLEAN value to an INTEGER value.; Converts a STRING value to an INTEGER value.
    scalarFunctionFeaturesToInteger :: Bool,
    -- | The toIntegerOrNull() function. Converts a value to an INTEGER value, or null if the value cannot be converted.
    scalarFunctionFeaturesToIntegerOrNull :: Bool,
    -- | The type() function. Returns a STRING representation of the RELATIONSHIP type.
    scalarFunctionFeaturesType :: Bool,
    -- | The valueType() function. Returns a STRING representation of the most precise value type that the given expression evaluates to.
    scalarFunctionFeaturesValueType :: Bool}
  deriving (Eq, Ord, Read, Show)

_ScalarFunctionFeatures = Core.Name "hydra.cypher.features.ScalarFunctionFeatures"

_ScalarFunctionFeatures_char_length = Core.Name "char_length"

_ScalarFunctionFeatures_character_length = Core.Name "character_length"

_ScalarFunctionFeatures_coalesce = Core.Name "coalesce"

_ScalarFunctionFeatures_elementId = Core.Name "elementId"

_ScalarFunctionFeatures_endNode = Core.Name "endNode"

_ScalarFunctionFeatures_head = Core.Name "head"

_ScalarFunctionFeatures_id = Core.Name "id"

_ScalarFunctionFeatures_last = Core.Name "last"

_ScalarFunctionFeatures_length = Core.Name "length"

_ScalarFunctionFeatures_nullIf = Core.Name "nullIf"

_ScalarFunctionFeatures_properties = Core.Name "properties"

_ScalarFunctionFeatures_randomUUID = Core.Name "randomUUID"

_ScalarFunctionFeatures_size = Core.Name "size"

_ScalarFunctionFeatures_startNode = Core.Name "startNode"

_ScalarFunctionFeatures_toBoolean = Core.Name "toBoolean"

_ScalarFunctionFeatures_toBooleanOrNull = Core.Name "toBooleanOrNull"

_ScalarFunctionFeatures_toFloat = Core.Name "toFloat"

_ScalarFunctionFeatures_toFloatOrNull = Core.Name "toFloatOrNull"

_ScalarFunctionFeatures_toInteger = Core.Name "toInteger"

_ScalarFunctionFeatures_toIntegerOrNull = Core.Name "toIntegerOrNull"

_ScalarFunctionFeatures_type = Core.Name "type"

_ScalarFunctionFeatures_valueType = Core.Name "valueType"

-- | Spatial functions
data SpatialFunctionFeatures =
  SpatialFunctionFeatures {
    -- | The point.distance() function. Returns a FLOAT representing the geodesic distance between any two points in the same CRS.
    spatialFunctionFeaturesPointDistance :: Bool,
    -- | The point() function. Returns a 2D point object, given two coordinate values in the Cartesian coordinate system.; Returns a 3D point object, given three coordinate values in the Cartesian coordinate system.; Returns a 2D point object, given two coordinate values in the WGS 84 geographic coordinate system.; Returns a 3D point object, given three coordinate values in the WGS 84 geographic coordinate system.
    spatialFunctionFeaturesPoint :: Bool,
    -- | The point.withinBBox() function. Returns true if the provided point is within the bounding box defined by the two provided points, lowerLeft and upperRight.
    spatialFunctionFeaturesPointWithinBBox :: Bool}
  deriving (Eq, Ord, Read, Show)

_SpatialFunctionFeatures = Core.Name "hydra.cypher.features.SpatialFunctionFeatures"

_SpatialFunctionFeatures_pointDistance = Core.Name "pointDistance"

_SpatialFunctionFeatures_point = Core.Name "point"

_SpatialFunctionFeatures_pointWithinBBox = Core.Name "pointWithinBBox"

-- | String functions
data StringFunctionFeatures =
  StringFunctionFeatures {
    -- | The btrim() function. Returns the given STRING with leading and trailing whitespace removed.; Returns the given STRING with leading and trailing trimCharacterString characters removed. Introduced in 5.20.
    stringFunctionFeaturesBtrim :: Bool,
    -- | The left() function. Returns a STRING containing the specified number (INTEGER) of leftmost characters in the given STRING.
    stringFunctionFeaturesLeft :: Bool,
    -- | The lower() function. Returns the given STRING in lowercase. This function is an alias to the toLower() function, and it was introduced as part of Cypher's GQL conformance. Introduced in 5.21.
    stringFunctionFeaturesLower :: Bool,
    -- | The ltrim() function. Returns the given STRING with leading whitespace removed.; Returns the given STRING with leading trimCharacterString characters removed. Introduced in 5.20.
    stringFunctionFeaturesLtrim :: Bool,
    -- | The normalize() function. Returns the given STRING normalized according to the normalization CypherFunctionForm NFC. Introduced in 5.17.; Returns the given STRING normalized according to the specified normalization CypherFunctionForm. Introduced in 5.17.
    stringFunctionFeaturesNormalize :: Bool,
    -- | The replace() function. Returns a STRING in which all occurrences of a specified search STRING in the given STRING have been replaced by another (specified) replacement STRING.
    stringFunctionFeaturesReplace :: Bool,
    -- | The reverse() function. Returns a STRING in which the order of all characters in the given STRING have been reversed.
    stringFunctionFeaturesReverse :: Bool,
    -- | The right() function. Returns a STRING containing the specified number of rightmost characters in the given STRING.
    stringFunctionFeaturesRight :: Bool,
    -- | The rtrim() function. Returns the given STRING with trailing whitespace removed.; Returns the given STRING with trailing trimCharacterString characters removed. Introduced in 5.20.
    stringFunctionFeaturesRtrim :: Bool,
    -- | The split() function. Returns a LIST<STRING> resulting from the splitting of the given STRING around matches of the given delimiter.; Returns a LIST<STRING> resulting from the splitting of the given STRING around matches of any of the given delimiters.
    stringFunctionFeaturesSplit :: Bool,
    -- | The substring() function. Returns a substring of the given STRING, beginning with a 0-based index start.; Returns a substring of a given length from the given STRING, beginning with a 0-based index start.
    stringFunctionFeaturesSubstring :: Bool,
    -- | The toLower() function. Returns the given STRING in lowercase.
    stringFunctionFeaturesToLower :: Bool,
    -- | The toString() function. Converts an INTEGER, FLOAT, BOOLEAN, POINT or temporal type (i.e. DATE, ZONED TIME, LOCAL TIME, ZONED DATETIME, LOCAL DATETIME or DURATION) value to a STRING.
    stringFunctionFeaturesToString :: Bool,
    -- | The toStringOrNull() function. Converts an INTEGER, FLOAT, BOOLEAN, POINT or temporal type (i.e. DATE, ZONED TIME, LOCAL TIME, ZONED DATETIME, LOCAL DATETIME or DURATION) value to a STRING, or null if the value cannot be converted.
    stringFunctionFeaturesToStringOrNull :: Bool,
    -- | The toUpper() function. Returns the given STRING in uppercase.
    stringFunctionFeaturesToUpper :: Bool,
    -- | The trim() function. Returns the given STRING with leading and trailing whitespace removed.; Returns the given STRING with the leading and/or trailing trimCharacterString character removed. Introduced in 5.20.
    stringFunctionFeaturesTrim :: Bool,
    -- | The upper() function. Returns the given STRING in uppercase. This function is an alias to the toUpper() function, and it was introduced as part of Cypher's GQL conformance. Introduced in 5.21.
    stringFunctionFeaturesUpper :: Bool}
  deriving (Eq, Ord, Read, Show)

_StringFunctionFeatures = Core.Name "hydra.cypher.features.StringFunctionFeatures"

_StringFunctionFeatures_btrim = Core.Name "btrim"

_StringFunctionFeatures_left = Core.Name "left"

_StringFunctionFeatures_lower = Core.Name "lower"

_StringFunctionFeatures_ltrim = Core.Name "ltrim"

_StringFunctionFeatures_normalize = Core.Name "normalize"

_StringFunctionFeatures_replace = Core.Name "replace"

_StringFunctionFeatures_reverse = Core.Name "reverse"

_StringFunctionFeatures_right = Core.Name "right"

_StringFunctionFeatures_rtrim = Core.Name "rtrim"

_StringFunctionFeatures_split = Core.Name "split"

_StringFunctionFeatures_substring = Core.Name "substring"

_StringFunctionFeatures_toLower = Core.Name "toLower"

_StringFunctionFeatures_toString = Core.Name "toString"

_StringFunctionFeatures_toStringOrNull = Core.Name "toStringOrNull"

_StringFunctionFeatures_toUpper = Core.Name "toUpper"

_StringFunctionFeatures_trim = Core.Name "trim"

_StringFunctionFeatures_upper = Core.Name "upper"

-- | Temporal duration functions
data TemporalDurationFunctionFeatures =
  TemporalDurationFunctionFeatures {
    -- | The duration() function. Constructs a DURATION value.
    temporalDurationFunctionFeaturesDuration :: Bool,
    -- | The duration.between() function. Computes the DURATION between the from instant (inclusive) and the to instant (exclusive) in logical units.
    temporalDurationFunctionFeaturesDurationBetween :: Bool,
    -- | The duration.inDays() function. Computes the DURATION between the from instant (inclusive) and the to instant (exclusive) in days.
    temporalDurationFunctionFeaturesDurationInDays :: Bool,
    -- | The duration.inMonths() function. Computes the DURATION between the from instant (inclusive) and the to instant (exclusive) in months.
    temporalDurationFunctionFeaturesDurationInMonths :: Bool,
    -- | The duration.inSeconds() function. Computes the DURATION between the from instant (inclusive) and the to instant (exclusive) in seconds.
    temporalDurationFunctionFeaturesDurationInSeconds :: Bool}
  deriving (Eq, Ord, Read, Show)

_TemporalDurationFunctionFeatures = Core.Name "hydra.cypher.features.TemporalDurationFunctionFeatures"

_TemporalDurationFunctionFeatures_duration = Core.Name "duration"

_TemporalDurationFunctionFeatures_durationBetween = Core.Name "durationBetween"

_TemporalDurationFunctionFeatures_durationInDays = Core.Name "durationInDays"

_TemporalDurationFunctionFeatures_durationInMonths = Core.Name "durationInMonths"

_TemporalDurationFunctionFeatures_durationInSeconds = Core.Name "durationInSeconds"

-- | Temporal instant functions
data TemporalInstantFunctionFeatures =
  TemporalInstantFunctionFeatures {
    -- | The date() function. Creates a DATE instant.
    temporalInstantFunctionFeaturesDate :: Bool,
    -- | The date.realtime() function. Returns the current DATE instant using the realtime clock.
    temporalInstantFunctionFeaturesDateRealtime :: Bool,
    -- | The date.statement() function. Returns the current DATE instant using the statement clock.
    temporalInstantFunctionFeaturesDateStatement :: Bool,
    -- | The date.transaction() function. Returns the current DATE instant using the transaction clock.
    temporalInstantFunctionFeaturesDateTransaction :: Bool,
    -- | The date.truncate() function. Truncates the given temporal value to a DATE instant using the specified unit.
    temporalInstantFunctionFeaturesDateTruncate :: Bool,
    -- | The datetime() function. Creates a ZONED DATETIME instant.
    temporalInstantFunctionFeaturesDatetime :: Bool,
    -- | The datetime.fromepoch() function. Creates a ZONED DATETIME given the seconds and nanoseconds since the start of the epoch.
    temporalInstantFunctionFeaturesDatetimeFromepoch :: Bool,
    -- | The datetime.fromepochmillis() function. Creates a ZONED DATETIME given the milliseconds since the start of the epoch.
    temporalInstantFunctionFeaturesDatetimeFromepochmillis :: Bool,
    -- | The datetime.realtime() function. Returns the current ZONED DATETIME instant using the realtime clock.
    temporalInstantFunctionFeaturesDatetimeRealtime :: Bool,
    -- | The datetime.statement() function. Returns the current ZONED DATETIME instant using the statement clock.
    temporalInstantFunctionFeaturesDatetimeStatement :: Bool,
    -- | The datetime.transaction() function. Returns the current ZONED DATETIME instant using the transaction clock.
    temporalInstantFunctionFeaturesDatetimeTransaction :: Bool,
    -- | The datetime.truncate() function. Truncates the given temporal value to a ZONED DATETIME instant using the specified unit.
    temporalInstantFunctionFeaturesDatetimeTruncate :: Bool,
    -- | The localdatetime() function. Creates a LOCAL DATETIME instant.
    temporalInstantFunctionFeaturesLocaldatetime :: Bool,
    -- | The localdatetime.realtime() function. Returns the current LOCAL DATETIME instant using the realtime clock.
    temporalInstantFunctionFeaturesLocaldatetimeRealtime :: Bool,
    -- | The localdatetime.statement() function. Returns the current LOCAL DATETIME instant using the statement clock.
    temporalInstantFunctionFeaturesLocaldatetimeStatement :: Bool,
    -- | The localdatetime.transaction() function. Returns the current LOCAL DATETIME instant using the transaction clock.
    temporalInstantFunctionFeaturesLocaldatetimeTransaction :: Bool,
    -- | The localdatetime.truncate() function. Truncates the given temporal value to a LOCAL DATETIME instant using the specified unit.
    temporalInstantFunctionFeaturesLocaldatetimeTruncate :: Bool,
    -- | The localtime() function. Creates a LOCAL TIME instant.
    temporalInstantFunctionFeaturesLocaltime :: Bool,
    -- | The localtime.realtime() function. Returns the current LOCAL TIME instant using the realtime clock.
    temporalInstantFunctionFeaturesLocaltimeRealtime :: Bool,
    -- | The localtime.statement() function. Returns the current LOCAL TIME instant using the statement clock.
    temporalInstantFunctionFeaturesLocaltimeStatement :: Bool,
    -- | The localtime.transaction() function. Returns the current LOCAL TIME instant using the transaction clock.
    temporalInstantFunctionFeaturesLocaltimeTransaction :: Bool,
    -- | The localtime.truncate() function. Truncates the given temporal value to a LOCAL TIME instant using the specified unit.
    temporalInstantFunctionFeaturesLocaltimeTruncate :: Bool,
    -- | The time() function. Creates a ZONED TIME instant.
    temporalInstantFunctionFeaturesTime :: Bool,
    -- | The time.realtime() function. Returns the current ZONED TIME instant using the realtime clock.
    temporalInstantFunctionFeaturesTimeRealtime :: Bool,
    -- | The time.statement() function. Returns the current ZONED TIME instant using the statement clock.
    temporalInstantFunctionFeaturesTimeStatement :: Bool,
    -- | The time.transaction() function. Returns the current ZONED TIME instant using the transaction clock.
    temporalInstantFunctionFeaturesTimeTransaction :: Bool,
    -- | The time.truncate() function. Truncates the given temporal value to a ZONED TIME instant using the specified unit.
    temporalInstantFunctionFeaturesTimeTruncate :: Bool}
  deriving (Eq, Ord, Read, Show)

_TemporalInstantFunctionFeatures = Core.Name "hydra.cypher.features.TemporalInstantFunctionFeatures"

_TemporalInstantFunctionFeatures_date = Core.Name "date"

_TemporalInstantFunctionFeatures_dateRealtime = Core.Name "dateRealtime"

_TemporalInstantFunctionFeatures_dateStatement = Core.Name "dateStatement"

_TemporalInstantFunctionFeatures_dateTransaction = Core.Name "dateTransaction"

_TemporalInstantFunctionFeatures_dateTruncate = Core.Name "dateTruncate"

_TemporalInstantFunctionFeatures_datetime = Core.Name "datetime"

_TemporalInstantFunctionFeatures_datetimeFromepoch = Core.Name "datetimeFromepoch"

_TemporalInstantFunctionFeatures_datetimeFromepochmillis = Core.Name "datetimeFromepochmillis"

_TemporalInstantFunctionFeatures_datetimeRealtime = Core.Name "datetimeRealtime"

_TemporalInstantFunctionFeatures_datetimeStatement = Core.Name "datetimeStatement"

_TemporalInstantFunctionFeatures_datetimeTransaction = Core.Name "datetimeTransaction"

_TemporalInstantFunctionFeatures_datetimeTruncate = Core.Name "datetimeTruncate"

_TemporalInstantFunctionFeatures_localdatetime = Core.Name "localdatetime"

_TemporalInstantFunctionFeatures_localdatetimeRealtime = Core.Name "localdatetimeRealtime"

_TemporalInstantFunctionFeatures_localdatetimeStatement = Core.Name "localdatetimeStatement"

_TemporalInstantFunctionFeatures_localdatetimeTransaction = Core.Name "localdatetimeTransaction"

_TemporalInstantFunctionFeatures_localdatetimeTruncate = Core.Name "localdatetimeTruncate"

_TemporalInstantFunctionFeatures_localtime = Core.Name "localtime"

_TemporalInstantFunctionFeatures_localtimeRealtime = Core.Name "localtimeRealtime"

_TemporalInstantFunctionFeatures_localtimeStatement = Core.Name "localtimeStatement"

_TemporalInstantFunctionFeatures_localtimeTransaction = Core.Name "localtimeTransaction"

_TemporalInstantFunctionFeatures_localtimeTruncate = Core.Name "localtimeTruncate"

_TemporalInstantFunctionFeatures_time = Core.Name "time"

_TemporalInstantFunctionFeatures_timeRealtime = Core.Name "timeRealtime"

_TemporalInstantFunctionFeatures_timeStatement = Core.Name "timeStatement"

_TemporalInstantFunctionFeatures_timeTransaction = Core.Name "timeTransaction"

_TemporalInstantFunctionFeatures_timeTruncate = Core.Name "timeTruncate"

-- | Trigonometric functions
data TrigonometricFunctionFeatures =
  TrigonometricFunctionFeatures {
    -- | The acos() function. Returns the arccosine of a FLOAT in radians.
    trigonometricFunctionFeaturesAcos :: Bool,
    -- | The asin() function. Returns the arcsine of a FLOAT in radians.
    trigonometricFunctionFeaturesAsin :: Bool,
    -- | The atan() function. Returns the arctangent of a FLOAT in radians.
    trigonometricFunctionFeaturesAtan :: Bool,
    -- | The atan2() function. Returns the arctangent2 of a set of coordinates in radians.
    trigonometricFunctionFeaturesAtan2 :: Bool,
    -- | The cos() function. Returns the cosine of a FLOAT.
    trigonometricFunctionFeaturesCos :: Bool,
    -- | The cot() function. Returns the cotangent of a FLOAT.
    trigonometricFunctionFeaturesCot :: Bool,
    -- | The degrees() function. Converts radians to degrees.
    trigonometricFunctionFeaturesDegrees :: Bool,
    -- | The haversin() function. Returns half the versine of a number.
    trigonometricFunctionFeaturesHaversin :: Bool,
    -- | The pi() function. Returns the mathematical constant pi.
    trigonometricFunctionFeaturesPi :: Bool,
    -- | The radians() function. Converts degrees to radians.
    trigonometricFunctionFeaturesRadians :: Bool,
    -- | The sin() function. Returns the sine of a FLOAT.
    trigonometricFunctionFeaturesSin :: Bool,
    -- | The tan() function. Returns the tangent of a FLOAT.
    trigonometricFunctionFeaturesTan :: Bool}
  deriving (Eq, Ord, Read, Show)

_TrigonometricFunctionFeatures = Core.Name "hydra.cypher.features.TrigonometricFunctionFeatures"

_TrigonometricFunctionFeatures_acos = Core.Name "acos"

_TrigonometricFunctionFeatures_asin = Core.Name "asin"

_TrigonometricFunctionFeatures_atan = Core.Name "atan"

_TrigonometricFunctionFeatures_atan2 = Core.Name "atan2"

_TrigonometricFunctionFeatures_cos = Core.Name "cos"

_TrigonometricFunctionFeatures_cot = Core.Name "cot"

_TrigonometricFunctionFeatures_degrees = Core.Name "degrees"

_TrigonometricFunctionFeatures_haversin = Core.Name "haversin"

_TrigonometricFunctionFeatures_pi = Core.Name "pi"

_TrigonometricFunctionFeatures_radians = Core.Name "radians"

_TrigonometricFunctionFeatures_sin = Core.Name "sin"

_TrigonometricFunctionFeatures_tan = Core.Name "tan"

-- | Vector functions
data VectorFunctionFeatures =
  VectorFunctionFeatures {
    -- | The vector.similarity.cosine() function. Returns a FLOAT representing the similarity between the argument vectors based on their cosine.
    vectorFunctionFeaturesVectorSimilarityCosine :: Bool,
    -- | The vector.similarity.euclidean() function. Returns a FLOAT representing the similarity between the argument vectors based on their Euclidean distance.
    vectorFunctionFeaturesVectorSimilarityEuclidean :: Bool}
  deriving (Eq, Ord, Read, Show)

_VectorFunctionFeatures = Core.Name "hydra.cypher.features.VectorFunctionFeatures"

_VectorFunctionFeatures_vectorSimilarityCosine = Core.Name "vectorSimilarityCosine"

_VectorFunctionFeatures_vectorSimilarityEuclidean = Core.Name "vectorSimilarityEuclidean"

-- | List functionality
data ListFeatures =
  ListFeatures {
    -- | Basic list comprehensions
    listFeaturesListComprehension :: Bool,
    -- | List range comprehensions (e.g. [1..10])
    listFeaturesListRange :: Bool}
  deriving (Eq, Ord, Read, Show)

_ListFeatures = Core.Name "hydra.cypher.features.ListFeatures"

_ListFeatures_listComprehension = Core.Name "listComprehension"

_ListFeatures_listRange = Core.Name "listRange"

-- | Various types of literal values
data LiteralFeatures =
  LiteralFeatures {
    -- | Boolean literals (note: included by most if not all implementations).
    literalFeaturesBoolean :: Bool,
    -- | Double-precision floating-point literals
    literalFeaturesDouble :: Bool,
    -- | Integer literals
    literalFeaturesInteger :: Bool,
    -- | List literals
    literalFeaturesList :: Bool,
    -- | Map literals
    literalFeaturesMap :: Bool,
    -- | The NULL literal
    literalFeaturesNull :: Bool,
    -- | String literals (note: included by most if not all implementations).
    literalFeaturesString :: Bool}
  deriving (Eq, Ord, Read, Show)

_LiteralFeatures = Core.Name "hydra.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"

-- | Logical operations
data LogicalFeatures =
  LogicalFeatures {
    -- | The AND operator
    logicalFeaturesAnd :: Bool,
    -- | The NOT operator
    logicalFeaturesNot :: Bool,
    -- | The OR operator
    logicalFeaturesOr :: Bool,
    -- | The XOR operator
    logicalFeaturesXor :: Bool}
  deriving (Eq, Ord, Read, Show)

_LogicalFeatures = Core.Name "hydra.cypher.features.LogicalFeatures"

_LogicalFeatures_and = Core.Name "and"

_LogicalFeatures_not = Core.Name "not"

_LogicalFeatures_or = Core.Name "or"

_LogicalFeatures_xor = Core.Name "xor"

-- | Match queries
data MatchFeatures =
  MatchFeatures {
    -- | The basic (non-optional) MATCH clause
    matchFeaturesMatch :: Bool,
    -- | OPTIONAL MATCH
    matchFeaturesOptionalMatch :: Bool}
  deriving (Eq, Ord, Read, Show)

_MatchFeatures = Core.Name "hydra.cypher.features.MatchFeatures"

_MatchFeatures_match = Core.Name "match"

_MatchFeatures_optionalMatch = Core.Name "optionalMatch"

-- | Merge operations
data MergeFeatures =
  MergeFeatures {
    -- | The basic MERGE clause
    mergeFeaturesMerge :: Bool,
    -- | MERGE with the ON CREATE action
    mergeFeaturesMergeOnCreate :: Bool,
    -- | MERGE with the ON MATCH action
    mergeFeaturesMergeOnMatch :: Bool}
  deriving (Eq, Ord, Read, Show)

_MergeFeatures = Core.Name "hydra.cypher.features.MergeFeatures"

_MergeFeatures_merge = Core.Name "merge"

_MergeFeatures_mergeOnCreate = Core.Name "mergeOnCreate"

_MergeFeatures_mergeOnMatch = Core.Name "mergeOnMatch"

-- | Node patterns
data NodePatternFeatures =
  NodePatternFeatures {
    -- | Specifying multiple labels in a node pattern
    nodePatternFeaturesMultipleLabels :: Bool,
    -- | Specifying a parameter as part of a node pattern
    nodePatternFeaturesParameter :: Bool,
    -- | Specifying a key/value map of properties in a node pattern
    nodePatternFeaturesPropertyMap :: Bool,
    -- | Binding a variable to a node in a node pattern (note: included by most if not all implementations).
    nodePatternFeaturesVariableNode :: Bool,
    -- | Omitting labels from a node pattern
    nodePatternFeaturesWildcardLabel :: Bool}
  deriving (Eq, Ord, Read, Show)

_NodePatternFeatures = Core.Name "hydra.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"

-- | IS NULL / IS NOT NULL checks
data NullFeatures =
  NullFeatures {
    -- | The IS NULL operator
    nullFeaturesIsNull :: Bool,
    -- | The IS NOT NULL operator
    nullFeaturesIsNotNull :: Bool}
  deriving (Eq, Ord, Read, Show)

_NullFeatures = Core.Name "hydra.cypher.features.NullFeatures"

_NullFeatures_isNull = Core.Name "isNull"

_NullFeatures_isNotNull = Core.Name "isNotNull"

-- | Path functions only found in OpenCypher
data PathFeatures =
  PathFeatures {
    -- | The shortestPath() function
    pathFeaturesShortestPath :: Bool}
  deriving (Eq, Ord, Read, Show)

_PathFeatures = Core.Name "hydra.cypher.features.PathFeatures"

_PathFeatures_shortestPath = Core.Name "shortestPath"

-- | Procedure calls
data ProcedureCallFeatures =
  ProcedureCallFeatures {
    -- | CALL within a query
    procedureCallFeaturesInQueryCall :: Bool,
    -- | Standalone / top-level CALL
    procedureCallFeaturesStandaloneCall :: Bool,
    -- | The YIELD clause in CALL
    procedureCallFeaturesYield :: Bool}
  deriving (Eq, Ord, Read, Show)

_ProcedureCallFeatures = Core.Name "hydra.cypher.features.ProcedureCallFeatures"

_ProcedureCallFeatures_inQueryCall = Core.Name "inQueryCall"

_ProcedureCallFeatures_standaloneCall = Core.Name "standaloneCall"

_ProcedureCallFeatures_yield = Core.Name "yield"

-- | Projections
data ProjectionFeatures =
  ProjectionFeatures {
    -- | The LIMIT clause
    projectionFeaturesLimit :: Bool,
    -- | The ORDER BY clause
    projectionFeaturesOrderBy :: Bool,
    -- | The DISTINCT keyword
    projectionFeaturesProjectDistinct :: Bool,
    -- | The * projection
    projectionFeaturesProjectAll :: Bool,
    -- | The AS keyword
    projectionFeaturesProjectAs :: Bool,
    -- | The SKIP clause
    projectionFeaturesSkip :: Bool,
    -- | The ASC/ASCENDING and DESC/DESCENDING keywords
    projectionFeaturesSortOrder :: Bool}
  deriving (Eq, Ord, Read, Show)

_ProjectionFeatures = Core.Name "hydra.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"

-- | Quantifier expressions
data QuantifierFeatures =
  QuantifierFeatures {
    -- | The ALL quantifier
    quantifierFeaturesAll :: Bool,
    -- | The ANY quantifier
    quantifierFeaturesAny :: Bool,
    -- | The NONE quantifier
    quantifierFeaturesNone :: Bool,
    -- | The SINGLE quantifier
    quantifierFeaturesSingle :: Bool}
  deriving (Eq, Ord, Read, Show)

_QuantifierFeatures = Core.Name "hydra.cypher.features.QuantifierFeatures"

_QuantifierFeatures_all = Core.Name "all"

_QuantifierFeatures_any = Core.Name "any"

_QuantifierFeatures_none = Core.Name "none"

_QuantifierFeatures_single = Core.Name "single"

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

_RangeLiteralFeatures = Core.Name "hydra.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"

-- | Specific syntax related to reading data from the graph.
data ReadingFeatures =
  ReadingFeatures {
    -- | The UNION operator
    readingFeaturesUnion :: Bool,
    -- | The UNION ALL operator
    readingFeaturesUnionAll :: Bool,
    -- | The UNWIND clause
    readingFeaturesUnwind :: Bool}
  deriving (Eq, Ord, Read, Show)

_ReadingFeatures = Core.Name "hydra.cypher.features.ReadingFeatures"

_ReadingFeatures_union = Core.Name "union"

_ReadingFeatures_unionAll = Core.Name "unionAll"

_ReadingFeatures_unwind = Core.Name "unwind"

-- | Relationship directions / arrow patterns
data RelationshipDirectionFeatures =
  RelationshipDirectionFeatures {
    -- | The two-headed arrow (<-[]->) relationship direction
    relationshipDirectionFeaturesBoth :: Bool,
    -- | The left arrow (<-[]-) relationship direction
    relationshipDirectionFeaturesLeft :: Bool,
    -- | The headless arrow (-[]-) relationship direction
    relationshipDirectionFeaturesNeither :: Bool,
    -- | The right arrow (-[]->) relationship direction
    relationshipDirectionFeaturesRight :: Bool}
  deriving (Eq, Ord, Read, Show)

_RelationshipDirectionFeatures = Core.Name "hydra.cypher.features.RelationshipDirectionFeatures"

_RelationshipDirectionFeatures_both = Core.Name "both"

_RelationshipDirectionFeatures_left = Core.Name "left"

_RelationshipDirectionFeatures_neither = Core.Name "neither"

_RelationshipDirectionFeatures_right = Core.Name "right"

-- | Relationship patterns
data RelationshipPatternFeatures =
  RelationshipPatternFeatures {
    -- | Specifying a disjunction of multiple types in a relationship pattern
    relationshipPatternFeaturesMultipleTypes :: Bool,
    -- | Binding a variable to a relationship in a relationship pattern (note: included by most if not all implementations).
    relationshipPatternFeaturesVariableRelationship :: Bool,
    -- | Omitting types from a relationship pattern
    relationshipPatternFeaturesWildcardType :: Bool}
  deriving (Eq, Ord, Read, Show)

_RelationshipPatternFeatures = Core.Name "hydra.cypher.features.RelationshipPatternFeatures"

_RelationshipPatternFeatures_multipleTypes = Core.Name "multipleTypes"

_RelationshipPatternFeatures_variableRelationship = Core.Name "variableRelationship"

_RelationshipPatternFeatures_wildcardType = Core.Name "wildcardType"

-- | REMOVE operations
data RemoveFeatures =
  RemoveFeatures {
    -- | REMOVE Variable:NodeLabels
    removeFeaturesByLabel :: Bool,
    -- | REMOVE PropertyExpression
    removeFeaturesByProperty :: Bool}
  deriving (Eq, Ord, Read, Show)

_RemoveFeatures = Core.Name "hydra.cypher.features.RemoveFeatures"

_RemoveFeatures_byLabel = Core.Name "byLabel"

_RemoveFeatures_byProperty = Core.Name "byProperty"

-- | Set definitions
data SetFeatures =
  SetFeatures {
    -- | Defining a set using PropertyExpression = Expression
    setFeaturesPropertyEquals :: Bool,
    -- | Defining a set using Variable = Expression
    setFeaturesVariableEquals :: Bool,
    -- | Defining a set using Variable += Expression
    setFeaturesVariablePlusEquals :: Bool,
    -- | Defining a set using Variable:NodeLabels
    setFeaturesVariableWithNodeLabels :: Bool}
  deriving (Eq, Ord, Read, Show)

_SetFeatures = Core.Name "hydra.cypher.features.SetFeatures"

_SetFeatures_propertyEquals = Core.Name "propertyEquals"

_SetFeatures_variableEquals = Core.Name "variableEquals"

_SetFeatures_variablePlusEquals = Core.Name "variablePlusEquals"

_SetFeatures_variableWithNodeLabels = Core.Name "variableWithNodeLabels"

-- | String functions/keywords only found in OpenCypher
data StringFeatures =
  StringFeatures {
    -- | The contains() function / CONTAINS
    stringFeaturesContains :: Bool,
    -- | The endsWith() function / ENDS WITH
    stringFeaturesEndsWith :: Bool,
    -- | The in() function / IN
    stringFeaturesIn :: Bool,
    -- | The startsWith() function / STARTS WITH
    stringFeaturesStartsWith :: Bool}
  deriving (Eq, Ord, Read, Show)

_StringFeatures = Core.Name "hydra.cypher.features.StringFeatures"

_StringFeatures_contains = Core.Name "contains"

_StringFeatures_endsWith = Core.Name "endsWith"

_StringFeatures_in = Core.Name "in"

_StringFeatures_startsWith = Core.Name "startsWith"

-- | Specific syntax related to updating data in the graph
data UpdatingFeatures =
  UpdatingFeatures {
    -- | The CREATE clause
    updatingFeaturesCreate :: Bool,
    -- | The SET clause
    updatingFeaturesSet :: Bool,
    -- | Multi-part queries using WITH
    updatingFeaturesWith :: Bool}
  deriving (Eq, Ord, Read, Show)

_UpdatingFeatures = Core.Name "hydra.cypher.features.UpdatingFeatures"

_UpdatingFeatures_create = Core.Name "create"

_UpdatingFeatures_set = Core.Name "set"

_UpdatingFeatures_with = Core.Name "with"