[
https://issues.apache.org/jira/browse/JENA-2107?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Lorenz Bühmann updated JENA-2107:
---------------------------------
Description:
the following graph pattern is not evaluated efficiently (results in full-scan
per binding) because the second triple pattern doesn't take advantage of the
bindings generated by evaluation of the first one:
{code:java}
?s <p> ?o .
<< ?s <p> ?o >> <p2> ?v .
{code}
A possible fix would be to adapt the method {{rdfStarTripleSub()}} in class
[SolverRX3.java|https://github.com/apache/jena/blob/2efff8a00b4ffa82751cf46c8a3fed84b6ff3090/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/solver/SolverRX3.java#L63-L71]
by changing the beginning to
{code:java}
private static Iterator<Binding> rdfStarTripleSub(Binding input, Triple
xPattern, ExecutionContext execCxt) {
Triple tPattern = Substitute.substitute(xPattern, input);
{code}
We went from 75s for a very small dataset (50k triples) to near instant
response times.
If this fix is correct and doesn't break anything, it might be the same way to
fix for its quads counterpart in {{SolverRX4}} class
was:
the following graph pattern is not evaluated efficiently (results in full-scan
per binding) because the second triple pattern doesn't take advantage of the
bindings generated by evaluation of the first one:
{code}
?s <p> ?o .
<< ?s <p> ?o >> <p2> ?v .
{code}
A possible fix would be to adapt the method `rdfStarTripleSub` in class
[SolverRX3.java|https://github.com/apache/jena/blob/2efff8a00b4ffa82751cf46c8a3fed84b6ff3090/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/solver/SolverRX3.java#L63-L71]
by changing the beginning to
{code:java}
private static Iterator<Binding> rdfStarTripleSub(Binding input, Triple
xPattern, ExecutionContext execCxt) {
Triple tPattern = Substitute.substitute(xPattern, input);
{code}
We went from 75s for a very small dataset (50k triples) to near instant
response times.
> RDF Star performance issue with non-concrete node triples
> ---------------------------------------------------------
>
> Key: JENA-2107
> URL: https://issues.apache.org/jira/browse/JENA-2107
> Project: Apache Jena
> Issue Type: Improvement
> Components: ARQ
> Affects Versions: Jena 3.17.0, Jena 4.0.0
> Reporter: Lorenz Bühmann
> Priority: Critical
> Fix For: Jena 4.1.0
>
>
> the following graph pattern is not evaluated efficiently (results in
> full-scan per binding) because the second triple pattern doesn't take
> advantage of the bindings generated by evaluation of the first one:
> {code:java}
> ?s <p> ?o .
> << ?s <p> ?o >> <p2> ?v .
> {code}
> A possible fix would be to adapt the method {{rdfStarTripleSub()}} in class
>
> [SolverRX3.java|https://github.com/apache/jena/blob/2efff8a00b4ffa82751cf46c8a3fed84b6ff3090/jena-arq/src/main/java/org/apache/jena/sparql/engine/main/solver/SolverRX3.java#L63-L71]
> by changing the beginning to
> {code:java}
> private static Iterator<Binding> rdfStarTripleSub(Binding input, Triple
> xPattern, ExecutionContext execCxt) {
> Triple tPattern = Substitute.substitute(xPattern, input);
> {code}
> We went from 75s for a very small dataset (50k triples) to near instant
> response times.
>
> If this fix is correct and doesn't break anything, it might be the same way
> to fix for its quads counterpart in {{SolverRX4}} class
--
This message was sent by Atlassian Jira
(v8.3.4#803005)