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/26 18:18:51 UTC
svn commit: r1206502 [2/2] - in /incubator/stanbol/trunk:
commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/format/
ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/api/
ontologymanager/ontonet/src/main/...
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=1206502&r1=1206501&r2=1206502&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 Sat Nov 26 17:18:41 2011
@@ -27,12 +27,14 @@ import java.io.InputStream;
import javax.servlet.ServletContext;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
@@ -102,10 +104,11 @@ public class SessionByIdResource extends
@Produces(value = {KRFormat.RDF_XML, KRFormat.OWL_XML, KRFormat.TURTLE, KRFormat.FUNCTIONAL_OWL,
KRFormat.MANCHESTER_OWL, KRFormat.RDF_JSON})
public Response asOntology(@PathParam("id") String sessionId,
+ @DefaultValue("false") @QueryParam("merge") boolean merge,
@Context UriInfo uriInfo,
@Context HttpHeaders headers) {
if (session == null) return Response.status(NOT_FOUND).build();
- return Response.ok(session.asOWLOntology(false)).build();
+ return Response.ok(session.asOWLOntology(merge)).build();
}
/**
@@ -171,10 +174,11 @@ public class SessionByIdResource extends
KRFormat.MANCHESTER_OWL, KRFormat.RDF_JSON})
public Response getManagedOntology(@PathParam("id") String sessionId,
@PathParam("ontologyId") String ontologyId,
+ @DefaultValue("false") @QueryParam("merge") boolean merge,
@Context UriInfo uriInfo,
@Context HttpHeaders headers) {
if (session == null) return Response.status(NOT_FOUND).build();
- OWLOntology o = session.getOntology(IRI.create(ontologyId));
+ OWLOntology o = session.getOntology(IRI.create(ontologyId), merge);
if (o == null) return Response.status(NOT_FOUND).build();
return Response.ok(o).build();
}
@@ -193,7 +197,7 @@ public class SessionByIdResource extends
*/
@POST
@Consumes(value = {KRFormat.RDF_XML, KRFormat.OWL_XML, KRFormat.TURTLE, KRFormat.FUNCTIONAL_OWL,
- KRFormat.MANCHESTER_OWL, KRFormat.RDF_JSON})
+ KRFormat.MANCHESTER_OWL, KRFormat.RDF_JSON, KRFormat.N3, KRFormat.N_TRIPLE})
@Produces(MediaType.TEXT_PLAIN)
public Response manageOntology(InputStream content) {
long before = System.currentTimeMillis();
Modified: incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/StoredGraphsResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/StoredGraphsResource.java?rev=1206502&r1=1206501&r2=1206502&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/StoredGraphsResource.java (original)
+++ incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/StoredGraphsResource.java Sat Nov 26 17:18:41 2011
@@ -66,6 +66,7 @@ import com.hp.hpl.jena.ontology.OntModel
import com.sun.jersey.api.view.ImplicitProduces;
import com.sun.jersey.multipart.FormDataParam;
+@Deprecated
@Path("/ontonet/graphs")
@ImplicitProduces(MediaType.TEXT_HTML + ";qs=2")
public class StoredGraphsResource extends BaseStanbolResource {
Copied: incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/StoredOntologyResource.java (from r1206244, incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntologyIndexResource.java)
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/StoredOntologyResource.java?p2=incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/StoredOntologyResource.java&p1=incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntologyIndexResource.java&r1=1206244&r2=1206502&rev=1206502&view=diff
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/OntologyIndexResource.java (original)
+++ incubator/stanbol/trunk/ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resources/StoredOntologyResource.java Sat Nov 26 17:18:41 2011
@@ -16,117 +16,107 @@
*/
package org.apache.stanbol.ontologymanager.web.resources;
-import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
import static javax.ws.rs.core.Response.Status.NOT_FOUND;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+
import javax.servlet.ServletContext;
+import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
-import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.core.UriInfo;
-import org.apache.clerezza.rdf.core.serializedform.Serializer;
import org.apache.stanbol.commons.web.base.ContextHelper;
+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.OfflineConfiguration;
-import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyIndex;
-import org.apache.stanbol.owl.OWLOntologyManagerFactory;
-import org.coode.owlapi.turtle.TurtleOntologyFormat;
-import org.semanticweb.owlapi.io.RDFXMLOntologyFormat;
-import org.semanticweb.owlapi.io.StringDocumentTarget;
+import org.apache.stanbol.ontologymanager.ontonet.api.ontology.OntologyProvider;
+import org.semanticweb.owlapi.model.AddImport;
import org.semanticweb.owlapi.model.IRI;
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.OWLImportsDeclaration;
import org.semanticweb.owlapi.model.OWLOntology;
-import org.semanticweb.owlapi.model.OWLOntologyManager;
-import org.semanticweb.owlapi.model.OWLOntologyStorageException;
+import org.semanticweb.owlapi.model.OWLOntologyChange;
+import org.semanticweb.owlapi.model.RemoveImport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@Path("/ontonet/ontology/get")
-public class OntologyIndexResource extends BaseStanbolResource {
+@Path("/ontonet/{ontologyId:.+}")
+public class StoredOntologyResource extends BaseStanbolResource {
@SuppressWarnings("unused")
private Logger log = LoggerFactory.getLogger(getClass());
/*
- * Placeholder for the ONManager to be fetched from the servlet context.
+ * Placeholder for the OntologyProvider to be fetched from the servlet context.
*/
- protected ONManager onm;
-
- protected Serializer serializer;
+ protected OntologyProvider<?> ontologyProvider;
- public OntologyIndexResource(@Context ServletContext servletContext) {
+ public StoredOntologyResource(@PathParam(value = "ontologyId") String ontologyId,
+ @Context ServletContext servletContext) {
this.servletContext = servletContext;
- this.onm = (ONManager) ContextHelper.getServiceFromContext(ONManager.class, servletContext);
- this.serializer = (Serializer) ContextHelper.getServiceFromContext(Serializer.class, servletContext);
+ this.ontologyProvider = (OntologyProvider<?>) ContextHelper.getServiceFromContext(
+ OntologyProvider.class, servletContext);
}
+ /**
+ * Gets the ontology with the given identifier in its version managed by the session.
+ *
+ * @param sessionId
+ * the session identifier.
+ * @param ontologyId
+ * the ontology identifier.
+ * @param uriInfo
+ * @param headers
+ * @return the requested managed ontology, or {@link Status#NOT_FOUND} if either the sessionn does not
+ * exist, or the if the ontology either does not exist or is not managed.
+ */
@GET
- @Produces("application/rdf+xml")
- public Response getOntology(@QueryParam("iri") String ontologyIri) {
-
- OWLOntologyManager tmpmgr;
- OfflineConfiguration offline = (OfflineConfiguration) ContextHelper.getServiceFromContext(
- OfflineConfiguration.class, servletContext);
- if (offline == null) throw new IllegalStateException("OfflineConfiguration missing in ServletContext");
- else tmpmgr = OWLOntologyManagerFactory.createOWLOntologyManager(offline.getOntologySourceLocations()
- .toArray(new IRI[0]));
-
- IRI iri = null;
- try {
- iri = IRI.create(ontologyIri);
- } catch (Exception ex) {
- throw new WebApplicationException(NOT_FOUND);
- }
- OntologyIndex index = onm.getOntologyIndex();
- if (!index.isOntologyLoaded(iri))
- // No such ontology registered, so return 404.
- return Response.status(NOT_FOUND).build();
-
- OWLOntology ont = index.getOntology(iri);
-
- StringDocumentTarget tgt = new StringDocumentTarget();
+ @Produces(value = {KRFormat.RDF_XML, KRFormat.OWL_XML, KRFormat.TURTLE, KRFormat.FUNCTIONAL_OWL,
+ KRFormat.MANCHESTER_OWL, KRFormat.RDF_JSON})
+ public Response getManagedOntology(@PathParam("ontologyId") String ontologyId,
+ @DefaultValue("false") @QueryParam("merge") boolean merged,
+ @Context UriInfo uriInfo,
+ @Context HttpHeaders headers) {
+ if (ontologyId == null) return Response.status(Status.BAD_REQUEST).build();
try {
- tmpmgr.saveOntology(ont, new RDFXMLOntologyFormat(), tgt);
- } catch (OWLOntologyStorageException e) {
- throw new WebApplicationException(INTERNAL_SERVER_ERROR);
- }
- return Response.ok(tgt.toString()).build();
- }
-
- @GET
- @Produces("text/turtle")
- public Response getOntologyT(@QueryParam("iri") String ontologyIri) {
+ IRI iri = IRI.create(ontologyId);
+ OWLOntology o = (OWLOntology) ontologyProvider.getStoredOntology(iri, OWLOntology.class, merged);
+ if (o == null) return Response.status(NOT_FOUND).build();
+
+ // Rewrite imports
+ String uri = uriInfo.getRequestUri().toString();
+ URI base = URI.create(uri.substring(0, uri.lastIndexOf(ontologyId) - 1));
+
+ // Rewrite import statements
+ List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>();
+ OWLDataFactory df = o.getOWLOntologyManager().getOWLDataFactory();
+ /*
+ * TODO manage import rewrites better once the container ID is fully configurable (i.e. instead of
+ * going upOne() add "session" or "ontology" if needed).
+ */
+ for (OWLImportsDeclaration oldImp : o.getImportsDeclarations()) {
+ changes.add(new RemoveImport(o, oldImp));
+ String s = oldImp.getIRI().toString();
+ s = s.substring(s.indexOf("::") + 2, s.length());
+ IRI target = IRI.create(base + "/" + s);
+ changes.add(new AddImport(o, df.getOWLImportsDeclaration(target)));
+ }
+ o.getOWLOntologyManager().applyChanges(changes);
- OWLOntologyManager tmpmgr;
- OfflineConfiguration offline = (OfflineConfiguration) ContextHelper.getServiceFromContext(
- OfflineConfiguration.class, servletContext);
- if (offline == null) throw new IllegalStateException("OfflineConfiguration missing in ServletContext");
- else tmpmgr = OWLOntologyManagerFactory.createOWLOntologyManager(offline.getOntologySourceLocations()
- .toArray(new IRI[0]));
-
- IRI iri = null;
- try {
- iri = IRI.create(ontologyIri);
+ return Response.ok(o).build();
} catch (Exception ex) {
- throw new WebApplicationException(NOT_FOUND);
+ return Response.status(Status.BAD_REQUEST).build();
}
- OntologyIndex index = onm.getOntologyIndex();
- if (!index.isOntologyLoaded(iri))
- // No such ontology registered, so return 404.
- return Response.status(NOT_FOUND).build();
- OWLOntology ont = index.getOntology(iri);
- StringDocumentTarget tgt = new StringDocumentTarget();
- try {
- tmpmgr.saveOntology(ont, new TurtleOntologyFormat(), tgt);
- } catch (OWLOntologyStorageException e) {
- throw new WebApplicationException(INTERNAL_SERVER_ERROR);
- }
- return Response.ok(tgt.toString()).build();
}
}
Modified: incubator/stanbol/trunk/owl/src/main/java/org/apache/stanbol/owl/util/URIUtils.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/owl/src/main/java/org/apache/stanbol/owl/util/URIUtils.java?rev=1206502&r1=1206501&r2=1206502&view=diff
==============================================================================
--- incubator/stanbol/trunk/owl/src/main/java/org/apache/stanbol/owl/util/URIUtils.java (original)
+++ incubator/stanbol/trunk/owl/src/main/java/org/apache/stanbol/owl/util/URIUtils.java Sat Nov 26 17:18:41 2011
@@ -32,16 +32,30 @@ public class URIUtils {
public static IRI upOne(IRI iri) {
return upOne(iri.toURI());
}
-
+
public static IRI createIRI(UriRef uri) {
return IRI.create(uri.getUnicodeString());
}
-
+
public static UriRef createUriRef(IRI iri) {
return new UriRef(iri.toString());
}
/**
+ * Strips terminating hashes.
+ *
+ * @param iri
+ * @return
+ */
+ public static IRI sanitizeID(IRI iri) {
+ if (iri == null) throw new IllegalArgumentException("Cannot sanitize null IRI.");
+ String s = iri.toString();
+ while (s.endsWith("#"))
+ s = s.substring(0, s.length() - 1);
+ return IRI.create(s);
+ }
+
+ /**
* Removes either the fragment, or query, or last path component from a URI, whatever it finds first.
*
* @param uri
Modified: incubator/stanbol/trunk/owl/src/main/java/org/apache/stanbol/owl/web/KRFormat.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/owl/src/main/java/org/apache/stanbol/owl/web/KRFormat.java?rev=1206502&r1=1206501&r2=1206502&view=diff
==============================================================================
--- incubator/stanbol/trunk/owl/src/main/java/org/apache/stanbol/owl/web/KRFormat.java (original)
+++ incubator/stanbol/trunk/owl/src/main/java/org/apache/stanbol/owl/web/KRFormat.java Sat Nov 26 17:18:41 2011
@@ -1,19 +1,19 @@
/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.stanbol.owl.web;
import javax.ws.rs.core.MediaType;
@@ -27,28 +27,36 @@ import javax.ws.rs.core.MediaType;
*/
public class KRFormat extends MediaType {
- public static final String RDF_XML = "application/rdf+xml";
+ public static final String FUNCTIONAL_OWL = "application/functional+owl";
- public static final MediaType RDF_XML_TYPE = new MediaType("application", "rdf+xml");
+ public static final MediaType FUNCTIONAL_OWL_TYPE = new MediaType("application", "functional+xml");
+
+ public static final String MANCHESTER_OWL = "application/manchester+owl";
+
+ public static final MediaType MANCHESTER_OWL_TYPE = new MediaType("application", "manchester+xml");
public static final String OWL_XML = "application/owl+xml";
public static final MediaType OWL_XML_TYPE = new MediaType("application", "owl+xml");
- public static final String MANCHESTER_OWL = "application/manchester+owl";
+ public static final String RDF_JSON = "application/rdf+json";
- public static final MediaType MANCHESTER_OWL_TYPE = new MediaType("application", "manchester+xml");
+ public static final MediaType RDF_JSON_TYPE = new MediaType("application", "rdf+json");
- public static final String FUNCTIONAL_OWL = "application/functional+owl";
+ public static final String RDF_N3 = "text/rdf+n3";
- public static final MediaType FUNCTIONAL_OWL_TYPE = new MediaType("application", "functional+xml");
+ public static final MediaType RDF_N3_TYPE = new MediaType("text", "rdf+n3");
- public static final String TURTLE = "application/turtle";
+ public static final String RDF_NT = "text/rdf+nt";
- public static final MediaType TURTLE_TYPE = new MediaType("application", "turtle");
+ public static final MediaType RDF_NT_TYPE = new MediaType("text", "rdf+nt");
- public static final String RDF_JSON = "application/rdf+json";
+ public static final String RDF_XML = "application/rdf+xml";
- public static final MediaType RDF_JSON_TYPE = new MediaType("application", "rdf+json");
+ public static final MediaType RDF_XML_TYPE = new MediaType("application", "rdf+xml");
+
+ public static final String TURTLE = "application/turtle";
+
+ public static final MediaType TURTLE_TYPE = new MediaType("application", "turtle");
}