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)
| フィールド | ビット | 説明 |
|---|---|---|
| Prefix | 13 | 1100 000 111 000 |
| GroupType | 3 | グループ種類(8種) |
| Edge TID | 16 | この Edge の一意識別子 |
| メンバー TID | 16×N | グループメンバー参照 |
| 終結マーカー | 16 | 0x0000 |
最小4ワード(メンバー1個)、一般5~6ワード(メンバー2~3個)、最大制限なし。
GroupType(3ビット = 8種)
| コード | タイプ | 意味 | メンバー数 |
|---|---|---|---|
| 000 | AND | 論理積(conjunction) | 2+ |
| 001 | OR | 論理和(disjunction) | 2+ |
| 010 | XOR | 排他的選択 | 2+ |
| 011 | LIST | 順序付きリスト | 1+ |
| 100 | SET | 順序なし集合 | 1+ |
| 101 | RANGE | 範囲(開始~終了) | ちょうど2 |
| 110 | PAIR | 順序対 | ちょうど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 / XOR | 2 | 無制限 |
| LIST / SET | 1 | 無制限 |
| RANGE / PAIR | 2 | 2 |
- メンバー TID はすでに宣言された Node/Edge を参照しなければならない
- 自己参照(循環)不可
- TID=0x0000 は終結マーカーとして予約