Quantity Node es un tipo de Node de longitud variable que representa magnitudes físicas, valores numéricos, monedas y literales.

CaracterísticaDescripción
Longitud variable4~N palabras (según tamaño del valor)
Unidad explícitaSI base/derivado + no-SI (moneda, tiempo, etc.)
Soporte de escalaPrefijo como potencia de 10
Literales especialesTiempo (timestamp), cadena (UTF-16), color (RGBA)
TID al finalCaracterística de Node (consistencia con Entity)

Usos: Object de Triple Edge, participante de Verb Edge, participante de Event6, nombre/etiqueta de entidad, representación temporal, etc.

Estructura de paquete

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

2nd WORD (16 bits)
┌──────┬──────┬──────┬────────────────────┐
│ Sign │ Size │ Type │      Scale         │
│ 1bit │ 2bit │ 1bit │       4bit         │
├──────┴──────┴──────┴────────────────────┤
│              Reserved (8bit)            │
└─────────────────────────────────────────┘

3rd+ WORD: Value (variable, 1/2/4 palabras según Size)

Last WORD (16 bits)
┌─────────────────────────────────────────┐
│                  TID                    │
│                 16bit                   │
└─────────────────────────────────────────┘
CampoBitsTamañoDescripción
Prefix1-10100001 000 010 (Quantity Node)
Unit11-16664 códigos de unidad
Sign1710=positivo, 1=negativo
Size18-192Número de palabras del Value
Type2010=entero, 1=punto flotante
Scale21-244Potencia de 10 (offset 8)
Reserved25-328Reservado (código de moneda cuando es divisa)

Tamaño de paquete por Size

SizePalabras del ValueTotal de palabras
001 (16 bits)4
012 (32 bits)5
104 (64 bits)7

Códigos de unidad (6 bits = 64)

Unidades base SI (0x00~0x06)

CódigoUnidadSímboloMagnitud
0x00metermLongitud
0x01kilogramkgMasa
0x02secondsTiempo
0x03ampereACorriente eléctrica
0x04kelvinKTemperatura
0x05molemolCantidad de sustancia
0x06candelacdIntensidad luminosa

Unidades derivadas SI (0x07~0x1C)

CódigoUnidadSímboloMagnitud
0x07hertzHzFrecuencia
0x08newtonNFuerza
0x09pascalPaPresión
0x0AjouleJEnergía
0x0BwattWPotencia
0x0CcoulombCCarga eléctrica
0x0DvoltVVoltaje
0x0EfaradFCapacitancia
0x0FohmΩResistencia
0x10siemensSConductancia
0x11weberWbFlujo magnético
0x12teslaTCampo magnético
0x13henryHInductancia
0x14celsius°CTemperatura
0x15lumenlmFlujo luminoso
0x16luxlxIluminancia
0x17becquerelBqRadiactividad
0x18grayGyDosis absorbida
0x19sievertSvDosis equivalente
0x1AkatalkatActividad catalítica
0x1BradianradÁngulo plano
0x1CsteradiansrÁngulo sólido

Unidades no-SI (0x20~0x2F)

CódigoUnidadUso
0x20CURRENCYMoneda (extensión de código de divisa)
0x21percent% (proporción)
0x22degree° (ángulo)
0x23~0x28minute~yearUnidades de tiempo
0x29bitCantidad de información
0x2AbyteCantidad de información
0x2B~0x2FCOUNT~INDEXValores sin unidad

Literales especiales (0x30~0x3F)

CódigoTipoPayloadUso
0x30TIMESTAMP_SEC2/4 palabrasTimestamp Unix (segundos)
0x31TIMESTAMP_MS4 palabrasTimestamp Unix (milisegundos)
0x32UTF162+N palabrasCadena UTF-16
0x33RGBA2 palabrasColor (32 bits)

Scale (4 bits)

Potencia de 10. Se aplica un offset de 8. Cálculo: valor real = Value × 10^(Scale - 8)

CódigoValorPrefijoCódigoValorPrefijo
000010⁻⁸-100010⁰ (base)-
001010⁻⁶μ100110¹da
010110⁻³m101110³k
011010⁻²c111010⁶M

Extensión de moneda (Unit = 0x20)

Cuando es CURRENCY, los 8 bits Reserved se usan como código de divisa.

CódigoMonedaISOCódigoMonedaISO
0x00Dólar estadounidenseUSD0x05Won coreanoKRW
0x01EuroEUR0x06Franco suizoCHF
0x02Yen japonésJPY0x07Dólar australianoAUD
0x03Libra esterlinaGBP0x08Dólar canadienseCAD
0x04Yuan chinoCNY0x80BitcoinBTC

Ejemplos

“100kg” → 4 palabras

1st: [Prefix] + [0x01(kg)]
2nd: +, 1 palabra, int, ×1     → 0x0800
3rd: 0x0064 (100)
4th: TID
Interpretación: +100 × 10⁰ kg = 100kg

“$2,500,000” → 4 palabras (uso de escala)

1st: [Prefix] + [0x20(CURRENCY)]
2nd: +, 1 palabra, int, ×10³, USD  → 0x0B00
3rd: 0x09C4 (2500)
4th: TID
Interpretación: +2500 × 10³ USD = $2,500,000