forked from friendica/php-json-ld
Allow @set w/@reverse.
This commit is contained in:
parent
15414cfe80
commit
cf815ece8a
28
jsonld.php
28
jsonld.php
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* PHP implementation of the JSON-LD API.
|
* PHP implementation of the JSON-LD API.
|
||||||
* Version: 0.0.36
|
* Version: 0.0.37
|
||||||
*
|
*
|
||||||
* @author Dave Longley
|
* @author Dave Longley
|
||||||
*
|
*
|
||||||
|
@ -1737,11 +1737,13 @@ class JsonLdProcessor {
|
||||||
if(property_exists($active_ctx->mappings, $compacted_property) &&
|
if(property_exists($active_ctx->mappings, $compacted_property) &&
|
||||||
$active_ctx->mappings->{$compacted_property} &&
|
$active_ctx->mappings->{$compacted_property} &&
|
||||||
$active_ctx->mappings->{$compacted_property}->reverse) {
|
$active_ctx->mappings->{$compacted_property}->reverse) {
|
||||||
if(!property_exists($rval, $compacted_property) &&
|
$container = self::getContextValue(
|
||||||
!$options['compactArrays']) {
|
$active_ctx, $compacted_property, '@container');
|
||||||
$rval->{$compacted_property} = array();
|
$use_array = ($container === '@set' ||
|
||||||
}
|
!$options['compactArrays']);
|
||||||
self::addValue($rval, $compacted_property, $value);
|
self::addValue(
|
||||||
|
$rval, $compacted_property, $value,
|
||||||
|
array('propertyIsArray' => $use_array));
|
||||||
unset($compacted_value->{$compacted_property});
|
unset($compacted_value->{$compacted_property});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4435,12 +4437,10 @@ class JsonLdProcessor {
|
||||||
$mapping->reverse = false;
|
$mapping->reverse = false;
|
||||||
|
|
||||||
if(property_exists($value, '@reverse')) {
|
if(property_exists($value, '@reverse')) {
|
||||||
if(property_exists($value, '@id') ||
|
if(property_exists($value, '@id')) {
|
||||||
property_exists($value, '@type') ||
|
|
||||||
property_exists($value, '@language')) {
|
|
||||||
throw new JsonLdException(
|
throw new JsonLdException(
|
||||||
'Invalid JSON-LD syntax; a @reverse term definition must not ' +
|
'Invalid JSON-LD syntax; a @reverse term definition must not ' +
|
||||||
'contain @id, @type, or @language.',
|
'contain @id.',
|
||||||
'jsonld.SyntaxError', array('context' => $local_ctx));
|
'jsonld.SyntaxError', array('context' => $local_ctx));
|
||||||
}
|
}
|
||||||
$reverse = $value->{'@reverse'};
|
$reverse = $value->{'@reverse'};
|
||||||
|
@ -4450,11 +4450,10 @@ class JsonLdProcessor {
|
||||||
'jsonld.SyntaxError', array('context' => $local_ctx));
|
'jsonld.SyntaxError', array('context' => $local_ctx));
|
||||||
}
|
}
|
||||||
|
|
||||||
// expand and add @id mapping, set @type to @id
|
// expand and add @id mapping
|
||||||
$mapping->{'@id'} = $this->_expandIri(
|
$mapping->{'@id'} = $this->_expandIri(
|
||||||
$active_ctx, $reverse, array('vocab' => true, 'base' => false),
|
$active_ctx, $reverse, array('vocab' => true, 'base' => false),
|
||||||
$local_ctx, $defined);
|
$local_ctx, $defined);
|
||||||
$mapping->{'@type'} = '@id';
|
|
||||||
$mapping->reverse = true;
|
$mapping->reverse = true;
|
||||||
}
|
}
|
||||||
else if(property_exists($value, '@id')) {
|
else if(property_exists($value, '@id')) {
|
||||||
|
@ -4539,10 +4538,11 @@ class JsonLdProcessor {
|
||||||
'one of the following: @list, @set, @index, or @language.',
|
'one of the following: @list, @set, @index, or @language.',
|
||||||
'jsonld.SyntaxError', array('context' => $local_ctx));
|
'jsonld.SyntaxError', array('context' => $local_ctx));
|
||||||
}
|
}
|
||||||
if($mapping->reverse && $container !== '@index') {
|
if($mapping->reverse && $container !== '@index' &&
|
||||||
|
$container !== '@set' && $container !== null) {
|
||||||
throw new JsonLdException(
|
throw new JsonLdException(
|
||||||
'Invalid JSON-LD syntax; @context @container value for a @reverse ' +
|
'Invalid JSON-LD syntax; @context @container value for a @reverse ' +
|
||||||
'type definition must be @index.',
|
'type definition must be @index or @set.',
|
||||||
'jsonld.SyntaxError', array('context' => $local_ctx));
|
'jsonld.SyntaxError', array('context' => $local_ctx));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue