I've been seeing what seems like unexpected behavior when I run a SPARQL query involving a UNION: I get only one clause's worth of results, and then a:
/usr/lib/python2.6/dist-packages/RDF.py:1373: RedlandWarning: Triple with unbound subject skipped I'm running Python 2.6.5 and the python-librdf package distributed with Ubuntu 10.04. Here's a snippet of code to reproduce the problem... What does this mean? Is my query flawed? Any advice would be much appreciated! -Josh --- import RDF breaks = """<?xml version="1.0" encoding="utf-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:test="http://test/"> <rdf:Description> <rdf:type rdf:resource="http://test/a"/> <test:property>happy</test:property> <test:property>thoughts</test:property> </rdf:Description> <rdf:Description> <rdf:type rdf:resource="http://test/b"/> <test:property>sadmess</test:property> </rdf:Description> </rdf:RDF>""" model = RDF.Model() parser = RDF.Parser() parser.parse_string_into_model(model, breaks, "base") model_size = len(model) q1 = RDF.SPARQLQuery(""" PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> CONSTRUCT {?s ?p ?o.} WHERE { { ?s rdf:type <http://test/a>. ?s ?p ?o. } UNION { ?s rdf:type <http://test/b>. ?s ?p ?o. } } """) r1 = q1.execute(model) s1 = r1.as_stream() c1 = 0 for v in s1: c1 += 1 print v, c1 assert(c1 == model_size), "Query did not find all rows." _______________________________________________ redland-dev mailing list [email protected] http://lists.librdf.org/mailman/listinfo/redland-dev
