Skip to content

Mapping TAP Types to IVOA Standards

This is an AI generated mapping of the TAP types to the typical VOSI/TAP metadata and VOTable serialization patterns. It’s not a normative specification, but it should be a useful reference for understanding how the TAP schema types relate to the IVOA standards.

TAP schema (TAPType) VOSI/TAP metadata (typical) VOTable serialization (typical) Example value Notes
BOOLEAN datatype=BOOLEAN boolean true Nullability via column metadata.
SMALLINT datatype=SMALLINT short -123 Usually 16-bit signed range.
INTEGER datatype=INTEGER int 123456 Usually 32-bit signed range.
BIGINT datatype=BIGINT long 9223372036854775807 Usually 64-bit signed range.
REAL datatype=REAL float 3.14 Single precision.
DOUBLE datatype=DOUBLE double 3.141592653589793 Double precision.
TIMESTAMP datatype=TIMESTAMP usually char/unicodeChar + xtype 2026-03-18T12:34:56Z VOTable has no native timestamp primitive; commonly string + convention/xtype.
CHAR datatype=CHAR char or unicodeChar (often scalar/fixed) A Fixed-length character semantics on TAP side.
VARCHAR datatype=VARCHAR char or unicodeChar + arraysize="*" (or bounded) gaia_dr3 Variable-length text typically expressed with arraysize.
BINARY datatype=BINARY unsignedByte with fixed arraysize binary bytes Fixed-length byte array.
VARBINARY datatype=VARBINARY unsignedByte + variable arraysize binary bytes Variable-length byte array.
POINT datatype=POINT commonly char + geometry xtype/ADQL text POINT('ICRS', 12.3, -45.6) Geometry usually represented via conventions, not a dedicated VOTable primitive.
REGION datatype=REGION commonly char + geometry xtype/ADQL text CIRCLE('ICRS', 12.3, -45.6, 0.1) Same caveat as POINT.
CLOB datatype=CLOB char/unicodeChar large arraysize long text Size limits are implementation-defined.
BLOB datatype=BLOB unsignedByte large/variable arraysize large binary Size limits are implementation-defined.

Key caveats you’ll care about: - TAP/VOSI type names and VOTable primitive names are related but not identical vocabularies. - TIMESTAMP, POINT, and REGION are the main “convention-based” mappings in VOTable (often relying on xtype and agreed syntax). - In your model, column.arraysize and column.xtype in src/main/vodsl/tapschema.vodsl are exactly the extra knobs used to make those mappings precise.