Some digging showed that this must be due to the following snipped in ValueDecoder.parseLiteral(String value):
For a simple resource string with no language tag or datatype, this results in a IndexOutOfBoundsException, which propagates up to the code giving the "Malformed value" message.
2 options here:
Preferred: Change code to accept simple strings, too. (Not sure if this is even valid or would work. Further research needed.)
Continue to reject simple strings, but give a more informative error message.