* than the lexical form is used and added as String to the
* Entityhub.
*/
Map<String,Collection<Object>> resultMap = (Map<String,Collection<Object>>)program.execute(backend, context);
for(Entry<String,Collection<Object>> entry : resultMap.entrySet()){
NodeTransformer fieldTransformer = program.getField(entry.getKey()).getTransformer();
if(fieldTransformer == null || fieldTransformer instanceof IdentityTransformer<?>){
//we need to convert the RDFBackend Node to an Representation object
for(Object value : entry.getValue()){
if(backend.isURI(value)){
result.addReference(entry.getKey(), backend.stringValue(value));
} else if(backend.isLiteral(value)){ //literal
Locale locale = backend.getLiteralLanguage(value);
if(locale != null){ //text with language
String lang = locale.getLanguage();
result.addNaturalText(entry.getKey(), backend.stringValue(value),
lang.isEmpty() ? null : lang);
} else { // no language
URI type = backend.getLiteralType(value);
if(type != null){ //typed literal -> need to transform
NodeTransformer nt = transformer.get(type.toString());
if(nt != null){ //add typed literal
try {
result.add(entry.getKey(), nt.transform(backend, value));
} catch (RuntimeException e) {
log.info("Unable to transform {} to dataType {} -> will use lexical form",value,type);
result.add(entry.getKey(),backend.stringValue(value));
}
} else { //no transformer