Triple Edge es un tipo de Edge que expresa relaciones/propiedades en formato (Subject, Property, Object).

Diseño de modo dual

  • Modo básico (4 palabras): PropCode 0~62 (Top 63 propiedades)
  • Modo extendido (5 palabras): Si PropCode=63, cubre todo el P-ID (16 bits de alineación semántica)

Modo básico (4 palabras = 64 bits)

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

2nd WORD: Edge TID (16 bits)
3rd WORD: Subject TID (16 bits)
4th WORD: Object TID (16 bits)
CampoBitsDescripción
Prefix101100 000 001
PropCode60~62: Top 63 propiedades, 63: modo extendido
Edge TID16TID de este Edge
Subject TID16TID de Entity/Node sujeto
Object TID16TID de Entity/Node/Quantity objeto

Modo extendido (5 palabras = 80 bits)

Si PropCode es 63, se agrega un P-ID de 16 bits en la 3ra palabra.

1st WORD: [Prefix 10bit] + [PropCode=63 6bit]
2nd WORD: Edge TID (16 bits)
3rd WORD: P-ID alineación semántica (16 bits)
4th WORD: Subject TID (16 bits)
5th WORD: Object TID (16 bits)

Top 63 propiedades (PropCode 0~62)

Propiedades seleccionadas según la frecuencia de uso en Wikidata.

Clasificación/tipo (Code 0~7)

CodeP-IDPropiedadDescripción
0P31instance ofInstancia de ~
1P279subclass ofSubclase de ~
2P361part ofParte de ~
3P527has partContiene ~
4P1552has qualityPropiedad/característica
5P460same asIgual
6P1889different fromDiferente
7P156followed bySiguiente

Espacio/ubicación (Code 8~15)

CodeP-IDPropiedadDescripción
8P17countryPaís
9P131located inUbicación (división administrativa)
10P276locationUbicación (lugar)
11P625coordinateCoordenadas
12P30continentContinente
13P36capitalCapital
14P150containsContiene (región)
15P206located next toCuerpo de agua adyacente

Tiempo (Code 16~23)

CodeP-IDPropiedadDescripción
16P569date of birthFecha de nacimiento
17P570date of deathFecha de fallecimiento
18P571inceptionFecha de fundación
19P576dissolvedFecha de disolución
20P577publication dateFecha de publicación
21P580start timeMomento de inicio
22P582end timeMomento de fin
23P585point in timeMomento específico

Información personal (Code 24~31)

CodeP-IDPropiedadDescripción
24P19place of birthLugar de nacimiento
25P20place of deathLugar de fallecimiento
26P21sex or genderSexo o género
27P27citizenshipCiudadanía
28P735given nameNombre de pila
29P734family nameApellido
30P1559name in native languageNombre nativo
31P742pseudonymSeudónimo

Relaciones/pertenencia (Code 32~39)

CodeP-IDPropiedadDescripción
32P22fatherPadre
33P25motherMadre
34P26spouseCónyuge
35P40childHijo/a
36P3373siblingHermano/a
37P463member ofMiembro de
38P108employerEmpleador
39P1027conferred byOtorgado por

Ocupación/actividad (Code 40~47)

CodeP-IDPropiedadDescripción
40P106occupationOcupación
41P39position heldCargo
42P69educated atEducación
43P101field of workCampo de trabajo
44P1344participant inParticipación (evento)
45P166award receivedPremio recibido
46P800notable workObra notable
47P1412languages spokenIdiomas hablados

Medios/identificación (Code 48~55)

CodeP-IDPropiedadDescripción
48P18imageImagen
49P154logoLogo
50P41flag imageBandera
51P373Commons categoryWikimedia
52P856official websiteSitio web oficial
53P214VIAF IDVIAF
54P227GND IDGND
55P213ISNIISNI

Obras/creación (Code 56~62)

CodeP-IDPropiedadDescripción
56P50authorAutor
57P57directorDirector
58P86composerCompositor
59P175performerIntérprete
60P136genreGénero
61P364original languageIdioma original
62P123publisherEditorial

Code 63 está reservado como indicador de modo extendido.

Resumen de PropCode

┌─────────────────────────────────────────────┐
│  0~7:   Clasificación/tipo (P31, P279, ...) │
│  8~15:  Espacio/ubicación (P17, P131, ...)  │
│  16~23: Tiempo (P569, P570, ...)            │
│  24~31: Info. personal (P19, P20, ...)      │
│  32~39: Relaciones/pertenencia (P22, P25, ..)│
│  40~47: Ocupación/actividad (P106, P39, ..) │
│  48~55: Medios/identificación (P18, P856, ..)│
│  56~62: Obras/creación (P50, P57, ...)      │
├─────────────────────────────────────────────┤
│  63: Indicador de modo extendido            │
└─────────────────────────────────────────────┘

Ejemplos

Modo básico: “Apple es una empresa”

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]              - Empresa (Object)

Total: 4 palabras

Modo extendido: “La altura de la Torre Eiffel es 330m”

P2048 (height) → Fuera del Top 63 → Modo extendido

Triple Edge:
  1st: [1100 000 001] + [111111]  - Prefix + Ext(63)
  2nd: [TID: 0x0102]              - Edge TID
  3rd: [0xA800]                   - P2048 alineación semántica
  4th: [TID: 0x0030]              - Torre Eiffel (Subject)
  5th: [TID: 0x0050]              - 330m Quantity (Object)

Total: 5 palabras

Análisis (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:
        # Modo básico (4 palabras)
        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:
        # Modo extendido (5 palabras)
        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
        }