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)
ПолеБитыОписание
Prefix131100 000 111 000
GroupType3Тип группы (8 видов)
Edge TID16Уникальный ID этого Edge
TID членов16×NСсылки на члены группы
Маркер заверш.160x0000

Минимум 4 слова (1 член), обычно 5~6 (2~3 члена), максимум без ограничений.

GroupType (3 бита = 8 типов)

КодТипЗначениеКол-во членов
000ANDКонъюнкция2+
001ORДизъюнкция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 зарезервирован как маркер завершения