You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by al...@apache.org on 2012/06/20 11:42:27 UTC
svn commit: r1352018 [1/3] - in /incubator/stanbol/trunk:
commons/owl/src/main/java/org/apache/stanbol/commons/owl/util/
commons/owl/src/test/java/org/apache/stanbol/commons/owl/util/
commons/owl/src/test/java/org/apache/stanbol/owl/ ontologymanager/on...
Author: alexdma
Date: Wed Jun 20 09:42:24 2012
New Revision: 1352018
URL: http://svn.apache.org/viewvc?rev=1352018&view=rev
Log:
- OntoNet meta graph also keeps track of collector-ontology relations (TODO still need to use it for rebuilding ontology networks) (STANBOL-518, STANBOL-571)
- I am undoing part of the work done for STANBOL-524 and STANBOL-572. OWL versionIRI is still used, but only when exporting the ontologies to OWL. Internally, we should use a different ownership mechanism (modifying the versionIRI in the graph can cause a new naming for the meta graph).
Added:
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollectorListenable.java
- copied, changed from r1326662, incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/ScopeOntologyListenable.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/GraphImportsClosureSource.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/SetInputSource.java
- copied, changed from r1309473, incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/OntologySetInputSource.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/OntologyLookaheadMGraph.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/TestUtilities.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/TestClerezzaProvider.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/TestOntologyNetworkPersistence.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/resources/log4j.properties
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/resources/ontologies/versiontest_v1.owl
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/resources/ontologies/versiontest_v2.owl
Removed:
incubator/stanbol/trunk/commons/owl/src/test/java/org/apache/stanbol/owl/
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/OntologySetInputSource.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/ScopeOntologyListenable.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/ScopeOntologyListener.java
Modified:
incubator/stanbol/trunk/commons/owl/src/main/java/org/apache/stanbol/commons/owl/util/OWLUtils.java
incubator/stanbol/trunk/commons/owl/src/test/java/org/apache/stanbol/commons/owl/util/TestOWLUtils.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/Vocabulary.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollector.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollectorListener.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/AbstractClerezzaGraphInputSource.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/GraphContentInputSource.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/RootOntologyIRISource.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/ontology/OntologyProvider.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/CustomOntologySpace.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/OntologyScope.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/ONManagerImpl.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/AbstractOntologyCollectorImpl.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOWLUtils.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOntologyProvider.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/CustomOntologySpaceImpl.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/OntologySpaceFactoryImpl.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/ontology/OntologyScopeImpl.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/ontology/ScopeRegistryImpl.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/owlapi/AbstractOntologySpaceImpl.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/owlapi/CustomOntologySpaceImpl.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/owlapi/OWLAPIOntologyProvider.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/owlapi/OntologySpaceFactoryImpl.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/renderers/ScopeSetRenderer.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/MockOsgiContext.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/TestOntologyCollectors.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/io/TestStorage.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestClerezzaSpaces.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/java/org/apache/stanbol/ontologymanager/ontonet/ontology/TestOntologySpaces.java
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/resources/ontologies/maincharacters.owl
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/resources/ontologies/minorcharacters.owl
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/resources/ontologies/mockfoaf.rdf
incubator/stanbol/trunk/ontologymanager/ontonet/src/test/resources/ontologies/test1.owl
incubator/stanbol/trunk/ontologymanager/registry/pom.xml
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/io/LibrarySource.java
incubator/stanbol/trunk/ontologymanager/web/pom.xml
incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java
incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java
incubator/stanbol/trunk/reengineer/base/pom.xml
incubator/stanbol/trunk/reengineer/db/pom.xml
incubator/stanbol/trunk/reengineer/db/src/test/java/org/apache/stanbol/reengineer/db/DBExtractorTest.java
incubator/stanbol/trunk/reengineer/web/pom.xml
incubator/stanbol/trunk/reengineer/web/src/main/java/org/apache/stanbol/reengineer/web/resources/ReengineerResource.java
incubator/stanbol/trunk/reengineer/xml/pom.xml
incubator/stanbol/trunk/reengineer/xml/src/test/java/org/apache/stanbol/reengineer/xml/XMLReengineerTest.java
Modified: incubator/stanbol/trunk/commons/owl/src/main/java/org/apache/stanbol/commons/owl/util/OWLUtils.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/owl/src/main/java/org/apache/stanbol/commons/owl/util/OWLUtils.java?rev=1352018&r1=1352017&r2=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/commons/owl/src/main/java/org/apache/stanbol/commons/owl/util/OWLUtils.java (original)
+++ incubator/stanbol/trunk/commons/owl/src/main/java/org/apache/stanbol/commons/owl/util/OWLUtils.java Wed Jun 20 09:42:24 2012
@@ -40,15 +40,6 @@ public class OWLUtils {
public static final String NS_STANBOL = "http://stanbol.apache.org/";
- public static UriRef guessOntologyIdentifier(Object g) {
- if (g instanceof TripleCollection) return URIUtils.createUriRef(guessOWLOntologyID(
- (TripleCollection) g).getOntologyIRI());
- else if (g instanceof OWLOntology) return URIUtils
- .createUriRef(guessOntologyIdentifier((OWLOntology) g));
- else throw new IllegalArgumentException("Cannot guess ontology identifier for objects of type "
- + g.getClass());
- }
-
/**
* If the ontology is named, this method will return its logical ID, otherwise it will return the location
* it was retrieved from (which is still unique).
@@ -56,15 +47,21 @@ public class OWLUtils {
* @param o
* @return
*/
- public static IRI guessOntologyIdentifier(OWLOntology o) {
- String iri;
+ public static OWLOntologyID guessOntologyIdentifier(OWLOntology o) {
+
+ String oiri;
+ IRI viri = null;
// For named OWL ontologies it is their ontology ID. For anonymous ontologies, it is the URI they were
// fetched from, if any.
- if (o.isAnonymous()) iri = o.getOWLOntologyManager().getOntologyDocumentIRI(o).toString();
- else iri = o.getOntologyID().getOntologyIRI().toString();
+ if (o.isAnonymous()) oiri = o.getOWLOntologyManager().getOntologyDocumentIRI(o).toString();
+ else {
+ OWLOntologyID id = o.getOntologyID();
+ oiri = id.getOntologyIRI().toString();
+ viri = id.getVersionIRI();
+ }
// Strip fragment or query tokens. TODO do proper URL Encoding.
- while (iri.endsWith("#") || iri.endsWith("?"))
- iri = iri.substring(0, iri.length() - 1);
+ while (oiri.endsWith("#") || oiri.endsWith("?"))
+ oiri = oiri.substring(0, oiri.length() - 1);
// try {
// if (originalIri.endsWith("#")) originalIri = originalIri.substring(0,
// originalIri.length() - 1) + URLEncoder.encode("#", "UTF-8");
@@ -74,32 +71,12 @@ public class OWLUtils {
// } catch (UnsupportedEncodingException e) {
// // That cannot be.
// }
- return IRI.create(iri);
- }
- /**
- * Returns an UriRef wrapper for the first instance of owl:Ontology it detects, and ignores further
- * instances (which is nonstandard in OWL).
- *
- * If the ontology is anonymous, a timestamped UriRef is created
- *
- * @param g
- * @return
- */
- public static UriRef guessOntologyIdentifier(TripleCollection g) {
- Iterator<Triple> it = g.filter(null, RDF.type, OWL.Ontology);
- if (it.hasNext()) {
- NonLiteral subj = it.next().getSubject();
- if (it.hasNext()) log.warn(
- "RDF Graph {} has multiple OWL ontology definitions! Ignoring all but {}", g, subj);
- if (subj instanceof UriRef) return (UriRef) subj;
- }
- String s = NS_STANBOL + System.currentTimeMillis();
- log.debug("Ontology is anonymous. Returning generated ID <{}> .", s);
- return new UriRef(s);
+ if (viri != null) return new OWLOntologyID(IRI.create(oiri), viri);
+ else return new OWLOntologyID(IRI.create(oiri));
}
- public static OWLOntologyID guessOWLOntologyID(TripleCollection g) {
+ public static OWLOntologyID guessOntologyIdentifier(TripleCollection g) {
IRI ontologyIri = null, versionIri = null;
Iterator<Triple> it = g.filter(null, RDF.type, OWL.Ontology);
if (it.hasNext()) {
@@ -114,12 +91,15 @@ public class OWLUtils {
.getUnicodeString());
}
}
- if (ontologyIri == null) ontologyIri = IRI.create(NS_STANBOL + System.currentTimeMillis());
+ if (ontologyIri == null) {
+ ontologyIri = IRI.create(NS_STANBOL + System.currentTimeMillis());
+ log.debug("Ontology is anonymous. Returning generated ID <{}> .", ontologyIri);
+ }
if (versionIri == null) return new OWLOntologyID(ontologyIri);
else return new OWLOntologyID(ontologyIri, versionIri);
}
- public static IRI guessOntologyIdentifier(UriRef key, TcProvider store) {
- return guessOWLOntologyID(store.getTriples(key)).getOntologyIRI();
+ public static OWLOntologyID guessOntologyIdentifier(UriRef key, TcProvider store) {
+ return guessOntologyIdentifier(store.getTriples(key));
}
}
Modified: incubator/stanbol/trunk/commons/owl/src/test/java/org/apache/stanbol/commons/owl/util/TestOWLUtils.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/owl/src/test/java/org/apache/stanbol/commons/owl/util/TestOWLUtils.java?rev=1352018&r1=1352017&r2=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/commons/owl/src/test/java/org/apache/stanbol/commons/owl/util/TestOWLUtils.java (original)
+++ incubator/stanbol/trunk/commons/owl/src/test/java/org/apache/stanbol/commons/owl/util/TestOWLUtils.java Wed Jun 20 09:42:24 2012
@@ -16,7 +16,7 @@
*/
package org.apache.stanbol.commons.owl.util;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertNotNull;
import java.io.InputStream;
@@ -26,7 +26,6 @@ import org.apache.clerezza.rdf.core.acce
import org.apache.clerezza.rdf.core.serializedform.ParsingProvider;
import org.apache.clerezza.rdf.jena.parser.JenaParserProvider;
import org.apache.clerezza.rdf.simple.storage.SimpleTcProvider;
-import org.apache.stanbol.commons.owl.util.OWLUtils;
import org.junit.After;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -55,7 +54,7 @@ public class TestOWLUtils {
InputStream inputStream = getClass().getResourceAsStream("/owl/nameless_ontology.owl");
MGraph mg = TcManager.getInstance().createMGraph(uri);
pp.parse(mg, inputStream, "application/rdf+xml", uri);
-// No longer null!
+ // No longer null!
assertNotNull(OWLUtils.guessOntologyIdentifier(mg.getGraph()));
}
Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/Vocabulary.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/Vocabulary.java?rev=1352018&r1=1352017&r2=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/Vocabulary.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/Vocabulary.java Wed Jun 20 09:42:24 2012
@@ -21,9 +21,17 @@ public class Vocabulary {
public static final String _NS_ONTONET = "http://stanbol.apache.org/ontology/meta/ontonet#";
public static final String IS_MANAGED_BY = _NS_ONTONET + "isManagedBy";
+
+ public static final String IS_MANAGED_BY_CORE = _NS_ONTONET + "isManagedByCore";
+ public static final String IS_MANAGED_BY_CUSTOM = _NS_ONTONET + "isManagedByCustom";
+
public static final String MANAGES = _NS_ONTONET + "manages";
+ public static final String MANAGES_IN_CORE = _NS_ONTONET + "managesInCore";
+
+ public static final String MANAGES_IN_CUSTOM = _NS_ONTONET + "managesInCustom";
+
public static final String HAS_STATUS = _NS_ONTONET + "hasStatus";
public static final String STATUS = _NS_ONTONET + "Status";
Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollector.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollector.java?rev=1352018&r1=1352017&r2=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollector.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollector.java Wed Jun 20 09:42:24 2012
@@ -16,7 +16,6 @@
*/
package org.apache.stanbol.ontologymanager.ontonet.api.collector;
-import java.util.Collection;
import java.util.Set;
import org.apache.stanbol.ontologymanager.ontonet.api.NamedResource;
@@ -32,16 +31,8 @@ import org.semanticweb.owlapi.model.IRI;
* @author alexdma
*
*/
-public interface OntologyCollector extends NamedResource, OntologyInputSourceHandler {
-
- /**
- * Registers a new listener for changes in this ontology space. Has no effect if the same listener is
- * already registered with this ontology space.
- *
- * @param listener
- * the ontology space listener to be added.
- */
- void addListener(OntologyCollectorListener listener);
+public interface OntologyCollector extends OntologyCollectorListenable, NamedResource,
+ OntologyInputSourceHandler {
/**
* Adds the given ontology to the ontology space. If the supplied ontology is not already present in
@@ -55,19 +46,6 @@ public interface OntologyCollector exten
String addOntology(OntologyInputSource<?,?> ontologySource);
/**
- * Removes all ontology space listeners registered with this space.
- */
- void clearListeners();
-
- /**
- * Returns all the listeners registered with this ontology space. Whether the collection reflects or not
- * the order in which they were registered depends on the implementation.
- *
- * @return the registered ontology space listeners.
- */
- Collection<OntologyCollectorListener> getListeners();
-
- /**
* Returns the ontologies managed by this ontology space. This is a shortcut method for iterating
* {@link #getOntology(IRI, Class)} calls over {@link #listManagedOntologies()}.
*
@@ -111,15 +89,6 @@ public interface OntologyCollector exten
boolean hasOntology(IRI ontologyIri);
/**
- * Unregisters the supplied for changes in this ontology space. Has no effect if the same listener was not
- * registered with this ontology space.
- *
- * @param listener
- * the ontology space listener to be removed.
- */
- void removeListener(OntologyCollectorListener listener);
-
- /**
* Removes the given ontology from the ontology space, if the ontology is a direct child of the top
* ontology.<br/>
* <u>Note</u> that this will NOT delete the ontology from the store! This method simply states that the
Copied: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollectorListenable.java (from r1326662, incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/ScopeOntologyListenable.java)
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollectorListenable.java?p2=incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollectorListenable.java&p1=incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/ScopeOntologyListenable.java&r1=1326662&r2=1352018&rev=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/ScopeOntologyListenable.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollectorListenable.java Wed Jun 20 09:42:24 2012
@@ -1,38 +1,38 @@
/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.stanbol.ontologymanager.ontonet.api.scope;
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.stanbol.ontologymanager.ontonet.api.collector;
import java.util.Collection;
/**
- * Implementations of this interface are able to fire events related to the
- * modification of ontologies within an ontology scope.
+ * Informs listeners about changes in an ontology collector. Implementations of this interface should be able
+ * to fire events related to the modification of ontologies within an ontology collector.
*
* @author alexdma
*
*/
-public interface ScopeOntologyListenable {
+public interface OntologyCollectorListenable {
- void addOntologyScopeListener(ScopeOntologyListener listener);
+ void addOntologyCollectorListener(OntologyCollectorListener listener);
- void clearOntologyScopeListeners();
+ void clearOntologyCollectorListeners();
- Collection<ScopeOntologyListener> getOntologyScopeListeners();
+ Collection<OntologyCollectorListener> getOntologyCollectorListeners();
- void removeOntologyScopeListener(ScopeOntologyListener listener);
+ void removeOntologyCollectorListener(OntologyCollectorListener listener);
}
Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollectorListener.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollectorListener.java?rev=1352018&r1=1352017&r2=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollectorListener.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/collector/OntologyCollectorListener.java Wed Jun 20 09:42:24 2012
@@ -16,11 +16,13 @@
*/
package org.apache.stanbol.ontologymanager.ontonet.api.collector;
-import org.semanticweb.owlapi.model.IRI;
+import org.semanticweb.owlapi.model.OWLOntologyID;
/**
- * Objects that react to the addition or removal of ontologies to an ontology collector will implement this
- * interface.
+ * Objects that react to the addition or removal of ontologies to or from an ontology collector will implement
+ * this interface.<br>
+ * <br>
+ * XXX add "before" methods.
*
* @author alexdma
*
@@ -28,23 +30,23 @@ import org.semanticweb.owlapi.model.IRI;
public interface OntologyCollectorListener {
/**
- * Fired after an ontology was successfully added to an ontology collector.
+ * Fired <i>after</i> an ontology was successfully added to an ontology collector.
*
* @param collectorId
* the ontology collector identifier.
* @param addedOntology
* the added ontology identifier.
*/
- void onOntologyAdded(String collectorId, IRI addedOntology);
+ void onOntologyAdded(OntologyCollector collector, OWLOntologyID addedOntology);
/**
- * Fired after an ontology was successfully removed from an ontology collector.
+ * Fired <i>after</i> an ontology was successfully removed from an ontology collector.
*
* @param collectorId
* the ontology collector identifier.
* @param removedOntology
* the removed ontology identifier.
*/
- void onOntologyRemoved(String collectorId, IRI removedOntology);
+ void onOntologyRemoved(OntologyCollector collector, OWLOntologyID removedOntology);
}
Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/AbstractClerezzaGraphInputSource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/AbstractClerezzaGraphInputSource.java?rev=1352018&r1=1352017&r2=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/AbstractClerezzaGraphInputSource.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/AbstractClerezzaGraphInputSource.java Wed Jun 20 09:42:24 2012
@@ -21,6 +21,7 @@ import java.util.Iterator;
import java.util.Set;
import org.apache.clerezza.rdf.core.Graph;
+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.TripleCollection;
@@ -28,7 +29,9 @@ import org.apache.clerezza.rdf.core.UriR
import org.apache.clerezza.rdf.core.access.TcManager;
import org.apache.clerezza.rdf.core.access.TcProvider;
import org.apache.clerezza.rdf.ontologies.OWL;
-import org.apache.stanbol.commons.owl.util.OWLUtils;
+import org.apache.clerezza.rdf.ontologies.RDF;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Default implementation of an {@link OntologyInputSource} that returns {@link Graph} objects as ontologies.
@@ -43,6 +46,8 @@ import org.apache.stanbol.commons.owl.ut
public abstract class AbstractClerezzaGraphInputSource extends
AbstractGenericInputSource<TripleCollection,TcProvider> {
+ protected Logger log = LoggerFactory.getLogger(getClass());
+
@Override
protected void bindRootOntology(TripleCollection ontology) {
super.bindRootOntology(ontology);
@@ -55,8 +60,17 @@ public abstract class AbstractClerezzaGr
protected Set<TripleCollection> getImportedGraphs(TripleCollection g, boolean recursive) {
Set<TripleCollection> result = new HashSet<TripleCollection>();
- UriRef u = OWLUtils.guessOntologyIdentifier(g);
- Iterator<Triple> it = g.filter(u, OWL.imports, null);
+ UriRef u = null;
+
+ Iterator<Triple> it = g.filter(null, RDF.type, OWL.Ontology);
+ if (it.hasNext()) {
+ NonLiteral subj = it.next().getSubject();
+ if (it.hasNext()) log.warn(
+ "RDF Graph has multiple OWL ontology definitions! Ignoring all but {}", subj);
+ if (subj instanceof UriRef) u = (UriRef) subj;
+ }
+
+ it = g.filter(u, OWL.imports, null);
while (it.hasNext()) {
Resource r = it.next().getObject();
if (r instanceof UriRef) {
Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/GraphContentInputSource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/GraphContentInputSource.java?rev=1352018&r1=1352017&r2=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/GraphContentInputSource.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/GraphContentInputSource.java Wed Jun 20 09:42:24 2012
@@ -42,7 +42,7 @@ import org.slf4j.LoggerFactory;
*/
public class GraphContentInputSource extends AbstractClerezzaGraphInputSource {
- private Logger log = LoggerFactory.getLogger(getClass());
+ protected Logger log = LoggerFactory.getLogger(getClass());
/**
* Creates a new graph input source by parsing <code>content</code>. Every supported format will be tried
Added: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/GraphImportsClosureSource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/GraphImportsClosureSource.java?rev=1352018&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/GraphImportsClosureSource.java (added)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/GraphImportsClosureSource.java Wed Jun 20 09:42:24 2012
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.stanbol.ontologymanager.ontonet.api.io;
+
+import java.io.InputStream;
+import java.util.Set;
+
+import org.apache.clerezza.rdf.core.access.TcProvider;
+import org.apache.clerezza.rdf.core.serializedform.Parser;
+import org.semanticweb.owlapi.model.OWLOntology;
+
+public class GraphImportsClosureSource extends GraphContentInputSource implements SetInputSource {
+
+ /**
+ * Creates a new graph input source by parsing <code>content</code>. Every supported format will be tried
+ * until one is parsed successfully. The resulting graph is created in-memory, and its triples will have
+ * to be manually added to a stored graph if necessary.
+ *
+ * @param content
+ * the serialized graph content.
+ */
+ public GraphImportsClosureSource(InputStream content) {
+ this(content, (String) null);
+ }
+
+ /**
+ * Creates a new graph input source by parsing <code>content</code> assuming it has the given format. The
+ * resulting graph is created in-memory, and its triples will have to be manually added to a stored graph
+ * if necessary.
+ *
+ * @param content
+ * the serialized graph content.
+ * @param formatIdentifier
+ * the format to parse the content as.
+ */
+ public GraphImportsClosureSource(InputStream content, String formatIdentifier) {
+ this(content, formatIdentifier, null);
+ }
+
+ /**
+ * Creates a new graph input source by parsing <code>content</code> into a graph created using the
+ * supplied {@link TcProvider}, assuming it has the given format.
+ *
+ * @param content
+ * the serialized graph content.
+ * @param formatIdentifier
+ * the format to parse the content as.
+ * @param tcProvider
+ * the provider that will create the graph where the triples will be stored.
+ */
+ public GraphImportsClosureSource(InputStream content, String formatIdentifier, TcProvider tcProvider) {
+ this(content, formatIdentifier, tcProvider, Parser.getInstance());
+ }
+
+ /**
+ * Creates a new graph input source by parsing <code>content</code> (using the supplied {@link Parser})
+ * into a graph created using the supplied {@link TcProvider}, assuming it has the given format.
+ *
+ * @param content
+ * the serialized graph content.
+ * @param formatIdentifier
+ * the format to parse the content as.
+ * @param tcProvider
+ * the provider that will create the graph where the triples will be stored.
+ * @param parser
+ * the parser to use for creating the graph. If null, the default one will be used.
+ */
+ public GraphImportsClosureSource(InputStream content,
+ String formatIdentifier,
+ TcProvider tcProvider,
+ Parser parser) {
+ super(content, formatIdentifier, tcProvider, parser);
+ }
+
+ @Override
+ public Set<OWLOntology> getOntologies() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/RootOntologyIRISource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/RootOntologyIRISource.java?rev=1352018&r1=1352017&r2=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/RootOntologyIRISource.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/RootOntologyIRISource.java Wed Jun 20 09:42:24 2012
@@ -23,7 +23,14 @@ import org.semanticweb.owlapi.model.OWLO
/**
* An input source that provides the OWL Ontology loaded from the supplied physical IRI, as well as the
- * physical IRI itself for consumers that need to load the ontology themselves.<br>
+ * physical IRI itself for consumers that need to load the ontology themselves. This means that in order to
+ * use the {@link RootOntologyIRISource}, <i>one</i> the following requirements must be met:
+ * <ol>
+ * <li>Stanbol is in online mode and all imports can be resolved recursively;
+ * <li>Stanbol is in offline mode and the ontology has no recursive import statements.
+ * </ol>
+ * If Stanbol is in offline mode and it is known that all imported ontologies are in the same local directory
+ * as the root ontology, one should use a {@link ParentPathInputSource} instead. <br>
* <br>
* For convenience, an existing OWL ontology manager can be supplied for loading the ontology.
*
Copied: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/SetInputSource.java (from r1309473, incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/OntologySetInputSource.java)
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/SetInputSource.java?p2=incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/SetInputSource.java&p1=incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/OntologySetInputSource.java&r1=1309473&r2=1352018&rev=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/OntologySetInputSource.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/SetInputSource.java Wed Jun 20 09:42:24 2012
@@ -20,8 +20,8 @@ import java.util.Set;
import org.semanticweb.owlapi.model.OWLOntology;
-public interface OntologySetInputSource {
+public interface SetInputSource<O> {
- Set<OWLOntology> getOntologies();
+ Set<O> getOntologies();
}
Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/ontology/OntologyProvider.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/ontology/OntologyProvider.java?rev=1352018&r1=1352017&r2=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/ontology/OntologyProvider.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/ontology/OntologyProvider.java Wed Jun 20 09:42:24 2012
@@ -20,6 +20,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.Set;
+import org.apache.clerezza.rdf.core.Graph;
+import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.TripleCollection;
import org.apache.clerezza.rdf.core.access.TcProvider;
import org.apache.clerezza.rdf.core.serializedform.UnsupportedFormatException;
@@ -73,19 +75,21 @@ public interface OntologyProvider<S> {
* Gets a string that can be used to directly access the ontology whose logical identifier is
* <tt>ontologyIRI</tt>.
*
- * @param ontologyIRI
+ * @param locator
* the logical identifier of the ontology.
* @return the key to access the ontology from the store.
*/
- String getKey(IRI ontologyIRI);
+ String getKey(IRI locator);
/**
- * Returns the graph that stores all the information on stored ontologies
+ * Gets the key of the ontology with the supplied ontology ID. Note that both ontoloeyIRI and versionIRI
+ * (if present) must match, otherwise it will return null. To get the keys for a givemn ontologyIRI, no
+ * matte what its version is, use {@link #getOntologyVersionKeys(IRI)}.
*
- * @param returnType
+ * @param ontologyId
* @return
*/
- <O extends TripleCollection> O getMetaGraph(Class<O> returnType);
+ String getKey(OWLOntologyID ontologyId);
/**
* Gets the set of all the strings that can be used to access the ontologies stored by this provider.
@@ -95,6 +99,26 @@ public interface OntologyProvider<S> {
Set<String> getKeys();
/**
+ * Returns the graph that stores all the information on stored ontologies. Whether the returned triple
+ * collection is a {@link Graph} or a {@link MGraph} depends on the provider's policy on allowing external
+ * modifications to the meta-level graph or not.
+ *
+ * @param returnType
+ * @return
+ */
+ <O extends TripleCollection> O getMetaGraph(Class<O> returnType);
+
+ /**
+ * Will return the keys of all the ontologies whose ontologyIRI is the one provided. These include any
+ * ontologies with that ontologyIRI and a versionIRI, and one ontology with no version IRI (if it exists,
+ * it must be unique).
+ *
+ * @param ontologyIRI
+ * @return
+ */
+ Set<String> getOntologyVersionKeys(IRI ontologyIRI);
+
+ /**
* Returns the storage system used by this ontology provider (e.g. a {@link TcProvider} or an
* {@link OWLOntologyManager}).
*
@@ -249,8 +273,8 @@ public interface OntologyProvider<S> {
* @throws UnsupportedFormatException
* if no parsers are able to parse the supplied format (or the actual file format).
*/
- String loadInStore(InputStream data, String formatIdentifier, String preferredKey, boolean force) throws IOException,
- UnsupportedFormatException;
+ String loadInStore(InputStream data, String formatIdentifier, boolean force) throws IOException,
+ UnsupportedFormatException;
/**
* Retrieves an ontology physically located at <code>location</code> (unless mapped otherwise by the
@@ -279,7 +303,7 @@ public interface OntologyProvider<S> {
* @throws UnsupportedFormatException
* if no parsers are able to parse the supplied format (or the actual file format).
*/
- String loadInStore(IRI location, String formatIdentifier, String preferredKey, boolean force) throws IOException;
+ String loadInStore(IRI location, String formatIdentifier, boolean force) throws IOException;
/**
* Stores an ontology that has already been loaded into an object. If the object is of a non-native yet
@@ -299,7 +323,7 @@ public interface OntologyProvider<S> {
* set on offline mode, this method will fail.
* @return
*/
- String loadInStore(Object ontology, String preferredKey, boolean force);
+ String loadInStore(Object ontology, boolean force);
/**
* Sets the policy adopted by this provider whenever an import statement is found in an ontology <i>that
@@ -311,4 +335,16 @@ public interface OntologyProvider<S> {
*/
void setImportManagementPolicy(ImportManagementPolicy policy);
+ /**
+ * Will not be checked by dereferencing
+ *
+ * If the key does not exist in the provider, or if locator is already bound to a different key, an
+ * {@link IllegalArgumentException} will be thrown.
+ *
+ *
+ * @param locator
+ * @param key
+ */
+ void setLocatorMapping(IRI locator, String key);
+
}
Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/CustomOntologySpace.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/CustomOntologySpace.java?rev=1352018&r1=1352017&r2=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/CustomOntologySpace.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/CustomOntologySpace.java Wed Jun 20 09:42:24 2012
@@ -16,8 +16,6 @@
*/
package org.apache.stanbol.ontologymanager.ontonet.api.scope;
-import org.apache.stanbol.ontologymanager.ontonet.api.collector.UnmodifiableOntologyCollectorException;
-
/**
* An ontology space that wraps the components that can be customized by CMS developers, IKS customizers and
* the like. The custom ontology space becomes read-only after bootstrapping (i.e. after a call to
@@ -32,23 +30,4 @@ import org.apache.stanbol.ontologymanage
*/
public interface CustomOntologySpace extends OntologySpace {
- /**
- * Logically links this custom space with the supplied core ontology space, so that the top ontology in
- * the former will import those in the latter.<br>
- * <br>
- * This relationship is expected to hold at all times once the space is active, however the method to set
- * it is available in case implementations require to perform other operations between the creation of
- * ontology spaces and their linking.
- *
- * @deprecated space linking is performed by the parent scope at OWL export time. Implementations do
- * nothing.
- * @param coreSpace
- * the core ontology space to be linked
- * @param skipRoot
- * if true, the custom root ontology will not import the core root ontology straight away, but
- * instead all of its axioms and import statements will be copied. Useful for implementations
- * that construct root ontologies in memory but do not store them.
- */
- void attachCoreSpace(CoreOntologySpace coreSpace, boolean skipRoot) throws UnmodifiableOntologyCollectorException;
-
}
Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/OntologyScope.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/OntologyScope.java?rev=1352018&r1=1352017&r2=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/OntologyScope.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/scope/OntologyScope.java Wed Jun 20 09:42:24 2012
@@ -18,6 +18,7 @@ package org.apache.stanbol.ontologymanag
import org.apache.stanbol.ontologymanager.ontonet.api.NamedResource;
import org.apache.stanbol.ontologymanager.ontonet.api.collector.Lockable;
+import org.apache.stanbol.ontologymanager.ontonet.api.collector.OntologyCollectorListenable;
import org.apache.stanbol.ontologymanager.ontonet.api.collector.UnmodifiableOntologyCollectorException;
import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OWLExportable;
@@ -38,7 +39,7 @@ import org.apache.stanbol.ontologymanage
* @author alexdma
*
*/
-public interface OntologyScope extends NamedResource, Lockable, ScopeOntologyListenable, OWLExportable {
+public interface OntologyScope extends NamedResource, Lockable, OntologyCollectorListenable, OWLExportable {
/**
* Returns the core ontology space for this ontology scope. The core space should never be null for any
Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/ONManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/ONManagerImpl.java?rev=1352018&r1=1352017&r2=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/ONManagerImpl.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/ONManagerImpl.java Wed Jun 20 09:42:24 2012
@@ -22,12 +22,16 @@ import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Dictionary;
-import java.util.HashSet;
import java.util.Hashtable;
+import java.util.Iterator;
import java.util.List;
-import java.util.Set;
+import org.apache.clerezza.rdf.core.NonLiteral;
+import org.apache.clerezza.rdf.core.Triple;
+import org.apache.clerezza.rdf.core.TripleCollection;
+import org.apache.clerezza.rdf.core.UriRef;
import org.apache.clerezza.rdf.core.access.TcProvider;
+import org.apache.clerezza.rdf.ontologies.RDF;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
@@ -41,6 +45,7 @@ import org.apache.stanbol.commons.owl.OW
import org.apache.stanbol.commons.stanboltools.offline.OfflineMode;
import org.apache.stanbol.ontologymanager.ontonet.api.ONManager;
import org.apache.stanbol.ontologymanager.ontonet.api.OfflineConfiguration;
+import org.apache.stanbol.ontologymanager.ontonet.api.Vocabulary;
import org.apache.stanbol.ontologymanager.ontonet.api.collector.DuplicateIDException;
import org.apache.stanbol.ontologymanager.ontonet.api.collector.UnmodifiableOntologyCollectorException;
import org.apache.stanbol.ontologymanager.ontonet.api.io.BlankOntologySource;
@@ -136,8 +141,6 @@ public class ONManagerImpl extends Scope
private Helper helper = null;
- private Set<ScopeEventListener> listeners = new HashSet<ScopeEventListener>();
-
private final Logger log = LoggerFactory.getLogger(getClass());
@Reference
@@ -179,7 +182,8 @@ public class ONManagerImpl extends Scope
* Component Runtime support.
* <p>
* DO NOT USE to manually create instances - the ReengineerManagerImpl instances do need to be configured!
- * YOU NEED TO USE {@link #ONManagerImpl(OntologyProvider, OfflineConfiguration, Dictionary)} or its
+ * YOU NEED TO USE
+ * {@link #ONManagerImpl(OntologyProvider, OfflineConfiguration, OntologySpaceFactory, Dictionary)} or its
* overloads, to parse the configuration and then initialise the rule store if running outside an OSGI
* environment.
*/
@@ -188,13 +192,6 @@ public class ONManagerImpl extends Scope
// All bindings are deferred to the activator
}
- @Deprecated
- public ONManagerImpl(OntologyProvider<?> ontologyProvider,
- OfflineConfiguration offline,
- Dictionary<String,Object> configuration) {
- this(ontologyProvider, offline, null, configuration);
- }
-
public ONManagerImpl(OntologyProvider<?> ontologyProvider,
OfflineConfiguration offline,
OntologySpaceFactory spaceFactory,
@@ -314,7 +311,10 @@ public class ONManagerImpl extends Scope
// Create and populate the scopes from the config ontology.
bootstrapOntologyNetwork(oConf);
+ } else {
+ rebuildScopes();
}
+
log.debug(ONManager.class + " activated.");
}
@@ -334,11 +334,15 @@ public class ONManagerImpl extends Scope
}
IRI iri = IRI.create(getOntologyNetworkNamespace() + scopeRegistryId + "/");
ontologySpaceFactory.setNamespace(iri);
+
+ // Add listeners
+ if (ontologyProvider instanceof ScopeEventListener) this
+ .addScopeEventListener((ScopeEventListener) ontologyProvider);
}
private void bootstrapOntologyNetwork(OWLOntology configOntology) {
if (configOntology == null) {
- log.debug("Ontology Network Manager starting with empty scope set.");
+ log.info("Ontology Network Manager starting with empty scope set.");
return;
}
try {
@@ -424,8 +428,12 @@ public class ONManagerImpl extends Scope
+ scopeRegistryId + "/"),
getOntologySpaceFactory(), coreSources);
if (scope != null) {
- this.registerScope(scope);
+ // Commented out: for the time being we try not to propagate additions to scopes.
+
+ // if (ontologyProvider instanceof OntologyCollectorListener) scope
+ // .addOntologyCollectorListener((OntologyCollectorListener) ontologyProvider);
fireScopeCreated(scope);
+ this.registerScope(scope);
}
return scope;
}
@@ -440,7 +448,6 @@ public class ONManagerImpl extends Scope
super.registerScope(scope);
} else log.warn("Ignoring unnecessary call to already registered scope {}", id);
} else super.registerScope(scope);
-
}
/**
@@ -554,4 +561,30 @@ public class ONManagerImpl extends Scope
this.ontonetNS = namespace;
}
+ private void rebuildScopes() {
+ TripleCollection meta = ontologyProvider.getMetaGraph(TripleCollection.class);
+ for (Iterator<Triple> it = meta.filter(null, RDF.type, new UriRef(Vocabulary.SCOPE)); it.hasNext();) {
+ NonLiteral sub = it.next().getSubject();
+ if (sub instanceof UriRef) {
+ String s = ((UriRef) sub).getUnicodeString(), prefix = getOntologyNetworkNamespace()
+ + scopeRegistryId + "/";
+ if (s.startsWith(prefix)) {
+ String scopeId = s.substring(prefix.length());
+ OntologyScope scope = new OntologyScopeImpl(scopeId, IRI.create(prefix),
+ getOntologySpaceFactory());
+
+ // retrieve the ontologies
+ for (Iterator<Triple> it2 = meta.filter(sub, null, null); it2.hasNext();) {
+ Triple t = it2.next();
+ UriRef predicate = t.getPredicate();
+ if (predicate.equals(new UriRef(Vocabulary.MANAGES_IN_CUSTOM))) {
+ System.out.println(t.getObject());
+ }
+ }
+
+ scopeMap.put(scopeId, scope);
+ }
+ }
+ }
+ }
}
Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/AbstractOntologyCollectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/AbstractOntologyCollectorImpl.java?rev=1352018&r1=1352017&r2=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/AbstractOntologyCollectorImpl.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/AbstractOntologyCollectorImpl.java Wed Jun 20 09:42:24 2012
@@ -76,11 +76,6 @@ import org.slf4j.LoggerFactory;
public abstract class AbstractOntologyCollectorImpl implements OntologyCollector, Lockable,
OntologyInputSourceHandler, OWLExportable {
- @Override
- public Set<IRI> listManagedOntologies() {
- return managedOntologies;
- }
-
protected String _id = null;
/**
@@ -100,9 +95,10 @@ public abstract class AbstractOntologyCo
/**
* The identifier of the ontologies directly managed by this collector (i.e. that were directly added to
- * this space, hence not including those just pulled in via import statements).
- *
- * TODO make it a set again and have the ontology provider manage the mapping?
+ * this space, hence not including those just pulled in via import statements).<br>
+ * <br>
+ * XXX depending on whether we want to support multiple versionIRIs in the same collector, we may want to
+ * turn this one into a set of {@link OWLOntologyID}.
*/
protected Set<IRI> managedOntologies;
@@ -124,11 +120,6 @@ public abstract class AbstractOntologyCo
}
@Override
- public void addListener(OntologyCollectorListener listener) {
- listeners.add(listener);
- }
-
- @Override
public synchronized String addOntology(OntologyInputSource<?,?> ontologySource) throws UnmodifiableOntologyCollectorException {
long before = System.currentTimeMillis();
@@ -142,56 +133,48 @@ public abstract class AbstractOntologyCo
"Ontology source cannot be null and must provide an ontology object.");
Object o = ontologySource.getRootOntology();
- UriRef uri;
/*
* Note for the developer: make sure the call to guessOntologyIdentifier() is only performed once
* during all the storage process, otherwise multiple calls could return different results for
* anonymous ontologies.
*/
+ OWLOntologyID id;
if (o instanceof TripleCollection) {
- uri = OWLUtils.guessOntologyIdentifier((TripleCollection) o);
+ id = OWLUtils.guessOntologyIdentifier((TripleCollection) o);
} else if (o instanceof OWLOntology) {
- uri = new UriRef(OWLUtils.guessOntologyIdentifier((OWLOntology) o).toString());
+ id = OWLUtils.guessOntologyIdentifier((OWLOntology) o);
} else throw new UnsupportedOperationException(
"This ontology collector implementation cannot handle " + o.getClass().getCanonicalName()
+ " objects.");
// Now for the actual storage. We pass the ontology object directly.
String key = null;
- if (ontologyProvider.hasOntology(IRI.create(uri.getUnicodeString()))) if (o instanceof MGraph) claimOwnership((MGraph) o);
- else if (o instanceof OWLOntology) claimOwnership((OWLOntology) o);
- key = ontologyProvider.loadInStore(o, uri.getUnicodeString(), false);
+ // // FIXME restore ownership management, but maybe not by directly setting the versionIRI
+ // if (ontologyProvider.hasOntology(id.getOntologyIRI())) if (o instanceof MGraph)
+ // claimOwnership((MGraph) o);
+ // else if (o instanceof OWLOntology) claimOwnership((OWLOntology) o);
+ key = ontologyProvider.loadInStore(o, false);
+ if (ontologySource.hasPhysicalIRI()) ontologyProvider.setLocatorMapping(
+ ontologySource.getPhysicalIRI(), key);
+
/*
* Actually we are not interested in knowing the key here (ontology collectors are not concerned with
* them), but knowing it is non-null and non-empty indicates the operation was successful.
*/
if (key != null && !key.isEmpty()) {
// add to index
- managedOntologies.add(IRI.create(uri.getUnicodeString()));
+ managedOntologies.add(id.getOntologyIRI());
// Note that imported ontologies are not considered as managed! TODO should we change this?
log.debug("Add ontology completed in {} ms.", (System.currentTimeMillis() - before));
// fire the event
- fireOntologyAdded(uri);
+ fireOntologyAdded(id);
}
return key;
}
- protected void claimOwnership(OWLOntology ontology) {
- log.info("Checking ownership of {} {}", OWLOntology.class.getSimpleName(), ontology.getOntologyID());
- OWLOntologyID id = ontology.getOntologyID();
- if (id.getOntologyIRI() != null) {
- IRI ontologyIRI = id.getOntologyIRI();
- IRI versionIri = id.getVersionIRI();
- if (versionIri == null) {
- log.info(" No OWL version IRI Found . Will set to own ID. ");
- versionIri = IRI.create(getNamespace() + getID());
- OWLOntologyID newId = new OWLOntologyID(ontologyIRI, versionIri);
- OWLOntologyChange change = new SetOntologyID(ontology, newId);
- ontology.getOWLOntologyManager().applyChange(change);
- log.info(" Set OWL version IRI : {} . ", versionIri);
- } else log.info(" Found OWL version IRI {} . Will not claim ownership. ", versionIri);
- }
-
+ @Override
+ public void addOntologyCollectorListener(OntologyCollectorListener listener) {
+ listeners.add(listener);
}
protected void claimOwnership(MGraph ontology) {
@@ -219,8 +202,26 @@ public abstract class AbstractOntologyCo
}
}
+ protected void claimOwnership(OWLOntology ontology) {
+ log.info("Checking ownership of {} {}", OWLOntology.class.getSimpleName(), ontology.getOntologyID());
+ OWLOntologyID id = ontology.getOntologyID();
+ if (id.getOntologyIRI() != null) {
+ IRI ontologyIRI = id.getOntologyIRI();
+ IRI versionIri = id.getVersionIRI();
+ if (versionIri == null) {
+ log.info(" No OWL version IRI Found . Will set to own ID. ");
+ versionIri = IRI.create(getNamespace() + getID());
+ OWLOntologyID newId = new OWLOntologyID(ontologyIRI, versionIri);
+ OWLOntologyChange change = new SetOntologyID(ontology, newId);
+ ontology.getOWLOntologyManager().applyChange(change);
+ log.info(" Set OWL version IRI : {} . ", versionIri);
+ } else log.info(" Found OWL version IRI {} . Will not claim ownership. ", versionIri);
+ }
+
+ }
+
@Override
- public void clearListeners() {
+ public void clearOntologyCollectorListeners() {
listeners.clear();
}
@@ -405,19 +406,9 @@ public abstract class AbstractOntologyCo
* @param ontologyIri
* the identifier of the ontology that was added to this space.
*/
- protected void fireOntologyAdded(IRI ontologyIri) {
+ protected void fireOntologyAdded(OWLOntologyID ontologyId) {
for (OntologyCollectorListener listener : listeners)
- listener.onOntologyAdded(this.getID(), ontologyIri);
- }
-
- /**
- * Notifies all ontology space listeners that an ontology has been added to this space.
- *
- * @param ontologyIri
- * the identifier of the ontology that was added to this space.
- */
- protected void fireOntologyAdded(UriRef ontologyIri) {
- fireOntologyAdded(IRI.create(ontologyIri.getUnicodeString()));
+ listener.onOntologyAdded(this, ontologyId);
}
/**
@@ -426,13 +417,9 @@ public abstract class AbstractOntologyCo
* @param ontologyIri
* the identifier of the ontology that was removed from this space.
*/
- protected void fireOntologyRemoved(IRI ontologyIri) {
+ protected void fireOntologyRemoved(OWLOntologyID ontologyId) {
for (OntologyCollectorListener listener : listeners)
- listener.onOntologyRemoved(this.getID(), ontologyIri);
- }
-
- protected void fireOntologyRemoved(UriRef ontologyIri) {
- fireOntologyRemoved(IRI.create(ontologyIri.getUnicodeString()));
+ listener.onOntologyRemoved(this, ontologyId);
}
@Override
@@ -446,11 +433,6 @@ public abstract class AbstractOntologyCo
}
@Override
- public Collection<OntologyCollectorListener> getListeners() {
- return listeners;
- }
-
- @Override
public <O> Set<O> getManagedOntologies(Class<O> returnType, boolean withClosure) {
if (withClosure) log.warn("Closure support not implemented yet. Will merge instead.");
Set<O> ontologies = new HashSet<O>();
@@ -598,6 +580,11 @@ public abstract class AbstractOntologyCo
}
@Override
+ public Collection<OntologyCollectorListener> getOntologyCollectorListeners() {
+ return listeners;
+ }
+
+ @Override
public Set<Class<?>> getSupportedOntologyTypes() {
return Collections.unmodifiableSet(supportedTypes);
}
@@ -613,21 +600,28 @@ public abstract class AbstractOntologyCo
}
@Override
- public void removeListener(OntologyCollectorListener listener) {
- listeners.remove(listener);
+ public Set<IRI> listManagedOntologies() {
+ return managedOntologies;
}
@Override
public void removeOntology(IRI ontologyId) throws OntologyCollectorModificationException {
if (locked) throw new UnmodifiableOntologyCollectorException(this);
try {
- managedOntologies.remove(ontologyId);
- fireOntologyRemoved(ontologyId);
+ if (managedOntologies.remove(ontologyId)) { // Don't fire if the ontology wasn't there.
+ OWLOntologyID fullId = new OWLOntologyID(ontologyId); // TODO do something about versionIRI
+ fireOntologyRemoved(fullId);
+ }
} catch (RuntimeException ex) {
throw new OntologyCollectorModificationException(this, ex);
}
}
+ @Override
+ public void removeOntologyCollectorListener(OntologyCollectorListener listener) {
+ listeners.remove(listener);
+ }
+
protected abstract void setID(String id);
/**
Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOWLUtils.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOWLUtils.java?rev=1352018&r1=1352017&r2=1352018&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOWLUtils.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOWLUtils.java Wed Jun 20 09:42:24 2012
@@ -16,12 +16,21 @@
*/
package org.apache.stanbol.ontologymanager.ontonet.impl.clerezza;
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.UriRef;
import org.apache.clerezza.rdf.core.access.TcManager;
import org.apache.clerezza.rdf.core.impl.TripleImpl;
+import org.apache.clerezza.rdf.core.serializedform.Parser;
import org.apache.clerezza.rdf.ontologies.OWL;
import org.apache.clerezza.rdf.ontologies.RDF;
+import org.semanticweb.owlapi.model.IRI;
+import org.semanticweb.owlapi.model.OWLOntologyID;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* A set of utilities for handling OWL2 ontologies in Clerezza.
@@ -31,6 +40,8 @@ import org.apache.clerezza.rdf.ontologie
*/
public class ClerezzaOWLUtils {
+ private static Logger log = LoggerFactory.getLogger(ClerezzaOWLUtils.class);
+
public static MGraph createOntology(String id, TcManager tcm) {
UriRef name = new UriRef(id);
MGraph ont = tcm.createMGraph(name);
@@ -42,4 +53,22 @@ public class ClerezzaOWLUtils {
return createOntology(id, TcManager.getInstance());
}
+ public static OWLOntologyID guessOntologyID(InputStream content, Parser parser, String format) throws IOException {
+ int limit = 100 * 1024; // 100kB lookahead size
+ BufferedInputStream bIn = new BufferedInputStream(content);
+ bIn.mark(limit); // set an appropriate limit
+ OntologyLookaheadMGraph graph = new OntologyLookaheadMGraph();
+ try {
+ parser.parse(graph, bIn, format);
+ } catch (RuntimeException e) {}
+ if (graph.getOntologyIRI() != null) {
+ // bIn.reset(); // reset set the stream to the start
+ return new OWLOntologyID(IRI.create(graph.getOntologyIRI().getUnicodeString()));
+ } else { // No OntologyID found
+ // do some error handling
+ log.warn("No ontologyID found after {} bytes, ontology has a chance of being anonymous.", limit);
+ return null;
+ }
+ }
+
}