001    /**
002     * Test11.java
003     * jCOLIBRI2 framework. 
004     * @author Juan A. Recio-García.
005     * GAIA - Group for Artificial Intelligence Applications
006     * http://gaia.fdi.ucm.es
007     * 16/06/2007
008     */
009    package jcolibri.test.test11;
010    
011    import java.util.ArrayList;
012    
013    
014    import jcolibri.datatypes.Instance;
015    import jcolibri.method.retrieve.NNretrieval.similarity.local.ontology.OntCosine;
016    import jcolibri.method.retrieve.NNretrieval.similarity.local.ontology.OntDeep;
017    import jcolibri.method.retrieve.NNretrieval.similarity.local.ontology.OntDeepBasic;
018    import jcolibri.method.retrieve.NNretrieval.similarity.local.ontology.OntDetail;
019    import jcolibri.util.FileIO;
020    import es.ucm.fdi.gaia.ontobridge.OntoBridge;
021    import es.ucm.fdi.gaia.ontobridge.OntologyDocument;
022    
023    /**
024     * Checks the ontological similarity functions.
025     * It uses the following ontology:
026     * <p><img src="test11.jpg"/></p>
027     * <p>The similarity funcions implement these formulas:</p>
028     * <p><img src="ontsim.jpg"/></p>
029     * 
030     * @author Juan A. Recio-García
031     * @version 1.0
032     * @see jcolibri.method.retrieve.NNretrieval.similarity.local.ontology
033     */
034    public class Test11 {
035    
036            /**
037             * @param args
038             */
039            public static void main(String[] args) {
040    
041                    try {
042                            // Obtain a reference to OntoBridge
043                            OntoBridge ob = jcolibri.util.OntoBridgeSingleton.getOntoBridge();
044                            // Configure it to work with the Pellet reasoner
045                            ob.initWithPelletReasoner();
046                            // Setup the main ontology
047                            OntologyDocument mainOnto = new OntologyDocument("http://gaia.fdi.ucm.es/ontologies/personalTrainer.owl", 
048                                                                            FileIO.findFile("jcolibri/test/test11/personalTrainer.owl").toExternalForm());
049                            // There are not subontologies
050                            ArrayList<OntologyDocument> subOntologies = new ArrayList<OntologyDocument>();
051                            // Load the ontology
052                            ob.loadOntology(mainOnto, subOntologies, false);
053                            
054                            OntCosine cosine = new OntCosine();
055                            OntDeepBasic deepbasic = new OntDeepBasic();
056                            OntDeep deep = new OntDeep();
057                            OntDetail detail = new OntDetail();
058                            
059                            Instance biceps =       new Instance("biceps");
060                            Instance triceps =      new Instance("triceps");
061                            Instance pectoralis =   new Instance("pectoralis");
062                            Instance abdominis =    new Instance("abdominis");
063                            Instance quadriceps =   new Instance("quadriceps");
064                            Instance deltoid =      new Instance("deltoid");
065    
066                            
067                            System.out.println(ob.LCS("pectoralis", "deltoid"));
068    
069                            
070                            System.out.format("\n\t\t\t\tDeepBasic\tDeep\t\tCosine\t\tDetail\n"+
071                                                      "sim(biceps, triceps)\t\t%.3f\t\t%.3f\t\t%.3f\t\t%.3f\n",
072                                            deepbasic.compute(biceps, triceps),
073                                            deep.compute(biceps,triceps),
074                                            cosine.compute(biceps, triceps),
075                                            detail.compute(biceps,triceps)
076                                            );
077    
078                            System.out.format("sim(pectoralis, abdominis)\t%.3f\t\t%.3f\t\t%.3f\t\t%.3f\n",
079                                            deepbasic.compute(pectoralis, abdominis),
080                                            deep.compute(pectoralis,abdominis),
081                                            cosine.compute(pectoralis, abdominis),
082                                            detail.compute(pectoralis,abdominis)
083                                            );
084    
085                            System.out.format("sim(triceps, abdominis)\t\t%.3f\t\t%.3f\t\t%.3f\t\t%.3f\n",
086                                            deepbasic.compute(triceps, abdominis),
087                                            deep.compute(triceps,abdominis),
088                                            cosine.compute(triceps, abdominis),
089                                            detail.compute(triceps,abdominis)
090                                            );
091                            
092                            System.out.format("sim(triceps, cuadriceps)\t%.3f\t\t%.3f\t\t%.3f\t\t%.3f\n",
093                                            deepbasic.compute(triceps, quadriceps),
094                                            deep.compute(triceps,quadriceps),
095                                            cosine.compute(triceps, quadriceps),
096                                            detail.compute(triceps,quadriceps)
097                                            );
098                            
099                            System.out.format("sim(pectoralis, deltoid)\t%.3f\t\t%.3f\t\t%.3f\t\t%.3f\n",
100                                            deepbasic.compute(pectoralis, deltoid),
101                                            deep.compute(pectoralis,deltoid),
102                                            cosine.compute(pectoralis, deltoid),
103                                            detail.compute(pectoralis,deltoid)
104                                            );
105                            
106                            
107                    }catch(Exception e)
108                    {
109                            org.apache.commons.logging.LogFactory.getLog(OntDeepBasic.class).error(e);
110                    }
111    
112    
113            }
114    
115    }