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/11/16 17:16:20 UTC

svn commit: r1410428 - in /stanbol/trunk: contrib/reengineer/db/src/main/java/org/apache/stanbol/reengineer/db/ contrib/reengineer/xml/src/main/java/org/apache/stanbol/reengineer/xml/ enhancer/engines/refactor/src/main/java/org/apache/stanbol/enhancer/...

Author: alexdma
Date: Fri Nov 16 16:16:16 2012
New Revision: 1410428

URL: http://svn.apache.org/viewvc?rev=1410428&view=rev
Log:
Final fixes for resolving STANBOL-422:
* Unified RootOntologySource and RootOntologyIRISource (except in the deprecated API).
* Made GraphContentInputSource throw an exception if the first parse attempt fails and the stream cannot be reset.
* Unit tests for InputStream-based input sources both for OWL API and Clerezza sources.
Fixes for bugs that slipped through STANBOL-305:
* Some RESTful resources were calling hasOntology() on non-null but anonymous keys, which is not allowed. Fixed that.
* Scope and session resources were trying to parse ontologies using the wrong format variable.

Added:
    stanbol/trunk/ontologymanager/sources/clerezza/src/test/resources/ontologies/dummy-01.rdfxml.rdf
    stanbol/trunk/ontologymanager/sources/clerezza/src/test/resources/ontologies/dummy-01.turtle.rdf
    stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/Entities.java
    stanbol/trunk/ontologymanager/sources/owlapi/src/test/resources/ontologies/dummy-01.turtle.rdf
Removed:
    stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/sources/owlapi/RootOntologyIRISource.java
Modified:
    stanbol/trunk/contrib/reengineer/db/src/main/java/org/apache/stanbol/reengineer/db/DBExtractor.java
    stanbol/trunk/contrib/reengineer/xml/src/main/java/org/apache/stanbol/reengineer/xml/XMLExtractor.java
    stanbol/trunk/enhancer/engines/refactor/src/main/java/org/apache/stanbol/enhancer/engines/refactor/RefactorEnhancementEngine.java
    stanbol/trunk/ontologymanager/generic/core/src/main/java/org/apache/stanbol/ontologymanager/core/scope/ScopeManagerImpl.java
    stanbol/trunk/ontologymanager/multiplexer/clerezza/src/main/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/impl/AbstractOntologyCollectorImpl.java
    stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/io/TestStorage.java
    stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/scope/TestOntologySpaces.java
    stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/session/TestSessions.java
    stanbol/trunk/ontologymanager/sources/clerezza/src/main/java/org/apache/stanbol/ontologymanager/sources/clerezza/GraphContentInputSource.java
    stanbol/trunk/ontologymanager/sources/clerezza/src/test/java/org/apache/stanbol/ontologymanager/sources/clerezza/TestClerezzaInputSources.java
    stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/RootOntologyIRISource.java
    stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/sources/owlapi/OntologyContentInputSource.java
    stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/sources/owlapi/RootOntologySource.java
    stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/Constants.java
    stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/TestOWLAPIInputSources.java
    stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java
    stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java
    stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionResource.java

Modified: stanbol/trunk/contrib/reengineer/db/src/main/java/org/apache/stanbol/reengineer/db/DBExtractor.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/contrib/reengineer/db/src/main/java/org/apache/stanbol/reengineer/db/DBExtractor.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/contrib/reengineer/db/src/main/java/org/apache/stanbol/reengineer/db/DBExtractor.java (original)
+++ stanbol/trunk/contrib/reengineer/db/src/main/java/org/apache/stanbol/reengineer/db/DBExtractor.java Fri Nov 16 16:16:16 2012
@@ -16,7 +16,7 @@ import org.apache.stanbol.ontologymanage
 import org.apache.stanbol.ontologymanager.servicesapi.io.OntologyInputSource;
 import org.apache.stanbol.ontologymanager.servicesapi.scope.Scope;
 import org.apache.stanbol.ontologymanager.servicesapi.scope.ScopeManager;
-import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologyIRISource;
+import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologySource;
 import org.apache.stanbol.reengineer.base.api.DataSource;
 import org.apache.stanbol.reengineer.base.api.Reengineer;
 import org.apache.stanbol.reengineer.base.api.ReengineerManager;
@@ -199,7 +199,7 @@ public class DBExtractor implements Reen
             log.info("Ontology {} created.", iri);
 
             scope = onManager.createOntologyScope(reengineeringScopeID,
-                (OntologyInputSource<?>) new RootOntologyIRISource(IRI.create(DBS_L1.URI)));
+                (OntologyInputSource<?>) new RootOntologySource(IRI.create(DBS_L1.URI)));
 
             // scope.setUp();
 

Modified: stanbol/trunk/contrib/reengineer/xml/src/main/java/org/apache/stanbol/reengineer/xml/XMLExtractor.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/contrib/reengineer/xml/src/main/java/org/apache/stanbol/reengineer/xml/XMLExtractor.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/contrib/reengineer/xml/src/main/java/org/apache/stanbol/reengineer/xml/XMLExtractor.java (original)
+++ stanbol/trunk/contrib/reengineer/xml/src/main/java/org/apache/stanbol/reengineer/xml/XMLExtractor.java Fri Nov 16 16:16:16 2012
@@ -42,7 +42,7 @@ import org.apache.stanbol.ontologymanage
 import org.apache.stanbol.ontologymanager.servicesapi.io.OntologyInputSource;
 import org.apache.stanbol.ontologymanager.servicesapi.scope.Scope;
 import org.apache.stanbol.ontologymanager.servicesapi.scope.ScopeManager;
-import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologyIRISource;
+import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologySource;
 import org.apache.stanbol.reengineer.base.api.DataSource;
 import org.apache.stanbol.reengineer.base.api.Reengineer;
 import org.apache.stanbol.reengineer.base.api.ReengineerManager;
@@ -172,7 +172,7 @@ public class XMLExtractor extends Reengi
 
             IRI[] locations = onManager.getOfflineConfiguration().getOntologySourceLocations()
                     .toArray(new IRI[0]);
