Search in sources :

Example 11 with NoSuchRecipeException

use of org.apache.stanbol.rules.base.api.NoSuchRecipeException in project stanbol by apache.

the class RefactorResource method performRefactoringLazyCreateGraph.

@GET
public Response performRefactoringLazyCreateGraph(@QueryParam("recipe") String recipe, @QueryParam("input-graph") String inputGraph, @QueryParam("output-graph") String outputGraph, @Context HttpHeaders headers) {
    log.info("recipe: {}", recipe);
    log.info("input-graph: {}", inputGraph);
    log.info("output-graph: {}", outputGraph);
    IRI recipeID = new IRI(recipe);
    IRI inputGraphID = new IRI(inputGraph);
    IRI outputGraphID = new IRI(outputGraph);
    // Refactorer semionRefactorer = semionManager.getRegisteredRefactorer();
    ResponseBuilder responseBuilder = null;
    try {
        refactorer.graphRefactoring(outputGraphID, inputGraphID, recipeID);
        responseBuilder = Response.ok();
    } catch (RefactoringException e) {
        // refactoring exceptions are re-thrown
        log.error(e.getMessage(), e);
        throw new WebApplicationException(e, INTERNAL_SERVER_ERROR);
    } catch (NoSuchRecipeException e) {
        log.error(e.getMessage(), e);
        responseBuilder = Response.status(NOT_FOUND);
    }
    MediaType mediaType = MediaTypeUtil.getAcceptableMediaType(headers, null);
    if (mediaType != null)
        responseBuilder.header(HttpHeaders.CONTENT_TYPE, mediaType);
    //        addCORSOrigin(servletContext, responseBuilder, headers);
    return responseBuilder.build();
}
Also used : IRI(org.apache.clerezza.commons.rdf.IRI) WebApplicationException(javax.ws.rs.WebApplicationException) NoSuchRecipeException(org.apache.stanbol.rules.base.api.NoSuchRecipeException) MediaType(javax.ws.rs.core.MediaType) RefactoringException(org.apache.stanbol.rules.refactor.api.RefactoringException) ResponseBuilder(javax.ws.rs.core.Response.ResponseBuilder) GET(javax.ws.rs.GET)

Example 12 with NoSuchRecipeException

use of org.apache.stanbol.rules.base.api.NoSuchRecipeException in project stanbol by apache.

the class RefactorResource method performRefactoring.

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(value = { TURTLE, RDF_XML, MANCHESTER_OWL, FUNCTIONAL_OWL, OWL_XML, RDF_JSON, X_TURTLE })
public Response performRefactoring(MultiPartBody data, @Context HttpHeaders headers) {
    String recipe = null;
    InputStream input = null;
    if (data.getTextParameterValues("recipe") != null) {
        recipe = data.getTextParameterValues("recipe")[0];
    }
    if (data.getFormFileParameterValues("input") != null) {
        input = new ByteArrayInputStream(data.getFormFileParameterValues("input")[0].getContent());
    }
    if (recipe == null || input == null) {
        throw new WebApplicationException(BAD_REQUEST);
    }
    // Refactorer semionRefactorer = semionManager.getRegisteredRefactorer();
    ResponseBuilder rb;
    Recipe rcp;
    try {
        URI uri = new URI(recipe);
        if (uri != null && uri.getScheme() == null) {
            recipe = "urn:" + recipe;
            log.info("The recipe ID is a URI without scheme. The ID is set to " + recipe);
        }
        IRI recipeID = new IRI(recipe);
        rcp = ruleStore.getRecipe(recipeID);
        OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
        OWLOntology inputOntology = manager.loadOntologyFromOntologyDocument(input);
        Graph tripleCollection = refactorer.graphRefactoring(OWLAPIToClerezzaConverter.owlOntologyToClerezzaGraph(inputOntology), rcp);
        OWLOntology outputOntology = OWLAPIToClerezzaConverter.clerezzaGraphToOWLOntology(tripleCollection);
        rb = Response.ok(outputOntology);
        MediaType mediaType = MediaTypeUtil.getAcceptableMediaType(headers, null);
        if (mediaType != null)
            rb.header(HttpHeaders.CONTENT_TYPE, mediaType);
    } catch (NoSuchRecipeException e) {
        rb = Response.status(NOT_FOUND);
        log.error(e.getMessage(), e);
    } catch (RecipeConstructionException e) {
        rb = Response.status(NO_CONTENT);
        log.error(e.getMessage(), e);
    } catch (OWLOntologyCreationException e) {
        rb = Response.status(PRECONDITION_FAILED);
        log.error(e.getMessage(), e);
    } catch (RefactoringException e) {
        rb = Response.status(INTERNAL_SERVER_ERROR);
        log.error(e.getMessage(), e);
    } catch (URISyntaxException e) {
        rb = Response.status(NOT_ACCEPTABLE);
        log.error(e.getMessage(), e);
    }
    //        addCORSOrigin(servletContext, rb, headers);
    return rb.build();
}
Also used : IRI(org.apache.clerezza.commons.rdf.IRI) WebApplicationException(javax.ws.rs.WebApplicationException) Recipe(org.apache.stanbol.rules.base.api.Recipe) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) NoSuchRecipeException(org.apache.stanbol.rules.base.api.NoSuchRecipeException) URISyntaxException(java.net.URISyntaxException) URI(java.net.URI) RecipeConstructionException(org.apache.stanbol.rules.base.api.RecipeConstructionException) Graph(org.apache.clerezza.commons.rdf.Graph) OWLOntologyCreationException(org.semanticweb.owlapi.model.OWLOntologyCreationException) ByteArrayInputStream(java.io.ByteArrayInputStream) OWLOntology(org.semanticweb.owlapi.model.OWLOntology) MediaType(javax.ws.rs.core.MediaType) OWLOntologyManager(org.semanticweb.owlapi.model.OWLOntologyManager) RefactoringException(org.apache.stanbol.rules.refactor.api.RefactoringException) ResponseBuilder(javax.ws.rs.core.Response.ResponseBuilder) POST(javax.ws.rs.POST) Consumes(javax.ws.rs.Consumes) Produces(javax.ws.rs.Produces)

