Affects Version/s: QUADS_QUERY_BRANCH
Fix Version/s: None
Component/s: Bigdata RDF Database
The BackchainAccessPath provides an expander mechanism which can be used for some limited kinds of query time inference against the standalone database.
The integration point for this historically was: RDFJoinNexus#getTailAccessPath(IRelation r,IPredicate p). The glue code follows:
The corresponding logic is now found in:
but the glue logic is not present in that method.
Conceptually, the BackchainAccessPath is itself just an expander and could be written into a query using the IAccessPathExpander interface, in which case it would be up to the query generator to get this right. If this approach is taken, then the backchain() method on IAccessPathExpander should be removed.
It is also worth noting that the BackchainAccessPath was only being run against predicates which did not specify their own expanders, that is, we never actually wrapped an expander inside of the backchain logic.
Finally, since the backchainer is enabled as a SAIL property, unit tests for the expander behavior need to be written at the SAIL level. The backchainer is actually leveraged in two places -- simple statement visitation patterns and high level query. Unit tests will have to provide coverage for both use cases.