You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by en...@apache.org on 2010/12/15 16:19:33 UTC

svn commit: r1049585 [1/2] - in /incubator/stanbol/trunk/kres: eu.iksproject.kres.api/src/main/java/eu/iksproject/kres/api/format/ eu.iksproject.kres.api/src/main/java/eu/iksproject/kres/api/manager/ontology/ eu.iksproject.kres.jersey/ eu.iksproject.kr...

Author: enridaga
Date: Wed Dec 15 15:19:32 2010
New Revision: 1049585

URL: http://svn.apache.org/viewvc?rev=1049585&view=rev
Log:
STANBOL-30 - Patch applied to update the code with some improvements done in the KReS module in the old IKS repository after the migration.

Added:
    incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ProvaResource.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/io/BlankOntologySource.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/util/OntologyConstants.java
Modified:
    incubator/stanbol/trunk/kres/eu.iksproject.kres.api/src/main/java/eu/iksproject/kres/api/format/KReSFormat.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.api/src/main/java/eu/iksproject/kres/api/manager/ontology/OntologyScope.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/pom.xml
    incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/JerseyEndpointApplication.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/manager/Recipe.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/GraphsResource.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/KReSSessionResource.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMRootResource.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMScopeOntologyResource.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMScopeResource.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/SemionRefactorerResource.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/util/OntologyRenderUtils.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/writers/OWLOntologyWriter.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/test/java/eu/iksproject/kres/jersey/JettyServerTest.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ConfigurationManagement.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ONManager.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/AbstractOntologySpaceImpl.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/CoreOntologySpaceImpl.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/CustomOntologySpaceImpl.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/OntologyScopeImpl.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/util/OntologyUtils.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/test/java/eu/iksproject/kres/manager/ontology/TestOntologyScope.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.ontologies/src/main/resources/ontologies/onm.owl
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/resources/RuleOntology/rmi_config.owl

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.api/src/main/java/eu/iksproject/kres/api/format/KReSFormat.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.api/src/main/java/eu/iksproject/kres/api/format/KReSFormat.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.api/src/main/java/eu/iksproject/kres/api/format/KReSFormat.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.api/src/main/java/eu/iksproject/kres/api/format/KReSFormat.java Wed Dec 15 15:19:32 2010
@@ -14,9 +14,9 @@ public class KReSFormat extends MediaTyp
 	
 	public static final MediaType OWL_XML_TYPE = new MediaType("application", "owl+xml");
 	
-	public static final String MANCHERSTER_OWL = "application/manchester+owl";
+	public static final String MANCHESTER_OWL = "application/manchester+owl";
 	
-	public static final MediaType MANCHERSTER_OWL_TYPE = new MediaType("application", "manchester+xml");
+	public static final MediaType MANCHESTER_OWL_TYPE = new MediaType("application", "manchester+xml");
 	
 	public static final String FUNCTIONAL_OWL = "application/functional+owl";
 	

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.api/src/main/java/eu/iksproject/kres/api/manager/ontology/OntologyScope.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.api/src/main/java/eu/iksproject/kres/api/manager/ontology/OntologyScope.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.api/src/main/java/eu/iksproject/kres/api/manager/ontology/OntologyScope.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.api/src/main/java/eu/iksproject/kres/api/manager/ontology/OntologyScope.java Wed Dec 15 15:19:32 2010
@@ -101,6 +101,21 @@ public interface OntologyScope extends S
 	public void setUp();
 
 	/**
+	 * Performs whatever operations are required for making sure the custom
+	 * space of this scope is aware of changes occurring in its core space, that
+	 * all session spaces are aware of changes in the custom space, and so on.
+	 * Typically, this includes updating all import statements in the top
+	 * ontologies for each space.<br>
+	 * <br>
+	 * This method is not intended for usage by ontology managers. Since its
+	 * invocation is supposed to be automatic, it should be invoked by whatever
+	 * classes are responsible for listening to changes in an ontology
+	 * scope/space. In the default implementation, it is the scope itself, yet
+	 * the method is left public in order to allow for external controllers.
+	 */
+	public void synchronizeSpaces();
+
+	/**
 	 * Performs the operations required for deactivating the ontology scope. In
 	 * general, this is not equivalent to finalizing the object for garbage
 	 * collection. It should be possible to activate the same ontology scope

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/pom.xml
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/pom.xml?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/pom.xml (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/pom.xml Wed Dec 15 15:19:32 2010
@@ -86,6 +86,13 @@
 				</exclusion>
 			</exclusions>
 		</dependency>
+		<!--
+		<dependency>
+			<groupId>com.sun.jersey.contribs</groupId>
+			<artifactId>jersey-multipart</artifactId>
+			<version>1.4</version>
+		</dependency>
+		-->
 		<dependency>
 			<groupId>javax.servlet</groupId>
 			<artifactId>servlet-api</artifactId>

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/JerseyEndpointApplication.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/JerseyEndpointApplication.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/JerseyEndpointApplication.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/JerseyEndpointApplication.java Wed Dec 15 15:19:32 2010
@@ -18,6 +18,7 @@ import eu.iksproject.kres.jersey.resourc
 import eu.iksproject.kres.jersey.resource.KReSSessionResource;
 import eu.iksproject.kres.jersey.resource.ONMOntResource;
 //import eu.iksproject.kres.jersey.resource.LinkDiscoveryResource;
+import eu.iksproject.kres.jersey.resource.ProvaResource;
 import eu.iksproject.kres.jersey.resource.RESTfulResource;
 import eu.iksproject.kres.jersey.resource.ONMRootResource;
 import eu.iksproject.kres.jersey.resource.ONMScopeOntologyResource;
@@ -76,6 +77,10 @@ public class JerseyEndpointApplication e
         classes.add(GraphsResource.class);
         classes.add(DocumentationResource.class);
         
+        
+        classes.add(ProvaResource.class);
+        
+        
 /* REST services */
 	classes.add(RESTfulResource.class);
 /* end rest services */

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/manager/Recipe.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/manager/Recipe.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/manager/Recipe.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/manager/Recipe.java Wed Dec 15 15:19:32 2010
@@ -90,7 +90,7 @@ public class Recipe extends NavigationMi
     				 KReSFormat.TURTLE,
     				 KReSFormat.OWL_XML, 
     				 KReSFormat.FUNCTIONAL_OWL, 
