The SPARQL engine may move FILTER clauses to the end of a BGP block,
i.e. the FILTER may indeed not be executed before the magic properties
are. Could you try
|
WHERE {
{
OPTIONAL{
?this body:reason_float_X ?currentReasonX .
}
FILTER(!bound(?currentReasonX)) .
}
?this body:float_X ?reasonX .
?this body:float_Y ?reasonY .
?this body:float_Z ?reasonZ .
}
|
to make sure that the OPTIONAL and the FILTER are executed first.
(I believe you could also just write the following:
{
FILTER NOT EXISTS { ?this body:reason_float_X ?any }
}
HTH
Holger
On 18/04/2016 11:32, Ahmed Shafei wrote:
Hi Holger,
I am sure it's not executed as the triples that use the values
calculated by the JavaScript function are not constructed. Also, the
precondition is not fulfilled. Here's my query:
|
CONSTRUCT{
?this body:reason_float_X ?reasonX .
?this body:reason_float_Y ?reasonY .
?this body:reason_float_Z ?reasonZ .
}
WHERE {
OPTIONAL{
?this body:reason_float_X ?currentReasonX .
}
FILTER(!bound(?currentReasonX)) .
?this body:float_X ?reasonX .
?this body:float_Y ?reasonY .
?this body:float_Z ?reasonZ .
}
|
* So, body:float_X,Y,Z are magic properties that call a SPINx
function which calculates a value and return it back.
* When this query runs for the first time, it will call the SPINx
function 3 times and construct the 3 triples.
* If the body:reason_float_X was already there, it doesn't create
anything. But yet, it takes also a long time. If I remove the 3
triples containing the magic properties from the WHERE clause, it
doesn't take longer time. The problem also persists if I call the
SPINx function directly in the WHERE clause and BIND the values
instead of querying the Magic property.
Any hints about that?
Thanks a lot.
On Sunday, April 17, 2016 at 5:30:26 PM UTC-7, Holger Knublauch wrote:
Hi Ahmed,
how certain are you that the BIND doesn't get executed? Maybe the
execution order is different from what you expect - often it's a
matter of placing the right { ... } braces around certain blocks
to control the execution order.
Would you want to share details of the SPARQL query?
Holger
On 18/04/2016 10:12, Ahmed Shafei wrote:
Hi all,
I have a CONSTRUCT query that has a call to a SPINx function. I
noticed that even if the query didn't reach the part where the
SPINx function has to be called
(i.e. BIND(ex:CalculateWithJS(?someNumber) AS
?calculatedNumber)), the query takes longer time. If I remove
that BIND, the query takes a normal query time. I don't really
understand what happens when a query calls a SPIN function that
has a JavaScript code attached, why does it take longer time even
if the code was not executed?
Thanks in advance.
Regards,
Ahmed
--
You received this message because you are subscribed to the
Google Group "TopBraid Suite Users", the topics of which include
Enterprise Vocabulary Network (EVN), Reference Data Manager
(RDM), TopBraid Composer, TopBraid Live, TopBraid Insight,
SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to [email protected]
<javascript:>
---
You received this message because you are subscribed to the
Google Groups "TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to [email protected] <javascript:>.
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include Enterprise
Vocabulary Network (EVN), Reference Data Manager (RDM), TopBraid
Composer, TopBraid Live, TopBraid Insight, SPARQLMotion, SPARQL Web
Pages and SPIN.
To post to this group, send email to [email protected]
---
You received this message because you are subscribed to the Google
Groups "TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected]
<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Group "TopBraid
Suite Users", the topics of which include Enterprise Vocabulary Network (EVN),
Reference Data Manager (RDM), TopBraid Composer, TopBraid Live, TopBraid Insight,
SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to [email protected]
---
You received this message because you are subscribed to the Google Groups "TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.