You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by an...@apache.org on 2012/03/29 00:58:53 UTC
svn commit: r1306634 - in
/incubator/stanbol/trunk/rules/web/src/main/java/org/apache/stanbol/rules/web:
resources/RulesResource.java writers/RecipeWriter.java
Author: anuzzolese
Date: Wed Mar 28 22:58:52 2012
New Revision: 1306634
URL: http://svn.apache.org/viewvc?rev=1306634&view=rev
Log:
[STANBOL-560] Added the plain text and HTML serializations for recipes.
Modified:
incubator/stanbol/trunk/rules/web/src/main/java/org/apache/stanbol/rules/web/resources/RulesResource.java
incubator/stanbol/trunk/rules/web/src/main/java/org/apache/stanbol/rules/web/writers/RecipeWriter.java
Modified: incubator/stanbol/trunk/rules/web/src/main/java/org/apache/stanbol/rules/web/resources/RulesResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/web/src/main/java/org/apache/stanbol/rules/web/resources/RulesResource.java?rev=1306634&r1=1306633&r2=1306634&view=diff
==============================================================================
--- incubator/stanbol/trunk/rules/web/src/main/java/org/apache/stanbol/rules/web/resources/RulesResource.java (original)
+++ incubator/stanbol/trunk/rules/web/src/main/java/org/apache/stanbol/rules/web/resources/RulesResource.java Wed Mar 28 22:58:52 2012
@@ -197,7 +197,7 @@ public class RulesResource extends BaseS
@GET
@Path("/recipe/{recipe:.+}")
@Produces(value = {KRFormat.RDF_XML, KRFormat.TURTLE, KRFormat.OWL_XML, KRFormat.RDF_JSON,
- KRFormat.FUNCTIONAL_OWL, KRFormat.MANCHESTER_OWL})
+ KRFormat.FUNCTIONAL_OWL, KRFormat.MANCHESTER_OWL, MediaType.TEXT_PLAIN})
public Response getRule(@PathParam("recipe") String recipeID,
@QueryParam("rule") String ruleID,
@Context HttpHeaders headers) {
@@ -233,6 +233,45 @@ public class RulesResource extends BaseS
addCORSOrigin(servletContext, responseBuilder, headers);
return responseBuilder.build();
}
+
+ @GET
+ @Path("/recipe/{recipe:.+}")
+ @Produces(value = {MediaType.TEXT_HTML})
+ public Response showRecipe(@PathParam("recipe") String recipeID,
+ @QueryParam("rule") String ruleID,
+ @Context HttpHeaders headers) {
+
+ Recipe recipe;
+ Rule rule;
+
+ ResponseBuilder responseBuilder;
+ try {
+ recipe = ruleStore.getRecipe(new UriRef(recipeID));
+
+ if (ruleID != null && !ruleID.isEmpty()) {
+ rule = ruleStore.getRule(recipe, new UriRef(ruleID));
+ RuleList ruleList = new RuleList();
+ ruleList.add(rule);
+
+ recipe = new RecipeImpl(recipe.getRecipeID(), recipe.getRecipeDescription(), ruleList);
+ }
+
+ responseBuilder = Response.ok(new Viewable("rules", recipe.toString()));
+
+ } catch (NoSuchRecipeException e) {
+ log.error(e.getMessage(), e);
+ responseBuilder = Response.status(Status.NOT_FOUND);
+ } catch (RecipeConstructionException e) {
+ log.error(e.getMessage(), e);
+ responseBuilder = Response.status(Status.NO_CONTENT);
+ } catch (NoSuchRuleInRecipeException e) {
+ log.error(e.getMessage(), e);
+ responseBuilder = Response.status(Status.NOT_FOUND);
+ }
+
+ addCORSOrigin(servletContext, responseBuilder, headers);
+ return responseBuilder.build();
+ }
/**
* This method implements a REST service that allows to create a new empty recipe in the store with a
Modified: incubator/stanbol/trunk/rules/web/src/main/java/org/apache/stanbol/rules/web/writers/RecipeWriter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/web/src/main/java/org/apache/stanbol/rules/web/writers/RecipeWriter.java?rev=1306634&r1=1306633&r2=1306634&view=diff
==============================================================================
--- incubator/stanbol/trunk/rules/web/src/main/java/org/apache/stanbol/rules/web/writers/RecipeWriter.java (original)
+++ incubator/stanbol/trunk/rules/web/src/main/java/org/apache/stanbol/rules/web/writers/RecipeWriter.java Wed Mar 28 22:58:52 2012
@@ -69,7 +69,7 @@ import org.slf4j.LoggerFactory;
@Provider
@Produces({KRFormat.RDF_XML, KRFormat.OWL_XML, KRFormat.MANCHESTER_OWL, KRFormat.FUNCTIONAL_OWL,
- KRFormat.TURTLE, KRFormat.RDF_JSON})
+ KRFormat.TURTLE, KRFormat.RDF_JSON, MediaType.TEXT_PLAIN})
public class RecipeWriter implements MessageBodyWriter<Recipe> {
protected Serializer serializer;
@@ -119,139 +119,152 @@ public class RecipeWriter implements Mes
log.debug("Rendering the list of recipes.");
- OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
- OWLDataFactory factory = OWLManager.getOWLDataFactory();
-
- OWLOntology ontology;
- try {
- ontology = manager.createOntology();
-
- RuleList rules = recipe.getRuleList();
-
- UriRef recipeID = recipe.getRecipeID();
-
- String recipeURI = recipeID.toString().replace("<", "").replace(">", "");
- IRI recipeIRI = IRI.create(recipeURI);
- OWLIndividual recipeIndividual = factory.getOWLNamedIndividual(recipeIRI);
-
- String descriptionURI = Symbols.description.toString().replace("<", "").replace(">", "");
- IRI descriptionIRI = IRI.create(descriptionURI);
- OWLDataProperty descriptionProperty = factory.getOWLDataProperty(descriptionIRI);
-
- OWLAxiom axiom;
+ if(mediaType.toString().equals(MediaType.TEXT_PLAIN)){
+ String recipeString = recipe.toString();
- String recipeDescription = recipe.getRecipeDescription();
- if(recipeDescription != null){
- axiom = factory.getOWLDataPropertyAssertionAxiom(descriptionProperty, recipeIndividual,
- recipeDescription);
- manager.addAxiom(ontology, axiom);
- }
+ out.write(recipeString.getBytes());
+ }
+ else if(mediaType.toString().equals(MediaType.TEXT_HTML)){
+ String recipeString = recipe.toString();
- if(rules != null){
- for (Rule rule : rules) {
- UriRef ruleID = rule.getRuleID();
- String ruleName = rule.getRuleName();
- String ruleDescription = rule.getDescription();
-
- String ruleURI = ruleID.toString().replace("<", "").replace(">", "");
-
- String ruleNameURI = Symbols.ruleName.toString().replace("<", "").replace(">", "");
-
- String ruleBodyURI = Symbols.ruleBody.toString().replace("<", "").replace(">", "");
- String ruleHeadURI = Symbols.ruleHead.toString().replace("<", "").replace(">", "");
- String hasRuleURI = Symbols.hasRule.toString().replace("<", "").replace(">", "");
-
- String ruleContent = rule.toString();
-
- String[] ruleParts = ruleContent.split("\\->");
-
- IRI ruleIRI = IRI.create(ruleURI);
-
- IRI ruleNameIRI = IRI.create(ruleNameURI);
- IRI ruleBodyIRI = IRI.create(ruleBodyURI);
- IRI ruleHeadIRI = IRI.create(ruleHeadURI);
- IRI hasRuleIRI = IRI.create(hasRuleURI);
-
- OWLIndividual ruleIndividual = factory.getOWLNamedIndividual(ruleIRI);
-
- OWLObjectProperty hasRule = factory.getOWLObjectProperty(hasRuleIRI);
- OWLDataProperty nameProperty = factory.getOWLDataProperty(ruleNameIRI);
- OWLDataProperty ruleBodyProperty = factory.getOWLDataProperty(ruleBodyIRI);
- OWLDataProperty ruleHeadProperty = factory.getOWLDataProperty(ruleHeadIRI);
-
- // add the name to the rule individual
- axiom = factory.getOWLDataPropertyAssertionAxiom(nameProperty, ruleIndividual, ruleName);
+ out.write(recipeString.getBytes());
+ }
+
+ else{
+ OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
+ OWLDataFactory factory = OWLManager.getOWLDataFactory();
+
+ OWLOntology ontology;
+ try {
+ ontology = manager.createOntology();
+
+ RuleList rules = recipe.getRuleList();
+
+ UriRef recipeID = recipe.getRecipeID();
+
+ String recipeURI = recipeID.toString().replace("<", "").replace(">", "");
+ IRI recipeIRI = IRI.create(recipeURI);
+ OWLIndividual recipeIndividual = factory.getOWLNamedIndividual(recipeIRI);
+
+ String descriptionURI = Symbols.description.toString().replace("<", "").replace(">", "");
+ IRI descriptionIRI = IRI.create(descriptionURI);
+ OWLDataProperty descriptionProperty = factory.getOWLDataProperty(descriptionIRI);
+
+ OWLAxiom axiom;
+
+ String recipeDescription = recipe.getRecipeDescription();
+ if(recipeDescription != null){
+ axiom = factory.getOWLDataPropertyAssertionAxiom(descriptionProperty, recipeIndividual,
+ recipeDescription);
manager.addAxiom(ontology, axiom);
-
- // add the description to the rule individual
- if(ruleDescription != null){
- axiom = factory.getOWLDataPropertyAssertionAxiom(descriptionProperty, ruleIndividual,
- ruleDescription);
+ }
+
+ if(rules != null){
+ for (Rule rule : rules) {
+ UriRef ruleID = rule.getRuleID();
+ String ruleName = rule.getRuleName();
+ String ruleDescription = rule.getDescription();
+
+ String ruleURI = ruleID.toString().replace("<", "").replace(">", "");
+
+ String ruleNameURI = Symbols.ruleName.toString().replace("<", "").replace(">", "");
+
+ String ruleBodyURI = Symbols.ruleBody.toString().replace("<", "").replace(">", "");
+ String ruleHeadURI = Symbols.ruleHead.toString().replace("<", "").replace(">", "");
+ String hasRuleURI = Symbols.hasRule.toString().replace("<", "").replace(">", "");
+
+ String ruleContent = rule.toString();
+
+ String[] ruleParts = ruleContent.split("\\->");
+
+ IRI ruleIRI = IRI.create(ruleURI);
+
+ IRI ruleNameIRI = IRI.create(ruleNameURI);
+ IRI ruleBodyIRI = IRI.create(ruleBodyURI);
+ IRI ruleHeadIRI = IRI.create(ruleHeadURI);
+ IRI hasRuleIRI = IRI.create(hasRuleURI);
+
+ OWLIndividual ruleIndividual = factory.getOWLNamedIndividual(ruleIRI);
+
+ OWLObjectProperty hasRule = factory.getOWLObjectProperty(hasRuleIRI);
+ OWLDataProperty nameProperty = factory.getOWLDataProperty(ruleNameIRI);
+ OWLDataProperty ruleBodyProperty = factory.getOWLDataProperty(ruleBodyIRI);
+ OWLDataProperty ruleHeadProperty = factory.getOWLDataProperty(ruleHeadIRI);
+
+ // add the name to the rule individual
+ axiom = factory.getOWLDataPropertyAssertionAxiom(nameProperty, ruleIndividual, ruleName);
+ manager.addAxiom(ontology, axiom);
+
+ // add the description to the rule individual
+ if(ruleDescription != null){
+ axiom = factory.getOWLDataPropertyAssertionAxiom(descriptionProperty, ruleIndividual,
+ ruleDescription);
+ manager.addAxiom(ontology, axiom);
+ }
+
+ // add the rule body to the rule individual
+ axiom = factory.getOWLDataPropertyAssertionAxiom(ruleBodyProperty, ruleIndividual,
+ ruleParts[0]);
manager.addAxiom(ontology, axiom);
+
+ // add the rule head to the rule individual
+ axiom = factory.getOWLDataPropertyAssertionAxiom(ruleHeadProperty, ruleIndividual,
+ ruleParts[1]);
+ manager.addAxiom(ontology, axiom);
+
+ // bind the rule to the recipe
+ axiom = factory.getOWLObjectPropertyAssertionAxiom(hasRule, recipeIndividual, ruleIndividual);
+ manager.addAxiom(ontology, axiom);
+
}
+ }
- // add the rule body to the rule individual
- axiom = factory.getOWLDataPropertyAssertionAxiom(ruleBodyProperty, ruleIndividual,
- ruleParts[0]);
- manager.addAxiom(ontology, axiom);
+ /*
+ * Write the ontology with the list of recipes
+ */
+
+ if (mediaType.toString().equals(KRFormat.RDF_XML)) {
+
+ try {
+ manager.saveOntology(ontology, new RDFXMLOntologyFormat(), out);
+ } catch (OWLOntologyStorageException e) {
+ log.error("Failed to store ontology for rendering.", e);
+ }
+ } else if (mediaType.toString().equals(KRFormat.OWL_XML)) {
+ try {
+ manager.saveOntology(ontology, new OWLXMLOntologyFormat(), out);
+ } catch (OWLOntologyStorageException e) {
+ log.error("Failed to store ontology for rendering.", e);
+ }
+ } else if (mediaType.toString().equals(KRFormat.MANCHESTER_OWL)) {
+ try {
+ manager.saveOntology(ontology, new ManchesterOWLSyntaxOntologyFormat(), out);
+ } catch (OWLOntologyStorageException e) {
+ log.error("Failed to store ontology for rendering.", e);
+ }
+ } else if (mediaType.toString().equals(KRFormat.FUNCTIONAL_OWL)) {
+ try {
+ manager.saveOntology(ontology, new OWLFunctionalSyntaxOntologyFormat(), out);
+ } catch (OWLOntologyStorageException e) {
+ log.error("Failed to store ontology for rendering.", e);
+ }
+ } else if (mediaType.toString().equals(KRFormat.TURTLE)) {
+ try {
+ manager.saveOntology(ontology, new TurtleOntologyFormat(), out);
+ } catch (OWLOntologyStorageException e) {
+ log.error("Failed to store ontology for rendering.", e);
+ }
+ } else if (mediaType.toString().equals(KRFormat.RDF_JSON)) {
- // add the rule head to the rule individual
- axiom = factory.getOWLDataPropertyAssertionAxiom(ruleHeadProperty, ruleIndividual,
- ruleParts[1]);
- manager.addAxiom(ontology, axiom);
+ TripleCollection mGraph = OWLAPIToClerezzaConverter.owlOntologyToClerezzaMGraph(ontology);
- // bind the rule to the recipe
- axiom = factory.getOWLObjectPropertyAssertionAxiom(hasRule, recipeIndividual, ruleIndividual);
- manager.addAxiom(ontology, axiom);
+ RdfJsonSerializingProvider provider = new RdfJsonSerializingProvider();
+ provider.serialize(out, mGraph, SupportedFormat.RDF_JSON);
}
+ } catch (OWLOntologyCreationException e1) {
+ log.error("An error occurred.", e1);
}
-
- /*
- * Write the ontology with the list of recipes
- */
-
- if (mediaType.toString().equals(KRFormat.RDF_XML)) {
-
- try {
- manager.saveOntology(ontology, new RDFXMLOntologyFormat(), out);
- } catch (OWLOntologyStorageException e) {
- log.error("Failed to store ontology for rendering.", e);
- }
- } else if (mediaType.toString().equals(KRFormat.OWL_XML)) {
- try {
- manager.saveOntology(ontology, new OWLXMLOntologyFormat(), out);
- } catch (OWLOntologyStorageException e) {
- log.error("Failed to store ontology for rendering.", e);
- }
- } else if (mediaType.toString().equals(KRFormat.MANCHESTER_OWL)) {
- try {
- manager.saveOntology(ontology, new ManchesterOWLSyntaxOntologyFormat(), out);
- } catch (OWLOntologyStorageException e) {
- log.error("Failed to store ontology for rendering.", e);
- }
- } else if (mediaType.toString().equals(KRFormat.FUNCTIONAL_OWL)) {
- try {
- manager.saveOntology(ontology, new OWLFunctionalSyntaxOntologyFormat(), out);
- } catch (OWLOntologyStorageException e) {
- log.error("Failed to store ontology for rendering.", e);
- }
- } else if (mediaType.toString().equals(KRFormat.TURTLE)) {
- try {
- manager.saveOntology(ontology, new TurtleOntologyFormat(), out);
- } catch (OWLOntologyStorageException e) {
- log.error("Failed to store ontology for rendering.", e);
- }
- } else if (mediaType.toString().equals(KRFormat.RDF_JSON)) {
-
- TripleCollection mGraph = OWLAPIToClerezzaConverter.owlOntologyToClerezzaMGraph(ontology);
-
- RdfJsonSerializingProvider provider = new RdfJsonSerializingProvider();
- provider.serialize(out, mGraph, SupportedFormat.RDF_JSON);
-
- }
- } catch (OWLOntologyCreationException e1) {
- log.error("An error occurred.", e1);
}
out.flush();