Fixes to pass property CURIE conflict during compact.

This commit is contained in:
Dave Longley 2011-07-29 16:02:58 -04:00
parent 25c62ddac1
commit dbd83f1535
1 changed files with 9 additions and 4 deletions

View File

@ -690,7 +690,9 @@ function _compact($ctx, $property, $value, $usedCtx)
if($value === null)
{
// return null, but check coerce type to add to usedCtx
$rval = null;
_getCoerceType($ctx, $property, $usedCtx);
}
else if(is_array($value))
{
@ -721,10 +723,13 @@ function _compact($ctx, $property, $value, $usedCtx)
{
if($v !== '@context')
{
// set object to compacted property
_setProperty(
$rval, _compactIri($ctx, $key, $usedCtx),
_compact($ctx, $key, $v, $usedCtx));
// set object to compacted property, only overwrite existing
// properties if the property actually compacted
$p = _compactIri($ctx, $key, $usedCtx);
if($p !== $key or !property_exists($rval, $p))
{
$rval->$p = _compact($ctx, $key, $v, $usedCtx);
}
}
}
}