Hi,
I'm currently working on cleaning up the Query/Finder interfaces.
There's a lot to be done, but I think the end result will be very nice.
First of all, as outlined in previous posts the QueryBuilder.where()
will take a Specification<Entity> rather than a BooleanExpression. The
existing methods in QueryExpressions will be replaced with methods that
does this, so hopefully there should just be a matter of a recompile and
it will all work.
Then, there will no longer be a "provider" needed. All the code for the
expressions will be in the API.
If you are using Queries with an Iterable<Entity>, this specifically
means that you can literally implement that Specification<Entity> any
way you want to, with custom code and whatnot.
For variables, they will still be there, but just easier to handle.
The biggie comes with custom operators and queries. I *think* that the
NamedEntityFinder thing will go away completely, simply because it can
be done this way instead:
queryBuilder.where(SesameOperators.sparql("SPARQL goes here"));
or
queryBuilder.where(SesameOperators.serql("SERQL goes here"));
The Sesame-based EntityFinder can detect these custom operators and just
use the strings as-is, with the correct internal query language. This
also opens up for using code-only queries like what Neo4j does, as the
Specification can literally wrap anything that the internal finder can
understand, such as a Neo4j Traverser. Same goes for the Solr querying
mechanism.
Let me know if you have any issues with these types of changes.
regards, Rickard
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev