Group Edge 是将多个 Node 组合为一个分组来表达的 Edge 类型。

数据包结构

1st WORD (16位)
┌───────────────────────┬───────────┐
│        Prefix         │ GroupType │
│        13位           │   3位     │
└───────────────────────┴───────────┘
  [1100 000 111 000]       [TTT]

2nd WORD: Edge TID (16位)
3rd+ WORD: 成员 TID(可变)
最后 WORD: 终止标记 (0x0000)
字段说明
Prefix131100 000 111 000
GroupType3分组种类(8种)
Edge TID16此 Edge 的唯一标识符
成员 TID16×N分组成员引用
终止标记160x0000

最少4字(1个成员),一般5~6字(2~3个成员),最大无限制。

GroupType(3位 = 8种)

代码类型含义成员数
000AND逻辑与(conjunction)2+
001OR逻辑或(disjunction)2+
010XOR排他选择2+
011LIST有序列表1+
100SET无序集合1+
101RANGE范围(起始~结束)恰好2
110PAIR有序对恰好2
111扩展未来扩展-

GroupType 详述

AND

所有成员同时参与。例:“小明小红小华开了会”

OR

成员中一个以上适用(inclusive or)。例:“请点咖啡或者

XOR

成员中恰好一个适用(exclusive or)。例:“及格或不及格(二选一)”

LIST

顺序有意义的列表。用于排名、序列。例:“第1名小明,第2名小红,第3名小华”

SET

顺序无意义的集合。仅成员身份重要。例:“出席者:小明、小红、小华”

RANGE

连续范围,包含中间值。成员恰好2个(起始、结束)。例:“从1到10”

PAIR

简单有序对。成员恰好2个。用于坐标、key-value等。例:“坐标 (3, 5)”

RANGE vs PAIR

类型含义中间值
RANGE连续范围包含
PAIR简单对

RANGE [1, 5] → 1, 2, 3, 4, 5(中间值存在)。PAIR [1, 5] → (1, 5)(仅两个值)。

示例

“小明和小红见面了”

1. Entity Node: 小明 (TID=0x0001)
2. Entity Node: 小红 (TID=0x0002)
3. Group Edge: AND (TID=0x0100)
   1st: [1100 000 111 000] [000] = Prefix + AND
   2nd: [0x0100]                 = Edge TID
   3rd: [0x0001]                 = 小明
   4th: [0x0002]                 = 小红
   5th: [0x0000]                 = 终止

4. Verb Edge: meet
   Subject: 0x0100 (分组引用)

总计: 5字

“坐标 (3, 5)”

1. Quantity Node: 3 (TID=0x0001)
2. Quantity Node: 5 (TID=0x0002)
3. Group Edge: PAIR (TID=0x0100)
   1st: [1100 000 111 000] [110] = Prefix + PAIR
   2nd: [0x0100]
   3rd: [0x0001]                 = 第一个 (x)
   4th: [0x0002]                 = 第二个 (y)
   5th: [0x0000]

总计: 5字

约束条件

GroupType最少最多
AND / OR / XOR2无限
LIST / SET1无限
RANGE / PAIR22
  • 成员 TID 必须引用已声明的 Node/Edge
  • 不允许自引用(循环)
  • TID=0x0000 作为终止标记保留