Hi all,
I found a bug in the SPARQL query execution chain, specifically in the
*org.apache.clerezza.rdf.core.sparql.query.Query* objects serialization
made with the
*org.apache.clerezza.rdf.core.sparql.query.impl.SimpleStringQuerySerializer*
methods.
The problem comes from the fact that the javacc objects used for mapping
triple patterns are not listed in the same order as in the original
query string. *SimpleStringQuerySerializer* serializes patterns into the
ouput string in the order returned by the javacc parser, and so the
output string won't always be equivalent to the source one. Moreover,
parsing multiple times the same query string will result in different
output strings.
This problem is even more annoying when executing (like in my case)
queries on graphs enanched with Pellet reasoner, because it has obviuos
difficulties in inferencing relations if the order of triple patterns in
the query is not the provided one.
I solved the problem in my environment by simply saving the original
string into the parsed *Query *object and then making
*SimpleStringQuerySerializer* returns this string, without any processing.
Can anyone take a look at the serializer to find a maybe better solution
to avoid this weird behaviour?
Regards,
Giuseppe Miscione