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 2011/11/24 14:49:56 UTC

svn commit: r1205827 - in /incubator/stanbol/trunk: ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/ ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/ontology/ ontologymanager/...

Author: alexdma
Date: Thu Nov 24 13:49:54 2011
New Revision: 1205827

URL: http://svn.apache.org/viewvc?rev=1205827&view=rev
Log:
Optimizations for STANBOL-332 and additional fix for STANBOL-384 :
* Full Clerezza-native ontology input source
* Ontology provider can manage ontology objects in arbitrary formats (clerezza implementation supports TripleCollection and OWLOntology).
* Reordering of preferred ontology formats when not specified

Added:
    incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/GraphContentInputSource.java
Modified:
    incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/OntologyContentInputSource.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/impl/clerezza/AbstractOntologyCollectorImpl.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/owlapi/OWLAPIOntologyProvider.java
    incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java
    incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/util/OntologyUtils.java
    incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeOntologyResource.java
    incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java
    incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionByIdResource.java
    incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionsResource.java
    incubator/stanbol/trunk/owl/src/main/java/org/apache/stanbol/owl/util/OWLUtils.java
    incubator/stanbol/trunk/owl/src/test/java/org/apache/stanbol/owl/util/TestOWLUtils.java

Added: 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=1205827&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/GraphContentInputSource.java (added)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/GraphContentInputSource.java Thu Nov 24 13:49:54 2011
@@ -0,0 +1,80 @@
+/*
+ * 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.Collection;
+import java.util.Collections;
+
+import org.apache.clerezza.rdf.core.Graph;
+import org.apache.clerezza.rdf.core.serializedform.Parser;
+import org.apache.clerezza.rdf.core.serializedform.SupportedFormat;
+import org.apache.clerezza.rdf.core.serializedform.UnsupportedFormatException;
+import org.apache.stanbol.ontologymanager.ontonet.impl.util.OntologyUtils;
+import org.apache.stanbol.owl.util.OWLUtils;
+import org.semanticweb.owlapi.model.OWLOntologyCreationException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class GraphContentInputSource extends AbstractClerezzaGraphInputSource {
+
+    private Logger log = LoggerFactory.getLogger(getClass());
+
+    public GraphContentInputSource(InputStream content) throws OWLOntologyCreationException {
+        this(content, null);
+    }
+
+    public GraphContentInputSource(InputStream content, String formatIdentifier) throws OWLOntologyCreationException {
+        this(content, formatIdentifier, Parser.getInstance());
+    }
+
+    public GraphContentInputSource(InputStream content, String formatIdentifier, Parser parser) throws OWLOntologyCreationException {
+        long before = System.currentTimeMillis();
+
+        if (content == null) throw new IllegalArgumentException("No content supplied");
+
+        bindPhysicalIri(null);
+        boolean loaded = false;
+
+        Collection<String> formats;
+        if (formatIdentifier == null || "".equals(formatIdentifier.trim())) formats = OntologyUtils
+                .getPreferredSupportedFormats(parser.getSupportedFormats());
+        else formats = Collections.singleton(formatIdentifier);
+        Graph graph = null;
+        for (String format : formats) {
+            try {
+                graph = parser.parse(content, format);
+                loaded = true;
+                break;
+            } catch (UnsupportedFormatException e) {
+                log.debug("Parsing format {} failed.", format);
+                continue;
+            } catch (Exception e) {
+                log.error("What the phukk "+format, e);
+                continue;
+            }
+        }
+        if (loaded) bindRootOntology(graph);
+        log.debug("Input source initialization completed in {} ms.", (System.currentTimeMillis() - before));
+    }
+
+    @Override
+    public String toString() {
+        return "<TRIPLE_COLLECTION_CONTENT>" + OWLUtils.guessOntologyIdentifier(getRootOntology());
+    }
+
+}

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/OntologyContentInputSource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/OntologyContentInputSource.java?rev=1205827&r1=1205826&r2=1205827&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/OntologyContentInputSource.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/io/OntologyContentInputSource.java Thu Nov 24 13:49:54 2011
@@ -22,16 +22,23 @@ import org.apache.stanbol.owl.util.OWLUt
 import org.semanticweb.owlapi.apibinding.OWLManager;
 import org.semanticweb.owlapi.model.OWLOntologyCreationException;
 import org.semanticweb.owlapi.model.OWLOntologyManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class OntologyContentInputSource extends AbstractOWLOntologyInputSource {
 
+    private Logger log = LoggerFactory.getLogger(getClass());
+    
     public OntologyContentInputSource(InputStream content) throws OWLOntologyCreationException {
         this(content, OWLManager.createOWLOntologyManager());
     }
 
     public OntologyContentInputSource(InputStream content, OWLOntologyManager manager) throws OWLOntologyCreationException {
+        long before = System.currentTimeMillis();
         bindPhysicalIri(null);
         bindRootOntology(manager.loadOntologyFromOntologyDocument(content));
+        log.debug("Input source initialization completed in {} ms.",
+            (System.currentTimeMillis() - before));
     }
 
     @Override

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=1205827&r1=1205826&r2=1205827&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 Thu Nov 24 13:49:54 2011
@@ -39,8 +39,6 @@ import org.semanticweb.owlapi.model.OWLO
  */
 public interface OntologyProvider<S> {
     
-    Serializer getSerializer();
-
     /**
      * The key used to configure the prefix to be used for addressing ontologies stored by this provider.
      */
@@ -55,6 +53,8 @@ public interface OntologyProvider<S> {
 
     Set<String> getKeys();
 
+    Serializer getSerializer();
+
     /**
      * Returns the storage system used by this ontology provider (e.g. a {@link TcProvider} or an
      * {@link OWLOntologyManager}).
@@ -136,4 +136,6 @@ public interface OntologyProvider<S> {
     String loadInStore(IRI location, String formatIdentifier, boolean force) throws IOException,
                                                                             UnsupportedFormatException;
 
+    String loadInStore(Object ontology, boolean force);
+    
 }

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=1205827&r1=1205826&r2=1205827&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 Thu Nov 24 13:49:54 2011
@@ -102,8 +102,9 @@ public abstract class AbstractOntologyCo
 
     @Override
     public synchronized void addOntology(OntologyInputSource<?> ontologySource) throws UnmodifiableOntologyCollectorException {
+        long before = System.currentTimeMillis();
         if (locked) throw new UnmodifiableOntologyCollectorException(this);
-        log.debug("Adding ontology {} to space {}", ontologySource != null ? ontologySource.getRootOntology()
+        log.debug("Adding ontology {} to space {}", ontologySource != null ? ontologySource
                 : "<NULL>", getNamespace() + getID());
         if (ontologySource == null || !ontologySource.hasRootOntology()) return; // No ontology to add
 
@@ -128,40 +129,43 @@ public abstract class AbstractOntologyCo
         // // FIXME there must be a better angle than using converters...
         // mg.addAll(OWLAPIToClerezzaConverter.owlOntologyToClerezzaTriples((OWLOntology) o));
         // }
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
-        // serialize it
-        if (o instanceof TripleCollection) {
-            ontologyProvider.getSerializer().serialize(out, (TripleCollection) o, SupportedFormat.RDF_XML);
-            // in = new ByteArrayInputStream(out.toByteArray());
-        } else if (o instanceof OWLOntology) {
-            try {
-                ((OWLOntology) o).getOWLOntologyManager().saveOntology((OWLOntology) o,
-                    new RDFXMLOntologyFormat(), new StreamDocumentTarget(out));
-            } catch (OWLOntologyStorageException e) {
-                log.error("Could not serialize the ontology for storage", e);
-                return;
-            }
-        }
+//        ByteArrayOutputStream out = new ByteArrayOutputStream();
+//        // serialize it
+//        if (o instanceof TripleCollection) {
+//            ontologyProvider.getSerializer().serialize(out, (TripleCollection) o, SupportedFormat.RDF_XML);
+//            // in = new ByteArrayInputStream(out.toByteArray());
+//        } else if (o instanceof OWLOntology) {
+//            try {
+//                ((OWLOntology) o).getOWLOntologyManager().saveOntology((OWLOntology) o,
+//                    new RDFXMLOntologyFormat(), new StreamDocumentTarget(out));
+//            } catch (OWLOntologyStorageException e) {
+//                log.error("Could not serialize the ontology for storage", e);
+//                return;
+//            }
+//        }
 
         String key = null;
-
-        InputStream in = new ByteArrayInputStream(out.toByteArray());
-        try {
-            key = ontologyProvider.loadInStore(in, SupportedFormat.RDF_XML, false);
-        } catch (UnsupportedFormatException e) {
-            // RDF/XML not supported is next to impossible...
-            log.error("Format {} not supported for deserialization.", SupportedFormat.RDF_XML);
-            return;
-        } catch (IOException e) {
-            log.error("Deserialization failed.", e);
-            return;
-        }
+        key = ontologyProvider.loadInStore(o, false);
+        
+//        InputStream in = new ByteArrayInputStream(out.toByteArray());
+//        try {
+//            key = ontologyProvider.loadInStore(in, SupportedFormat.RDF_XML, false);
+//        } catch (UnsupportedFormatException e) {
+//            // RDF/XML not supported is next to impossible...
+//            log.error("Format {} not supported for deserialization.", SupportedFormat.RDF_XML);
+//            return;
+//        } catch (IOException e) {
+//            log.error("Deserialization failed.", e);
+//            return;
+//        }
 
         if (key != null && !key.isEmpty()) {
             // add to index
             managedOntologies.put(IRI.create(uri.getUnicodeString()), key);
+            log.debug("Add ontology completed in {} ms.", (System.currentTimeMillis() - before));
             // fire the event
             fireOntologyAdded(uri);
+
         }
     }
 
@@ -238,7 +242,8 @@ public abstract class AbstractOntologyCo
     public OWLOntology getOntology(IRI ontologyIri) {
         if (!hasOntology(ontologyIri)) return null;
         OWLOntology o;
-        o = (OWLOntology) ontologyProvider.getStoredOntology(ontologyProvider.getKey(ontologyIri), OWLOntology.class);
+        o = (OWLOntology) ontologyProvider.getStoredOntology(ontologyProvider.getKey(ontologyIri),
+            OWLOntology.class);
         // TripleCollection g = tcProvider.getTriples(new UriRef(ontologyIri.toString()));
         // o = OWLAPIToClerezzaConverter.clerezzaGraphToOWLOntology(g);
         return o;

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOntologyProvider.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOntologyProvider.java?rev=1205827&r1=1205826&r2=1205827&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOntologyProvider.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/clerezza/ClerezzaOntologyProvider.java Thu Nov 24 13:49:54 2011
@@ -20,6 +20,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.URLConnection;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Dictionary;
 import java.util.HashMap;
@@ -56,6 +57,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.stanbol.commons.stanboltools.offline.OfflineMode;
 import org.apache.stanbol.ontologymanager.ontonet.api.OfflineConfiguration;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyProvider;
+import org.apache.stanbol.ontologymanager.ontonet.impl.util.OntologyUtils;
 import org.apache.stanbol.owl.OWLOntologyManagerFactory;
 import org.apache.stanbol.owl.PhonyIRIMapper;
 import org.apache.stanbol.owl.transformation.OWLAPIToClerezzaConverter;
@@ -306,7 +308,7 @@ public class ClerezzaOntologyProvider im
     @Override
     public String loadInStore(InputStream data, String formatIdentifier, boolean force) {
         // TODO Instead of copying the code, reuse it.
-
+        long before = System.currentTimeMillis();
         if (data == null) throw new IllegalArgumentException("No data to load ontologies from.");
 
         // Force is ignored for the content, but the imports?
@@ -331,10 +333,9 @@ public class ClerezzaOntologyProvider im
 
         boolean loaded = false;
 
-        Set<String> formats;
-        if (formatIdentifier == null || "".equals(formatIdentifier.trim())) formats = parser
-                .getSupportedFormats();
-        // TODO reorder formats
+        Collection<String> formats;
+        if (formatIdentifier == null || "".equals(formatIdentifier.trim())) formats = OntologyUtils
+                .getPreferredSupportedFormats(parser.getSupportedFormats());
         else formats = Collections.singleton(formatIdentifier);
         for (String format : formats) {
             try {
@@ -386,8 +387,9 @@ public class ClerezzaOntologyProvider im
             }
         }
         if (loaded) {
-//            System.out.println("I am mapping "+ontologyIri+" to key "+s);
+            // System.out.println("I am mapping "+ontologyIri+" to key "+s);
             ontologyIdsToKeys.put(ontologyIri, s);
+            log.debug("Load and Store completed in {} ms", (System.currentTimeMillis() - before));
             return s;
         } else return null;
     }
@@ -417,10 +419,9 @@ public class ClerezzaOntologyProvider im
 
         boolean loaded = false;
 
-        Set<String> formats;
-        if (formatIdentifier == null || "".equals(formatIdentifier.trim())) formats = parser
-                .getSupportedFormats();
-        // TODO reorder formats
+        Collection<String> formats;
+        if (formatIdentifier == null || "".equals(formatIdentifier.trim())) formats = OntologyUtils
+                .getPreferredSupportedFormats(parser.getSupportedFormats());
         else formats = Collections.singleton(formatIdentifier);
         for (String format : formats) {
             try {
@@ -468,7 +469,7 @@ public class ClerezzaOntologyProvider im
             }
         }
         if (loaded) {
-//            System.out.println("I am mapping "+ontologyIri+" to key "+s);
+            // System.out.println("I am mapping "+ontologyIri+" to key "+s);
             ontologyIdsToKeys.put(ontologyIri, s);
             return s;
         } else return null;
@@ -517,4 +518,76 @@ public class ClerezzaOntologyProvider im
         return serializer;
     }
 
+    @Override
+    public String loadInStore(Object ontology, boolean force) {
+
+        // TODO Instead of copying the code, reuse it.
+        long before = System.currentTimeMillis();
+        if (ontology == null) throw new IllegalArgumentException("No ontology supplied.");
+
+        MGraph graph;
+        TripleCollection rdfData;
+
+        if (ontology instanceof OWLOntology) {
+            rdfData = OWLAPIToClerezzaConverter.owlOntologyToClerezzaMGraph((OWLOntology) ontology);
+        } else if (ontology instanceof TripleCollection) {
+            rdfData = (TripleCollection) ontology;
+        } else throw new UnsupportedOperationException(
+                "This ontology provider can only accept objects assignable to " + TripleCollection.class
+                        + " or " + OWLOntology.class);
+
+        // Force is ignored for the content, but the imports?
+
+        String s = prefix + "::";
+        IRI ontologyIri = null;
+
+        boolean loaded = false;
+        
+        // FIXME are we getting rid of rdfData after adding its triples?
+        String iri = OWLUtils.guessOntologyIdentifier(rdfData).getUnicodeString();
+        ontologyIri = IRI.create(iri);
+        s += iri;
+        // Was most likely a SimpleMGraph
+//        if (rdfData instanceof MGraph) {
+//            graph = (MGraph) rdfData;
+//        } else 
+        {
+            UriRef uriref = new UriRef(s);
+            try {
+                graph = store.createMGraph(uriref);
+                // graph = new SimpleMGraph();
+            } catch (EntityAlreadyExistsException e) {
+                if (uriref.equals(e.getEntityName())) graph = store.getMGraph(uriref);
+                else graph = store.createMGraph(uriref);
+            }
+            graph.addAll(rdfData);
+        }
+        if (resolveImports) {
+            Iterator<Triple> it = graph.filter(null, RDF.type, OWL.Ontology);
+            if (it.hasNext()) {
+                Iterator<Triple> it2 = graph.filter(it.next().getSubject(), OWL.imports, null);
+                while (it2.hasNext()) {
+                    Resource obj = it2.next().getObject();
+                    if (obj instanceof UriRef) try {
+                        loadInStore(IRI.create(((UriRef) obj).getUnicodeString()), null, false);
+                    } catch (UnsupportedFormatException e) {
+                        log.warn("Failed to parse format for resource " + obj, e);
+                    } catch (IOException e) {
+                        log.warn("Failed to load ontology from resource " + obj, e);
+                    }
+                }
+            }
+
+        }
+
+        loaded = true;
+
+        if (loaded) {
+            // System.out.println("I am mapping "+ontologyIri+" to key "+s);
+            ontologyIdsToKeys.put(ontologyIri, s);
+            log.debug("Load and Store completed in {} ms", (System.currentTimeMillis() - before));
+            return s;
+        } else return null;
+    }
+
 }

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/owlapi/OWLAPIOntologyProvider.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/owlapi/OWLAPIOntologyProvider.java?rev=1205827&r1=1205826&r2=1205827&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/owlapi/OWLAPIOntologyProvider.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/owlapi/OWLAPIOntologyProvider.java Thu Nov 24 13:49:54 2011
@@ -134,4 +134,9 @@ public class OWLAPIOntologyProvider impl
         return null;
     }
 
+    @Override
+    public String loadInStore(Object ontology, boolean force) {
+        throw new UnsupportedOperationException("Not implemented for OWL API version.");
+    }
+
 }

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java?rev=1205827&r1=1205826&r2=1205827&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/session/SessionImpl.java Thu Nov 24 13:49:54 2011
@@ -24,7 +24,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.clerezza.rdf.core.access.TcProvider;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OWLExportable;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyProvider;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyScope;
@@ -83,8 +82,7 @@ public class SessionImpl extends Abstrac
     }
 
     /**
-     * FIXME not merging yet
-     * FIXME not including imported ontologies
+     * FIXME not merging yet FIXME not including imported ontologies
      * 
      * @see OWLExportable#asOWLOntology(boolean)
      */

Modified: incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/util/OntologyUtils.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/util/OntologyUtils.java?rev=1205827&r1=1205826&r2=1205827&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/util/OntologyUtils.java (original)
+++ incubator/stanbol/trunk/ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/util/OntologyUtils.java Thu Nov 24 13:49:54 2011
@@ -17,6 +17,8 @@
 package org.apache.stanbol.ontologymanager.ontonet.impl.util;
 
 import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
@@ -288,4 +290,20 @@ public class OntologyUtils {
 
     }
 
+    private static String[] preferredFormats = {"application/rdf+xml", "application/rdf+json", "text/turtle",
+                                                "text/rdf+n3", "text/rdf+nt", "text/owl-manchester",
+                                                "application/owl+xml"};
+    
+    public static List<String> getPreferredSupportedFormats(Collection<String> supported) {
+        List<String> result = new ArrayList<String>();
+        for (String f : preferredFormats)
+            if (supported.contains(f))
+                result.add(f);
+        // The non-preferred supported formats on the tail in any order
+        for (String f : supported)
+            if (!result.contains(f))
+                result.add(f);
+        return result;
+    }
+
 }

Modified: incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeOntologyResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeOntologyResource.java?rev=1205827&r1=1205826&r2=1205827&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeOntologyResource.java (original)
+++ incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeOntologyResource.java Thu Nov 24 13:49:54 2011
@@ -51,7 +51,6 @@ import org.semanticweb.owlapi.io.RDFXMLO
 import org.semanticweb.owlapi.model.AxiomType;
 import org.semanticweb.owlapi.model.IRI;
 import org.semanticweb.owlapi.model.OWLAxiom;
-import org.semanticweb.owlapi.model.OWLImportsDeclaration;
 import org.semanticweb.owlapi.model.OWLOntology;
 import org.semanticweb.owlapi.model.OWLOntologyCreationException;
 import org.semanticweb.owlapi.model.OWLOntologyManager;
@@ -180,15 +179,15 @@ public class ScopeOntologyResource exten
             }
             String res = null;
             try {
-//                for (OWLImportsDeclaration imp : ont.getImportsDeclarations())
-//                    System.out.println("DIOCALE "+imp);
+                // for (OWLImportsDeclaration imp : ont.getImportsDeclarations())
+                // System.out.println("DIOCALE "+imp);
                 res = OntologyRenderUtils.renderOntology(ont, new RDFXMLOntologyFormat(), sciri.toString(),
                     onm);
             } catch (OWLOntologyStorageException e) {
                 throw new WebApplicationException(e, INTERNAL_SERVER_ERROR);
             }
             return Response.ok(res).build();
