You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by su...@apache.org on 2011/07/19 21:37:40 UTC

svn commit: r1148497 [2/6] - in /incubator/stanbol/trunk/ontologymanager/store: launchers/fise/src/main/bundles/ web/ web/src/ web/src/main/ web/src/main/java/ web/src/main/java/org/ web/src/main/java/org/apache/ web/src/main/java/org/apache/stanbol/ w...

Added: incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyClasses.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyClasses.java?rev=1148497&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyClasses.java (added)
+++ incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyClasses.java Tue Jul 19 19:37:37 2011
@@ -0,0 +1,145 @@
+/*
+ * 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.store.rest.resources;
+
+import java.net.URI;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.ontologymanager.store.api.LockManager;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
+import org.apache.stanbol.ontologymanager.store.api.ResourceManager;
+import org.apache.stanbol.ontologymanager.store.model.ClassMetaInformation;
+import org.apache.stanbol.ontologymanager.store.model.ClassesForOntology;
+import org.apache.stanbol.ontologymanager.store.rest.LockManagerImp;
+import org.apache.stanbol.ontologymanager.store.rest.ResourceManagerImp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.sun.jersey.api.view.Viewable;
+
+@Path("/ontology/{ontologyPath:.+}/classes/")
+public class OntologyClasses extends BaseStanbolResource{
+    private static final Logger logger = LoggerFactory.getLogger(OntologyClasses.class);
+
+    private static final String VIEWABLE_PATH = "/org/apache/stanbol/ontologymanager/store/rest/resources/ontologyClasses";
+
+    private PersistenceStore persistenceStore;
+
+    // HTML View Variable
+    private ClassesForOntology metadata;
+
+    public OntologyClasses(@Context ServletContext context) {
+    	this.persistenceStore = ContextHelper.getServiceFromContext(PersistenceStore.class, context);
+    }
+
+    @GET
+    @Produces(MediaType.APPLICATION_XML)
+    public Response retrieveOntologyClasses(@PathParam("ontologyPath") String ontologyPath) {
+        Response response = null;
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainReadLockFor(ontologyPath);
+        try {
+
+            ResourceManager resourceManager = ResourceManagerImp.getInstance();
+            String ontologyURI = resourceManager.getOntologyURIForPath(ontologyPath);
+            if (ontologyURI == null) {
+                throw new WebApplicationException(Response.Status.NOT_FOUND);
+            }
+            try {
+                ClassesForOntology classesForOntology = persistenceStore
+                        .retrieveClassesOfOntology(ontologyURI);
+                response = Response.ok(classesForOntology, MediaType.APPLICATION_XML_TYPE).build();
+            } catch (Exception e) {
+                logger.error("Error ", e);
+                throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
+            }
+        } finally {
+            lockManager.releaseReadLockFor(ontologyPath);
+        }
+        return response;
+    }
+
+    @POST
+    @Produces(MediaType.APPLICATION_XML)
+    @Consumes("application/x-www-form-urlencoded")
+    public Response generateClass(@PathParam("ontologyPath") String ontologyPath,
+                                  @FormParam("classURI") String classURI) {
+        Response response = null;
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+            ResourceManager resourceManager = ResourceManagerImp.getInstance();
+            String ontologyURI = resourceManager.getOntologyURIForPath(ontologyPath);
+            if (ontologyURI == null) {
+                throw new WebApplicationException(Response.Status.NOT_FOUND);
+            }
+            try {
+                ClassMetaInformation classMetaInformation = persistenceStore.generateClassForOntology(
+                    ontologyURI, classURI);
+                response = Response.ok(classMetaInformation, MediaType.APPLICATION_XML_TYPE).build();
+            } catch (Exception e) {
+                logger.error("Error ", e);
+                throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return response;
+    }
+
+    // HTML View Methods
+    @GET
+    @Produces(MediaType.TEXT_HTML+";qs=2")
+    public Viewable getViewable(@PathParam("ontologyPath") String ontologyPath) {
+        this.metadata = ((ClassesForOntology) this.retrieveOntologyClasses(ontologyPath).getEntity());
+        return new Viewable(VIEWABLE_PATH, this);
+    }
+
+    @POST
+    @Produces(MediaType.TEXT_HTML+";qs=2")
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    public Response createAndRedirect(@PathParam("ontologyPath") String ontologyPath,
+                                      @FormParam("classURI") String classURI) {
+        Response response = this.generateClass(ontologyPath, classURI);
+        ClassMetaInformation cmi = (ClassMetaInformation) response.getEntity();
+        try {
+            return Response.seeOther(URI.create(cmi.getHref())).build();
+        } catch (Exception e) {
+            throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+        }
+    }
+
+    public ClassesForOntology getMetadata() {
+        return metadata;
+    }
+
+}

Added: incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyDatatypeProperties.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyDatatypeProperties.java?rev=1148497&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyDatatypeProperties.java (added)
+++ incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyDatatypeProperties.java Tue Jul 19 19:37:37 2011
@@ -0,0 +1,148 @@
+/*
+ * 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.store.rest.resources;
+
+import java.net.URI;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.ontologymanager.store.api.LockManager;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
+import org.apache.stanbol.ontologymanager.store.api.ResourceManager;
+import org.apache.stanbol.ontologymanager.store.model.DatatypePropertiesForOntology;
+import org.apache.stanbol.ontologymanager.store.model.PropertyMetaInformation;
+import org.apache.stanbol.ontologymanager.store.rest.LockManagerImp;
+import org.apache.stanbol.ontologymanager.store.rest.ResourceManagerImp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.sun.jersey.api.view.Viewable;
+
+
+@Path("/ontology/{ontologyPath:.+}/datatypeProperties")
+public class OntologyDatatypeProperties extends BaseStanbolResource {
+    private static final Logger logger = LoggerFactory.getLogger(OntologyDatatypeProperties.class);
+    private static final String VIEWABLE_PATH = "/org/apache/stanbol/ontologymanager/store/rest/resources/ontologyDatatypeProperties";
+
+    private PersistenceStore persistenceStore;
+
+    // HTML View Variables
+    private DatatypePropertiesForOntology metadata;
+
+    public OntologyDatatypeProperties(@Context ServletContext context) {
+    	this.persistenceStore = ContextHelper.getServiceFromContext(PersistenceStore.class, context);
+    }
+
+    @GET
+    @Produces(MediaType.APPLICATION_XML)
+    public Response retrieveOntologyDatatypeProperties(@PathParam("ontologyPath") String ontologyPath) {
+        Response response = null;
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainReadLockFor(ontologyPath);
+        try {
+            ResourceManager resourceManager = ResourceManagerImp.getInstance();
+            String ontologyURI = resourceManager.getOntologyURIForPath(ontologyPath);
+            if (ontologyURI == null) {
+                throw new WebApplicationException(Response.Status.NOT_FOUND);
+            }
+            try {
+                DatatypePropertiesForOntology datatypePropertiesForOntology = persistenceStore
+                        .retrieveDatatypePropertiesOfOntology(ontologyURI);
+                response = Response.ok(datatypePropertiesForOntology, MediaType.APPLICATION_XML_TYPE).build();
+            } catch (Exception e) {
+                logger.error("Error ", e);
+                throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
+            }
+        } finally {
+            lockManager.releaseReadLockFor(ontologyPath);
+        }
+        return response;
+    }
+
+    @POST
+    @Produces(MediaType.APPLICATION_XML)
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    public Response generateDatatypeProperty(@PathParam("ontologyPath") String ontologyPath,
+                                             @FormParam("datatypePropertyURI") String datatypePropertyURI) {
+        Response response = null;
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+
+            ResourceManager resourceManager = ResourceManagerImp.getInstance();
+            String ontologyURI = resourceManager.getOntologyURIForPath(ontologyPath);
+            if (ontologyURI == null) {
+                throw new WebApplicationException(Response.Status.NOT_FOUND);
+            }
+            try {
+                PropertyMetaInformation datatypePropertyMetaInformation = persistenceStore
+                        .generateDatatypePropertyForOntology(ontologyURI, datatypePropertyURI);
+                response = Response.ok(datatypePropertyMetaInformation, MediaType.APPLICATION_XML_TYPE)
+                        .build();
+
+            } catch (Exception e) {
+                logger.error("Error ", e);
+                throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return response;
+    }
+
+    // HTML View Methods
+    public DatatypePropertiesForOntology getMetadata() {
+        return metadata;
+    }
+
+    @GET
+    @Produces(MediaType.TEXT_HTML+";qs=2")
+    public Viewable getViewable(@PathParam("ontologyPath") String ontologyPath) {
+        Response response = retrieveOntologyDatatypeProperties(ontologyPath);
+        metadata = (DatatypePropertiesForOntology) response.getEntity();
+        return new Viewable(VIEWABLE_PATH, this);
+    }
+
+    @POST
+    @Produces(MediaType.TEXT_HTML)
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    public Response createAndRedirect(@PathParam("ontologyPath") String ontologyPath,
+                                      @FormParam("datatypePropertyURI") String datatypePropertyURI) {
+        Response response = this.generateDatatypeProperty(ontologyPath, datatypePropertyURI);
+        PropertyMetaInformation pmi = (PropertyMetaInformation) response.getEntity();
+        try {
+            return Response.seeOther(URI.create(pmi.getHref())).build();
+        } catch (Exception e) {
+            throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+        }
+
+    }
+}

Added: incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyImports.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyImports.java?rev=1148497&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyImports.java (added)
+++ incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyImports.java Tue Jul 19 19:37:37 2011
@@ -0,0 +1,154 @@
+/*
+ * 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.store.rest.resources;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+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.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.ontologymanager.store.api.LockManager;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
+import org.apache.stanbol.ontologymanager.store.api.ResourceManager;
+import org.apache.stanbol.ontologymanager.store.model.ImportsForOntology;
+import org.apache.stanbol.ontologymanager.store.rest.LockManagerImp;
+import org.apache.stanbol.ontologymanager.store.rest.ResourceManagerImp;
+
+import com.sun.jersey.api.view.Viewable;
+
+@Path("/ontology/{ontologyPath:.+}/imports")
+public class OntologyImports extends BaseStanbolResource {
+
+    private static final String VIEWABLE_PATH = "/org/apache/stanbol/ontologymanager/store/rest/resources/ontologyImports";
+
+    private PersistenceStore store;
+    // HTML View Variable
+    private ImportsForOntology metadata;
+
+    public OntologyImports(@Context ServletContext context) {
+        this.store = ContextHelper.getServiceFromContext(PersistenceStore.class, context);
+    }
+
+    @GET
+    @Produces(MediaType.APPLICATION_XML)
+    public Response getImports(@PathParam("ontologyPath") String ontologyPath) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainReadLockFor(ontologyPath);
+        try {
+            ResourceManager resourceManager = ResourceManagerImp.getInstance();
+            String ontologyURI = resourceManager.getOntologyURIForPath(ontologyPath);
+            if (ontologyURI == null) {
+                throw new WebApplicationException(Response.Status.NOT_FOUND);
+            }
+            try {
+                ImportsForOntology imports = store.retrieveOntologyImports(ontologyPath);
+                return Response.ok(imports).build();
+            } catch (Exception e) {
+                throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+            }
+        } finally {
+            lockManager.releaseReadLockFor(ontologyPath);
+        }
+    }
+
+    @POST
+    @Produces(MediaType.APPLICATION_XML)
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    public Response addImport(@PathParam("ontologyPath") String ontologyPath,
+                              @FormParam("importURI") String importURI) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+            ResourceManager resourceManager = ResourceManagerImp.getInstance();
+            String ontologyURI = resourceManager.getOntologyURIForPath(ontologyPath);
+            if (ontologyURI == null) {
+                throw new WebApplicationException(Response.Status.NOT_FOUND);
+            }
+            try {
+                store.addOntologyImport(ontologyURI, importURI);
+                return Response.ok().build();
+            } catch (Exception e) {
+                throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+    }
+
+    @DELETE
+    public Response removeImport(@PathParam("ontologyPath") String ontologyPath,
+                                 @QueryParam("importURI") String importURI) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+            ResourceManager resourceManager = ResourceManagerImp.getInstance();
+            String ontologyURI = resourceManager.getOntologyURIForPath(ontologyPath);
+            if (ontologyURI == null) {
+                throw new WebApplicationException(Response.Status.NOT_FOUND);
+            }
+            try {
+                store.removeOntologyImport(ontologyURI, importURI);
+                return Response.ok().build();
+            } catch (Exception e) {
+                throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+    }
+
+    // HTMLViewMethod
+    @GET
+    @Produces(MediaType.TEXT_HTML + ";qs=2")
+    public Viewable getHTMLImports(@PathParam("ontologyPath") String ontologyPath) {
+        Response res = getImports(ontologyPath);
+        this.metadata = (ImportsForOntology) res.getEntity();
+        return new Viewable(VIEWABLE_PATH, this);
+    }
+
+    public ImportsForOntology getMetadata() {
+        return metadata;
+    }
+
+    @POST
+    @Produces(MediaType.TEXT_HTML+";qs=2")
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    public Response addImportHTML(@PathParam("ontologyPath") String ontologyPath,
+                                  @FormParam("importURI") String importURI) throws URISyntaxException {
+        addImport(ontologyPath, importURI);
+        this.metadata = (ImportsForOntology) getImports(ontologyPath).getEntity();
+        return Response.seeOther(new URI(metadata.getOntologyMetaInformation().getHref() + "/imports"))
+                .build();
+    }
+
+}

Added: incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyIndividuals.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyIndividuals.java?rev=1148497&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyIndividuals.java (added)
+++ incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyIndividuals.java Tue Jul 19 19:37:37 2011
@@ -0,0 +1,147 @@
+/*
+ * 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.store.rest.resources;
+
+import java.net.URI;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.ontologymanager.store.api.LockManager;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
+import org.apache.stanbol.ontologymanager.store.api.ResourceManager;
+import org.apache.stanbol.ontologymanager.store.model.IndividualMetaInformation;
+import org.apache.stanbol.ontologymanager.store.model.IndividualsForOntology;
+import org.apache.stanbol.ontologymanager.store.rest.LockManagerImp;
+import org.apache.stanbol.ontologymanager.store.rest.ResourceManagerImp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.sun.jersey.api.view.Viewable;
+
+@Path("/ontology/{ontologyPath:.+}/individuals")
+public class OntologyIndividuals extends BaseStanbolResource{
+    private static final Logger logger = LoggerFactory.getLogger(OntologyIndividuals.class);
+    public static final String VIEWABLE_PATH = "/org/apache/stanbol/ontologymanager/store/rest/resources/ontologyIndividuals";
+
+    private PersistenceStore persistenceStore;
+
+    // HTML Variable
+    private IndividualsForOntology metadata;
+
+    public OntologyIndividuals(@Context ServletContext context) {
+        this.persistenceStore = ContextHelper.getServiceFromContext(PersistenceStore.class, context);
+    }
+
+    @GET
+    @Produces(MediaType.APPLICATION_XML)
+    public Response retrieveOntologyIndividuals(@PathParam("ontologyPath") String ontologyPath) {
+        Response response = null;
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainReadLockFor(ontologyPath);
+        try {
+
+            ResourceManager resourceManager = ResourceManagerImp.getInstance();
+            String ontologyURI = resourceManager.getOntologyURIForPath(ontologyPath);
+            if (ontologyURI == null) {
+                throw new WebApplicationException(Response.Status.NOT_FOUND);
+            }
+            try {
+                IndividualsForOntology individualsForOntology = persistenceStore
+                        .retrieveIndividualsOfOntology(ontologyURI);
+                response = Response.ok(individualsForOntology, MediaType.APPLICATION_XML_TYPE).build();
+            } catch (Exception e) {
+                logger.error("Error ", e);
+                throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
+            }
+        } finally {
+            lockManager.releaseReadLockFor(ontologyPath);
+        }
+        return response;
+    }
+
+    @POST
+    @Produces(MediaType.APPLICATION_XML)
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    public Response generateIndividual(@PathParam("ontologyPath") String ontologyPath,
+                                       @FormParam("classURI") String classURI,
+                                       @FormParam("individualURI") String individualURI) {
+        Response response = null;
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+
+            ResourceManager resourceManager = ResourceManagerImp.getInstance();
+            String ontologyURI = resourceManager.getOntologyURIForPath(ontologyPath);
+            if (ontologyURI == null) {
+                throw new WebApplicationException(Response.Status.NOT_FOUND);
+            }
+            try {
+                IndividualMetaInformation individualMetaInformation = persistenceStore
+                        .generateIndividualForOntology(ontologyURI, classURI, individualURI);
+                response = Response.ok(individualMetaInformation, MediaType.APPLICATION_XML_TYPE).build();
+            } catch (Exception e) {
+                logger.error("Error ", e);
+                throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return response;
+    }
+
+    // HTML View Methods
+    public IndividualsForOntology getMetadata() {
+        return metadata;
+    }
+
+    @GET
+    @Produces(MediaType.TEXT_HTML+";qs=2")
+    public Viewable getViewable(@PathParam("ontologyPath") String ontologyPath) {
+        Response response = retrieveOntologyIndividuals(ontologyPath);
+        metadata = (IndividualsForOntology) response.getEntity();
+        return new Viewable(VIEWABLE_PATH, this);
+    }
+
+    @POST
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    @Produces(MediaType.TEXT_HTML+";qs=2")
+    public Response createAndRedirect(@PathParam("ontologyPath") String ontologyPath,
+                                      @FormParam("classURI") String classURI,
+                                      @FormParam("individualURI") String individualURI) {
+        Response response = generateIndividual(ontologyPath, classURI, individualURI);
+        IndividualMetaInformation imi = (IndividualMetaInformation) response.getEntity();
+        try {
+            return Response.seeOther(URI.create(imi.getHref())).build();
+        } catch (Exception e) {
+            throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+        }
+    }
+}

Added: incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyObjectProperties.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyObjectProperties.java?rev=1148497&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyObjectProperties.java (added)
+++ incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyObjectProperties.java Tue Jul 19 19:37:37 2011
@@ -0,0 +1,144 @@
+/*
+ * 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.store.rest.resources;
+
+import java.net.URI;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.ontologymanager.store.api.LockManager;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
+import org.apache.stanbol.ontologymanager.store.api.ResourceManager;
+import org.apache.stanbol.ontologymanager.store.model.ObjectPropertiesForOntology;
+import org.apache.stanbol.ontologymanager.store.model.PropertyMetaInformation;
+import org.apache.stanbol.ontologymanager.store.rest.LockManagerImp;
+import org.apache.stanbol.ontologymanager.store.rest.ResourceManagerImp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.sun.jersey.api.view.Viewable;
+
+@Path("/ontology/{ontologyPath:.+}/objectProperties")
+public class OntologyObjectProperties extends BaseStanbolResource{
+    private static final Logger logger = LoggerFactory.getLogger(OntologyObjectProperties.class);
+    private static final String VIEWABLE_PATH = "/org/apache/stanbol/ontologymanager/store/rest/resources/ontologyObjectProperties";
+
+    private PersistenceStore persistenceStore;
+
+    // HTML View Variable
+    private ObjectPropertiesForOntology metadata;
+
+    public OntologyObjectProperties(@Context ServletContext context) {
+        this.persistenceStore = ContextHelper.getServiceFromContext(PersistenceStore.class, context);
+    }
+
+    @GET
+    @Produces(MediaType.APPLICATION_XML)
+    public Response retrieveOntologyObjectProperties(@PathParam("ontologyPath") String ontologyPath) {
+        Response response = null;
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainReadLockFor(ontologyPath);
+        try {
+            ResourceManager resourceManager = ResourceManagerImp.getInstance();
+            String ontologyURI = resourceManager.getOntologyURIForPath(ontologyPath);
+            if (ontologyURI == null) {
+                throw new WebApplicationException(Response.Status.NOT_FOUND);
+            }
+            try {
+                ObjectPropertiesForOntology objectPropertiesForOntology = persistenceStore
+                        .retrieveObjectPropertiesOfOntology(ontologyURI);
+                response = Response.ok(objectPropertiesForOntology, MediaType.APPLICATION_XML_TYPE).build();
+            } catch (Exception e) {
+                logger.error("Error ", e);
+                throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
+            }
+        } finally {
+            lockManager.releaseReadLockFor(ontologyPath);
+        }
+        return response;
+    }
+
+    @POST
+    @Produces(MediaType.APPLICATION_XML)
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    public Response generateDatatypeProperty(@PathParam("ontologyPath") String ontologyPath,
+                                             @FormParam("objectPropertyURI") String objectPropertyURI) {
+        Response response = null;
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+            ResourceManager resourceManager = ResourceManagerImp.getInstance();
+            String ontologyURI = resourceManager.getOntologyURIForPath(ontologyPath);
+            if (ontologyURI == null) {
+                throw new WebApplicationException(Response.Status.NOT_FOUND);
+            }
+            try {
+                PropertyMetaInformation objectPropertyMetaInformation = persistenceStore
+                        .generateObjectPropertyForOntology(ontologyURI, objectPropertyURI);
+                response = Response.ok(objectPropertyMetaInformation, MediaType.APPLICATION_XML_TYPE).build();
+            } catch (Exception e) {
+                logger.error("Error ", e);
+                throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return response;
+    }
+
+    // HTML View Methods
+
+    public ObjectPropertiesForOntology getMetadata() {
+        return metadata;
+    }
+
+    @GET
+    @Produces(MediaType.TEXT_HTML+";qs=2")
+    public Viewable getViewable(@PathParam("ontologyPath") String ontologyPath) {
+        Response response = retrieveOntologyObjectProperties(ontologyPath);
+        metadata = (ObjectPropertiesForOntology) response.getEntity();
+        return new Viewable(VIEWABLE_PATH, this);
+    }
+
+    @POST
+    @Produces(MediaType.TEXT_HTML+";qs=2")
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    public Response createAndRedirect(@PathParam("ontologyPath") String ontologyPath,
+                                      @FormParam("objectPropertyURI") String objectPropertyURI) {
+        Response response = this.generateDatatypeProperty(ontologyPath, objectPropertyURI);
+        PropertyMetaInformation pmi = (PropertyMetaInformation) response.getEntity();
+        try {
+            return Response.seeOther(URI.create(pmi.getHref())).build();
+        } catch (Exception e) {
+            throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+        }
+    }
+}

Added: incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClass.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClass.java?rev=1148497&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClass.java (added)
+++ incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClass.java Tue Jul 19 19:37:37 2011
@@ -0,0 +1,119 @@
+/*
+ * 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.store.rest.resources;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.DELETE;
+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.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.ontologymanager.store.api.LockManager;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
+import org.apache.stanbol.ontologymanager.store.model.ClassContext;
+import org.apache.stanbol.ontologymanager.store.rest.LockManagerImp;
+import org.apache.stanbol.ontologymanager.store.rest.ResourceManagerImp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.sun.jersey.api.view.Viewable;
+
+@Path("/ontology/{ontologyPath:.+}/classes/{classPath:.+}/")
+public class ParticularClass extends BaseStanbolResource {
+    private static final Logger logger = LoggerFactory.getLogger(ParticularClass.class);
+
+    private static final String VIEWABLE_PATH = "/org/apache/stanbol/ontologymanager/store/rest/resources/particularClass";
+
+    private PersistenceStore persistenceStore;
+
+    // View Variables
+    private ClassContext metadata;
+
+    public ParticularClass(@Context ServletContext context) {
+        this.persistenceStore = ContextHelper.getServiceFromContext(PersistenceStore.class, context);
+    }
+
+    @GET
+    @Produces(MediaType.APPLICATION_XML)
+    public Response retrieveClassContext(@PathParam("ontologyPath") String ontologyPath,
+                                         @PathParam("classPath") String classPath,
+                                         @DefaultValue("false") @QueryParam("withInferredAxioms") boolean withInferredAxioms) {
+        Response response = null;
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainReadLockFor(ontologyPath);
+        try {
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String classURI = resourceManager.getResourceURIForPath(ontologyPath, classPath);
+            if (classURI == null) {
+                throw new WebApplicationException(Response.Status.NOT_FOUND);
+            }
+            try {
+                ClassContext classContext = persistenceStore.generateClassContext(classURI,
+                    withInferredAxioms);
+                response = Response.ok(classContext, MediaType.APPLICATION_XML).build();
+            } catch (Exception e) {
+                logger.error("Error ", e);
+                throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
+            }
+        } finally {
+            lockManager.releaseReadLockFor(ontologyPath);
+        }
+        return response;
+    }
+
+    // The Java method will process HTTP DELETE requests
+    @DELETE
+    public void delete(@PathParam("ontologyPath") String ontologyPath,
+                       @PathParam("classPath") String classPath) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String resourceURI = resourceManager.getResourceURIForPath(ontologyPath, classPath);
+            persistenceStore.deleteResource(resourceURI);
+        } catch (Exception e) {
+            logger.error("Error ", e);
+            throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+    }
+
+    // HTML View Methods
+    public ClassContext getMetadata() {
+        return metadata;
+    }
+
+    @GET
+    @Produces(MediaType.TEXT_HTML + ";qs=2")
+    public Viewable getViewable(@PathParam("ontologyPath") String ontologyPath,
+                                @PathParam("classPath") String classPath,
+                                @DefaultValue("false") @QueryParam("withInferredAxioms") boolean withInferredAxioms) {
+        metadata = (ClassContext) retrieveClassContext(ontologyPath, classPath, withInferredAxioms)
+                .getEntity();
+        return new Viewable(VIEWABLE_PATH, this);
+    }
+}

Added: incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClassDisjointClasses.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClassDisjointClasses.java?rev=1148497&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClassDisjointClasses.java (added)
+++ incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClassDisjointClasses.java Tue Jul 19 19:37:37 2011
@@ -0,0 +1,103 @@
+/*
+ * 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.store.rest.resources;
+
+import java.util.List;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.ontologymanager.store.api.LockManager;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
+import org.apache.stanbol.ontologymanager.store.rest.LockManagerImp;
+import org.apache.stanbol.ontologymanager.store.rest.ResourceManagerImp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Path("/ontology/{ontologyPath:.+}/classes/{classPath:.+}/disjointClasses/")
+public class ParticularClassDisjointClasses extends BaseStanbolResource{
+
+    private static final Logger logger = LoggerFactory.getLogger(ParticularClassDisjointClasses.class);
+
+    private PersistenceStore persistenceStore;
+
+    public ParticularClassDisjointClasses(@Context ServletContext context) {
+        this.persistenceStore = ContextHelper.getServiceFromContext(PersistenceStore.class, context);
+    }
+
+    @POST
+    public Response addDisjointClasses(@PathParam("ontologyPath") String ontologyPath,
+                                       @PathParam("classPath") String classPath,
+                                       @FormParam("disjointClassURIs") List<String> disjointClassURIs) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String classURI = resourceManager.getResourceURIForPath(ontologyPath, classPath);
+            if (classURI == null) {
+                throw new WebApplicationException(Status.NOT_FOUND);
+            } else {
+                for (String disjointClassURI : disjointClassURIs) {
+                    try {
+                        persistenceStore.addDisjointClass(classURI, disjointClassURI);
+                    } catch (Exception e) {
+                        throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+                    }
+                }
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return Response.ok().build();
+    }
+
+    @DELETE
+    @Path("/{disjointClassPath:.+}")
+    public Response removeDisjointClass(@PathParam("ontologyPath") String ontologyPath,
+                                        @PathParam("classPath") String classPath,
+                                        @PathParam("disjointClassPath") String disjointClassPath) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String classURI = resourceManager.getResourceURIForPath(ontologyPath, classPath);
+            String disjointClassURI = resourceManager.convertEntityRelativePathToURI(disjointClassPath);
+            if (classURI == null) {
+                throw new WebApplicationException(Status.NOT_FOUND);
+            } else {
+                try {
+                    persistenceStore.deleteDisjointClass(classURI, disjointClassURI);
+                } catch (Exception e) {
+                    throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+                }
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return Response.ok().build();
+    }
+}

Added: incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClassEquivalentClasses.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClassEquivalentClasses.java?rev=1148497&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClassEquivalentClasses.java (added)
+++ incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClassEquivalentClasses.java Tue Jul 19 19:37:37 2011
@@ -0,0 +1,103 @@
+/*
+ * 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.store.rest.resources;
+
+import java.util.List;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.ontologymanager.store.api.LockManager;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
+import org.apache.stanbol.ontologymanager.store.rest.LockManagerImp;
+import org.apache.stanbol.ontologymanager.store.rest.ResourceManagerImp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Path("/ontology/{ontologyPath:.+}/classes/{classPath:.+}/equivalentClasses/")
+public class ParticularClassEquivalentClasses extends BaseStanbolResource{
+
+    private static final Logger logger = LoggerFactory.getLogger(ParticularClassEquivalentClasses.class);
+
+    private PersistenceStore persistenceStore;
+
+    public ParticularClassEquivalentClasses(@Context ServletContext context) {
+        this.persistenceStore = ContextHelper.getServiceFromContext(PersistenceStore.class, context);
+    }
+
+    @POST
+    public Response addEquivalentClasses(@PathParam("ontologyPath") String ontologyPath,
+                                         @PathParam("classPath") String classPath,
+                                         @FormParam("equivalentClassURIs") List<String> equivalentClassURIs) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String classURI = resourceManager.getResourceURIForPath(ontologyPath, classPath);
+            if (classURI == null) {
+                throw new WebApplicationException(Status.NOT_FOUND);
+            } else {
+                for (String equivalentClassURI : equivalentClassURIs) {
+                    try {
+                        persistenceStore.addEquivalentClass(classURI, equivalentClassURI);
+                    } catch (Exception e) {
+                        throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+                    }
+                }
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return Response.ok().build();
+    }
+
+    @DELETE
+    @Path("/{equivalentClassPath:.+}")
+    public Response removeEquivalentClass(@PathParam("ontologyPath") String ontologyPath,
+                                          @PathParam("classPath") String classPath,
+                                          @PathParam("equivalentClassPath") String equivalentClassPath) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String classURI = resourceManager.getResourceURIForPath(ontologyPath, classPath);
+            String equivalentClassURI = resourceManager.convertEntityRelativePathToURI(equivalentClassPath);
+            if (classURI == null) {
+                throw new WebApplicationException(Status.NOT_FOUND);
+            } else {
+                try {
+                    persistenceStore.deleteEquivalentClass(classURI, equivalentClassURI);
+                } catch (Exception e) {
+                    throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+                }
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return Response.ok().build();
+    }
+}

Added: incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClassSuperClasses.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClassSuperClasses.java?rev=1148497&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClassSuperClasses.java (added)
+++ incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularClassSuperClasses.java Tue Jul 19 19:37:37 2011
@@ -0,0 +1,102 @@
+/*
+ * 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.store.rest.resources;
+
+import java.util.List;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.ontologymanager.store.api.LockManager;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
+import org.apache.stanbol.ontologymanager.store.rest.LockManagerImp;
+import org.apache.stanbol.ontologymanager.store.rest.ResourceManagerImp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Path("/ontology/{ontologyPath:.+}/classes/{classPath:.+}/superClasses/")
+public class ParticularClassSuperClasses extends BaseStanbolResource{
+    private static final Logger logger = LoggerFactory.getLogger(ParticularClassSuperClasses.class);
+
+    private PersistenceStore persistenceStore;
+
+    public ParticularClassSuperClasses(@Context ServletContext context) {
+        this.persistenceStore = ContextHelper.getServiceFromContext(PersistenceStore.class, context);
+    }
+
+    @POST
+    public Response addSuperClasses(@PathParam("ontologyPath") String ontologyPath,
+                                    @PathParam("classPath") String classPath,
+                                    @FormParam("superClassURIs") List<String> superClassURIs) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String classURI = resourceManager.getResourceURIForPath(ontologyPath, classPath);
+            if (classURI == null) {
+                throw new WebApplicationException(Status.NOT_FOUND);
+            } else {
+                for (String superClassURI : superClassURIs) {
+                    try {
+                        persistenceStore.makeSubClassOf(classURI, superClassURI);
+                    } catch (Exception e) {
+                        throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+                    }
+                }
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return Response.ok().build();
+    }
+
+    @DELETE
+    @Path("/{superClassPath:.+}/")
+    public Response removeSuperClass(@PathParam("ontologyPath") String ontologyPath,
+                                     @PathParam("classPath") String classPath,
+                                     @PathParam("superClassPath") String superClassPath) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String classURI = resourceManager.getResourceURIForPath(ontologyPath, classPath);
+            String superClassURI = resourceManager.convertEntityRelativePathToURI(superClassPath);
+            if (classURI == null) {
+                throw new WebApplicationException(Status.NOT_FOUND);
+            } else {
+                try {
+                    persistenceStore.deleteSuperClass(classURI, superClassURI);
+                } catch (Exception e) {
+                    throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+                }
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return Response.ok().build();
+    }
+}

Added: incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypeProperty.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypeProperty.java?rev=1148497&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypeProperty.java (added)
+++ incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypeProperty.java Tue Jul 19 19:37:37 2011
@@ -0,0 +1,183 @@
+/*
+ * 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.store.rest.resources;
+
+import java.net.URI;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+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.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.ontologymanager.store.api.LockManager;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
+import org.apache.stanbol.ontologymanager.store.model.DatatypePropertyContext;
+import org.apache.stanbol.ontologymanager.store.rest.LockManagerImp;
+import org.apache.stanbol.ontologymanager.store.rest.ResourceManagerImp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.sun.jersey.api.view.Viewable;
+
+@Path("/ontology/{ontologyPath:.+}/datatypeProperties/{datatypePropertyPath:.+}")
+public class ParticularDatatypeProperty extends BaseStanbolResource{
+    private static final Logger logger = LoggerFactory.getLogger(ParticularDatatypeProperty.class);
+
+    private static final String VIEWABLE_PATH = "/org/apache/stanbol/ontologymanager/store/rest/resources/particularDatatypeProperty";
+
+    private PersistenceStore persistenceStore;
+
+    // HTML View Variable
+    private DatatypePropertyContext metadata;
+
+    public ParticularDatatypeProperty(@Context ServletContext context) {
+        this.persistenceStore = ContextHelper.getServiceFromContext(PersistenceStore.class, context);
+    }
+
+    @GET
+    @Produces(MediaType.APPLICATION_XML)
+    public Response retrieveDatatypePropertyContext(@PathParam("ontologyPath") String ontologyPath,
+                                                    @PathParam("datatypePropertyPath") String datatypePropertyPath,
+                                                    @DefaultValue("false") @QueryParam("withInferredAxioms") boolean withInferredAxioms) {
+        Response response = null;
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainReadLockFor(ontologyPath);
+        try {
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String datatypePropertyURI = resourceManager.getResourceURIForPath(ontologyPath,
+                datatypePropertyPath);
+            if (datatypePropertyURI == null) {
+                throw new WebApplicationException(Response.Status.NOT_FOUND);
+            }
+            try {
+                DatatypePropertyContext datatypePropertyContext = persistenceStore
+                        .generateDatatypePropertyContext(datatypePropertyURI, withInferredAxioms);
+                response = Response.ok(datatypePropertyContext, MediaType.APPLICATION_XML_TYPE).build();
+            } catch (Exception e) {
+                logger.error("Error ", e);
+                throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
+            }
+        } finally {
+            lockManager.releaseReadLockFor(ontologyPath);
+        }
+        return response;
+    }
+
+    @POST
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    public Response makeSubClassOf(@PathParam("ontologyPath") String ontologyPath,
+                                   @PathParam("datatypePropertyPath") String datatypePropertyPath,
+                                   @FormParam("isFunctional") Boolean isFunctional) {
+        Response response = null;
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String datatypePropertyURI = resourceManager.getResourceURIForPath(ontologyPath,
+                datatypePropertyPath);
+            if (datatypePropertyURI == null) {
+                throw new WebApplicationException(Response.Status.NOT_FOUND);
+            }
+            try {
+                if (isFunctional != null) {
+                    persistenceStore.setPropertyAttributes(datatypePropertyURI, isFunctional, null, null,
+                        null);
+                }
+                DatatypePropertyContext datatypePropertyContext = persistenceStore
+                        .generateDatatypePropertyContext(datatypePropertyURI, false);
+
+                response = Response.ok(datatypePropertyContext, MediaType.APPLICATION_XML_TYPE).build();
+            } catch (Exception e) {
+                logger.error("Error ", e);
+                throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return response;
+    }
+
+    // FIXME Handle PS errors properly and return correct responses
+
+    // The Java method will process HTTP DELETE requests
+    @DELETE
+    public void delete(@PathParam("ontologyPath") String ontologyPath,
+                       @PathParam("datatypePropertyPath") String datatypePropertyPath) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String resourceURI = resourceManager.getResourceURIForPath(ontologyPath, datatypePropertyPath);
+            persistenceStore.deleteResource(resourceURI);
+        } catch (Exception e) {
+            logger.error("Error ", e);
+            throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+    }
+
+    // HTML View Methods
+    public DatatypePropertyContext getMetadata() {
+        return metadata;
+    }
+
+    @GET
+    @Produces(MediaType.TEXT_HTML+";qs=2")
+    public Viewable getViewable(@PathParam("ontologyPath") String ontologyPath,
+                                @PathParam("datatypePropertyPath") String datatypePropertyPath,
+                                @DefaultValue("false") @QueryParam("withInferredAxioms") boolean withInferredAxioms) {
+        Response response = retrieveDatatypePropertyContext(ontologyPath, datatypePropertyPath,
+            withInferredAxioms);
+        metadata = (DatatypePropertyContext) response.getEntity();
+        return new Viewable(VIEWABLE_PATH, this);
+    }
+
+    @POST
+    @Produces(MediaType.TEXT_HTML+";qs=2")
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    public Response getViewable(@PathParam("ontologyPath") String ontologyPath,
+                                @PathParam("datatypePropertyPath") String datatypePropertyPath,
+                                @FormParam("isFunctional") Boolean isFunctional) {
+        metadata = (DatatypePropertyContext) makeSubClassOf(ontologyPath, datatypePropertyPath, /*
+                                                                                                 * domainURIs,
+                                                                                                 * rangeURIs,
+                                                                                                 * subPropertyOf
+                                                                                                 * ,
+                                                                                                 */
+        isFunctional).getEntity();
+        Response response = Response.seeOther(URI.create(metadata.getPropertyMetaInformation().getHref()))
+                .build();
+        return response;
+    }
+
+}

