==== ARQ ToDo + Separate out QueryIterators from engine1 + Compare engine1 and engine for speed + Property function to property path expression + AltMatcher - Remove bnodes in QueryIterBlockTriplesAlt + RootBinding should be empty System variables need to look in the context (add version while about it) Remove .getCurrentBinding "Expr" and "Function" get Context, not ExecContext jfn:now() is not in the test suite Dymanic version: jfn:system(stringname) => Context + testing QE1 and QE2 in the same test run + Initial binding by substitution (engine2) QEngine2/QEBase QEBase => .engine Return of "Plan" in .engine. + Determination of safe streaming. "well-designed" test core.OptNesting + Tidy table implementations. + Convenient: Get the version ID (property function?) Generalize to system functions. + Split tests into Pure SPARQL ARQ/SPARQL (property functions, functions) ARQ/ARQ + Filter fn:listMember, :listIndex, bagMember, seqMember, altMember PF:s list:first, list:last, list:index (N, ?m) Gotta go! These access the current (group scoped) graph. Must remove - and remove ExecutionContext from the filter interface to allow quad store getting everything at once. + LARQ Incremental update + java: general redirection. PREFIX apf: Change the java: lookup to add this case. ==> PFuncOps.isMagicProperty PropertyFunctionRegistry.manages/.get Also FunctionRegistry Missing java:function causes: Caused by: java.lang.NullPointerException at java.lang.Class.isAssignableFrom(Native Method) at com.hp.hpl.jena.query.function.FunctionRegistry.put(FunctionRegistry.java:65) at com.hp.hpl.jena.query.function.FunctionRegistry.get(FunctionRegistry.java:90) at com.hp.hpl.jena.query.expr.E_Function.bindFunction(E_Function.java:78) at com.hp.hpl.jena.query.expr.E_Function.buildFunction(E_Function.java:53) Tidy up. Also registered function errors? Check property function as well. + Commands + qtest to use modules. + Access rdfs direct forms of subClassOf and subPropertyOf by writing a property function to call find(?, directForm,?). The direct form must be used explicitly to see the inferred direct triples. + Use DatasetDesc more widely. See TODO in DatasetDesc FROM/FROM NAME + ResultSetRewindable could be a delayed evaluation wrapper. .hasPrevious(), .previous() + Graph version of interface? + Documentation Writing filter functions Writing property functions Creating datasets MediaWiki? == Documentation + Document API (more) Document lists Document symbols and configuration Document writing PF's Describe interactions of transactions and query. Document making and using datasets Document configuration (?) javadoc for extensions And on writing_functions.html say what the interfaces are. location-mapping and FROM/FROM NAMED == Testing + TestManifestX property: plainGraphTest, valueSameAsTest etc as subclasses of QueryTest. mildly tricky as affects reading results and external datasets so must be per-test and tests don't have contexts. + Organise Split into SPARQL/Features/ARQ tests Utility to find duplicate tests (hash the query) == Core + XML results: process xml:lang on other elements than just Documentation for XML result set processing + Serialization + Need to take into account subject width across multiple chunks + Using [] for bNodes + Lists (not important) + Expressions - outer level does not need () - also SortCondition