Triple Edge ist ein Edge-Typ, der Beziehungen und Eigenschaften in der Form (Subject, Property, Object) ausdrueckt.

Dualer Modus

  • Basismodus (4 Woerter): PropCode 0~62 (Top 63 Eigenschaften)
  • Erweiterungsmodus (5 Woerter): Wenn PropCode=63, wird die gesamte P-ID abgedeckt (16 Bit semantisch ausgerichtet)

Basismodus (4 Woerter = 64 Bit)

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

2nd WORD: Edge TID (16 Bit)
3rd WORD: Subject TID (16 Bit)
4th WORD: Object TID (16 Bit)
FeldBitsBeschreibung
Prefix101100 000 001
PropCode60~62: Top 63 Eigenschaften, 63: Erweiterungsmodus
Edge TID16TID dieses Edge
Subject TID16TID des Subjekt-Entity/Node
Object TID16TID des Objekt-Entity/Node/Quantity

Erweiterungsmodus (5 Woerter = 80 Bit)

Wenn PropCode 63 ist, wird im 3. Wort eine 16-Bit-P-ID eingefuegt.

1st WORD: [Prefix 10bit] + [PropCode=63 6bit]
2nd WORD: Edge TID (16 Bit)
3rd WORD: P-ID semantisch ausgerichtet (16 Bit)
4th WORD: Subject TID (16 Bit)
5th WORD: Object TID (16 Bit)

Top 63 Eigenschaften (PropCode 0~62)

Eigenschaften ausgewaehlt auf Basis der Nutzungshaeufigkeit in Wikidata.

Klassifikation/Typ (Code 0~7)

CodeP-IDEigenschaftsnameBeschreibung
0P31instance ofInstanz von ~
1P279subclass ofUnterklasse von ~
2P361part ofTeil von ~
3P527has partEnthaelt ~
4P1552has qualityEigenschaft/Merkmal
5P460same asIdentisch
6P1889different fromVerschieden
7P156followed byGefolgt von

Raum/Lage (Code 8~15)

CodeP-IDEigenschaftsnameBeschreibung
8P17countryLand
9P131located inLage (Verwaltungseinheit)
10P276locationLage (Ort)
11P625coordinateKoordinaten
12P30continentKontinent
13P36capitalHauptstadt
14P150containsEnthaelt (Region)
15P206located next toAngrenzendes Gewaesser

Zeit (Code 16~23)

CodeP-IDEigenschaftsnameBeschreibung
16P569date of birthGeburtsdatum
17P570date of deathSterbedatum
18P571inceptionGruendungsdatum
19P576dissolvedAufloesungsdatum
20P577publication dateVeroeffentlichungsdatum
21P580start timeStartzeit
22P582end timeEndzeit
23P585point in timeZeitpunkt

Persoenliche Grunddaten (Code 24~31)

CodeP-IDEigenschaftsnameBeschreibung
24P19place of birthGeburtsort
25P20place of deathSterbeort
26P21sex or genderGeschlecht
27P27citizenshipStaatsangehoerigkeit
28P735given nameVorname
29P734family nameNachname
30P1559name in native languageName in Muttersprache
31P742pseudonymPseudonym

Beziehungen/Zugehoerigkeiten (Code 32~39)

CodeP-IDEigenschaftsnameBeschreibung
32P22fatherVater
33P25motherMutter
34P26spouseEhepartner
35P40childKind
36P3373siblingGeschwister
37P463member ofMitglied von
38P108employerArbeitgeber
39P1027conferred byVerliehen von

Beruf/Taetigkeit (Code 40~47)

CodeP-IDEigenschaftsnameBeschreibung
40P106occupationBeruf
41P39position heldBekleidete Position
42P69educated atAusbildung
43P101field of workFachgebiet
44P1344participant inTeilnahme (Ereignis)
45P166award receivedAuszeichnung
46P800notable workBekanntes Werk
47P1412languages spokenGesprochene Sprachen

Medien/Identifikation (Code 48~55)

CodeP-IDEigenschaftsnameBeschreibung
48P18imageBild
49P154logoLogo
50P41flag imageFlagge
51P373Commons categoryWikimedia
52P856official websiteOffizielle Webseite
53P214VIAF IDVIAF
54P227GND IDGND
55P213ISNIISNI

Werke/Kreation (Code 56~62)

CodeP-IDEigenschaftsnameBeschreibung
56P50authorAutor
57P57directorRegisseur
58P86composerKomponist
59P175performerInterpret
60P136genreGenre
61P364original languageOriginalsprache
62P123publisherVerlag

Code 63 ist als Erweiterungsmodus-Indikator reserviert.

PropCode-Zusammenfassung

┌─────────────────────────────────────────────┐
│  0~7:   Klassifikation/Typ (P31, P279, ...) │
│  8~15:  Raum/Lage (P17, P131, ...)          │
│  16~23: Zeit (P569, P570, ...)              │
│  24~31: Pers. Grunddaten (P19, P20, ...)    │
│  32~39: Bezieh./Zugehoerigk. (P22, P25, ...)│
│  40~47: Beruf/Taetigkeit (P106, P39, ...)   │
│  48~55: Medien/Identifik. (P18, P856, ...)  │
│  56~62: Werke/Kreation (P50, P57, ...)      │
├─────────────────────────────────────────────┤
│  63: Erweiterungsmodus-Indikator            │
└─────────────────────────────────────────────┘

Beispiele

Basismodus: “Apple ist ein Unternehmen”

P31 (instance of) → PropCode = 0

Triple Edge:
  1st: [1100 000 001] + [000000]  - Prefix + PropCode 0
  2nd: [TID: 0x0101]              - Edge TID
  3rd: [TID: 0x0010]              - Apple (Subject)
  4th: [TID: 0x0020]              - Unternehmen (Object)

Gesamt: 4 Woerter

Erweiterungsmodus: “Die Hoehe des Eiffelturms betraegt 330m”

P2048 (height) → Ausserhalb Top 63 → Erweiterungsmodus

Triple Edge:
  1st: [1100 000 001] + [111111]  - Prefix + Ext(63)
  2nd: [TID: 0x0102]              - Edge TID
  3rd: [0xA800]                   - P2048 semantisch ausgerichtet
  4th: [TID: 0x0030]              - Eiffelturm (Subject)
  5th: [TID: 0x0050]              - 330m Quantity (Object)

Gesamt: 5 Woerter

Parsing

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

    prefix = word1 >> 6
    assert prefix == 0b1100000001, "Not Triple Edge"

    prop_code = word1 & 0x3F

    if prop_code < 63:
        # Basismodus (4 Woerter)
        return {
            'mode': 'basic',
            'prop_code': prop_code,
            'edge_tid': int.from_bytes(data[2:4], 'big'),
            'subject_tid': int.from_bytes(data[4:6], 'big'),
            'object_tid': int.from_bytes(data[6:8], 'big'),
            'words': 4
        }
    else:
        # Erweiterungsmodus (5 Woerter)
        return {
            'mode': 'extended',
            'p_id': int.from_bytes(data[4:6], 'big'),
            'edge_tid': int.from_bytes(data[2:4], 'big'),
            'subject_tid': int.from_bytes(data[6:8], 'big'),
            'object_tid': int.from_bytes(data[8:10], 'big'),
            'words': 5
        }