Added: incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypePropertyDomains.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypePropertyDomains.java?rev=1148497&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypePropertyDomains.java (added)
+++ incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypePropertyDomains.java Tue Jul 19 19:37:37 2011
@@ -0,0 +1,110 @@
+/*
+ * 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.store.rest.resources;
+
+import java.util.List;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.ontologymanager.store.api.LockManager;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
+import org.apache.stanbol.ontologymanager.store.rest.LockManagerImp;
+import org.apache.stanbol.ontologymanager.store.rest.ResourceManagerImp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Path("/ontology/{ontologyPath:.+}/datatypeProperties/{datatypePropertyPath:.+}/domains")
+public class ParticularDatatypePropertyDomains extends BaseStanbolResource{
+    private static final Logger logger = LoggerFactory.getLogger(ParticularDatatypePropertyDomains.class);
+
+    private PersistenceStore persistenceStore;
+
+    public ParticularDatatypePropertyDomains(@Context ServletContext context) {
+        this.persistenceStore = ContextHelper.getServiceFromContext(PersistenceStore.class, context);
+    }
+
+    @POST
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    public Response addDomains(@PathParam("ontologyPath") String ontologyPath,
+                               @PathParam("datatypePropertyPath") String datatypePropertyPath,
+                               @FormParam("domainURIs") List<String> domainURIs) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String datatypePropertyURI = resourceManager.getResourceURIForPath(ontologyPath,
+                datatypePropertyPath);
+            if (datatypePropertyURI == null) {
+                throw new WebApplicationException(Status.NOT_FOUND);
+            } else {
+                for (String domainURI : domainURIs) {
+                    try {
+                        persistenceStore.addDomain(datatypePropertyURI, domainURI);
+                    } catch (Exception e) {
+                        throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+                    }
+                }
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return Response.ok().build();
+    }
+
+    @DELETE
+    @Path("/{domainPath:.+}")
+    public Response deleteDomain(@PathParam("ontologyPath") String ontologyPath,
+                                 @PathParam("datatypePropertyPath") String datatypePropertyPath,
+                                 @PathParam("domainPath") String domainPath) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String datatypePropertyURI = resourceManager.getResourceURIForPath(ontologyPath,
+                datatypePropertyPath);
+            String domainURI = resourceManager.convertEntityRelativePathToURI(domainPath);
+            if (datatypePropertyURI == null) {
+                throw new WebApplicationException(Status.NOT_FOUND);
+            } else {
+                try {
+                    persistenceStore.deleteDomain(datatypePropertyURI, domainURI);
+                } catch (Exception e) {
+                    throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+                }
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return Response.ok().build();
+
+    }
+}

Added: incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypePropertyRanges.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypePropertyRanges.java?rev=1148497&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypePropertyRanges.java (added)
+++ incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypePropertyRanges.java Tue Jul 19 19:37:37 2011
@@ -0,0 +1,109 @@
+/*
+ * 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.store.rest.resources;
+
+import java.util.List;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.ontologymanager.store.api.LockManager;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
+import org.apache.stanbol.ontologymanager.store.rest.LockManagerImp;
+import org.apache.stanbol.ontologymanager.store.rest.ResourceManagerImp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Path("/ontology/{ontologyPath:.+}/datatypeProperties/{datatypePropertyPath:.+}/ranges")
+public class ParticularDatatypePropertyRanges extends BaseStanbolResource{
+    private static final Logger logger = LoggerFactory.getLogger(ParticularDatatypePropertyRanges.class);
+
+    private PersistenceStore persistenceStore;
+
+    public ParticularDatatypePropertyRanges(@Context ServletContext context) {
+        this.persistenceStore = ContextHelper.getServiceFromContext(PersistenceStore.class, context);
+    }
+
+    @POST
+    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+    public Response addRanges(@PathParam("ontologyPath") String ontologyPath,
+                              @PathParam("datatypePropertyPath") String datatypePropertyPath,
+                              @FormParam("rangeURIs") List<String> rangeURIs) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String datatypePropertyURI = resourceManager.getResourceURIForPath(ontologyPath,
+                datatypePropertyPath);
+            if (datatypePropertyURI == null) {
+                throw new WebApplicationException(Status.NOT_FOUND);
+            } else {
+                for (String domainURI : rangeURIs) {
+                    try {
+                        persistenceStore.addRange(datatypePropertyURI, domainURI);
+                    } catch (Exception e) {
+                        throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+                    }
+                }
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return Response.ok().build();
+    }
+
+    @DELETE
+    @Path("/{rangePath:.+}")
+    public Response deleteRange(@PathParam("ontologyPath") String ontologyPath,
+                                @PathParam("datatypePropertyPath") String datatypePropertyPath,
+                                @PathParam("rangePath") String rangePath) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String datatypePropertyURI = resourceManager.getResourceURIForPath(ontologyPath,
+                datatypePropertyPath);
+            String rangeURI = resourceManager.convertEntityRelativePathToURI(rangePath);
+            if (datatypePropertyURI == null) {
+                throw new WebApplicationException(Status.NOT_FOUND);
+            } else {
+                try {
+                    persistenceStore.deleteRange(datatypePropertyURI, rangeURI);
+                } catch (Exception e) {
+                    throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+                }
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return Response.ok().build();
+
+    }
+}

Added: incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypePropertySuperProperties.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypePropertySuperProperties.java?rev=1148497&view=auto
==============================================================================
--- incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypePropertySuperProperties.java (added)
+++ incubator/stanbol/trunk/ontologymanager/store/web/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/ParticularDatatypePropertySuperProperties.java Tue Jul 19 19:37:37 2011
@@ -0,0 +1,108 @@
+/*
+ * 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.store.rest.resources;
+
+import java.util.List;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.ontologymanager.store.api.LockManager;
+import org.apache.stanbol.ontologymanager.store.api.PersistenceStore;
+import org.apache.stanbol.ontologymanager.store.rest.LockManagerImp;
+import org.apache.stanbol.ontologymanager.store.rest.ResourceManagerImp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Path("/ontology/{ontologyPath:.+}/datatypeProperties/{datatypePropertyPath:.+}/superProperties")
+public class ParticularDatatypePropertySuperProperties extends BaseStanbolResource{
+    private static final Logger logger = LoggerFactory
+            .getLogger(ParticularDatatypePropertySuperProperties.class);
+
+    private PersistenceStore persistenceStore;
+
+    public ParticularDatatypePropertySuperProperties(@Context ServletContext context) {
+        this.persistenceStore = ContextHelper.getServiceFromContext(PersistenceStore.class, context);
+    }
+
+    @POST
+    public Response addSuperProperties(@PathParam("ontologyPath") String ontologyPath,
+                                       @PathParam("datatypePropertyPath") String datatypePropertyPath,
+                                       @FormParam("superPropertyURIs") List<String> superPropertyURIs) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String datatypePropertyURI = resourceManager.getResourceURIForPath(ontologyPath,
+                datatypePropertyPath);
+            if (datatypePropertyURI == null) {
+                throw new WebApplicationException(Status.NOT_FOUND);
+            } else {
+                for (String superPropertyURI : superPropertyURIs) {
+                    try {
+                        persistenceStore.makeSubPropertyOf(datatypePropertyURI, superPropertyURI);
+                    } catch (Exception e) {
+                        throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+                    }
+                }
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return Response.ok().build();
+    }
+
+    @DELETE
+    @Path("/{superPropertyPath:.+}")
+    public Response deleteSuperProperty(@PathParam("ontologyPath") String ontologyPath,
+                                        @PathParam("datatypePropertyPath") String datatypePropertyPath,
+                                        @PathParam("superPropertyPath") String superPropertyPath) {
+        LockManager lockManager = LockManagerImp.getInstance();
+        lockManager.obtainWriteLockFor(ontologyPath);
+        try {
+
+            ResourceManagerImp resourceManager = ResourceManagerImp.getInstance();
+            String datatypePropertyURI = resourceManager.getResourceURIForPath(ontologyPath,
+                datatypePropertyPath);
+            String superPropertyURI = resourceManager.convertEntityRelativePathToURI(superPropertyPath);
+            if (datatypePropertyURI == null) {
+                throw new WebApplicationException(Status.NOT_FOUND);
+            } else {
+                try {
+                    persistenceStore.deleteSuperPropertyAssertion(datatypePropertyURI, superPropertyURI);
+                } catch (Exception e) {
+                    throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+                }
+            }
+        } finally {
+            lockManager.releaseWriteLockFor(ontologyPath);
+        }
+        return Response.ok().build();
+
+    }
+}