HI Erick,
Can you please provide the SPARQL query this explain output was
generated from also ...
Regards
Hugh
On 31 Jul 2008, at 16:37, Erick Antezana wrote:
Hi Hugh,
I've run the 'explain' on a sample query, here is the result:
Query result:
REPORT
VARCHAR
{
Precode:
0: $25 "callret" := Call __box_flags_tweak (<constant (http://
www.semantic-systems-biology.org/OBO)>, <constant (1)>)
5: $26 "org/OBO" := Call DB.DBA.RDF_MAKE_IID_OF_QNAME_SAFE ($25
"callret")
12: $27 "callret" := Call __box_flags_tweak (<constant (http://
www.w3.org/2000/01/rdf-schema#label)>, <constant (1)>)
17: $28 "ema#label" := Call DB.DBA.RDF_MAKE_IID_OF_QNAME_SAFE ($27
"callret")
24: $29 "callret" := Call __box_flags_tweak (<constant (http://
www.semantic-systems-biology.org/SSB#name)>, <constant (1)>)
29: $30 "SSB#name" := Call DB.DBA.RDF_MAKE_IID_OF_QNAME_SAFE ($29
"callret")
36: BReturn 0
Subquery
{
Union
{
from DB.DBA.RDF_QUAD by RDF_QUAD 6.8e+04 rows
Key RDF_QUAD ASC ($37 "s-9-3-t0-u8.O", $36 "s-9-3-t0-u8.S")
inlined <col=412 G = $26 "org/OBO">
row specs: <col=414 P = $28 "ema#label">
Current of: <$39 "<DB.DBA.RDF_QUAD s-9-3-t0-u8>" spec 5>
After test:
0: $40 "callret" := Call __rdf_sqlval_of_obj ($37 "s-9-3-t0-u8.O")
5: $41 "callret" := Call DB.DBA.RDF_REGEX ($40 "callret",
<constant (blood)>)
12: if (<constant (0)> 1(=) $41 "callret") then 16 else 15 unkn 16
15: BReturn 1
16: BReturn 0
After code:
0: $32 "unique_id" := := artm $36 "s-9-3-t0-u8.S"
4: $33 "name" := := artm $37 "s-9-3-t0-u8.O"
8: BReturn 0
Subquery Select($32 "unique_id", $33 "name", <$39 "<DB.DBA.RDF_QUAD
s-9-3-t0-u8>" spec 5>)
}
{
from DB.DBA.RDF_QUAD by RDF_QUAD 3.4e+04 rows
Key RDF_QUAD ASC ($50 "s-11-6-t1.O", $49 "s-11-6-t1.S")
inlined <col=412 G = $26 "org/OBO">
row specs: <col=414 P = $30 "SSB#name">
Current of: <$52 "<DB.DBA.RDF_QUAD s-11-6-t1>" spec 5>
After test:
0: $53 "callret" := Call __rdf_sqlval_of_obj ($50 "s-11-6-t1.O")
5: $54 "callret" := Call DB.DBA.RDF_REGEX ($53 "callret",
<constant (blood)>)
12: if (<constant (0)> 1(=) $54 "callret") then 16 else 15 unkn 16
15: BReturn 1
16: BReturn 0
After code:
0: $32 "unique_id" := := artm $49 "s-11-6-t1.S"
4: $33 "name" := := artm $50 "s-11-6-t1.O"
8: BReturn 0
Subquery Select($32 "unique_id", $33 "name", <$39 "<DB.DBA.RDF_QUAD
s-9-3-t0-u8>" spec 5>)
}
}
After code:
0: $62 "name" := Call __rdf_sqlval_of_obj ($33 "name")
5: $63 "unique_id" := Call id_to_iri ($32 "unique_id")
10: BReturn 0
Select ($62 "name", $63 "unique_id")
}
No. of rows in result: 64
As I mentioned, no row is returned. Unfortunately, I cannot compare
with our previous installation (5.0.3).
Any hint?
Erick
Hugh Williams wrote:
Erick,
On 22 Jul 2008, at 13:21, Erick Antezana wrote:
Hi Tim,
I installed the latest release (5.0.7) on a linux box (64bits) and
reloaded our data from scratch. Surprisingly some SPARQL queries
that
were working previously are not anymore. We have not done a full
test
but so far I found that in some cases I got a string: ''end
reservoir"
while asking for the rdfs:label of a resource (I also get the right
label). On the other hand, I also faced some issues with: FILTER
regex(?term_name, "test") , it seems the regex doesn't do the job
anymore (things like FILTER bound (?name) work.)...Let me know if
you
need any "explain" execution or so...
[Hugh] explain output for these problem queries would be useful to
see. Also, I presume you still have an instance of the previous
Virtuoso 5.0.6 build running when these queries run successfully,
in which case comparison explain queries would be useful to have
also.
Another question: what is expected to happen with virtuoso if I am
loading some data in a specific graph and namespace and during that
loading process I launch a SPARQL query to the system asking
something
from that graph/namespace? I've got an error (DBD::ODBC::st execute
failed: [unixODBC][OpenLink][Virtuoso iODBC Driver][Virtuoso
Server]SR172: Transaction deadlocked (SQL-40001)) from my loading
pipeline script. The loading process stops. It seems I cannot query
during the loading process?
[Hugh] This is most probably a transaction isolation level issue.
Note that when loading large RDF Data sets the default transaction
isolation setting should be READ COMMITTED, DefaultIsolation = 2
in the [Parameters] section of the virtuoso configuration file
(virtuoso.ini)as detailed at:
http://docs.openlinksw.com/virtuoso/
rdfperformancetuning.html#rdfperfloadingunitpro
This will enable read access to committed data via an ODBC or any
other data access client.
You can also set the transaction isolation for your connection to
READ COMMITTED on the client also as detailed at:
http://docs.openlinksw.com/virtuoso/
ptune.html#TRANSACTION_ISOLATION_LEVELS
This can be done either using SQL you pass after connect :
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
or at connect time using the following ODBC API call:
SQLSetConnectOption (hdbc, SQL_TXN_ISOLATION,
SQL_TXN_READ_COMMITTED);
Note that READ COMMITTED by nature may provide unpredictable
results as it will only return data committed at the time the
query is run.
Regards
Hugh