[VIVO-1059] Improve bind parameter method in SparqlQueryDataGetter so that variables with a common root are bound correctly - e.g. binding ?individual won't match ?individualURI

(Does not use full set of allowed Sparql characters, but should catch all commonly used cases)
This commit is contained in:
grahamtriggs 2015-09-25 22:16:41 +01:00
parent 937a3abca5
commit 4883621236

View file

@ -165,7 +165,7 @@ public class SparqlQueryDataGetter extends DataGetterBase implements DataGetter{
private String bindParameters(String text, Map<String, String> merged) { private String bindParameters(String text, Map<String, String> merged) {
String bound = text; String bound = text;
for (String key : merged.keySet()) { for (String key : merged.keySet()) {
bound = bound.replace('?' + key, '<' + merged.get(key) + '>'); bound = bound.replaceAll("[?$]" + key + "[^a-zA-Z0-9_\\-]", '<' + merged.get(key) + '>');
} }
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("parameters: " + merged); log.debug("parameters: " + merged);