use of org.apache.stanbol.rules.base.api.Recipe in project stanbol by apache.
the class RulesResource method showRecipe.
@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 {
URI uri = new URI(recipeID);
if (uri.getScheme() == null) {
recipeID = "urn:" + recipeID;
log.info("The recipe ID is a URI without scheme. The ID is set to " + recipeID);
}
recipe = ruleStore.getRecipe(new IRI(recipeID));
if (ruleID != null && !ruleID.isEmpty()) {
rule = ruleStore.getRule(recipe, new IRI(ruleID));
RuleList ruleList = new RuleList();
ruleList.add(rule);
recipe = new RecipeImpl(recipe.getRecipeID(), recipe.getRecipeDescription(), ruleList);
}
responseBuilder = Response.ok(new Viewable("rules", new RulesPrettyPrintResource(uriInfo, recipe)));
} 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);
} catch (URISyntaxException e) {
log.error(e.getMessage(), e);
responseBuilder = Response.status(Status.NOT_ACCEPTABLE);
}
// addCORSOrigin(servletContext, responseBuilder, headers);
return responseBuilder.build();
}
use of org.apache.stanbol.rules.base.api.Recipe in project stanbol by apache.
the class RulesResource method addRulesToRecipe.
/**
* Add rules to a recipe. An optional description can be provided to the rules.
*
* @param recipe
* {A string contains the IRI of the recipe to be added}
* @param rules
* {A string contains the rules in Stanbol syntax}
* @param description
* {A string contains a description of the rule}
* @param headers
* {The {@link HttpHeaders}
* @return Return: <br/>
* 200 The recipe has been added<br/>
* 409 The recipe has not been added<br/>
* 500 Some error occurred
*/
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(value = { KRFormat.TEXT_PLAIN, KRFormat.RDF_JSON })
@Path("/recipe/{recipe:.+}")
public Response addRulesToRecipe(@PathParam(value = "recipe") String recipe, MultiPartBody data, @Context HttpHeaders headers) {
String description = null;
InputStream rules = null;
if (data.getTextParameterValues("description") != null) {
description = data.getTextParameterValues("description")[0];
}
if (data.getFormFileParameterValues("rules") != null) {
rules = new ByteArrayInputStream(data.getFormFileParameterValues("rules")[0].getContent());
}
if (recipe == null || rules == null || description == null) {
throw new WebApplicationException(BAD_REQUEST);
}
ResponseBuilder responseBuilder;
Recipe rcp;
try {
URI uri = new URI(recipe);
if (uri.getScheme() == null) {
recipe = "urn:" + recipe;
log.info("The recipe ID is a URI without scheme. The ID is set to " + recipe);
}
rcp = ruleStore.getRecipe(new IRI(recipe));
ruleStore.addRulesToRecipe(rcp, rules, description);
responseBuilder = Response.ok();
} 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.INTERNAL_SERVER_ERROR);
} catch (URISyntaxException e) {
log.error(e.getMessage(), e);
responseBuilder = Response.status(Status.NOT_ACCEPTABLE);
}
// addCORSOrigin(servletContext, responseBuilder, headers);
return responseBuilder.build();
}
use of org.apache.stanbol.rules.base.api.Recipe in project stanbol by apache.
the class RefactoringTest method easyRefactoringTest.
@Test
public void easyRefactoringTest() throws Exception {
Recipe recipe = store.getRecipe(new IRI("http://incubator.apache.com/stanbol/rules/refactor/test/recipeA"));
try {
Graph tc = refactorer.graphRefactoring(tripleCollection, recipe);
Assert.assertNotNull(tc);
} catch (RefactoringException e) {
fail("Error while refactoring.");
}
}
use of org.apache.stanbol.rules.base.api.Recipe in project stanbol by apache.
the class RefactoringTest method refactoringWithARecipeWithNotSupportedAtoms.
@Test
public void refactoringWithARecipeWithNotSupportedAtoms() {
String separator = System.getProperty("line.separator");
// the localname atom is not supported by the clerezza adapter and should throw an exception.
String rule = "kres = <http://kres.iks-project.eu/ontology.owl#> . " + separator + "foaf = <http://xmlns.com/foaf/0.1/> . " + separator + "rule2[ is(kres:Person, ?x) . same(localname(?y), \"text\") -> is(foaf:Person, ?x) ]";
try {
Recipe recipe = store.getRecipe(new IRI("http://incubator.apache.com/stanbol/rules/refactor/test/recipeA"));
recipe = store.addRulesToRecipe(recipe, rule, "Test");
refactorer.graphRefactoring(new IRI("http://incubator.apache.com/stanbol/rules/refactor/test/refactoredGraph"), new IRI("http://incubator.apache.com/stanbol/rules/refactor/test/graph"), new IRI("http://incubator.apache.com/stanbol/rules/refactor/test/recipeA"));
} catch (NoSuchRecipeException e) {
Assert.fail();
} catch (RecipeConstructionException e) {
Assert.fail();
} catch (RefactoringException e) {
Assert.assertTrue(e.getMessage(), true);
}
}
use of org.apache.stanbol.rules.base.api.Recipe in project stanbol by apache.
the class RuleStoreTest method getNotExistingRuleByIdInRecipeTest.
private void getNotExistingRuleByIdInRecipeTest() throws Exception {
Recipe recipe = store.getRecipe(new IRI("http://incubator.apache.com/stanbol/rules/test/recipeA"));
try {
recipe.getRule(new IRI("http://foo.org/ruleX"));
Assert.fail();
} catch (NoSuchRuleInRecipeException e) {
Assert.assertTrue(true);
}
}
Aggregations