-            
+
         } else {
             ScopeRegistry reg = onm.getScopeRegistry();
             String scopeID = uriInfo.getAbsolutePath().toString();

Modified: incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java?rev=1205827&r1=1205826&r2=1205827&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java (original)
+++ incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/ScopeResource.java Thu Nov 24 13:49:54 2011
@@ -53,7 +53,7 @@ import org.apache.stanbol.commons.web.ba
 import org.apache.stanbol.ontologymanager.ontonet.api.DuplicateIDException;
 import org.apache.stanbol.ontologymanager.ontonet.api.ONManager;
 import org.apache.stanbol.ontologymanager.ontonet.api.io.BlankOntologySource;
-import org.apache.stanbol.ontologymanager.ontonet.api.io.OntologyContentInputSource;
+import org.apache.stanbol.ontologymanager.ontonet.api.io.GraphContentInputSource;
 import org.apache.stanbol.ontologymanager.ontonet.api.io.OntologyInputSource;
 import org.apache.stanbol.ontologymanager.ontonet.api.io.OntologySetInputSource;
 import org.apache.stanbol.ontologymanager.ontonet.api.io.RootOntologyIRISource;
@@ -150,9 +150,12 @@ public class ScopeResource extends BaseS
                        KRFormat.MANCHESTER_OWL, KRFormat.RDF_JSON})
     @Produces(MediaType.TEXT_PLAIN)
     public Response manageOntology(InputStream content) {
+        long before = System.currentTimeMillis();
         if (scope == null) return Response.status(NOT_FOUND).build();
         try {
-            scope.getCustomSpace().addOntology(new OntologyContentInputSource(content));
+            scope.getCustomSpace().addOntology(new GraphContentInputSource(content)
+            // new OntologyContentInputSource(content)
+            );
         } catch (UnmodifiableOntologyCollectorException e) {
             throw new WebApplicationException(e, FORBIDDEN);
         } catch (UnloadableImportException e) {
@@ -161,6 +164,8 @@ public class ScopeResource extends BaseS
         } catch (OWLOntologyCreationException e) {
             throw new WebApplicationException(e, INTERNAL_SERVER_ERROR);
         }
+        log.debug("POST request for ontology addition completed in {} ms.",
+            (System.currentTimeMillis() - before));
         return Response.status(OK).type(MediaType.TEXT_PLAIN).build();
     }
 

