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)
+
+&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;
+&lt;ns1:ClassesForOntology xmlns:ns1="model.rest.persistence.iks.srdc.com.tr" xmlns:ns2="http://www.w3.org/1999/xlink"&gt;
+    &lt;ns1:OntologyMetaInformation ns2:href="ontologies/http://dbpedia.org/ontology/"&gt;
+        &lt;ns1:URI&gt;http://dbpedia.org/ontology/&lt;/ns1:URI&gt;
+        &lt;ns1:Description&gt;&lt;/ns1:Description&gt;
+    &lt;/ns1:OntologyMetaInformation&gt;
+    &lt;ns1:ClassMetaInformation ns2:href="ontologies/http://dbpedia.org/ontology//classes/http://dbpedia.org/ontology/PopulatedPlace"&gt;
+        &lt;ns1:URI&gt;http://dbpedia.org/ontology/PopulatedPlace&lt;/ns1:URI&gt;
+        &lt;ns1:Description&gt;&lt;/ns1:Description&gt;
+        &lt;ns1:Namespace&gt;http://dbpedia.org/ontology/&lt;/ns1:Namespace&gt;
+        &lt;ns1:LocalName&gt;PopulatedPlace&lt;/ns1:LocalName&gt;
+    &lt;/ns1:ClassMetaInformation&gt;
+&lt;/ns1:ClassesForOntology&gt;
+</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)
+
+&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;
+&lt;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"&gt;
+    &lt;ns1:URI&gt;http://iks-project.eu/klazzes#SampleClass&lt;/ns1:URI&gt;
+    &lt;ns1:Description&gt;&lt;/ns1:Description&gt;
+    &lt;ns1:Namespace&gt;http://iks-project.eu/klazess#&lt;/ns1:Namespace&gt;
+    &lt;ns1:LocalName&gt;SampleClass&lt;/ns1:LocalName&gt;
+&lt;/ns1:ClassMetaInformation&gt;
+</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>