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)