Regarding the following SPARQL federated query statements:

  • There are over 10000 ?s2 related to ?s1
  • There are over 10000 ?s3 related to the previously found ?s2
  • There are over 10000 ?s4 related to the previously found ?s3
  • There are over 100 ?s5 related to the previously found ?s4
  • There are over 100 ?s6 related to the previously found ?s5

Now I am using Jena to execute this SPARQL federated query statement, and the query has not ended.

With multiple SERVICE clauses and large numbers of relationships in the path, how to execute SPARQL federated query statement?

SELECT *
WHERE {
  SERVICE <endpoint_1> {
    ?s1 <p_1> ?s2 .
    FILTER ( ?s1 = <s_1> )
  }
  SERVICE <endpoint_2> {
    ?s2 <p_2> ?s3 .
  }
  SERVICE <endpoint_3> {
    ?s3 <p_3> ?s4 .
  }
  SERVICE <endpoint_4> {
    ?s4 <p_4> ?s5 .
  }
  SERVICE <endpoint_5> {
    ?s5 <p_5> ?s6 .
  }
}
LIMIT 100

This is a reference information: when I import these triples into the same Virtuoso, removing the SERVICE clause can get the correct results:

SELECT *
WHERE {
  ?s1 <p_1> ?s2 .
  FILTER ( ?s1 = <s_1> )
  ?s2 <p_2> ?s3 .
  ?s3 <p_3> ?s4 .
  ?s4 <p_4> ?s5 .
  ?s5 <p_5> ?s6 .
}
LIMIT 100
0

There are 0 best solutions below