json-ld-api icon indicating copy to clipboard operation
json-ld-api copied to clipboard

Blank node as predicate tests

Open gkellogg opened this issue 3 years ago • 4 comments

From https://github.com/digitalbazaar/jsonld.js/issues/498.

cc/ @pchampin @davidlehn

(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.

gkellogg avatar Oct 11 '22 21:10 gkellogg

These should probably use the json-ld-1.0 processing mode, although the treatment in 1.1 would be the same. However, blank nodes as predicates is obsolete in 1.1 (from definition of property).

gkellogg avatar Oct 11 '22 21:10 gkellogg

Actually, expand test 0038 does test this (this is how I ran into this problem, actually), and it is marked with specVersion 1.0. Note however that the problem occurs even when blank nodes are used in object position (as in my minimal example), so a 1.1. version of 0038, where bnode as predicate are excluded, should probably be added.

pchampin avatar Oct 12 '22 09:10 pchampin

Ah, I see. jsonld.js, and probably pyld, skip running 1.0 tests these days, so such behavior was not noticed. Perhaps the task here is to add a expand 0038 derived test with expected 1.1 processor results.

davidlehn avatar Oct 12 '22 20:10 davidlehn

I suppose we could just change the processing mode on these tests, as it's still expected behavior of 1.1 systems, even though it's considered obsolete. That may be better than simply duplicating the tests for 1.1 mode.

gkellogg avatar Oct 12 '22 22:10 gkellogg