On 02/02/14 18:29, Milorad Tosic wrote:
Hi,

I need to post process ResultSet such that few new columns are
custom  computed by my code and inserted into the ResultSet.
> For example, let's have the following result set:

| a | b |
| 1 | 2 |

I would like to return the following resultset instead (that would contain sum 
c = a + b)

| a | b | c |

| 1 | 2 | 3 |

where c is computed by my Java code and appended to the ResultSet originally 
obtained as a result of the initial query.

Any advice how this could be done in Jena?

NOTE: I am aware of the possibility to change the original query but that is 
not an option.

You can write your own ResultSet implementation (it's an interface). There are implementations in the code base that may help you.

One way is to use a wrapped pattern - have a new ResultSet implementation that uses an underlying one passed in the constructor. On each .hasNext/.next call, create a new QuerySolution with the additional variable/value. It's need to copy the QuerySolution in the general case.

Or turn the ResultSet into a list, and calculate a new list then use ResultSetStream.

Yet another way is to work at the Binding level - BindingFactory. binding(Binding parent, Var var, Node node) or QueryIterAssign (which is what BIND uses)

        Andy

Reply via email to