The only thing missing is how to display the table rules, but from a semantic point of view. Namely, I would kind of un-obsolete the table BORDER attribute, as it gives the information that seeing the rules is somewhat important. Or maybe an attribute being more explicit than it is a semantic value, meaning rules are sufficiently important, for instance a rule level, that a css or a hardcoded css (could still be dynamically configured) would choose to display or not. For instance, like a WEIGHT attribute with NORMAL(default) and STRONG value, or directly a STRONG attribute, even though un-obsoleting BORDER changing the definition of its value being a scale of it strenght (0, rules would not be displayed, not 0 rules would displayed in hardcoded css) would fairly enough.
https://webaim.org/techniques/tables/
(I am not talking about the abomination of the semantic web from a decade ago)