You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Laurent Rucquoy <la...@telemis.com> on 2015/05/06 16:17:05 UTC

Trace back RDF containers in SPARQL

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.



-- 
*Laurent Rucquoy*
R&D Engineer

laurent.rucquoy@telemis.com
Tel: +32 (0) 10 48 00 27
Fax: +32 (0) 10 48 00 20

Telemis
Avenue Athéna 2
1348 Louvain-la-Neuve
Belgium
www.telemis.com
*Extending Human Life*

"Au delà du Pacs...Découvrez le Macs
<https://drive.google.com/a/telemis.com/file/d/0B8xEcRPFLfNdRmFRMlRSZ0k5djA/view?usp=sharing>
" sur le stand Telemis #118 du 4. - 6 Juin - Centre des congrès de Bâle !

Re: Trace back RDF containers in SPARQL

Posted by Laurent Rucquoy <la...@telemis.com>.
I will upgrade Jena and investigate further following your advice.
Thank you for your help Andy.

Laurent.

On 11 May 2015 at 22:57, Andy Seaborne <an...@apache.org> wrote:

> On 11/05/15 14:55, Laurent Rucquoy wrote:
>
>> Yes, the bad query is the good query with the last 3 triple patterns
>> added.
>>
>
> The optimizer in 2.10 would probably do a bad job on your query.  Adding
> the patterns makes it worse as it puts an unconstrained cross product (due
> to the "??? a :SomeClass2 parts).
>
> 2.13 is better, using fixed.opt.
>
> It probably makes no difference as to whether you have a stats.opt file;
> if you have one, and with 2.13 it's worth trying both ways round.
>
> It could well explain what you are seeing and until that possibility is
> removed, it's hard to see any further.
>
>         Andy
>
>
>  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 <an...@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 <an...@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.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>

Re: Trace back RDF containers in SPARQL

Posted by Andy Seaborne <an...@apache.org>.
On 11/05/15 14:55, Laurent Rucquoy wrote:
> Yes, the bad query is the good query with the last 3 triple patterns added.

The optimizer in 2.10 would probably do a bad job on your query.  Adding 
the patterns makes it worse as it puts an unconstrained cross product 
(due to the "??? a :SomeClass2 parts).

2.13 is better, using fixed.opt.

It probably makes no difference as to whether you have a stats.opt file; 
if you have one, and with 2.13 it's worth trying both ways round.

It could well explain what you are seeing and until that possibility is 
removed, it's hard to see any further.

	Andy

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


Re: Trace back RDF containers in SPARQL

Posted by Laurent Rucquoy <la...@telemis.com>.
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 <an...@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 <an...@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.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>

Re: Trace back RDF containers in SPARQL

Posted by Andy Seaborne <an...@apache.org>.
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 <an...@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.
>>>
>>>
>>>
>>>
>>
>
>


Re: Trace back RDF containers in SPARQL

Posted by Laurent Rucquoy <la...@telemis.com>.
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...)


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:

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


-- 
*Laurent Rucquoy*
R&D Engineer

laurent.rucquoy@telemis.com
Tel: +32 (0) 10 48 00 27
Fax: +32 (0) 10 48 00 20

Telemis
Avenue Athéna 2
1348 Louvain-la-Neuve
Belgium
www.telemis.com
*Extending Human Life*

"Au delà du Pacs...Découvrez le Macs
<https://drive.google.com/a/telemis.com/file/d/0B8xEcRPFLfNdRmFRMlRSZ0k5djA/view?usp=sharing>
" sur le stand Telemis #118 du 4. - 6 Juin - Centre des congrès de Bâle !

Re: Trace back RDF containers in SPARQL

Posted by Andy Seaborne <an...@apache.org>.
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.
>
>
>