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) {