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.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>

Reply via email to