You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by ci...@apache.org on 2011/04/11 08:30:01 UTC

svn commit: r1090949 - in /incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza: ClerezzaStoreSynchronizer.java GraphSynchronizer.java SynchronizerGraphListener.java

Author: cihan
Date: Mon Apr 11 06:30:01 2011
New Revision: 1090949

URL: http://svn.apache.org/viewvc?rev=1090949&view=rev
Log:
STANBOL-157: Updated MGraph listeners to handle ontology import declarations.

Modified:
    incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/ClerezzaStoreSynchronizer.java
    incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/GraphSynchronizer.java
    incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/SynchronizerGraphListener.java

Modified: incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/ClerezzaStoreSynchronizer.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/ClerezzaStoreSynchronizer.java?rev=1090949&r1=1090948&r2=1090949&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/ClerezzaStoreSynchronizer.java (original)
+++ incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/ClerezzaStoreSynchronizer.java Mon Apr 11 06:30:01 2011
@@ -1,5 +1,6 @@
 package org.apache.stanbol.ontologymanager.store.clerezza;
 
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -20,6 +21,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.Service;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
 import org.apache.stanbol.ontologymanager.store.api.ResourceManager;
 import org.apache.stanbol.ontologymanager.store.api.StoreSynchronizer;
 import org.osgi.service.component.ComponentContext;
@@ -34,6 +36,8 @@ import com.hp.hpl.jena.ontology.OntModel
 import com.hp.hpl.jena.ontology.OntModelSpec;
 import com.hp.hpl.jena.rdf.model.Model;
 import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.rdf.model.ResourceFactory;
