On Thu, 23 Feb 2012 12:42:34 +1300 David Brooks <[email protected]> wrote:
> Hmm, I will pass on this one, as I'm learning as I go and don't know the > answer to the question "Is there some way to use SPARQL to delete > statements that include a blank node?". > > Back to your original question about CONSTRUCT though, this does work > for me. Taking the graph: > > @base <http://example.org/uris/> . > @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . > @prefix ex: <http://example.org/terms#> . > > <s1> <p1> [ > a rdf:Seq ; > rdf:_1 <u1> ; > rdf:_2 [ ex:list <u2> ] ; > ] . > > <s2> <p1> [ > a rdf:Seq ; > rdf:_1 <u1> ; > rdf:_2 [ ex:list <u2> ] ; > ] . > > then the SPARQL: > > base <http://example.org/uris/> > prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > prefix ex: <http://example.org/terms#> > > CONSTRUCT { > <s1> <p1> ?seq . > ?seq ?seq_index ?uri . > ?uri ex:list ?uri2 > } > WHERE > { <s1> <p1> ?seq . > ?seq ?seq_index ?uri > OPTIONAL { ?uri ex:list ?uri2 } > } > > will (using roqet) return the sub-graph: > > <s1> <p1> [ > a rdf:Seq ; > rdf:_1 <u1> ; > rdf:_2 [ ex:list <u2> ] ; > ] . > Thanks for your answer. This output does not show the *way* it works, since we cannot see if blank node identifiers in the results have the same identifiers as blank nodes in the input graph. Here is attached a script doing the same with rdfproc. It shows that blank nodes identifiers are different in the original graph and in the CONSTRUCT-ed graph. So, what I would like to known, and I dit not find in the RDF docs is: what do I get when I use a ?var pattern to match a blank node. In librdf, I get a blank node with a new identifier, even though I did not used the syntax introducing new blank nodes. My first thought was that I should have got a blank node with the same identifier but it does not seem so. But in fact, when I use a select query to retrieve the statements I want to delete (since I had no success with the sparql DELETE query), I can use librdf_model_remove_statement with each statement found and... it works. And I don't really know why. I know there is no magic in computers, so if anybody can enlighten me on how it works... Regards, Maxence
test2.sh
Description: application/shellscript
_______________________________________________ redland-dev mailing list [email protected] http://lists.librdf.org/mailman/listinfo/redland-dev
