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