(Don't rely on this list being complete!) + Documentation Web Site - Mechanism / production + Identify API & SPI + Query prepare + Check for groups of one and remove? + Combine adjacent ElementGroups (ditto templates) + Expression optimization + Remove ElementTriplePattern?? + merge code into ElementBasePattern + ElementGroup inserts an ElementBasePattern when a triple arrives or uses existing (front) one. All tyed to mark() handling + Core + DESCRIBE handler framework (c.f. Joseki/fetch) + Check use of initial iterator being null + QueryElement is the interface, Element the base impl The parsers use Element a lot but does much of the code think "Element" rather than "QueryElement"? + Engine + Need to ensure models are loaded once (per query execution - and wider) + Integrate a meta-model (GRAPH SYSTEM or similar design) + Serializer + Better name? "serialize" + Add a QueryVisitor and use this to print. + Remove asInfixString, asPrefixString? + Separate out a "FormatterContext" from Query PrefixMap, BNodeNodeToLabelMap (or incorporate into Query) + Evaluation "Not equals" is not simply not(equals()) equals = known to be equal not equals = known to be not equal + Function + Extensions via lib - then look up function URI where there is URI=>class c.f. "java:myApp.myFunction" or ext: + Query class : reorganise into methods-by-type (and maybe split). + Minimal Query class in API + core.QueryBase - all the internal stuff. No - would need downcasting. Query extends core.QueryBase + Split out Query.init so Query class is "pure"? + Application framework + Commands + Print RS (graph/XML => table etc etc) + Reorg QueryContext/RunQuery to be one class, no expection handling, then have a command line wrapper for exceptions. Serializable + JevaBean-ification. + Modular formatter. Plug-ins for formats. Results Formatting + Use ResultSetProcessor in ResultSetFormatter + ResultSetFormatter.format(results) ResultSetFormatter.format(results, processor) String myQuery = ...; Query query = QueryFactory.getQuery( myQuery ); ResultSet results = query.exec(); ResultSetFormatter.format(results, new CustomResultSetProcessor()); + ARQ / language + FROM / FROM NAMED + UNSAID + Features (futures): SERVICE + Parsers + Version of RDQL for this query engine "USING" via a fixup list. + Build Check dist/ tree + Repackage?? ...jena.query ...jena.query.core -- The AST, visitor pattern ...jena.query.exec -- Query execution interfaces ...jena.query.engine -- QueryEngine , bindings and iterators ...jena.query.format -- presentation ...jena.query.unparse -- query to string ...jena.query.serialize -- alt ...jena.query.parse -- string to query ...jena.query.parse.