You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by al...@apache.org on 2011/11/21 20:24:45 UTC

svn commit: r1204657 - in /incubator/stanbol/trunk: ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/session/ ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/ ontologymanager/ont...

Author: alexdma
Date: Mon Nov 21 19:24:44 2011
New Revision: 1204657

URL: http://svn.apache.org/viewvc?rev=1204657&view=rev
Log:
- Sessions are now implemented as ontology collectors and can be exported to OWL ontologies (STANBOL-247)
- Fixed a bug that caused the ClerezzaOntologyProvider to believe it had a null store in the presence of a TcManager service component (STANBOL-332)

Modified:
    incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/session/Session.java
    incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/session/SessionManager.java
    incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/ONManagerImpl.java
    incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOntologyProvider.java
    incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java
    incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionManagerImpl.java
    incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/MockOsgiContext.java
    incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/io/TestStorage.java
    incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestIndexing.java
    incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestOntologyScope.java
    incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestOntologySpaces.java
    incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionByIdResource.java
    incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionsResource.java
    incubator/stanbol/trunk/rules/refactor/src/main/java/org/apache/stanbol/rules/refactor/impl/RefactorerImpl.java

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/session/Session.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/session/Session.java?rev=1204657&r1=1204656&r2=1204657&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/session/Session.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/session/Session.java Mon Nov 21 19:24:44 2011
@@ -53,8 +53,18 @@ public interface Session extends Lockabl
         ZOMBIE
     }
 
+    /**
+     * Instructs the session to reference the supplied ontology scope. This way, whenever session data are
+     * processed, scope data will be considered as well.
+     * 
+     * @param scope
+     *            the ontology scope to be referenced.
+     */
     void attachScope(OntologyScope scope);
 
+    /**
+     * Removes all references to ontology scopes, thus leaving the session data as standalone.
+     */
     void clearScopes();
 
     /**
@@ -62,19 +72,21 @@ public interface Session extends Lockabl
      */
     void close() throws NonReferenceableSessionException;
 
+    /**
+     * Instructs the session to no longer reference the supplied ontology scope. If a scope with the supplied
+     * identifier was not attached, this method has no effect.
+     * 
+     * @param scope
+     *            the identifer of the ontology scope to be detached.
+     */
     void detachScope(String scopeId);
 
-    Set<String> getAttachedScopes();
-
     /**
-     * Returns the unique Internationalized Resource Identifier (IRI) that identifies this KReS session.<br>
-     * <br>
-     * NOTE: There is no set method for the session ID as it is assumed to be set in its constructor once and
-     * for all.
+     * Gets the identifiers of the scopes currently attached to this session.
      * 
-     * @return the IRI that identifies this session
+     * @return the attached scope identifiers
      */
