Author: alexdma
Date: Fri Mar 16 19:35:07 2012
New Revision: 1301713

URL: http://svn.apache.org/viewvc?rev=1301713&view=rev
Log:
Another improvement for STANBOL-468 (saves another 30 lines of code) : now the 
enhancement graph is also added to the session, which is then exported for 
refactoring with the merge flag set. Earlier, all session contents were 
manually merged with each other and the enhancement graph. (TODO merge entity 
signatures *before* adding them to the session: this will be the major disk 
space saver)

Modified:
    
incubator/stanbol/trunk/enhancer/engines/refactor/src/main/java/org/apache/stanbol/enhancer/engines/refactor/RefactorEnhancementEngine.java

Modified: 
incubator/stanbol/trunk/enhancer/engines/refactor/src/main/java/org/apache/stanbol/enhancer/engines/refactor/RefactorEnhancementEngine.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/engines/refactor/src/main/java/org/apache/stanbol/enhancer/engines/refactor/RefactorEnhancementEngine.java?rev=1301713&r1=1301712&r2=1301713&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/enhancer/engines/refactor/src/main/java/org/apache/stanbol/enhancer/engines/refactor/RefactorEnhancementEngine.java
 (original)
+++ 
incubator/stanbol/trunk/enhancer/engines/refactor/src/main/java/org/apache/stanbol/enhancer/engines/refactor/RefactorEnhancementEngine.java
 Fri Mar 16 19:35:07 2012
@@ -26,11 +26,9 @@ import java.util.Collections;
 import java.util.Dictionary;
 import java.util.Enumeration;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.clerezza.rdf.core.MGraph;
 import org.apache.clerezza.rdf.core.Resource;
@@ -91,8 +89,6 @@ import org.semanticweb.owlapi.model.IRI;
 import org.semanticweb.owlapi.model.OWLOntology;
 import org.semanticweb.owlapi.model.OWLOntologyCreationException;
 import org.semanticweb.owlapi.model.OWLOntologyManager;
-import org.semanticweb.owlapi.model.OWLOntologySetProvider;
-import org.semanticweb.owlapi.util.OWLOntologyMerger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -279,8 +275,8 @@ public class RefactorEnhancementEngine e
                           + engineConfiguration.getScope(), this);
 
             } catch (UnmodifiableOntologyCollectorException e) {
-                log.error("Cannot populate locked session '{}'. Aborting.", 
session.getID());
-                break;
+                throw new EngineException("Cannot populate locked session '" + 
session.getID()
+                                          + "'. Aborting.", e);
             } catch (OWLOntologyCreationException e) {
                 log.error("Failed to obtain ontology for entity " + 
entityReference + ". Skipping.", e);
                 continue;
@@ -291,101 +287,80 @@ public class RefactorEnhancementEngine e
 
         }
 
