/src/fr/cnrs/liris/simtole_old/protocols/ContainerHolder.java

https://github.com/lmedini/simtole · Java · 200 lines · 128 code · 33 blank · 39 comment · 2 complexity · a0e19e3adec0496191622ddafdeb4176 MD5 · raw file

  1. package fr.cnrs.liris.simtole_old.protocols;
  2. import java.net.URI;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import org.mindswap.pellet.owlapi.Reasoner;
  7. import org.picocontainer.*;
  8. import org.semanticweb.owlapi.apibinding.OWLManager;
  9. import org.semanticweb.owlapi.model.IRI;
  10. import org.semanticweb.owlapi.model.OWLOntology;
  11. import org.semanticweb.owlapi.model.OWLOntologyCreationException;
  12. import org.semanticweb.owlapi.model.OWLOntologyIRIMapper;
  13. import org.semanticweb.owlapi.model.OWLOntologyManager;
  14. import org.semanticweb.owlapi.util.SimpleIRIMapper;
  15. import fr.cnrs.liris.simtole.mapping.EquivalentMapping;
  16. import fr.cnrs.liris.simtole.mapping.SubsomptionMapping;
  17. import peersim.core.Protocol;
  18. import sun.reflect.Reflection;
  19. public class ContainerHolder implements Protocol {
  20. // 2 containers :
  21. // * 1 pour les objets en rapports avec l'ontologie
  22. protected MutablePicoContainer semContainer;
  23. // * 1 pour les tableaux
  24. protected MutablePicoContainer tabContainer;
  25. // Paramètres de l'ontologie
  26. protected IRI physicalIRI;
  27. protected IRI ontologyIRI;
  28. protected String nomFichier;
  29. // Objets de gestion de l'ontologie et du moteur d'inférences
  30. protected OWLOntologyManager manager;
  31. protected OWLOntology ontology;
  32. protected Reasoner reasoner;
  33. // Tableaux
  34. protected HashMap<Integer, Integer> tableauMetrique; // Pas compris à quoi
  35. // ça sert, ça...
  36. // (Lionel).
  37. protected ArrayList<EquivalentMapping> tableauEquivalences;
  38. protected ArrayList<SubsomptionMapping> tableauSubsomptions;
  39. // Contrôle d'initialisation des paramètres de l'ontologie
  40. private static final int INIT_NOMFICH = 1;
  41. private static final int INIT_PHYSURI = 2;
  42. private static final int INIT_ONTOURI = 4;
  43. private int ontoParamsInit = 0;
  44. private String prefix;
  45. @SuppressWarnings("unchecked")
  46. /**
  47. * Constructeur "simple" du pair. Initialise les conteneurs. Les composants sont instanciés dans les fonctions à part, car on ne peut initialiser l'ontologie qu'une fois la config des paramètres faite.
  48. */
  49. public ContainerHolder(String prefix) {
  50. this.prefix = prefix;
  51. semContainer = new PicoBuilder().withCaching().build();
  52. tabContainer = new PicoBuilder().withCaching().build();
  53. }
  54. public ContainerHolder(String prefix, String nomFich, IRI physIri, IRI ontoIri) {
  55. this(prefix);
  56. setNomFichier(nomFich);
  57. setPhysicalIri(physIri);
  58. setOntologyIri(ontoIri);
  59. }
  60. /**
  61. * initialise les composants du conteneur de tableaux.
  62. *
  63. * @author L. Médini Topology defined
  64. */
  65. public void tabInit() {
  66. tabContainer.addComponent("tableauMetrique", new HashMap<Integer, Integer>());
  67. tabContainer.addComponent("tableauEquivalences", new ArrayList<EquivalentMapping>());
  68. tabContainer.addComponent("tableauSubsomptions", new ArrayList<SubsomptionMapping>());
  69. tableauMetrique = this.getTableauMetrique();
  70. tableauEquivalences = this.getTabEquivalent();
  71. tableauSubsomptions = this.getTabSubsomption();
  72. }
  73. /**
  74. * initialise les composants du conteneur sémantique une fois les URI des
  75. * ontologies dispatchées par OwlDistributionInitializer.
  76. *
  77. * @author L. Médini Topology defined
  78. */
  79. public void semInit() throws ExceptionInInitializerError {
  80. if (ontoParamsInit == INIT_NOMFICH + INIT_PHYSURI + INIT_ONTOURI) {
  81. //Initialisation du manager
  82. OWLOntologyManager man = OWLManager.createOWLOntologyManager();
  83. OWLOntologyIRIMapper mapper = new SimpleIRIMapper(getOntologyIri(), getPhysicalIri());
  84. man.addIRIMapper(mapper);
  85. semContainer.addComponent("manager", man);
  86. //Initialisation de l'ontologie
  87. try {
  88. OWLOntology onto = man.loadOntology(getPhysicalIri());
  89. semContainer.addComponent("ontology", onto);
  90. } catch (OWLOntologyCreationException e) {
  91. // TODO Auto-generated catch block
  92. e.printStackTrace();
  93. }
  94. //Initialisation du reasoner
  95. semContainer.addComponent("reasoner", Reasoner.class);
  96. //Initialisation des variables globales (à virer)
  97. manager = this.getManager();
  98. ontology = this.getOntology();
  99. reasoner = this.getReasoner();
  100. } else
  101. throw new ExceptionInInitializerError("Paramètres de l'ontologie non initialisés ; ontoParamsInit = " + Reflection.getCallerClass(2));
  102. }
  103. @SuppressWarnings("unchecked")
  104. public Object clone() {
  105. ContainerHolder svh = null;
  106. try {
  107. svh = (ContainerHolder) super.clone();
  108. /* svh.setNomFichier(this.getNomFichier());
  109. svh.setPhysicalUri(this.getPhysicalUri());
  110. svh.setOntologyUri(this.getOntologyUri());
  111. svh.tabInit();
  112. svh.semInit();
  113. */ } catch (CloneNotSupportedException e) {
  114. System.err.println("Erreur de clonage du pair");
  115. e.printStackTrace();
  116. }
  117. return svh;
  118. }
  119. // Accesseurs des paramètres de l'ontologie
  120. public String getNomFichier() {
  121. return nomFichier;
  122. }
  123. public IRI getPhysicalIri() {
  124. return physicalIRI;
  125. }
  126. public IRI getOntologyIri() {
  127. return ontologyIRI;
  128. }
  129. public void setPhysicalIri(IRI iri) {
  130. physicalIRI = iri;
  131. ontoParamsInit = ontoParamsInit | INIT_PHYSURI;
  132. //System.out.println("Pair " + this.toString() + " : initialisation de l'URI physique de l'ontologie à " + this.getPhysicalUri());
  133. }
  134. public void setOntologyIri(IRI iri) {
  135. ontologyIRI = iri;
  136. ontoParamsInit = ontoParamsInit | INIT_ONTOURI;
  137. //System.out.println("Pair " + this.toString() + " : initialisation de l'URI locale de l'ontologie à " + this.getOntologyUri());
  138. }
  139. public void setNomFichier(String nomFichier) {
  140. this.nomFichier = nomFichier;
  141. ontoParamsInit = ontoParamsInit | INIT_NOMFICH;
  142. //System.out.println("Pair " + this.toString() + " : initialisation du nom de fichier de l'ontologie à " + this.getNomFichier());
  143. }
  144. // Accesseurs des tableaux
  145. @SuppressWarnings("unchecked")
  146. public HashMap<Integer, Integer> getTableauMetrique() {
  147. return (HashMap<Integer, Integer>) tabContainer.getComponent("tableauMetrique");
  148. }
  149. @SuppressWarnings("unchecked")
  150. public ArrayList<EquivalentMapping> getTabEquivalent() {
  151. return (ArrayList<EquivalentMapping>) tabContainer.getComponent("tableauEquivalences");
  152. }
  153. @SuppressWarnings("unchecked")
  154. public ArrayList<SubsomptionMapping> getTabSubsomption() {
  155. return (ArrayList<SubsomptionMapping>) tabContainer.getComponent("tableauSubsomptions");
  156. }
  157. // Accesseurs des éléments sémantiques
  158. public OWLOntologyManager getManager() {
  159. return (OWLOntologyManager) semContainer.getComponent("manager");
  160. }
  161. public OWLOntology getOntology() {
  162. return (OWLOntology) semContainer.getComponent("ontology");
  163. }
  164. public Reasoner getReasoner() {
  165. return (Reasoner) semContainer.getComponent("reasoner");
  166. }
  167. }