-    String getID();
+    Set<String> getAttachedScopes();
 
     /**
      * Returns the current state of this KReS session.
@@ -98,7 +110,7 @@ public interface Session extends Lockabl
     void open() throws NonReferenceableSessionException;
 
     /**
-     * Sets the KReS session as ACTIVE if <code>active</code> is true, INACTIVE otherwise. The state set is
+     * Sets the session as ACTIVE if <code>active</code> is true, INACTIVE otherwise. The state set is
      * returned, which should match the input state unless an error occurs.<br>
      * <br>
      * Should throw an exception if this session is in a ZOMBIE state.

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/session/SessionManager.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/session/SessionManager.java?rev=1204657&r1=1204656&r2=1204657&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/session/SessionManager.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/session/SessionManager.java Mon Nov 21 19:24:44 2011
@@ -23,9 +23,9 @@ import org.apache.stanbol.ontologymanage
 import org.semanticweb.owlapi.model.OWLOntologyStorageException;
 
 /**
- * Manages KReS session objects via CRUD-like operations. A <code>SessionManager</code> maintains in-memory
- * storage of KReS sessions, creates new ones and either destroys or stores existing ones persistently. All
- * KReS sessions are managed via unique identifiers of the <code>org.semanticweb.owlapi.model.IRI</code> type.<br>
+ * Manages session objects via CRUD-like operations. A <code>SessionManager</code> maintains in-memory storage
+ * of sessions, creates new ones and either destroys or stores existing ones persistently. All sessions are
+ * managed via unique identifiers of the <code>org.semanticweb.owlapi.model.IRI</code> type.<br>
  * <br>
  * NOTE: implementations should be synchronized, or document whenever they are not.
  * 
@@ -34,30 +34,33 @@ import org.semanticweb.owlapi.model.OWLO
  */
 public interface SessionManager extends SessionListenable {
 
-    Set<String> getRegisteredSessionIDs();
+    /**
+     * The key used to configure the base namespace of the ontology network.
+     */
+    String SESSIONS_NS = "org.apache.stanbol.ontologymanager.session.ns";
 
     /**
-     * Generates AND REGISTERS a new KReS session and assigns a unique session ID generated internally.
+     * Generates AND REGISTERS a new session and assigns a unique session ID generated internally.
      * 
-     * @return the generated KReS session
+     * @return the generated session
      */
     Session createSession();
 
     /**
-     * Generates AND REGISTERS a new KReS session and tries to assign it the supplied session ID. If a session
-     * with that ID is already registered, the new session is <i>not</i> created and a
+     * Generates AND REGISTERS a new session and tries to assign it the supplied session ID. If a session with
+     * that ID is already registered, the new session is <i>not</i> created and a
      * <code>DuplicateSessionIDException</code> is thrown.
      * 
      * @param sessionID
      *            the IRI that uniquely identifies the session
-     * @return the generated KReS session
+     * @return the generated session
      * @throws DuplicateSessionIDException
-     *             if a KReS session with that sessionID is already registered
+     *             if a session with that sessionID is already registered
      */
     Session createSession(String sessionID) throws DuplicateSessionIDException;
 
     /**
-     * Deletes the KReS session identified by the supplied sessionID and releases its resources.
+     * Deletes the session identified by the supplied sessionID and releases its resources.
      * 
      * @param sessionID
      *            the IRI that uniquely identifies the session
@@ -65,14 +68,23 @@ public interface SessionManager extends 
     void destroySession(String sessionID);
 
     /**
-     * Retrieves the unique KReS session identified by <code>sessionID</code>.
+     * Returns the set of strings that identify registered sessions, whatever their state.
+     * 
+     * @return the IDs of all registered sessions.
+     */
+    Set<String> getRegisteredSessionIDs();
+
+    /**
+     * Retrieves the unique session identified by <code>sessionID</code>.
      * 
      * @param sessionID
      *            the IRI that uniquely identifies the session
-     * @return the unique KReS session identified by <code>sessionID</code>
+     * @return the unique session identified by <code>sessionID</code>
      */
     Session getSession(String sessionID);
 
+    String getSessionNamespace();
+
     /**
      * Returns the ontology space associated with this session.
      * 
@@ -82,8 +94,10 @@ public interface SessionManager extends 
      */
     Set<SessionOntologySpace> getSessionSpaces(String sessionID) throws NonReferenceableSessionException;
 
+    void setSessionNamespace(String namespace);
+
     /**
-     * Stores the KReS session identified by <code>sessionID</code> using the output stream <code>out</code>.
+     * Stores the session identified by <code>sessionID</code> using the output stream <code>out</code>.
      * 
      * @param sessionID
      *            the IRI that uniquely identifies the session

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/ONManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/ONManagerImpl.java?rev=1204657&r1=1204656&r2=1204657&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/ONManagerImpl.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/ONManagerImpl.java Mon Nov 21 19:24:44 2011
@@ -61,6 +61,7 @@ import org.apache.stanbol.ontologymanage
 import org.apache.stanbol.ontologymanager.ontonet.impl.session.ScopeSessionSynchronizer;
 import org.apache.stanbol.ontologymanager.ontonet.impl.session.SessionManagerImpl;
 import org.apache.stanbol.owl.OWLOntologyManagerFactory;
+import org.apache.stanbol.owl.util.URIUtils;
 import org.osgi.service.component.ComponentContext;
 import org.semanticweb.owlapi.io.FileDocumentSource;
 import org.semanticweb.owlapi.io.IRIDocumentSource;
@@ -145,9 +146,6 @@ public class ONManagerImpl implements ON
     @Reference
     private OfflineConfiguration offline;
 
-    @Reference
-    private OntologyProvider<?> ontologyProvider;
-
     /**
      * The {@link OfflineMode} is used by Stanbol to indicate that no external service should be referenced.
      * For this engine that means it is necessary to check if the used {@link ReferencedSite} can operate
@@ -161,6 +159,9 @@ public class ONManagerImpl implements ON
 
     private OntologyIndex oIndex;
 
+    @Reference
+    private OntologyProvider<?> ontologyProvider;
+
     private OntologyScopeFactory ontologyScopeFactory;
 
     private OntologySpaceFactory ontologySpaceFactory;
@@ -177,19 +178,11 @@ public class ONManagerImpl implements ON
 
     private SessionManager sessionManager;
 
-    // private ClerezzaOntologyStorage storage;
-
-    @Reference
-    private TcManager tcm;
-
     /*
      * The identifiers (not yet parsed as IRIs) of the ontology scopes that should be activated.
      */
     private String[] toActivate = new String[] {};
 
-    @Reference
-    private WeightedTcProvider wtcp;
-
     /**
      * This default constructor is <b>only</b> intended to be used by the OSGI environment with Service
      * Component Runtime support.
@@ -204,6 +197,19 @@ public class ONManagerImpl implements ON
         // All bindings are deferred to the activator
     }
 
+    public ONManagerImpl(OntologyProvider<?> ontologyProvider,
+                         OfflineConfiguration offline,
+                         Dictionary<String,Object> configuration) {
+        this();
+        this.ontologyProvider = ontologyProvider;
+        this.offline = offline;
+        try {
+            activate(configuration);
+        } catch (IOException e) {
+            log.error("Unable to access servlet context.", e);
+        }
+    }
+
     /**
      * @deprecated use {@link #ONManagerImpl(TcManager, WeightedTcProvider, OfflineConfiguration, Dictionary)}
      *             instead. Note that if the deprecated method is used instead, its effect will be to copy the
@@ -245,19 +251,6 @@ public class ONManagerImpl implements ON
         this(new ClerezzaOntologyProvider(tcm, offline, new Parser()), offline, configuration);
     }
 
-    public ONManagerImpl(OntologyProvider<?> ontologyProvider,
-                         OfflineConfiguration offline,
-                         Dictionary<String,Object> configuration) {
-        this();
-        this.ontologyProvider = ontologyProvider;
-        this.offline = offline;
-        try {
-            activate(configuration);
-        } catch (IOException e) {
-            log.error("Unable to access servlet context.", e);
-        }
-    }
-
     /**
      * Used to configure an instance within an OSGi container.
      * 
@@ -374,18 +367,17 @@ public class ONManagerImpl implements ON
     }
 
     protected void bindResources() {
-
-        if (ontologyProvider.getStore() instanceof TcManager) ontologySpaceFactory = new OntologySpaceFactoryImpl(
-                scopeRegistry, (OntologyProvider<TcProvider>) ontologyProvider, offline,
-                IRI.create(getOntologyNetworkNamespace()));
+        IRI ns = IRI.create(URIUtils.upOne(IRI.create(getOntologyNetworkNamespace())) + "/session/");
+        if (ontologyProvider.getStore() instanceof TcProvider) ontologySpaceFactory = new OntologySpaceFactoryImpl(
+                scopeRegistry, (OntologyProvider<TcProvider>) ontologyProvider, offline, ns);
         else ontologySpaceFactory = new org.apache.stanbol.ontologymanager.ontonet.impl.owlapi.OntologySpaceFactoryImpl(
-                scopeRegistry, offline, IRI.create(getOntologyNetworkNamespace()));
+                scopeRegistry, offline, ns);
 
         ontologyScopeFactory = new OntologyScopeFactoryImpl(scopeRegistry,
                 IRI.create(getOntologyNetworkNamespace()), ontologySpaceFactory);
         ontologyScopeFactory.addScopeEventListener(oIndex);
 
-        sessionManager = new SessionManagerImpl(IRI.create("http://kres.iks-project.eu/"), getScopeRegistry());
+        sessionManager = new SessionManagerImpl(ns, getScopeRegistry(), ontologyProvider);
         sessionManager.addSessionListener(new ScopeSessionSynchronizer(this));
     }
 
@@ -430,8 +422,6 @@ public class ONManagerImpl implements ON
                             log.warn("Failed to import ontology " + cores[i], ex);
                             continue;
                         }
-                    // ((CustomOntologySpace) sc.getCustomSpace()).attachCoreSpace((CoreOntologySpace)
-                    // corespc, false);
                 }
 
                 sc.setUp();
@@ -495,6 +485,11 @@ public class ONManagerImpl implements ON
         this.offlineMode = mode;
     }
 
+    @Override
+    public OfflineConfiguration getOfflineConfiguration() {
+        return offline;
+    }
+
     public OntologyIndex getOntologyIndex() {
         return oIndex;
     }
@@ -527,13 +522,7 @@ public class ONManagerImpl implements ON
         return ontologySpaceFactory;
     }
 
-    // public ClerezzaOntologyStorage getOntologyStore() {
-    // // return storage;
-    // return null;
-    // }
-
     public OWLOntologyManager getOwlCacheManager() {
-        // return OWLManager.createOWLOntologyManager();
         return owlCacheManager;
     }
 
@@ -570,9 +559,4 @@ public class ONManagerImpl implements ON
         return offlineMode != null;
     }
 
-    @Override
-    public OfflineConfiguration getOfflineConfiguration() {
-        return offline;
-    }
-
 }

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOntologyProvider.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOntologyProvider.java?rev=1204657&r1=1204656&r2=1204657&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOntologyProvider.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOntologyProvider.java Mon Nov 21 19:24:44 2011
@@ -156,6 +156,10 @@ public class ClerezzaOntologyProvider im
     }
 
     protected void activate(Dictionary<String,Object> configuration) {
+
+        // Check if the TcManager should be set as the store
+        if (store == null) store = tcManager;
+
         // Parse configuration.
         prefix = (String) (configuration.get(OntologyProvider.GRAPH_PREFIX));
         if (prefix == null) prefix = _GRAPH_PREFIX_DEFAULT; // Should be already assigned though

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java?rev=1204657&r1=1204656&r2=1204657&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java Mon Nov 21 19:24:44 2011
@@ -17,21 +17,32 @@
 package org.apache.stanbol.ontologymanager.ontonet.impl.session;
 
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
-import org.apache.stanbol.ontologymanager.ontonet.api.io.OntologyInputSource;
-import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyCollectorListener;
-import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyCollectorModificationException;
+import org.apache.clerezza.rdf.core.access.TcProvider;
+import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OWLExportable;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyScope;
-import org.apache.stanbol.ontologymanager.ontonet.api.ontology.UnmodifiableOntologyCollectorException;
 import org.apache.stanbol.ontologymanager.ontonet.api.session.NonReferenceableSessionException;
 import org.apache.stanbol.ontologymanager.ontonet.api.session.Session;
 import org.apache.stanbol.ontologymanager.ontonet.api.session.SessionEvent;
 import org.apache.stanbol.ontologymanager.ontonet.api.session.SessionEvent.OperationType;
 import org.apache.stanbol.ontologymanager.ontonet.api.session.SessionListener;
+import org.apache.stanbol.ontologymanager.ontonet.impl.clerezza.AbstractOntologyCollectorImpl;
+import org.apache.stanbol.owl.util.URIUtils;
+import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.model.AddImport;
 import org.semanticweb.owlapi.model.IRI;
+import org.semanticweb.owlapi.model.OWLDataFactory;
 import org.semanticweb.owlapi.model.OWLOntology;
+import org.semanticweb.owlapi.model.OWLOntologyAlreadyExistsException;
+import org.semanticweb.owlapi.model.OWLOntologyChange;
+import org.semanticweb.owlapi.model.OWLOntologyCreationException;
+import org.semanticweb.owlapi.model.OWLOntologyManager;
 import org.slf4j.LoggerFactory;
 
 /**
@@ -41,17 +52,14 @@ import org.slf4j.LoggerFactory;
  * @author alexdma
  * 
  */
-public class SessionImpl implements Session {
+public class SessionImpl extends AbstractOntologyCollectorImpl implements Session {
 
-    /**
-     * A KReS session knows about its own ID.
-     */
-    protected String id = null;
+    protected Map<String,OntologyScope> attachedScopes;
 
     protected Set<SessionListener> listeners;
 
     /**
-     * A KReS session knows about its own state.
+     * A session knows its own state.
      */
     State state = State.HALTED;
 
@@ -62,70 +70,112 @@ public class SessionImpl implements Sess
      * @param sessionID
      *            the IRI to be set as unique identifier for this session
      */
-    public SessionImpl(String sessionID) {
-        this.id = sessionID;
+    public SessionImpl(String sessionID, IRI namespace, TcProvider tcProvider) {
+        super(sessionID, namespace, tcProvider);
+        attachedScopes = new HashMap<String,OntologyScope>();
         listeners = new HashSet<SessionListener>();
     }
 
-    public SessionImpl(String sessionID, State initialState) throws NonReferenceableSessionException {
-        this(sessionID);
-        if (initialState == State.ZOMBIE) throw new NonReferenceableSessionException();
-        else setActive(initialState == State.ACTIVE);
-    }
-
     @Override
     public void addSessionListener(SessionListener listener) {
         listeners.add(listener);
     }
 
+    /**
+     * FIXME not merging yet
+     * 
+     * @see OWLExportable#asOWLOntology(boolean)
+     */
     @Override
-    public void clearSessionListeners() {
-        listeners.clear();
-    }
+    public OWLOntology asOWLOntology(boolean merge) {
+        if (merge) throw new UnsupportedOperationException(
+                "Merging not implemented yet. Please call asOWLOntology(false)");
 
-    @Override
-    public void close() throws NonReferenceableSessionException {
-        // if (getSessionState() == State.ZOMBIE)
-        // throw new NonReferenceableSessionException();
-        // state = State.ZOMBIE;
-        this.setActive(false);
-    }
+        OWLOntology root;
+        OWLOntologyManager ontologyManager = OWLManager.createOWLOntologyManager();
+        IRI iri = IRI.create(namespace + _id);
+        try {
+            root = ontologyManager.createOntology(iri);
+        } catch (OWLOntologyAlreadyExistsException e) {
+            // It should be impossible, but just in case.
+            ontologyManager.removeOntology(ontologyManager.getOntology(iri));
+            try {
+                root = ontologyManager.createOntology(iri);
+            } catch (OWLOntologyAlreadyExistsException e1) {
+                root = ontologyManager.getOntology(iri);
+            } catch (OWLOntologyCreationException e1) {
+                log.error("Failed to assemble root ontology for session " + _id, e);
+                root = null;
+            }
+        } catch (OWLOntologyCreationException e) {
+            log.error("Failed to assemble root ontology for session " + _id, e);
+            root = null;
+        }
 
-    @Override
-    public String getID() {
-        return id.toString();
-    }
+        // Add the import declarations for directly managed ontologies.
+        if (root != null) {
+            List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>();
+            OWLDataFactory df = ontologyManager.getOWLDataFactory();
+            for (OWLOntology o : getOntologies(false)) {
+                if (o == null) continue;
+
+                String base = URIUtils.upOne(IRI.create(namespace + getID())) + "/";
+
+                IRI ontologyIri;
+
+                if (o.isAnonymous()) try {
+                    ontologyIri = ontologyManager.getOntologyDocumentIRI(o);
+                } catch (Exception ex) {
+                    ontologyIri = o.getOWLOntologyManager().getOntologyDocumentIRI(o);
+                }
+                else {
+                    ontologyIri = o.getOntologyID().getDefaultDocumentIRI();
+                }
+
+                IRI physIRI = IRI.create(base + ontologyIri);
+
+                changes.add(new AddImport(root, df.getOWLImportsDeclaration(physIRI)));
+            }
+
+            // Add imports for attached scopes
+            for (String scopeID : getAttachedScopes()) {
+                IRI physIRI = IRI.create(namespace + scopeID);
+                changes.add(new AddImport(root, df.getOWLImportsDeclaration(physIRI)));
+            }
+
+            ontologyManager.applyChanges(changes);
+        }
+
+        return root;
 
-    @Override
-    public Collection<SessionListener> getSessionListeners() {
-        return listeners;
     }
 
     @Override
-    public State getSessionState() {
-        return state;
+    public void attachScope(OntologyScope scope) {
+        attachedScopes.put(scope.getID(), scope);
     }
 
     @Override
-    public boolean isActive() {
-        return state == State.ACTIVE;
+    public void clearScopes() {
+        attachedScopes.clear();
     }
 
     @Override
-    public void removeSessionListener(SessionListener listener) {
-        listeners.remove(listener);
+    public void clearSessionListeners() {
+        listeners.clear();
     }
 
     @Override
-    public State setActive(boolean active) throws NonReferenceableSessionException {
-        if (getSessionState() == State.ZOMBIE) throw new NonReferenceableSessionException();
-        else state = active ? State.ACTIVE : State.HALTED;
-        return getSessionState();
+    public void close() throws NonReferenceableSessionException {
+        // if (getSessionState() == State.ZOMBIE)
+        // throw new NonReferenceableSessionException();
+        // state = State.ZOMBIE;
+        this.setActive(false);
     }
 
     @Override
-    public String toString() {
-        return getID().toString();
+    public void detachScope(String scopeId) {
+        attachedScopes.remove(scopeId);
     }
 
     protected void fireClosed() {
@@ -133,7 +183,7 @@ public class SessionImpl implements Sess
         try {
             e = new SessionEvent(this, OperationType.CLOSE);
         } catch (Exception e1) {
-            LoggerFactory.getLogger(getClass()).error("KReS :: Could not close session " + getID(), e1);
+            LoggerFactory.getLogger(getClass()).error("Could not close session " + getID(), e1);
             return;
         }
         for (SessionListener l : listeners)
@@ -141,128 +191,51 @@ public class SessionImpl implements Sess
     }
 
     @Override
-    public void open() throws NonReferenceableSessionException {
-        setActive(true);
-    }
-
-    @Override
-    public OWLOntology asOWLOntology(boolean merge) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public void attachScope(OntologyScope scope) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void detachScope(String scopeId) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void clearScopes() {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
     public Set<String> getAttachedScopes() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public void addOntology(OntologyInputSource<?> ontologySource) throws UnmodifiableOntologyCollectorException {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public Set<OWLOntology> getOntologies(boolean withClosure) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public OWLOntology getOntology(IRI ontologyIri) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public boolean hasOntology(IRI ontologyIri) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public boolean isLocked() {
-        // TODO Auto-generated method stub
-        return false;
+        return attachedScopes.keySet();
     }
 
     @Override
-    public void removeOntology(IRI ontologyId) throws OntologyCollectorModificationException {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void addListener(OntologyCollectorListener listener) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public void clearListeners() {
-        // TODO Auto-generated method stub
-
+    public Collection<SessionListener> getSessionListeners() {
+        return listeners;
     }
 
     @Override
-    public Collection<OntologyCollectorListener> getListeners() {
-        // TODO Auto-generated method stub
-        return null;
+    public State getSessionState() {
+        return state;
     }
 
     @Override
-    public IRI getNamespace() {
-        // TODO Auto-generated method stub
-        return null;
+    public boolean isActive() {
+        return state == State.ACTIVE;
     }
 
     @Override
-    public void removeListener(OntologyCollectorListener listener) {
-        // TODO Auto-generated method stub
-
+    public void open() throws NonReferenceableSessionException {
+        setActive(true);
     }
 
     @Override
-    public void setNamespace(IRI namespace) {
-        // TODO Auto-generated method stub
-
+    public void removeSessionListener(SessionListener listener) {
+        listeners.remove(listener);
     }
 
     @Override
-    public void setUp() {
-        // TODO Auto-generated method stub
-
+    public State setActive(boolean active) throws NonReferenceableSessionException {
+        if (getSessionState() == State.ZOMBIE) throw new NonReferenceableSessionException();
+        else state = active ? State.ACTIVE : State.HALTED;
+        return getSessionState();
     }
 
     @Override
-    public void tearDown() {
-        // TODO Auto-generated method stub
-
+    protected void setID(String id) {
+        // TODO check form of ID
+        this._id = id;
     }
 
     @Override
-    public Set<Class<?>> getSupportedTypes() {
-        // TODO Auto-generated method stub
-        return null;
+    public String toString() {
+        return getID().toString();
     }
 
 }

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionManagerImpl.java?rev=1204657&r1=1204656&r2=1204657&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionManagerImpl.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionManagerImpl.java Mon Nov 21 19:24:44 2011
@@ -23,6 +23,8 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.clerezza.rdf.core.access.TcProvider;
+import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyProvider;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyScope;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.ScopeRegistry;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.SessionOntologySpace;
@@ -50,6 +52,8 @@ import org.slf4j.LoggerFactory;
  * @author alexdma
  * 
  */
+// @Component(immediate = true, metatype = true)
+// @Service(SessionManager.class)
 public class SessionManagerImpl implements SessionManager {
 
     private Map<String,Session> sessionsByID;
@@ -62,42 +66,29 @@ public class SessionManagerImpl implemen
 
     protected ScopeRegistry scopeRegistry;
 
-    // protected ClerezzaOntologyStorage store;
+    private IRI namespace;
 
-    public SessionManagerImpl(IRI baseIri, ScopeRegistry scopeRegistry/* , ClerezzaOntologyStorage store */) {
+    private OntologyProvider<?> ontologyProvider;
+
+    public SessionManagerImpl(IRI baseIri, ScopeRegistry scopeRegistry, OntologyProvider<?> ontologyProvider) {
+        this.namespace = baseIri;
+        this.ontologyProvider = ontologyProvider;
         idgen = new TimestampedSessionIDGenerator(baseIri);
         listeners = new HashSet<SessionListener>();
         sessionsByID = new HashMap<String,Session>();
         this.scopeRegistry = scopeRegistry;
-        // this.store = store;
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see eu.iksproject.kres.api.manager.session.SessionManager#addSessionListener
-     * (eu.iksproject.kres.api.manager.session.SessionListener)
-     */
     @Override
     public void addSessionListener(SessionListener listener) {
         listeners.add(listener);
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see eu.iksproject.kres.api.manager.session.SessionManager#clearSessionListeners ()
-     */
     @Override
     public void clearSessionListeners() {
         listeners.clear();
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see eu.iksproject.kres.api.manager.session.SessionManager#createSession()
-     */
     @Override
     public Session createSession() {
         Set<String> exclude = getRegisteredSessionIDs();
@@ -112,27 +103,20 @@ public class SessionManagerImpl implemen
         return session;
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see eu.iksproject.kres.api.manager.session.SessionManager#createSession(org
-     * .semanticweb.owlapi.model.IRI)
-     */
     @Override
     public synchronized Session createSession(String sessionID) throws DuplicateSessionIDException {
         if (sessionsByID.containsKey(sessionID)) throw new DuplicateSessionIDException(sessionID.toString());
-        Session session = new SessionImpl(sessionID);
+        TcProvider tcp = null;
+        if (ontologyProvider.getStore() instanceof TcProvider) tcp = (TcProvider) ontologyProvider.getStore();
+        else throw new UnsupportedOperationException(
+                "Session manager does not support ontology providers based on "
+                        + ontologyProvider.getStore().getClass() + ", only on " + TcProvider.class);
+        Session session = new SessionImpl(sessionID, namespace, tcp);
         addSession(session);
         fireSessionCreated(session);
         return session;
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see eu.iksproject.kres.api.manager.session.SessionManager#destroySession(
-     * org.semanticweb.owlapi.model.IRI)
-     */
     @Override
     public synchronized void destroySession(String sessionID) {
         try {
@@ -148,17 +132,11 @@ public class SessionManagerImpl implemen
                 fireSessionDestroyed(ses);
             }
         } catch (NonReferenceableSessionException e) {
-            log.warn("KReS :: tried to kick a dead horse on session " + sessionID
+            log.warn("Tried to kick a dead horse on session " + sessionID
                      + " which was already in a zombie state.", e);
         }
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see eu.iksproject.kres.api.manager.session.SessionManager#getSession(org.
-     * semanticweb.owlapi.model.IRI)
-     */
     @Override
     public Session getSession(String sessionID) {
         return sessionsByID.get(sessionID);
@@ -209,24 +187,11 @@ public class SessionManagerImpl implemen
         if (session == s2) sessionsByID.remove(id);
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see eu.iksproject.kres.api.manager.session.SessionManager#getSessionListeners ()
-     */
     @Override
     public Collection<SessionListener> getSessionListeners() {
         return listeners;
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * TODO : optimize with indexing.
-     * 
-     * @see eu.iksproject.kres.api.manager.session.SessionManager#getSessionSpaces
-     * (org.semanticweb.owlapi.model.IRI)
-     */
     @Override
     public Set<SessionOntologySpace> getSessionSpaces(String sessionID) throws NonReferenceableSessionException {
         Set<SessionOntologySpace> result = new HashSet<SessionOntologySpace>();
@@ -238,25 +203,11 @@ public class SessionManagerImpl implemen
         return result;
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see eu.iksproject.kres.api.manager.session.SessionManager#removeSessionListener
-     * (eu.iksproject.kres.api.manager.session.SessionListener)
-     */
     @Override
     public void removeSessionListener(SessionListener listener) {
         listeners.remove(listener);
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * TODO : storage not implemented yet
-     * 
-     * @see eu.iksproject.kres.api.manager.session.SessionManager#storeSession(org
-     * .semanticweb.owlapi.model.IRI, java.io.OutputStream)
-     */
     @Override
     public void storeSession(String sessionID, OutputStream out) throws NonReferenceableSessionException,
                                                                 OWLOntologyStorageException {
@@ -273,4 +224,14 @@ public class SessionManagerImpl implemen
 
     }
 
+    @Override
+    public String getSessionNamespace() {
+        return namespace.toString();
+    }
+
+    @Override
+    public void setSessionNamespace(String namespace) {
+        this.namespace = IRI.create(namespace);
+    }
+
 }

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/MockOsgiContext.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/MockOsgiContext.java?rev=1204657&r1=1204656&r2=1204657&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/MockOsgiContext.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/MockOsgiContext.java Mon Nov 21 19:24:44 2011
@@ -16,11 +16,21 @@
  */
 package org.apache.stanbol.ontologymanager.ontonet;
 
+import java.util.Dictionary;
+import java.util.Hashtable;
+
 import org.apache.clerezza.rdf.core.access.TcManager;
+import org.apache.clerezza.rdf.core.access.TcProvider;
 import org.apache.clerezza.rdf.core.serializedform.Parser;
 import org.apache.clerezza.rdf.jena.parser.JenaParserProvider;
 import org.apache.clerezza.rdf.rdfjson.parser.RdfJsonParsingProvider;
 import org.apache.clerezza.rdf.simple.storage.SimpleTcProvider;
+import org.apache.stanbol.ontologymanager.ontonet.api.ONManager;
+import org.apache.stanbol.ontologymanager.ontonet.api.OfflineConfiguration;
+import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyProvider;
+import org.apache.stanbol.ontologymanager.ontonet.impl.ONManagerImpl;
+import org.apache.stanbol.ontologymanager.ontonet.impl.OfflineConfigurationImpl;
+import org.apache.stanbol.ontologymanager.ontonet.impl.clerezza.ClerezzaOntologyProvider;
 
 public class MockOsgiContext {
 
@@ -28,7 +38,14 @@ public class MockOsgiContext {
 
     public static TcManager tcManager;
 
+    public static ONManager onManager;
+    
+    public static OntologyProvider<TcProvider> ontologyProvider;
+
+    private static OfflineConfiguration offline;
+
     static {
+        offline = new OfflineConfigurationImpl(new Hashtable<String,Object>());
         reset();
     }
 
@@ -39,6 +56,11 @@ public class MockOsgiContext {
         parser = new Parser();
         parser.bindParsingProvider(new JenaParserProvider());
         parser.bindParsingProvider(new RdfJsonParsingProvider());
+
+        ontologyProvider = new ClerezzaOntologyProvider(tcManager, offline, parser);
+        Dictionary<String,Object> onmconf = new Hashtable<String,Object>();
+        onmconf.put(ONManager.ONTOLOGY_NETWORK_NS, "http://stanbol.apache.org/scope/");
+        onManager = new ONManagerImpl(ontologyProvider, offline, onmconf);
     }
 
 }

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/io/TestStorage.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/io/TestStorage.java?rev=1204657&r1=1204656&r2=1204657&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/io/TestStorage.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/io/TestStorage.java Mon Nov 21 19:24:44 2011
@@ -16,80 +16,84 @@
  */
 package org.apache.stanbol.ontologymanager.ontonet.io;
 
-import static org.apache.stanbol.ontologymanager.ontonet.MockOsgiContext.parser;
-import static org.apache.stanbol.ontologymanager.ontonet.MockOsgiContext.reset;
-import static org.apache.stanbol.ontologymanager.ontonet.MockOsgiContext.tcManager;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.apache.stanbol.ontologymanager.ontonet.MockOsgiContext.*;
+import static org.junit.Assert.*;
 
 import java.util.HashSet;
-import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.Set;
 
 import org.apache.clerezza.rdf.core.Graph;
 import org.apache.clerezza.rdf.core.Triple;
 import org.apache.clerezza.rdf.core.UriRef;
-import org.apache.clerezza.rdf.core.access.TcProvider;
 import org.apache.clerezza.rdf.utils.GraphNode;
 import org.apache.stanbol.ontologymanager.ontonet.Constants;
-import org.apache.stanbol.ontologymanager.ontonet.api.ONManager;
-import org.apache.stanbol.ontologymanager.ontonet.api.OfflineConfiguration;
 import org.apache.stanbol.ontologymanager.ontonet.api.io.OntologyInputSource;
 import org.apache.stanbol.ontologymanager.ontonet.api.io.RootOntologyIRISource;
-import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyProvider;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyScope;
-import org.apache.stanbol.ontologymanager.ontonet.impl.ONManagerImpl;
-import org.apache.stanbol.ontologymanager.ontonet.impl.OfflineConfigurationImpl;
-import org.apache.stanbol.ontologymanager.ontonet.impl.clerezza.ClerezzaOntologyProvider;
 import org.junit.After;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.semanticweb.owlapi.model.IRI;
+import org.semanticweb.owlapi.model.OWLOntology;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class TestStorage {
 
-    private static ONManager onm;
-
     private Logger log = LoggerFactory.getLogger(getClass());
 
     private String scopeId = "StorageTest";
 
-    private static OntologyProvider<TcProvider> provider;
-
     @BeforeClass
     public static void setup() {
         reset();
-        OfflineConfiguration offline = new OfflineConfigurationImpl(new Hashtable<String,Object>());
-        provider = new ClerezzaOntologyProvider(tcManager, offline, parser);
-        // Empty configurations are fine, but this time we provide a Clerezza context.
-        onm = new ONManagerImpl(provider, offline, new Hashtable<String,Object>());
     }
 
     @Test
     public void storageOnScopeCreation() throws Exception {
-        assertTrue(provider.getStore().listTripleCollections().isEmpty());
+
+        assertTrue(ontologyProvider.getStore().listTripleCollections().isEmpty());
         OntologyInputSource ois = new RootOntologyIRISource(IRI.create(getClass().getResource(
             "/ontologies/minorcharacters.owl")));
 
-        OntologyScope sc = onm.getOntologyScopeFactory().createOntologyScope(scopeId, ois);
+        OntologyScope sc = onManager.getOntologyScopeFactory().createOntologyScope(scopeId, ois);
 
         Set<Triple> triples = new HashSet<Triple>();
 
-        for (UriRef iri : provider.getStore().listTripleCollections()) {
+        for (UriRef iri : ontologyProvider.getStore().listTripleCollections()) {
             log.info("{}", iri.toString());
             UriRef entity = new UriRef(Constants.PEANUTS_MINOR_BASE + "#" + Constants.truffles);
-            Graph ctx = new GraphNode(entity, provider.getStore().getTriples(iri)).getNodeContext();
+            Graph ctx = new GraphNode(entity, ontologyProvider.getStore().getTriples(iri)).getNodeContext();
             Iterator<Triple> it = ctx.iterator();
             while (it.hasNext())
                 triples.add(it.next());
         }
 
-        assertFalse(provider.getStore().listTripleCollections().isEmpty());
+        assertFalse(ontologyProvider.getStore().listTripleCollections().isEmpty());
         assertEquals(3, triples.size());
+
+    }
+
+    /**
+     * If an ontology is removed from a scope, or the scope itself is torn down, this should not result in the
+     * deletion of that ontology in general.
+     */
+    @Test
+    public void storedOntologyOutlivesScope() throws Exception {
+        String ephemeralScopeId = "CaducousScope";
+        OntologyInputSource<OWLOntology> ois = new RootOntologyIRISource(IRI.create(getClass().getResource(
+            "/ontologies/nonexistentcharacters.owl")));
+        IRI ontologyId = ois.getRootOntology().getOntologyID().getOntologyIRI();
+        OntologyScope scope = onManager.getOntologyScopeFactory().createOntologyScope(ephemeralScopeId);
+        assertFalse(ontologyProvider.getOntologyReferences().contains(ontologyId.toString()));
+        scope.getCustomSpace().addOntology(ois);
+        assertTrue(ontologyProvider.getOntologyReferences().contains(ontologyId.toString()));
+        scope.getCustomSpace().removeOntology(ontologyId);
+        assertTrue(ontologyProvider.getOntologyReferences().contains(ontologyId.toString()));
+        // TODO find a more appropriate method to kill scopes?
+        scope.tearDown();
+        assertTrue(ontologyProvider.getOntologyReferences().contains(ontologyId.toString()));
     }
 
     @After

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestIndexing.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestIndexing.java?rev=1204657&r1=1204656&r2=1204657&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestIndexing.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestIndexing.java Mon Nov 21 19:24:44 2011
@@ -16,8 +16,11 @@
  */
 package org.apache.stanbol.ontologymanager.ontonet.ontology;
 
-import static org.apache.stanbol.ontologymanager.ontonet.MockOsgiContext.*;
-import static org.junit.Assert.*;
+import static org.apache.stanbol.ontologymanager.ontonet.MockOsgiContext.reset;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.net.URL;
@@ -36,6 +39,7 @@ import org.apache.stanbol.ontologymanage
 import org.apache.stanbol.owl.OWLOntologyManagerFactory;
 import org.junit.After;
 import org.junit.BeforeClass;
+import org.junit.Test;
 import org.semanticweb.owlapi.model.IRI;
 import org.semanticweb.owlapi.model.OWLOntology;
 import org.semanticweb.owlapi.model.OWLOntologyCreationException;
@@ -53,6 +57,7 @@ public class TestIndexing {
 
     private static ONManager onm;
     private static OntologyScope scope = null;
+
     @BeforeClass
     public static void setup() {
         final Dictionary<String,Object> emptyConfig = new Hashtable<String,Object>();
@@ -126,7 +131,7 @@ public class TestIndexing {
         assertFalse(index.isOntologyLoaded(iri_minor));
     }
 
-    // @Test
+    @Test
     public void testGetOntology() throws Exception {
         // Load the original objectRole ODP
         OWLOntology oObjRole = mgr.loadOntology(iri_main);
@@ -139,7 +144,7 @@ public class TestIndexing {
         // assertEquals(index.getOntology(objrole), oObjRole);
     }
 
-    // @Test
+    @Test
     public void testIsOntologyLoaded() {
         OntologyIndex index = onm.getOntologyIndex();
         IRI coreroot = IRI.create(scopeIri + "/core/root.owl");

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestOntologyScope.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestOntologyScope.java?rev=1204657&r1=1204656&r2=1204657&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestOntologyScope.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestOntologyScope.java Mon Nov 21 19:24:44 2011
@@ -19,20 +19,14 @@ package org.apache.stanbol.ontologymanag
 import static org.apache.stanbol.ontologymanager.ontonet.MockOsgiContext.*;
 import static org.junit.Assert.*;
 
-import java.util.Dictionary;
-import java.util.Hashtable;
-
 import org.apache.stanbol.ontologymanager.ontonet.Constants;
 import org.apache.stanbol.ontologymanager.ontonet.api.DuplicateIDException;
-import org.apache.stanbol.ontologymanager.ontonet.api.ONManager;
 import org.apache.stanbol.ontologymanager.ontonet.api.io.BlankOntologySource;
 import org.apache.stanbol.ontologymanager.ontonet.api.io.OntologyInputSource;
 import org.apache.stanbol.ontologymanager.ontonet.api.io.RootOntologySource;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyScope;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyScopeFactory;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.ScopeRegistry;
-import org.apache.stanbol.ontologymanager.ontonet.impl.ONManagerImpl;
-import org.apache.stanbol.ontologymanager.ontonet.impl.OfflineConfigurationImpl;
 import org.apache.stanbol.ontologymanager.ontonet.impl.ontology.OntologyScopeFactoryImpl;
 import org.apache.stanbol.ontologymanager.ontonet.impl.owlapi.CoreOntologySpaceImpl;
 import org.apache.stanbol.ontologymanager.ontonet.impl.owlapi.CustomOntologySpaceImpl;
@@ -58,20 +52,13 @@ public class TestOntologyScope {
 
     private static OntologyScopeFactory factory = null;
 
-    private static ONManager onm;
-
     public static String scopeIdBlank = "WackyRaces", scopeId1 = "Peanuts", scopeId2 = "CalvinAndHobbes";
 
     private static OntologyInputSource src1 = null, src2 = null;
 
     @BeforeClass
     public static void setup() {
-        // An ONManagerImpl with no store and a set namespace.
-        Dictionary<String,Object> onmconf = new Hashtable<String,Object>();
-        onmconf.put(ONManager.ONTOLOGY_NETWORK_NS, "http://stanbol.apache.org/scope/");
-        // The same hashtable can be recycled for the offline configuration.
-        onm = new ONManagerImpl(null, null, new OfflineConfigurationImpl(onmconf), onmconf);
-        factory = onm.getOntologyScopeFactory();
+        factory = onManager.getOntologyScopeFactory();
         if (factory == null) fail("Could not instantiate ontology space factory");
         OWLOntologyManager mgr = OWLOntologyManagerFactory.createOWLOntologyManager(null);
         try {
@@ -86,7 +73,7 @@ public class TestOntologyScope {
     public void cleanup() {
         reset();
     }
-    
+
     @Before
     public void cleanupScope() throws DuplicateIDException {
         if (factory != null) blankScope = factory.createOntologyScope(scopeIdBlank);
@@ -165,7 +152,7 @@ public class TestOntologyScope {
         assertTrue(shouldBeNotNull.getNamespace().toString().endsWith("/"));
 
         // Now set again the correct namespace.
-        factory.setNamespace(IRI.create(onm.getOntologyNetworkNamespace()));
+        factory.setNamespace(IRI.create(onManager.getOntologyNetworkNamespace()));
         shouldBeNotNull = null;
         try {
             shouldBeNotNull = factory.createOntologyScope(scopeId1, src1, src2);
@@ -234,9 +221,9 @@ public class TestOntologyScope {
 
     @Test
     public void testScopesRendering() {
-        ScopeRegistry reg = onm.getScopeRegistry();
-        OntologyScopeFactoryImpl scf = new OntologyScopeFactoryImpl(reg, onm.getOntologyScopeFactory()
-                .getNamespace(), onm.getOntologySpaceFactory());
+        ScopeRegistry reg = onManager.getScopeRegistry();
+        OntologyScopeFactoryImpl scf = new OntologyScopeFactoryImpl(reg, onManager.getOntologyScopeFactory()
+                .getNamespace(), onManager.getOntologySpaceFactory());
         OntologyScope scope = null, scope2 = null;
         try {
             scope = scf.createOntologyScope(scopeId1, src1, src2);

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestOntologySpaces.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestOntologySpaces.java?rev=1204657&r1=1204656&r2=1204657&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestOntologySpaces.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestOntologySpaces.java Mon Nov 21 19:24:44 2011
@@ -22,11 +22,8 @@ import static org.junit.Assert.*;
 import java.io.File;
 import java.net.URISyntaxException;
 import java.net.URL;
-import java.util.Hashtable;
 
 import org.apache.stanbol.ontologymanager.ontonet.Constants;
-import org.apache.stanbol.ontologymanager.ontonet.api.ONManager;
-import org.apache.stanbol.ontologymanager.ontonet.api.OfflineConfiguration;
 import org.apache.stanbol.ontologymanager.ontonet.api.io.BlankOntologySource;
 import org.apache.stanbol.ontologymanager.ontonet.api.io.OntologyInputSource;
 import org.apache.stanbol.ontologymanager.ontonet.api.io.ParentPathInputSource;
@@ -38,8 +35,6 @@ import org.apache.stanbol.ontologymanage
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.SessionOntologySpace;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.SpaceType;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.UnmodifiableOntologyCollectorException;
-import org.apache.stanbol.ontologymanager.ontonet.impl.ONManagerImpl;
-import org.apache.stanbol.ontologymanager.ontonet.impl.OfflineConfigurationImpl;
 import org.apache.stanbol.owl.OWLOntologyManagerFactory;
 import org.junit.After;
 import org.junit.BeforeClass;
@@ -63,10 +58,6 @@ public class TestOntologySpaces {
     private static OntologyInputSource<OWLOntology> inMemorySrc, minorSrc, dropSrc, nonexSrc;
     private static OWLAxiom linusIsHuman = null;
 
-    private static OfflineConfiguration offline;
-
-    private static ONManager onm;
-
     private static OWLOntology ont = null, ont2 = null;
 
     private static OntologyInputSource<OWLOntology> getLocalSource(String resourcePath, OWLOntologyManager mgr) throws OWLOntologyCreationException,
@@ -74,22 +65,17 @@ public class TestOntologySpaces {
         URL url = TestOntologySpaces.class.getResource(resourcePath);
         File f = new File(url.toURI());
         return new ParentPathInputSource(f, mgr != null ? mgr
-                : OWLOntologyManagerFactory.createOWLOntologyManager(offline.getOntologySourceLocations()
-                        .toArray(new IRI[0])));
+                : OWLOntologyManagerFactory.createOWLOntologyManager(onManager.getOfflineConfiguration()
+                        .getOntologySourceLocations().toArray(new IRI[0])));
     }
 
     @BeforeClass
     public static void setup() throws Exception {
-
-        offline = new OfflineConfigurationImpl(new Hashtable<String,Object>());
-
-        // An ONManagerImpl with no store and default settings
-        onm = new ONManagerImpl(null, null, offline, new Hashtable<String,Object>());
-        factory = onm.getOntologySpaceFactory();
+        factory = onManager.getOntologySpaceFactory();
         if (factory == null) fail("Could not instantiate ontology space factory");
 
-        OWLOntologyManager mgr = OWLOntologyManagerFactory.createOWLOntologyManager(offline
-                .getOntologySourceLocations().toArray(new IRI[0]));
+        OWLOntologyManager mgr = OWLOntologyManagerFactory.createOWLOntologyManager(onManager
+                .getOfflineConfiguration().getOntologySourceLocations().toArray(new IRI[0]));
         OWLDataFactory df = mgr.getOWLDataFactory();
 
         ont = mgr.createOntology(baseIri);
@@ -246,8 +232,8 @@ public class TestOntologySpaces {
         space.addOntology(inMemorySrc);
         space.addOntology(nonexSrc);
         // The other remote ontologies may change base IRI...
-        assertTrue(space.hasOntology(ont.getOntologyID().getOntologyIRI())
-                   && space.hasOntology(dropId) && space.hasOntology(nonexId));
+        assertTrue(space.hasOntology(ont.getOntologyID().getOntologyIRI()) && space.hasOntology(dropId)
+                   && space.hasOntology(nonexId));
         space.removeOntology(dropId);
         assertFalse(space.hasOntology(dropId));
         space.removeOntology(nonexId);
@@ -256,7 +242,7 @@ public class TestOntologySpaces {
 
     }
 
-//    @Test
+    // @Test
     public void testSessionModification() throws Exception {
         SessionOntologySpace space = factory.createSessionOntologySpace(scopeId);
         space.setUp();

Modified: incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionByIdResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionByIdResource.java?rev=1204657&r1=1204656&r2=1204657&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionByIdResource.java (original)
+++ incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionByIdResource.java Mon Nov 21 19:24:44 2011
@@ -28,11 +28,11 @@ import javax.ws.rs.core.Response.Status;
 import javax.ws.rs.core.UriInfo;
 
 import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.format.KRFormat;
 import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
 import org.apache.stanbol.ontologymanager.ontonet.api.ONManager;
 import org.apache.stanbol.ontologymanager.ontonet.api.session.Session;
 import org.apache.stanbol.ontologymanager.ontonet.api.session.SessionManager;
-import org.apache.stanbol.ontologymanager.ontonet.impl.renderers.SessionRenderer;
 
 @Path("/ontonet/session/{id:.+}")
 public class SessionByIdResource extends BaseStanbolResource {
@@ -50,7 +50,8 @@ public class SessionByIdResource extends
     }
 
     @GET
-    @Produces("application/rdf+xml")
+    @Produces(value = {KRFormat.RDF_XML, KRFormat.OWL_XML, KRFormat.TURTLE, KRFormat.FUNCTIONAL_OWL,
+                       KRFormat.MANCHESTER_OWL, KRFormat.RDF_JSON})
     public Response getSessionMetadataOntology(@PathParam("id") String sessionId,
                                                @Context UriInfo uriInfo,
                                                @Context HttpHeaders headers) {
@@ -58,10 +59,9 @@ public class SessionByIdResource extends
         Session ses = null;
         SessionManager mgr = onm.getSessionManager();
         ses = mgr.getSession(sessionId);
-        if (ses == null) return Response.status(Status.NO_CONTENT).build();
-
-        return Response.ok(SessionRenderer.getSessionMetadataRDFasOntology(ses)).build();
-
+        if (ses == null) return Response.status(Status.NOT_FOUND).build();
+        // return Response.ok(SessionRenderer.getSessionMetadataRDFasOntology(ses)).build();
+        return Response.ok(ses.asOWLOntology(false)).build();
     }
 
 }

Modified: incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionsResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionsResource.java?rev=1204657&r1=1204656&r2=1204657&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionsResource.java (original)
+++ incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionsResource.java Mon Nov 21 19:24:44 2011
@@ -29,6 +29,8 @@ import static org.apache.stanbol.commons
 import static org.apache.stanbol.commons.web.base.format.KRFormat.TURTLE;
 
 import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.servlet.ServletContext;
 import javax.ws.rs.Consumes;
@@ -43,9 +45,11 @@ import javax.ws.rs.WebApplicationExcepti
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
 import javax.ws.rs.core.UriInfo;
 
 import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.format.KRFormat;
 import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
 import org.apache.stanbol.ontologymanager.ontonet.api.ONManager;
 import org.apache.stanbol.ontologymanager.ontonet.api.io.RootOntologyIRISource;
@@ -58,9 +62,18 @@ import org.apache.stanbol.ontologymanage
 import org.apache.stanbol.ontologymanager.ontonet.api.session.Session;
 import org.apache.stanbol.ontologymanager.ontonet.api.session.SessionManager;
 import org.apache.stanbol.ontologymanager.ontonet.impl.renderers.SessionRenderer;
+import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.model.AddAxiom;
+import org.semanticweb.owlapi.model.AddImport;
 import org.semanticweb.owlapi.model.IRI;
+import org.semanticweb.owlapi.model.OWLClass;
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.OWLIndividual;
+import org.semanticweb.owlapi.model.OWLNamedIndividual;
 import org.semanticweb.owlapi.model.OWLOntology;
+import org.semanticweb.owlapi.model.OWLOntologyChange;
 import org.semanticweb.owlapi.model.OWLOntologyCreationException;
+import org.semanticweb.owlapi.model.OWLOntologyManager;
 
 import com.sun.jersey.api.view.Viewable;
 import com.sun.jersey.multipart.FormDataParam;
@@ -199,6 +212,31 @@ public class SessionsResource extends Ba
 
     }
 
+    @GET
+    @Produces(value = {KRFormat.RDF_XML, KRFormat.OWL_XML, KRFormat.TURTLE, KRFormat.FUNCTIONAL_OWL,
+                       KRFormat.MANCHESTER_OWL, KRFormat.RDF_JSON})
+    public Response listSessions(@Context UriInfo uriInfo, @Context HttpHeaders headers) {
+
+        SessionManager sesMgr = onm.getSessionManager();
+        OWLOntologyManager ontMgr = OWLManager.createOWLOntologyManager();
+        OWLDataFactory df = ontMgr.getOWLDataFactory();
+        OWLClass cSession = df.getOWLClass(IRI.create("http://stanbol.apache.org/ontologies/meta/Session"));
+
+        OWLOntology o;
+        try {
+            o = ontMgr.createOntology(IRI.create(uriInfo.getRequestUri()));
+            List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>();
+            for (String id : sesMgr.getRegisteredSessionIDs()) {
+                OWLNamedIndividual ind = df.getOWLNamedIndividual(IRI.create(sesMgr.getSessionNamespace() + id));
+                changes.add(new AddAxiom(o, df.getOWLClassAssertionAxiom(cSession, ind)));
+            }
+            ontMgr.applyChanges(changes);
+        } catch (OWLOntologyCreationException e) {
+            throw new WebApplicationException(e, Status.INTERNAL_SERVER_ERROR);
+        }
+        return Response.ok(o).build();
+    }
+
     /**
      * FIXME what are these path params anyway?
      * 

Modified: incubator/stanbol/trunk/rules/refactor/src/main/java/org/apache/stanbol/rules/refactor/impl/RefactorerImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/refactor/src/main/java/org/apache/stanbol/rules/refactor/impl/RefactorerImpl.java?rev=1204657&r1=1204656&r2=1204657&view=diff
==============================================================================
--- incubator/stanbol/trunk/rules/refactor/src/main/java/org/apache/stanbol/rules/refactor/impl/RefactorerImpl.java (original)
+++ incubator/stanbol/trunk/rules/refactor/src/main/java/org/apache/stanbol/rules/refactor/impl/RefactorerImpl.java Mon Nov 21 19:24:44 2011
@@ -122,7 +122,7 @@ public class RefactorerImpl implements R
     public static final String _AUTO_GENERATED_ONTOLOGY_IRI_DEFAULT = "http://kres.iksproject.eu/semion/autoGeneratedOntology";
     public static final String _HOST_NAME_AND_PORT_DEFAULT = "localhost:8080";
     public static final String _REFACTORING_SCOPE_DEFAULT = "refactoring";
-    public static final String _REFACTORING_SESSION_ID_DEFAULT = "http://kres.iksproject.eu/session/refactoring";
+    public static final String _REFACTORING_SESSION_ID_DEFAULT = /* "http://kres.iksproject.eu/session/refactoring" */"refactoring";
     // public static final String _REFACTORING_SPACE_DEFAULT = "http://kres.iksproject.eu/space/refactoring";
 
     @Property(value = _AUTO_GENERATED_ONTOLOGY_IRI_DEFAULT)