Do not compact to relative IRIs if vocab relative flag is true.

This commit is contained in:
Dave Longley 2013-02-15 12:44:00 -05:00
parent e5f1e28ada
commit fbfb6c9fcb

View file

@ -3944,21 +3944,26 @@ class JsonLdProcessor {
} }
// no matching terms or curies, use @vocab if available // no matching terms or curies, use @vocab if available
if(isset($relative_to['vocab']) && $relative_to['vocab'] && if(isset($relative_to['vocab']) && $relative_to['vocab']) {
property_exists($active_ctx, '@vocab')) { if(property_exists($active_ctx, '@vocab')) {
// determine if vocab is a prefix of the iri // determine if vocab is a prefix of the iri
$vocab = $active_ctx->{'@vocab'}; $vocab = $active_ctx->{'@vocab'};
if(strpos($iri, $vocab) === 0 && $iri !== $vocab) { if(strpos($iri, $vocab) === 0 && $iri !== $vocab) {
// use suffix as relative iri if it is not a term in the active context // use suffix as relative iri if it is not a term in the active context
$suffix = substr($iri, strlen($vocab)); $suffix = substr($iri, strlen($vocab));
if(!property_exists($active_ctx->mappings, $suffix)) { if(!property_exists($active_ctx->mappings, $suffix)) {
return $suffix; return $suffix;
}
} }
} }
} }
// compact IRI relative to base // compact IRI relative to base
return jsonld_remove_base($active_ctx->{'@base'}, $iri); else {
return jsonld_remove_base($active_ctx->{'@base'}, $iri);
}
// return IRI as is
return $iri;
} }
/** /**