-        // Now merge the RDF from the TBox - the ontologies - and the ABox - 
the RDF data fetched
-        final OWLOntologyManager omgr = OWLManager.createOWLOntologyManager();
-
-        OWLOntologySetProvider provider = new OWLOntologySetProvider() {
-
-            @Override
-            public Set<OWLOntology> getOntologies() {
-                Set<OWLOntology> ontologies = new HashSet<OWLOntology>();
-                
ontologies.addAll(session.getManagedOntologies(OWLOntology.class, true));
-                /*
-                 * We add to the set the graph containing the metadata 
generated by previous enhancement
-                 * engines. It is important becaus we want to menage during 
the refactoring also some
-                 * information fron that graph. As the graph is provided as a 
Clerezza MGraph, we first need
-                 * to convert it to an OWLAPI OWLOntology. There is no chance 
that the mGraph could be null as
-                 * it was previously controlled by the JobManager through the 
canEnhance method and the
-                 * computeEnhancement is always called iff the former returns 
true.
-                 */
-                OWLOntology fiseMetadataOntology = OWLAPIToClerezzaConverter
-                        .clerezzaGraphToOWLOntology(mGraph);
-                ontologies.add(fiseMetadataOntology);
-                return ontologies;
-            }
-        };
+        try {
+            /*
+             * We add to the set the graph containing the metadata generated 
by previous enhancement engines.
+             * It is important becaus we want to menage during the refactoring 
also some information fron that
+             * graph. As the graph is provided as a Clerezza MGraph, we first 
need to convert it to an OWLAPI
+             * OWLOntology.
+             * 
+             * There is no chance that the mGraph could be null as it was 
previously controlled by the
+             * JobManager through the canEnhance method and the 
computeEnhancement is always called iff the
+             * former returns true.
+             */
+            session.addOntology(new 
RootOntologySource(OWLAPIToClerezzaConverter
+                    .clerezzaGraphToOWLOntology(mGraph)));
+        } catch (UnmodifiableOntologyCollectorException e1) {
+            throw new EngineException("Cannot add enhancement graph to OntoNet 
session for refactoring", e1);
+        }
 
         /*
-         * We merge all the ontologies from the session into a single ontology 
that will be used for the
-         * refactoring.
+         * Export the entire session (incl. entities and enhancement graph) as 
a single merged ontology.
          * 
-         * TODO the refactorer should have methods to accommodate 
OntologyCollector instead.
+         * TODO the refactorer should have methods to accommodate an 
OntologyCollector directly instead.
          */
-        OWLOntologyMerger merger = new OWLOntologyMerger(provider);
-        OWLOntology ontology;
-        try {
-            ontology = merger.createMergedOntology(omgr,
-                
IRI.create("http://fise.iks-project.eu/dulcifier/integrity-check";));
+        OWLOntology ontology = session.export(OWLOntology.class, true);
+        log.debug("Refactoring recipe IRI is : " + 
engineConfiguration.getRecipeId());
 
-            log.debug("Refactoring recipe IRI is : " + 
engineConfiguration.getRecipeId());
-
-            /*
-             * We pass the ontology and the recipe IRI to the Refactor that 
returns the refactored graph
-             * expressed by using the given vocabulary.
-             */
-            try {
-                /*
-                 * To perform the refactoring of the ontology to a given 
vocabulary we use the Stanbol
-                 * Refactor.
-                 */
-                Recipe recipe = 
ruleStore.getRecipe(IRI.create(engineConfiguration.getRecipeId()));
-
-                log.debug("Recipe {} contains {} rules.", recipe, 
recipe.getkReSRuleList().size());
-                log.debug("The ontology to be refactor is {}", ontology);
+        /*
+         * We pass the ontology and the recipe IRI to the Refactor that 
returns the refactored graph expressed
+         * by using the given vocabulary.
+         */
+        try {
+            // To perform the refactoring of the ontology to a given 
vocabulary we use the Stanbol Refactor.
+            Recipe recipe = 
ruleStore.getRecipe(IRI.create(engineConfiguration.getRecipeId()));
 
-                ontology = refactorer.ontologyRefactoring(ontology,
-                    IRI.create(engineConfiguration.getRecipeId()));
+            log.debug("Recipe {} contains {} rules.", recipe, 
recipe.getkReSRuleList().size());
+            log.debug("The ontology to be refactor is {}", ontology);
 
-            } catch (RefactoringException e) {
-                log.error("The refactoring engine failed the execution.", e);
-            } catch (NoSuchRecipeException e) {
-                log.error("The recipe with ID " + 
engineConfiguration.getRecipeId() + " does not exists", e);
-            }
+            ontology = refactorer
+                    .ontologyRefactoring(ontology, 
IRI.create(engineConfiguration.getRecipeId()));
 
-            log.debug("Merged ontologies in " + ontology);
+        } catch (RefactoringException e) {
+            log.error("The refactoring engine failed the execution.", e);
+        } catch (NoSuchRecipeException e) {
+            log.error("The recipe with ID " + 
engineConfiguration.getRecipeId() + " does not exists", e);
+        }
 
-            /*
-             * The new generated ontology is converted to Clarezza format and 
than added os substitued to the
-             * old mGraph.
-             */
-            if (engineConfiguration.isInGraphAppendMode()) {
-                log.debug("Metadata of the content will replace old ones.", 
this);
-            } else {
-                mGraph.clear();
-                log.debug("Content metadata will be appended to the existing 
ones.", this);
-            }
-            
mGraph.addAll(OWLAPIToClerezzaConverter.owlOntologyToClerezzaTriples(ontology));
+        /*
+         * The newly generated ontology is converted to Clarezza format and 
then added os substitued to the
+         * old mGraph.
+         */
+        if (engineConfiguration.isInGraphAppendMode()) {
+            log.debug("Metadata of the content will replace old ones.", this);
+        } else {
+            mGraph.clear();
+            log.debug("Content metadata will be appended to the existing 
ones.", this);
+        }
+        
mGraph.addAll(OWLAPIToClerezzaConverter.owlOntologyToClerezzaTriples(ontology));
 
-            /*
-             * The session needs to be destroyed, as it is no more useful.
-             * 
-             * clear contents before destroying (FIXME only do this until this 
is implemented in the
-             * destroySession() method).
-             */
-            for (IRI iri : session.listManagedOntologies()) {
-                try {
-                    String key = ontologyProvider.getKey(iri);
-                    ontologyProvider.getStore().deleteTripleCollection(new 
UriRef(key));
-                } catch (Exception ex) {
-                    log.error("Failed to delete triple collection " + iri, ex);
-                    continue;
-                }
+        /*
+         * The session needs to be destroyed, as it is no more useful.
+         * 
+         * clear contents before destroying (FIXME only do this until this is 
implemented in the
+         * destroySession() method).
+         */
+        for (IRI iri : session.listManagedOntologies()) {
+            try {
+                String key = ontologyProvider.getKey(iri);
+                ontologyProvider.getStore().deleteTripleCollection(new 
UriRef(key));
+            } catch (Exception ex) {
+                log.error("Failed to delete triple collection " + iri, ex);
+                continue;
             }
-            sessionManager.destroySession(session.getID());
-
-        } catch (OWLOntologyCreationException e) {
-            throw new EngineException("Cannot create the ontology for the 
refactoring", e);
         }
+        sessionManager.destroySession(session.getID());
+
     }
 
     @SuppressWarnings("unchecked")


Reply via email to