Group Edge — тип Edge для объединения нескольких Node в одну группу.
Структура пакета
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 | Уникальный ID этого Edge |
| TID членов | 16×N | Ссылки на члены группы |
| Маркер заверш. | 16 | 0x0000 |
Минимум 4 слова (1 член), обычно 5~6 (2~3 члена), максимум без ограничений.
GroupType (3 бита = 8 типов)
| Код | Тип | Значение | Кол-во членов |
|---|---|---|---|
| 000 | AND | Конъюнкция | 2+ |
| 001 | OR | Дизъюнкция | 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 зарезервирован как маркер завершения