Modified: incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionByIdResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionByIdResource.java?rev=1205827&r1=1205826&r2=1205827&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionByIdResource.java (original)
+++ incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionByIdResource.java Thu Nov 24 13:49:54 2011
@@ -45,7 +45,7 @@ import org.apache.stanbol.commons.web.ba
 import org.apache.stanbol.commons.web.base.format.KRFormat;
 import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
 import org.apache.stanbol.ontologymanager.ontonet.api.ONManager;
-import org.apache.stanbol.ontologymanager.ontonet.api.io.OntologyContentInputSource;
+import org.apache.stanbol.ontologymanager.ontonet.api.io.GraphContentInputSource;
 import org.apache.stanbol.ontologymanager.ontonet.api.io.RootOntologyIRISource;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.IrremovableOntologyException;
 import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyCollectorModificationException;
@@ -56,6 +56,8 @@ import org.apache.stanbol.ontologymanage
 import org.semanticweb.owlapi.model.IRI;
 import org.semanticweb.owlapi.model.OWLOntology;
 import org.semanticweb.owlapi.model.OWLOntologyCreationException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * The REST resource of an OntoNet {@link Session} whose identifier is known.
@@ -77,6 +79,8 @@ public class SessionByIdResource extends
 
     protected Session session;
 