Example 13 with NoSuchRecipeException

use of org.apache.stanbol.rules.base.api.NoSuchRecipeException 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();
}
Also used : IRI(org.apache.clerezza.commons.rdf.IRI) RuleList(org.apache.stanbol.rules.base.api.util.RuleList) Recipe(org.apache.stanbol.rules.base.api.Recipe) NoSuchRecipeException(org.apache.stanbol.rules.base.api.NoSuchRecipeException) URISyntaxException(java.net.URISyntaxException) URI(java.net.URI) RecipeConstructionException(org.apache.stanbol.rules.base.api.RecipeConstructionException) NoSuchRuleInRecipeException(org.apache.stanbol.rules.base.api.NoSuchRuleInRecipeException) RecipeImpl(org.apache.stanbol.rules.manager.RecipeImpl) Viewable(org.apache.stanbol.commons.web.viewable.Viewable) Rule(org.apache.stanbol.rules.base.api.Rule) ResponseBuilder(javax.ws.rs.core.Response.ResponseBuilder) Path(javax.ws.rs.Path) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET)

Example 14 with NoSuchRecipeException

use of org.apache.stanbol.rules.base.api.NoSuchRecipeException 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();
}
Also used : IRI(org.apache.clerezza.commons.rdf.IRI) WebApplicationException(javax.ws.rs.WebApplicationException) ByteArrayInputStream(java.io.ByteArrayInputStream) Recipe(org.apache.stanbol.rules.base.api.Recipe) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) NoSuchRecipeException(org.apache.stanbol.rules.base.api.NoSuchRecipeException) URISyntaxException(java.net.URISyntaxException) ResponseBuilder(javax.ws.rs.core.Response.ResponseBuilder) URI(java.net.URI) RecipeConstructionException(org.apache.stanbol.rules.base.api.RecipeConstructionException) Path(javax.ws.rs.Path) POST(javax.ws.rs.POST) Consumes(javax.ws.rs.Consumes) Produces(javax.ws.rs.Produces)

Example 15 with NoSuchRecipeException

use of org.apache.stanbol.rules.base.api.NoSuchRecipeException 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);
    }
}
Also used : IRI(org.apache.clerezza.commons.rdf.IRI) Recipe(org.apache.stanbol.rules.base.api.Recipe) NoSuchRecipeException(org.apache.stanbol.rules.base.api.NoSuchRecipeException) RefactoringException(org.apache.stanbol.rules.refactor.api.RefactoringException) RecipeConstructionException(org.apache.stanbol.rules.base.api.RecipeConstructionException) Test(org.junit.Test)

Aggregations

NoSuchRecipeException (org.apache.stanbol.rules.base.api.NoSuchRecipeException)19 RecipeConstructionException (org.apache.stanbol.rules.base.api.RecipeConstructionException)17 IRI (org.apache.clerezza.commons.rdf.IRI)16 Recipe (org.apache.stanbol.rules.base.api.Recipe)15 ResponseBuilder (javax.ws.rs.core.Response.ResponseBuilder)8 Graph (org.apache.clerezza.commons.rdf.Graph)7 URI (java.net.URI)6 URISyntaxException (java.net.URISyntaxException)6 Path (javax.ws.rs.Path)6 Produces (javax.ws.rs.Produces)6 GET (javax.ws.rs.GET)5 NoSuchRuleInRecipeException (org.apache.stanbol.rules.base.api.NoSuchRuleInRecipeException)5 Rule (org.apache.stanbol.rules.base.api.Rule)5 RuleList (org.apache.stanbol.rules.base.api.util.RuleList)5 RefactoringException (org.apache.stanbol.rules.refactor.api.RefactoringException)5 ParseException (org.apache.clerezza.rdf.core.sparql.ParseException)4 ResultSet (org.apache.clerezza.rdf.core.sparql.ResultSet)4 SolutionMapping (org.apache.clerezza.rdf.core.sparql.SolutionMapping)4 SelectQuery (org.apache.clerezza.rdf.core.sparql.query.SelectQuery)4 UnionGraph (org.apache.clerezza.rdf.utils.UnionGraph)4