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.