hydra-0.15.0: src/main/haskell/Hydra/Sources/Tinkerpop/Gremlin.hs
module Hydra.Sources.Tinkerpop.Gremlin where
-- Standard imports for type-level sources outside of the kernel
import Hydra.Kernel
import Hydra.Dsl.Annotations
import Hydra.Dsl.Bootstrap
import Hydra.Dsl.Types ((>:))
import qualified Hydra.Dsl.Types as T
import qualified Hydra.Sources.Kernel.Types.Core as Core
import qualified Data.List as L
import qualified Data.Map as M
import qualified Data.Set as S
import qualified Data.Maybe as Y
ns :: Namespace
ns = Namespace "hydra.tinkerpop.gremlin"
define :: String -> Type -> Binding
define = defineType ns
gremlin :: String -> Type
gremlin = typeref ns
-- Helper for argument types (value or variable)
defArgument :: String -> Type -> Binding
defArgument name typ = define name $ T.union [
"value">: typ,
"variable">: gremlin "Identifier"]
module_ :: Module
module_ = Module {
moduleNamespace = ns,
moduleDefinitions = (map toTypeDef definitions),
moduleTermDependencies = [Core.ns],
moduleTypeDependencies = [Core.ns],
moduleDescription = Just ("A Gremlin model, based on the Gremlin ANTLR grammar "
++ "(master branch, as of 2024-06-30).")}
where
definitions = [
queryList,
query,
traversalSourceQuery,
rootTraversalQuery,
traversalSource,
transactionPart,
rootTraversal,
traversalSourceSelfMethod,
genericLiteralArgumentAndOptionalTraversalBiFunctionArgument,
stringArgumentAndGenericLiteralArgument,
stringArgumentAndOptionalGenericLiteralArgument,
traversalSourceSpawnMethod,
genericLiteralMapNullableArgumentOrNestedTraversal,
serviceCall,
serviceArguments,
chainedTraversal,
chainedTraversalElement,
nestedTraversal,
terminatedTraversal,
traversalMethod,
stringArgumentOrNestedTraversal,
optionalTraversalScopeArgumentAndStringArgument,
stringArgumentAndOptionalStringLiteralVarargs,
traversalSackMethodArgumentOrIntegerArgument,
byArgs,
byOtherArgs,
traversalFunctionArgumentOrStringArgumentOrNestedTraversal,
chooseArgs,
predicateTraversalArgument,
nestedTraversalArgument,
dedupArgs,
scopeStringArgument,
predicateOrTraversal,
genericLiteralArgumentAndTraversalBiFunctionArgument,
fromArgs,
hasArgs,
hasStringArgumentAndOptionalStringLiteralVarargs,
hasStringArgumentAndOptionalStringLiteralVarargsRest,
stringNullableArgumentAndGenericLiteralArgument,
stringNullableArgumentAndTraversalPredicate,
hasTraversalTokenArgs,
hasTraversalTokenArgsRest,
genericLiteralArgumentAndTraversalPredicate,
traversalPredicateOrStringLiteralVarargs,
traversalPredicateOrGenericLiteralArgument,
optionArgs,
traversalPredicateAndNestedTraversal,
traversalMergeArgumentAndGenericLiteralMapNullableArgument,
traversalMergeArgumentAndNestedTraversal,
genericLiteralArgumentAndNestedTraversal,
propertyArgs,
traversalCardinalityArgumentAndObjects,
genericLiteralMapNullableArgumentAndTraversalCardinalityArgument,
rangeArgs,
optionalStringArgumentAndNestedTraversal,
optionalTraversalScopeArgumentAndIntegerArgument,
selectArgs,
popStringsArgument,
traversalPopArgumentAndNestedTraversal,
tailArgs,
toArgs,
directionAndVarargs,
valueMapArgs,
valueMapBooleanArgs,
whereArgs,
whereWithPredicateArgs,
withArgs,
withArgsKeys,
withArgsValues,
concatArgs,
replaceArgs,
splitArgs,
substringArgs,
dateAddArgs,
dateDiffArgs,
structureVertex,
traversalStrategy,
configuration,
keywordOrIdentifier,
traversalScope,
traversalToken,
traversalMerge,
traversalOrder,
traversalDirection,
traversalCardinality,
traversalColumn,
traversalPop,
traversalOperator,
traversalPick,
traversalDT,
traversalPredicate,
twoTraversalPredicates,
traversalTerminalMethod,
traversalSelfMethod,
traversalFunction,
rangeArgument,
withOptionKeys,
connectedComponentConstants,
pageRankConstants,
peerPressureConstants,
shortestPathConstants,
withOptionsValues,
ioOptionsKeys,
ioOptionsValues,
booleanArgument,
integerArgument,
floatArgument,
stringArgument,
stringNullableArgument,
dateArgument,
genericLiteralArgument,
genericLiteralListArgument,
genericLiteralMapArgument,
genericLiteralMapNullableArgument,
structureVertexArgument,
traversalCardinalityArgument,
traversalColumnArgument,
traversalDirectionArgument,
traversalMergeArgument,
traversalOrderArgument,
traversalPopArgument,
traversalSackMethodArgument,
traversalScopeArgument,
traversalTokenArgument,
traversalComparatorArgument,
traversalFunctionArgument,
traversalBiFunctionArgument,
traversalDTArgument,
genericLiteralList,
genericLiteralRange,
integerRange,
stringRange,
genericLiteralSet,
genericLiteralCollection,
genericLiteral,
genericLiteralMap,
mapEntry,
mapKey,
integerLiteral,
floatLiteral,
numericLiteral,
dateLiteral,
keyword,
identifier]
-- Type definitions
queryList :: Binding
queryList = define "QueryList" $ T.wrap $ nonemptyList $ gremlin "Query"
query :: Binding
query = define "Query" $ T.union [
"traversalSource">: gremlin "TraversalSourceQuery",
"rootTraversal">: gremlin "RootTraversalQuery",
"toString">: T.unit,
"empty">: T.unit]
traversalSourceQuery :: Binding
traversalSourceQuery = define "TraversalSourceQuery" $ T.record [
"source">: gremlin "TraversalSource",
"transactionPart">: T.optional $ gremlin "TransactionPart"]
rootTraversalQuery :: Binding
rootTraversalQuery = define "RootTraversalQuery" $ T.record [
"root">: gremlin "RootTraversal",
"terminalMethod">: T.optional $ gremlin "TraversalTerminalMethod"]
traversalSource :: Binding
traversalSource = define "TraversalSource" $ T.wrap $ T.list $ gremlin "TraversalSourceSelfMethod"
transactionPart :: Binding
transactionPart = define "TransactionPart" $ T.enum [
"begin",
"commit",
"rollback"]
rootTraversal :: Binding
rootTraversal = define "RootTraversal" $ T.record [
"source">: gremlin "TraversalSource",
"spawnMethod">: gremlin "TraversalSourceSpawnMethod",
"chained">: T.list $ gremlin "ChainedTraversalElement"]
traversalSourceSelfMethod :: Binding
traversalSourceSelfMethod = define "TraversalSourceSelfMethod" $ T.union [
"withBulk">: T.boolean,
"withPath">: T.unit,
"withSack">: gremlin "GenericLiteralArgumentAndOptionalTraversalBiFunctionArgument",
"withSideEffect">: gremlin "StringArgumentAndGenericLiteralArgument",
"withStrategies">: nonemptyList $ gremlin "TraversalStrategy",
"withoutStrategies">: nonemptyList $ gremlin "Identifier",
"with">: gremlin "StringArgumentAndOptionalGenericLiteralArgument"]
genericLiteralArgumentAndOptionalTraversalBiFunctionArgument :: Binding
genericLiteralArgumentAndOptionalTraversalBiFunctionArgument = define "GenericLiteralArgumentAndOptionalTraversalBiFunctionArgument" $ T.record [
"literal">: gremlin "GenericLiteralArgument",
"biFunction">: T.optional $ gremlin "TraversalBiFunctionArgument"]
stringArgumentAndGenericLiteralArgument :: Binding
stringArgumentAndGenericLiteralArgument = define "StringArgumentAndGenericLiteralArgument" $ T.record [
"string">: gremlin "StringArgument",
"literal">: gremlin "GenericLiteralArgument"]
stringArgumentAndOptionalGenericLiteralArgument :: Binding
stringArgumentAndOptionalGenericLiteralArgument = define "StringArgumentAndOptionalGenericLiteralArgument" $ T.record [
"string">: gremlin "StringArgument",
"literal">: T.optional $ gremlin "GenericLiteralArgument"]
traversalSourceSpawnMethod :: Binding
traversalSourceSpawnMethod = define "TraversalSourceSpawnMethod" $ T.union [
"addE">: gremlin "StringArgumentOrNestedTraversal",
"addV">: T.optional $ gremlin "StringArgumentOrNestedTraversal",
"e">: nonemptyList $ gremlin "GenericLiteralArgument",
"v">: nonemptyList $ gremlin "GenericLiteralArgument",
"mergeV">: gremlin "GenericLiteralMapNullableArgumentOrNestedTraversal",
"mergeE">: gremlin "GenericLiteralMapNullableArgumentOrNestedTraversal",
"inject">: nonemptyList $ gremlin "GenericLiteralArgument",
"io">: gremlin "StringArgument",
"call">: T.optional $ gremlin "ServiceCall",
"union">: T.list $ gremlin "NestedTraversal"]
genericLiteralMapNullableArgumentOrNestedTraversal :: Binding
genericLiteralMapNullableArgumentOrNestedTraversal = define "GenericLiteralMapNullableArgumentOrNestedTraversal" $ T.union [
"map">: gremlin "GenericLiteralMapNullableArgument",
"traversal">: gremlin "NestedTraversal"]
serviceCall :: Binding
serviceCall = define "ServiceCall" $ T.record [
"service">: gremlin "StringArgument",
"arguments">: gremlin "ServiceArguments"]
serviceArguments :: Binding
serviceArguments = define "ServiceArguments" $ T.union [
"map">: T.optional $ gremlin "GenericLiteralMapArgument",
"traversal">: T.optional $ gremlin "NestedTraversal"]
chainedTraversal :: Binding
chainedTraversal = define "ChainedTraversal" $ T.record [
"first">: gremlin "TraversalMethod",
"rest">: gremlin "ChainedTraversalElement"]
chainedTraversalElement :: Binding
chainedTraversalElement = define "ChainedTraversalElement" $ T.union [
"method">: gremlin "TraversalMethod",
"self">: gremlin "TraversalSelfMethod"]
nestedTraversal :: Binding
nestedTraversal = define "NestedTraversal" $ T.union [
"root">: gremlin "RootTraversal",
"chained">: gremlin "ChainedTraversal",
"anonymous">: gremlin "ChainedTraversal"]
terminatedTraversal :: Binding
terminatedTraversal = define "TerminatedTraversal" $ T.record [
"root">: gremlin "RootTraversal",
"terminal">: gremlin "TraversalTerminalMethod"]
traversalMethod :: Binding
traversalMethod = define "TraversalMethod" $ T.union [
"v">: nonemptyList $ gremlin "GenericLiteralArgument",
"e">: nonemptyList $ gremlin "GenericLiteralArgument",
"addE">: gremlin "StringArgumentOrNestedTraversal",
"addV">: T.optional $ gremlin "StringArgumentOrNestedTraversal",
"mergeE">: T.optional $ gremlin "GenericLiteralMapNullableArgumentOrNestedTraversal",
"mergeV">: T.optional $ gremlin "GenericLiteralMapNullableArgumentOrNestedTraversal",
"aggregate">: gremlin "OptionalTraversalScopeArgumentAndStringArgument",
"all">: gremlin "TraversalPredicate",
"and">: T.list $ gremlin "NestedTraversal",
"any">: gremlin "TraversalPredicate",
"as">: gremlin "StringArgumentAndOptionalStringLiteralVarargs",
"barrier">: T.optional $ gremlin "TraversalSackMethodArgumentOrIntegerArgument",
"both">: nonemptyList $ gremlin "StringNullableArgument",
"bothE">: nonemptyList $ gremlin "StringNullableArgument",
"bothV">: T.unit,
"branch">: gremlin "NestedTraversal",
"by">: gremlin "ByArgs",
"cap">: gremlin "StringArgumentAndOptionalStringLiteralVarargs",
"choose">: gremlin "ChooseArgs",
"coalesce">: T.list $ gremlin "NestedTraversal",
"coin">: gremlin "FloatArgument",
"conjoin">: gremlin "StringArgument",
"connectedComponent">: T.unit,
"constant">: gremlin "GenericLiteralArgument",
"count">: T.optional $ gremlin "TraversalScopeArgument",
"cyclicPath">: T.unit,
"dedup">: gremlin "DedupArgs",
"difference">: gremlin "GenericLiteralArgument",
"disjunct">: gremlin "GenericLiteralArgument",
"drop">: T.unit,
"elementMap">: nonemptyList $ gremlin "StringNullableArgument",
"emit">: T.optional $ gremlin "PredicateOrTraversal",
"filter">: gremlin "PredicateOrTraversal",
"flatMap">: gremlin "NestedTraversal",
"fold">: T.optional $ gremlin "GenericLiteralArgumentAndTraversalBiFunctionArgument",
"from">: gremlin "FromArgs",
"group">: T.optional $ gremlin "StringArgument",
"groupCount">: T.optional $ gremlin "StringArgument",
"has">: gremlin "HasArgs",
"hasId">: gremlin "GenericLiteralArgumentAndTraversalPredicate",
"hasKey">: gremlin "TraversalPredicateOrStringLiteralVarargs",
"hasLabel">: gremlin "TraversalPredicateOrStringLiteralVarargs",
"hasNot">: gremlin "StringNullableArgument",
"hasValue">: gremlin "TraversalPredicateOrGenericLiteralArgument",
"id">: T.unit,
"identity">: T.unit,
"in">: nonemptyList $ gremlin "StringNullableArgument",
"inE">: nonemptyList $ gremlin "StringNullableArgument",
"intersect">: gremlin "GenericLiteralArgument",
"inV">: T.unit,
"index">: T.unit,
"inject">: nonemptyList $ gremlin "GenericLiteralArgument",
"is">: gremlin "TraversalPredicateOrGenericLiteralArgument",
"key">: T.unit,
"label">: T.unit,
"limit">: gremlin "OptionalTraversalScopeArgumentAndIntegerArgument",
"local">: gremlin "NestedTraversal",
"loops">: T.optional $ gremlin "StringArgument",
"map">: gremlin "NestedTraversal",
"match">: T.list $ gremlin "NestedTraversal",
"math">: gremlin "StringArgument",
"max">: T.optional $ gremlin "TraversalScopeArgument",
"mean">: T.optional $ gremlin "TraversalScopeArgument",
"min">: T.optional $ gremlin "TraversalScopeArgument",
"none">: gremlin "TraversalPredicate",
"not">: gremlin "NestedTraversal",
"option">: gremlin "OptionArgs",
"optional">: gremlin "NestedTraversal",
"or">: T.list $ gremlin "NestedTraversal",
"order">: T.optional $ gremlin "TraversalScopeArgument",
"otherV">: T.unit,
"out">: nonemptyList $ gremlin "StringNullableArgument",
"outE">: nonemptyList $ gremlin "StringNullableArgument",
"outV">: T.unit,
"pageRank">: T.optional $ gremlin "FloatArgument",
"path">: T.unit,
"peerPressure">: T.unit,
"profile">: T.optional $ gremlin "StringArgument",
"project">: gremlin "StringArgumentAndOptionalStringLiteralVarargs",
"properties">: nonemptyList $ gremlin "StringNullableArgument",
"property">: gremlin "PropertyArgs",
"propertyMap">: nonemptyList $ gremlin "StringNullableArgument",
"range">: gremlin "RangeArgs",
"read">: T.unit,
"repeat">: gremlin "OptionalStringArgumentAndNestedTraversal",
"sack">: T.optional $ gremlin "TraversalBiFunctionArgument",
"sample">: gremlin "OptionalTraversalScopeArgumentAndIntegerArgument",
"select">: gremlin "SelectArgs",
"combine">: gremlin "GenericLiteralArgument",
"product">: gremlin "GenericLiteralArgument",
"merge">: gremlin "GenericLiteralArgument",
"shortestPath">: T.unit,
"sideEffect">: gremlin "NestedTraversal",
"simplePath">: T.unit,
"skip">: gremlin "OptionalTraversalScopeArgumentAndIntegerArgument",
"store">: gremlin "StringArgument",
"subgraph">: gremlin "StringArgument",
"sum">: T.optional $ gremlin "TraversalScopeArgument",
"tail">: T.optional $ gremlin "TailArgs",
"fail">: T.optional $ gremlin "StringArgument",
"times">: gremlin "IntegerArgument",
"to">: gremlin "ToArgs",
"toE">: gremlin "DirectionAndVarargs",
"toV">: gremlin "TraversalDirectionArgument",
"tree">: T.optional $ gremlin "StringArgument",
"unfold">: T.unit,
"union">: T.list $ gremlin "NestedTraversal",
"until">: gremlin "PredicateOrTraversal",
"value">: T.unit,
"valueMap">: gremlin "ValueMapArgs",
"values">: nonemptyList $ gremlin "StringNullableArgument",
"where">: gremlin "WhereArgs",
"with">: gremlin "WithArgs",
"write">: T.unit,
"element">: nonemptyList $ gremlin "StringNullableArgument",
"call">: gremlin "ServiceCall",
"concat">: gremlin "ConcatArgs",
"asString">: T.optional $ gremlin "TraversalScopeArgument",
"format">: gremlin "StringArgument",
"toUpper">: T.optional $ gremlin "TraversalScopeArgument",
"toLower">: T.optional $ gremlin "TraversalScopeArgument",
"length">: T.optional $ gremlin "TraversalScopeArgument",
"trim">: T.optional $ gremlin "TraversalScopeArgument",
"lTrim">: T.optional $ gremlin "TraversalScopeArgument",
"rTrim">: T.optional $ gremlin "TraversalScopeArgument",
"reverse">: T.unit,
"replace">: gremlin "ReplaceArgs",
"split">: gremlin "SplitArgs",
"substring">: gremlin "SubstringArgs",
"asDate">: T.unit,
"dateAdd">: gremlin "DateAddArgs",
"dateDiff">: gremlin "DateDiffArgs"]
stringArgumentOrNestedTraversal :: Binding
stringArgumentOrNestedTraversal = define "StringArgumentOrNestedTraversal" $ T.union [
"string">: gremlin "StringArgument",
"traversal">: gremlin "NestedTraversal"]
optionalTraversalScopeArgumentAndStringArgument :: Binding
optionalTraversalScopeArgumentAndStringArgument = define "OptionalTraversalScopeArgumentAndStringArgument" $ T.record [
"scope">: T.optional $ gremlin "TraversalScopeArgument",
"string">: gremlin "StringArgument"]
stringArgumentAndOptionalStringLiteralVarargs :: Binding
stringArgumentAndOptionalStringLiteralVarargs = define "StringArgumentAndOptionalStringLiteralVarargs" $ T.record [
"first">: gremlin "StringArgument",
"rest">: T.list $ gremlin "StringNullableArgument"]
traversalSackMethodArgumentOrIntegerArgument :: Binding
traversalSackMethodArgumentOrIntegerArgument = define "TraversalSackMethodArgumentOrIntegerArgument" $ T.union [
"consumer">: gremlin "TraversalSackMethodArgument",
"int">: gremlin "IntegerArgument"]
byArgs :: Binding
byArgs = define "ByArgs" $ T.union [
"order">: gremlin "TraversalOrderArgument",
"token">: gremlin "TraversalTokenArgument",
"other">: gremlin "ByOtherArgs"]
byOtherArgs :: Binding
byOtherArgs = define "ByOtherArgs" $ T.union [
"comparator">: T.optional $ gremlin "TraversalComparatorArgument",
"other">: T.optional $ gremlin "TraversalFunctionArgumentOrStringArgumentOrNestedTraversal"]
traversalFunctionArgumentOrStringArgumentOrNestedTraversal :: Binding
traversalFunctionArgumentOrStringArgumentOrNestedTraversal = define "TraversalFunctionArgumentOrStringArgumentOrNestedTraversal" $ T.union [
"function">: gremlin "TraversalFunctionArgument",
"string">: gremlin "StringArgument",
"traversal">: gremlin "NestedTraversal"]
chooseArgs :: Binding
chooseArgs = define "ChooseArgs" $ T.union [
"function">: gremlin "TraversalFunctionArgument",
"predicateTraversal">: gremlin "PredicateTraversalArgument",
"traversal">: gremlin "NestedTraversalArgument"]
predicateTraversalArgument :: Binding
predicateTraversalArgument = define "PredicateTraversalArgument" $ T.record [
"predicate">: gremlin "TraversalPredicate",
"traversal1">: gremlin "NestedTraversal",
"traversal2">: T.optional $ gremlin "NestedTraversal"]
nestedTraversalArgument :: Binding
nestedTraversalArgument = define "NestedTraversalArgument" $ T.record [
"traversal1">: gremlin "NestedTraversal",
"traversal2">: T.optional $ gremlin "NestedTraversal",
"traversal3">: T.optional $ gremlin "NestedTraversal"]
dedupArgs :: Binding
dedupArgs = define "DedupArgs" $ T.union [
"scopeString">: gremlin "ScopeStringArgument",
"string">: nonemptyList $ gremlin "StringNullableArgument"]
scopeStringArgument :: Binding
scopeStringArgument = define "ScopeStringArgument" $ T.record [
"scope">: gremlin "TraversalScopeArgument",
"strings">: T.list $ gremlin "StringNullableArgument"]
predicateOrTraversal :: Binding
predicateOrTraversal = define "PredicateOrTraversal" $ T.union [
"predicate">: gremlin "TraversalPredicate",
"traversal">: gremlin "NestedTraversal"]
genericLiteralArgumentAndTraversalBiFunctionArgument :: Binding
genericLiteralArgumentAndTraversalBiFunctionArgument = define "GenericLiteralArgumentAndTraversalBiFunctionArgument" $ T.record [
"literal">: gremlin "GenericLiteralArgument",
"biFunction">: gremlin "TraversalBiFunctionArgument"]
fromArgs :: Binding
fromArgs = define "FromArgs" $ T.union [
"string">: gremlin "StringArgument",
"vertex">: gremlin "StructureVertexArgument",
"traversal">: gremlin "NestedTraversal"]
hasArgs :: Binding
hasArgs = define "HasArgs" $ T.union [
"string">: gremlin "HasStringArgumentAndOptionalStringLiteralVarargs",
"traversalToken">: gremlin "HasTraversalTokenArgs"]
hasStringArgumentAndOptionalStringLiteralVarargs :: Binding
hasStringArgumentAndOptionalStringLiteralVarargs = define "HasStringArgumentAndOptionalStringLiteralVarargs" $ T.record [
"string">: gremlin "StringNullableArgument",
"rest">: T.optional $ gremlin "HasStringArgumentAndOptionalStringLiteralVarargsRest"]
hasStringArgumentAndOptionalStringLiteralVarargsRest :: Binding
hasStringArgumentAndOptionalStringLiteralVarargsRest = define "HasStringArgumentAndOptionalStringLiteralVarargsRest" $ T.union [
"object">: gremlin "GenericLiteralArgument",
"predicate">: gremlin "TraversalPredicate",
"stringObject">: gremlin "StringNullableArgumentAndGenericLiteralArgument",
"stringPredicate">: gremlin "StringNullableArgumentAndTraversalPredicate",
"traversal">: gremlin "NestedTraversal"]
stringNullableArgumentAndGenericLiteralArgument :: Binding
stringNullableArgumentAndGenericLiteralArgument = define "StringNullableArgumentAndGenericLiteralArgument" $ T.record [
"string">: gremlin "StringNullableArgument",
"literal">: gremlin "GenericLiteralArgument"]
stringNullableArgumentAndTraversalPredicate :: Binding
stringNullableArgumentAndTraversalPredicate = define "StringNullableArgumentAndTraversalPredicate" $ T.record [
"string">: gremlin "StringNullableArgument",
"predicate">: gremlin "TraversalPredicate"]
hasTraversalTokenArgs :: Binding
hasTraversalTokenArgs = define "HasTraversalTokenArgs" $ T.record [
"traversalToken">: gremlin "TraversalTokenArgument",
"rest">: gremlin "HasTraversalTokenArgsRest"]
hasTraversalTokenArgsRest :: Binding
hasTraversalTokenArgsRest = define "HasTraversalTokenArgsRest" $ T.union [
"literal">: gremlin "GenericLiteralArgument",
"predicate">: gremlin "TraversalPredicate",
"traversal">: gremlin "NestedTraversal"]
genericLiteralArgumentAndTraversalPredicate :: Binding
genericLiteralArgumentAndTraversalPredicate = define "GenericLiteralArgumentAndTraversalPredicate" $ T.union [
"literal">: gremlin "GenericLiteralArgument",
"predicate">: gremlin "TraversalPredicate"]
traversalPredicateOrStringLiteralVarargs :: Binding
traversalPredicateOrStringLiteralVarargs = define "TraversalPredicateOrStringLiteralVarargs" $ T.union [
"predicate">: gremlin "TraversalPredicate",
"string">: nonemptyList $ gremlin "StringNullableArgument"]
traversalPredicateOrGenericLiteralArgument :: Binding
traversalPredicateOrGenericLiteralArgument = define "TraversalPredicateOrGenericLiteralArgument" $ T.union [
"predicate">: gremlin "TraversalPredicate",
"literal">: T.list $ gremlin "GenericLiteralArgument"]
optionArgs :: Binding
optionArgs = define "OptionArgs" $ T.union [
"predicateTraversal">: gremlin "TraversalPredicateAndNestedTraversal",
"mergeMap">: gremlin "TraversalMergeArgumentAndGenericLiteralMapNullableArgument",
"mergeTraversal">: gremlin "TraversalMergeArgumentAndNestedTraversal",
"objectTraversal">: gremlin "GenericLiteralArgumentAndNestedTraversal",
"traversal">: gremlin "NestedTraversal"]
traversalPredicateAndNestedTraversal :: Binding
traversalPredicateAndNestedTraversal = define "TraversalPredicateAndNestedTraversal" $ T.record [
"predicate">: gremlin "TraversalPredicate",
"traversal">: gremlin "NestedTraversal"]
traversalMergeArgumentAndGenericLiteralMapNullableArgument :: Binding
traversalMergeArgumentAndGenericLiteralMapNullableArgument = define "TraversalMergeArgumentAndGenericLiteralMapNullableArgument" $ T.record [
"merge">: gremlin "TraversalMergeArgument",
"map">: gremlin "GenericLiteralMapNullableArgument",
"cardinality">: T.optional $ gremlin "TraversalCardinality"]
traversalMergeArgumentAndNestedTraversal :: Binding
traversalMergeArgumentAndNestedTraversal = define "TraversalMergeArgumentAndNestedTraversal" $ T.record [
"merge">: gremlin "TraversalMergeArgument",
"traversal">: gremlin "NestedTraversal"]
genericLiteralArgumentAndNestedTraversal :: Binding
genericLiteralArgumentAndNestedTraversal = define "GenericLiteralArgumentAndNestedTraversal" $ T.record [
"object">: gremlin "GenericLiteralArgument",
"traversal">: gremlin "NestedTraversal"]
propertyArgs :: Binding
propertyArgs = define "PropertyArgs" $ T.union [
"cardinalityObjects">: gremlin "TraversalCardinalityArgumentAndObjects",
"objects">: minLengthList 2 $ gremlin "GenericLiteralArgument",
"object">: gremlin "GenericLiteralMapNullableArgument",
"cardinalityObject">: gremlin "GenericLiteralMapNullableArgumentAndTraversalCardinalityArgument"]
traversalCardinalityArgumentAndObjects :: Binding
traversalCardinalityArgumentAndObjects = define "TraversalCardinalityArgumentAndObjects" $ T.record [
"cardinality">: gremlin "TraversalCardinalityArgument",
"objects">: minLengthList 2 $ gremlin "GenericLiteralArgument"]
genericLiteralMapNullableArgumentAndTraversalCardinalityArgument :: Binding
genericLiteralMapNullableArgumentAndTraversalCardinalityArgument = define "GenericLiteralMapNullableArgumentAndTraversalCardinalityArgument" $ T.record [
"cardinality">: gremlin "TraversalCardinalityArgument",
"object">: gremlin "GenericLiteralMapNullableArgument"]
rangeArgs :: Binding
rangeArgs = define "RangeArgs" $ T.record [
"scope">: T.optional $ gremlin "TraversalScopeArgument",
"min">: gremlin "IntegerArgument",
"max">: gremlin "IntegerArgument"]
optionalStringArgumentAndNestedTraversal :: Binding
optionalStringArgumentAndNestedTraversal = define "OptionalStringArgumentAndNestedTraversal" $ T.record [
"string">: T.optional $ gremlin "StringArgument",
"traversal">: gremlin "NestedTraversal"]
optionalTraversalScopeArgumentAndIntegerArgument :: Binding
optionalTraversalScopeArgumentAndIntegerArgument = define "OptionalTraversalScopeArgumentAndIntegerArgument" $ T.record [
"scope">: T.optional $ gremlin "TraversalScopeArgument",
"long">: gremlin "IntegerArgument"]
selectArgs :: Binding
selectArgs = define "SelectArgs" $ T.union [
"column">: gremlin "TraversalColumnArgument",
"popStrings">: gremlin "PopStringsArgument",
"popTraversal">: gremlin "TraversalPopArgumentAndNestedTraversal",
"strings">: nonemptyList $ gremlin "StringArgument",
"traversal">: gremlin "NestedTraversal"]
popStringsArgument :: Binding
popStringsArgument = define "PopStringsArgument" $ T.record [
"pop">: gremlin "TraversalPopArgument",
"string">: nonemptyList $ gremlin "StringArgument"]
traversalPopArgumentAndNestedTraversal :: Binding
traversalPopArgumentAndNestedTraversal = define "TraversalPopArgumentAndNestedTraversal" $ T.record [
"pop">: gremlin "TraversalPopArgument",
"traversal">: gremlin "NestedTraversal"]
tailArgs :: Binding
tailArgs = define "TailArgs" $ T.record [
"scope">: T.optional $ gremlin "TraversalScopeArgument",
"integer">: T.optional $ gremlin "IntegerArgument"]
toArgs :: Binding
toArgs = define "ToArgs" $ T.union [
"direction">: gremlin "DirectionAndVarargs",
"string">: gremlin "StringArgument",
"vertex">: gremlin "StructureVertexArgument",
"traversal">: gremlin "NestedTraversal"]
directionAndVarargs :: Binding
directionAndVarargs = define "DirectionAndVarargs" $ T.record [
"direction">: gremlin "TraversalDirectionArgument",
"varargs">: T.list $ gremlin "StringNullableArgument"]
valueMapArgs :: Binding
valueMapArgs = define "ValueMapArgs" $ T.union [
"string">: nonemptyList $ gremlin "StringNullableArgument",
"boolean">: gremlin "ValueMapBooleanArgs"]
valueMapBooleanArgs :: Binding
valueMapBooleanArgs = define "ValueMapBooleanArgs" $ T.record [
"value">: gremlin "BooleanArgument",
"keys">: T.optional $ nonemptyList $ gremlin "StringNullableArgument"]
whereArgs :: Binding
whereArgs = define "WhereArgs" $ T.union [
"predicate">: gremlin "WhereWithPredicateArgs",
"string">: gremlin "StringArgument",
"traversal">: gremlin "NestedTraversal"]
whereWithPredicateArgs :: Binding
whereWithPredicateArgs = define "WhereWithPredicateArgs" $ T.record [
"leftArg">: T.optional $ gremlin "StringArgument",
"predicate">: gremlin "TraversalPredicate"]
withArgs :: Binding
withArgs = define "WithArgs" $ T.record [
"keys">: gremlin "WithArgsKeys",
"values">: T.optional $ gremlin "WithArgsValues"]
withArgsKeys :: Binding
withArgsKeys = define "WithArgsKeys" $ T.union [
"withOption">: gremlin "WithOptionKeys",
"string">: gremlin "StringArgument"]
withArgsValues :: Binding
withArgsValues = define "WithArgsValues" $ T.union [
"withOptions">: gremlin "WithOptionsValues",
"io">: gremlin "IoOptionsValues",
"object">: gremlin "GenericLiteralArgument"]
concatArgs :: Binding
concatArgs = define "ConcatArgs" $ T.union [
"traversal">: nonemptyList $ gremlin "NestedTraversal",
"string">: nonemptyList $ gremlin "StringNullableArgument"]
replaceArgs :: Binding
replaceArgs = define "ReplaceArgs" $ T.record [
"scope">: T.optional $ gremlin "TraversalScopeArgument",
"from">: gremlin "StringNullableArgument",
"to">: gremlin "StringNullableArgument"]
splitArgs :: Binding
splitArgs = define "SplitArgs" $ T.record [
"scope">: T.optional $ gremlin "TraversalScopeArgument",
"delimiter">: gremlin "StringNullableArgument"]
substringArgs :: Binding
substringArgs = define "SubstringArgs" $ T.record [
"scope">: T.optional $ gremlin "TraversalScopeArgument",
"start">: gremlin "IntegerArgument",
"end">: T.optional $ gremlin "IntegerArgument"]
dateAddArgs :: Binding
dateAddArgs = define "DateAddArgs" $ T.record [
"unit">: gremlin "TraversalDTArgument",
"duration">: gremlin "IntegerArgument"]
dateDiffArgs :: Binding
dateDiffArgs = define "DateDiffArgs" $ T.union [
"traversal">: gremlin "NestedTraversal",
"date">: gremlin "DateArgument"]
structureVertex :: Binding
structureVertex = define "StructureVertex" $ T.record [
"new">: T.boolean,
"id">: gremlin "GenericLiteralArgument",
"label">: gremlin "StringArgument"]
traversalStrategy :: Binding
traversalStrategy = define "TraversalStrategy" $ T.record [
"new">: T.boolean,
"class">: gremlin "Identifier",
"configurations">: T.list $ gremlin "Configuration"]
configuration :: Binding
configuration = define "Configuration" $ T.record [
"key">: gremlin "KeywordOrIdentifier",
"value">: gremlin "GenericLiteralArgument"]
keywordOrIdentifier :: Binding
keywordOrIdentifier = define "KeywordOrIdentifier" $ T.union [
"keyword">: gremlin "Keyword",
"identifier">: gremlin "Identifier"]
traversalScope :: Binding
traversalScope = define "TraversalScope" $ T.enum [
"local",
"global"]
traversalToken :: Binding
traversalToken = define "TraversalToken" $ T.enum [
"id",
"label",
"key",
"value"]
traversalMerge :: Binding
traversalMerge = define "TraversalMerge" $ T.enum [
"onCreate",
"onMatch",
"outV",
"inV"]
traversalOrder :: Binding
traversalOrder = define "TraversalOrder" $ T.enum [
"incr",
"decr",
"asc",
"desc",
"shuffle"]
traversalDirection :: Binding
traversalDirection = define "TraversalDirection" $ T.enum [
"in",
"out",
"both"]
traversalCardinality :: Binding
traversalCardinality = define "TraversalCardinality" $ T.union [
"single">: gremlin "GenericLiteral",
"set">: gremlin "GenericLiteral",
"list">: gremlin "GenericLiteral"]
traversalColumn :: Binding
traversalColumn = define "TraversalColumn" $ T.enum [
"keys",
"values"]
traversalPop :: Binding
traversalPop = define "TraversalPop" $ T.enum [
"first",
"last",
"all",
"mixed"]
traversalOperator :: Binding
traversalOperator = define "TraversalOperator" $ T.enum [
"addAll",
"and",
"assign",
"div",
"max",
"min",
"minus",
"mult",
"or",
"sum",
"sumLong"]
traversalPick :: Binding
traversalPick = define "TraversalPick" $ T.enum [
"any",
"none"]
traversalDT :: Binding
traversalDT = define "TraversalDT" $ T.enum [
"second",
"minute",
"hour",
"day"]
traversalPredicate :: Binding
traversalPredicate = define "TraversalPredicate" $ T.union [
"eq">: gremlin "GenericLiteralArgument",
"neq">: gremlin "GenericLiteralArgument",
"lt">: gremlin "GenericLiteralArgument",
"lte">: gremlin "GenericLiteralArgument",
"gt">: gremlin "GenericLiteralArgument",
"gte">: gremlin "GenericLiteralArgument",
"inside">: gremlin "RangeArgument",
"outside">: gremlin "RangeArgument",
"between">: gremlin "RangeArgument",
"within">: T.optional $ gremlin "GenericLiteralArgument",
"without">: T.optional $ gremlin "GenericLiteralArgument",
"not">: gremlin "TraversalPredicate",
"startingWith">: gremlin "StringArgument",
"notStartingWith">: gremlin "StringArgument",
"endingWith">: gremlin "StringArgument",
"notEndingWith">: gremlin "StringArgument",
"containing">: gremlin "StringArgument",
"notContaining">: gremlin "StringArgument",
"regex">: gremlin "StringArgument",
"notRegex">: gremlin "StringArgument",
"and">: gremlin "TwoTraversalPredicates",
"or">: gremlin "TwoTraversalPredicates",
"negate">: gremlin "TraversalPredicate"]
twoTraversalPredicates :: Binding
twoTraversalPredicates = define "TwoTraversalPredicates" $ T.record [
"left">: gremlin "TraversalPredicate",
"right">: gremlin "TraversalPredicate"]
traversalTerminalMethod :: Binding
traversalTerminalMethod = define "TraversalTerminalMethod" $ T.union [
"explain">: T.unit,
"iterate">: T.unit,
"hasNext">: T.unit,
"tryNext">: T.unit,
"next">: T.optional $ gremlin "IntegerLiteral",
"toList">: T.unit,
"toSet">: T.unit,
"toBulkSet">: T.unit]
traversalSelfMethod :: Binding
traversalSelfMethod = define "TraversalSelfMethod" $ T.enum [
"discard"]
traversalFunction :: Binding
traversalFunction = define "TraversalFunction" $ T.union [
"token">: gremlin "TraversalToken",
"column">: gremlin "TraversalColumn"]
rangeArgument :: Binding
rangeArgument = define "RangeArgument" $ T.record [
"min">: gremlin "GenericLiteralArgument",
"max">: gremlin "GenericLiteralArgument"]
withOptionKeys :: Binding
withOptionKeys = define "WithOptionKeys" $ T.union [
"shortestPath">: gremlin "ShortestPathConstants",
"connectedComponent">: gremlin "ConnectedComponentConstants",
"pageRank">: gremlin "PageRankConstants",
"peerPressure">: gremlin "PeerPressureConstants",
"io">: gremlin "IoOptionsKeys",
"withOptionsTokens">: T.unit,
"withOptionsIndexer">: T.unit]
connectedComponentConstants :: Binding
connectedComponentConstants = define "ConnectedComponentConstants" $ T.enum [
"component",
"edges",
"propertyName"]
pageRankConstants :: Binding
pageRankConstants = define "PageRankConstants" $ T.enum [
"edges",
"times",
"propertyName"]
peerPressureConstants :: Binding
peerPressureConstants = define "PeerPressureConstants" $ T.enum [
"edges",
"times",
"propertyName"]
shortestPathConstants :: Binding
shortestPathConstants = define "ShortestPathConstants" $ T.enum [
"target",
"edges",
"distance",
"maxDistance",
"includeEdges"]
withOptionsValues :: Binding
withOptionsValues = define "WithOptionsValues" $ T.enum [
"tokens",
"none",
"ids",
"labels",
"keys",
"values",
"all",
"list",
"map"]
ioOptionsKeys :: Binding
ioOptionsKeys = define "IoOptionsKeys" $ T.enum [
"reader",
"writer"]
ioOptionsValues :: Binding
ioOptionsValues = define "IoOptionsValues" $ T.enum [
"gryo",
"graphson",
"graphml"]
-- Argument types
booleanArgument :: Binding
booleanArgument = defArgument "BooleanArgument" T.boolean
integerArgument :: Binding
integerArgument = defArgument "IntegerArgument" $ gremlin "IntegerLiteral"
floatArgument :: Binding
floatArgument = defArgument "FloatArgument" $ gremlin "FloatLiteral"
stringArgument :: Binding
stringArgument = defArgument "StringArgument" T.string
stringNullableArgument :: Binding
stringNullableArgument = defArgument "StringNullableArgument" $ T.optional T.string
dateArgument :: Binding
dateArgument = defArgument "DateArgument" $ gremlin "DateLiteral"
genericLiteralArgument :: Binding
genericLiteralArgument = defArgument "GenericLiteralArgument" $ gremlin "GenericLiteral"
genericLiteralListArgument :: Binding
genericLiteralListArgument = defArgument "GenericLiteralListArgument" $ gremlin "GenericLiteralList"
genericLiteralMapArgument :: Binding
genericLiteralMapArgument = defArgument "GenericLiteralMapArgument" $ gremlin "GenericLiteralMap"
genericLiteralMapNullableArgument :: Binding
genericLiteralMapNullableArgument = defArgument "GenericLiteralMapNullableArgument" $ T.optional $ gremlin "GenericLiteralMap"
structureVertexArgument :: Binding
structureVertexArgument = defArgument "StructureVertexArgument" $ gremlin "StructureVertex"
traversalCardinalityArgument :: Binding
traversalCardinalityArgument = defArgument "TraversalCardinalityArgument" $ gremlin "TraversalCardinality"
traversalColumnArgument :: Binding
traversalColumnArgument = defArgument "TraversalColumnArgument" $ gremlin "TraversalColumn"
traversalDirectionArgument :: Binding
traversalDirectionArgument = defArgument "TraversalDirectionArgument" $ gremlin "TraversalDirection"
traversalMergeArgument :: Binding
traversalMergeArgument = defArgument "TraversalMergeArgument" $ gremlin "TraversalMerge"
traversalOrderArgument :: Binding
traversalOrderArgument = defArgument "TraversalOrderArgument" $ gremlin "TraversalOrder"
traversalPopArgument :: Binding
traversalPopArgument = defArgument "TraversalPopArgument" $ gremlin "TraversalPop"
traversalSackMethodArgument :: Binding
traversalSackMethodArgument = defArgument "TraversalSackMethodArgument" T.unit
traversalScopeArgument :: Binding
traversalScopeArgument = defArgument "TraversalScopeArgument" $ gremlin "TraversalScope"
traversalTokenArgument :: Binding
traversalTokenArgument = defArgument "TraversalTokenArgument" $ gremlin "TraversalToken"
traversalComparatorArgument :: Binding
traversalComparatorArgument = defArgument "TraversalComparatorArgument" $ gremlin "TraversalOrder"
traversalFunctionArgument :: Binding
traversalFunctionArgument = defArgument "TraversalFunctionArgument" $ gremlin "TraversalFunction"
traversalBiFunctionArgument :: Binding
traversalBiFunctionArgument = defArgument "TraversalBiFunctionArgument" $ gremlin "TraversalOperator"
traversalDTArgument :: Binding
traversalDTArgument = defArgument "TraversalDTArgument" $ gremlin "TraversalDT"
-- Literal types
genericLiteralList :: Binding
genericLiteralList = define "GenericLiteralList" $ T.wrap $ T.list $ gremlin "GenericLiteral"
genericLiteralRange :: Binding
genericLiteralRange = define "GenericLiteralRange" $ T.union [
"integer">: gremlin "IntegerRange",
"string">: gremlin "StringRange"]
integerRange :: Binding
integerRange = define "IntegerRange" $ T.record [
"left">: gremlin "IntegerLiteral",
"right">: gremlin "IntegerLiteral"]
stringRange :: Binding
stringRange = define "StringRange" $ T.record [
"left">: T.string,
"right">: T.string]
genericLiteralSet :: Binding
genericLiteralSet = define "GenericLiteralSet" $ T.wrap $ T.list $ gremlin "GenericLiteral"
genericLiteralCollection :: Binding
genericLiteralCollection = define "GenericLiteralCollection" $ T.wrap $ T.list $ gremlin "GenericLiteral"
genericLiteral :: Binding
genericLiteral = define "GenericLiteral" $ T.union [
"numeric">: gremlin "NumericLiteral",
"boolean">: T.boolean,
"string">: T.string,
"date">: gremlin "DateLiteral",
"null">: T.unit,
"nan">: T.unit,
"inf">: T.unit,
"traversalToken">: gremlin "TraversalToken",
"traversalCardinality">: gremlin "TraversalCardinality",
"traversalDirection">: gremlin "TraversalDirection",
"traversalMerge">: gremlin "TraversalMerge",
"traversalPick">: gremlin "TraversalPick",
"traversalDT">: gremlin "TraversalDT",
"structureVertex">: gremlin "StructureVertex",
"genericLiteralSet">: gremlin "GenericLiteralSet",
"genericLiteralCollection">: gremlin "GenericLiteralCollection",
"genericLiteralRange">: gremlin "GenericLiteralRange",
"nestedTraversal">: gremlin "NestedTraversal",
"terminatedTraversal">: gremlin "TerminatedTraversal",
"genericLiteralMap">: gremlin "GenericLiteralMap"]
genericLiteralMap :: Binding
genericLiteralMap = define "GenericLiteralMap" $ T.wrap $ T.list $ gremlin "MapEntry"
mapEntry :: Binding
mapEntry = define "MapEntry" $ T.union [
"key">: gremlin "MapKey",
"value">: gremlin "GenericLiteral"]
mapKey :: Binding
mapKey = define "MapKey" $ T.union [
"string">: T.string,
"numeric">: gremlin "NumericLiteral",
"traversalToken">: gremlin "TraversalToken",
"traversalDirection">: gremlin "TraversalDirection",
"set">: gremlin "GenericLiteralSet",
"collection">: gremlin "GenericLiteralCollection",
"map">: gremlin "GenericLiteralMap",
"keyword">: gremlin "Keyword",
"identifier">: gremlin "Identifier"]
integerLiteral :: Binding
integerLiteral = define "IntegerLiteral" $ T.wrap T.bigint
floatLiteral :: Binding
floatLiteral = define "FloatLiteral" $ T.wrap T.bigfloat
numericLiteral :: Binding
numericLiteral = define "NumericLiteral" $ T.union [
"integer">: gremlin "IntegerLiteral",
"float">: gremlin "FloatLiteral"]
dateLiteral :: Binding
dateLiteral = define "DateLiteral" $ T.wrap $ T.optional $ gremlin "StringArgument"
keyword :: Binding
keyword = define "Keyword" $ T.enum [
"edges",
"keys",
"new",
"values"]
identifier :: Binding
identifier = define "Identifier" $ T.wrap T.string