+    private Logger log = LoggerFactory.getLogger(getClass());
+
     public SessionByIdResource(@PathParam(value = "id") String sessionId,
                                @Context ServletContext servletContext) {
         this.servletContext = servletContext;
@@ -192,14 +196,19 @@ public class SessionByIdResource extends
                        KRFormat.MANCHESTER_OWL, KRFormat.RDF_JSON})
     @Produces(MediaType.TEXT_PLAIN)
     public Response manageOntology(InputStream content) {
+        long before = System.currentTimeMillis();
         if (session == null) return Response.status(NOT_FOUND).build();
         try {
-            session.addOntology(new OntologyContentInputSource(content));
+            session.addOntology(new GraphContentInputSource(content)
+            // new OntologyContentInputSource(content)
+            );
         } catch (UnmodifiableOntologyCollectorException e) {
             throw new WebApplicationException(e, FORBIDDEN);
         } catch (OWLOntologyCreationException e) {
             throw new WebApplicationException(e, INTERNAL_SERVER_ERROR);
         }
+        log.debug("POST request for ontology addition completed in {} ms.",
+            (System.currentTimeMillis() - before));
         return Response.status(OK).type(MediaType.TEXT_PLAIN).build();
     }
 

Modified: incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionsResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionsResource.java?rev=1205827&r1=1205826&r2=1205827&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionsResource.java (original)
+++ incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/SessionsResource.java Thu Nov 24 13:49:54 2011
@@ -64,11 +64,9 @@ import org.apache.stanbol.ontologymanage
 import org.apache.stanbol.ontologymanager.ontonet.impl.renderers.SessionRenderer;
 import org.semanticweb.owlapi.apibinding.OWLManager;
 import org.semanticweb.owlapi.model.AddAxiom;
