From a70651bf69e3292efe6772388dd255fbe321c9bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Euzenat?= <Jerome.Euzenat@inria.fr>
Date: Wed, 31 Mar 2010 08:12:25 +0000
Subject: [PATCH] - updated tutorial with new version of Pellet and IDDL
 (neutralised)

---
 html/tutorial/tutorial2/MyApp.java | 39 ++++++++++++++--------------
 html/tutorial/tutorial2/index.html | 41 +++++++++++++++++-------------
 2 files changed, 43 insertions(+), 37 deletions(-)

diff --git a/html/tutorial/tutorial2/MyApp.java b/html/tutorial/tutorial2/MyApp.java
index 22b4b466..df0a739e 100644
--- a/html/tutorial/tutorial2/MyApp.java
+++ b/html/tutorial/tutorial2/MyApp.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2009
+ * Copyright (C) INRIA, 2009-2010
  *
  * Modifications to the initial code base are copyright of their
  * respective authors, or their employers as appropriate.  Authorship
@@ -52,17 +52,19 @@ import com.hp.hpl.jena.query.QueryExecution;
 import com.hp.hpl.jena.query.QueryExecutionFactory;
 
 // OWL API
+import org.semanticweb.owlapi.model.IRI;
 import org.semanticweb.owlapi.model.OWLOntologyManager;
 import org.semanticweb.owlapi.model.OWLOntology;
 import org.semanticweb.owlapi.model.OWLOntologyCreationException;
 import org.semanticweb.owlapi.model.OWLClass;
 import org.semanticweb.owlapi.model.OWLAxiom;
 import org.semanticweb.owlapi.model.OWLClassExpression;
+import org.semanticweb.owlapi.model.OWLNamedIndividual;
 import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.reasoner.OWLReasoner;
 
 // Pellet
 import com.clarkparsia.pellet.owlapiv3.PelletReasoner;
-//import org.semanticweb.owlapi.reasoner.OWLReasoner;
 
 // IDDL
 import fr.inrialpes.exmo.iddl.IDDLReasoner;
@@ -191,12 +193,8 @@ public class MyApp {
 		AlignmentParser aparser = new AlignmentParser(0);
 		Alignment alu = aparser.parseString( xmlString );
 		al = ObjectAlignment.toObjectAlignment((URIAlignment)alu);
-	    } catch (ParserConfigurationException pce) { 
-		pce.printStackTrace();
 	    } catch (SAXException saxe) { 
 		saxe.printStackTrace(); 
-	    } catch (IOException ioe) { 
-		ioe.printStackTrace();
 	    } catch (AlignmentException ae) { 
 		ae.printStackTrace();
 	    }
@@ -299,22 +297,25 @@ public class MyApp {
 
 	// Variant 1: reasoning with merged ontologies
 	OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
-	Reasoner reasoner = new Reasoner( manager );
+	//Pellet
+	OWLReasoner reasoner = null;
 
-	//Does not seem to work
 	//System.setErr( new PrintStream( new NullStream() ) );
 	// Load the ontology 
 	try {
-	    OWLOntology ontology = manager.loadOntology( URI.create( "file://"+tempOntoFileName ) );
-	    reasoner.loadOntology( ontology );
-	} catch (OWLOntologyCreationException ooce) { ooce.printStackTrace(); }
+	    OWLOntology ontology = manager.loadOntology( IRI.create( "file://"+tempOntoFileName ) );
+	    reasoner = new PelletReasoner( ontology, org.semanticweb.owlapi.reasoner.BufferingMode.NON_BUFFERING );
+	    reasoner.prepareReasoner();
+	} catch (OWLOntologyCreationException ooce) { 
+	    ooce.printStackTrace(); 
+	}
 
 	// get the instances of a class
