用途:J-Expr 是 HashQL 的 JSON 表达式语法,用 JSON 基本类型表示带类型的表达式,用于编写查询。
主要能力:J-Expr 有三类表达式。字符串解析为路径或标识符,如 "x"、"vertex.id.entity_id"、"::core::types::String"。数组表示函数调用,如 ["add", {...}, {...}]。带 # 键的对象表示数据构造,包括 #literal(原始值)、#struct(命名字段)、#list(变长有序)、#tuple(定长有序)、#dict(键值映射)、#type(类型标注)。
常用写法:let 绑定如 ["let", "varName", {...}, [...]];函数定义 ["fn", {...}, {...}, "_", body];条件 ["if", cond, then, else];比较 ["==", "left", "right"]。带类型的数据构造可用 #type 搭配其他构造器。
必要用法要点:原始值(数字、字符串、布尔、null)必须包在 {"#literal": ...} 中,不能直接写裸 JSON 值;命名空间路径用 :: 前缀;标注参数用 : 前缀,不要用 #;每个对象应只有一个主 # 键;注意 #list 为变长、#tuple 为定长,二者不可混用。
示例:实体查询 ["::graph::head::entities", ["::graph::tmp::decision_time_now"]];带类型结构体 { "#struct": { "value": { "#literal": 100 } }, "#type": "Amount" }。
参考与实现位置:语法参考、特殊形式、数据构造器、类型 DSL;解析器位于 libs/@local/hashql/syntax-jexpr/src/parser/ 等路径。
限制:资料未说明可用平台、收费方式及版本要求,相关内容暂未提供。