-import org.semanticweb.owlapi.model.AddImport;
 import org.semanticweb.owlapi.model.IRI;
 import org.semanticweb.owlapi.model.OWLClass;
 import org.semanticweb.owlapi.model.OWLDataFactory;
-import org.semanticweb.owlapi.model.OWLIndividual;
 import org.semanticweb.owlapi.model.OWLNamedIndividual;
 import org.semanticweb.owlapi.model.OWLOntology;
 import org.semanticweb.owlapi.model.OWLOntologyChange;

Modified: incubator/stanbol/trunk/owl/src/main/java/org/apache/stanbol/owl/util/OWLUtils.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/owl/src/main/java/org/apache/stanbol/owl/util/OWLUtils.java?rev=1205827&r1=1205826&r2=1205827&view=diff
==============================================================================
--- incubator/stanbol/trunk/owl/src/main/java/org/apache/stanbol/owl/util/OWLUtils.java (original)
+++ incubator/stanbol/trunk/owl/src/main/java/org/apache/stanbol/owl/util/OWLUtils.java Thu Nov 24 13:49:54 2011
@@ -72,6 +72,8 @@ public class OWLUtils {
         return IRI.create(iri);
     }
 
+    public static final String NS_STANBOL = "http://stanbol.apache.org/";
+
     public static UriRef guessOntologyIdentifier(TripleCollection g) {
         Iterator<Triple> it = g.filter(null, RDF.type, OWL.Ontology);
         if (it.hasNext()) {
@@ -80,6 +82,6 @@ public class OWLUtils {
                 "RDF Graph {} has multiple OWL ontology definitions! Ignoring all but {}", g, subj);
             if (subj instanceof UriRef) return (UriRef) subj;
         }
-        return null;
+        return new UriRef(NS_STANBOL + System.currentTimeMillis());
     }
 }

Modified: incubator/stanbol/trunk/owl/src/test/java/org/apache/stanbol/owl/util/TestOWLUtils.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/owl/src/test/java/org/apache/stanbol/owl/util/TestOWLUtils.java?rev=1205827&r1=1205826&r2=1205827&view=diff
==============================================================================
--- incubator/stanbol/trunk/owl/src/test/java/org/apache/stanbol/owl/util/TestOWLUtils.java (original)
+++ incubator/stanbol/trunk/owl/src/test/java/org/apache/stanbol/owl/util/TestOWLUtils.java Thu Nov 24 13:49:54 2011
@@ -54,7 +54,8 @@ 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);
-        assertNull(OWLUtils.guessOntologyIdentifier(mg.getGraph()));
+//        No longer null!
+        assertNotNull(OWLUtils.guessOntologyIdentifier(mg.getGraph()));
     }
 
     @After