private function createPropertiesMap(array $types)
{
$typesAsString = [];
$map = [];
foreach ($types as $type) {
// get all parent classes until the root
$parentClasses = $this->getParentClasses($type);
$typesAsString[] = $parentClasses;
$map[$type->getUri()] = [];
}
foreach ($this->graphs as $graph) {
foreach ($graph->allOfType('rdf:Property') as $property) {
foreach ($property->all(self::SCHEMA_ORG_DOMAIN) as $domain) {
foreach ($typesAsString as $typesAsStringItem) {
if (in_array($domain->getUri(), $typesAsStringItem)) {
$map[$typesAsStringItem[0]][] = $property;
}
}
}
}
}
return $map;
}