You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by en...@apache.org on 2011/08/23 12:40:30 UTC

svn commit: r1160609 - in /incubator/stanbol/branches/jena-reasoners/reasoners: hermit/ hermit/src/main/java/org/apache/stanbol/reasoners/hermit/ owlapi/src/main/java/org/apache/stanbol/reasoners/owlapi/ servicesapi/src/main/java/org/apache/stanbol/rea...

Author: enridaga
Date: Tue Aug 23 10:40:29 2011
New Revision: 1160609

URL: http://svn.apache.org/viewvc?rev=1160609&view=rev
Log:
STANBOL-185
* The OWLApiReasoningService interface have been defined
* POM file for Hermit have been fixed (some resources needed to work with datatypes were not deployed in the bundle!)
* Implemented the GET?url= web method with an OWLApiReasoningService
* Changed the default path of the HermiT service to 'owl2'
* A fake resource ReasoningPrettyResultResource have been created, to display results in a nice template wrapped way (not sure this is the best way).
* Added a README file, now containing only some curl example calls

Added:
    incubator/stanbol/branches/jena-reasoners/reasoners/web/README
    incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningPrettyResultResource.java
    incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/result.ftl
      - copied, changed from r1160332, incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/jena-model.ftl
Removed:
    incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/jena-model.ftl
Modified:
    incubator/stanbol/branches/jena-reasoners/reasoners/hermit/pom.xml
    incubator/stanbol/branches/jena-reasoners/reasoners/hermit/src/main/java/org/apache/stanbol/reasoners/hermit/HermitReasoningService.java
    incubator/stanbol/branches/jena-reasoners/reasoners/owlapi/src/main/java/org/apache/stanbol/reasoners/owlapi/AbstractOWLApiReasoningService.java
    incubator/stanbol/branches/jena-reasoners/reasoners/owlapi/src/main/java/org/apache/stanbol/reasoners/owlapi/OWLApiReasoningService.java
    incubator/stanbol/branches/jena-reasoners/reasoners/servicesapi/src/main/java/org/apache/stanbol/reasoners/servicesapi/InconsistentInputException.java
    incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource.java
    incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/index.ftl

Modified: incubator/stanbol/branches/jena-reasoners/reasoners/hermit/pom.xml
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/jena-reasoners/reasoners/hermit/pom.xml?rev=1160609&r1=1160608&r2=1160609&view=diff
==============================================================================
--- incubator/stanbol/branches/jena-reasoners/reasoners/hermit/pom.xml (original)
+++ incubator/stanbol/branches/jena-reasoners/reasoners/hermit/pom.xml Tue Aug 23 10:40:29 2011
@@ -120,6 +120,7 @@
         <extensions>true</extensions>
         <configuration>
           <instructions>
+            <Embed-Dependency>hermit;scope=compile|runtime;inline=true</Embed-Dependency>
             <Bundle-ClassPath>.</Bundle-ClassPath>
             <Export-Package>
               com.clarkparsia.owlapi.explanation.*,
@@ -148,6 +149,8 @@
               org.coode.owlapi.turtle,
               org.coode.string,org.coode.xml,
               org.semanticweb.HermiT.*;version=1.3.4,
+              org.semanticweb.HermiT.datatypes.*;version=1.3.4,
+              org.semanticweb.HermiT.datatypes.rdfplainliteral.*,
               org.semanticweb.owlapi.*,
               rationals.*,
               uk.ac.manchester.cs.bhig.util,
@@ -175,6 +178,8 @@
               !org.protege.editor.owl.model.*,
               !org.w3c.dom.*,
               org.apache.stanbol.reasoners.servicesapi.*,
+              org.semanticweb.HermiT.datatypes.*;version=1.3.4,
+              org.semanticweb.HermiT.datatypes.rdfplainliteral.*,
               *
             </Import-Package>
             <_nouses>true</_nouses>

