Yes, the bad query is the good query with the last 3 triple patterns added.
When I run the good query (without the bad query last 3 triple patterns), I get about ten "calculationResult" nodes. When I run the bad query to try to retrieve the containing "calculationResultCollection", the system freezes. What I want to do is to find the CalculationResultCollection nodes containing CalculationResult nodes referring to CalculationDataCollection nodes containing in their turn CalculationData nodes having "0"^^xsd:string value. Here is what could look like an instances diagram: CalculationResultCollection ---listCalculationResult---> blank_node_CR ---rdf:_1---> CalculationResult_1 ---calculationDataCollection---> CalculationDataCollection ---listCalculationData---> blank_node_CD ---rdf:_1---> CalculationData_1_1 CalculationResultCollection ---listCalculationResult---> blank_node_CR ---rdf:_1---> CalculationResult_1 ---calculationDataCollection---> CalculationDataCollection ---listCalculationData---> blank_node_CD ---rdf:_2---> CalculationData_1_2 CalculationResultCollection ---listCalculationResult---> blank_node_CR ---rdf:_1---> CalculationResult_1 ---calculationDataCollection---> CalculationDataCollection ---listCalculationData---> blank_node_CD ---rdf:_3---> CalculationData_1_3 CalculationResultCollection ---listCalculationResult---> blank_node_CR ---rdf:_2---> CalculationResult_2 ---calculationDataCollection---> CalculationDataCollection ---listCalculationData---> blank_node_CD ---rdf:_1---> CalculationData_2_1 CalculationResultCollection ---listCalculationResult---> blank_node_CR ---rdf:_2---> CalculationResult_2 ---calculationDataCollection---> CalculationDataCollection ---listCalculationData---> blank_node_CD ---rdf:_2---> CalculationData_2_2 CalculationResultCollection ---listCalculationResult---> blank_node_CR ---rdf:_2---> CalculationResult_2 ---calculationDataCollection---> CalculationDataCollection ---listCalculationData---> blank_node_CD ---rdf:_3---> CalculationData_2_3 ... Thank you for your help. Laurent. On 8 May 2015 at 12:42, Andy Seaborne <a...@apache.org> wrote: > On 08/05/15 09:43, Laurent Rucquoy wrote: > >> Hi Andy, >> >> Thank you for your response. >> >> 1) Which version of Jena are you running? >> The used version of Jena is 2.10.1 (I will upgrade soon...) >> > > Try with 2.13.0 because the area of BGP optimizations has been improved. > > >> >> 2) How are you storing the data and how big is it? >> TDBFactory.createDataset(directory) >> COUNT(*) -> 1 224 103 >> 350MB on disk >> Do you need other details ? >> >> >> 3) You say the query returns good results - what sort of query causes the >> system to freeze? >> This is the query returning good results appended with 3 more statements >> in >> the WHERE clause: >> > > So the bad query is the good query with the last 3 triple patterns added? > > It's hard to read but > > ?seqCalculationResultCollection > ?seqCalculationResultCollectionIndex ?calculationResult . > ?calculationResultCollection > :listCalculationResult ?seqCalculationResultCollection . > ?calculationResultCollection rdf:type :CalculationResultCollection > > is connected to the good part by ?calculationResult; all the other > variables are just fanning out from that point without anything like the > :value "0"^^xsd:string in the good part. From what I understand of your > data, that can be a huge number of results. > > Do you get no results, or that some results appear but then the query does > not finish? > > Andy > > > > >> PREFIX : <http://www.telemis.com/> >> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> >> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> >> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> >> >> SELECT ?calculationResultCollection >> WHERE { >> ?calculationData a :CalculationData ; >> :value "0"^^xsd:string . >> ?seqCalculationDataCollection ?seqCalculationDataCollectionIndex >> ?calculationData . >> ?calculationDataCollection a :CalculationDataCollection ; >> :listCalculationData ?seqCalculationDataCollection . >> ?calculationResult a :CalculationResult ; >> :calculationDataCollection ?calculationDataCollection . >> ?seqCalculationResultCollection ?seqCalculationResultCollectionIndex >> ?calculationResult . >> ?calculationResultCollection :listCalculationResult >> ?seqCalculationResultCollection ; >> a :CalculationResultCollection . >> } >> >> >> >> >> >> On 7 May 2015 at 15:59, Andy Seaborne <a...@apache.org> wrote: >> >> Hi Laurent, >>> >>> Which version of Jena are you running? How are you storing the data and >>> how big is it? >>> >>> You say the query returns good results - what sort of query causes the >>> system to freeze? >>> >>> Andy >>> >>> >>> On 06/05/15 15:17, Laurent Rucquoy wrote: >>> >>> Hello, >>>> >>>> I have container resources which I want to retrieve from one of their >>>> elements. >>>> Here is an RDF/XML part of my data: >>>> >>>> >>>> <rdf:Description rdf:about=" >>>> >>>> >>>> http://www.telemis.com/CalculationResult/9e892a88-7257-4af3-881d-2eb304437546 >>>> "> >>>> <rdf:type rdf:resource="http://www.telemis.com/CalculationResult"/> >>>> <TM:uid rdf:datatype="http://www.w3.org/2001/XMLSchema#string >>>> ">9e892a88-7257-4af3-881d-2eb304437546</TM:uid> >>>> ... >>>> </rdf:Description> >>>> >>>> <rdf:Description rdf:nodeID="A525"> >>>> <rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq >>>> "/> >>>> <rdf:_1 rdf:resource=" >>>> >>>> >>>> http://www.telemis.com/CalculationResult/9e892a88-7257-4af3-881d-2eb304437546 >>>> "/> >>>> <rdf:_2 rdf:resource=" >>>> >>>> >>>> http://www.telemis.com/CalculationResult/9e892a88-7257-4af3-881d-45208e34af13 >>>> "/> >>>> </rdf:Description> >>>> >>>> <rdf:Description rdf:about=" >>>> >>>> >>>> http://www.telemis.com/CalculationResultCollection/a7d808d7-7689-4dfb-82c4-b0763f0dcd34 >>>> "> >>>> <rdf:type rdf:resource=" >>>> http://www.telemis.com/CalculationResultCollection >>>> "/> >>>> <TM:uid rdf:datatype="http://www.w3.org/2001/XMLSchema#string >>>> ">a7d808d7-7689-4dfb-82c4-b0763f0dcd34</TM:uid> >>>> <TM:listCalculationResult rdf:nodeID="A525"/> >>>> </rdf:Description> >>>> >>>> >>>> The representation of this context could be: >>>> >>>> (CalculationResultCollection) >>>> --listCalculationResult--> >>>> (seq-blank-node) >>>> +--(rdf:_1)-->(CalculationResult1) >>>> +--(rdf:_2)-->(CalculationResult2) >>>> +--... >>>> >>>> I've a SPARQL query which gives me a set of CalculationResult nodes. >>>> My question is: by which SPARQL query can I trace back to the >>>> CalculationResultCollection containing resource(s) ? >>>> >>>> Here is the SPARQL query which gives me a set of CalculationResult >>>> nodes: >>>> >>>> PREFIX : <http://www.telemis.com/> >>>> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> >>>> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> >>>> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> >>>> >>>> SELECT ?calculationResult >>>> WHERE { >>>> ?calculationData a :CalculationData ; >>>> :value "0"^^xsd:string . >>>> ?seqCalculationDataCollection ?seqCalculationDataCollectionIndex >>>> ?calculationData . >>>> ?calculationDataCollection a :CalculationDataCollection ; >>>> :listCalculationData ?seqCalculationDataCollection . >>>> ?calculationResult a :CalculationResult ; >>>> :calculationDataCollection ?calculationDataCollection . >>>> } >>>> >>>> I tried to complete my WHERE clause with statements like I did to trace >>>> back to ?calculationDataCollection from ?calculationData but I cannot >>>> get >>>> the wanted result because the system freezes. Note that the SPARQL query >>>> here above returns good results. >>>> >>>> Is there a better practice to do that with acceptable performances ? >>>> >>>> Thank you in advance for your help. >>>> >>>> >>>> >>>> >>>> >>> >> >> >