-            OntologyInputSource xmlowlSrc = new RootOntologyIRISource(IRI.create(XML_OWL.URI),
+            OntologyInputSource xmlowlSrc = new RootOntologySource(IRI.create(XML_OWL.URI),
                     OWLOntologyManagerFactory.createOWLOntologyManager(locations));
 
             scope = onManager.createOntologyScope(scopeID, xmlowlSrc

Modified: stanbol/trunk/enhancer/engines/refactor/src/main/java/org/apache/stanbol/enhancer/engines/refactor/RefactorEnhancementEngine.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/engines/refactor/src/main/java/org/apache/stanbol/enhancer/engines/refactor/RefactorEnhancementEngine.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/enhancer/engines/refactor/src/main/java/org/apache/stanbol/enhancer/engines/refactor/RefactorEnhancementEngine.java (original)
+++ stanbol/trunk/enhancer/engines/refactor/src/main/java/org/apache/stanbol/enhancer/engines/refactor/RefactorEnhancementEngine.java Fri Nov 16 16:16:16 2012
@@ -71,7 +71,7 @@ import org.apache.stanbol.ontologymanage
 import org.apache.stanbol.ontologymanager.servicesapi.session.SessionManager;
 import org.apache.stanbol.ontologymanager.sources.clerezza.GraphContentInputSource;
 import org.apache.stanbol.ontologymanager.sources.clerezza.GraphSource;
-import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologyIRISource;
+import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologySource;
 import org.apache.stanbol.rules.base.api.AlreadyExistingRecipeException;
 import org.apache.stanbol.rules.base.api.NoSuchRecipeException;
 import org.apache.stanbol.rules.base.api.Recipe;
@@ -480,7 +480,7 @@ public class RefactorEnhancementEngine e
                 }
                 try {
                     // TODO replace with a Clerezza equivalent
-                    ontologySpace.addOntology(new RootOntologyIRISource(physicalIRI, sharedManager));
+                    ontologySpace.addOntology(new RootOntologySource(physicalIRI, sharedManager));
                     success.add(url);
                 } catch (OWLOntologyCreationException e) {
                     log.error("Failed to load ontology from physical location " + physicalIRI

Modified: stanbol/trunk/ontologymanager/generic/core/src/main/java/org/apache/stanbol/ontologymanager/core/scope/ScopeManagerImpl.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/generic/core/src/main/java/org/apache/stanbol/ontologymanager/core/scope/ScopeManagerImpl.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/generic/core/src/main/java/org/apache/stanbol/ontologymanager/core/scope/ScopeManagerImpl.java (original)
+++ stanbol/trunk/ontologymanager/generic/core/src/main/java/org/apache/stanbol/ontologymanager/core/scope/ScopeManagerImpl.java Fri Nov 16 16:16:16 2012
@@ -56,7 +56,7 @@ import org.apache.stanbol.ontologymanage
 import org.apache.stanbol.ontologymanager.servicesapi.scope.ScopeRegistry;
 import org.apache.stanbol.ontologymanager.servicesapi.util.OntologyNetworkConfigurationUtils;
 import org.apache.stanbol.ontologymanager.sources.owlapi.BlankOntologySource;
-import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologyIRISource;
+import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologySource;
 import org.osgi.service.component.ComponentContext;
 import org.semanticweb.owlapi.io.FileDocumentSource;
 import org.semanticweb.owlapi.io.IRIDocumentSource;
@@ -363,7 +363,7 @@ public class ScopeManagerImpl extends Sc
                     corespc.tearDown();
                     for (int i = 0; i < cores.length; i++)
                         try {
-                            corespc.addOntology(new RootOntologyIRISource(IRI.create(cores[i])));
+                            corespc.addOntology(new RootOntologySource(IRI.create(cores[i])));
                         } catch (Exception ex) {
                             log.warn("Failed to import ontology " + cores[i], ex);
                             continue;
@@ -375,7 +375,7 @@ public class ScopeManagerImpl extends Sc
                 sc.getCustomSpace().tearDown();
                 for (String locationIri : customs) {
                     try {
-                        OntologyInputSource<?> src = new RootOntologyIRISource(IRI.create(locationIri));
+                        OntologyInputSource<?> src = new RootOntologySource(IRI.create(locationIri));
                         sc.getCustomSpace().addOntology(src);
                         log.debug("Added ontology from location {}", locationIri);
                     } catch (UnmodifiableOntologyCollectorException e) {

Modified: stanbol/trunk/ontologymanager/multiplexer/clerezza/src/main/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/impl/AbstractOntologyCollectorImpl.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/multiplexer/clerezza/src/main/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/impl/AbstractOntologyCollectorImpl.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/multiplexer/clerezza/src/main/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/impl/AbstractOntologyCollectorImpl.java (original)
+++ stanbol/trunk/ontologymanager/multiplexer/clerezza/src/main/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/impl/AbstractOntologyCollectorImpl.java Fri Nov 16 16:16:16 2012
@@ -54,7 +54,7 @@ import org.apache.stanbol.ontologymanage
 import org.apache.stanbol.ontologymanager.servicesapi.ontology.OntologyProvider;
 import org.apache.stanbol.ontologymanager.servicesapi.util.OntologyUtils;
 import org.apache.stanbol.ontologymanager.sources.clerezza.GraphSource;
-import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologyIRISource;
+import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologySource;
 import org.semanticweb.owlapi.apibinding.OWLManager;
 import org.semanticweb.owlapi.model.AddImport;
 import org.semanticweb.owlapi.model.IRI;
@@ -163,7 +163,7 @@ public abstract class AbstractOntologyCo
             log.debug("Origin wraps a {}", ref.getClass().getCanonicalName());
             if (ref instanceof IRI) try {
                 log.debug("Deferring addition to physical IRI {} (if available).", ref);
-                key = addOntology(new RootOntologyIRISource((IRI) ref));
+                key = addOntology(new RootOntologySource((IRI) ref));
             } catch (OWLOntologyCreationException e) {
                 throw new RuntimeException(e);
             }

Modified: stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/io/TestStorage.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/io/TestStorage.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/io/TestStorage.java (original)
+++ stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/io/TestStorage.java Fri Nov 16 16:16:16 2012
@@ -36,7 +36,7 @@ import org.apache.stanbol.ontologymanage
 import org.apache.stanbol.ontologymanager.servicesapi.io.OntologyInputSource;
 import org.apache.stanbol.ontologymanager.servicesapi.scope.Scope;
 import org.apache.stanbol.ontologymanager.sources.owlapi.ParentPathInputSource;
-import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologyIRISource;
+import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologySource;
 import org.junit.After;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -95,7 +95,7 @@ public class TestStorage {
     @Test
     public void storedOntologyOutlivesScope() throws Exception {
         String ephemeralScopeId = "CaducousScope";
-        OntologyInputSource<OWLOntology> ois = new RootOntologyIRISource(IRI.create(getClass().getResource(
+        OntologyInputSource<OWLOntology> ois = new RootOntologySource(IRI.create(getClass().getResource(
             "/ontologies/nonexistentcharacters.owl")));
         OWLOntologyID ontologyId = ois.getRootOntology().getOntologyID();
         Scope scope = onManager.createOntologyScope(ephemeralScopeId);

Modified: stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/scope/TestOntologySpaces.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/scope/TestOntologySpaces.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/scope/TestOntologySpaces.java (original)
+++ stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/scope/TestOntologySpaces.java Fri Nov 16 16:16:16 2012
@@ -87,7 +87,7 @@ public class TestOntologySpaces {
         OWLDataFactory df = mgr.getOWLDataFactory();
 
         ont = mgr.createOntology(baseIri);
-        inMemorySrc = new RootOntologySource(ont, null);
+        inMemorySrc = new RootOntologySource(ont);
         // Let's state that Linus is a human being
         OWLClass cHuman = df.getOWLClass(IRI.create(baseIri + "/" + Constants.humanBeing));
         OWLIndividual iLinus = df.getOWLNamedIndividual(IRI.create(baseIri + "/" + Constants.linus));
@@ -99,7 +99,7 @@ public class TestOntologySpaces {
 
         dropSrc = getLocalSource("/ontologies/droppedcharacters.owl", mgr);
         nonexSrc = getLocalSource("/ontologies/nonexistentcharacters.owl", mgr);
-        minorSrc = new RootOntologySource(ont2, null);
+        minorSrc = new RootOntologySource(ont2);
 
     }
 

Modified: stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/session/TestSessions.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/session/TestSessions.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/session/TestSessions.java (original)
+++ stanbol/trunk/ontologymanager/multiplexer/clerezza/src/test/java/org/apache/stanbol/ontologymanager/multiplexer/clerezza/session/TestSessions.java Fri Nov 16 16:16:16 2012
@@ -36,7 +36,6 @@ import org.apache.stanbol.ontologymanage
 import org.apache.stanbol.ontologymanager.servicesapi.session.NonReferenceableSessionException;
 import org.apache.stanbol.ontologymanager.servicesapi.session.Session;
 import org.apache.stanbol.ontologymanager.servicesapi.session.Session.State;
-import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologyIRISource;
 import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologySource;
 import org.junit.After;
 import org.junit.BeforeClass;
@@ -57,8 +56,8 @@ public class TestSessions {
     @BeforeClass
     public static void setup() throws Exception {
         OWLOntologyManager mgr = OWLOntologyManagerFactory.createOWLOntologyManager(null);
-        src1 = new RootOntologySource(mgr.createOntology(baseIri), null);
-        src2 = new RootOntologySource(mgr.createOntology(baseIri2), null);
+        src1 = new RootOntologySource(mgr.createOntology(baseIri));
+        src2 = new RootOntologySource(mgr.createOntology(baseIri2));
         reset();
     }
 
@@ -148,8 +147,8 @@ public class TestSessions {
     // @Test
     public void zombieSessionClearsContents() throws Exception {
         Session ses = sessionManager.createSession();
-        ses.addOntology(new RootOntologyIRISource((IRI.create(getClass().getResource(
-            "/ontologies/mockfoaf.rdf")))));
+        ses.addOntology(new RootOntologySource((IRI
+                .create(getClass().getResource("/ontologies/mockfoaf.rdf")))));
         OWLOntologyID expectedKey = new OWLOntologyID(IRI.create("http://xmlns.com/foaf/0.1/"));
         assertTrue(ontologyProvider.hasOntology(expectedKey));
         sessionManager.destroySession(ses.getID());

Modified: stanbol/trunk/ontologymanager/sources/clerezza/src/main/java/org/apache/stanbol/ontologymanager/sources/clerezza/GraphContentInputSource.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/sources/clerezza/src/main/java/org/apache/stanbol/ontologymanager/sources/clerezza/GraphContentInputSource.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/sources/clerezza/src/main/java/org/apache/stanbol/ontologymanager/sources/clerezza/GraphContentInputSource.java (original)
+++ stanbol/trunk/ontologymanager/sources/clerezza/src/main/java/org/apache/stanbol/ontologymanager/sources/clerezza/GraphContentInputSource.java Fri Nov 16 16:16:16 2012
@@ -161,6 +161,8 @@ public class GraphContentInputSource ext
                     content.reset();
                 } catch (IOException e) {
                     log.debug("Failed to reset data stream while parsing format {}.", f);
+                    // No way to retry if the stream cannot be reset. Must recreate it.
+                    break;
                 }
             }
         } while (!loaded && itf.hasNext());
@@ -170,8 +172,11 @@ public class GraphContentInputSource ext
             log.debug("Root ontology is a {}.", getRootOntology().getClass().getCanonicalName());
         } else {
             // Rollback graph creation, if any
-            if (tcProvider != null && tcProvider != null) tcProvider.deleteTripleCollection(name);
-            throw new OntologyLoadingException("All parsers failed. Giving up.");
+            if (tcProvider != null && tcProvider != null) {
+                tcProvider.deleteTripleCollection(name);
+                log.error("Parsing failed. Deleting triple collection {}", name);
+            }
+            throw new OntologyLoadingException("Parsing failed. Giving up.");
         }
 
         log.debug("Input source initialization completed in {} ms.", (System.currentTimeMillis() - before));

Modified: stanbol/trunk/ontologymanager/sources/clerezza/src/test/java/org/apache/stanbol/ontologymanager/sources/clerezza/TestClerezzaInputSources.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/sources/clerezza/src/test/java/org/apache/stanbol/ontologymanager/sources/clerezza/TestClerezzaInputSources.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/sources/clerezza/src/test/java/org/apache/stanbol/ontologymanager/sources/clerezza/TestClerezzaInputSources.java (original)
+++ stanbol/trunk/ontologymanager/sources/clerezza/src/test/java/org/apache/stanbol/ontologymanager/sources/clerezza/TestClerezzaInputSources.java Fri Nov 16 16:16:16 2012
@@ -20,13 +20,18 @@ import static org.apache.stanbol.ontolog
 import static org.apache.stanbol.ontologymanager.sources.clerezza.MockOsgiContext.reset;
 import static org.apache.stanbol.ontologymanager.sources.clerezza.MockOsgiContext.tcManager;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
 
 import java.io.InputStream;
 
 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.core.serializedform.SupportedFormat;
+import org.apache.clerezza.rdf.simple.storage.SimpleTcProvider;
 import org.apache.stanbol.ontologymanager.servicesapi.io.OntologyInputSource;
+import org.apache.stanbol.ontologymanager.servicesapi.ontology.OntologyLoadingException;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.BeforeClass;
@@ -34,20 +39,40 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * Test suite for the correctness of {@link OntologyInputSource} implementations based on Clerezza.
+ * 
+ * @author alexdma
+ * 
+ */
 public class TestClerezzaInputSources {
 
-    private Logger log = LoggerFactory.getLogger(getClass());
-
     @BeforeClass
     public static void loadGraphs() throws Exception {
         reset();
     }
 
-    private OntologyInputSource<TripleCollection> gis;
+    private String dummy_RdfXml = "/ontologies/dummy-01.rdfxml.rdf";
+
+    private String dummy_Turtle = "/ontologies/dummy-01.turtle.rdf";
+
+    private Logger log = LoggerFactory.getLogger(getClass());
+
+    private OntologyInputSource<TripleCollection> src;
 
     @Before
     public void bind() throws Exception {
+        src = null;
+    }
 
+    private void checkOntology(boolean usesTcProvider) throws Exception {
+        assertNotNull(src);
+        if (usesTcProvider) assertNotNull(src.getOrigin());
+        else assertNull(src.getOrigin());
+        TripleCollection o = src.getRootOntology();
+        assertNotNull(o);
+        log.info("Ontology loaded, is a {}", o.getClass().getCanonicalName());
+        assertSame(5, o.size()); // The owl:Ontology declaration and versionInfo also count as triples.
     }
 
     @After
@@ -55,6 +80,67 @@ public class TestClerezzaInputSources {
         reset();
     }
 
+    /*
+     * If the format is specificed and correct, the ontology source should be created as expected.
+     */
+    @Test
+    public void fromInputStreamWithFormat() throws Exception {
+        InputStream in = getClass().getResourceAsStream(dummy_Turtle);
+        src = new GraphContentInputSource(in, SupportedFormat.TURTLE);
+        checkOntology(false);
+    }
+
+    /*
+     * An ontology input source created using a custom TC Provider should create a non-null Origin (i.e. the
+     * name of the generated graph) and increase the triple collection count by 1.
+     */
+    @Test
+    public void fromInputStreamInSimpleTcProvider() throws Exception {
+        InputStream in = getClass().getResourceAsStream(dummy_RdfXml);
+        TcProvider tcp = new SimpleTcProvider();
+        assertSame(0, tcp.listTripleCollections().size());
+        int before = tcp.listTripleCollections().size();
+        src = new GraphContentInputSource(in, tcp);
+        checkOntology(true);
+        assertSame(before + 1, tcp.listTripleCollections().size());
+    }
+
+    /*
+     * An ontology input source created using the Clerezza TC Manager should create a non-null Origin (i.e.
+     * the name of the generated graph) and increase the triple collection count by 1.
+     */
+    @Test
+    public void fromInputStreamInTcManager() throws Exception {
+        InputStream in = getClass().getResourceAsStream(dummy_RdfXml);
+        int before = tcManager.listTripleCollections().size();
+        src = new GraphContentInputSource(in, tcManager);
+        checkOntology(true);
+        assertSame(before + 1, tcManager.listTripleCollections().size());
+    }
+
+    /*
+     * If the format is unspecificed, input source creation should still succeed if the resource is in the
+     * preferred format (RDF/XML). In all other cases it is OK whether it fails or succeeds.
+     */
+    @Test
+    public void fromInputStreamNoFormat() throws Exception {
+        // This should be successful as the RDF/XML parser is tried first.
+        InputStream in = getClass().getResourceAsStream(dummy_RdfXml);
+        src = new GraphContentInputSource(in);
+        checkOntology(false);
+
+        // This should fail unless the input stream can be reset.
+        in = getClass().getResourceAsStream(dummy_Turtle);
+        try {
+            src = new GraphContentInputSource(in);
+            log.warn("Unexpected behaviour: no {} caught.", OntologyLoadingException.class.getSimpleName());
+            log.warn("Will check if loading was successful.");
+            checkOntology(false);
+        } catch (OntologyLoadingException ex) {
+            log.info("Caught expected {}", ex.getClass().getSimpleName());
+        }
+    }
+
     // TODO move this test where we have access to the Clerezza implementation.
     //
     // @Test
@@ -101,9 +187,9 @@ public class TestClerezzaInputSources {
         inputStream = TestClerezzaInputSources.class.getResourceAsStream("/ontologies/minorcharacters.owl");
         parser.parse(tcManager.createMGraph(uri), inputStream, SupportedFormat.RDF_XML, uri);
 
-        gis = new GraphSource(new UriRef(Locations.CHAR_ACTIVE.toString()));
-        assertNotNull(gis);
-        assertNotNull(gis.getRootOntology());
+        src = new GraphSource(new UriRef(Locations.CHAR_ACTIVE.toString()));
+        assertNotNull(src);
+        assertNotNull(src.getRootOntology());
         // Set<TripleCollection> imported = gis.getImports(false);
         // // Number of stored graphs minus the importing one minus the reserved graph = imported graphs
         // assertEquals(tcManager.listTripleCollections().size() - 2, imported.size());

Added: stanbol/trunk/ontologymanager/sources/clerezza/src/test/resources/ontologies/dummy-01.rdfxml.rdf
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/sources/clerezza/src/test/resources/ontologies/dummy-01.rdfxml.rdf?rev=1410428&view=auto
==============================================================================
--- stanbol/trunk/ontologymanager/sources/clerezza/src/test/resources/ontologies/dummy-01.rdfxml.rdf (added)
+++ stanbol/trunk/ontologymanager/sources/clerezza/src/test/resources/ontologies/dummy-01.rdfxml.rdf Fri Nov 16 16:16:16 2012
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<!--
+  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.
+-->
+
+<!DOCTYPE rdf:RDF [
+    <!ENTITY foaf "http://xmlns.com/foaf/0.1/" >
+    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
+    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
+    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
+    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
+]>
+
+
+<rdf:RDF xmlns="http://stanbol.apache.org/ontologies/generic/entities#"
+     xml:base="http://stanbol.apache.org/ontologies/dummy/01"
+     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+     xmlns:foaf="http://xmlns.com/foaf/0.1/"
+     xmlns:owl="http://www.w3.org/2002/07/owl#"
+     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
+     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+    <owl:Ontology rdf:about="http://stanbol.apache.org/ontologies/dummy/01">
+        <owl:versionInfo xml:lang="en">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 &quot;License&quot;); 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 &quot;AS IS&quot; 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.
+        </owl:versionInfo>
+    </owl:Ontology>
+    
+    <foaf:Person rdf:about="http://stanbol.apache.org/ontologies/generic/entities#Begona"/>
+
+    <foaf:Person rdf:about="http://stanbol.apache.org/ontologies/generic/entities#Alex">
+        <foaf:knows rdf:resource="http://stanbol.apache.org/ontologies/generic/entities#Begona"/>
+    </foaf:Person>
+    
+</rdf:RDF>
+
+
+
+<!-- Generated by the OWL API (version 3.2.2.1789) http://owlapi.sourceforge.net -->
\ No newline at end of file

Added: stanbol/trunk/ontologymanager/sources/clerezza/src/test/resources/ontologies/dummy-01.turtle.rdf
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/sources/clerezza/src/test/resources/ontologies/dummy-01.turtle.rdf?rev=1410428&view=auto
==============================================================================
--- stanbol/trunk/ontologymanager/sources/clerezza/src/test/resources/ontologies/dummy-01.turtle.rdf (added)
+++ stanbol/trunk/ontologymanager/sources/clerezza/src/test/resources/ontologies/dummy-01.turtle.rdf Fri Nov 16 16:16:16 2012
@@ -0,0 +1,37 @@
+# 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.
+
+@prefix : <http://stanbol.apache.org/ontologies/generic/entities#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xml: <http://www.w3.org/XML/1998/namespace> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@base <http://stanbol.apache.org/ontologies/dummy/01> .
+
+<http://stanbol.apache.org/ontologies/dummy/01> rdf:type owl:Ontology ;
+                                                
+                                                owl:versionInfo """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.
+        """@en .
+
+:Alex a foaf:Person ; 
+      foaf:knows :Begona .
+      
+:Begona a foaf:Person .

Modified: stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/RootOntologyIRISource.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/RootOntologyIRISource.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/RootOntologyIRISource.java (original)
+++ stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/RootOntologyIRISource.java Fri Nov 16 16:16:16 2012
@@ -22,7 +22,7 @@ import org.semanticweb.owlapi.model.OWLO
 
 @Deprecated
 public class RootOntologyIRISource extends
-        org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologyIRISource {
+        org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologySource {
 
     public RootOntologyIRISource(IRI rootPhysicalIri) throws OWLOntologyCreationException {
         super(rootPhysicalIri);
@@ -33,7 +33,7 @@ public class RootOntologyIRISource exten
     }
 
     public RootOntologyIRISource(IRI rootPhysicalIri, OWLOntologyManager manager, boolean ignoreIriMappers) throws OWLOntologyCreationException {
-        super(rootPhysicalIri, manager, ignoreIriMappers);
+        this(rootPhysicalIri, manager);
     }
 
 }

Modified: stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/sources/owlapi/OntologyContentInputSource.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/sources/owlapi/OntologyContentInputSource.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/sources/owlapi/OntologyContentInputSource.java (original)
+++ stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/sources/owlapi/OntologyContentInputSource.java Fri Nov 16 16:16:16 2012
@@ -27,7 +27,11 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * An input source that parses an in-memory {@link OWLOntology} object from an input stream.
+ * An input source that tries to parse an in-memory {@link OWLOntology} object from an input stream. This
+ * ontology input source will try to resolve imports and fail if one cannot be resolved. To setup a custom
+ * configuration, such as adding IRI mappers, the constructor
+ * {@link #OntologyContentInputSource(InputStream, OWLOntologyManager)} can be used with a configured
+ * {@link OWLOntologyManager}.
  * 
  * @author alexdma
  * 

Modified: stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/sources/owlapi/RootOntologySource.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/sources/owlapi/RootOntologySource.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/sources/owlapi/RootOntologySource.java (original)
+++ stanbol/trunk/ontologymanager/sources/owlapi/src/main/java/org/apache/stanbol/ontologymanager/sources/owlapi/RootOntologySource.java Fri Nov 16 16:16:16 2012
@@ -16,32 +16,92 @@
  */
 package org.apache.stanbol.ontologymanager.sources.owlapi;
 
+import org.apache.stanbol.ontologymanager.servicesapi.io.OntologyInputSource;
 import org.apache.stanbol.ontologymanager.servicesapi.io.Origin;
+import org.semanticweb.owlapi.apibinding.OWLManager;
 import org.semanticweb.owlapi.model.IRI;
 import org.semanticweb.owlapi.model.OWLOntology;
+import org.semanticweb.owlapi.model.OWLOntologyCreationException;
+import org.semanticweb.owlapi.model.OWLOntologyManager;
 
 /**
- * An input source that provides the supplied OWL ontology straight away. The physical IRI is either obtained
- * from the default document IRI in the ontology, or supplied manually using the appropriate constructor (e.g.
- * retrieved from the ontology manager that actually loaded the ontology).
+ * An input source that provides the supplied OWL ontology straight away or from its physical resource. The
+ * physical IRI is either obtained from the default document IRI in the ontology, or supplied manually using
+ * the appropriate constructor (e.g. retrieved from the ontology manager that actually loaded the ontology).<br>
+ * <br>
+ * Note that, no matter what constructor is used, the expected behavior of {@link OntologyInputSource}
+ * consumers remains the same, i.e. the root ontology is checked first, and then its physical origin.
+ * 
+ * @author alexdma
  */
 public class RootOntologySource extends AbstractOWLOntologyInputSource {
 
+    /**
+     * This constructor can be used when the physical IRI of the ontology is known and one wants Stanbol to
+     * obtain the ontology/ies from it. Any failure to do so, including parse errors and unresolved imports,
+     * will cause an {@link OWLOntologyCreationException} to be thrown.
+     * 
+     * @param rootPhysicalIri
+     *            the physical IRI where the ontology is located.
+     * @throws OWLOntologyCreationException
+     *             if no ontology could be obtained by resolving the root physical IRI.
+     */
+    public RootOntologySource(IRI rootPhysicalIri) throws OWLOntologyCreationException {
+        this(rootPhysicalIri, OWLManager.createOWLOntologyManager());
+    }
+
+    /**
+     * This constructor can be used when the physical IRI of the ontology is known and one wants Stanbol to
+     * obtain the ontology/ies from it, but one needs a special configuration for the ontology manager that
+     * should be used for doing so, e.g. custom IRI mappers or import resolution policies. This custom
+     * ontology manager can be passed as the second argument.<br>
+     * <br>
+     * Any failure to obtain the ontology/ies, including parse errors and unresolved imports (if set to do
+     * so), will cause an {@link OWLOntologyCreationException} to be thrown.
+     * 
+     * @param rootPhysicalIri
+     *            the physical IRI where the ontology is located.
+     * @param manager
+     *            the ontology manager to be used for resolving the IRI.
+     * @throws OWLOntologyCreationException
+     *             if no ontology could be obtained by resolving the root physical IRI.
+     */
+    public RootOntologySource(IRI rootPhysicalIri, OWLOntologyManager manager) throws OWLOntologyCreationException {
+        bindPhysicalOrigin(Origin.create(rootPhysicalIri));
+        bindRootOntology(manager.loadOntology(rootPhysicalIri));
+    }
+
+    /**
+     * This constructor can be used if an {@link OWLOntology} object was obtained prior to creating this input
+     * source. The {@link OWLOntology} passed in as an argument is set as the root ontology. No import check
+     * or resolution is performed.
+     * 
+     * @param rootOntology
+     *            the ontology object that will be returned by {@link #getRootOntology()}.
+     */
     public RootOntologySource(OWLOntology rootOntology) {
-        bindRootOntology(rootOntology);
-        // Never bind logical IDs as physical IRIs, as they risk overwriting previous bindings.
-        bindPhysicalOrigin(null);
+        this(rootOntology, rootOntology.getOWLOntologyManager().getOntologyDocumentIRI(rootOntology));
     }
 
     /**
-     * This constructor can be used to hijack ontologies using a physical IRI other than their default one.
+     * This constructor can be used if an {@link OWLOntology} object was obtained prior to creating this input
+     * source, but one needs to specify that the source for that ontology is at a different IRI than the one
+     * recorded by its ontology manager. The {@link OWLOntology} passed in as an argument is set as the root
+     * ontology. No import check or resolution is performed.
      * 
      * @param rootOntology
-     * @param phyicalIRI
+     *            the ontology object that will be returned by {@link #getRootOntology()}.
+     * @param physicalIriOverride
+     *            the new physical location of the ontology.
      */
-    public RootOntologySource(OWLOntology rootOntology, IRI phyicalIRI) {
-        this(rootOntology);
-        bindPhysicalOrigin(phyicalIRI == null ? null : Origin.create(phyicalIRI));
+    public RootOntologySource(OWLOntology rootOntology, IRI physicalIriOverride) {
+        if (rootOntology == null) throw new IllegalArgumentException(
+                "Root ontology cannot be null. "
+                        + "To submit a dummy ontology input source, please use class "
+                        + BlankOntologySource.class.getCanonicalName() + " instead.");
+        bindRootOntology(rootOntology);
+        // Never bind logical IDs as physical IRIs, as they risk overwriting previous bindings.
+        bindPhysicalOrigin(Origin.create(physicalIriOverride));
     }
 
     @Override

Modified: stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/Constants.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/Constants.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/Constants.java (original)
+++ stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/Constants.java Fri Nov 16 16:16:16 2012
@@ -1,38 +1,37 @@
-package org.apache.stanbol.ontologymanager.sources.owlapi;
 /*
-* 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.
-*/
-
+ * 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.sources.owlapi;
 
 public class Constants {
 
-	public static final String PEANUTS_MAIN_BASE = "http://stanbol.apache.org/ontologies/pcomics/maincharacters.owl";
+    public static final String PEANUTS_MAIN_BASE = "http://stanbol.apache.org/ontologies/pcomics/maincharacters.owl";
+
+    public static final String PEANUTS_MINOR_BASE = "http://stanbol.apache.org/ontologies/pcomics/minorcharacters.owl";
 
-	public static final String PEANUTS_MINOR_BASE = "http://stanbol.apache.org/ontologies/pcomics/minorcharacters.owl";
+    public static final String dog = "Dog";
 
-	public static final String dog = "Dog";
+    public static final String humanBeing = "HumanBeing";
 
-	public static final String humanBeing = "HumanBeing";
+    public static final String linus = "Linus";
 
-	public static final String linus = "Linus";
+    public static final String lucy = "Lucy";
 
-	public static final String lucy = "Lucy";
+    public static final String snoopy = "Snoopy";
 
-	public static final String snoopy = "Snoopy";
+    public static final String truffles = "Truffles";
 
-	public static final String truffles = "Truffles";
-	
 }

Added: stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/Entities.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/Entities.java?rev=1410428&view=auto
==============================================================================
--- stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/Entities.java (added)
+++ stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/Entities.java Fri Nov 16 16:16:16 2012
@@ -0,0 +1,51 @@
+/*
+ * 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.sources.owlapi;
+
+import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.model.IRI;
+import org.semanticweb.owlapi.model.OWLAnnotationProperty;
+import org.semanticweb.owlapi.model.OWLClass;
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.OWLNamedIndividual;
+import org.semanticweb.owlapi.model.OWLObjectProperty;
+
+import com.hp.hpl.jena.sparql.vocabulary.FOAF;
+
+/**
+ * OWL entities used for tests.
+ * 
+ * @author alexdma
+ * 
+ */
+public class Entities {
+
+    private static OWLDataFactory df = OWLManager.getOWLDataFactory();
+
+    private static String _NS = "http://stanbol.apache.org/ontologies/generic/entities#";
+
+    public static OWLNamedIndividual ALEX = df.getOWLNamedIndividual(IRI.create(_NS + "Alex"));
+
+    public static OWLNamedIndividual BEGONA = df.getOWLNamedIndividual(IRI.create(_NS + "Begona"));
+
+    public static OWLClass FOAF_PERSON = df.getOWLClass(IRI.create(FOAF.NS + "Person"));
+
+    public static OWLObjectProperty FOAF_KNOWS = df.getOWLObjectProperty(IRI.create(FOAF.NS + "knows"));
+
+    public static OWLAnnotationProperty FOAF_KNOWS_AP = df.getOWLAnnotationProperty(IRI.create(FOAF.NS
+                                                                                               + "knows"));
+}

Modified: stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/TestOWLAPIInputSources.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/TestOWLAPIInputSources.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/TestOWLAPIInputSources.java (original)
+++ stanbol/trunk/ontologymanager/sources/owlapi/src/test/java/org/apache/stanbol/ontologymanager/sources/owlapi/TestOWLAPIInputSources.java Fri Nov 16 16:16:16 2012
@@ -16,13 +16,21 @@
  */
 package org.apache.stanbol.ontologymanager.sources.owlapi;
 
+import static org.apache.stanbol.ontologymanager.sources.owlapi.Entities.ALEX;
+import static org.apache.stanbol.ontologymanager.sources.owlapi.Entities.BEGONA;
+import static org.apache.stanbol.ontologymanager.sources.owlapi.Entities.FOAF_KNOWS;
+import static org.apache.stanbol.ontologymanager.sources.owlapi.Entities.FOAF_KNOWS_AP;
+import static org.apache.stanbol.ontologymanager.sources.owlapi.Entities.FOAF_PERSON;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
 import java.io.File;
 import java.io.FileWriter;
+import java.io.InputStream;
 import java.net.URI;
 import java.net.URL;
 import java.util.Set;
@@ -34,6 +42,7 @@ import org.junit.Test;
 import org.semanticweb.owlapi.apibinding.OWLManager;
 import org.semanticweb.owlapi.io.WriterDocumentTarget;
 import org.semanticweb.owlapi.model.IRI;
+import org.semanticweb.owlapi.model.OWLAxiom;
 import org.semanticweb.owlapi.model.OWLClass;
 import org.semanticweb.owlapi.model.OWLDataFactory;
 import org.semanticweb.owlapi.model.OWLIndividual;
@@ -43,6 +52,12 @@ import org.semanticweb.owlapi.model.OWLO
 import org.semanticweb.owlapi.model.OWLOntologyManager;
 import org.semanticweb.owlapi.util.AutoIRIMapper;
 
+/**
+ * Test suite for the correctness of {@link OntologyInputSource} implementations based on the OWL API.
+ * 
+ * @author alexdma
+ * 
+ */
 public class TestOWLAPIInputSources {
 
     private static OWLDataFactory df;
@@ -53,6 +68,28 @@ public class TestOWLAPIInputSources {
     }
 
     @Test
+    public void fromInputStream() throws Exception {
+        InputStream in = getClass().getResourceAsStream("/ontologies/dummy-01.turtle.rdf");
+        OntologyInputSource<OWLOntology> src = new OntologyContentInputSource(in);
+        assertNotNull(src);
+        assertNull(src.getOrigin());
+        OWLOntology o = src.getRootOntology();
+        assertNotNull(o);
+        OWLAxiom ax = df.getOWLClassAssertionAxiom(FOAF_PERSON, ALEX);
+        assertTrue(o.containsAxiom(ax));
+        ax = df.getOWLClassAssertionAxiom(FOAF_PERSON, BEGONA);
+        assertTrue(o.containsAxiom(ax));
+
+        // Not knowing how the foaf:knows assertion is interpreted, we check for either (but not both!).
+        ax = df.getOWLObjectPropertyAssertionAxiom(FOAF_KNOWS, ALEX, BEGONA);
+        OWLAxiom ann = df.getOWLAnnotationAssertionAxiom(FOAF_KNOWS_AP, ALEX.getIRI(), BEGONA.getIRI());
+        assertTrue(o.containsAxiom(ann) || o.containsAxiom(ax));
+        assertFalse(o.containsAxiom(ann) && o.containsAxiom(ax));
+
+        assertSame(3, o.getAxiomCount()); // No other axioms exist.
+    }
+
+    @Test
     public void testAutoIRIMapper() throws Exception {
 
         URL url = getClass().getResource("/ontologies");
@@ -132,7 +169,7 @@ public class TestOWLAPIInputSources {
     public void testOfflineSingleton() throws Exception {
         URL url = getClass().getResource("/ontologies/mockfoaf.rdf");
         assertNotNull(url);
-        OntologyInputSource<OWLOntology> coreSource = new RootOntologyIRISource(IRI.create(url));
+        OntologyInputSource<OWLOntology> coreSource = new RootOntologySource(IRI.create(url));
         assertNotNull(df);
         /*
          * To check it fetched the correct ontology, we look for a declaration of the bogus class foaf:Perzon

Added: stanbol/trunk/ontologymanager/sources/owlapi/src/test/resources/ontologies/dummy-01.turtle.rdf
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/sources/owlapi/src/test/resources/ontologies/dummy-01.turtle.rdf?rev=1410428&view=auto
==============================================================================
--- stanbol/trunk/ontologymanager/sources/owlapi/src/test/resources/ontologies/dummy-01.turtle.rdf (added)
+++ stanbol/trunk/ontologymanager/sources/owlapi/src/test/resources/ontologies/dummy-01.turtle.rdf Fri Nov 16 16:16:16 2012
@@ -0,0 +1,30 @@
+# 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.
+
+@prefix : <http://stanbol.apache.org/ontologies/generic/entities#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xml: <http://www.w3.org/XML/1998/namespace> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@base <http://stanbol.apache.org/ontologies/dummy/01> .
+
+<http://stanbol.apache.org/ontologies/dummy/01> rdf:type owl:Ontology .
+
+:Alex a foaf:Person ; 
+      foaf:knows :Begona .
+      
+:Begona a foaf:Person .

Modified: stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java (original)
+++ stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntoNetRootResource.java Fri Nov 16 16:16:16 2012
@@ -561,7 +561,6 @@ public class OntoNetRootResource extends
              * Because the ontology provider's load method could fail after only one attempt without resetting
              * the stream, we might have to do that ourselves.
              */
-
             List<String> formats;
             if (format != null && !format.trim().isEmpty()) formats = Collections.singletonList(format);
             else // The RESTful API has its own list of preferred formats
@@ -604,7 +603,7 @@ public class OntoNetRootResource extends
                     failed++;
                 }
             } while ((key == null/* || key.isAnonymous() */) && itf.hasNext());
-            if (key == null || key.isAnonymous() && rb == null) {
+            if ((key == null || key.isAnonymous()) && rb == null) {
                 if (failed > 0) throw new WebApplicationException(BAD_REQUEST);
                 else if (unsupported > 0) throw new WebApplicationException(UNSUPPORTED_MEDIA_TYPE);
             }

Modified: stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java (original)
+++ stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java Fri Nov 16 16:16:16 2012
@@ -30,6 +30,7 @@ import static javax.ws.rs.core.Response.
 import static javax.ws.rs.core.Response.Status.FORBIDDEN;
 import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
 import static javax.ws.rs.core.Response.Status.NOT_FOUND;
+import static javax.ws.rs.core.Response.Status.UNSUPPORTED_MEDIA_TYPE;
 import static org.apache.stanbol.commons.web.base.CorsHelper.addCORSOrigin;
 import static org.apache.stanbol.commons.web.base.CorsHelper.enableCORS;
 import static org.apache.stanbol.commons.web.base.format.KRFormat.FUNCTIONAL_OWL;
@@ -42,7 +43,6 @@ import static org.apache.stanbol.commons
 import static org.apache.stanbol.commons.web.base.format.KRFormat.TURTLE;
 import static org.apache.stanbol.commons.web.base.format.KRFormat.X_TURTLE;
 
-import java.io.BufferedInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
@@ -50,9 +50,10 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.URI;
 import java.util.ArrayList;
-import java.util.Collection;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import java.util.SortedSet;
@@ -83,9 +84,11 @@ import org.apache.clerezza.rdf.core.Grap
 import org.apache.clerezza.rdf.core.TripleCollection;
 import org.apache.clerezza.rdf.core.access.TcProvider;
 import org.apache.clerezza.rdf.core.serializedform.Parser;
+import org.apache.clerezza.rdf.core.serializedform.UnsupportedFormatException;
 import org.apache.stanbol.commons.owl.util.OWLUtils;
 import org.apache.stanbol.commons.owl.util.URIUtils;
 import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.ontologymanager.ontonet.api.scope.OntologyScope;
 import org.apache.stanbol.ontologymanager.registry.api.RegistryManager;
 import org.apache.stanbol.ontologymanager.registry.api.model.Library;
 import org.apache.stanbol.ontologymanager.registry.io.LibrarySource;
@@ -104,7 +107,6 @@ import org.apache.stanbol.ontologymanage
 import org.apache.stanbol.ontologymanager.servicesapi.util.OntologyUtils;
 import org.apache.stanbol.ontologymanager.sources.clerezza.GraphContentInputSource;
 import org.apache.stanbol.ontologymanager.sources.clerezza.GraphSource;
-import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologyIRISource;
 import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologySource;
 import org.apache.stanbol.ontologymanager.web.util.OntologyPrettyPrintResource;
 import org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxOntologyFormat;
@@ -593,8 +595,7 @@ public class ScopeResource extends Abstr
         ResponseBuilder rb;
         if (scope == null) rb = Response.status(NOT_FOUND);
         else try {
-            OWLOntologyID key = scope.getCustomSpace()
-                    .addOntology(new RootOntologyIRISource(IRI.create(iri)));
+            OWLOntologyID key = scope.getCustomSpace().addOntology(new RootOntologySource(IRI.create(iri)));
             URI created = getCreatedResource(OntologyUtils.encode(key));
             rb = Response.created(created);
         } catch (UnmodifiableOntologyCollectorException e) {
@@ -653,19 +654,34 @@ public class ScopeResource extends Abstr
         }
         boolean fileOk = file != null && file.canRead() && file.exists();
         if (fileOk || location != null || library != null) { // File and location take precedence
+
+            // src = new GraphContentInputSource(content, format, ontologyProvider.getStore());
+
             // Then add the file
             OntologyInputSource<?> src = null;
             if (fileOk) {
-                Collection<String> formats;
-                if (format == null || "".equals(format.trim())) formats = OntologyUtils.getPreferredFormats();
-                else formats = Collections.singleton(format);
-
-                for (String f : formats)
+                /*
+                 * Because the ontology provider's load method could fail after only one attempt without
+                 * resetting the stream, we might have to do that ourselves.
+                 */
+                List<String> formats;
+                if (format != null && !format.trim().isEmpty()) formats = Collections.singletonList(format);
+                else // The RESTful API has its own list of preferred formats
+                formats = Arrays.asList(new String[] {RDF_XML, TURTLE, X_TURTLE, N3, N_TRIPLE, OWL_XML,
+                                                      FUNCTIONAL_OWL, MANCHESTER_OWL, RDF_JSON});
+                int unsupported = 0, failed = 0;
+                Iterator<String> itf = formats.iterator();
+                if (!itf.hasNext()) throw new OntologyLoadingException("No suitable format found or defined.");
+                do {
+                    String f = itf.next();
                     try {
-                        // Use a buffered stream that can be reset for multiple attempts.
-                        InputStream content = new BufferedInputStream(new FileInputStream(file));
+                        // Re-instantiate the stream on every attempt
+                        InputStream content = new FileInputStream(file);
+                        // ClerezzaOWLUtils.guessOntologyID(new FileInputStream(file), Parser.getInstance(),
+                        // f);
                         OWLOntologyID guessed = OWLUtils.guessOntologyID(content, Parser.getInstance(), f);
-                        if (ontologyProvider.hasOntology(guessed)) {
+                        if (guessed != null && !guessed.isAnonymous()
+                            && ontologyProvider.hasOntology(guessed)) {
                             rb = Response.status(Status.CONFLICT);
                             this.submitted = guessed;
                             if (headers.getAcceptableMediaTypes().contains(MediaType.TEXT_HTML_TYPE)) {
@@ -674,35 +690,28 @@ public class ScopeResource extends Abstr
                             }
                             break;
                         } else {
-                            content = new BufferedInputStream(new FileInputStream(file));
-                            src = new GraphContentInputSource(content, format, ontologyProvider.getStore());
-                            break;
+                            content = new FileInputStream(file);
+                            log.debug("Recreated input stream for format {}", f);
+                            src = new GraphContentInputSource(content, f, ontologyProvider.getStore());
                         }
-                    } catch (OntologyLoadingException e) {
-                        // throw new WebApplicationException(e, BAD_REQUEST);
-                        continue;
+                    } catch (UnsupportedFormatException e) {
+                        log.warn(
+                            "POST method failed for media type {}. This should not happen (should fail earlier)",
+                            headers.getMediaType());
+                        // rb = Response.status(UNSUPPORTED_MEDIA_TYPE);
+                        unsupported++;
                     } catch (IOException e) {
-                        // throw new WebApplicationException(e, BAD_REQUEST);
-                        continue;
+                        log.debug(">>> FAILURE format {} (I/O error)", f);
+                        failed++;
+                    } catch (Exception e) { // SAXParseException and others
+                        log.debug(">>> FAILURE format {} (parse error)", f);
+                        failed++;
                     }
-            } else if (location != null) {
-                try {
-                    src = new RootOntologyIRISource(location);
-                } catch (Exception e) {
-                    log.error("Failed to load ontology from " + location, e);
-                    throw new WebApplicationException(e, BAD_REQUEST);
-                }
-            } else if (library != null) { // This comes last, since it will most likely have a value.
-                try {
-                    src = new LibrarySource(library, regMgr);
-                } catch (Exception e) {
-                    log.error("Failed to load ontology library " + library, e);
-                    throw new WebApplicationException(e, INTERNAL_SERVER_ERROR);
-                }
-            } else {
-                log.error("Bad request");
-                log.error(" file is: {}", file);
-                throw new WebApplicationException(BAD_REQUEST);
+                } while (src == null && itf.hasNext());
+//                if (src == null) {
+//                    if (failed > 0) throw new WebApplicationException(BAD_REQUEST);
+//                    else if (unsupported > 0) throw new WebApplicationException(UNSUPPORTED_MEDIA_TYPE);
+//                }
             }
 
             if (src != null) {
@@ -713,11 +722,7 @@ public class ScopeResource extends Abstr
                 OntologyUtils.encode(key);
                 // uri = uri.substring((ontologyProvider.getGraphPrefix() + "::").length());
                 if (uri != null && !uri.isEmpty()) {
-                    rb = Response.seeOther(URI.create("/ontonet/ontology/" + scope.getID() + "/" + uri)/*
-                                                                                                        * getCreatedResource
-                                                                                                        * (
-                                                                                                        * uri)
-                                                                                                        */);
+                    rb = Response.seeOther(URI.create("/ontonet/ontology/" + scope.getID() + "/" + uri));
                 } else rb = Response.ok();
             } else if (rb == null) rb = Response.status(INTERNAL_SERVER_ERROR);
         }
@@ -774,7 +779,7 @@ public class ScopeResource extends Abstr
         // Then ontology sources
         if (coreOntologies != null) for (String ont : coreOntologies)
             if (ont != null && !ont.isEmpty()) try {
-                srcs.add(new RootOntologyIRISource(IRI.create(ont)));
+                srcs.add(new RootOntologySource(IRI.create(ont)));
             } catch (Exception e2) {
                 // If this fails too, throw a bad request.
                 throw new WebApplicationException(e2, BAD_REQUEST);

Modified: stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionResource.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionResource.java?rev=1410428&r1=1410427&r2=1410428&view=diff
==============================================================================
--- stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionResource.java (original)
+++ stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionResource.java Fri Nov 16 16:16:16 2012
@@ -101,7 +101,7 @@ import org.apache.stanbol.ontologymanage
 import org.apache.stanbol.ontologymanager.servicesapi.util.OntologyUtils;
 import org.apache.stanbol.ontologymanager.sources.clerezza.GraphContentInputSource;
 import org.apache.stanbol.ontologymanager.sources.owlapi.OntologyContentInputSource;
-import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologyIRISource;
+import org.apache.stanbol.ontologymanager.sources.owlapi.RootOntologySource;
 import org.apache.stanbol.ontologymanager.web.util.OntologyPrettyPrintResource;
 import org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxOntologyFormat;
 import org.semanticweb.owlapi.model.IRI;
@@ -579,7 +579,7 @@ public class SessionResource extends Abs
     public Response manageOntology(String iri, @Context HttpHeaders headers) {
         if (session == null) return Response.status(NOT_FOUND).build();
         try {
-            session.addOntology(new RootOntologyIRISource(IRI.create(iri)));
+            session.addOntology(new RootOntologySource(IRI.create(iri)));
         } catch (UnmodifiableOntologyCollectorException e) {
             throw new WebApplicationException(e, FORBIDDEN);
         } catch (OWLOntologyCreationException e) {
@@ -666,7 +666,8 @@ public class SessionResource extends Abs
                         log.debug("Creating ontology input source...");
                         b4buf = System.currentTimeMillis();
                         OWLOntologyID guessed = OWLUtils.guessOntologyID(content, Parser.getInstance(), f);
-                        if (ontologyProvider.hasOntology(guessed)) {
+                        if (guessed != null && !guessed.isAnonymous()
+                            && ontologyProvider.hasOntology(guessed)) {
                             rb = Response.status(Status.CONFLICT);
                             this.submitted = guessed;
                             if (headers.getAcceptableMediaTypes().contains(MediaType.TEXT_HTML_TYPE)) {
@@ -675,7 +676,7 @@ public class SessionResource extends Abs
                             }
                         } else {
                             content = new BufferedInputStream(new FileInputStream(file));
-                            src = new GraphContentInputSource(content, format, ontologyProvider.getStore());
+                            src = new GraphContentInputSource(content, f, ontologyProvider.getStore());
                         }
                         log.debug("Done in {} ms", System.currentTimeMillis() - b4buf);
                         log.info("SUCCESS parse with format {}.", f);
@@ -690,7 +691,7 @@ public class SessionResource extends Abs
                 log.debug("No more formats to try.");
             } else if (location != null) {
                 try {
-                    src = new RootOntologyIRISource(location);
+                    src = new RootOntologySource(location);
                 } catch (Exception e) {
                     log.error("Failed to load ontology from " + location, e);
                     throw new WebApplicationException(e, BAD_REQUEST);