From fc17ba674460a1e29376541f763f51f1e300f39a Mon Sep 17 00:00:00 2001 From: Esteban Zimanyi Date: Wed, 15 Jul 2026 20:31:09 +0200 Subject: [PATCH] Sync the object-model lattice with the current temporal-type catalog The curated class lattice had drifted from the MEOS catalog: the temporal types tbigint, tjsonb, th3index, tquadbin, tpcpoint and tpcpatch were absent, so the drift gate (test_object_model.py, which compares each node's temptypes to the live predicate body) failed once MobilityDB sources were present. Add the two in-scope leaf classes whose families are already modelled: - TBigint (parent TNumber, base T_INT8) - TJsonb (parent TAlpha, base T_JSONB) and record their exact-prefix classification (tbigint_*, tjsonb_*). Extend the membership lists of the abstract nodes to match their predicates exactly: Temporal (temporal_type, now 18 members), TSpatial (tspatial_type, +th3index +tquadbin), TNumber (+tbigint), TAlpha (+tjsonb); and the geodetic trait (+th3index, the H3 cells being geodetic). The cell and point-cloud types are carried as membership only, not yet as leaf classes, matching the manual Figure 7.1 spatial tree that the model still reconciles against. The pre-existing test_enums_match_source failure (its meos.h enum-block marker resolves against a partial header) is unrelated and unchanged. --- meta/object-model.json | 49 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/meta/object-model.json b/meta/object-model.json index 462daaa..6da0632 100644 --- a/meta/object-model.json +++ b/meta/object-model.json @@ -86,9 +86,11 @@ ], "temptypes": [ "T_TBOOL", + "T_TTEXT", + "T_TJSONB", "T_TINT", + "T_TBIGINT", "T_TFLOAT", - "T_TTEXT", "T_TGEOMPOINT", "T_TGEOGPOINT", "T_TGEOMETRY", @@ -96,7 +98,11 @@ "T_TCBUFFER", "T_TNPOINT", "T_TPOSE", - "T_TRGEOMETRY" + "T_TRGEOMETRY", + "T_TH3INDEX", + "T_TQUADBIN", + "T_TPCPOINT", + "T_TPCPATCH" ], "doc": "Superclass of every temporal type; temporal_* functions are late-bound over `subtype` and `temptype`." }, @@ -109,7 +115,8 @@ ], "temptypes": [ "T_TBOOL", - "T_TTEXT" + "T_TTEXT", + "T_TJSONB" ], "doc": "Non-numeric, non-spatial temporal types (step/discrete interpolation only). A real MEOS grouping (talpha_type) with no user-facing class name in PyMEOS — see corrections." }, @@ -137,6 +144,18 @@ ], "cBaseType": "T_TEXT" }, + "TJsonb": { + "kind": "leaf", + "parent": "TAlpha", + "predicate": null, + "prefixes": [ + "tjsonb" + ], + "temptypes": [ + "T_TJSONB" + ], + "cBaseType": "T_JSONB" + }, "TNumber": { "kind": "abstract", "parent": "Temporal", @@ -146,6 +165,7 @@ ], "temptypes": [ "T_TINT", + "T_TBIGINT", "T_TFLOAT" ], "basePredicate": "tnumber_basetype", @@ -163,6 +183,18 @@ ], "cBaseType": "T_INT4" }, + "TBigint": { + "kind": "leaf", + "parent": "TNumber", + "predicate": null, + "prefixes": [ + "tbigint" + ], + "temptypes": [ + "T_TBIGINT" + ], + "cBaseType": "T_INT8" + }, "TFloat": { "kind": "leaf", "parent": "TNumber", @@ -190,7 +222,9 @@ "T_TCBUFFER", "T_TNPOINT", "T_TPOSE", - "T_TRGEOMETRY" + "T_TRGEOMETRY", + "T_TH3INDEX", + "T_TQUADBIN" ], "doc": "Temporal types carrying an STBox spatial bounding box." }, @@ -363,9 +397,10 @@ "predicate": "tgeodetic_type", "temptypes": [ "T_TGEOGPOINT", - "T_TGEOGRAPHY" + "T_TGEOGRAPHY", + "T_TH3INDEX" ], - "doc": "Ellipsoidal base — geography." + "doc": "Ellipsoidal base — geography; also the H3 DGGS cells (geodetic, SRID 4326)." } }, "prefixMap": { @@ -384,7 +419,9 @@ "exact": [ "tbool", "ttext", + "tjsonb", "tint", + "tbigint", "tfloat", "tgeompoint", "tgeogpoint",