-	OWLClass estud = manager.getOWLDataFactory().getOWLClass( URI.create( "http://alignapi.gforge.inria.fr/tutorial/tutorial2/ontology1.owl#Estudiante" ) );   
-	OWLClass person = manager.getOWLDataFactory().getOWLClass( URI.create( "http://alignapi.gforge.inria.fr/tutorial/tutorial2/ontology2.owl#Person" ) );   
-	OWLClass student = manager.getOWLDataFactory().getOWLClass( URI.create( "http://alignapi.gforge.inria.fr/tutorial/tutorial2/ontology2.owl#Student" ) );   
-	Set instances  = reasoner.getIndividuals( estud, false );
-	System.err.println("Pellet(Merged): There are "+instances.size()+" students "+estud.getURI());
+	OWLClass estud = manager.getOWLDataFactory().getOWLClass( IRI.create( "http://alignapi.gforge.inria.fr/tutorial/tutorial2/ontology1.owl#Estudiante" ) );   
+	OWLClass person = manager.getOWLDataFactory().getOWLClass( IRI.create( "http://alignapi.gforge.inria.fr/tutorial/tutorial2/ontology2.owl#Person" ) );   
+	OWLClass student = manager.getOWLDataFactory().getOWLClass( IRI.create( "http://alignapi.gforge.inria.fr/tutorial/tutorial2/ontology2.owl#Student" ) );   
+	Set<OWLNamedIndividual> instances  = reasoner.getInstances( estud, false ).getFlattened();
+	System.err.println("Pellet(Merged): There are "+instances.size()+" students "+estud.getIRI());
 
 	testPelletSubClass( manager, reasoner, estud, person );
 	testPelletSubClass( manager, reasoner, estud, student );
@@ -334,8 +335,8 @@ public class MyApp {
 	}
     }
 
