Github user afs commented on the issue: https://github.com/apache/jena/pull/345 It does not need to change. It will behave as before. The changes here differentiate between a table that is of class `TableEmpty`, using function `TableEmpty.isTableEmpty`, and a table that evaluates to empty (no rows) using method `Table.isEmpty`. Previously, there was only the latter method. `VALUES ?foo {}` creates algebra `TableN` with declared variable `?foo` and no rows. It printed (incorrectly) as `(table empty)` but internally it was a `TableN` and method `isEmpty` is true (no rows). Now it prints as `(table (vars ?foo))`. There is no change to the data structure in the algebra. The difference is on conversion to a string, and on `.equals`, then only if read in again because it was not round-tripping the data structure, even if it evaluated to the same thing. Declared variables make no difference to the value of a table and that follows the SPARQL 1.1 spec exactly. As it makes no eval difference, we haven't noticed before.
---