blank node prefixes are not handled correctly
(the same issue is present in PyLD: https://github.com/digitalbazaar/pyld/issues/167)
Consider the following:
{
"@context": {
"t": "_:b"
},
"@type": "t:x"
}
It expands to
[
{
"@type": [
"t:x"
]
}
]
while it should expand to
[
{
"@type": [
"_:bx"
]
}
]
Indeed, step 14.2.5 of Create Term Definition clearly states:
If term contains neither a colon (:) nor a slash (/), simple term is true, and if the IRI mapping of definition is either an IRI ending with a gen-delim character, or a blank node identifier, set the prefix flag in definition to true.
(emphasis is mine)
Therefore, step 6.4 of IRI Expansion should apply.
Appropriate tests should be added to the main JSON-LD test suite.
@davidlehn I replied on the json-ld-api repo: https://github.com/w3c/json-ld-api/issues/550#issuecomment-1275896908
This was not caught because 1.0 tests, such as expand 0038, are no longer run in jsonld.js. (comments in json-ld-api issue). The above "expected" result does occur with the older 1.0 processor playground: https://json-ld.org/playground/1.0/