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

Reply via email to