private function getProperty(PropertyMetadata $propertyMetadata, string $propertyName, string $prefixedShortName, string $shortName) : array
{
$type = $propertyMetadata->isReadableLink() ? 'rdf:Property' : 'hydra:Link';
$property = ['@type' => 'hydra:SupportedProperty', 'hydra:property' => ['@id' => ($iri = $propertyMetadata->getIri()) ? $iri : sprintf('#%s/%s', $shortName, $propertyName), '@type' => $type, 'rdfs:label' => $propertyName, 'domain' => $prefixedShortName], 'hydra:title' => $propertyName, 'hydra:required' => $propertyMetadata->isRequired(), 'hydra:readable' => $propertyMetadata->isReadable(), 'hydra:writable' => $propertyMetadata->isWritable()];
if (null !== ($range = $this->getRange($propertyMetadata))) {
$property['hydra:property']['range'] = $range;
}
if (null !== ($description = $propertyMetadata->getDescription())) {
$property['hydra:description'] = $description;
}
return $property;
}