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


Reply via email to