Modified: incubator/stanbol/branches/jena-reasoners/reasoners/hermit/src/main/java/org/apache/stanbol/reasoners/hermit/HermitReasoningService.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/jena-reasoners/reasoners/hermit/src/main/java/org/apache/stanbol/reasoners/hermit/HermitReasoningService.java?rev=1160609&r1=1160608&r2=1160609&view=diff
==============================================================================
--- incubator/stanbol/branches/jena-reasoners/reasoners/hermit/src/main/java/org/apache/stanbol/reasoners/hermit/HermitReasoningService.java (original)
+++ incubator/stanbol/branches/jena-reasoners/reasoners/hermit/src/main/java/org/apache/stanbol/reasoners/hermit/HermitReasoningService.java Tue Aug 23 10:40:29 2011
@@ -21,7 +21,8 @@ import org.semanticweb.owlapi.reasoner.O
 @Service
 public class HermitReasoningService extends AbstractOWLApiReasoningService
 		implements OWLApiReasoningService, ReasoningService {
-	public static final String _DEFAULT_PATH = "hermit";
+
+	public static final String _DEFAULT_PATH = "owl2";
 
 	@Property(name = ReasoningService.SERVICE_PATH, value = _DEFAULT_PATH)
 	private String path;
@@ -38,8 +39,10 @@ public class HermitReasoningService exte
 	public String getPath() {
 		return path;
 	}
+
 	@Activate
-	public void activate(ComponentContext context){
-		this.path = (String) context.getProperties().get(ReasoningService.SERVICE_PATH);
+	public void activate(ComponentContext context) {
+		this.path = (String) context.getProperties().get(
+				ReasoningService.SERVICE_PATH);
 	}
 }

Modified: incubator/stanbol/branches/jena-reasoners/reasoners/owlapi/src/main/java/org/apache/stanbol/reasoners/owlapi/AbstractOWLApiReasoningService.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/jena-reasoners/reasoners/owlapi/src/main/java/org/apache/stanbol/reasoners/owlapi/AbstractOWLApiReasoningService.java?rev=1160609&r1=1160608&r2=1160609&view=diff
==============================================================================
--- incubator/stanbol/branches/jena-reasoners/reasoners/owlapi/src/main/java/org/apache/stanbol/reasoners/owlapi/AbstractOWLApiReasoningService.java (original)
+++ incubator/stanbol/branches/jena-reasoners/reasoners/owlapi/src/main/java/org/apache/stanbol/reasoners/owlapi/AbstractOWLApiReasoningService.java Tue Aug 23 10:40:29 2011
@@ -74,6 +74,7 @@ public abstract class AbstractOWLApiReas
 	 * @param generators
 	 * @return
 	 */
+	@Override
 	public Set<OWLAxiom> run(OWLOntology input,
 			List<InferredAxiomGenerator<? extends OWLAxiom>> generators)
 			throws ReasoningServiceException, InconsistentInputException {
@@ -91,8 +92,7 @@ public abstract class AbstractOWLApiReas
 					reasoner, generators);
 
 			// We fill an anonymous ontology with the result, the return the
-			// axiom
-			// set
+			// axiom set
 			Set<OWLAxiom> axioms = new HashSet<OWLAxiom>();
 			try {
 				OWLOntology output = manager.createOntology();
@@ -104,6 +104,7 @@ public abstract class AbstractOWLApiReas
 				manager.removeOntology(output);
 			} catch (OWLOntologyCreationException e) {
 				log.error("An exception have been thrown when instantiating the ontology");
+				throw new ReasoningServiceException();
 			}
 
 			return axioms;
@@ -127,6 +128,7 @@ public abstract class AbstractOWLApiReas
 	 * @param generators
 	 * @return
 	 */
+	@Override
 	public Set<OWLAxiom> run(OWLOntology ontology, List<SWRLRule> rules,
 			List<InferredAxiomGenerator<? extends OWLAxiom>> generators)
 			throws ReasoningServiceException, InconsistentInputException {
@@ -203,6 +205,7 @@ public abstract class AbstractOWLApiReas
 	 * @param ontology
 	 * @return
 	 */
+	@Override
 	public Set<OWLAxiom> classify(OWLOntology ontology)
 			throws ReasoningServiceException, InconsistentInputException {
 		return run(ontology, getClassifyAxiomGenerators());
@@ -217,6 +220,7 @@ public abstract class AbstractOWLApiReas
 	 * @throws InconsistentInputException
 	 * @throws ReasoningServiceException
 	 */
+	@Override
 	public Set<OWLAxiom> classify(OWLOntology ontology, List<SWRLRule> rules)
 			throws ReasoningServiceException, InconsistentInputException {
 		log.debug("Calling classify(OWLOntology ontology, List<SWRLRule> rules) ");
@@ -231,6 +235,7 @@ public abstract class AbstractOWLApiReas
 	 * @throws ReasoningServiceException
 	 * @throws InconsistentInputException
 	 */
+	@Override
 	public Set<OWLAxiom> enrich(OWLOntology ontology)
 			throws ReasoningServiceException, InconsistentInputException {
 		return run(ontology, getEnrichAxiomGenerators());
@@ -245,6 +250,7 @@ public abstract class AbstractOWLApiReas
 	 * @throws ReasoningServiceException
 	 * @throws InconsistentInputException
 	 */
+	@Override
 	public Set<OWLAxiom> enrich(OWLOntology ontology, List<SWRLRule> rules)
 			throws ReasoningServiceException, InconsistentInputException {
 		log.debug("Calling enrich(OWLOntology ontology, List<SWRLRule> rules) ");
@@ -258,6 +264,7 @@ public abstract class AbstractOWLApiReas
 	 * @return
 	 * @throws ReasoningServiceException 
 	 */
+	@Override
 	public boolean isConsistent(OWLOntology ontology) throws ReasoningServiceException {
 		try{
 		return getReasoner(ontology).isConsistent();
@@ -278,6 +285,7 @@ public abstract class AbstractOWLApiReas
 	 * @return
 	 * @throws ReasoningServiceException 
 	 */
+	@Override
 	public boolean isConsistent(OWLOntology ontology, List<SWRLRule> rules) throws ReasoningServiceException {
 		log.debug("Create a input ontology to merge rules in.");
 		OWLOntology input;

Modified: incubator/stanbol/branches/jena-reasoners/reasoners/owlapi/src/main/java/org/apache/stanbol/reasoners/owlapi/OWLApiReasoningService.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/jena-reasoners/reasoners/owlapi/src/main/java/org/apache/stanbol/reasoners/owlapi/OWLApiReasoningService.java?rev=1160609&r1=1160608&r2=1160609&view=diff
==============================================================================
--- incubator/stanbol/branches/jena-reasoners/reasoners/owlapi/src/main/java/org/apache/stanbol/reasoners/owlapi/OWLApiReasoningService.java (original)
+++ incubator/stanbol/branches/jena-reasoners/reasoners/owlapi/src/main/java/org/apache/stanbol/reasoners/owlapi/OWLApiReasoningService.java Tue Aug 23 10:40:29 2011
@@ -1,5 +1,39 @@
 package org.apache.stanbol.reasoners.owlapi;
 
+import java.util.List;
+import java.util.Set;
+
+import org.apache.stanbol.reasoners.servicesapi.InconsistentInputException;
+import org.apache.stanbol.reasoners.servicesapi.ReasoningServiceException;
+import org.semanticweb.owlapi.model.OWLAxiom;
+import org.semanticweb.owlapi.model.OWLOntology;
+import org.semanticweb.owlapi.model.SWRLRule;
+import org.semanticweb.owlapi.util.InferredAxiomGenerator;
+
 public interface OWLApiReasoningService {
 
+	public abstract boolean isConsistent(OWLOntology ontology, List<SWRLRule> rules)
+			throws ReasoningServiceException;
+
+	public abstract boolean isConsistent(OWLOntology ontology)
+			throws ReasoningServiceException;
+
+	public abstract Set<OWLAxiom> enrich(OWLOntology ontology, List<SWRLRule> rules)
+			throws ReasoningServiceException, InconsistentInputException;
+
+	public abstract Set<OWLAxiom> enrich(OWLOntology ontology)
+			throws ReasoningServiceException, InconsistentInputException;
+
+	public abstract Set<OWLAxiom> classify(OWLOntology ontology, List<SWRLRule> rules)
+			throws ReasoningServiceException, InconsistentInputException;
+
+	public abstract Set<OWLAxiom> classify(OWLOntology ontology)
+			throws ReasoningServiceException, InconsistentInputException;
+
+	public abstract Set<OWLAxiom> run(OWLOntology ontology, List<SWRLRule> rules, List<InferredAxiomGenerator<? extends OWLAxiom>> generators)
+			throws ReasoningServiceException, InconsistentInputException;
+
+	public abstract Set<OWLAxiom> run(OWLOntology input, List<InferredAxiomGenerator<? extends OWLAxiom>> generators)
+			throws ReasoningServiceException, InconsistentInputException;
+
 }

Modified: incubator/stanbol/branches/jena-reasoners/reasoners/servicesapi/src/main/java/org/apache/stanbol/reasoners/servicesapi/InconsistentInputException.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/jena-reasoners/reasoners/servicesapi/src/main/java/org/apache/stanbol/reasoners/servicesapi/InconsistentInputException.java?rev=1160609&r1=1160608&r2=1160609&view=diff
==============================================================================
--- incubator/stanbol/branches/jena-reasoners/reasoners/servicesapi/src/main/java/org/apache/stanbol/reasoners/servicesapi/InconsistentInputException.java (original)
+++ incubator/stanbol/branches/jena-reasoners/reasoners/servicesapi/src/main/java/org/apache/stanbol/reasoners/servicesapi/InconsistentInputException.java Tue Aug 23 10:40:29 2011
@@ -1,5 +1,10 @@
 package org.apache.stanbol.reasoners.servicesapi;
 
+/**
+ * The process cannot be completed because the input is inconsistent. This
+ * Exception must be used by reasoning services which must stop the inference
+ * process if any inconsistency is found.
+ */
 public class InconsistentInputException extends Exception {
 
 	/**

Added: incubator/stanbol/branches/jena-reasoners/reasoners/web/README
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/jena-reasoners/reasoners/web/README?rev=1160609&view=auto
==============================================================================
--- incubator/stanbol/branches/jena-reasoners/reasoners/web/README (added)
+++ incubator/stanbol/branches/jena-reasoners/reasoners/web/README Tue Aug 23 10:40:29 2011
@@ -0,0 +1,22 @@
+
+Examples:
+
+# Classify the FOAF ontology, getting it from the web using the Jena OWL reasoner, result in turtle
+curl -v -H "Accept: application/turtle" "http://localhost:8080/reasoners/services/owl/classify?url=http://xmlns.com/foaf/0.1/"
+
+# Classify the FOAF ontology, getting it from the web using the Jena OWL reasoner, result in n3
+curl -v -H "Accept: text/n3" "http://localhost:8080/reasoners/services/owl/classify?url=http://xmlns.com/foaf/0.1/"
+
+# Enrich the FOAF ontology, getting it from the web using the Jena RDFS reasoner, result in rdf/xml
+curl -v -H "Accept: application/rdf+xml" "http://localhost:8080/reasoners/services/owl/classify?url=http://xmlns.com/foaf/0.1/"
+
+# Check consistency of the FOAF ontology, getting it from the web using the Jena OWL reasoner, result in turtle
+curl -v "http://localhost:8080/reasoners/services/owl/check?url=http://xmlns.com/foaf/0.1/"
+
+# Check consistency of the FOAF ontology, getting it from the web using the Hermit OWL2 reasoner, result in turtle
+curl -v "http://localhost:8080/reasoners/services/hermit/check?url=http://xmlns.com/foaf/0.1/"
+
+# Trying with an ontology network (large ontology composed by a set of little ontologies connected through owl:import statements)
+curl -v "http://localhost:8080/reasoners/services/hermit/check?url=http://www.cnr.it/ontology/cnr/cnr.owl"
+or
+curl -v "http://localhost:8080/reasoners/services/hermit/enrich?url=http://www.cnr.it/ontology/cnr/cnr.owl"

Added: incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningPrettyResultResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningPrettyResultResource.java?rev=1160609&view=auto
==============================================================================
--- incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningPrettyResultResource.java (added)
+++ incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningPrettyResultResource.java Tue Aug 23 10:40:29 2011
@@ -0,0 +1,20 @@
+package org.apache.stanbol.reasoners.web.resources;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.core.UriInfo;
+
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+
+public class ReasoningPrettyResultResource extends BaseStanbolResource {
+	private Object result;
+
+	public ReasoningPrettyResultResource(ServletContext context,UriInfo uriInfo, Object result) {
+		this.result = result;
+		this.servletContext = context;
+		this.uriInfo = uriInfo;
+	}
+
+	public Object getResult() {
+		return this.result;
+	}
+}

Modified: incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource.java?rev=1160609&r1=1160608&r2=1160609&view=diff
==============================================================================
--- incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource.java (original)
+++ incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource.java Tue Aug 23 10:40:29 2011
@@ -3,7 +3,11 @@ package org.apache.stanbol.reasoners.web
 import static javax.ws.rs.core.MediaType.MULTIPART_FORM_DATA;
 import static javax.ws.rs.core.MediaType.TEXT_HTML;
 
+import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
@@ -28,12 +32,26 @@ import javax.ws.rs.core.Response.Status;
 import org.apache.stanbol.commons.web.base.ContextHelper;
 import org.apache.stanbol.commons.web.base.format.KRFormat;
 import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.owl.web.OWLOntologyWriter;
 import org.apache.stanbol.reasoners.jena.JenaReasoningService;
 import org.apache.stanbol.reasoners.owlapi.OWLApiReasoningService;
+import org.apache.stanbol.reasoners.servicesapi.InconsistentInputException;
 import org.apache.stanbol.reasoners.servicesapi.ReasoningService;
+import org.apache.stanbol.reasoners.servicesapi.ReasoningServiceException;
 import org.apache.stanbol.reasoners.servicesapi.ReasoningServicesManager;
 import org.apache.stanbol.reasoners.servicesapi.UnboundReasoningServiceException;
 import org.apache.stanbol.reasoners.web.writers.JenaModelWriter;
+import org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxOntologyFormat;
+import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.io.OWLOntologyCreationIOException;
+import org.semanticweb.owlapi.model.IRI;
+import org.semanticweb.owlapi.model.MissingImportEvent;
+import org.semanticweb.owlapi.model.MissingImportListener;
+import org.semanticweb.owlapi.model.OWLAxiom;
+import org.semanticweb.owlapi.model.OWLOntology;
+import org.semanticweb.owlapi.model.OWLOntologyCreationException;
+import org.semanticweb.owlapi.model.OWLOntologyManager;
+import org.semanticweb.owlapi.model.OWLOntologyStorageException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -104,11 +122,41 @@ public class ReasoningServiceTaskResourc
 		return Response.ok(new Viewable("index", this), TEXT_HTML).build();
 	}
 
+	private boolean isHTML(HttpHeaders headers) {
+		// We only want to state if HTML format is the preferred format
+		// requested
+		Set<String> htmlformats = new HashSet<String>();
+		htmlformats.add(TEXT_HTML);
+		Set<String> rdfformats = new HashSet<String>();
+		String[] formats = { TEXT_HTML, "text/plain", KRFormat.RDF_XML,
+				KRFormat.TURTLE, "text/turtle", "text/n3" };
+		rdfformats.addAll(Arrays.asList(formats));
+		List<MediaType> mediaTypes = headers.getAcceptableMediaTypes();
+		for (MediaType t : mediaTypes) {
+			String strty = t.toString();
+			log.info("Acceptable is {}", t);
+			if (htmlformats.contains(strty)) {
+				log.debug("Requested format is HTML {}", t);
+				return true;
+			} else if (rdfformats.contains(strty)) {
+				log.debug("Requested format is RDF {}", t);
+				return false;
+			}
+		}
+		// Default behavior? Should never happen!
+		return true;
+	}
+
 	@GET
 	@Produces({ TEXT_HTML, "text/plain", KRFormat.RDF_XML, KRFormat.TURTLE,
 			"text/turtle", "text/n3" })
 	public Response get(@QueryParam("url") String url,
 			@Context HttpHeaders headers) {
+
+		// If url param is missing, we produce the service welcome page
+		if (url == null) {
+			return Response.ok(new Viewable("index", this)).build();
+		}
 		log.info("Called GET on service {} to perform task {}", service, taskID);
 		log.info("on input url: {}", url);
 		//
@@ -116,25 +164,26 @@ public class ReasoningServiceTaskResourc
 			JenaReasoningService s = (JenaReasoningService) getCurrentService();
 
 			if (getCurrentTask().equals("check")) {
-				log.info("Task is 'check'");
+				log.debug("Task is 'check'");
 				boolean isConsistent;
 				isConsistent = s.isConsistent(ModelFactory.createDefaultModel()
 						.read(url));
 				if (isConsistent) {
-					log.info("Is consistent");
+					log.debug("The input is consistent");
 					return Response.ok().build();
 				} else {
-					log.info("Is not consistent");
+					log.debug("The input is not consistent");
 					return Response.status(Status.NO_CONTENT).build();
 				}
 			}
 
 			Set<Statement> result = null;
 			if (getCurrentTask().equals("classify")) {
+				log.debug("Task is 'classify'");
 				result = s
 						.classify(ModelFactory.createDefaultModel().read(url));
 			} else if (getCurrentTask().equals("enrich")) {
-				log.info("Task is: 'enrich'");
+				log.debug("Task is: 'enrich'");
 				result = s.enrich(ModelFactory.createDefaultModel().read(url));
 			}
 			if (result == null) {
@@ -144,35 +193,92 @@ public class ReasoningServiceTaskResourc
 			log.info("Returning {} statements", result.size());
 			Model outputModel = ModelFactory.createDefaultModel();
 			outputModel.add(result.toArray(new Statement[result.size()]));
-			
-			// We only want to state if HTML format is the preferred format
-			// requested
-			Set<String> htmlformats = new HashSet<String>();
-			htmlformats.add(TEXT_HTML);
-			Set<String> rdfformats = new HashSet<String>();
-			String[] formats = { TEXT_HTML, "text/plain", KRFormat.RDF_XML, KRFormat.TURTLE,
-					"text/turtle", "text/n3" };
-			rdfformats.addAll(Arrays.asList(formats));
-			List<MediaType> mediaTypes = headers.getAcceptableMediaTypes();
-			for (MediaType t : mediaTypes) {
-				String strty = t.toString();
-				log.info("Acceptable is {}", t);
-				if (htmlformats.contains(strty)) {
-					log.info("EQUAL!!! is {}", t);
-					return Response.ok(
-							new Viewable("jena-model",
-									new JenaModelWriter().toStream(outputModel,
-											"text/n3")), TEXT_HTML).build();
-				}else if(rdfformats.contains(strty)){
-					return Response.ok(outputModel).build();					
-				}
+
+			if (isHTML(headers)) {
+
+				ByteArrayOutputStream out = new ByteArrayOutputStream();
+				outputModel.write(out, "TURTLE");
+				return Response.ok(
+						new Viewable("result",
+								new ReasoningPrettyResultResource(context,
+										uriInfo, out)), TEXT_HTML).build();
+			} else {
+				return Response.ok(outputModel).build();
 			}
 
 		} else if (getCurrentService() instanceof OWLApiReasoningService) {
-			// TODO
-			throw new WebApplicationException(new Exception(
-					"Unsupported implementation"),
-					Response.Status.INTERNAL_SERVER_ERROR);
+			OWLApiReasoningService s = (OWLApiReasoningService) getCurrentService();
+			OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
+			// Listening for missing imports
+			manager.addMissingImportListener(new MissingImportListener() {
+				@Override
+				public void importMissing(MissingImportEvent arg0) {
+					log.warn("Missing import: {}",
+							arg0.getImportedOntologyURI());
+				}
+			});
+			OWLOntology input = null;
+			try {
+				input = manager.loadOntologyFromOntologyDocument(IRI
+						.create(url));
+			} catch (OWLOntologyCreationIOException e) {
+				throw new WebApplicationException(e,
+						Response.Status.NOT_FOUND);
+			} catch (OWLOntologyCreationException e) {
+				throw new WebApplicationException(e,
+						Response.Status.INTERNAL_SERVER_ERROR);
+			}
+			if (getCurrentTask().equals("check")) {
+				log.debug("Task is 'check'");
+				boolean isConsistent;
+
+				try {
+					isConsistent = s.isConsistent(input);
+					if (isConsistent) {
+						log.debug("The input is consistent");
+						return Response.ok().build();
+					} else {
+						log.debug("The input is not consistent");
+						return Response.status(Status.NO_CONTENT).build();
+					}
+				} catch (ReasoningServiceException e) {
+					throw new WebApplicationException(e,
+							Response.Status.INTERNAL_SERVER_ERROR);
+				}
+			}
+			try {
+				OWLOntology output = manager.createOntology();
+				if (getCurrentTask().equals("classify")) {
+					log.debug("Task is 'classify'");
+					manager.addAxioms(output, s.classify(input));
+				} else if (getCurrentTask().equals("enrich")) {
+					log.debug("Task is 'enrich'");
+					manager.addAxioms(output, s.enrich(input));
+				}
+				if (isHTML(headers)) {
+					ByteArrayOutputStream out = new ByteArrayOutputStream();
+					manager.saveOntology(output,
+							new ManchesterOWLSyntaxOntologyFormat(), out);
+					return Response.ok(
+							new Viewable("result",
+									new ReasoningPrettyResultResource(context,
+											uriInfo, out)), TEXT_HTML).build();
+				} else {
+					return Response.ok(output).build();
+				}
+			} catch (ReasoningServiceException e) {
+				throw new WebApplicationException(e,
+						Response.Status.INTERNAL_SERVER_ERROR);
+			} catch (InconsistentInputException e) {
+				log.debug("The input is not consistent");
+				return Response.status(Status.NO_CONTENT).build();
+			} catch (OWLOntologyCreationException e) {
+				throw new WebApplicationException(e,
+						Response.Status.INTERNAL_SERVER_ERROR);
+			} catch (OWLOntologyStorageException e) {
+				throw new WebApplicationException(e,
+						Response.Status.INTERNAL_SERVER_ERROR);
+			}
 		}
 		throw new WebApplicationException(new Exception(
 				"Unsupported implementation"),

Modified: incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/index.ftl
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/index.ftl?rev=1160609&r1=1160608&r2=1160609&view=diff
==============================================================================
--- incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/index.ftl (original)
+++ incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/index.ftl Tue Aug 23 10:40:29 2011
@@ -19,17 +19,14 @@
 <@common.page title="Apache Stanbol Reasoners: Service /${it.currentService.path}/${it.currentTask}" hasrestapi=false> 
 		
  <div class="panel" id="webview">
-	<p><em>Service type:</em> ${it.currentService.class.name}</p>
-	<p><em>Path:</em> ${it.currentService.path}</p>
-	<p><em>Task:</em> ${it.currentTask}</p>
+	<p><b>Service type:</b> ${it.currentService.class.name}</p>
+	<p><b>Path:</b> ${it.currentService.path}</p>
+	<p><b>Task:</b> ${it.currentTask}</p>
+	
+	<p><em>To test the service, you can send a URL</em></p>
+	<form method="GET">
+	<p><b>URL:</b> <input type="text" name="url" size="80"/> <input type="submit" value="Send"/></p>
+	</form>
  </div>
-
-    <#-- We disable this at the moment -->
-    <!--
-    <div class="panel" id="restapi" style="display: none;">
-          
-    </div>
-    -->
-
   </...@common.page>
 </#escape>
\ No newline at end of file

Copied: incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/result.ftl (from r1160332, incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/jena-model.ftl)
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/result.ftl?p2=incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/result.ftl&p1=incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/jena-model.ftl&r1=1160332&r2=1160609&rev=1160609&view=diff
==============================================================================
--- incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/jena-model.ftl (original)
+++ incubator/stanbol/branches/jena-reasoners/reasoners/web/src/main/resources/org/apache/stanbol/reasoners/web/templates/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource/result.ftl Tue Aug 23 10:40:29 2011
@@ -14,13 +14,15 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
+<#import "/imports/common.ftl" as common>
 <#escape x as x?html>
-<html>
-<head></head>
-<body>
+<@common.page title="Apache Stanbol Reasoners: Result" hasrestapi=false> 
+		
+ <div class="panel">
 <pre>
-${it}
+${it.result}
 </pre>
-</body>
-</html>
+ </div>
+
+  </...@common.page>
 </#escape>
\ No newline at end of file