diff --git a/html/tutorial2/MyApp.java b/html/tutorial2/MyApp.java index 78762b37f8bcafb8437489941f7de76ab781ddb8..95006cd25bc9be5fa8597acc634f70a0c2c3c1af 100644 --- a/html/tutorial2/MyApp.java +++ b/html/tutorial2/MyApp.java @@ -58,6 +58,7 @@ import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLDescription; import org.semanticweb.owl.apibinding.OWLManager; // IDDL @@ -290,12 +291,11 @@ public class MyApp { // Alternative: Use Pellet to answer queries // ***** Fourth exercise: reasoning ***** + + // Variant 1: reasoning with merged ontologies OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); Reasoner reasoner = new Reasoner( manager ); - // ontology that will be used - String file = "http://www.mindswap.org/2004/owl/mindswappers"; - // Load the ontology try { OWLOntology ontology = manager.loadOntology( URI.create( "file://"+tempOntoFileName ) ); @@ -305,32 +305,41 @@ public class MyApp { // get the instances of a class OWLClass person = manager.getOWLDataFactory().getOWLClass( URI.create( "http://alignapi.gforge.inria.fr/tutorial2/ontology1.owl#Estudiante" ) ); Set instances = reasoner.getIndividuals( person, false ); - System.err.println("There are "+instances.size()+" students "+person.getURI()); + System.err.println("Pellet(Merged): There are "+instances.size()+" students "+person.getURI()); - /* - OWLClass person2 = manager.getOWLDataFactory().getOWLClass( URI.create( "http://alignapi.gforge.inria.fr/tutorial2/ontology2.owl#Person" ) ); - OWLAxiom axiom = manager.getOWLSubClassAxiom( person, person2 ); - boolean isit = reasoner.isEntailed( axiom ); - */ - /* + testSubClass( manager, reasoner, person, manager.getOWLDataFactory().getOWLClass( URI.create( "http://alignapi.gforge.inria.fr/tutorial2/ontology2.owl#Person" ) ) ); + testSubClass( manager, reasoner, person, manager.getOWLDataFactory().getOWLClass( URI.create( "http://alignapi.gforge.inria.fr/tutorial2/ontology2.owl#Student" ) ) ); + + // Variant 2: reasoning with distributed semantics (IDDL) // test consistency of aligned ontologies - IDDLReasoner reasoner = new IDDLReasoner( Semantics.IDDL ); - reasoner.addOntology( uri1 ); - reasoner.addOntology( uri2 ); - reasoner.addAlignment( al ); + IDDLReasoner dreasoner = new IDDLReasoner( Semantics.IDDL ); + dreasoner.addOntology( uri1 ); + dreasoner.addOntology( uri2 ); + dreasoner.addAlignment( al ); // What to do if not consistent? - if ( reasoner.isConsistent() ) { - Alignment al2 = new URIAlignment(); + System.err.println( al ); + if ( dreasoner.isConsistent() ) { + System.err.println( "IDDL: the alignment network is consistent"); + Alignment al2 = new ObjectAlignment(); try { al2.init( uri1, uri2 ); - // add the cell - //al2.addAlignCell( c2.getObject1(), c2.getObject2(), c2.getRelation().getRelation(), 1. ); + // add the cell + //al2.addAlignCell( c2.getObject1(), c2.getObject2(), c2.getRelation().getRelation(), 1. ); } catch (AlignmentException ae) { ae.printStackTrace(); } - reasoner.isEntailed( al2 ); + dreasoner.isEntailed( al2 ); } else { - System.err.println( "your alignment is inconsistent"); + System.err.println( "IDDL: the alignment network is inconsistent"); + } + } + + public void testSubClass( OWLOntologyManager manager, Reasoner reasoner, OWLDescription d1, OWLDescription d2 ) { + OWLAxiom axiom = manager.getOWLDataFactory().getOWLSubClassAxiom( d1, d2 ); + boolean isit = reasoner.isEntailed( axiom ); + if ( isit ) { + System.out.println( "Pellet(Merged): "+d1+" is subclass of "+d2 ); + } else { + System.out.println( "Pellet(Merged): "+d1+" is not necessarily subclass of "+d2 ); } - */ } public String getFromURLString( String u, boolean print ){