-    public void testPelletSubClass( OWLOntologyManager manager, Reasoner reasoner, OWLDescription d1, OWLDescription d2 ) {
-	OWLAxiom axiom = manager.getOWLDataFactory().getOWLSubClassAxiom( d1, d2 );
+    public void testPelletSubClass( OWLOntologyManager manager, OWLReasoner reasoner, OWLClassExpression d1, OWLClassExpression d2 ) {
+	OWLAxiom axiom = manager.getOWLDataFactory().getOWLSubClassOfAxiom( d1, d2 );
 	boolean isit = reasoner.isEntailed( axiom );
 	if ( isit ) {
 	    System.out.println( "Pellet(Merged): "+d1+" is subclass of "+d2 );
@@ -344,7 +345,7 @@ public class MyApp {
 	}
     }
 
-    public void testIDDLSubClass( IDDLReasoner dreasoner, URI onto1, URI onto2, OWLDescription d1, OWLDescription d2 ) {
+    public void testIDDLSubClass( IDDLReasoner dreasoner, URI onto1, URI onto2, OWLClassExpression d1, OWLClassExpression d2 ) {
 	Alignment al2 = new ObjectAlignment();
 	try {
 	    al2.init( onto1, onto2 );
diff --git a/html/tutorial/tutorial2/index.html b/html/tutorial/tutorial2/index.html
index 73de40d4..6db7a7a8 100644
--- a/html/tutorial/tutorial2/index.html
+++ b/html/tutorial/tutorial2/index.html
@@ -3,7 +3,7 @@
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
-<title>Manipulating alignments in Java programs</title>
+<title>Exploiting alignments and reasoning</title>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <link rel="stylesheet" type="text/css" href="../../base.css" />
 <link rel="stylesheet" type="text/css" href="../../style.css" />
@@ -32,7 +32,7 @@ div.logic {
 </head>
 <body style="background-color: #FFFFFF;">
 
-<h1>Manipulating alignments in Java programs: advanced tutorial on the Alignment <abbr title="Application Programming Interface">API</abbr> and server</h1>
+<h1>Exploiting alignments and reasoning: advanced tutorial on the Alignment <abbr title="Application Programming Interface">API</abbr> and server</h1>
 
 <p>
 <dl>
@@ -61,9 +61,10 @@ This time, the tutorial is based on Java programming and using various
 related APIs.
 </p>
 <p>
-A more <a href="../tutorial1/index.html">simple tutorial</a> as well as
-  a small <a href="../tutorial1/server.html">server tutorial</a> are also available.</p>
-<p  style="border-top: 2px solid #AAAAAA;"><small>This tutorial has been designed for the Alignment API version 4.0.</small></p>
+Other tutorials are <a href="../index.html">available</a>.</p>
+<p  style="border-top: 2px solid #AAAAAA;"><small>This tutorial has
+    been designed for the Alignment API version 4.0. It is currently
+    incomplete due to the upgrade of Pellet to version 2.0.2 and IDDL.</small></p>
 	
 <h2>Preparation</h2>
 	
@@ -92,19 +93,23 @@ ontology. This is not a difficult task, the goal here is only to show
 how this could be achieved.
 </p>
 	
-<p>For that purpose, you have to develop a program in Java. This
-  programme can be compiled by:
+<p>For that purpose, you have to develop a program in Java. 
+We first define the CLASSPATH because a lot of external software is required
 <div class="fragment">
-$ javac -classpath ../../../lib/align.jar:../../../lib/procalign.jar:../../../lib/jena/jena.jar:../../../lib/jena/arq.jar:../../../lib/iddl/iddl.jar:../../../lib/pellet/pellet.jar MyApp.java
+$ setenv CLASSPATH ../../../lib/align.jar:../../../lib/procalign.jar:../../../lib/jena/jena.jar:../../../lib/jena/arq.jar:../../../lib/iddl/iddl.jar:../../../lib/pellet/pellet-core.jar:../../../lib/pellet/pellet-owlapiv3.jar:../../../lib/pellet/pellet-rules.jar:../../../lib/pellet/pellet-datatypes.jar:../../../lib/pellet/aterm-java-1.6.jar:../../../lib/pellet/pellet-query.jar:../../../lib/ontosim/ontosim.jar:../../../lib/pellet/pellet-el.jar:../../../lib/log4j/commons-logging.jar:../../../lib/log4j/log4j.jar:../../../lib/xerces/xercesImpl.jar:../../../lib/jena/iri.jar:../../../lib/jena/icu4j_3_4.jar:../../../lib/jena/concurrent.jar:../../../lib/xsdlib/relaxngDatatype.jar:../../../lib/xsdlib/xsdlib.jar:results
 </div>
-and run by:
+The list of jars is long, but at least it is explicit and you
+should be safe with this one.
+This programme can be compiled by:
 <div class="fragment">
-$ java -classpath .:../../../lib/align.jar:../../../lib/procalign.jar:../../../lib/jena/jena.jar:../../../lib/jena/arq.jar:../../../lib/iddl/iddl.jar:../../../lib/pellet/pellet.jar:../../../lib/ontosim/ontosim.jar:../../../lib/log4j/commons-logging.jar:../../../lib/log4j/log4j.jar:../../../lib/xerces/xercesImpl.jar:../../../lib/jena/iri.jar:../../../lib/jena/icu4j_3_4.jar:../../../lib/jena/concurrent.jar:../../../lib/pellet/relaxngDatatype.jar:../../../lib/pellet/xsdlib.jar MyApp
+$ javac -d results MyApp.java
 </div>
-The long list of jar is boring, but at least it is explicit and you
-should be safe with this one.
-<p>
 </p>
+<p>This
+  programme can be run by:
+<div class="fragment">
+$ java MyApp
+</div></p>
 You can start with the empty template <a href="Skeleton.java">Skeleton.java</a>.
 </p>
 
@@ -225,7 +230,7 @@ This can be done with the alignment API support.
 
 <div class="button">
   <input type="button" onclick="show('qu5')" value="Show solution 1"/>
-  <input type="button" onclick="show('qu6')" value="Show solution 2"/>
+  <!--input type="button" onclick="show('qu6')" value="Show solution 2"/-->
   <input type="button" onclick="hide('qu5');hide('qu6');" value="Hide solutions"/>
 </div>
 <div class="explain" id="qu5">
@@ -267,8 +272,8 @@ ontologies instead of the merged one.
 </p>
 <div class="button">
   <input type="button" onclick="show('qu7')" value="Show solution 1"/>
-  <input type="button" onclick="show('qu8')" value="Show solution 2"/>
-  <input type="button" onclick="show('qu9')" value="Show solution 3"/>
+  <!--input type="button" onclick="show('qu8')" value="Show solution 2"/>
+  <input type="button" onclick="show('qu9')" value="Show solution 3"/-->
   <input type="button" onclick="hide('qu7');hide('qu8');hide('qu9');" value="Hide solutions"/>
 </div>
 <div class="explain" id="qu7">
@@ -393,10 +398,10 @@ IDDL: Estudiante <= Person is not entailed
 IDDL: Estudiante <= Student is entailed
 </pre>
 	
-<h2>Full solution</h2>
+<!--h2>Full solution</h2>
 	
 <p>Do you want to see a possible solution?</p>
-<p>A full working solution is <a href="MyApp.java">MyApp.java</a>.</p>
+<p>A full working solution is <a href="MyApp.java">MyApp.java</a>.</p-->
 
 <hr />
 <small>
-- 
GitLab