Type2

Version 1
    
    @Trait @
    public z  Person  subTypeOf  B, C {
      
      /* equivalentTo will be added later */  
      equivalentTo {  D and E  } // possibly a subset of Manchester Syntax here
    
      @Cardinality( min=2, max=9, distinct=true, sorted=true )  
      String name;
    
      int age;
    
      Person friend;
    
    }
    
    @Property()
    public type Name {
     subject : Person
     object : String
    }
    
    public type FirstName subTypeOf Name {
    }
    
    @Function
    public type ChildOf {
      person : Person
    }