Hi All,

Cross posting as this seems to be a question of spec implementation and I am not sure what the correct answer is supposed to be.

SELECT *
WHERE {
  BIND("ABCDEFGHIJK" AS ?s2)
  BIND(SUBSTR(?s2, 0, 1) AS ?sub)
}


This gives "" in jena but "A" in rdf4j and virtuoso.
Seems to be some ambiguity in https://www.w3.org/TR/sparql11-query/#func-substr I think it is because while 1 is given as the index of the first character for susbtring. the way that virtuoso and rdf4j seem to deal with it is to take for the first value at least 1. While jena actually uses the given value in the calculation.

e.g.

SELECT *
WHERE {
  BIND("ABCDEFGHIJK" AS ?s2)
  BIND(SUBSTR(?s2, 0, 2) AS ?sub)
}

Gives "A" in jena but "AB" in virtuoso

Regards,
Jerven


--
Jerven Tjalling Bolleman
SIB | Swiss Institute of Bioinformatics
CMU - 1, rue Michel Servet - 1211 Geneva 4
t: +41 22 379 58 85 - f: +41 22 379 58 58
Jerven.Bolleman@sib.swiss - http://www.sib.swiss

Reply via email to