Quantity Node 코드북 — SI 단위, 화폐, 스케일 팩터, 특수 리터럴을 인코딩하는 가변 길이 Node 구조.
Author: 박준우 (mail@parkjunwoo.com) License: MIT 명세 버전: v0.3
Quantity Node는 물리량, 수치, 화폐, 리터럴 등을 표현하는 가변 길이 Node 타입이다.
- 가변 길이: 4~N워드 (값 크기에 따라)
- 단위 명시: SI 기본/유도 + 비SI (화폐, 시간 등)
- 스케일 지원: 10의 거듭제곱으로 접두어 표현
- 특수 리터럴: 시간(timestamp), 문자열(UTF-16), 색상(RGBA)
- TID 마지막: Node 특성 (Entity와 일관성)
용도: Triple Edge의 Object, Verb Edge의 참여자, Event6의 참여자, Entity의 이름/라벨, 시간 표현 등.
1st WORD (16비트)
┌────────────────────┬────────────────────┐
│ Prefix │ Unit │
│ 10bit │ 6bit │
└────────────────────┴────────────────────┘
2nd WORD (16비트)
┌──────┬──────┬──────┬────────────────────┐
│ Sign │ Size │ Type │ Scale │
│ 1bit │ 2bit │ 1bit │ 4bit │
├──────┴──────┴──────┴────────────────────┤
│ Reserved (8bit) │
└─────────────────────────────────────────┘
3rd+ WORD: Value (가변, Size에 따라 1/2/4워드)
Last WORD (16비트)
┌─────────────────────────────────────────┐
│ TID │
│ 16bit │
└─────────────────────────────────────────┘
| Size | Value 워드 | 총 워드 |
|---|---|---|
| 00 | 1 (16비트) | 4 |
| 01 | 2 (32비트) | 5 |
| 10 | 4 (64비트) | 7 |
| 코드 | 단위 | 기호 | 물리량 |
|---|---|---|---|
| 0x00 | meter | m | 길이 |
| 0x01 | kilogram | kg | 질량 |
| 0x02 | second | s | 시간 |
| 0x03 | ampere | A | 전류 |
| 0x04 | kelvin | K | 온도 |
| 0x05 | mole | mol | 물질량 |
| 0x06 | candela | cd | 광도 |
| 코드 | 단위 | 기호 | 물리량 |
|---|---|---|---|
| 0x07 | hertz | Hz | 주파수 |
| 0x08 | newton | N | 힘 |
| 0x09 | pascal | Pa | 압력 |
| 0x0A | joule | J | 에너지 |
| 0x0B | watt | W | 일률 |
| 0x0C | coulomb | C | 전하량 |
| 0x0D | volt | V | 전압 |
| 0x0E | farad | F | 전기용량 |
| 0x0F | ohm | Ω | 저항 |
| 0x10 | siemens | S | 전도율 |
| 0x11 | weber | Wb | 자기선속 |
| 0x12 | tesla | T | 자기장 |
| 0x13 | henry | H | 인덕턴스 |
| 0x14 | celsius | °C | 온도 |
| 0x15 | lumen | lm | 광선속 |
| 0x16 | lux | lx | 조도 |
| 0x17 | becquerel | Bq | 방사능 |
| 0x18 | gray | Gy | 흡수선량 |
| 0x19 | sievert | Sv | 선량당량 |
| 0x1A | katal | kat | 촉매활성 |
| 0x1B | radian | rad | 평면각 |
| 0x1C | steradian | sr | 입체각 |
| 코드 | 단위 | 용도 |
|---|---|---|
| 0x20 | CURRENCY | 화폐 (통화 코드 확장) |
| 0x21 | percent | % (비율) |
| 0x22 | degree | ° (각도) |
| 0x23~0x28 | minute~year | 시간 단위 |
| 0x29 | bit | 정보량 |
| 0x2A | byte | 정보량 |
| 0x2B~0x2F | COUNT~INDEX | 무단위 수치 |
| 코드 | 타입 | Payload | 용도 |
|---|---|---|---|
| 0x30 | TIMESTAMP_SEC | 2/4워드 | Unix timestamp (초) |
| 0x31 | TIMESTAMP_MS | 4워드 | Unix timestamp (밀리초) |
| 0x32 | UTF16 | 2+N워드 | UTF-16 문자열 |
| 0x33 | RGBA | 2워드 | 색상 (32비트) |
10의 거듭제곱. 오프셋 8 적용. 계산: 실제값 = Value × 10^(Scale - 8)
| 코드 | 값 | 접두어 | 코드 | 값 | 접두어 |
|---|---|---|---|---|---|
| 0000 | 10⁻⁸ | - | 1000 | 10⁰ (기본) | - |
| 0010 | 10⁻⁶ | μ | 1001 | 10¹ | da |
| 0101 | 10⁻³ | m | 1011 | 10³ | k |
| 0110 | 10⁻² | c | 1110 | 10⁶ | M |
화폐(CURRENCY)일 때 Reserved 8비트를 통화 코드로 사용.
주요 통화:
| 코드 | 통화 | ISO | 코드 | 통화 | ISO |
|---|---|---|---|---|---|
| 0x00 | 미국 달러 | USD | 0x05 | 한국 원 | KRW |
| 0x01 | 유로 | EUR | 0x06 | 스위스 프랑 | CHF |
| 0x02 | 일본 엔 | JPY | 0x07 | 호주 달러 | AUD |
| 0x03 | 영국 파운드 | GBP | 0x08 | 캐나다 달러 | CAD |
| 0x04 | 중국 위안 | CNY | 0x80 | Bitcoin | BTC |
1st: [Prefix] + [0x01(kg)]
2nd: +, 1워드, int, ×1 → 0x0800
3rd: 0x0064 (100)
4th: TID
해석: +100 × 10⁰ kg = 100kg
1st: [Prefix] + [0x20(CURRENCY)]
2nd: +, 1워드, int, ×10³, USD → 0x0B00
3rd: 0x09C4 (2500)
4th: TID
해석: +2500 × 10³ USD = $2,500,000
| 레포 | 관계 |
|---|---|
| geul | 상위 — 문법 명세 + SIDX 횡단 문서 |
| geul-entity | 형제 — Entity SIDX 48비트 코드북 |
| geul-verb | 형제 — 동사 SIDX 16비트 코드북 |
전체 명세: geul/docs/문법/Quantity Node.md