Command line interface based RDF processing toolkit to run sequences of SPARQL statements ad-hoc on RDF datasets, streams of bindings and streams of named graphs with support for processing JSON, CSV and XML using function extensions
Triple pattern reordering w.r.t. property functions and SERVICE causes unexpected results.
In general if a property function computes bindings from input bindings the reordering will cause lots of issues
For example, if (?x pfn:retrieve "search string") requires the object to be bound in order to yield bindings with matching resources then { <foo> rdfs:label ?l . ?x pfn:?l } is vastly different from { ?x pfn:retrieve ?l . <foo> rdfs:label ?l .}.
The underlying issue is query planning over restricted sources (or that's the name I recall from a db lecture) - so pfn:retrieve can be seen as a relation whole 'object' column is non-enumerable. AFAIK there is no way in jena to express that.
Hence, there should be a feature to auto disable triple pattern reordering in the presence of property functions (or make the reordering aware of the pfn capabilities).
W.r.t SERVICE: I think there was a similar issues that problems can occurr when
{ {BEFORE} SERVICE {...} { AFTER } } is transformed into { {BEFORE AFTER} SERVICE {...} } - but right now I don't recall the issue anymore...
Triple pattern reordering w.r.t. property functions and SERVICE causes unexpected results. In general if a property function computes bindings from input bindings the reordering will cause lots of issues For example, if
(?x pfn:retrieve "search string")
requires the object to be bound in order to yield bindings with matching resources then{ <foo> rdfs:label ?l . ?x pfn:?l }
is vastly different from{ ?x pfn:retrieve ?l . <foo> rdfs:label ?l .}
.The underlying issue is query planning over restricted sources (or that's the name I recall from a db lecture) - so pfn:retrieve can be seen as a relation whole 'object' column is non-enumerable. AFAIK there is no way in jena to express that.
Hence, there should be a feature to auto disable triple pattern reordering in the presence of property functions (or make the reordering aware of the pfn capabilities).
W.r.t SERVICE: I think there was a similar issues that problems can occurr when
{ {BEFORE} SERVICE {...} { AFTER } }
is transformed into{ {BEFORE AFTER} SERVICE {...} }
- but right now I don't recall the issue anymore...