9,6 → 9,10 |
private $fichier = ''; |
private $lotsTermes = array(); |
private $lotsRelations = array(); |
private $lotsImages = array(); |
private $lotsPublications = array(); |
private $lotsAuteurs = array(); |
private $lotsHierarchie = array(); |
private $baseIdGroupe = 10000; |
private $baseIdSousGroupe = 20000; |
private $types = array( |
23,7 → 27,11 |
'QUANTITATIVE_PROPERTIES' => 10, |
'NEW_QUALITATIVE_PROPERTIES' => 11, |
'DISALLOWED_TERMS' => 20, |
'QUALITATIVE_STATES' => 13); |
'QUALITATIVE_STATES' => 13, |
'TYPE_OF_STRUCTURE_TERMS' => 14, |
'STRUCTURE_TERMS' => 15, |
'REGION_TERMS' => 16, |
'GENERIC_STRUCTURES' => 17); |
|
public function executer() { |
try { |
63,6 → 71,24 |
} else if ($this->lecteur->localName == 'STATE_GROUPS') { |
$noeud = $this->obtenirNoeudSimpleXml(); |
$this->traiterGroupes($noeud->children()); |
} else if ($this->lecteur->localName == 'NewQualitativeProperties') { |
$noeud = $this->obtenirNoeudSimpleXml(); |
$this->traiterNouvellesQualites($noeud->children()); |
} else if ($this->lecteur->localName == 'RELATIONSHIPS') { |
$noeud = $this->obtenirNoeudSimpleXml(); |
$this->traiterRelations($noeud->children()); |
} else if ($this->lecteur->localName == 'PICTURES') { |
$noeud = $this->obtenirNoeudSimpleXml(); |
$this->traiterImages($noeud->children()); |
} else if ($this->lecteur->localName == 'CITATIONS') { |
$noeud = $this->obtenirNoeudSimpleXml(); |
$this->traiterCitations($noeud->children()); |
} else if ($this->lecteur->localName == 'AUTHORS') { |
$noeud = $this->obtenirNoeudSimpleXml(); |
$this->traiterAuteurs($noeud->children()); |
} else if ($this->lecteur->localName == 'TreeNode') { |
$noeud = $this->obtenirNoeudSimpleXml(); |
$this->traiterHierarchie($noeud); |
} |
} |
} |
72,6 → 98,18 |
if (count($this->lotsRelations) > 0) { |
$this->insererLotDeRelations(); |
} |
if (count($this->lotsImages) > 0) { |
$this->insererLotImages(); |
} |
if (count($this->lotsPublications) > 0) { |
$this->insererLotDePublications(); |
} |
if (count($this->lotsAuteurs) > 0) { |
$this->insererLotAuteurs(); |
} |
if (count($this->lotsHierarchie) > 0) { |
$this->insererLotHierarchie(); |
} |
} |
} |
|
92,7 → 130,7 |
private function traiterTermes($type, $termes) { |
foreach ($termes as $terme) { |
$id = (int) $terme->attributes()->GLOBALID; |
if (isset($lotsTermes[$id]) === false) { |
if (isset($this->lotsTermes[$id]) === false) { |
$valeur = array(); |
$valeur[] = (int) $id; |
$valeur[] = (int) $type; |
100,7 → 138,7 |
$valeur[] = (string) $this->obtenirDefinition($terme); |
$valeur[] = (int) $this->obtenirPreference($terme); |
$valeur[] = (int) $this->obtenirAuteur($terme); |
$valeur[] = (int) $terme->attributes()->citationREF; |
$valeur[] = (int) $this->obtenirCitation($terme); |
$valeur[] = (int) $this->obtenirImage($terme); |
$this->lotsTermes[$id] = $valeur; |
} |
109,14 → 147,21 |
$relation[] = (int) $terme->attributes()->GLOBALID; |
$relation[] = (int) $terme->attributes()->parentID; |
$relation[] = 'A POUR PARENT'; |
$this->lotsRelations[] = $relation; |
$this->ajouterRelation($relation); |
} |
if (isset($terme->attributes()->PARENT_STRUCTURE_ID)) { |
$relation = array(); |
$relation[] = (int) $terme->attributes()->GLOBALID; |
$relation[] = (int) $terme->attributes()->PARENT_STRUCTURE_ID; |
$relation[] = 'A POUR STRUCTURE PARENTE'; |
$this->ajouterRelation($relation); |
} |
if (isset($terme->attributes()->stateOfNEWPROPERTYID)) { |
$relation = array(); |
$relation[] = (int) $terme->attributes()->GLOBALID; |
$relation[] = (int) $terme->attributes()->stateOfNEWPROPERTYID; |
$relation[] = 'A POUR NOUVELLE QUALITE'; |
$this->lotsRelations[] = $relation; |
$this->ajouterRelation($relation); |
} |
} |
} |
148,6 → 193,16 |
return $auteur; |
} |
|
private function obtenirCitation($terme) { |
$citation = 0; |
if (isset($terme->attributes()->citationID)) { |
$citation = $terme->attributes()->citationID; |
} elseif (isset($terme->attributes()->citationREF)) { |
$citation = $terme->attributes()->citationREF; |
} |
return $citation; |
} |
|
private function obtenirImage($terme) { |
$image = 0; |
if (isset($terme->attributes()->pictureREF)) { |
157,10 → 212,9 |
} |
|
private function traiterGroupes($groupes) { |
$lotsTermes = $lotsRelations = array(); |
foreach ($groupes as $groupe) { |
$id = $this->baseIdGroupe + (int) $groupe->attributes()->GROUP_ID; |
if (isset($lotsTermes[$id]) === false) { |
if (isset($this->lotsTermes[$id]) === false) { |
$valeur = array(); |
$valeur[] = (int) $id; |
$valeur[] = 18; |
178,7 → 232,7 |
$relation[] = (int) $structure->attributes()->GLOBALID; |
$relation[] = (int) $id; |
$relation[] = 'A POUR GROUPE'; |
$this->lotsRelations[] = $relation; |
$this->ajouterRelation($relation); |
} |
} |
if (isset($groupe->STATES_IN_GROUP)) { |
187,7 → 241,7 |
$relation[] = (int) $id; |
$relation[] = (int) $etat->attributes()->GLOBALID; |
$relation[] = 'A POUR ETAT'; |
$this->lotsRelations[] = $relation; |
$this->ajouterRelation($relation); |
} |
} |
if (isset($groupe->STATESUBGROUPS)) { |
197,10 → 251,9 |
} |
|
private function traiterSousGroupes($idGroupe, $sousGroupes) { |
$lotsTermes = $lotsRelations = array(); |
foreach ($sousGroupes as $sg) { |
$id = $this->baseIdSousGroupe + (int) $sg->attributes()->STATESUBGROUP_GLOBALID; |
if (isset($lotsTermes[$id]) === false) { |
if (isset($this->lotsTermes[$id]) === false) { |
$valeur = array(); |
$valeur[] = (int) $id; |
$valeur[] = 19; |
216,7 → 269,7 |
$relation[] = (int) $idGroupe; |
$relation[] = (int) $id; |
$relation[] = 'A POUR SOUS-GROUPE'; |
$this->lotsRelations[] = $relation; |
$this->ajouterRelation($relation); |
} |
if (isset($sg->STATES_IN_SUBGROUP)) { |
foreach ($sg->STATES_IN_SUBGROUP->children() as $etat) { |
224,12 → 277,166 |
$relation[] = (int) $id; |
$relation[] = (int) $etat->attributes()->GLOBALID; |
$relation[] = 'A POUR ETAT'; |
$this->lotsRelations[] = $relation; |
$this->ajouterRelation($relation); |
} |
} |
} |
} |
|
private function traiterNouvellesQualites($qualites) { |
foreach ($qualites as $qualite) { |
$id = (int) $qualite->attributes()->IDSEQ; |
if (isset($this->lotsTermes[$id]) === false) { |
$valeur = array(); |
$valeur[] = (int) $id; |
$valeur[] = 11; |
$valeur[] = (string) $qualite->attributes()->term; |
$valeur[] = (string) $this->obtenirDefinition($terme); |
$valeur[] = (int) $this->obtenirPreference($terme); |
$valeur[] = (int) $this->obtenirAuteur($terme); |
$valeur[] = (int) $this->obtenirCitation($terme); |
$valeur[] = (int) $this->obtenirImage($terme); |
$this->lotsTermes[$id] = $valeur; |
} |
if (isset($qualite->attributes()->ParentPropertyID)) { |
$relation = array(); |
$relation[] = (int) $qualite->attributes()->IDSEQ; |
$relation[] = (int) $qualite->attributes()->ParentPropertyID; |
$relation[] = 'A POUR PARENT'; |
$this->ajouterRelation($relation); |
} |
if (isset($qualite->MemberStates)) { |
$etats = $qualite->MemberStates->children(); |
$idParent = $qualite->attributes()->IDSEQ; |
$this->traiterEtatsMembre($etats, $idParent); |
} |
if (isset($qualite->Structures_linked_to_Property)) { |
$structures = $qualite->Structures_linked_to_Property->children(); |
$idParent = $qualite->attributes()->IDSEQ; |
$this->traiterStructuresLiees($structures, $idParent); |
} |
if (isset($qualite->ContextGroups)) { |
$contextes = $qualite->ContextGroups->children(); |
if (count($contextes) > 0) { |
foreach ($contextes as $contexte) { |
$idParent = $contexte->attributes()->ID; |
$structures = $contexte->Structures_linked_to_Context->children(); |
$this->traiterStructuresLiees($structures, $idParent); |
$etats = $contexte->MemberStates->children(); |
$this->traiterEtatsMembre($etats, $idParent); |
} |
} |
} |
} |
} |
|
private function ajouterRelation($relation) { |
$id = implode('-', $relation); |
if (isset($this->lotsRelations[$id]) === false) { |
$this->lotsRelations[$id] = $relation; |
} |
} |
|
private function traiterEtatsMembre($etats, $idParent) { |
if (count($etats) > 0) { |
foreach ($etats as $etat) { |
$relation = array(); |
$relation[] = (int) $idParent; |
$relation[] = (int) $etat->attributes()->RefID; |
$relation[] = 'A POUR ETAT'; |
$this->ajouterRelation($relation); |
} |
} |
} |
|
private function traiterStructuresLiees($structures, $idParent) { |
if (count($structures) > 0) { |
foreach ($structures as $structure) { |
$relation = array(); |
$relation[] = (int) $structure->attributes()->RefID; |
$relation[] = (int) $idParent; |
$relation[] = 'A POUR PROPRIETE'; |
$this->ajouterRelation($relation); |
} |
} |
} |
|
private function traiterRelations($relations) { |
foreach ($relations as $rel) { |
$relation = array(); |
$relation[] = (int) $rel->attributes()->term1REF; |
$relation[] = (int) $rel->attributes()->term2REF; |
$relation[] = (string) $this->obtenirTypeRelation($rel->attributes()->relationship); |
$this->ajouterRelation($relation); |
} |
} |
|
private function obtenirTypeRelation($type) { |
switch ($type) { |
case 'ASSOCIATED WITH' : |
$relation = 'ASSOCIE AVEC'; |
break; |
case 'IS A PART OF' : |
$relation = 'EST UNE PARTIE DE'; |
break; |
case 'IS A TYPE OF' : |
$relation = 'EST UN TYPE DE'; |
break; |
default : |
$relation = ''; |
} |
return $relation; |
} |
|
private function traiterImages($images) { |
foreach ($images as $img) { |
$valeur = array(); |
$valeur[] = (int) $img->attributes()->ID; |
$valeur[] = (string) $img->attributes()->NAME; |
$valeur[] = (int) $img->attributes()->CITATION_REFID; |
$this->lotsImages[] = $valeur; |
} |
} |
|
private function traiterCitations($citations) { |
foreach ($citations as $publi) { |
$valeur = array(); |
$valeur[] = (int) $publi->attributes()->ID; |
$valeur[] = (int) $publi->attributes()->primaryAuthorREF; |
$valeur[] = (string) $publi->PUBLICATION; |
$valeur[] = (string) $publi->DATE; |
$valeur[] = (string) $publi->PAGE; |
$this->lotsPublications[] = $valeur; |
} |
} |
|
private function traiterAuteurs($auteurs) { |
foreach ($auteurs as $auteur) { |
$valeur = array(); |
$valeur[] = (int) $auteur->attributes()->ID; |
$valeur[] = (string) $auteur->attributes()->givenNames; |
$valeur[] = (string) $auteur->attributes()->surname; |
$valeur[] = $this->obtenirDateNaissance((string) $auteur->attributes()->born); |
$valeur[] = (string) $auteur->attributes()->died; |
$this->lotsAuteurs[] = $valeur; |
} |
} |
|
private function obtenirDateNaissance($annee) { |
$date = $annee.'-00-00'; |
return $date; |
} |
|
private function traiterHierarchie($noeud) { |
$valeur = array(); |
$valeur[] = (int) $noeud->attributes()->ID; |
$valeur[] = (int) $noeud->attributes()->ParentNodeID; |
$valeur[] = (string) $noeud->attributes()->pathAsNames; |
$valeur[] = (string) $noeud->attributes()->pathAsID; |
$valeur[] = (int) $noeud->attributes()->TermID; |
$this->lotsHierarchie[] = $valeur; |
} |
|
private function insererLotDeTermes() { |
$champs = implode(',', array('id_terme', 'ce_type', 'terme', 'definition', 'preference', 'ce_auteur', 'ce_publication', 'ce_image')); |
$values = $this->creerValues($this->lotsTermes); |
244,6 → 451,34 |
$this->executerSql($requete); |
} |
|
private function insererLotImages() { |
$champs = implode(',', array('id_image', 'uri', 'ce_publication')); |
$values = $this->creerValues($this->lotsImages); |
$requete = "INSERT INTO ontologie_image ($champs) VALUES $values"; |
$this->executerSql($requete); |
} |
|
private function insererLotDePublications() { |
$champs = implode(',', array('id_publication', 'ce_auteur_principal', 'titre', 'date', 'uri')); |
$values = $this->creerValues($this->lotsPublications); |
$requete = "INSERT INTO ontologie_publication ($champs) VALUES $values"; |
$this->executerSql($requete); |
} |
|
private function insererLotAuteurs() { |
$champs = implode(',', array('id_auteur', 'prenom', 'nom', 'naissance_date', 'deces_date')); |
$values = $this->creerValues($this->lotsAuteurs); |
$requete = "INSERT INTO ontologie_auteur ($champs) VALUES $values"; |
$this->executerSql($requete); |
} |
|
private function insererLotHierarchie() { |
$champs = implode(',', array('id_noeud', 'id_noeud_parent', 'chemin_noms', 'chemin_ids', 'ce_terme')); |
$values = $this->creerValues($this->lotsHierarchie); |
$requete = "INSERT INTO ontologie_hierarchie ($champs) VALUES $values"; |
$this->executerSql($requete); |
} |
|
private function creerValues($valeurs) { |
$values = array(); |
foreach ($valeurs as $valeur) { |
270,10 → 505,18 |
} |
|
private function vider() { |
$requete = 'TRUNCATE TABLE ontologie_terme'; |
$requete = 'TRUNCATE TABLE ontologie_auteur'; |
$this->executerSql($requete); |
$requete = 'TRUNCATE TABLE ontologie_hierarchie'; |
$this->executerSql($requete); |
$requete = 'TRUNCATE TABLE ontologie_image'; |
$this->executerSql($requete); |
$requete = 'TRUNCATE TABLE ontologie_publication'; |
$this->executerSql($requete); |
$requete = 'TRUNCATE TABLE ontologie_relation'; |
$this->executerSql($requete); |
$requete = 'TRUNCATE TABLE ontologie_terme'; |
$this->executerSql($requete); |
} |
} |
?> |