-    				 KReSFormat.MANCHERSTER_OWL,
+    				 KReSFormat.MANCHESTER_OWL,
     				 KReSFormat.RDF_JSON})
     public Response getRecipe(@PathParam("uri") String uri){
       try{
@@ -217,7 +217,7 @@ public class Recipe extends NavigationMi
     				 KReSFormat.TURTLE,
     				 KReSFormat.OWL_XML,
     				 KReSFormat.FUNCTIONAL_OWL,
-    				 KReSFormat.MANCHERSTER_OWL,
+    				 KReSFormat.MANCHESTER_OWL,
     				 KReSFormat.RDF_JSON})
     public Response addRecipe(@FormParam(value="recipe") String recipe,@FormParam(value="description") String description){
 

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/GraphsResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/GraphsResource.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/GraphsResource.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/GraphsResource.java Wed Dec 15 15:19:32 2010
@@ -74,7 +74,7 @@ public class GraphsResource extends Navi
 	@GET
 	@Path("/resume")
 	@Produces( {KReSFormat.FUNCTIONAL_OWL, 
-				KReSFormat.MANCHERSTER_OWL, 
+				KReSFormat.MANCHESTER_OWL, 
 				KReSFormat.OWL_XML, 
 				KReSFormat.RDF_XML,
 				KReSFormat.TURTLE,

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/KReSSessionResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/KReSSessionResource.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/KReSSessionResource.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/KReSSessionResource.java Wed Dec 15 15:19:32 2010
@@ -59,12 +59,9 @@ public class KReSSessionResource extends
 
 	@POST
 	@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
-	@Produces( { KReSFormat.FUNCTIONAL_OWL, 
-				 KReSFormat.MANCHERSTER_OWL, 
-				 KReSFormat.OWL_XML,
-				 KReSFormat.RDF_XML, 
-				 KReSFormat.TURTLE,
-				 KReSFormat.RDF_JSON})
+	@Produces(value = { KReSFormat.RDF_XML, KReSFormat.OWL_XML,
+			KReSFormat.TURTLE, KReSFormat.FUNCTIONAL_OWL,
+			KReSFormat.MANCHESTER_OWL, KReSFormat.RDF_JSON })
 	public Response createSession(@FormParam("scope") String scope,
 			@Context UriInfo uriInfo,
 			@Context HttpHeaders headers) {

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMRootResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMRootResource.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMRootResource.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMRootResource.java Wed Dec 15 15:19:32 2010
@@ -1,7 +1,5 @@
 package eu.iksproject.kres.jersey.resource;
 
-import java.util.LinkedList;
-import java.util.List;
 import java.util.Set;
 
 import javax.servlet.ServletContext;
@@ -9,6 +7,7 @@ import javax.ws.rs.DELETE;
 import javax.ws.rs.DefaultValue;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Context;
@@ -49,7 +48,7 @@ public class ONMRootResource extends Nav
 		this.servletContext = servletContext;
 		onm = (KReSONManager) this.servletContext
 				.getAttribute(KReSONManager.class.getName());
-		
+
 		if (onm == null) {
 			System.err
 					.println("[KReS] :: No KReS Ontology Network Manager provided by Servlet Context. Instantiating now...");
@@ -58,6 +57,27 @@ public class ONMRootResource extends Nav
 	}
 
 	/**
+	 * RESTful DELETE method that clears the entire scope registry and managed
+	 * ontology store.
+	 */
+	@DELETE
+	public void clearOntologies() {
+		// First clear the registry...
+		ScopeRegistry reg = onm.getScopeRegistry();
+		for (OntologyScope scope : reg.getRegisteredScopes())
+			reg.deregisterScope(scope);
+		// ...then clear the store.
+		// TODO : the other way around?
+		onm.getOntologyStore().clear();
+	}
+
+	@GET
+	@Path("/{param:.+}")
+	public Response echo(@PathParam("param") String s) {
+		return Response.ok(s).build();
+	}
+
+	/**
 	 * Default GET method for obtaining the set of (both active and, optionally,
 	 * inactive) ontology scopes currently registered with this instance of
 	 * KReS.
@@ -73,39 +93,77 @@ public class ONMRootResource extends Nav
 	 *         acceptable by the client.
 	 */
 	@GET
-	@Produces( { KReSFormat.FUNCTIONAL_OWL, 
-				 KReSFormat.MANCHERSTER_OWL, 
-				 KReSFormat.OWL_XML,
-				 KReSFormat.RDF_XML, 
-				 KReSFormat.TURTLE,
-				 KReSFormat.RDF_JSON})
+	@Produces(value = { KReSFormat.RDF_XML, KReSFormat.OWL_XML,
+			KReSFormat.TURTLE, KReSFormat.FUNCTIONAL_OWL,
+			KReSFormat.MANCHESTER_OWL, KReSFormat.RDF_JSON })
 	public Response getScopes(
 			@DefaultValue("false") @QueryParam("with-inactive") boolean inactive,
 			@Context HttpHeaders headers, @Context ServletContext servletContext) {
 
 		ScopeRegistry reg = onm.getScopeRegistry();
-		
+
 		Set<OntologyScope> scopes = inactive ? reg.getRegisteredScopes() : reg
 				.getActiveScopes();
-		
+
 		OWLOntology ontology = ScopeSetRenderer.getScopes(scopes);
 
 		return Response.ok(ontology).build();
 	}
-	
-	/**
-	 * RESTful DELETE method that clears the entire scope registry and managed
-	 * ontology store.
-	 */
-	@DELETE
-	public void clearOntologies() {
-		// First clear the registry...
-		ScopeRegistry reg = onm.getScopeRegistry();
-		for (OntologyScope scope : reg.getRegisteredScopes())
-			reg.deregisterScope(scope);
-		// ...then clear the store.
-		// TODO : the other way around?
-		onm.getOntologyStore().clear();
-	}
+
+	// @Path("upload")
+	// @Consumes(MediaType.MULTIPART_FORM_DATA)
+	// @POST
+	// public void uploadDumb(@FormParam("file") InputStream is) {
+	// Writer writer = new StringWriter();
+	//
+	// char[] buffer = new char[1024];
+	//
+	// try {
+	//
+	// Reader reader = new BufferedReader(
+	//
+	// new InputStreamReader(is, "UTF-8"));
+	//
+	// int n;
+	//
+	// while ((n = reader.read(buffer)) != -1) {
+	//
+	// writer.write(buffer, 0, n);
+	//
+	// }
+	// } catch (IOException ex) {
+	// throw new WebApplicationException(ex);
+	// } finally {
+	//
+	// try {
+	// is.close();
+	// } catch (IOException e) {
+	// throw new WebApplicationException(e);
+	// }
+	//
+	// }
+	// System.out.println(writer.toString());
+	// }
+	//
+	// @Path("formdata")
+	// @Consumes(MediaType.MULTIPART_FORM_DATA)
+	// @POST
+	// public void uploadUrlFormData(
+	// @FormDataParam("file") List<FormDataBodyPart> parts,
+	// @FormDataParam("submit") FormDataBodyPart submit)
+	// throws IOException, ParseException {
+	//
+	// System.out.println("XXXX: " + submit.getMediaType());
+	// System.out.println("XXXX: "
+	// + submit.getHeaders().getFirst("Content-Type"));
+	//
+	// for (FormDataBodyPart bp : parts) {
+	// System.out.println(bp.getMediaType());
+	// System.out.println(bp.getHeaders().get("Content-Disposition"));
+	// System.out.println(bp.getParameterizedHeaders().getFirst(
+	// "Content-Disposition").getParameters().get("name"));
+	// bp.cleanup();
+	// }
+	// }
 
 }

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMScopeOntologyResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMScopeOntologyResource.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMScopeOntologyResource.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMScopeOntologyResource.java Wed Dec 15 15:19:32 2010
@@ -1,5 +1,7 @@
 package eu.iksproject.kres.jersey.resource;
 
+import static javax.ws.rs.core.Response.Status.*;
+
 import java.net.URI;
 import java.util.Set;
 
@@ -9,14 +11,12 @@ import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
-import org.coode.owlapi.turtle.TurtleOntologyFormat;
 import org.semanticweb.owlapi.apibinding.OWLManager;
 import org.semanticweb.owlapi.io.RDFXMLOntologyFormat;
 import org.semanticweb.owlapi.model.IRI;
@@ -33,8 +33,8 @@ import eu.iksproject.kres.api.manager.on
 import eu.iksproject.kres.api.manager.ontology.OntologySpace;
 import eu.iksproject.kres.api.manager.ontology.OntologySpaceModificationException;
 import eu.iksproject.kres.api.manager.ontology.ScopeRegistry;
-import eu.iksproject.kres.manager.io.RootOntologySource;
 import eu.iksproject.kres.jersey.util.OntologyRenderUtils;
+import eu.iksproject.kres.manager.io.RootOntologySource;
 
 /**
  * This resource represents ontologies loaded within a scope.
@@ -70,7 +70,9 @@ public class ONMScopeOntologyResource ex
 	 *          ontology is not loaded within that scope.
 	 */
 	@GET
-	@Produces(value={KReSFormat.RDF_XML, KReSFormat.RDF_JSON, KReSFormat.FUNCTIONAL_OWL, KReSFormat.MANCHERSTER_OWL, KReSFormat.TURTLE})
+	@Produces(value = { KReSFormat.RDF_XML, KReSFormat.OWL_XML,
+			KReSFormat.TURTLE, KReSFormat.FUNCTIONAL_OWL,
+			KReSFormat.MANCHESTER_OWL, KReSFormat.RDF_JSON })
 	public Response getScopeOntology(@PathParam("scopeid") String scopeid,
 			@PathParam("uri") String ontologyid, @Context UriInfo uriInfo) {
 
@@ -80,76 +82,79 @@ public class ONMScopeOntologyResource ex
 
 		IRI sciri = IRI.create(uri);
 		IRI ontiri = IRI.create(ontologyid);
-//		System.err.println("Looking for ontology with id " + ontiri
-//				+ " in scope " + sciri + " ...");
+		
+		// TODO: hack (ma anche no)
+		if (!ontiri.isAbsolute())
+			ontiri = IRI.create(absur);
+			
 		ScopeRegistry reg = onm.getScopeRegistry();
 		OntologyScope scope = reg.getScope(sciri);
 		if (scope == null)
-			return Response.status(404).build();
+			return Response.status(NOT_FOUND).build();
+
+		/* BEGIN debug code, uncomment only for local testing */
+		// OWLOntology test = null, top = null;
+		// test = scope.getCustomSpace().getOntology(ontiri);
+		// System.out.println("Ontology " + ontiri);
+		// for (OWLImportsDeclaration imp : test.getImportsDeclarations())
+		// System.out.println("\timports " + imp.getIRI());
+		// top = scope.getCoreSpace().getTopOntology();
+		// System.out.println("Core root for scope " + scopeid);
+		// for (OWLImportsDeclaration imp : top.getImportsDeclarations())
+		// System.out.println("\timports " + imp.getIRI());
+		/* END debug code */
 
-		OntologySpace cs = scope.getCustomSpace();
-//		System.err.println("check custom");
-//		for (OWLOntology o : cs.getOntologies()) {
-//			System.err.println("\thas "+o);
-//		}
-//		System.err.println("check core");
-//		for (OWLOntology o : scope.getCoreSpace().getOntologies()) {
-//			System.err.println("\thas "+o);
-//		}
 		OWLOntology ont = null;
-		if (cs != null) {
-			ont = scope.getCustomSpace().getOntology(ontiri);
-		}
+		// By default, always try retrieving the ontology from the custom space
+		// first.
+		OntologySpace space = scope.getCustomSpace();
+		if (space == null)
+			space = scope.getCoreSpace();
+		if (space != null)
+			ont = space.getOntology(ontiri);
+
 		if (ont == null) {
-			ont = scope.getCoreSpace().getOntology(ontiri);
-		}
-		if (ont == null){
 			OWLOntologyManager man = OWLManager.createOWLOntologyManager();
-			final Set<OWLOntology> ontologies = scope.getSessionSpace(ontiri).getOntologies();
-			
+			final Set<OWLOntology> ontologies = scope.getSessionSpace(ontiri)
+					.getOntologies();
+
 			OWLOntologySetProvider provider = new OWLOntologySetProvider() {
-				
+
 				@Override
 				public Set<OWLOntology> getOntologies() {
-					System.out.println("ID SPACE : "+ontologies);
+					// System.out.println("ID SPACE : " + ontologies);
 					return ontologies;
 				}
 			};
 			OWLOntologyMerger merger = new OWLOntologyMerger(provider);
-			
-			
-			/*Set<OntologySpace> spaces = scope.getSessionSpaces();
-			for(OntologySpace space : spaces){
-				System.out.println("ID SPACE : "+space.getID());
-			}*/
-			
-			
+
+			/*
+			 * Set<OntologySpace> spaces = scope.getSessionSpaces();
+			 * for(OntologySpace space : spaces){
+			 * System.out.println("ID SPACE : "+space.getID()); }
+			 */
+
 			try {
 				ont = merger.createMergedOntology(man, ontiri);
 			} catch (OWLOntologyCreationException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
+				throw new WebApplicationException(e, INTERNAL_SERVER_ERROR);
 			}
-			
-			
+
 		}
 		if (ont == null) {
-			return Response.status(404).build();
+			return Response.status(NOT_FOUND).build();
 		}
 		String res = null;
 		try {
 			res = OntologyRenderUtils.renderOntology(ont,
-					new RDFXMLOntologyFormat(),sciri.toString(),onm);
+					new RDFXMLOntologyFormat(), sciri.toString(), onm);
 		} catch (OWLOntologyStorageException e) {
-			e.printStackTrace();
-			return Response.status(500).build();
+			throw new WebApplicationException(e, INTERNAL_SERVER_ERROR);
 		}
 		return Response.ok(res).build();
 
 	}
 
-	
-
 	/**
 	 * Unloads an ontology from an ontology scope.
 	 * 
@@ -163,7 +168,7 @@ public class ONMScopeOntologyResource ex
 			@PathParam("uri") String ontologyid, @Context UriInfo uriInfo,
 			@Context HttpHeaders headers) {
 
-		if (ontologyid != null || !ontologyid.equals("")) {
+		if (ontologyid != null && !ontologyid.equals("")) {
 			String scopeURI = uriInfo.getAbsolutePath().toString().replace(
 					ontologyid, "");
 			System.out.println("Received DELETE request for ontology "
@@ -183,7 +188,7 @@ public class ONMScopeOntologyResource ex
 					reg.setScopeActive(scopeIri, true);
 				} catch (OntologySpaceModificationException e) {
 					reg.setScopeActive(scopeIri, true);
-					throw new WebApplicationException(e, 500);
+					throw new WebApplicationException(e, INTERNAL_SERVER_ERROR);
 				}
 			}
 		}

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMScopeResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMScopeResource.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMScopeResource.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ONMScopeResource.java Wed Dec 15 15:19:32 2010
@@ -1,9 +1,6 @@
 package eu.iksproject.kres.jersey.resource;
 
-import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
-import static javax.ws.rs.core.Response.Status.CONFLICT;
-import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
-import static javax.ws.rs.core.Response.Status.NO_CONTENT;
+import static javax.ws.rs.core.Response.Status.*;
 
 import javax.servlet.ServletContext;
 import javax.ws.rs.Consumes;
@@ -24,13 +21,11 @@ import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
-import org.coode.owlapi.turtle.TurtleOntologyFormat;
-import org.semanticweb.owlapi.io.RDFXMLOntologyFormat;
 import org.semanticweb.owlapi.model.IRI;
 import org.semanticweb.owlapi.model.OWLOntology;
 import org.semanticweb.owlapi.model.OWLOntologyCreationException;
-import org.semanticweb.owlapi.model.OWLOntologyStorageException;
 
+import eu.iksproject.kres.api.format.KReSFormat;
 import eu.iksproject.kres.api.manager.DuplicateIDException;
 import eu.iksproject.kres.api.manager.KReSONManager;
 import eu.iksproject.kres.api.manager.ontology.OntologyInputSource;
@@ -39,7 +34,6 @@ import eu.iksproject.kres.api.manager.on
 import eu.iksproject.kres.api.manager.ontology.OntologySpace;
 import eu.iksproject.kres.api.manager.ontology.ScopeRegistry;
 import eu.iksproject.kres.api.manager.ontology.UnmodifiableOntologySpaceException;
-import eu.iksproject.kres.jersey.util.OntologyRenderUtils;
 import eu.iksproject.kres.manager.ONManager;
 import eu.iksproject.kres.manager.io.OntologyRegistryIRISource;
 import eu.iksproject.kres.manager.io.RootOntologyIRISource;
@@ -64,7 +58,7 @@ public class ONMScopeResource extends Na
 					.println("[KReS] :: No KReS Ontology Network Manager provided by Servlet Context. Instantiating now...");
 			onm = new ONManager();
 		}
-		
+
 	}
 
 	@DELETE
@@ -82,7 +76,9 @@ public class ONMScopeResource extends Na
 	}
 
 	@GET
-	@Produces("application/rdf+xml")
+	@Produces(value = { KReSFormat.RDF_XML, KReSFormat.OWL_XML,
+			KReSFormat.TURTLE, KReSFormat.FUNCTIONAL_OWL,
+			KReSFormat.MANCHESTER_OWL, KReSFormat.RDF_JSON })
 	public Response getTopOntology(@Context UriInfo uriInfo,
 			@Context HttpHeaders headers, @Context ServletContext servletContext) {
 
@@ -100,64 +96,7 @@ public class ONMScopeResource extends Na
 		if (ont == null)
 			ont = scope.getCoreSpace().getTopOntology();
 
-		String s = null;
-		try {
-			s = OntologyRenderUtils.renderOntology(ont,
-					new RDFXMLOntologyFormat(), uriInfo.getAbsolutePath()
-							.toString(), onm);
-		} catch (OWLOntologyStorageException e1) {
-			throw new WebApplicationException(e1, INTERNAL_SERVER_ERROR);
-		}
-
-		// OWLOntologyManager tmpmgr = OWLManager.createOWLOntologyManager();
-		// StringDocumentTarget tgt = new StringDocumentTarget();
-		// try {
-		// tmpmgr.saveOntology(ont, new RDFXMLOntologyFormat(), tgt);
-		// } catch (OWLOntologyStorageException e) {
-		// e.printStackTrace();
-		// return Response.status(INTERNAL_SERVER_ERROR).build();
-		// }
-		return Response.ok(s).build();
-
-	}
-
-	@GET
-	@Produces("text/turtle")
-	public Response getTopOntologyT(@Context UriInfo uriInfo,
-			@Context HttpHeaders headers, @Context ServletContext servletContext) {
-
-		ScopeRegistry reg = onm.getScopeRegistry();
-
-		OntologyScope scope = reg.getScope(IRI
-				.create(uriInfo.getAbsolutePath()));
-		if (scope == null)
-			return Response.status(NO_CONTENT).build();
-
-		OntologySpace cs = scope.getCustomSpace();
-		OWLOntology ont = null;
-		if (cs != null)
-			ont = scope.getCustomSpace().getTopOntology();
-		if (ont == null)
-			ont = scope.getCoreSpace().getTopOntology();
-
-		String s = null;
-		try {
-			s = OntologyRenderUtils.renderOntology(ont,
-					new TurtleOntologyFormat(), uriInfo.getAbsolutePath()
-							.toString(), onm);
-		} catch (OWLOntologyStorageException e1) {
-			throw new WebApplicationException(e1, INTERNAL_SERVER_ERROR);
-		}
-
-		// OWLOntologyManager tmpmgr = OWLManager.createOWLOntologyManager();
-		// StringDocumentTarget tgt = new StringDocumentTarget();
-		// try {
-		// tmpmgr.saveOntology(ont, new TurtleOntologyFormat(), tgt);
-		// } catch (OWLOntologyStorageException e) {
-		// e.printStackTrace();
-		// return Response.status(INTERNAL_SERVER_ERROR).build();
-		// }
-		return Response.ok(s).build();
+		return Response.ok(ont).build();
 
 	}
 

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ProvaResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ProvaResource.java?rev=1049585&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ProvaResource.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/ProvaResource.java Wed Dec 15 15:19:32 2010
@@ -0,0 +1,21 @@
+package eu.iksproject.kres.jersey.resource;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Response;
+
+@Path("/prova")
+public class ProvaResource extends NavigationMixin {
+
+	@GET
+	public Response prova() {
+		return Response.ok("ci hai provato").build();
+	}
+	
+	@GET
+	@Path("/saluto")
+	public Response saluto() {
+		return Response.ok("ciao").build();
+	}
+	
+}

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/SemionRefactorerResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/SemionRefactorerResource.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/SemionRefactorerResource.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/resource/SemionRefactorerResource.java Wed Dec 15 15:19:32 2010
@@ -120,7 +120,7 @@ public class SemionRefactorerResource ex
 	@Consumes(MediaType.MULTIPART_FORM_DATA)
 	@Produces(value = {KReSFormat.TURTLE, 
 				KReSFormat.FUNCTIONAL_OWL, 
-				KReSFormat.MANCHERSTER_OWL, 
+				KReSFormat.MANCHESTER_OWL, 
 				KReSFormat.RDF_XML,
 				KReSFormat.OWL_XML,
 				KReSFormat.RDF_JSON})
@@ -192,7 +192,7 @@ public class SemionRefactorerResource ex
 	@Consumes(MediaType.MULTIPART_FORM_DATA)
 	@Produces({KReSFormat.TURTLE, 
 				KReSFormat.FUNCTIONAL_OWL, 
-				KReSFormat.MANCHERSTER_OWL, 
+				KReSFormat.MANCHESTER_OWL, 
 				KReSFormat.RDF_XML,
 				KReSFormat.OWL_XML,
 				KReSFormat.RDF_JSON})

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/util/OntologyRenderUtils.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/util/OntologyRenderUtils.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/util/OntologyRenderUtils.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/util/OntologyRenderUtils.java Wed Dec 15 15:19:32 2010
@@ -148,7 +148,7 @@ public class OntologyRenderUtils {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
 			}
-		} else if (format.equals(KReSFormat.MANCHERSTER_OWL)) {
+		} else if (format.equals(KReSFormat.MANCHESTER_OWL)) {
 			try {
 				tmpmgr.saveOntology(o2,
 						new ManchesterOWLSyntaxOntologyFormat(), tgt);

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/writers/OWLOntologyWriter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/writers/OWLOntologyWriter.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/writers/OWLOntologyWriter.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/main/java/eu/iksproject/kres/jersey/writers/OWLOntologyWriter.java Wed Dec 15 15:19:32 2010
@@ -1,13 +1,9 @@
 package eu.iksproject.kres.jersey.writers;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
-import java.util.Iterator;
 
 import javax.servlet.ServletContext;
 import javax.ws.rs.Produces;
@@ -19,15 +15,11 @@ import javax.ws.rs.ext.MessageBodyWriter
 import javax.ws.rs.ext.Provider;
 
 import org.apache.clerezza.rdf.core.MGraph;
-import org.apache.clerezza.rdf.core.Triple;
 import org.apache.clerezza.rdf.core.serializedform.Serializer;
 import org.apache.clerezza.rdf.core.serializedform.SupportedFormat;
-import org.apache.clerezza.rdf.jena.serializer.JenaSerializerProvider;
 import org.apache.clerezza.rdf.rdfjson.serializer.RdfJsonSerializingProvider;
-import org.apache.commons.lang.SystemUtils;
 import org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxOntologyFormat;
 import org.coode.owlapi.turtle.TurtleOntologyFormat;
-import org.json.simple.JSONArray;
 import org.semanticweb.owlapi.apibinding.OWLManager;
 import org.semanticweb.owlapi.io.OWLFunctionalSyntaxOntologyFormat;
 import org.semanticweb.owlapi.io.OWLXMLOntologyFormat;
@@ -35,32 +27,33 @@ import org.semanticweb.owlapi.io.RDFXMLO
 import org.semanticweb.owlapi.model.OWLOntology;
 import org.semanticweb.owlapi.model.OWLOntologyManager;
 import org.semanticweb.owlapi.model.OWLOntologyStorageException;
-
-import com.hp.hpl.jena.rdf.model.Model;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import eu.iksproject.kres.api.format.KReSFormat;
-import eu.iksproject.kres.shared.transformation.JenaToOwlConvert;
 import eu.iksproject.kres.shared.transformation.OWLAPIToClerezzaConverter;
 
 @Provider
-@Produces( { KReSFormat.RDF_XML, KReSFormat.OWL_XML, KReSFormat.MANCHERSTER_OWL, 
-	KReSFormat.FUNCTIONAL_OWL, KReSFormat.TURTLE, KReSFormat.RDF_JSON})
+@Produces( { KReSFormat.RDF_XML, KReSFormat.OWL_XML, KReSFormat.MANCHESTER_OWL,
+		KReSFormat.FUNCTIONAL_OWL, KReSFormat.TURTLE, KReSFormat.RDF_JSON })
 public class OWLOntologyWriter implements MessageBodyWriter<OWLOntology> {
 
 	protected Serializer serializer;
-	
+
 	protected ServletContext servletContext;
-	
+
 	public OWLOntologyWriter(@Context ServletContext servletContext) {
+		Logger log = LoggerFactory.getLogger(getClass());
 		this.servletContext = servletContext;
-		System.out.println("setted context "+servletContext);
-		serializer = (Serializer) this.servletContext.getAttribute(Serializer.class.getName());
-		if(serializer == null){
-			System.out.println("Serializer not found in ServletContext");
+		log.info("Setting context to " + servletContext);
+		serializer = (Serializer) this.servletContext
+				.getAttribute(Serializer.class.getName());
+		if (serializer == null) {
+			log.info("Serializer not found in Servlet context.");
 			serializer = new Serializer();
 		}
 	}
-	
+
 	@Override
 	public long getSize(OWLOntology arg0, Class<?> arg1, Type arg2,
 			Annotation[] arg3, MediaType arg4) {
@@ -70,7 +63,7 @@ public class OWLOntologyWriter implement
 
 	@Override
 	public boolean isWriteable(Class<?> type, Type genericType,
-            Annotation[] annotations, MediaType mediaType) {
+			Annotation[] annotations, MediaType mediaType) {
 		return OWLOntology.class.isAssignableFrom(type);
 	}
 
@@ -79,65 +72,56 @@ public class OWLOntologyWriter implement
 			Annotation[] arg3, MediaType mediaType,
 			MultivaluedMap<String, Object> arg5, OutputStream out)
 			throws IOException, WebApplicationException {
-		
-		
-			OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
-
-			
-			System.out.println("KReS FORMAT!!! : "+mediaType);
-			System.out.println("KReS FORMAT 2!!! : "+mediaType.getType());
-		    if(mediaType.toString().equals(KReSFormat.RDF_XML)){
-		    	try {
-		    		System.out.println("RDF/XML!!!");
-					manager.saveOntology(ontology, new RDFXMLOntologyFormat(), out);
-				} catch (OWLOntologyStorageException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}
-		    }
-		    else if(mediaType.toString().equals(KReSFormat.OWL_XML)){
-		    	try {
-					manager.saveOntology(ontology, new OWLXMLOntologyFormat(), out);
-				} catch (OWLOntologyStorageException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}
-		    }
-		    else if(mediaType.toString().equals(KReSFormat.MANCHERSTER_OWL)){
-		    	try {
-					manager.saveOntology(ontology, new ManchesterOWLSyntaxOntologyFormat(), out);
-				} catch (OWLOntologyStorageException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}
-		    }
-		    else if(mediaType.toString().equals(KReSFormat.FUNCTIONAL_OWL)){
-		    	try {
-					manager.saveOntology(ontology, new OWLFunctionalSyntaxOntologyFormat(), out);
-				} catch (OWLOntologyStorageException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}
-		    }
-		    else if(mediaType.toString().equals(KReSFormat.TURTLE)){
-		    	try {
-					manager.saveOntology(ontology, new TurtleOntologyFormat(), out);
-				} catch (OWLOntologyStorageException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}
-		    }
-		    else if(mediaType.toString().equals(KReSFormat.RDF_JSON)){
-		    	 
-		    	MGraph mGraph = OWLAPIToClerezzaConverter.owlOntologyToClerezzaMGraph(ontology);
-	    		
-		    	RdfJsonSerializingProvider provider = new RdfJsonSerializingProvider();
-	    		provider.serialize(out, mGraph, SupportedFormat.RDF_JSON);
-				
-		    }
-		
-		    out.flush();
+
+		Logger log = LoggerFactory.getLogger(getClass());
+		OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
+
+		log.debug("Rendering ontology " + ontology.getOntologyID()
+				+ "to KReS format " + mediaType);
+
+		if (mediaType.toString().equals(KReSFormat.RDF_XML)) {
+			try {
+				manager.saveOntology(ontology, new RDFXMLOntologyFormat(), out);
+			} catch (OWLOntologyStorageException e) {
+				log.error("Failed to store ontology for rendering.", e);
+			}
+		} else if (mediaType.toString().equals(KReSFormat.OWL_XML)) {
+			try {
+				manager.saveOntology(ontology, new OWLXMLOntologyFormat(), out);
+			} catch (OWLOntologyStorageException e) {
+				log.error("Failed to store ontology for rendering.", e);
+			}
+		} else if (mediaType.toString().equals(KReSFormat.MANCHESTER_OWL)) {
+			try {
+				manager.saveOntology(ontology,
+						new ManchesterOWLSyntaxOntologyFormat(), out);
+			} catch (OWLOntologyStorageException e) {
+				log.error("Failed to store ontology for rendering.", e);
+			}
+		} else if (mediaType.toString().equals(KReSFormat.FUNCTIONAL_OWL)) {
+			try {
+				manager.saveOntology(ontology,
+						new OWLFunctionalSyntaxOntologyFormat(), out);
+			} catch (OWLOntologyStorageException e) {
+				log.error("Failed to store ontology for rendering.", e);
+			}
+		} else if (mediaType.toString().equals(KReSFormat.TURTLE)) {
+			try {
+				manager.saveOntology(ontology, new TurtleOntologyFormat(), out);
+			} catch (OWLOntologyStorageException e) {
+				log.error("Failed to store ontology for rendering.", e);
+			}
+		} else if (mediaType.toString().equals(KReSFormat.RDF_JSON)) {
+
+			MGraph mGraph = OWLAPIToClerezzaConverter
+					.owlOntologyToClerezzaMGraph(ontology);
+
+			RdfJsonSerializingProvider provider = new RdfJsonSerializingProvider();
+			provider.serialize(out, mGraph, SupportedFormat.RDF_JSON);
+
+		}
+
+		out.flush();
 	}
 
-	
 }

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/test/java/eu/iksproject/kres/jersey/JettyServerTest.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/test/java/eu/iksproject/kres/jersey/JettyServerTest.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/test/java/eu/iksproject/kres/jersey/JettyServerTest.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.jersey/src/test/java/eu/iksproject/kres/jersey/JettyServerTest.java Wed Dec 15 15:19:32 2010
@@ -2,7 +2,10 @@ package eu.iksproject.kres.jersey;
 
 import static org.junit.Assert.*;
 
+import java.io.File;
+
 import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
 
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -10,7 +13,9 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 
 import com.sun.jersey.api.client.Client;
+import com.sun.jersey.api.client.ClientResponse;
 import com.sun.jersey.api.client.WebResource;
+import com.sun.jersey.api.client.ClientResponse.Status;
 import com.sun.jersey.api.representation.Form;
 
 import eu.iksproject.kres.api.format.KReSFormat;
@@ -85,6 +90,47 @@ public class JettyServerTest {
 
 	}
 
+	@Test
+	public void testEcho() throws Exception {
+
+		boolean eq = true;
+
+		Client client = Client.create();
+		WebResource resUpload = client.resource(__TEST_URI + "prova");
+
+		resUpload.get(String.class);
+		ClientResponse head = resUpload.head();
+		int status = head.getStatus();
+		head.close();
+		eq &= status == Status.OK.getStatusCode();
+
+		resUpload = client.resource(__TEST_URI + "prova/saluto");
+
+		resUpload.get(String.class);
+		head = resUpload.head();
+		status = head.getStatus();
+		head.close();
+		eq &= status == Status.OK.getStatusCode();
+
+		client.destroy();
+
+		assertTrue(eq);
+
+	}
+
+	public void testOntologyUpload() throws Exception {
+		WebResource resUpload = client.resource(_ROOT_URI + "/upload");
+
+		Form f = new Form();
+		f
+				.add("file", new File(
+						"./src/main/resources/TestFile/ProvaParent.owl"));
+
+		//resUpload.type(MediaType.MULTIPART_FORM_DATA).post();
+
+		assertTrue(true);
+	}
+
 	/**
 	 * Tests that the creation of active and inactive scopes is reflected in the
 	 * RDF version of the scope set, whether it is set to display all scopes or
@@ -92,11 +138,12 @@ public class JettyServerTest {
 	 * 
 	 * @throws Exception
 	 */
-//	@Test
+	// @Test
 	public void testActiveVsAll() throws Exception {
 		// The needed Web resources to GET from.
 		WebResource resActive = client.resource(_ROOT_URI);
-		WebResource resAllScopes = client.resource(_ROOT_URI + "?with-inactive=true");
+		WebResource resAllScopes = client.resource(_ROOT_URI
+				+ "?with-inactive=true");
 		// Put a simple, inactive scope.
 		client.resource(SCOPE_USER_URI + "?coreont=" + ONT_FOAF_URI).put(
 				String.class);
@@ -119,8 +166,8 @@ public class JettyServerTest {
 
 	@Test
 	public void testGetScopes() throws Exception {
-		String r = ontologyResource.accept(KReSFormat.RDF_XML).get(
-				String.class);
+		String r = ontologyResource.accept(KReSFormat.RDF_XML)
+				.get(String.class);
 		assertTrue(r
 				.contains("<imports rdf:resource=\"http://www.ontologydesignpatterns.org/schemas/meta.owl\"/>"));
 		r = ontologyResource.accept(KReSFormat.TURTLE).get(String.class);
@@ -143,7 +190,7 @@ public class JettyServerTest {
 		assertTrue(true);
 	}
 
-//	@Test
+	// @Test
 	public void testLocking() throws Exception {
 		// Create a scope with a core ontology and a custom registry.
 		String r;
@@ -160,8 +207,7 @@ public class JettyServerTest {
 			f.add("location", ONT_PIZZA_URI);
 			f.add("registry", "false");
 			scopeResourceTest2.post(String.class, f);
-			r = scopeResourceTest2.accept(KReSFormat.RDF_XML).get(
-					String.class);
+			r = scopeResourceTest2.accept(KReSFormat.RDF_XML).get(String.class);
 			// fail("Addition succeded on existing scope with supposedly locked core space!");
 		} catch (WebApplicationException ex) {
 			assertTrue(r != null);
@@ -173,15 +219,15 @@ public class JettyServerTest {
 
 	}
 
-//	@Test
+	// @Test
 	public void testSessionCreation() {
 		WebResource resource = client.resource(__TEST_URI + "session");
 		String r = resource.accept(KReSFormat.RDF_XML).post(String.class);
-		//System.err.println(r);
+		// System.err.println(r);
 		assertTrue(true);
 	}
 
-//	@Test
+	// @Test
 	public void testScopeManagement() throws Exception {
 		String rootIdToken = "rdf:about=\"http://localhost:9999/ontology/Pippo%20Baudo/custom/root.owl\"";
 		String importORToken = "<owl:imports rdf:resource=\"http://www.ontologydesignpatterns.org/cp/owl/objectrole.owl\"/>";
@@ -199,7 +245,7 @@ public class JettyServerTest {
 						.contains("rdf:type rdf:resource=\"http://kres.iks-project.eu/ontology/onm/meta.owl#Scope\""));
 		// Check that the top ontology has the correct ID and imports objectrole
 		r = scopeResourceTest1.accept(KReSFormat.RDF_XML).get(String.class);
-		//System.err.println(r);
+		// System.err.println(r);
 		assertTrue(r.contains(rootIdToken));
 		assertTrue(r.contains("http://xmlns.com/foaf/spec/index.rdf"));
 		// Now add an ontology

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ConfigurationManagement.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ConfigurationManagement.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ConfigurationManagement.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ConfigurationManagement.java Wed Dec 15 15:19:32 2010
@@ -1,6 +1,9 @@
 package eu.iksproject.kres.manager;
 
+import static eu.iksproject.kres.manager.util.OntologyConstants.*;
+
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
@@ -8,26 +11,86 @@ import java.util.Set;
 import org.semanticweb.owlapi.apibinding.OWLManager;
 import org.semanticweb.owlapi.model.IRI;
 import org.semanticweb.owlapi.model.OWLClass;
+import org.semanticweb.owlapi.model.OWLClassExpression;
 import org.semanticweb.owlapi.model.OWLDataFactory;
 import org.semanticweb.owlapi.model.OWLDataProperty;
 import org.semanticweb.owlapi.model.OWLIndividual;
 import org.semanticweb.owlapi.model.OWLLiteral;
 import org.semanticweb.owlapi.model.OWLNamedIndividual;
+import org.semanticweb.owlapi.model.OWLObjectProperty;
 import org.semanticweb.owlapi.model.OWLOntology;
 
+/**
+ * <p>
+ * This is the helper class for parsing the ONM configuration ontology. The
+ * configuration ontology should import the following:
+ * </p>
+ * <ul>
+ * <li>http://ontologydesignpatterns.org/ont/iks/kres/onm.owl</li>
+ * </ul>
+ * 
+ * <p>
+ * and must use the following vocabs:
+ * </p>
+ * <ul>
+ * <li>http://kres.iks-project.eu/ontology/meta/onm.owl#Scope : defines a scope</li>
+ * <li>http://kres.iks-project.eu/ontology/meta/onm.owl#activateOnStart :
+ * activate the scope on startup</li>
+ * <li>http://kres.iks-project.eu/ontology/meta/onm.owl#usesCoreOntology :
+ * relates a scope to an ontology to be added in the core space</li>
+ * <li>http://kres.iks-project.eu/ontology/meta/onm.owl#usesCoreLibrary :
+ * relates a scope to a library of ontologies to be added in the core space</li>
+ * <li>http://kres.iks-project.eu/ontology/meta/onm.owl#usesCustomOntology :
+ * relates a scope to an ontology to be added in the custom space</li>
+ * <li>http://kres.iks-project.eu/ontology/meta/onm.owl#usesCustomLibrary :
+ * relates scope to a library of ontologies to be added in the custom space</li>
+ * <li>
+ * http://www.ontologydesignpatterns.org/cpont/codo/coddata.owl#OntologyLibrary
+ * : the class of a library</li>
+ * <li>http://www.ontologydesignpatterns.org/schemas/meta.owl#hasOntology : to
+ * relate a library to an ontology</li>
+ * </ul>
+ * 
+ * @author alessandro
+ * @author enridaga
+ */
 public class ConfigurationManagement {
 
 	private static OWLDataFactory _df = OWLManager.getOWLDataFactory();
 
 	private static final String[] EMPTY_IRI_ARRAY = new String[0];
 
-	private static final OWLClass cScope = _df.getOWLClass(IRI
-			.create("http://kres.iks-project.eu/ontology/meta/onm.owl#Scope"));
+	private static final OWLClass cScope = _df.getOWLClass(IRI.create(NS_ONM
+			+ "Scope"));
+
+	private static final OWLClass cLibrary = _df
+			.getOWLClass(IRI
+					.create("http://www.ontologydesignpatterns.org/cpont/codo/coddata.owl#OntologyLibrary"));
 
 	private static final OWLDataProperty activateOnStart = _df
-			.getOWLDataProperty(IRI
-					.create("http://kres.iks-project.eu/ontology/meta/onm.owl#activateOnStart"));
+			.getOWLDataProperty(IRI.create(NS_ONM + "activateOnStart"));
+
+	private static final OWLObjectProperty usesCoreOntology = _df
+			.getOWLObjectProperty(IRI.create(NS_ONM + "usesCoreOntology"));
+
+	private static final OWLObjectProperty usesCoreLibrary = _df
+			.getOWLObjectProperty(IRI.create(NS_ONM + "usesCoreLibrary"));
+
+	private static final OWLObjectProperty usesCustomOntology = _df
+			.getOWLObjectProperty(IRI.create(NS_ONM + "usesCustomOntology"));
+
+	private static final OWLObjectProperty usesCustomLibrary = _df
+			.getOWLObjectProperty(IRI.create(NS_ONM + "usesCustomLibrary"));
+
+	private static final OWLObjectProperty libraryHasOntology = _df
+			.getOWLObjectProperty(IRI.create(NS_ONM + "hasOntology"));
 
+	/**
+	 * Get the list of scopes to activate on startup
+	 * 
+	 * @param config
+	 * @return
+	 */
 	public static String[] getScopesToActivate(OWLOntology config) {
 
 		Set<OWLIndividual> scopes = cScope.getIndividuals(config);
@@ -52,4 +115,159 @@ public class ConfigurationManagement {
 		return result.toArray(EMPTY_IRI_ARRAY);
 	}
 
+	/**
+	 * To get all the instances of Scope in this configuration
+	 * 
+	 * @param config
+	 * @return
+	 */
+	public static String[] getScopes(OWLOntology config) {
+		Set<OWLIndividual> scopes = cScope.getIndividuals(config);
+		List<String> result = new ArrayList<String>();
+		for (OWLIndividual iScope : scopes) {
+			for (OWLClassExpression sce : iScope.getTypes(config)) {
+				if (sce.containsConjunct(cScope)) {
+					if (iScope.isNamed()) {
+						result.add(((OWLNamedIndividual) iScope).getIRI()
+								.toString());
+					}
+				}
+			}
+		}
+		return result.toArray(EMPTY_IRI_ARRAY);
+	}
+
+	/**
+	 * Utility method to get all the values of an object property of a Scope
+	 * 
+	 * @param ontology
+	 * @param individualIRI
+	 * @param op
+	 * @return
+	 */
+	private static String[] getScopeObjectPropertyValues(OWLOntology ontology,
+			String individualIRI, OWLObjectProperty op) {
+		Set<OWLIndividual> scopes = cScope.getIndividuals(ontology);
+		List<String> result = new ArrayList<String>();
+
+		OWLIndividual iiScope = null;
+
+		// Optimised loop.
+		for (OWLIndividual ind : scopes) {
+			if (ind.isAnonymous())
+				continue;
+			if (((OWLNamedIndividual) ind).getIRI().toString().equals(
+					individualIRI)) {
+				iiScope = ind;
+				break;
+			}
+		}
+
+		if (iiScope != null) {
+
+		}
+
+		for (OWLIndividual iScope : scopes) {
+			if (iScope.isNamed()) {
+				if (((OWLNamedIndividual) iScope).getIRI().toString().equals(
+						individualIRI)) {
+					Set<OWLIndividual> values = iScope.getObjectPropertyValues(
+							op, ontology);
+
+					Iterator<OWLIndividual> it = values.iterator();
+					while (it.hasNext()) {
+						OWLIndividual i = it.next();
+						if (i.isNamed())
+							result.add(((OWLNamedIndividual) i).getIRI()
+									.toString());
+					}
+				}
+			}
+		}
+
+		return result.toArray(EMPTY_IRI_ARRAY);
+	}
+
+	/**
+	 * Utility method to get all the values of a property from a Library subject
+	 * 
+	 * @param ontology
+	 * @param individualIRI
+	 * @param op
+	 * @return
+	 */
+	private static String[] getLibraryObjectPropertyValues(
+			OWLOntology ontology, String individualIRI, OWLObjectProperty op) {
+		Set<OWLIndividual> scopes = cLibrary.getIndividuals(ontology);
+		List<String> result = new ArrayList<String>();
+
+		for (OWLIndividual iLibrary : scopes) {
+			if (iLibrary.isNamed()) {
+				if (((OWLNamedIndividual) iLibrary).getIRI().toString().equals(
+						individualIRI)) {
+					Set<OWLIndividual> values = iLibrary
+							.getObjectPropertyValues(op, ontology);
+
+					Iterator<OWLIndividual> it = values.iterator();
+					while (it.hasNext()) {
+						OWLIndividual i = it.next();
+						if (i.isNamed())
+							result.add(((OWLNamedIndividual) iLibrary).getIRI()
+									.toString());
+					}
+				}
+			}
+		}
+
+		return result.toArray(EMPTY_IRI_ARRAY);
+	}
+
+	/**
+	 * Returns all the IRIs to be loaded in the core space of the scope
+	 * 
+	 * @param config
+	 * @param scopeIRI
+	 * @return
+	 */
+	public static String[] getCoreOntologies(OWLOntology config, String scopeIRI) {
+		List<String> ontologies = new ArrayList<String>();
+		ontologies.addAll(Arrays.asList(getScopeObjectPropertyValues(config,
+				scopeIRI, usesCoreOntology)));
+
+		for (String libraryID : getCoreLibraries(config, scopeIRI)) {
+			ontologies.addAll(Arrays.asList(getLibraryObjectPropertyValues(
+					config, libraryID, libraryHasOntology)));
+		}
+		return ontologies.toArray(new String[ontologies.size()]);
+	}
+
+	/**
+	 * Returns all the resources to be part of the Custom space
+	 * 
+	 * @param config
+	 * @param scopeIRI
+	 * @return
+	 */
+	public static String[] getCustomOntologies(OWLOntology config,
+			String scopeIRI) {
+		List<String> ontologies = new ArrayList<String>();
+		ontologies.addAll(Arrays.asList(getScopeObjectPropertyValues(config,
+				scopeIRI, usesCustomOntology)));
+
+		for (String libraryID : getCustomLibraries(config, scopeIRI)) {
+			ontologies.addAll(Arrays.asList(getLibraryObjectPropertyValues(
+					config, libraryID, libraryHasOntology)));
+		}
+		return ontologies.toArray(new String[ontologies.size()]);
+	}
+
+	private static String[] getCoreLibraries(OWLOntology config, String scopeIRI) {
+		return getScopeObjectPropertyValues(config, scopeIRI, usesCoreLibrary);
+	}
+
+	private static String[] getCustomLibraries(OWLOntology config,
+			String scopeIRI) {
+		return getScopeObjectPropertyValues(config, scopeIRI, usesCustomLibrary);
+	}
+
 }

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ONManager.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ONManager.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ONManager.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ONManager.java Wed Dec 15 15:19:32 2010
@@ -3,7 +3,6 @@ package eu.iksproject.kres.manager;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Set;
 
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Property;
@@ -18,19 +17,28 @@ import org.semanticweb.owlapi.io.StreamD
 import org.semanticweb.owlapi.model.IRI;
 import org.semanticweb.owlapi.model.OWLDataFactory;
 import org.semanticweb.owlapi.model.OWLOntology;
+import org.semanticweb.owlapi.model.OWLOntologyCreationException;
 import org.semanticweb.owlapi.model.OWLOntologyManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import eu.iksproject.kres.api.manager.DuplicateIDException;
 import eu.iksproject.kres.api.manager.KReSONManager;
+import eu.iksproject.kres.api.manager.ontology.CoreOntologySpace;
+import eu.iksproject.kres.api.manager.ontology.CustomOntologySpace;
 import eu.iksproject.kres.api.manager.ontology.NoSuchScopeException;
 import eu.iksproject.kres.api.manager.ontology.OntologyIndex;
+import eu.iksproject.kres.api.manager.ontology.OntologyInputSource;
 import eu.iksproject.kres.api.manager.ontology.OntologyScope;
 import eu.iksproject.kres.api.manager.ontology.OntologyScopeFactory;
+import eu.iksproject.kres.api.manager.ontology.OntologySpace;
 import eu.iksproject.kres.api.manager.ontology.OntologySpaceFactory;
 import eu.iksproject.kres.api.manager.ontology.ScopeRegistry;
+import eu.iksproject.kres.api.manager.ontology.UnmodifiableOntologySpaceException;
 import eu.iksproject.kres.api.manager.session.KReSSessionManager;
 import eu.iksproject.kres.api.storage.OntologyStorage;
+import eu.iksproject.kres.manager.io.BlankOntologySource;
+import eu.iksproject.kres.manager.io.RootOntologyIRISource;
 import eu.iksproject.kres.manager.ontology.OntologyIndexImpl;
 import eu.iksproject.kres.manager.ontology.OntologyScopeFactoryImpl;
 import eu.iksproject.kres.manager.ontology.OntologySpaceFactoryImpl;
@@ -134,89 +142,161 @@ public class ONManager implements KReSON
 		me = this;
 		this.ce = ce;
 
-		ScopeRegistry reg = get().getScopeRegistry();
-		Set<OntologyScope> scopez = reg.getRegisteredScopes();
-
 		String path = (String) ce.getProperties().get(CONFIG_FILE_PATH);
-		// CONFIG_FILE_PATH can be a path or a URI. Try to make up for both
-		OWLOntology oConf = null;
-		OWLOntologyManager tempMgr = OWLManager.createOWLOntologyManager();
-		OWLOntologyDocumentSource oConfSrc = null;
+
+		/*
+		 * If there is no configuration file, just start with an empty scope set
+		 */
 		if (path != null && !path.trim().isEmpty()) {
-			// Replace path with default path
-			path = "/META-INF/conf/onm.owl";
-			InputStream is = this.getClass().getResourceAsStream(path);
-			oConfSrc = new StreamDocumentSource(is);
-		} else {
-			IRI iri = IRI.create(path);
-			if (iri.isAbsolute())
-				oConfSrc = new IRIDocumentSource(IRI.create(path));
-			else
-				oConfSrc = new FileDocumentSource(new File(path));
-		}
+			OWLOntology oConf = null;
+			OWLOntologyManager tempMgr = OWLManager.createOWLOntologyManager();
+			OWLOntologyDocumentSource oConfSrc = null;
 
-		if (oConfSrc == null)
-			log
-					.warn("KReS :: [NONFATAL] No ONM configuration file found at path "
-							+ path + ". Starting with blank scope set.");
-		else
 			try {
-				oConf = tempMgr.loadOntologyFromOntologyDocument(oConfSrc);
-				// The OWLOntologyManager is brand new, it's impossible for it
-				// to throw an OWLOntologyAlreadyExistsException ...
-			} catch (Throwable e) {
-				log.error(
-						"KReS :: [NONFATAL] Invalid ONM configuration file found at path "
-								+ path + ". Starting with blank scope set.", e);
+				log
+						.debug("Try to load the configuration ontology from a local bundle relative path");
+				InputStream is = this.getClass().getResourceAsStream(path);
+				oConfSrc = new StreamDocumentSource(is);
+			} catch (Exception e1) {
+				try {
+					log.debug("Cannot load from a local bundle relative path",
+							e1);
+					log
+							.debug("Try to load the configuration ontology resolving the given IRI");
+					IRI iri = IRI.create(path);
+					if (!iri.isAbsolute())
+						throw new Exception(
+								"IRI seems to be not absolute! value was: "
+										+ iri.toQuotedString());
+					oConfSrc = new IRIDocumentSource(iri);
+					if (oConfSrc == null)
+						throw new Exception("Cannot load from the IRI: "
+								+ iri.toQuotedString());
+				} catch (Exception e) {
+					try {
+						log.debug("Cannot load from the web", e1);
+						log
+								.debug("Try to load the configuration ontology as full local file path");
+						oConfSrc = new FileDocumentSource(new File(path));
+					} catch (Exception e2) {
+						log.error(
+								"Cannot load the configuration ontology from parameter value: "
+										+ path, e2);
+					}
+				}
 			}
 
-		if (oConf != null)
-			toActivate = ConfigurationManagement.getScopesToActivate(oConf);
-		else
-			toActivate = new String[0];
-		for (String token : toActivate) {
-			try {
-				IRI scopeId = IRI.create(token.trim());
-				reg.setScopeActive(scopeId, true);
-				log.info("KReS :: Ontology scope " + token + " activated.");
-				scopez.remove(reg.getScope(scopeId));
-			} catch (NoSuchScopeException ex) {
-				log.warn("KReS :: Tried to activate unavailable scope " + token
-						+ ".");
-			} catch (Exception ex) {
-				log.error("KReS :: Exception caught while activating scope "
-						+ token + " . Skipping.", ex);
-				continue;
+			if (oConfSrc == null) {
+				log
+						.warn("KReS :: [NONFATAL] No ONM configuration file found at path "
+								+ path + ". Starting with blank scope set.");
+			} else {
+				try {
+					oConf = tempMgr.loadOntologyFromOntologyDocument(oConfSrc);
+				} catch (OWLOntologyCreationException e) {
+					log.error("Cannot create the configuration ontology", e);
+				}
 			}
+
+			// Create and populate the scopes from the config ontology.
+			bootstrapOntologyNetwork(oConf);
+
 		}
-		// Stop deactivating other scopes
-		// for (OntologyScope scope : scopez) {
-		// IRI scopeId = scope.getID();
-		// try {
-		// if (reg.isScopeActive(scopeId)) {
-		// reg.setScopeActive(scopeId, false);
-		// System.out.println("KReS :: Ontology scope " + scopeId
-		// + " " + " deactivated.");
-		// }
-		// } catch (NoSuchScopeException ex) {
-		// // Shouldn't happen because we already have the scope handle,
-		// // however exceptions could be thrown erroneously...
-		// System.err
-		// .println("KReS :: Tried to deactivate unavailable scope "
-		// + scopeId + ".");
-		// } catch (Exception ex) {
-		// System.err.println("Exception caught while deactivating scope "
-		// + scope.getID() + " " + ex.getClass());
-		// continue;
-		// }
-		// }
+		log.debug("KReS :: ONManager activated.");
+
+	}
 
-		log.debug("KReS :: main component activated.");
+	private void bootstrapOntologyNetwork(OWLOntology configOntology) {
+		if (configOntology == null) {
+			log
+					.debug("KReS :: Ontology Network Manager starting with empty scope set.");
+			return;
+		}
+		try {
+
+			/**
+			 * We create and register the scopes before activating
+			 */
+			for (String scopeIRI : ConfigurationManagement
+					.getScopes(configOntology)) {
+
+				String[] cores = ConfigurationManagement.getCoreOntologies(
+						configOntology, scopeIRI);
+				String[] customs = ConfigurationManagement.getCustomOntologies(
+						configOntology, scopeIRI);
+
+				// "Be a man. Use printf()"
+				log.debug("KReS :: Scope " + scopeIRI);
+				for (String s : cores) {
+					log.debug("\tKReS :: Core ontology " + s);
+				}
+				for (String s : customs) {
+					log.debug("\tKReS :: Custom ontology " + s);
+				}
+
+				// Create the scope
+				IRI iri = IRI.create(scopeIRI);
+				OntologyScope sc = null;
+				sc = ontologyScopeFactory.createOntologyScope(iri,
+						new BlankOntologySource());
+
+				// Populate the core space
+				if (cores.length > 0) {
+					OntologySpace corespc = sc.getCoreSpace();
+					corespc.tearDown();
+					for (int i = 0; i < cores.length; i++)
+						try {
+							corespc.addOntology(new RootOntologyIRISource(IRI
+									.create(cores[i])));
+						} catch (Exception ex) {
+							log.warn("KReS :: failed to import ontology "
+									+ cores[i], ex);
+							continue;
+						}
+					// TODO: this call should be automatic
+					((CustomOntologySpace) sc.getCustomSpace())
+							.attachCoreSpace((CoreOntologySpace) corespc, false);
+				}
+
+				sc.setUp();
+				scopeRegistry.registerScope(sc);
+
+				// getScopeHelper().createScope(scopeIRI);
+//				getScopeHelper().addToCoreSpace(scopeIRI, cores);
+				getScopeHelper().addToCustomSpace(scopeIRI, customs);
+			}
+
+			/**
+			 * Try to get activation policies
+			 */
+			toActivate = ConfigurationManagement
+					.getScopesToActivate(configOntology);
+
+			for (String scopeID : toActivate) {
+				try {
+					IRI scopeId = IRI.create(scopeID.trim());
+					scopeRegistry.setScopeActive(scopeId, true);
+					log.info("KReS :: Ontology scope " + scopeID
+							+ " activated.");
+				} catch (NoSuchScopeException ex) {
+					log.warn("Tried to activate unavailable scope " + scopeID
+							+ ".");
+				} catch (Exception ex) {
+					log.error("Exception caught while activating scope "
+							+ scopeID + " . Skipping.", ex);
+					continue;
+				}
+			}
+
+		} catch (Throwable e) {
+			log.error("[NONFATAL] Invalid ONM configuration file found. "
+					+ "Starting with blank scope set.", e);
+		}
 
 	}
 
 	protected void deactivate(ComponentContext ce) throws IOException {
-		log.debug("KReS :: deactivating main component...");
+		log.debug("KReS :: Deactivating ONManager");
 	}
 
 	@Override
@@ -294,4 +374,156 @@ public class ONManager implements KReSON
 		return toActivate;
 	}
 
+	private Helper helper = null;
+
+	public Helper getScopeHelper() {
+		if (helper == null) {
+			helper = new Helper();
+		}
+		return helper;
+	}
+
+	public class Helper {
+		private Helper() {
+		}
+
+		/**
+		 * Create an empty scope. The scope is created, registered and activated
+		 * 
+		 * @param scopeID
+		 * @return
+		 * @throws DuplicateIDException
+		 */
+		public synchronized OntologyScope createScope(String scopeID)
+				throws DuplicateIDException {
+			OntologyInputSource oisbase = new BlankOntologySource();
+
+			IRI scopeIRI = IRI.create(scopeID);
+
+			/*
+			 * The scope is created by the ScopeFactory or loaded to the scope
+			 * registry of KReS
+			 */
+			OntologyScope scope;
+			scope = ontologyScopeFactory.createOntologyScope(scopeIRI, oisbase);
+
+			scope.setUp();
+			scopeRegistry.registerScope(scope, true);
+			log.debug("Created scope " + scopeIRI, this);
+			return scope;
+		}
+
+		/**
+		 * Adds the ontology from the given iri to the core space of the given
+		 * scope
+		 * 
+		 * @param scopeID
+		 * @param locationIri
+		 */
+		public synchronized void addToCoreSpace(String scopeID,
+				String[] locationIris) {
+			OntologyScope scope = getScopeRegistry().getScope(
+					IRI.create(scopeID));
+			OntologySpace corespc = scope.getCoreSpace();
+			scope.tearDown();
+			corespc.tearDown();
+			for (String locationIri : locationIris) {
+				try {
+					corespc.addOntology(new RootOntologyIRISource(IRI
+							.create(locationIri)));
+					//					
+					// corespc.addOntology(
+					// createOntologyInputSource(locationIri));
+					log.debug("Added " + locationIri + " to scope " + scopeID
+							+ " in the core space.", this);
+					// OntologySpace cs = scope.getCustomSpace();
+					// if (cs instanceof CustomOntologySpace) {
+					// (
+					// (CustomOntologySpace)cs).attachCoreSpace((CoreOntologySpace)corespc,
+					// false);
+					// }
+				} catch (UnmodifiableOntologySpaceException e) {
+					log.error("Core space for scope " + scopeID
+							+ " denied addition of ontology " + locationIri, e);
+				} catch (OWLOntologyCreationException e) {
+					log.error("Creation of ontology from source " + locationIri
+							+ " failed.", e);
+				}
+			}
+			corespc.setUp();
+		}
+
+		/**
+		 * Adds the ontology fromt he given iri to the custom space of the given
+		 * scope
+		 * 
+		 * @param scopeID
+		 * @param locationIri
+		 */
+		public synchronized void addToCustomSpace(String scopeID,
+				String[] locationIris) {
+			OntologyScope scope = getScopeRegistry().getScope(
+					IRI.create(scopeID));
+
+			scope.getCustomSpace().tearDown();
+			for (String locationIri : locationIris) {
+				try {
+					scope.getCustomSpace().addOntology(
+							createOntologyInputSource(locationIri));
+					log.debug("Added " + locationIri + " to scope " + scopeID
+							+ " in the custom space.", this);
+				} catch (UnmodifiableOntologySpaceException e) {
+					log.error(
+							"An error occurred while trying to add the ontology from location: "
+									+ locationIri, e);
+				}
+			}
+			scope.getCustomSpace().setUp();
+		}
+
+		private OntologyInputSource createOntologyInputSource(final String uri) {
+			/*
+			 * The scope factory needs an OntologyInputSource as input for the
+			 * core ontology space. We want to use the dbpedia ontology as core
+			 * ontology of our scope.
+			 */
+			OntologyInputSource ois = new OntologyInputSource() {
+
+				@Override
+				public boolean hasRootOntology() {
+					return true;
+				}
+
+				@Override
+				public boolean hasPhysicalIRI() {
+					return false;
+				}
+
+				@Override
+				public OWLOntology getRootOntology() {
+
+					try {
+
+						OWLOntologyManager manager = OWLManager
+								.createOWLOntologyManager();
+						return manager.loadOntologyFromOntologyDocument(IRI
+								.create(uri));
+					} catch (OWLOntologyCreationException e) {
+						log.error("Cannot load the ontology " + uri, e);
+					} catch (Exception e) {
+						log.error("Cannot load the ontology " + uri, e);
+					}
+					/** If some errors occur **/
+					return null;
+				}
+
+				@Override
+				public IRI getPhysicalIRI() {
+					return null;
+				}
+			};
+
+			return ois;
+		}
+	}
 }

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/io/BlankOntologySource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/io/BlankOntologySource.java?rev=1049585&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/io/BlankOntologySource.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/io/BlankOntologySource.java Wed Dec 15 15:19:32 2010
@@ -0,0 +1,29 @@
+package eu.iksproject.kres.manager.io;
+
+import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.model.OWLOntologyCreationException;
+import org.semanticweb.owlapi.model.OWLOntologyManager;
+
+/**
+ * A utility input source that contains an unnamed, empty ontology.
+ * 
+ * @author alessandro
+ *
+ */
+public class BlankOntologySource extends AbstractOntologyInputSource {
+
+	public BlankOntologySource() {
+		OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
+		try {
+			this.rootOntology = manager.createOntology();
+		} catch (OWLOntologyCreationException e) {
+			this.rootOntology = null;
+		}
+	}
+
+	@Override
+	public String toString() {
+		return "";
+	}
+
+}

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/AbstractOntologySpaceImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/AbstractOntologySpaceImpl.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/AbstractOntologySpaceImpl.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/AbstractOntologySpaceImpl.java Wed Dec 15 15:19:32 2010
@@ -44,6 +44,7 @@ import eu.iksproject.kres.manager.util.S
  * NOTE: By default, an ontology space is NOT write-locked. Developers need to
  * set the <code>locked</code> variable to true to make the space read-only.
  * 
+ * 
  * @author alessandro
  * 
  */
@@ -102,11 +103,11 @@ public abstract class AbstractOntologySp
 		this.parentID = parentID;
 
 		// FIXME: ensure that this is not null
-		OntologyScope ps = ONManager.get().getScopeRegistry()
+		OntologyScope parentScope = ONManager.get().getScopeRegistry()
 				.getScope(parentID);
 
-		if (ps != null && ps instanceof OntologySpaceListener)
-			this.addOntologySpaceListener((OntologySpaceListener) ps);
+		if (parentScope != null && parentScope instanceof OntologySpaceListener)
+			this.addOntologySpaceListener((OntologySpaceListener) parentScope);
 
 		this._id = spaceID;
 		if (ontologyManager != null)
@@ -206,49 +207,34 @@ public abstract class AbstractOntologySp
 		if (ontology != null) {
 
 			OWLOntologyID id = ontology.getOntologyID();
-			try {
-
-				// if (ontologySource != null && parentID != null)
-				// // rewrite the source
-				// ontologySource = new ScopeOntologySource(parentID,
-				// ontologySource.getRootOntology(), ontologySource
-				// .getPhysicalIRI());
 
-				OntologyUtils.appendOntology(new RootOntologySource(
-						getTopOntology(), null), ontologySource,
-						ontologyManager/* ,parentID */);
+			// if (ontologySource != null && parentID != null)
+			// // rewrite the source
+			// ontologySource = new ScopeOntologySource(parentID,
+			// ontologySource.getRootOntology(), ontologySource
+			// .getPhysicalIRI());
+
+			// Should not modify the child ontology in any way.
+			// TODO implement transaction control.
+			OntologyUtils
+					.appendOntology(new RootOntologySource(getTopOntology(),
+							null), ontologySource, ontologyManager/* ,parentID */);
 
-				StringDocumentTarget tgt = new StringDocumentTarget();
+			StringDocumentTarget tgt = new StringDocumentTarget();
+			try {
 				ontologyManager.saveOntology(ontology,
 						new RDFXMLOntologyFormat(), tgt);
+			} catch (OWLOntologyStorageException e) {
+				log.error("KReS : [FATAL] Failed to store ontology " + id
+						+ " in memory.", e);
+				return;
+			}
+
+			try {
+				ontologyManager.removeOntology(ontology);
 				ontologyManager
 						.loadOntologyFromOntologyDocument(new StringDocumentSource(
 								tgt.toString()));
-
-				try {
-					// Store the top ontology
-					if (!(this instanceof SessionOntologySpace)) {
-						OntologyStorage storage = ONManager.get()
-								.getOntologyStore();
-						if (storage == null)
-							log
-									.error("KReS :: [NONFATAL] no ontology storage found. Ontology "
-											+ ontology.getOntologyID()
-											+ " will be stored in-memory only.");
-						else
-							storage.store(ontology);
-					}
-					// ONManager.get().getOntologyStore().load(rootOntology.getOntologyID().getOntologyIRI());
-				} catch (Exception ex) {
-					log
-							.error(
-									"KReS :: [NONFATAL] An error occurred while storing ontology "
-											+ ontology
-											+ " . Ontology management will be volatile!",
-									ex);
-				}
-
-				fireOntologyAdded(id.getOntologyIRI());
 			} catch (OWLOntologyAlreadyExistsException e) {
 				// Could happen if we supplied an ontology manager that already
 				// knows this ontology. Nothing to do then.
@@ -257,9 +243,34 @@ public abstract class AbstractOntologySp
 			} catch (OWLOntologyCreationException e) {
 				log.error("Unexpected exception caught while copying ontology "
 						+ id + " across managers", e);
-			} catch (OWLOntologyStorageException e) {
-				log.error("KReS : [FATAL] Failed to store ontology " + id, e);
+				return;
+			}
+
+			try {
+				// Store the top ontology
+				if (!(this instanceof SessionOntologySpace)) {
+					OntologyStorage storage = ONManager.get()
+							.getOntologyStore();
+					if (storage == null)
+						log
+								.error("KReS :: [NONFATAL] no ontology storage found. Ontology "
+										+ ontology.getOntologyID()
+										+ " will be stored in-memory only.");
+					else {
+						storage.store(ontology);
+					}
+				}
+				// ONManager.get().getOntologyStore().load(rootOntology.getOntologyID().getOntologyIRI());
+			} catch (Exception ex) {
+				log.error(
+						"KReS :: [NONFATAL] An error occurred while storing ontology "
+								+ ontology
+								+ " . Ontology management will be volatile!",
+						ex);
 			}
+
+			fireOntologyAdded(id.getOntologyIRI());
+
 		}
 
 	}
@@ -485,8 +496,9 @@ public abstract class AbstractOntologySp
 							.error("KReS :: [NONFATAL] no ontology storage found. Ontology "
 									+ rootOntology.getOntologyID()
 									+ " will be stored in-memory only.");
-				else
+				else {
 					storage.store(rootOntology);
+				}
 			}
 		} catch (Exception ex) {
 			log.error(

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/CoreOntologySpaceImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/CoreOntologySpaceImpl.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/CoreOntologySpaceImpl.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/CoreOntologySpaceImpl.java Wed Dec 15 15:19:32 2010
@@ -5,7 +5,6 @@ import org.semanticweb.owlapi.model.OWLO
 
 import eu.iksproject.kres.api.manager.ontology.CoreOntologySpace;
 import eu.iksproject.kres.api.manager.ontology.OntologyInputSource;
-import eu.iksproject.kres.api.manager.ontology.OntologyScope;
 import eu.iksproject.kres.manager.util.StringUtils;
 
 public class CoreOntologySpaceImpl extends AbstractOntologySpaceImpl implements

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/CustomOntologySpaceImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/CustomOntologySpaceImpl.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/CustomOntologySpaceImpl.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/CustomOntologySpaceImpl.java Wed Dec 15 15:19:32 2010
@@ -1,6 +1,8 @@
 package eu.iksproject.kres.manager.ontology;
 
 import org.semanticweb.owlapi.model.IRI;
+import org.semanticweb.owlapi.model.OWLImportsDeclaration;
+import org.semanticweb.owlapi.model.OWLOntology;
 import org.semanticweb.owlapi.model.OWLOntologyManager;
 import org.slf4j.Logger;
 
@@ -36,15 +38,18 @@ public class CustomOntologySpaceImpl ext
 	public void attachCoreSpace(CoreOntologySpace coreSpace, boolean skipRoot)
 			throws UnmodifiableOntologySpaceException {
 
+		OWLOntology o = coreSpace.getTopOntology();
 		// This does the append thingy
-		log.debug("Attaching " + coreSpace.getTopOntology() + " TO "
-				+ getTopOntology() + " ...");
+		log.debug("Attaching " + o + " TO " + getTopOntology() + " ...");
 		try {
-			addOntology(new RootOntologySource(coreSpace.getTopOntology(), null));
-			log.debug("ok");
+			// It is in fact the addition of the core space top ontology to the
+			// custom space, with import statements and all.
+			addOntology(new RootOntologySource(o, null));
+			// log.debug("ok");
 		} catch (Exception ex) {
 			log.error("FAILED", ex);
 		}
+
 	}
 
 	/**

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/OntologyScopeImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/OntologyScopeImpl.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/OntologyScopeImpl.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/ontology/OntologyScopeImpl.java Wed Dec 15 15:19:32 2010
@@ -219,7 +219,7 @@ public class OntologyScopeImpl implement
 	 */
 	@Override
 	public void onOntologyAdded(IRI spaceId, IRI addedOntology) {
-		// Propagate events
+		// Propagate events to scope listeners
 		fireOntologyAdded(addedOntology);
 	}
 
@@ -232,7 +232,7 @@ public class OntologyScopeImpl implement
 	 */
 	@Override
 	public void onOntologyRemoved(IRI spaceId, IRI removedOntology) {
-		// Propagate events
+		// Propagate events to scope listeners
 		fireOntologyRemoved(removedOntology);
 	}
 
@@ -267,7 +267,7 @@ public class OntologyScopeImpl implement
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see eu.iksproject.kres.api.manager.ontology.OntologyScope#bringUp()
+	 * @see eu.iksproject.kres.api.manager.ontology.OntologyScope#setUp()
 	 */
 	@Override
 	public synchronized void setUp() {
@@ -308,4 +308,10 @@ public class OntologyScopeImpl implement
 		return getID().toString();
 	}
 
+	@Override
+	public void synchronizeSpaces() {
+		// TODO Auto-generated method stub
+
+	}
+
 }

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/util/OntologyConstants.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/util/OntologyConstants.java?rev=1049585&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/util/OntologyConstants.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/util/OntologyConstants.java Wed Dec 15 15:19:32 2010
@@ -0,0 +1,10 @@
+package eu.iksproject.kres.manager.util;
+
+public class OntologyConstants {
+
+	public static final String NS__KRES = "http://kres.iks-project.eu/";
+
+	public static final String NS__ODP = "http://www.ontologydesignpatterns.org/";
+
+	public static final String NS_ONM = NS__KRES + "ontology/meta/onm.owl#";
+}

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/util/OntologyUtils.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/util/OntologyUtils.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/util/OntologyUtils.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/main/java/eu/iksproject/kres/manager/util/OntologyUtils.java Wed Dec 15 15:19:32 2010
@@ -66,46 +66,67 @@ public class OntologyUtils {
 		return appendOntology(parentSrc, childSrc, ontologyManager, null);
 	}
 
+	public static OWLOntology appendOntology(OntologyInputSource parentSrc,
+			OntologyInputSource childSrc) {
+		return appendOntology(parentSrc, childSrc, null, null);
+	}
+
+	public static OWLOntology appendOntology(OntologyInputSource parentSrc,
+			OntologyInputSource childSrc, IRI rewritePrefix) {
+		return appendOntology(parentSrc, childSrc, null, rewritePrefix);
+	}
+
 	/**
 	 * This method appends one ontology (the child) to another (the parent) by
 	 * proceeding as follows. If a physical URI can be obtained from the child
 	 * source, an import statement using that physical URI will be added to the
 	 * parent ontology, otherwise all the axioms from the child ontology will be
 	 * copied to the parent. <br>
-	 * Note: the ontology manager does not load ontologies.
+	 * Note: the ontology manager will not load additional ontologies.
 	 * 
 	 * @param parentSrc
 	 *            must exist!
 	 * @param childSrc
 	 * @param ontologyManager
+	 *            can be null (e.g. when one does not want changes to be
+	 *            immediately reflected in their ontology manager), in which
+	 *            case a temporary ontology manager will be used.
+	 * @param rewritePrefix
+	 *            . if not null, import statements will be generated in the form
+	 *            <tt>rewritePrefix/child_ontology_logical_IRI</tt>. It can be
+	 *            used for relocating the ontology document file elsewhere.
 	 * @return the parent with the appended child
 	 */
 	public static OWLOntology appendOntology(OntologyInputSource parentSrc,
 			OntologyInputSource childSrc, OWLOntologyManager ontologyManager,
 			IRI rewritePrefix) {
+
+		if (ontologyManager == null)
+			ontologyManager = OWLManager.createOWLOntologyManager();
 		OWLDataFactory factory = ontologyManager.getOWLDataFactory();
 		OWLOntology oParent = parentSrc.getRootOntology();
 		OWLOntology oChild = childSrc.getRootOntology();
-		// If we can obtain a physical IRI from source, add the import.
 
-		// Named
+		// Named ontology with a provided absolute prefix. Use name and prefix
+		// for creating an new import statement.
 		OWLOntology child = childSrc.getRootOntology();
-		if (!child.isAnonymous() && rewritePrefix != null) {
+		if (!child.isAnonymous() && rewritePrefix != null
+		/* && rewritePrefix.isAbsolute() */) {
 			IRI impIri = IRI.create(rewritePrefix + "/"
 					+ child.getOntologyID().getOntologyIRI());
 			OWLImportsDeclaration imp = factory
 					.getOWLImportsDeclaration(impIri);
 			ontologyManager.applyChange(new AddImport(oParent, imp));
 		}
-		// Anonymous, with physicalIRI
+		// Anonymous, with physicalIRI. A plain import statement is added.
 		else if (childSrc.hasPhysicalIRI()) {
 			OWLImportsDeclaration imp = factory
 					.getOWLImportsDeclaration(childSrc.getPhysicalIRI());
 			ontologyManager.applyChange(new AddImport(oParent, imp));
 		}
-		// Otherwise just copy all its axioms and imports.
 
-		// Anonymous and no physical IRI
+		// Anonymous and no physical IRI (e.g. in memory). Copy all axioms and
+		// import statements.
 		else {
 			ontologyManager.addAxioms(oParent, oChild.getAxioms());
 			for (OWLImportsDeclaration imp : oChild.getImportsDeclarations())

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/test/java/eu/iksproject/kres/manager/ontology/TestOntologyScope.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/test/java/eu/iksproject/kres/manager/ontology/TestOntologyScope.java?rev=1049585&r1=1049584&r2=1049585&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/test/java/eu/iksproject/kres/manager/ontology/TestOntologyScope.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.manager/src/test/java/eu/iksproject/kres/manager/ontology/TestOntologyScope.java Wed Dec 15 15:19:32 2010
@@ -5,6 +5,7 @@ import static org.junit.Assert.assertNul
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.semanticweb.owlapi.apibinding.OWLManager;
@@ -25,14 +26,28 @@ public class TestOntologyScope {
 
 	public static IRI baseIri = IRI.create(Constants.base),
 			baseIri2 = IRI.create(Constants.base2),
+			scopeIriBlank = IRI
+					.create("http://kres.iks-project.eu/scope/WackyRaces"),
 			scopeIri1 = IRI.create("http://kres.iks-project.eu/scope/Peanuts"),
 			scopeIri2 = IRI
 					.create("http://kres.iks-project.eu/scope/CalvinAndHobbes");
 
+	/**
+	 * An ontology scope that initially contains no ontologies, and is rebuilt
+	 * from scratch before each test method.
+	 */
+	private static OntologyScope blankScope;
+
 	private static OntologyScopeFactory factory = null;
 
 	private static OntologyInputSource src1 = null, src2 = null;
 
+	@Before
+	public void cleaup() throws DuplicateIDException {
+		if (factory != null)
+			blankScope = factory.createOntologyScope(scopeIriBlank, null);
+	}
+
 	@BeforeClass
 	public static void setup() {
 		factory = ONManager.get().getOntologyScopeFactory();