Hi,

I run a query in Stardog and Fuseki with completely different results.
The query does this (simplifyed):

--
SELECT ?datasetNotation ?propertyNotation ?b_property ?property WHERE {
  ?dataset a qb:DataSet ;
    skos:notation ?datasetNotation ;
    qb:structure/qb:component/(qb:dimension|qb:measure) ?property .

  ?property skos:notation ?propertyNotation .

BIND(BNODE(CONCAT(?datasetNotation, ?propertyNotation)) AS ?b_property)
}
--

Now the problem is that I get a unique ?b_property for every single row
in TDB/Fuseki, although the strings ?datasetNotation and
?propertyNotation are the same for the same ?dataset. Stardog does not
behave like this and returns the same bnode for each unique string I
pass to BNODE(), also in different rows.

In the spec I find:

https://www.w3.org/TR/sparql11-query/#func-bnode


--
The BNODE function constructs a blank node that is distinct from all
blank nodes in the dataset being queried and distinct from all blank
nodes created by calls to this constructor for other query solutions. If
the no argument form is used, every call results in a distinct blank
node. If the form with a simple literal is used, every call results in
distinct blank nodes for different simple literals, and the same blank
node for calls with the same simple literal within expressions for one
solution mapping.
--

I'm not sure how to interpret the last part. Can I expect the same bnode
for each result in a set or not? It's IMO either a bug in Stardog or
Fuseki :)

I tested in Fuseki with two BNODE assignments:

BIND(BNODE("sugus") AS ?b_property)
BIND(BNODE("sugus") AS ?b_property2)

That does return _:b0

But then again I just get one row back like this.

regards

Adrian

Reply via email to