Event6 Edge ist ein Ereignis-Edge-Typ, der die 5W1H (Who, What, Whom, When, Where, Why) auf einmal ausdrueckt.

5W1H-Elemente

ElementEnglischBitBedeutungTID-Referenz
WhoAgent0HandelnderEntity Node
WhatAction1HandlungVerb Edge
WhomPatient2Objekt/BetroffenerEntity Node
WhenTime3ZeitpunktQuantity/Entity
WhereLocation4OrtEntity Node
WhyReason5Grund/ZweckClause Edge/Entity

Paketstruktur

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

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

3rd+ WORD: Element-TIDs (in Presence-Reihenfolge)

Presence-Bitmaske (6 Bit)

BitElementWenn vorhanden
0WhoEntsprechendes TID enthalten
1WhatEntsprechendes TID enthalten
2WhomEntsprechendes TID enthalten
3WhenEntsprechendes TID enthalten
4WhereEntsprechendes TID enthalten
5WhyEntsprechendes TID enthalten

Gesamtwoerter = 2 (Header + Edge TID) + popcount(Presence). Bereich 3~8 Woerter (48~128 Bit).

Strukturen nach Modus

Minimalmodus (3 Woerter)

Beispiel: "Es hat geregnet" (nur What)

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

Kernmodus (5 Woerter)

Who + What + Whom. Die haeufigste Konfiguration.

Beispiel: "Hans hat Anna geschlagen"

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

Standardmodus (6 Woerter)

Beispiel: "Hans hat Anna gestern getroffen"

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

Vollstaendiger Modus (8 Woerter)

Beispiel: "Aus Liebe gab Hans gestern in der Schule Anna ein Geschenk"

1st: [Prefix] + [111111]      - Alle Elemente
2nd: [Edge TID]
3rd: [Who TID]                - Hans
4th: [What TID]               - Verb Edge "give"
5th: [Whom TID]               - Anna
6th: [When TID]               - Gestern
7th: [Where TID]              - Schule
8th: [Why TID]                - Liebe (Grund)

Element-Details

What (Handlung)

What referenziert die TID eines Verb Edge. Die Informationen zu Tempus, Aspekt und anderen Qualifikatoren sind in diesem Verb Edge enthalten.

Why (Grund)

Einfache Gruende werden als Entity-TID (“Liebe”) ausgedrueckt, komplexe Gruende als Clause Edge-TID (“weil es regnete”).

Vergleich Event6 vs Verb Edge

Verb EdgeEvent6 Edge
FokusPraedikation/AktionVollstaendiges Ereignis
TeilnehmerParticipant-Struktur5W1H-TIDs
Raum-ZeitSeparater AusdruckWhen/Where integriert
GrundSeparate ClauseWhy integriert
Woerter2~53~8
VerwendungPraedikationsausdruckEreignisspeicherung

Auswahlhilfe: Verb Edge fuer Praedikations-/Satzanalyse, Event6 Edge fuer Ereignis-/Datensatzspeicherung, Triple Edge fuer einfache Fakten.

Beispiele

“Apple hat Tesla uebernommen”

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)

Gesamt: 5 Woerter

“Yi Sun-sin fiel 1598 in der Schlacht von Noryang”

Who:   Yi Sun-sin        → Entity TID 0x0010
What:  die (fallen)      → Verb Edge TID 0x0101
When:  1598              → Entity TID 0x0011
Where: Schlacht Noryang   → Entity TID 0x0012

Event6 Edge:
  1st: [1100 000 011] + [011011]  - Who,What,When,Where
  2nd: [TID: 0x0202]
  3rd: [TID: 0x0010]              - Yi Sun-sin
  4th: [TID: 0x0101]              - die
  5th: [TID: 0x0011]              - 1598
  6th: [TID: 0x0012]              - Schlacht von Noryang

Gesamt: 6 Woerter

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')
    }