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