Check invalid keyword aliasing via @id.
This commit is contained in:
parent
3278e369c1
commit
d14adbdf22
30
jsonld.php
30
jsonld.php
|
@ -4395,26 +4395,9 @@ class JsonLdProcessor {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// convert short-hand value to object w/@id
|
||||||
if(is_string($value)) {
|
if(is_string($value)) {
|
||||||
// expand value to a full IRI
|
$value = (object)array('@id' => $value);
|
||||||
$id = $this->_expandIri(
|
|
||||||
$active_ctx, $value, array('vocab' => true, 'base' => true),
|
|
||||||
$local_ctx, $defined);
|
|
||||||
|
|
||||||
if(self::_isKeyword($value)) {
|
|
||||||
// disallow aliasing @context and @preserve
|
|
||||||
if($value === '@context' || $value === '@preserve') {
|
|
||||||
throw new JsonLdException(
|
|
||||||
'Invalid JSON-LD syntax; @context and @preserve cannot be aliased.',
|
|
||||||
'jsonld.SyntaxError', array('context' => $local_ctx));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// define term to expanded IRI/keyword
|
|
||||||
$active_ctx->mappings->{$term} = (object)array(
|
|
||||||
'@id' => $id, 'reverse' => false);
|
|
||||||
$defined->{$term} = true;
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!is_object($value)) {
|
if(!is_object($value)) {
|
||||||
|
@ -4558,6 +4541,15 @@ class JsonLdProcessor {
|
||||||
$mapping->{'@language'} = $language;
|
$mapping->{'@language'} = $language;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// disallow aliasing @context and @preserve
|
||||||
|
$id = $mapping->{'@id'};
|
||||||
|
if($id === '@context' || $id === '@preserve') {
|
||||||
|
throw new JsonLdException(
|
||||||
|
'Invalid JSON-LD syntax; @context and @preserve cannot be aliased.',
|
||||||
|
'jsonld.SyntaxError', array('context' => $local_ctx));
|
||||||
|
}
|
||||||
|
|
||||||
// define term mapping
|
// define term mapping
|
||||||
$active_ctx->mappings->{$term} = $mapping;
|
$active_ctx->mappings->{$term} = $mapping;
|
||||||
$defined->{$term} = true;
|
$defined->{$term} = true;
|
||||||
|
|
Loading…
Reference in a new issue