Thing \. (Physical_thing \. (Animal \. (Dog instance: Diesel_the_dog The_most_famous_dog_named_Togo) (Human_being exclusion: Dog, \. (Man instance: Sean_Connery Brent_Spinner) //+ James_Bond ? (Woman exclusion: Man) (Human_person \. Natural|Physical_human-person_from_a_legal_aspect) ) ) ) (Person \. (Legal_person|entity exclusion: Natural|Physical_person_from_a_legal_aspect, instance: James_Bond __[author: pm] ) //pm: my choice, not Data_the_android when disconnected (Natural|Physical_person_from_a_legal_aspect \. Natural|Physical_human-person_from_a_legal_aspect ) (Human_person //+ Human_character and Android_character ? instance: James_Bond ) ) (Movie_character //exclusion: Physical_thing Person //not in the general case \. (Human_character instance: (James_Bond actor: Sean_Connery) ) (Android_character instance: (Data_the_android actor: Brent_Spinner) ) //exclusion: Human_character ? (Dog_character instance: (The_character_of_the_most_famous_dog_named_Togo actor: Diesel_the_dog ) ) ).
Les RCs du 1er exemple ne sont donc pas correctes, et ne passeraient pas à l'échelle
→ elles ne sont donc pas à utiliser dans un(e) programme/BdD orienté(e)-objet,
→ simplement ajouter des types ou des instances ne corrigeraient pas le problème.
Version FL de la modélisation demandée :
Company employee _[any->1..*]: Employee; ///exact translation but it would be more correct //and complete to use: Company employee _[any->1..*; 0..*<-any]: (Employee \. Person_employee); Person \. Man Woman Employee; //exact translation; it would be more correct and complete to use: // Person \. excl{Man Woman} Person_employee; // since an Employee is not necessarily a Person. //Note: "any Person may be a Man (or something else)" // <=> (∀p,m Person(p) => Man(m) ∨ Person_that_is_not_a_man(m)) // <=> (∀p,m Man(m) => Person(p)) <=> [Person \. Man] // Idem for the representation of "may be a Woman". Employee id _[any->1..*]: ID, photo _[any->1..*]: Photo; //exact translation; more completely: // Employee id _[any->1..*; 0..*<-any]: ID, photo _[any->1..*; 0..*<-any]: Photo;
Concernant la modélisation contenant au moins 4 problèmes conceptuels
(6 sont listés ci-dessous) :
array<Employee> employees;
array<Employee> a__oEmployee;
Collection<<Employee> employees;
Collection<Employee> a__oEmployee;
class Company { Employee *poEmployee; }
Employee oEmployee;
par
Relation_employee *rpRelation_employee;