Event6 Edge adalah tipe Edge untuk menyatakan 5W1H (Who, What, Whom, When, Where, Why) sekaligus dalam satu peristiwa.

Elemen 5W1H

ElemenInggrisBitMaknaTarget referensi TID
WhoAgent0PelakuEntity Node
WhatAction1TindakanVerb Edge
WhomPatient2Objek/penderitaEntity Node
WhenTime3WaktuQuantity/Entity
WhereLocation4TempatEntity Node
WhyReason5Alasan/tujuanClause Edge/Entity

Struktur Paket

1st WORD (16 bit)
┌────────────────────┬────────────────────┐
│      Prefix        │     Presence       │
│      10bit         │       6bit         │
└────────────────────┴────────────────────┘

2nd WORD (16 bit)
┌────────────────────────────────────────────┐
│                Edge TID                    │
└────────────────────────────────────────────┘

3rd+ WORD: TID elemen (sesuai urutan Presence)

Bitmask Presence (6 bit)

BitElemenJika diset
0WhoTID disertakan
1WhatTID disertakan
2WhomTID disertakan
3WhenTID disertakan
4WhereTID disertakan
5WhyTID disertakan

Total word = 2 (header + Edge TID) + popcount(Presence). Rentang: 3~8 word (48~128 bit).

Struktur per Mode

Mode Minimal (3 word)

Contoh: "Hujan turun" (hanya What)

1st: [Prefix] + [000010]      - hanya What
2nd: [Edge TID]
3rd: [What TID]               - "rain" Verb Edge

Mode Inti (5 word)

Who + What + Whom. Konfigurasi paling sering.

Contoh: "Budi memukul Andi"

1st: [Prefix] + [000111]      - Who, What, Whom
2nd: [Edge TID]
3rd: [Who TID]                - Budi
4th: [What TID]               - "hit" Verb Edge
5th: [Whom TID]               - Andi

Mode Standar (6 word)

Contoh: "Budi bertemu Sari kemarin"

1st: [Prefix] + [001111]      - Who, What, Whom, When
2nd: [Edge TID]
3rd: [Who TID]                - Budi
4th: [What TID]               - "meet" Verb Edge
5th: [Whom TID]               - Sari
6th: [When TID]               - kemarin

Mode Lengkap (8 word)

Contoh: "Budi karena cinta kemarin di sekolah memberikan hadiah kepada Sari"

1st: [Prefix] + [111111]      - semua elemen
2nd: [Edge TID]
3rd: [Who TID]                - Budi
4th: [What TID]               - "give" Verb Edge
5th: [Whom TID]               - Sari
6th: [When TID]               - kemarin
7th: [Where TID]              - sekolah
8th: [Why TID]                - cinta (alasan)

Detail Elemen

What (tindakan)

What merujuk TID Verb Edge. Verb Edge tersebut berisi informasi tense, aspek, dan kualifikator lainnya.

Why (alasan)

Alasan sederhana dinyatakan sebagai TID Entity (“cinta”), alasan kompleks sebagai TID Clause Edge (“karena hujan”).

Perbandingan Event6 vs Verb Edge

Verb EdgeEvent6 Edge
FokusPredikat/tindakanPeristiwa lengkap
PartisipanStruktur ParticipantTID 5W1H
Ruang-waktuEkspresi terpisahWhen/Where bawaan
AlasanClause terpisahWhy bawaan
Word2~53~8
KegunaanEkspresi predikatPenyimpanan peristiwa

Panduan pemilihan: Untuk analisis predikat/kalimat gunakan Verb Edge, untuk penyimpanan peristiwa/catatan gunakan Event6 Edge, untuk fakta sederhana gunakan Triple Edge.

Contoh

“Apple mengakuisisi Tesla”

Who:  Apple (Q312)     → Entity TID 0x0001
What: acquire          → Verb Edge TID 0x0100
Whom: Tesla (Q478214)  → Entity TID 0x0002

Event6 Edge:
  1st: [1100 000 011] + [000111]  - Prefix + Who,What,Whom
  2nd: [TID: 0x0200]              - Edge TID
  3rd: [TID: 0x0001]              - Apple (Who)
  4th: [TID: 0x0100]              - acquire (What)
  5th: [TID: 0x0002]              - Tesla (Whom)

Total: 5 word

“Soekarno memproklamasikan kemerdekaan pada 1945 di Jakarta”

Who:   Soekarno         → Entity TID 0x0010
What:  proclaim          → Verb Edge TID 0x0101
When:  1945             → Entity TID 0x0011
Where: Jakarta          → Entity TID 0x0012

Event6 Edge:
  1st: [1100 000 011] + [011011]  - Who,What,When,Where
  2nd: [TID: 0x0202]
  3rd: [TID: 0x0010]              - Soekarno
  4th: [TID: 0x0101]              - proclaim
  5th: [TID: 0x0011]              - 1945
  6th: [TID: 0x0012]              - Jakarta

Total: 6 word

Parsing

def parse_event6(data: bytes) -> dict:
    word1 = int.from_bytes(data[0:2], 'big')

    prefix = word1 >> 6
    assert prefix == 0b1100000011, "Not Event6 Edge"

    presence = word1 & 0x3F
    edge_tid = int.from_bytes(data[2:4], 'big')

    elements = {}
    element_names = ['who', 'what', 'whom', 'when', 'where', 'why']
    offset = 4

    for i, name in enumerate(element_names):
        if presence & (1 << i):
            tid = int.from_bytes(data[offset:offset+2], 'big')
            elements[name] = tid
            offset += 2

    return {
        'presence': presence,
        'edge_tid': edge_tid,
        'elements': elements,
        'words': 2 + bin(presence).count('1')
    }