+import com.hp.hpl.jena.vocabulary.OWL;
 
 /**
  * Synchronizer for {@link ResourceManager}. Uses a {@link TcManager} to access graphs stored by Clerezza.
@@ -48,7 +52,10 @@ public class ClerezzaStoreSynchronizer i
 
     @Property(name = "org.apache.stanbol.ontologymanager.store.ResourceManager")
     private ResourceManager resourceManager;
-
+    
+    @Property(name="org.apache.stanbol.ontologymanager.store.PersistenceStore")
+    private PersistenceStore store;
+    
     @Reference
     private TcManager tcManager;
 
@@ -60,6 +67,7 @@ public class ClerezzaStoreSynchronizer i
         // .get(IJenaPersistenceProvider.class.getName());
 
         this.resourceManager = (ResourceManager) properties.get(ResourceManager.class.getName());
+        this.store = (PersistenceStore) properties.get(PersistenceStore.class.getName());
 
         // FIXME Is it necessary to listen Immutable Graphs
 
@@ -166,7 +174,7 @@ public class ClerezzaStoreSynchronizer i
         try {
             JenaGraph jgraph = new JenaGraph(mgraph);
             Model model = ModelFactory.createModelForGraph(jgraph);
-            GraphSynchronizer es = new GraphSynchronizer(resourceManager, model, graphURI);
+            GraphSynchronizer es = new GraphSynchronizer(resourceManager, store, tcManager, model, graphURI);
             es.synchronize();
         } finally {
             lock.unlock();
@@ -198,7 +206,16 @@ public class ClerezzaStoreSynchronizer i
                 } else if (individual != null) {
                     resourceManager.registerIndividual(graphURI, resourceURI);
                     logger.info("Added Individual" + resourceURI);
-                } else {
+                } else if(ontology.listStatements(null, OWL.imports, ResourceFactory.createResource(resourceURI)).hasNext()){
+                    try {
+                        store.saveOntology(new URL(resourceURI), resourceURI, "UTF-8");
+                        logger.info("Added imported ontology: {}", resourceURI);
+                    } catch (Exception e) {
+                        logger.warn("Failed to import ontology: {}", resourceURI);
+                    }
+                }
+                
+                else {
                     // Not found, delete if the resource belongs to this graph
                     String ontologyURI = resourceManager.resolveOntologyURIFromResourceURI(resourceURI);
                     if (ontologyURI != null && ontologyURI.equals(graphURI)) {

Modified: incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/GraphSynchronizer.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/GraphSynchronizer.java?rev=1090949&r1=1090948&r2=1090949&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/GraphSynchronizer.java (original)
+++ incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/GraphSynchronizer.java Mon Apr 11 06:30:01 2011
@@ -1,7 +1,12 @@
 package org.apache.stanbol.ontologymanager.store.clerezza;
 
+import java.net.URL;
 import java.util.List;
+import java.util.Set;
 
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.TcManager;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
 import org.apache.stanbol.ontologymanager.store.api.ResourceManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -19,11 +24,19 @@ public class GraphSynchronizer {
     Logger logger = LoggerFactory.getLogger(GraphSynchronizer.class);
 
     private ResourceManager resourceManager;
+    private PersistenceStore store;
+    private TcManager tcManager;
     private OntModel model;
     private String graphURI;
 
-    public GraphSynchronizer(ResourceManager resourceManager, Model model, String graphURI) {
+    public GraphSynchronizer(ResourceManager resourceManager,
+                             PersistenceStore store,
+                             TcManager tcManager,
+                             Model model,
+                             String graphURI) {
         this.resourceManager = resourceManager;
+        this.store = store;
+        this.tcManager = tcManager;
         this.model = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM, model);
         this.graphURI = graphURI;
     }
@@ -36,6 +49,7 @@ public class GraphSynchronizer {
         synchronizeObjectProperties();
         synchronizeDataProperties();
         synchronizeIndividuals();
+        synchronizeImports();
 
     }
 
@@ -109,7 +123,26 @@ public class GraphSynchronizer {
                 logger.warn("Resource found on another ontology (This case will be handled later)");
             }
         }
+    }
 
+    private void synchronizeImports() {
+        for (String uri : model.listImportedOntologyURIs()) {
+            Set<UriRef> graphs = tcManager.listTripleCollections();
+            UriRef current = new UriRef(uri);
+            boolean found = false;
+            for (UriRef currentGraph : graphs) {
+                if (currentGraph.equals(current)) {
+                    found = true;
+                }
+            }
+            if (!found) {
+                try {
+                    store.saveOntology(new URL(uri), uri, "UTF-8");
+                } catch (Exception e) {
+                    logger.debug("Registered imported graph with uri {}", uri);
+                }
+            }
+        }
     }
 
 }

Modified: incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/SynchronizerGraphListener.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/SynchronizerGraphListener.java?rev=1090949&r1=1090948&r2=1090949&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/SynchronizerGraphListener.java (original)
+++ incubator/stanbol/trunk/ontologymanager/store/clerezza/src/main/java/org/apache/stanbol/ontologymanager/store/clerezza/SynchronizerGraphListener.java Mon Apr 11 06:30:01 2011
@@ -4,6 +4,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.clerezza.rdf.core.NonLiteral;
+import org.apache.clerezza.rdf.core.Resource;
 import org.apache.clerezza.rdf.core.Triple;
 import org.apache.clerezza.rdf.core.UriRef;
 import org.apache.clerezza.rdf.core.event.GraphEvent;
@@ -11,6 +12,8 @@ import org.apache.clerezza.rdf.core.even
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.hp.hpl.jena.vocabulary.OWL;
+
 public class SynchronizerGraphListener implements GraphListener {
 
     private static final Logger logger = LoggerFactory.getLogger(SynchronizerGraphListener.class);
@@ -29,14 +32,22 @@ public class SynchronizerGraphListener i
             Triple triple = event.getTriple();
             UriRef predicate = triple.getPredicate();
             NonLiteral subject = triple.getSubject();
+            Resource object = triple.getObject();
             if (predicate.equals(OWLVocabulary.RDF_TYPE)) {
-                logger.info("Listened triple change:" + triple);
+                logger.info("Listened triple change: {}", triple);
                 try {
                     resourceURIs.add(((UriRef) subject).getUnicodeString());
                 } catch (ClassCastException e) {
                     // Blank node, just skipping
                     logger.info("Subject " + subject.toString() + " is a blanknode");
                 }
+            }else if (predicate.equals(new UriRef(OWL.imports.asResource().getURI()))){
+                logger.info("Listened triple change: {}", triple);
+                try{
+                    resourceURIs.add(((UriRef)object).getUnicodeString());
+                }catch (Exception e) {
+                    logger.warn("Cannot resolve import: {}", triple);
+                }
             }
         }
         if (resourceURIs.size() > 0) {