|
14 | 14 | public final class CypherBuiltInFunctions {
|
15 | 15 |
|
16 | 16 | private static final List<CypherBuiltInFunctionElement> FUNCTIONS_PREDICATE = Lists.newArrayList(
|
17 |
| - element("all", "(variable IN list WHERE predicate)", BOOLEAN.single()), |
18 |
| - element("any", "(variable IN list WHERE predicate)", BOOLEAN.single()), |
19 |
| - element("none", "(variable in list WHERE predicate)", BOOLEAN.single()), |
20 |
| - element("single", "(variable in list WHERE predicate)", BOOLEAN.single()), |
21 |
| - element("exists", "(pattern)", BOOLEAN.single()), |
22 |
| - element("exists", "(property)", BOOLEAN.single()) |
| 17 | + element("all", "(variable IN list WHERE predicate :: ANY)", BOOLEAN.single()), |
| 18 | + element("any", "(variable IN list WHERE predicate :: ANY)", BOOLEAN.single()), |
| 19 | + element("none", "(variable in list WHERE predicate :: ANY)", BOOLEAN.single()), |
| 20 | + element("single", "(variable in list WHERE predicate :: ANY)", BOOLEAN.single()), |
| 21 | + element("exists", "(pattern :: ANY)", BOOLEAN.single()), |
| 22 | + element("exists", "(property :: ANY)", BOOLEAN.single()) |
23 | 23 | );
|
24 | 24 | private static final List<CypherBuiltInFunctionElement> FUNCTIONS_SHORTEST_PATH = Lists.newArrayList(
|
25 |
| - element("shortestPath", "(pattern)", PATH.single()), |
26 |
| - element("allShortestPaths", "(pattern)", PATH.array()) |
| 25 | + element("shortestPath", "(pattern :: PATH)", PATH.single()), |
| 26 | + element("allShortestPaths", "(pattern :: PATH)", PATH.array()) |
27 | 27 | );
|
28 | 28 | private static final List<CypherBuiltInFunctionElement> FUNCTIONS_SCALAR = Lists.newArrayList(
|
29 |
| - element("size", "(list)", INTEGER.single()), |
30 |
| - element("size", "(pattern)", INTEGER.single()), |
31 |
| - element("length", "(path)", INTEGER.single()), |
32 |
| - element("length", "(string)", INTEGER.single()), |
33 |
| - element("type", "(relationship)", STRING.single()), |
34 |
| - element("id", "(node)", INTEGER.single()), |
35 |
| - element("id", "(relationship)", INTEGER.single()), |
36 |
| - element("coalesce", "(expression...)", ANY.single()), |
37 |
| - element("head", "(expression)", ANY.single()), |
38 |
| - element("last", "(expression)", ANY.single()), |
| 29 | + element("size", "(list :: LIST OF ANY)", INTEGER.single()), |
| 30 | + element("size", "(pattern :: ANY)", INTEGER.single()), |
| 31 | + element("length", "(path :: ANY)", INTEGER.single()), |
| 32 | + element("length", "(string :: STRING)", INTEGER.single()), |
| 33 | + element("type", "(relationship :: RELATIONSHIP)", STRING.single()), |
| 34 | + element("id", "(node :: NODE)", INTEGER.single()), |
| 35 | + element("id", "(relationship :: RELATIONSHIP)", INTEGER.single()), |
| 36 | + element("coalesce", "(expression... :: ANY)", ANY.single()), |
| 37 | + element("head", "(expression :: LIST OF ANY)", ANY.single()), |
| 38 | + element("last", "(expression :: LIST OF ANY)", ANY.single()), |
39 | 39 | element("timestamp", "()", INTEGER.single()),
|
40 |
| - element("startNode", "(relationship)", NODE.single()), |
41 |
| - element("endNode", "(relationship", NODE.single()), |
42 |
| - element("properties", "(node)", MAP.single()), |
43 |
| - element("properties", "(relationship)", MAP.single()), |
44 |
| - element("toInt", "(expression)", INTEGER.single()), |
45 |
| - element("toFloat", "(expression)", FLOAT.single()) |
| 40 | + element("startNode", "(relationship :: RELATIONSHIP)", NODE.single()), |
| 41 | + element("endNode", "(relationship :: RELATIONSHIP)", NODE.single()), |
| 42 | + element("properties", "(node :: NODE)", MAP.single()), |
| 43 | + element("properties", "(relationship :: RELATIONSHIP)", MAP.single()), |
| 44 | + element("toInt", "(expression :: STRING)", INTEGER.single()), |
| 45 | + element("toFloat", "(expression :: STRING)", FLOAT.single()) |
46 | 46 | );
|
47 | 47 | private static final List<CypherBuiltInFunctionElement> FUNCTIONS_LIST = Lists.newArrayList(
|
48 |
| - element("nodes", "(path)", NODE.array()), |
49 |
| - element("relationships", "(path)", RELATIONSHIP.array()), |
50 |
| - element("labels", "(node)", STRING.array()), |
51 |
| - element("keys", "(node)", STRING.array()), |
52 |
| - element("keys", "(relationship)", STRING.array()), |
53 |
| - element("extract", "(variable IN list | expression)", ANY.array()), |
54 |
| - element("filter", "(variable IN list WHERE predicate)", ANY.array()), |
55 |
| - element("tail", "(expression)", ANY.array()), |
56 |
| - element("range", "(start, end, step = 1)", INTEGER.array()), |
57 |
| - element("reduce", "(accumulator = initial, variable IN list | expression)", ANY.single()) |
| 48 | + element("nodes", "(path :: PATH)", NODE.array()), |
| 49 | + element("relationships", "(path :: PATH)", RELATIONSHIP.array()), |
| 50 | + element("labels", "(node :: NODE)", STRING.array()), |
| 51 | + element("keys", "(node :: NODE)", STRING.array()), |
| 52 | + element("keys", "(relationship :: RELATIONSHIP)", STRING.array()), |
| 53 | + element("extract", "(variable IN list | expression :: ANY)", ANY.array()), |
| 54 | + element("filter", "(variable IN list WHERE predicate :: ANY)", ANY.array()), |
| 55 | + element("tail", "(expression :: LIST OF ANY)", ANY.array()), |
| 56 | + element("range", "(start :: INTEGER, end :: INTEGER, step = 1 :: INTEGER)", INTEGER.array()), |
| 57 | + element("reduce", "(accumulator = initial :: ANY, variable IN list | expression :: ANY)", ANY.single()) |
58 | 58 | );
|
59 | 59 | private static final List<CypherBuiltInFunctionElement> FUNCTIONS_MATH_NUMERIC = Lists.newArrayList(
|
60 |
| - element("abs", "(expression)", INTEGER.single()), |
61 |
| - element("ceil", "(expression)", INTEGER.single()), |
62 |
| - element("floor", "(expression)", INTEGER.single()), |
63 |
| - element("round", "(expression)", INTEGER.single()), |
64 |
| - element("sign", "(expression)", INTEGER.single()), |
| 60 | + element("abs", "(expression :: NUMBER)", INTEGER.single()), |
| 61 | + element("ceil", "(expression :: NUMBER)", INTEGER.single()), |
| 62 | + element("floor", "(expression :: NUMBER)", INTEGER.single()), |
| 63 | + element("round", "(expression :: NUMBER)", INTEGER.single()), |
| 64 | + element("sign", "(expression :: NUMBER)", INTEGER.single()), |
65 | 65 | element("rand", "()", FLOAT.single())
|
66 | 66 | );
|
67 | 67 | private static final List<CypherBuiltInFunctionElement> FUNCTIONS_MATH_LOGARITHMIC = Lists.newArrayList(
|
68 |
| - element("log", "(expression)", FLOAT.single()), |
69 |
| - element("log10", "(expression)", FLOAT.single()), |
70 |
| - element("exp", "(expression)", FLOAT.single()), |
| 68 | + element("log", "(expression :: NUMBER)", FLOAT.single()), |
| 69 | + element("log10", "(expression :: NUMBER)", FLOAT.single()), |
| 70 | + element("exp", "(expression :: NUMBER)", FLOAT.single()), |
71 | 71 | element("e", "()", FLOAT.single()),
|
72 |
| - element("sqrt", "(expression)", FLOAT.single()) |
| 72 | + element("sqrt", "(expression :: NUMBER)", FLOAT.single()) |
73 | 73 | );
|
74 | 74 | private static final List<CypherBuiltInFunctionElement> FUNCTIONS_MATH_TRIGONOMETRIC = Lists.newArrayList(
|
75 |
| - element("sin", "(expression)", FLOAT.single()), |
76 |
| - element("cos", "(expression)", FLOAT.single()), |
77 |
| - element("tan", "(expression)", FLOAT.single()), |
78 |
| - element("cot", "(expression)", FLOAT.single()), |
79 |
| - element("asin", "(expression)", FLOAT.single()), |
80 |
| - element("acos", "(expression)", FLOAT.single()), |
81 |
| - element("atan", "(expression)", FLOAT.single()), |
82 |
| - element("atan2", "(expression, expression)", FLOAT.single()), |
| 75 | + element("sin", "(expression :: NUMBER)", FLOAT.single()), |
| 76 | + element("cos", "(expression :: NUMBER)", FLOAT.single()), |
| 77 | + element("tan", "(expression :: NUMBER)", FLOAT.single()), |
| 78 | + element("cot", "(expression :: NUMBER)", FLOAT.single()), |
| 79 | + element("asin", "(expression :: NUMBER)", FLOAT.single()), |
| 80 | + element("acos", "(expression :: NUMBER)", FLOAT.single()), |
| 81 | + element("atan", "(expression :: NUMBER)", FLOAT.single()), |
| 82 | + element("atan2", "(expression :: NUMBER, expression :: NUMBER)", FLOAT.single()), |
83 | 83 | element("pi", "()", FLOAT.single()),
|
84 |
| - element("degrees", "(expression)", FLOAT.single()), |
85 |
| - element("radians", "(expression)", FLOAT.single()), |
86 |
| - element("haversin", "(expression)", FLOAT.single()) |
| 84 | + element("degrees", "(expression :: NUMBER)", FLOAT.single()), |
| 85 | + element("radians", "(expression :: NUMBER)", FLOAT.single()), |
| 86 | + element("haversin", "(expression :: NUMBER)", FLOAT.single()) |
87 | 87 | );
|
88 | 88 | private static final List<CypherBuiltInFunctionElement> FUNCTIONS_STRING = Lists.newArrayList(
|
89 |
| - element("replace", "(original, search, replace)", STRING.single()), |
90 |
| - element("substring", "(original, start, length = length(original))", STRING.single()), |
91 |
| - element("left", "(original, length)", STRING.single()), |
92 |
| - element("right", "(original, length)", STRING.single()), |
93 |
| - element("ltrim", "(original)", STRING.single()), |
94 |
| - element("rtrim", "(original)", STRING.single()), |
95 |
| - element("trim", "(original)", STRING.single()), |
96 |
| - element("lower", "(original)", STRING.single()), |
97 |
| - element("upper", "(original)", STRING.single()), |
98 |
| - element("split", "(original, splitPattern)", STRING.array()), |
99 |
| - element("reverse", "(original)", STRING.single()), |
100 |
| - element("toString", "(expression)", STRING.single()) |
| 89 | + element("replace", "(original :: STRING, search :: STRING, replace :: STRING)", STRING.single()), |
| 90 | + element("substring", "(original :: STRING, start :: INTEGER, length = length(original) :: INTEGER)", STRING.single()), |
| 91 | + element("left", "(original :: STRING, length :: INTEGER)", STRING.single()), |
| 92 | + element("right", "(original :: STRING, length :: INTEGER)", STRING.single()), |
| 93 | + element("ltrim", "(original :: STRING)", STRING.single()), |
| 94 | + element("rtrim", "(original :: STRING)", STRING.single()), |
| 95 | + element("trim", "(original :: STRING)", STRING.single()), |
| 96 | + element("lower", "(original :: STRING)", STRING.single()), |
| 97 | + element("upper", "(original :: STRING)", STRING.single()), |
| 98 | + element("split", "(original :: STRING, splitPattern :: STRING)", STRING.array()), |
| 99 | + element("reverse", "(original :: STRING)", STRING.single()), |
| 100 | + element("toString", "(expression :: STRING)", STRING.single()) |
101 | 101 | );
|
102 | 102 |
|
103 | 103 | public static final List<CypherBuiltInFunctionElement> FUNCTIONS = new ArrayList<CypherBuiltInFunctionElement>() {{
|
|
0 commit comments