@base treats trailing hash ('#') different from slash '/'
simontaurus opened this issue · 3 comments
{
"@context": {
"@version": 1.1,
"@base":"http://example.com/vocab/",
"name": {"@id": "http://example.com/vocab#test", "@type": "@id"}
},
"@id": "http://example.org/places#BrewEats",
"@type": "Restaurant",
"name": "Restaurant"
}expands to
[
{
"@id": "http://example.org/places#BrewEats",
"@type": [
"http://example.com/vocab/Restaurant"
],
"http://example.com/vocab#test": [
{
"@id": "http://example.com/vocab/Restaurant"
}
]
}
](playground)
while
{
"@context": {
"@version": 1.1,
"@base":"http://example.com/vocab#",
"name": {"@id": "http://example.com/vocab#test", "@type": "@id"}
},
"@id": "http://example.org/places#BrewEats",
"@type": "Restaurant",
"name": "Restaurant"
}ignores the hash and falls back to the last slash
[
{
"@id": "http://example.org/places#BrewEats",
"@type": [
"http://example.com/Restaurant"
],
"http://example.com/vocab#test": [
{
"@id": "http://example.com/Restaurant"
}
]
}
]Is this behaviour intended? I did not found any hint in the spec
This follows RFC3987 resolution of IRI references, which does not have special provision for IRIs ending with #. See the IRI Expansion Algorithm step 8.
Otherwise, if document relative is true set value to the result of resolving value against the base IRI from active context. Only the basic algorithm in section 5.2 of [RFC3986] is used; neither Syntax-Based Normalization nor Scheme-Based Normalization are performed. ...
Thank you for the clarification. So there is no way to use a vocabulary that uses # as part of its IRIs as a @base, e. g. to expand
{"type": "string"}to
{"type": "http://www.w3.org/2001/XMLSchema#string"}?
Certainly, you can use @vocab for thins like @type IRI expansion. @type is special as it can expand either relative to the vocabulary or document base. Vocabulary expansion, also used for keys, uses string concatenation, rather than IRI resolution, for this purpose.
@base is used to override the document location, for entities described within that document.