[redland-dev] [Rasqal RDF Query Library 0000358]: Cannot integrate CONSTRUCT SPARQL queries when they contains blank nodes
Mantis Bug Tracker
mantis-bug-sender at librdf.org
Thu Mar 11 10:26:49 CET 2010
The following issue has been SUBMITTED.
======================================================================
http://bugs.librdf.org/mantis/view.php?id=358
======================================================================
Reported By: lmazuel
Assigned To:
======================================================================
Project: Rasqal RDF Query Library
Issue ID: 358
Category: query engine
Reproducibility: always
Severity: major
Priority: normal
Status: new
Query Language: SPARQL
======================================================================
Date Submitted: 2010-03-11 09:26
Last Modified: 2010-03-11 09:26
======================================================================
Summary: Cannot integrate CONSTRUCT SPARQL queries when they
contains blank nodes
Description:
For instance, if we consider this set of triples:
_:a <http://test/link> "Literal1" ;
a <http://test/Class1> .
_:b <http://test/link> "Literal2" ;
a <http://test/Class2> .
parsed in redland in triplestore:
[[
{(r1268294762r30192r1), [http://test/link], "Literal1"}
{(r1268294762r30192r1),
[http://www.w3.org/1999/02/22-rdf-syntax-ns#type], [http://test/Class1]}
{(r1268294762r30192r2), [http://test/link], "Literal2"}
{(r1268294762r30192r2),
[http://www.w3.org/1999/02/22-rdf-syntax-ns#type], [http://test/Class2]}
]]
Then, the SPARQL request:
CONSTRUCT { ?d <http://test/work> true .} WHERE { ?d a
<http://test/Class2> .}
gives the statement:
{(r1_r1268294907r30210r2), [http://test/work],
"true^^<http://www.w3.org/2001/XMLSchema#boolean>"}
The problem is that the resulting statement does not use the same blank
identifier that the triplestore. Then, adding this statement to the
triplestore gives:
[[
{(r1268294907r30210r1), [http://test/link], "Literal1"}
{(r1268294907r30210r1),
[http://www.w3.org/1999/02/22-rdf-syntax-ns#type], [http://test/Class1]}
{(r1268294907r30210r2), [http://test/link], "Literal2"}
{(r1268294907r30210r2),
[http://www.w3.org/1999/02/22-rdf-syntax-ns#type], [http://test/Class2]}
{(r1_r1268294907r30210r2), [http://test/work],
"true^^<http://www.w3.org/2001/XMLSchema#boolean>"}
]]
which is not correct.
I have made many tests, and it seems that in all cases it's just a prefix
"r1_" which is added in the beginning of the blank identifier. If we
remove it, we have the real identifier which can be used to produce the
result we want. However it is not a very efficient method.... Is there a
way I missed to make this easier? Can it be considered as a bug otherwise?
======================================================================
Issue History
Date Modified Username Field Change
======================================================================
2010-03-11 09:26 lmazuel New Issue
2010-03-11 09:26 lmazuel Query Language => SPARQL
======================================================================
More information about the redland-dev
mailing list