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 }