code: protected function completeMetadata(ClassMetadata $class)
      {
          $className = $class->getName();
  
          if (null === $class->getIri()) {
              $class->setIri($this->namingStrategy->classIriFragment($className));
          }
  
          if (null === $class->getExposeAs()) {
              $class->setExposeAs($this->namingStrategy->classShortName($className));
          }
  
  
          // If no title has been set for this class, use it's short name
          if (null === $class->getTitle()) {
              $class->setTitle($this->namingStrategy->classShortName($className));
          }
  
          foreach ($class->getProperties() as $property) {
              $propertyName = $property->getName();
  
              if (null === $property->getIri()) {
                  $property->setIri(
                      $this->namingStrategy->propertyIriFragment($className, $propertyName)
                  );
              }
  
              if (null === $property->getExposeAs()) {
                  $property->setExposeAs(
                      $this->namingStrategy->propertyShortName($className, $propertyName)
                  );
              }
  
              // If no title has been set for this property, use it's short name
              if (null === $property->getTitle()) {
                  $property->setTitle(
                      $this->namingStrategy->propertyShortName($className, $propertyName)
                  );
              }
          }
      }
docs: Completes the metadata by setting missing fields that can be inferred
  by other fields
  
  Furthermore, the type of properties which is returned as string by
  the metadata driver is replaced with a ClassMetadata instance.
  
  @param ClassMetadata $class The metadata to complete