diff --git a/src/fr/inrialpes/exmo/ontowrap/jena25/JENAOntology.java b/src/fr/inrialpes/exmo/ontowrap/jena25/JENAOntology.java
index 071bfb1c6953f78d7f6c9ad4355157da813e1376..26b30e45a4002ba2a68f3cdda8e56d9c1dd51ab5 100644
--- a/src/fr/inrialpes/exmo/ontowrap/jena25/JENAOntology.java
+++ b/src/fr/inrialpes/exmo/ontowrap/jena25/JENAOntology.java
@@ -21,6 +21,7 @@
 package fr.inrialpes.exmo.ontowrap.jena25;
 
 import java.net.URI;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
@@ -34,10 +35,8 @@ import com.hp.hpl.jena.ontology.OntClass;
 import com.hp.hpl.jena.ontology.OntModel;
 import com.hp.hpl.jena.ontology.OntProperty;
 import com.hp.hpl.jena.ontology.OntResource;
-import com.hp.hpl.jena.ontology.impl.AnnotationPropertyImpl;
 import com.hp.hpl.jena.rdf.model.Literal;
 import com.hp.hpl.jena.rdf.model.NodeIterator;
-import com.hp.hpl.jena.rdf.model.Property;
 import com.hp.hpl.jena.rdf.model.RDFNode;
 import com.hp.hpl.jena.rdf.model.Resource;
 import com.hp.hpl.jena.rdf.model.Statement;
@@ -48,11 +47,13 @@ import com.hp.hpl.jena.util.iterator.Map1;
 import com.hp.hpl.jena.rdf.model.impl.LiteralImpl;
 
 import fr.inrialpes.exmo.ontowrap.BasicOntology;
+import fr.inrialpes.exmo.ontowrap.HeavyLoadedOntology;
 import fr.inrialpes.exmo.ontowrap.LoadedOntology;
+import fr.inrialpes.exmo.ontowrap.OntologyFactory;
 import fr.inrialpes.exmo.ontowrap.OntowrapException;
 import fr.inrialpes.exmo.ontowrap.util.EntityFilter;
 
-public class JENAOntology extends BasicOntology<OntModel> implements LoadedOntology<OntModel>{
+public class JENAOntology extends BasicOntology<OntModel> implements HeavyLoadedOntology<OntModel>{
 
     // JE: this is not very Java 1.5...
     // This is because of the version of Jena we use apparently
@@ -197,6 +198,7 @@ public class JENAOntology extends BasicOntology<OntModel> implements LoadedOntol
     protected final static Map1<OntProperty,OntResource> mapProperty = new Map1<OntProperty,OntResource> () { public OntResource map1 ( OntProperty o ) { return o; } };
     protected final static Map1<OntClass,OntResource> mapClass = new Map1<OntClass,OntResource> () { public OntResource map1 ( OntClass o ) { return o; } };
     protected final static Map1<Individual,OntResource> mapInd = new Map1<Individual,OntResource> () { public OntResource map1 ( Individual o ) { return o; } };
+    protected final static Map1<OntClass,Object> mapClassToObj = new Map1<OntClass,Object> () { public Object map1 ( OntClass o ) { return o; } };
     
     
     public Set<OntResource> getEntities() {
@@ -274,6 +276,69 @@ public class JENAOntology extends BasicOntology<OntModel> implements LoadedOntol
 
     }
 
+    // TODO : check the capabilities for new version of Jena
+    public boolean getCapabilities(int Direct, int Asserted, int Named) {
+	return true;
+    }
+
+    public Set<OntClass> getClasses(Object i, int local, int asserted, int named) {
+	return ((Individual) i).listOntClasses(asserted==OntologyFactory.DIRECT).toSet();
+    }
+
+    public Set<OntProperty> getDataProperties(Object c, int local, int asserted, int named) {
+	return new EntityFilter<OntProperty>( ((OntClass) c).listDeclaredProperties(asserted==OntologyFactory.DIRECT).toSet(),this) {
+	    protected boolean isFiltered(OntProperty obj) {
+		return super.isFiltered(obj) && !obj.isDatatypeProperty();
+	    }
+	    
+	};
+    }
+
+    public Set<? extends OntResource> getDomain(Object p, int asserted) {
+	return ((OntProperty) p).listDomain().toSet();
+    }
+
+    public Set<?> getInstances(Object c, int local, int asserted, int named) {
+	if (c instanceof OntClass) {
+	    return ((OntClass) c).listInstances(asserted==OntologyFactory.DIRECT).toSet();
+	}
+	return null;
+	
+    }
+
+    public Set<OntProperty> getObjectProperties(Object c, int local, int asserted, int named) {
+	return new EntityFilter<OntProperty>( ((OntClass) c).listDeclaredProperties(asserted==OntologyFactory.DIRECT).toSet(),this) {
+	    protected boolean isFiltered(OntProperty obj) {
+		return super.isFiltered(obj) && !((OntProperty) obj).isObjectProperty();
+	    }  
+	};
+    }
+    public Set<OntProperty> getProperties(Object c, int local, int asserted, int named) {
+	return new EntityFilter<OntProperty>( ((OntClass) c).listDeclaredProperties(asserted==OntologyFactory.DIRECT).toSet(),this);
+    }
+
+    public Set<? extends OntResource> getRange(Object p, int asserted) {
+	return ((OntProperty) p).listRange().toSet();
+    }
+
+    public  Set<? extends Object> getSubClasses(Object c, int local, int asserted, int named) {
+	return ((OntClass) c).listSubClasses(asserted==OntologyFactory.DIRECT).toSet();
+    }
+
+
+    public Set<? extends OntProperty> getSubProperties(Object p, int local, int asserted, int named) {
+	return ((OntProperty) p).listSubProperties(asserted==OntologyFactory.DIRECT).toSet();
+    }
+
+  
+    public Set<OntClass> getSuperClasses(Object c, int local, int asserted, int named) {
+	return ((OntClass) c).listSuperClasses(asserted==OntologyFactory.DIRECT).toSet();
+    }
+
+    public Set<? extends OntProperty> getSuperProperties(Object p, int local, int asserted, int named) {
+	return ((OntProperty) p).listSuperProperties(asserted==OntologyFactory.DIRECT).toSet();
+    }
+
 
 }