You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by ci...@apache.org on 2011/04/08 09:15:29 UTC
svn commit: r1090148 - in
/incubator/stanbol/trunk/commons/web/ontology/src/main:
java/org/apache/stanbol/ontologymanager/store/rest/
java/org/apache/stanbol/ontologymanager/store/rest/resources/
resources/org/apache/stanbol/commons/web/ontologymanager...
Author: cihan
Date: Fri Apr 8 07:15:29 2011
New Revision: 1090148
URL: http://svn.apache.org/viewvc?rev=1090148&view=rev
Log:
STANBOL-157: Added new HTML page and RESTful services for ontology imports.
Added:
incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyImports.java
incubator/stanbol/trunk/commons/web/ontology/src/main/resources/org/apache/stanbol/commons/web/ontologymanager/store/templates/org/apache/stanbol/ontologymanager/store/rest/resources/ontologyImports.ftl (with props)
Modified:
incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/JAXBProvider.java
incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/StoreWebFragment.java
incubator/stanbol/trunk/commons/web/ontology/src/main/resources/org/apache/stanbol/commons/web/ontologymanager/store/templates/org/apache/stanbol/ontologymanager/store/rest/resources/particularOntology.ftl
Modified: incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/JAXBProvider.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/JAXBProvider.java?rev=1090148&r1=1090147&r2=1090148&view=diff
==============================================================================
--- incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/JAXBProvider.java (original)
+++ incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/JAXBProvider.java Fri Apr 8 07:15:29 2011
@@ -38,12 +38,14 @@ import org.apache.stanbol.ontologymanage
import org.apache.stanbol.ontologymanager.store.model.Domain;
import org.apache.stanbol.ontologymanager.store.model.EquivalentClasses;
import org.apache.stanbol.ontologymanager.store.model.EquivalentProperties;
+import org.apache.stanbol.ontologymanager.store.model.ImportsForOntology;
import org.apache.stanbol.ontologymanager.store.model.IndividualContext;
import org.apache.stanbol.ontologymanager.store.model.IndividualMetaInformation;
import org.apache.stanbol.ontologymanager.store.model.IndividualsForOntology;
import org.apache.stanbol.ontologymanager.store.model.ObjectFactory;
import org.apache.stanbol.ontologymanager.store.model.ObjectPropertiesForOntology;
import org.apache.stanbol.ontologymanager.store.model.ObjectPropertyContext;
+import org.apache.stanbol.ontologymanager.store.model.OntologyImport;
import org.apache.stanbol.ontologymanager.store.model.OntologyMetaInformation;
import org.apache.stanbol.ontologymanager.store.model.PropertyAssertions;
import org.apache.stanbol.ontologymanager.store.model.PropertyMetaInformation;
@@ -108,7 +110,8 @@ public class JAXBProvider implements Mes
|| type.equals(ObjectPropertyContext.class) || type.equals(OntologyMetaInformation.class)
|| type.equals(PropertyAssertions.class) || type.equals(PropertyMetaInformation.class)
|| type.equals(Range.class) || type.equals(ResourceMetaInformationType.class)
- || type.equals(Superclasses.class) || type.equals(SuperProperties.class)) {
+ || type.equals(Superclasses.class) || type.equals(SuperProperties.class)
+ || type.equals(OntologyImport.class) || type.equals(ImportsForOntology.class)) {
return true;
} else {
return false;
@@ -144,7 +147,8 @@ public class JAXBProvider implements Mes
|| type.equals(ObjectPropertyContext.class) || type.equals(OntologyMetaInformation.class)
|| type.equals(PropertyAssertions.class) || type.equals(PropertyMetaInformation.class)
|| type.equals(Range.class) || type.equals(ResourceMetaInformationType.class)
- || type.equals(Superclasses.class) || type.equals(SuperProperties.class)) {
+ || type.equals(Superclasses.class) || type.equals(SuperProperties.class)
+ || type.equals(OntologyImport.class) || type.equals(ImportsForOntology.class)) {
return true;
} else {
return false;
Modified: incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/StoreWebFragment.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/StoreWebFragment.java?rev=1090148&r1=1090147&r2=1090148&view=diff
==============================================================================
--- incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/StoreWebFragment.java (original)
+++ incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/StoreWebFragment.java Fri Apr 8 07:15:29 2011
@@ -15,6 +15,7 @@ import org.apache.stanbol.commons.web.ba
import org.apache.stanbol.ontologymanager.store.rest.resources.Ontologies;
import org.apache.stanbol.ontologymanager.store.rest.resources.OntologyClasses;
import org.apache.stanbol.ontologymanager.store.rest.resources.OntologyDatatypeProperties;
+import org.apache.stanbol.ontologymanager.store.rest.resources.OntologyImports;
import org.apache.stanbol.ontologymanager.store.rest.resources.OntologyIndividuals;
import org.apache.stanbol.ontologymanager.store.rest.resources.OntologyObjectProperties;
import org.apache.stanbol.ontologymanager.store.rest.resources.ParticularClass;
@@ -70,6 +71,7 @@ public class StoreWebFragment implements
classes.add(OntologyDatatypeProperties.class);
classes.add(OntologyObjectProperties.class);
classes.add(OntologyIndividuals.class);
+ classes.add(OntologyImports.class);
classes.add(ParticularClass.class);
classes.add(ParticularDatatypeProperty.class);
classes.add(ParticularOntology.class);
Added: incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyImports.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyImports.java?rev=1090148&view=auto
==============================================================================
--- incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyImports.java (added)
+++ incubator/stanbol/trunk/commons/web/ontology/src/main/java/org/apache/stanbol/ontologymanager/store/rest/resources/OntologyImports.java Fri Apr 8 07:15:29 2011
@@ -0,0 +1,139 @@
+package org.apache.stanbol.ontologymanager.store.rest.resources;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+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.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/commons/web/ontology/src/main/resources/org/apache/stanbol/commons/web/ontologymanager/store/templates/org/apache/stanbol/ontologymanager/store/rest/resources/ontologyImports.ftl
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/web/ontology/src/main/resources/org/apache/stanbol/commons/web/ontologymanager/store/templates/org/apache/stanbol/ontologymanager/store/rest/resources/ontologyImports.ftl?rev=1090148&view=auto
==============================================================================
--- incubator/stanbol/trunk/commons/web/ontology/src/main/resources/org/apache/stanbol/commons/web/ontologymanager/store/templates/org/apache/stanbol/ontologymanager/store/rest/resources/ontologyImports.ftl (added)
+++ incubator/stanbol/trunk/commons/web/ontology/src/main/resources/org/apache/stanbol/commons/web/ontologymanager/store/templates/org/apache/stanbol/ontologymanager/store/rest/resources/ontologyImports.ftl Fri Apr 8 07:15:29 2011
@@ -0,0 +1,108 @@
+<#import "/imports/common.ftl" as common>
+<#import "/imports/prevNextButtons.ftl" as buttons>
+<@common.page title="Imports Of ${it.metadata.ontologyMetaInformation.URI}" hasrestapi=true>
+<div class="panel" id="webview">
+ <h4 class="addHeader">Add a new Import</h4>
+ <form method="POST" accept="text/html" accept-charset="utf-8" enctype="application/x-www-form-urlencoded">
+ <fieldset>
+ <legend>Enter Ontology URI to be imported</legend>
+ <p>Ontology URI: <textarea id="importURIIn" rows="1" name="importURI"></textarea></p>
+ <p><input id="submitImport" type="submit" value="Add Import"></p>
+ </fieldset>
+ </form>
+ <#if it.metadata.ontologyImport?size == 0>
+ <p><em>No imported ontologies.</em></p>
+<#else>
+ <fieldset>
+ <legend><b>Installed Ontologies</b></legend>
+ <#list it.metadata.ontologyImport as ontology>
+ <div class="ontology ontologyList ${ontology_index}">
+ <div class="collapsed">
+ <a class="imgOnt" href="${ontology.href}">${ontology.URI}</a>
+ <button class="delete" title="Delete ${ontology.URI}" onClick="javascript: deleteImport('${it.metadata.ontologyMetaInformation.href}/imports?importURI=${ontology.URI}')"></button>
+ <button class="ontologyHeader"></button>
+ <ul class= "ontologyCollapsable">
+ <li><b>URI:</b> ${ontology.URI}</li>
+ </ul>
+ </div>
+ </div>
+ </#list>
+ <!--<@buttons.prevNextButtons className="ontologyList"/>-->
+ </fieldset>
+</#if>
+<script>
+ PAGING.adjustVisibility("ontologyClassesList");
+
+ function deleteImport(uri)
+ {
+ xmlhttp=new XMLHttpRequest();
+ xmlhttp.open('DELETE',uri,false);
+ xmlhttp.send();
+ location.reload('true');
+ }
+
+ $("#submitImport").click(function(e){
+ e.preventDefault()
+ $.ajax({
+ type: 'POST',
+ data: { importURI: $("#importURIIn").val() },
+ success: function(){
+ location.reload()
+ }
+
+ });
+ });
+
+ $(".ontology .ontologyHeader").click(function () {
+ $(this).parent().toggleClass("collapsed");
+ });
+</script>
+</div>
+
+<div class="panel" id="restapi" style="display: none;">
+<h3>Getting Classes of ontology</h3>
+<pre>
+curl -i -X GET -H "Accept:application/xml" http://localhost:8080/persistencestore/${it.metadata.ontologyMetaInformation.href}/classes
+</pre>
+<p>Response :</p>
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Transfer-Encoding: chunked
+Server: Jetty(6.1.x)
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<ns1:ClassesForOntology xmlns:ns1="model.rest.persistence.iks.srdc.com.tr" xmlns:ns2="http://www.w3.org/1999/xlink">
+ <ns1:OntologyMetaInformation ns2:href="ontologies/http://dbpedia.org/ontology/">
+ <ns1:URI>http://dbpedia.org/ontology/</ns1:URI>
+ <ns1:Description></ns1:Description>
+ </ns1:OntologyMetaInformation>
+ <ns1:ClassMetaInformation ns2:href="ontologies/http://dbpedia.org/ontology//classes/http://dbpedia.org/ontology/PopulatedPlace">
+ <ns1:URI>http://dbpedia.org/ontology/PopulatedPlace</ns1:URI>
+ <ns1:Description></ns1:Description>
+ <ns1:Namespace>http://dbpedia.org/ontology/</ns1:Namespace>
+ <ns1:LocalName>PopulatedPlace</ns1:LocalName>
+ </ns1:ClassMetaInformation>
+</ns1:ClassesForOntology>
+</pre>
+<h3>Creating a new Class</h3>
+<pre>
+curl -i -X POST -H "Accept:application/xml" --data-urlencode classURI=http://iks-project.eu/klazzes#SampleClass http://localhost:8080/persistencestore/${it.metadata.ontologyMetaInformation.href}/classes
+</pre>
+<p>Response</p>
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Transfer-Encoding: chunked
+Server: Jetty(6.1.x)
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<ns1:ClassMetaInformation xmlns:ns1="model.rest.persistence.iks.srdc.com.tr" xmlns:ns2="http://www.w3.org/1999/xlink" ns2:href="ontologies/http://dbpedia.org/ontology//classes/http://iks-project.eu/klazzes/SampleClass">
+ <ns1:URI>http://iks-project.eu/klazzes#SampleClass</ns1:URI>
+ <ns1:Description></ns1:Description>
+ <ns1:Namespace>http://iks-project.eu/klazess#</ns1:Namespace>
+ <ns1:LocalName>SampleClass</ns1:LocalName>
+</ns1:ClassMetaInformation>
+</pre>
+</div>
+</...@common.page>
\ No newline at end of file
Propchange: incubator/stanbol/trunk/commons/web/ontology/src/main/resources/org/apache/stanbol/commons/web/ontologymanager/store/templates/org/apache/stanbol/ontologymanager/store/rest/resources/ontologyImports.ftl
------------------------------------------------------------------------------
svn:executable = *
Modified: incubator/stanbol/trunk/commons/web/ontology/src/main/resources/org/apache/stanbol/commons/web/ontologymanager/store/templates/org/apache/stanbol/ontologymanager/store/rest/resources/particularOntology.ftl
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/web/ontology/src/main/resources/org/apache/stanbol/commons/web/ontologymanager/store/templates/org/apache/stanbol/ontologymanager/store/rest/resources/particularOntology.ftl?rev=1090148&r1=1090147&r2=1090148&view=diff
==============================================================================
--- incubator/stanbol/trunk/commons/web/ontology/src/main/resources/org/apache/stanbol/commons/web/ontologymanager/store/templates/org/apache/stanbol/ontologymanager/store/rest/resources/particularOntology.ftl (original)
+++ incubator/stanbol/trunk/commons/web/ontology/src/main/resources/org/apache/stanbol/commons/web/ontologymanager/store/templates/org/apache/stanbol/ontologymanager/store/rest/resources/particularOntology.ftl Fri Apr 8 07:15:29 2011
@@ -9,6 +9,7 @@
<li><a href="${it.metadata.href}/objectProperties">Object Properties</a></li>
<li><a href="${it.metadata.href}/datatypeProperties">Datatype Properties</a></li>
<li><a href="${it.metadata.href}/individuals">Individuals</a></li>
+ <li><a href="${it.metadata.href}/imports">Imports</a></li>
</ul>
</fieldset>
</div>