基于矩阵法逻辑匹配实现方案
1. 需求 在知识图谱关系网络中,节点之间往往会存在多种不同类型的边,例如在人际关系网络中,人与人之间的关系可能存在同学关系、转账关系、微信好友、相互关注、同一城市等等。在做节点特征进行统计分析的时候,我们可能会跟进给定的关系的逻辑条件去筛选符合条件的关系进行统计,例如满足“即使同学关系同时又是同一城市”,或者是“存在转账规则或存在相互关注”,即在满足设定的关系逻辑组合下进行邻居节点特征统计。 把问题抽象化为如下: 已知待匹配逻辑关系集合,判断某一个组合是否满足逻辑表达式。 例如,已知待匹配逻辑运算: (X1 or X3) and (X4 or X5) X1 or ((X2 or X4) and X5) 对应给定的组合X1X3X4X6, 判断该组合是否满足上述其中一种模式 例如:X1X3是满足,因为匹配逻辑中存在X1即可, 故X1X3可以匹配上;X5X6不满足,因为X5必须是要与X1、X3、X2、X4中至少一个同时出现 2.解决方案 2.1 逻辑矩阵表示法 将逻辑元素进行编号, X0:0, X1:1, X2:2, X3:3, X4:4, X5: 将匹配逻辑运算进行拆分,去掉括号分解为若干个and单元,上述拆完后结果为 X0 X1 X3 X2X5 X4X5 X1X2X3X4 X1X2X3X5 将上述拆分结果转化为数组, 数组元素为上述每一行中对应的编号组成的集合 Seq(Set(0)