Author: alexdma
Date: Thu Jul 28 11:35:40 2011
New Revision: 1151799
URL: http://svn.apache.org/viewvc?rev=1151799&view=rev
Log:
STANBOL-285 : RegistryOntology now manages multiple raw OWL instances, one per
library (TODO: propagate the effects of CRUD operations in the model all the
way to raw ontologies).
Modified:
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/RegistryManager.java
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/model/Library.java
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/model/RegistryOntology.java
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/model/LibraryImpl.java
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/model/RegistryOntologyImpl.java
incubator/stanbol/trunk/ontologymanager/registry/src/test/java/org/apache/stanbol/ontologymanager/registry/TestOntologyRegistry.java
Modified:
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/RegistryManager.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/RegistryManager.java?rev=1151799&r1=1151798&r2=1151799&view=diff
==============================================================================
---
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/RegistryManager.java
(original)
+++
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/RegistryManager.java
Thu Jul 28 11:35:40 2011
@@ -89,7 +89,7 @@ public interface RegistryManager extends
/**
* Determines if the registry manager is set to load its resources only
when a specific request for them
- * (e.g. by a call to {@link RegistryOntology#asOWLOntology()} or {@link
Library#getOntologies()} is
+ * (e.g. by a call to {@link RegistryOntology#getRawOntology(IRI)} or
{@link Library#getOntologies()} is
* issued).
*
* @return true if set to load resources only upon request, false if set
to load all resources eagerly
Modified:
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/model/Library.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/model/Library.java?rev=1151799&r1=1151798&r2=1151799&view=diff
==============================================================================
---
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/model/Library.java
(original)
+++
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/model/Library.java
Thu Jul 28 11:35:40 2011
@@ -19,6 +19,7 @@ package org.apache.stanbol.ontologymanag
import java.util.Set;
import
org.apache.stanbol.ontologymanager.registry.api.RegistryContentException;
+import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyManager;
@@ -63,7 +64,7 @@ public interface Library extends Registr
/**
* Causes all the ontologies referenced by this library to be loaded, so
that when
- * {@link RegistryOntology#asOWLOntology()} is invoked on one of its
children, it will return the
+ * {@link RegistryOntology#getRawOntology(IRI)} is invoked on one of its
children, it will return the
* corresponding OWL ontology, if a valid one was parsed from its location.
*
* @param mgr
Modified:
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/model/RegistryOntology.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/model/RegistryOntology.java?rev=1151799&r1=1151798&r2=1151799&view=diff
==============================================================================
---
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/model/RegistryOntology.java
(original)
+++
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/api/model/RegistryOntology.java
Thu Jul 28 11:35:40 2011
@@ -16,7 +16,10 @@
*/
package org.apache.stanbol.ontologymanager.registry.api.model;
+import java.util.Map;
+
import
org.apache.stanbol.ontologymanager.registry.api.RegistryOntologyNotLoadedException;
+import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyManager;
@@ -30,7 +33,7 @@ import org.semanticweb.owlapi.model.OWLO
* <br/>
* Once the corresponding ontology has been loaded (e.g. by a call to
* {@link Library#loadOntologies(OWLOntologyManager)}), the corresponding
{@link OWLOntology} object is
- * available via calls to {@link #asOWLOntology()}.
+ * available via calls to {@link #getRawOntology(IRI)}.
*/
public interface RegistryOntology extends RegistryItem {
@@ -39,6 +42,8 @@ public interface RegistryOntology extend
*/
final Type type = Type.ONTOLOGY;
+ Map<IRI,OWLOntology> getRawOntologies() throws
RegistryOntologyNotLoadedException;
+
/**
* Returns the {@link OWLOntology} object corresponding to this registry
ontology. If the ontology was not
* loaded, a {@link RegistryOntologyNotLoadedException} will be
thrown.<br/>
@@ -48,19 +53,22 @@ public interface RegistryOntology extend
* invoking a load method may or may not cause the content to be available
to this method before it
* returns.
*
+ * @param libraryID
+ * TODO
+ *
* @return the OWL ontology corresponding to this registry ontology.
* @throws RegistryOntologyNotLoadedException
* if the ontology is not loaded.
*/
- OWLOntology asOWLOntology() throws RegistryOntologyNotLoadedException;
-
+ OWLOntology getRawOntology(IRI libraryID) throws
RegistryOntologyNotLoadedException;
+
/**
* Returns the {@link OWLOntology} object corresponding to this registry
ontology. Note that the method
* does not check whether the registry item ID matches the ontology ID or
its physical location.
- *
+ * @param libraryID TODO
* @param owl
* the OWL ontology corresponding to this registry ontology.
*/
- void setOWLOntology(OWLOntology owl);
+ void setRawOntology(IRI libraryID, OWLOntology owl);
}
Modified:
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/model/LibraryImpl.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/model/LibraryImpl.java?rev=1151799&r1=1151798&r2=1151799&view=diff
==============================================================================
---
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/model/LibraryImpl.java
(original)
+++
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/model/LibraryImpl.java
Thu Jul 28 11:35:40 2011
@@ -83,7 +83,7 @@ public class LibraryImpl extends Abstrac
Set<OWLOntology> ontologies = new HashSet<OWLOntology>();
for (RegistryItem child : getChildren()) {
if (child instanceof RegistryOntology) {
- OWLOntology o = ((RegistryOntology) child).asOWLOntology();
+ OWLOntology o = ((RegistryOntology)
child).getRawOntology(this.getIRI());
// Should never be null if the library was loaded correctly
(an error should have already been
// thrown when loading it), but just in case.
if (o != null) ontologies.add(o);
@@ -104,6 +104,13 @@ public class LibraryImpl extends Abstrac
}
@Override
+ public void removeChild(RegistryItem child) {
+ super.removeChild(child);
+ // Also unload the ontology version that comes from this library.
+ if (child instanceof RegistryOntology) ((RegistryOntology)
child).setRawOntology(getIRI(), null);
+ }
+
+ @Override
public synchronized void loadOntologies(OWLOntologyManager mgr) {
if (mgr == null) throw new IllegalArgumentException("A null ontology
manager is not allowed.");
for (RegistryItem item : getChildren()) {
@@ -111,11 +118,11 @@ public class LibraryImpl extends Abstrac
RegistryOntology o = (RegistryOntology) item;
IRI id = o.getIRI();
try {
- o.setOWLOntology(mgr.loadOntology(id));
+ o.setRawOntology(getIRI(), mgr.loadOntology(id));
} catch (OWLOntologyAlreadyExistsException e) {
- o.setOWLOntology(mgr.getOntology(e.getOntologyID()));
+ o.setRawOntology(getIRI(),
mgr.getOntology(e.getOntologyID()));
} catch (OWLOntologyDocumentAlreadyExistsException e) {
-
o.setOWLOntology(mgr.getOntology(e.getOntologyDocumentIRI()));
+ o.setRawOntology(getIRI(),
mgr.getOntology(e.getOntologyDocumentIRI()));
} catch (OWLOntologyCreationException e) {
log.error("Failed to load ontology " + id, e);
}
Modified:
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/model/RegistryOntologyImpl.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/model/RegistryOntologyImpl.java?rev=1151799&r1=1151798&r2=1151799&view=diff
==============================================================================
---
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/model/RegistryOntologyImpl.java
(original)
+++
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/model/RegistryOntologyImpl.java
Thu Jul 28 11:35:40 2011
@@ -16,14 +16,22 @@
*/
package org.apache.stanbol.ontologymanager.registry.impl.model;
+import java.util.HashMap;
+import java.util.Map;
+
import
org.apache.stanbol.ontologymanager.registry.api.RegistryOntologyNotLoadedException;
import org.apache.stanbol.ontologymanager.registry.api.model.RegistryOntology;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLOntology;
+/**
+ *
+ * TODO: propagate removal of children in the model to registered raw
ontologies.
+ *
+ */
public class RegistryOntologyImpl extends AbstractRegistryItem implements
RegistryOntology {
- private OWLOntology owl;
+ private Map<IRI,OWLOntology> owl = new HashMap<IRI,OWLOntology>();
public RegistryOntologyImpl(IRI iri) {
super(iri);
@@ -34,19 +42,25 @@ public class RegistryOntologyImpl extend
}
@Override
- public OWLOntology asOWLOntology() throws
RegistryOntologyNotLoadedException {
- fireContentRequested(this);
+ public Map<IRI,OWLOntology> getRawOntologies() throws
RegistryOntologyNotLoadedException {
return owl;
}
@Override
+ public OWLOntology getRawOntology(IRI libraryID) throws
RegistryOntologyNotLoadedException {
+ fireContentRequested(this);
+ return owl.get(libraryID);
+ }
+
+ @Override
public Type getType() {
return type;
}
@Override
- public void setOWLOntology(OWLOntology owl) {
- this.owl = owl;
+ public void setRawOntology(IRI libraryID, OWLOntology owl) {
+ if (owl == null) this.owl.remove(libraryID);
+ this.owl.put(libraryID, owl);
}
}
Modified:
incubator/stanbol/trunk/ontologymanager/registry/src/test/java/org/apache/stanbol/ontologymanager/registry/TestOntologyRegistry.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/registry/src/test/java/org/apache/stanbol/ontologymanager/registry/TestOntologyRegistry.java?rev=1151799&r1=1151798&r2=1151799&view=diff
==============================================================================
---
incubator/stanbol/trunk/ontologymanager/registry/src/test/java/org/apache/stanbol/ontologymanager/registry/TestOntologyRegistry.java
(original)
+++
incubator/stanbol/trunk/ontologymanager/registry/src/test/java/org/apache/stanbol/ontologymanager/registry/TestOntologyRegistry.java
Thu Jul 28 11:35:40 2011
@@ -118,14 +118,8 @@ public class TestOntologyRegistry {
for (Registry r : rs) {
// The nonexistent library should also be included, if using the
more powerful algorithm.
- if (Locations._REGISTRY_TEST.equals(r.getIRI())) assertEquals(3,
r.getChildren().length); // set
-
// to 2
-
// if
-
// using
-
// the
-
// less
-
// powerful
-
// algorithm.
+ int count = 3; // set to 2 if using the less powerful algorithm.
+ if (Locations._REGISTRY_TEST.equals(r.getIRI()))
assertEquals(count, r.getChildren().length);
else if (Locations._REGISTRY_TEST_ADDITIONS.equals(r.getIRI()))
assertEquals(1,
r.getChildren().length);
// check