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