Literals with escaped characters loaded from N3 cannot be referenced with SPAR(Q|U)L #54

bollwyvl opened this Issue Sep 9, 2013 · 1 comment


None yet
1 participant

bollwyvl commented Sep 9, 2013

When literals get OIDs from being loaded from N3, they will be added to the literalsToOID hash with any escaped characters, \n``\t``"``\b``\r``\, de-referenced.

Consider this triple, stored in a text file:

<http://foo> <http://bar> "baz\nbaz" .

loaded like this:

var triple;
$.get("sample.n3", function(txt){ triple = txt });

then added to a store like this:

store.load('text/turtle', triple, function(){})

There is no way whatsoever to delete this data with SPAR*L:

store.execute('DELETE DATA {' + triple + '}', function(){})
">> Error unregistering quad"
">> Cannot read property '1' of undefined"
">> ERROR unregistering quad"

Whereas if the same triple is loaded via SPAR*L, it's fine:

store.execute('INSERT DATA {' + triple + '}', function(){})
store.execute('DELETE DATA {' + triple + '}', function(){})

My work around is to manually transform incoming n3 to SPAR*L. I am not supporting the python-like """ string format, but it is good enough, I guess, as I control how they are constructed, but this seems like a pretty tough thing to handle if you don't control both sides.

This is still a even after the upgrade to the n3 parser #61.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment