dsi-ehess / VIVO-EHESS

Specialize VIVO-fr_FR for EHESS
0 stars 0 forks source link

Inférer les types de personnes #2

Open ghost opened 3 years ago

ghost commented 3 years ago

Actuellement les types de personnes font l'objet d'assertions directes lors du chargement : le type est calculé à partir de là ou des fonctions. Aperçu du code :

insert_statements(RDF::Statement(@uri, RDF.type, infer_rdf_person_type_from_database_function_type(function)))

...

 def infer_rdf_person_type_from_database_function_type(function)
      return RDF::URI("#{FR_ONTOLOGY}PRS_0000011") if function.pr? || function.dirh? || function.mcf? #enseignant.e chercheur.e
      return RDF::URI("#{FR_ONTOLOGY}PRS_0000009") if function.dr? || function.cr? # chercheur.e
      return RDF::URI("#{FR_ONTOLOGY}PRS_0000012") if function.prem? || function.drem? # professeur.e émérite
      return RDF::URI("#{FR_ONTOLOGY}PRS_0000002") if function.ie? || function.ir? || function.ai? || function.tch? # personnel de soutien
      return RDF::URI("#{FR_ONTOLOGY}PRS_0000006") if function.doc? # doctorant.e
      return RDF::URI("#{FR_ONTOLOGY}PRS_0000008") if function.postdoc? # postdoctorant.e
      return RDF::URI("#{FR_ONTOLOGY}PRS_0000010") if function.prag? # enseignant.e
 end

Cette solution n'est pas viable si la mise à jour des fonctions est autorisée dans Vivo car elle oblige à mettre à jour les types de personnes en mode batch. Ce code devrait être supprimé au profit d'une inférence . Cela a été tenté dans notre Vivo v1 mais il est apparu impossible de faire calculer cette inférence par Vivo du fait du choix de la persistance en base de données relationnelle. Consulter cet échange : https://groups.google.com/g/vivo-tech/c/1eIbDlHzkBY/m/5GJtUrf9AwAJ

@dsi-ehess/vivo-ehess-2-team

michel-heon commented 3 years ago

@j-dornbusch Cette liste de fonctions dont tu fais référence ( function.ai function.cr function.dirh function.doc function.dr function.drem function.ie function.ir function.mcf function.postdoc function.pr function.prag function.prem function.tch) n'apparait pas dans directement l'ontologie. Est-ce que ces fonctions font référence aux classes FNC_000000XXX ou s'ils sont des individus de la classe FNC_0000001

Mon avis, chacune des fonctions 'function.xxx' devrait être un owl:individual de FNC_0000001 pour éventuellement coder les énoncés avec une forme ( aSubjet / hasFunction / function.pr ) pour représenter que aSubjet occupe la fonction d"enseignant.e chercheur.e Une fois cela fait, il va être facile d'inférer que aSubject est de type PRS_0000011

ghost commented 3 years ago

@michel-heon La iste de fonction correspond à la lecture de données relationnelles dans l'application qui alimente Vivo. Comme les inférences n'existent pas dans l'ontologie je suis obliger d'asserter les types de personnes en m'appuyant sur les données de la base de données. Comportement souhaité :

Comportement existant :

ghost commented 3 years ago

Exemple de règle : Si une personne a (est related by) actuellement une instance fonction de FNC_0000006, FNC_0000007, FNC_0000008, FNC_0000014, FNC_0000015 alors elle est de type PRS_0000002

michel-heon commented 3 years ago

@j-dornbusch , te serait-il possible de m"écrire ici sous forme de règles (antécédent -> conséquent) l'ensemble des énoncés qui doivent être implanter ? ex.: FNC_0000006 & FNC_0000007 & FNC_0000008 & FNC_0000014 & FNC_0000015 -> PRS_0000002

ghost commented 3 years ago

@michel-heon

FNC_0000005 (autre fonction d'enseignement et de recherche) FNC_0000020 (professeur des universités) // à noter : doublon FNC_0000017 FNC_0000012 (directeur d'études) FNC_0000013 (directeur.trice d'études cumulant) FNC_0000016 (maître.sse de conférences)

-> PRS_0000011(enseignant chercheur)

FNC_0000021 (autre fonction de recherche) FNC_0000011 (directeur de recherches) FNC_0000009 (chargé.e de recherches) FNC_0000010 (chercheur.e contractuel.le)

-> PRS_0000009 (chercheur)

FNC_0000018 (professeur.e émerite)

-> PRS_0000012 (enseignant.e-chercheur.e émérite)

FNC_0000004 (autre fonction d'enseignement) Oubliés ici les prags (professeurs agrégés)

-> PRS_0000010 (enseignant)

FNC_0000006 (autre fonction de support administratif) FNC_0000007 (autre fonction de support à la recherche) FNC_0000015 (ingénieur d'études) FNC_0000014 (ingénieur.e de recherche) FNC_0000008 (assistant.e ingénieur.e) Oubliés ici les techniciens

-> PRS_0000002 (personnel de soutien)

On n'a pas de moyen de distinguer à tout coup PRS_0000003 (personnel de soutien administratif) et PRS_0000004 (personnel de soutien à la recherche). Si la fonction relie la personne à une entité administative (ORG_0000014) on peut assigner PRS_0000003 en revanche si elle est liée à une structure de recherche (ORG_0000003) les deux sont possibles.

FNC_0000019 (post-doctorat)

-> vivo:PostDoc

Il n'y a pas actuellement de fonction de doctorant induisant le type de personne PRS_0000006 (doctorant). En effet pour être précis le doctorant n'est pas inscrit en tant que doctorant auprès de l'EHESS (ou autre établissement) mais auprès de l'école doctorale de l'EHESS, catégorie qui n'a pas été créée.