TypeDB更新查询随机实例时遇语法及写入错误求助
TypeDB 查询错误分析与修正方案
错误诊断
- [TQL03] 语法错误:TypeDB 查询不允许独立的
delete语句块,delete必须紧跟在match块之后用于删除匹配到的实例/关系。原查询中delete位置不符合语法规则,因此被判定为多余输入。 - [THW15] 写入错误:移除
delete后,第二条insert引用的变量$segment1未在查询的match阶段或前面的insert中完成绑定,TypeDB 无法识别未绑定的变量,导致无法执行插入操作。
修正后的查询(符合预期逻辑)
match $sensor isa Sensor; $segment1 isa Segment, monitoredBy $sensor; $segment2 isa Segment, monitoredBy $sensor; $old-connects isa connectsTo, relates source $segment1, relates target $segment2; delete $old-connects; insert $new-segment isa Segment; $new-connects1 isa connectsTo, relates source $segment1, relates target $new-segment; $new-connects2 isa connectsTo, relates source $new-segment, relates target $segment2; $new-monitor isa monitoredBy, relates monitored $new-segment, relates monitor $sensor;
逻辑说明
match阶段:匹配到同一Sensor监控的、存在connectsTo关系的两个Segment实例delete阶段:删除这两个Segment之间原有的connectsTo关系insert阶段:- 创建新的
Segment实例 - 建立
$segment1到新Segment、新Segment到$segment2的connectsTo关系 - 建立新
Segment与原Sensor的monitoredBy监控关系
- 创建新的
内容的提问来源于stack exchange,提问作者Ruszka Martin
相关产品推荐
相关产品推荐

