(Don't rely on this list being complete!) ---------------------------- Priority: Evaluation: align to rq23 Need to consider explicit conversion if type promoted. Move to explicitly considering numeric type promotion and auto casting as per F&O Testing ordered result sets Core: + Change stages to work on "result tables" where a table has an iterator, rather than on iterators directly. Enables partial dispatch of stages to SQL. Every stage will have to change but it is one signature change QueryIterator => QueryTable ---------------------------- + Richard's suggestions: + ResultBinding.equals() + Document that QuerySolution/Bindings do not contain nulls + DataSource: split Model and Graph setGraph => setBackgroundgraph() setGraph(null) ?? + Default prefixes + Tests + split out TestSuites in QueryScripts to make each runnable on its own. + Included manifests + Documentation + System + Need to ensure models are loaded once (per query execution - and wider) + Integrate a meta-model (GRAPH SYSTEM or similar design) + Query prepare + Check for groups of one and remove? + Combine adjacent ElementGroups (ditto templates) + Expression optimization ? + Remove ElementTriplePattern?? + merge code into ElementBasePattern + Visitors for varsRequired and varsBound in Element. + Core + QueryIterator.close and autoclose. Enforce. Abstract QueryIterBase to do this - QueryIterator.hasNextSub .nextSub() And a default slot for a SubIterator. + 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"? + Remove QueryBlock from top of query? + Change stages to work on "result tables" where a table has an iterator, rather than on iterators directly. Enables partial dispatch of stages to SQL. Every stage will have to change but it is one signature change QueryIterator => QueryTable + Update language + Evaluation Bring into line with rq23 "Not equals" is not simply not(equals()) equals = known to be equal not equals = known to be not equal + Testing XML result sets and ordered testing Result Set compare by row. + Serializer Should all visitors have start visitor / finish visitor with base implementation as visit(thing)?? Separate driver process from visitor : Finish abstract, plain/debug and XML serialzers (prototype) More walker than visitor + Parsers XML form parser (prototype) + 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 + 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 + Dataset control: ADD GRAPH, REMOVE GRAPH, ADD DEFAULT, MERGE ... + Graph management: INSERT/DELETE applied to a graph; INSERT INTO // DELETE FROM + Alternative: batch/interactive script language (stateful) c.f. USE db .. + UNSAID (done) + SERVICE + DATASET + Expressions in SELECT (aliases? access by column?) + LIMIT/ORDER BY to expand to include equals terms. e.g. "LIMIT 5 WITH TIES" + Build Check dist/ tree + Identify API & SPI