SQL
CREATE TABLE elements (
id INTEGER PRIMARY KEY AUTOINCREMENT,
frame_id INTEGER NOT NULL,
source TEXT NOT NULL,
-- 'ocr' | 'accessibility'
role TEXT NOT NULL,
-- OCR: 'page',
'block',
'paragraph',
'line',
'word'
-- AX: 'AXButton',
'AXTextField',
'AXStaticText',
etc.
text TEXT,
-- element text content (NULL for container nodes)
parent_id INTEGER,
-- self-referential FK for tree hierarchy (NULL = root)
depth INTEGER NOT NULL DEFAULT 0,
-- tree depth (0 = root)
left_bound REAL,
-- normalized 0-1 bounding box
top_bound REAL,
width_bound REAL,
height_bound REAL,
confidence REAL,
-- OCR confidence (0-100),
NULL for AX
sort_order INTEGER NOT NULL DEFAULT 0,
properties TEXT,
-- sibling order within parent
FOREIGN KEY (frame_id) REFERENCES frames(id),
FOREIGN KEY (parent_id) REFERENCES elements(id)
)
Columns
| Column | Data type | Allow null | Primary key | Actions |
|---|---|---|---|---|
id |
INTEGER |
✓ | ✓ | read-only |
frame_id |
INTEGER |
read-only | ||
source |
TEXT |
read-only | ||
role |
TEXT |
read-only | ||
text |
TEXT |
✓ | read-only | |
parent_id |
INTEGER |
✓ | read-only | |
depth |
INTEGER |
read-only | ||
left_bound |
REAL |
✓ | read-only | |
top_bound |
REAL |
✓ | read-only | |
width_bound |
REAL |
✓ | read-only | |
height_bound |
REAL |
✓ | read-only | |
confidence |
REAL |
✓ | read-only | |
sort_order |
INTEGER |
read-only | ||
properties |
TEXT |
✓ | read-only |
Foreign Keys
| Column | Destination |
|---|---|
parent_id |
elements.id |
frame_id |
frames.id |
Indexes
| Name | Columns | Unique | SQL | Drop? |
|---|---|---|---|---|
| idx_elements_frame_id |
frame_id
|
SQL | read-only | |
| idx_elements_frame_source |
|
SQL | read-only | |
| idx_elements_frame_source_role |
|
SQL | read-only | |
| idx_elements_parent_id |
parent_id
|
SQL | read-only | |
| idx_elements_source |
source
|
SQL | read-only | |
| idx_elements_source_role_text |
|
SQL | read-only |
Triggers
| Name | SQL | Drop? |
|---|---|---|
| elements_ai | SQL | read-only |
| elements_ad | SQL | read-only |
| elements_au | SQL | read-only |