You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by rw...@apache.org on 2012/03/05 15:31:29 UTC

svn commit: r1297071 [2/2] - in /incubator/stanbol/trunk: enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/rdf/ enhancer/generic/servicesapi/src/main/resources/ enhancer/jersey/src/main/java/org/apache/stanbol/enhancer...

Modified: incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/EnhancerRootResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/EnhancerRootResource.java?rev=1297071&r1=1297070&r2=1297071&view=diff
==============================================================================
--- incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/EnhancerRootResource.java (original)
+++ incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/EnhancerRootResource.java Mon Mar  5 14:31:28 2012
@@ -17,69 +17,48 @@
 package org.apache.stanbol.enhancer.jersey.resource;
 
 import static javax.ws.rs.core.MediaType.APPLICATION_FORM_URLENCODED;
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+import static javax.ws.rs.core.MediaType.APPLICATION_XML;
 import static javax.ws.rs.core.MediaType.TEXT_HTML;
-import static javax.ws.rs.core.MediaType.TEXT_PLAIN;
-import static javax.ws.rs.core.MediaType.WILDCARD;
-import static org.apache.stanbol.enhancer.jersey.utils.EnhancementPropertiesHelper.*;
+import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.N3;
+import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.N_TRIPLE;
+import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.RDF_JSON;
+import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.RDF_XML;
+import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.TURTLE;
+import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.X_TURTLE;
 import static org.apache.stanbol.commons.web.base.CorsHelper.addCORSOrigin;
-import static org.apache.stanbol.commons.web.base.CorsHelper.enableCORS;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import static org.apache.stanbol.enhancer.jersey.utils.EnhancerUtils.addActiveChains;
+import static org.apache.stanbol.enhancer.jersey.utils.EnhancerUtils.addActiveEngines;
 
 import javax.servlet.ServletContext;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.FormParam;
 import javax.ws.rs.GET;
-import javax.ws.rs.OPTIONS;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 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.HttpHeaders;
-import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.ResponseBuilder;
 
-import org.apache.clerezza.rdf.core.Graph;
 import org.apache.clerezza.rdf.core.MGraph;
-import org.apache.clerezza.rdf.core.NonLiteral;
-import org.apache.clerezza.rdf.core.TripleCollection;
 import org.apache.clerezza.rdf.core.UriRef;
-import org.apache.clerezza.rdf.core.access.TcManager;
-import org.apache.clerezza.rdf.core.serializedform.Serializer;
-import org.apache.stanbol.commons.web.base.ContextHelper;
-import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
-import org.apache.stanbol.commons.web.base.utils.MediaTypeUtil;
-import org.apache.stanbol.enhancer.jersey.utils.EnhancementPropertiesHelper;
-import org.apache.stanbol.enhancer.servicesapi.Chain;
-import org.apache.stanbol.enhancer.servicesapi.ChainException;
-import org.apache.stanbol.enhancer.servicesapi.ChainManager;
-import org.apache.stanbol.enhancer.servicesapi.ContentItem;
-import org.apache.stanbol.enhancer.servicesapi.EngineException;
-import org.apache.stanbol.enhancer.servicesapi.EnhancementEngine;
-import org.apache.stanbol.enhancer.servicesapi.EnhancementEngineManager;
-import org.apache.stanbol.enhancer.servicesapi.EnhancementException;
-import org.apache.stanbol.enhancer.servicesapi.EnhancementJobManager;
-import org.apache.stanbol.enhancer.servicesapi.NoSuchPartException;
-import org.apache.stanbol.enhancer.servicesapi.helper.ExecutionPlanHelper;
-import org.apache.stanbol.enhancer.servicesapi.helper.InMemoryContentItem;
-import org.apache.stanbol.enhancer.servicesapi.rdf.ExecutionMetadata;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.clerezza.rdf.core.impl.SimpleMGraph;
+import org.apache.clerezza.rdf.core.impl.TripleImpl;
+import org.apache.clerezza.rdf.core.sparql.ParseException;
+import org.apache.clerezza.rdf.core.sparql.QueryParser;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.DescribeQuery;
+import org.apache.clerezza.rdf.core.sparql.query.Query;
+import org.apache.clerezza.rdf.ontologies.RDF;
+import org.apache.stanbol.enhancer.servicesapi.SparqlQueryEngine.SparqlQueryEngineException;
+import org.apache.stanbol.enhancer.servicesapi.rdf.Enhancer;
 
 import com.sun.jersey.api.view.Viewable;
 
+
 /**
  * RESTful interface to browse the list of available engines and allow to call them in a stateless,
  * synchronous way.
@@ -88,326 +67,60 @@ import com.sun.jersey.api.view.Viewable;
  * instead.
  */
 @Path("/enhancer")
-public class EnhancerRootResource extends BaseStanbolResource {
-
-    public final Logger log = LoggerFactory.getLogger(getClass());
-
-    protected EnhancementJobManager jobManager;
-
-    protected TcManager tcManager;
-
-    /**
-     * The chain. The default chain in this case, but might be set by sub-classes
-     */
-    protected Chain chain;
-    private LinkedHashSet<ExecutionNode> _executionNodes;
-    private LinkedHashSet<ExecutionNode> _activeNodes;
-    protected EnhancementEngineManager engineManager;
-    protected ChainManager chainManager;
-
-    protected Serializer serializer;
+public final class EnhancerRootResource extends AbstractEnhancerUiResource {
 
-    public EnhancerRootResource(@Context ServletContext context) {
-        // bind the job manager by looking it up from the servlet request context
-        jobManager = ContextHelper.getServiceFromContext(EnhancementJobManager.class, context);
-        tcManager = ContextHelper.getServiceFromContext(TcManager.class, context);
-        serializer = ContextHelper.getServiceFromContext(Serializer.class, context);
-        chainManager = ContextHelper.getServiceFromContext(ChainManager.class, context);
-        engineManager = ContextHelper.getServiceFromContext(EnhancementEngineManager.class, context);
-        chain = chainManager.getDefault();
+    public EnhancerRootResource(@Context ServletContext context){
+        super(null,context);
     }
-
-    public URI getServiceUrl() {
-        return uriInfo.getAbsolutePath();
-    }
-
-    @OPTIONS
-    public Response handleCorsPreflight(@Context HttpHeaders headers) {
-        ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers);
-        return res.build();
-    }
-
+    
     @GET
-    @Produces(TEXT_HTML)
-    public Response get(@Context HttpHeaders headers) {
-        ResponseBuilder res = Response.ok(new Viewable("index", this), TEXT_HTML);
-        addCORSOrigin(servletContext, res, headers);
+    @Produces(value={APPLICATION_JSON,N3,N_TRIPLE,RDF_JSON,RDF_XML,TURTLE,X_TURTLE})
+    public Response getEngines(@Context HttpHeaders headers){
+        MGraph graph = getEnhancerConfigGraph();
+        ResponseBuilder res = Response.ok(graph);
+        addCORSOrigin(servletContext,res, headers);
         return res.build();
     }
 
-    public boolean isEngineActive(String name) {
-        return engineManager.isEngine(name);
-    }
-
     /**
-     * Getter for the executionNodes
-     * 
-     * @return
+     * Creates the RDF graph for the current Stanbol Enhancer configuration
+     * @return the graph with the configuration
      */
-    public Set<ExecutionNode> getExecutionNodes() {
-        if (_executionNodes == null) {
-            Graph ep;
-            try {
-                ep = chain.getExecutionPlan();
-            } catch (ChainException e) {
-                ep = null;
-            }
-            if (ep != null) {
-                _executionNodes = new LinkedHashSet<ExecutionNode>();
-                Set<NonLiteral> processed = new HashSet<NonLiteral>();
-                Set<NonLiteral> next;
-                do {
-                    next = ExecutionPlanHelper.getExecutable(ep, processed);
-                    for (NonLiteral node : next) {
-                        _executionNodes.add(new ExecutionNode(ep, node));
-                    }
-                    processed.addAll(next);
-                } while (!next.isEmpty());
-            }
-        }
-        return _executionNodes;
+    private MGraph getEnhancerConfigGraph() {
+        String rootUrl = uriInfo.getBaseUriBuilder().path(getRootUrl()).build().toString();
+        UriRef enhancerResource = new UriRef(rootUrl+"enhancer");
+        MGraph graph = new SimpleMGraph();
+        graph.add(new TripleImpl(enhancerResource, RDF.type, Enhancer.ENHANCER));
+        addActiveEngines(engineManager, graph, rootUrl);
+        addActiveChains(chainManager, graph, rootUrl);
+        return graph;
     }
-
-    public Set<ExecutionNode> getActiveNodes() {
-        if (_activeNodes == null) {
-            Set<ExecutionNode> ens = getExecutionNodes();
-            if (ens != null) {
-                _activeNodes = new LinkedHashSet<ExecutionNode>();
-                for (ExecutionNode en : ens) {
-                    if (en.isEngineActive()) {
-                        _activeNodes.add(en);
-                    }
-                }
-            }
-        }
-        return _activeNodes;
-    }
-
-    // public EnhancementEngine getEngine(String name){
-    // return engineManager.getEngine(name);
-    // }
-    // public Map<String,EnhancementEngine> getActiveEngines() {
-    // Graph ep;
-    // try {
-    // ep = chain.getExecutionPlan();
-    // } catch (ChainException e) {
-    // return null;
-    // }
-    // Map<String,EnhancementEngine> active;
-    // if(ep != null){
-    // active = new HashMap<String,EnhancementEngine>();
-    // for(EnhancementEngine engine : ExecutionPlanHelper.getActiveEngines(engineManager, ep)){
-    // active.put(engine.getName(), engine);
-    // }
-    // } else {
-    // active = null;
-    // }
-    // return active;
-    // }
-
-    public Chain getChain() {
-        return chain;
-    }
-
-    public boolean isChainAvailable() {
-        Set<ExecutionNode> nodes = getExecutionNodes();
-        if (nodes == null) {
-            return false;
-        }
-        for (ExecutionNode node : getExecutionNodes()) {
-            if (!node.isOptional() && !node.isEngineActive()) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    public static String makeEngineId(EnhancementEngine engine) {
-        // TODO: add a property on engines to provided custom local ids and make
-        // this static method a method of the interface EnhancementEngine
-        String engineClassName = engine.getClass().getSimpleName();
-        String suffixToRemove = "EnhancementEngine";
-        if (engineClassName.endsWith(suffixToRemove)) {
-            engineClassName = engineClassName
-                    .substring(0, engineClassName.length() - suffixToRemove.length());
+    
+    @GET
+    @Path("/sparql")
+    @Consumes(APPLICATION_FORM_URLENCODED)
+    @Produces({TEXT_HTML + ";qs=2", "application/sparql-results+xml", "application/rdf+xml", APPLICATION_XML})
+    public Object sparql(@QueryParam(value = "query") String sparqlQuery) throws SparqlQueryEngineException,
+                                                                         ParseException {
+        if (sparqlQuery == null) {
+            return Response.ok(new Viewable("sparql", this), TEXT_HTML).build();
+        }
+        Query query = QueryParser.getInstance().parse(sparqlQuery);
+        String mediaType = "application/sparql-results+xml";
+        if (query instanceof DescribeQuery || query instanceof ConstructQuery) {
+            mediaType = "application/rdf+xml";
         }
-        return engineClassName.toLowerCase();
+        Object result = tcManager.executeSparqlQuery(query, getEnhancerConfigGraph());
+        return Response.ok(result, mediaType).build();
     }
 
-    /**
-     * Form-based OpenCalais-compatible interface
-     * 
-     * TODO: should we parse the OpenCalais paramsXML and find the closest Stanbol Enhancer semantics too?
-     * 
-     * Note: the format parameter is not part of the official API
-     * 
-     * @throws EngineException
-     *             if the content is somehow corrupted
-     * @throws IOException
-     */
     @POST
+    @Path("/sparql")
     @Consumes(APPLICATION_FORM_URLENCODED)
-    public Response enhanceFromForm(@FormParam("content") String content,
-                                    @FormParam("format") String format,
-                                    @FormParam("ajax") boolean buildAjaxview,
-                                    @Context HttpHeaders headers) throws EnhancementException, IOException {
-        log.info("enhance from From: " + content);
-        ContentItem ci = new InMemoryContentItem(content.getBytes("UTF-8"), TEXT_PLAIN);
-//        ci.addPart(ENHANCEMENT_PROPERTIES_URI, Collections.singletonMap(INCLUDE_EXECUTION_METADATA, false));
-        return enhanceAndBuildResponse(format, headers, ci, buildAjaxview);
-    }
-
-    /**
-     * Media-Type based handling of the raw POST data.
-     * 
-     * @param data
-     *            binary payload to analyze
-     * @param uri
-     *            optional URI for the content items (to be used as an identifier in the enhancement graph)
-     * @throws EngineException
-     *             if the content is somehow corrupted
-     * @throws IOException
-     */
-    @POST
-    @Consumes(WILDCARD)
-    public Response enhanceFromData(ContentItem ci,
-                                    @QueryParam(value = "uri") String uri,
-                                    @QueryParam(value = "executionmetadata") boolean inclExecMetadata,
-                                    @QueryParam(value = "outputContent") Set<String> mediaTypes,
-                                    @QueryParam(value = "omitParsed") boolean omitParsed,
-                                    @QueryParam(value = "outputContentPart") Set<String> contentParts,
-                                    @QueryParam(value = "omitMetadata") boolean omitMetadata,
-                                    @QueryParam(value = "rdfFormat") String rdfFormat,
-                                    @Context HttpHeaders headers) throws EnhancementException, IOException {
-        Map<String,Object> enhancementProperties = getEnhancementProperties(ci);
-        enhancementProperties.put(INCLUDE_EXECUTION_METADATA, inclExecMetadata);
-        if(mediaTypes != null && !mediaTypes.isEmpty()){
-            enhancementProperties.put(OUTPUT_CONTENT, mediaTypes);
-        }
-        enhancementProperties.put(OMIT_PARSED_CONTENT, omitParsed);
-        if(contentParts != null && !contentParts.isEmpty()){
-            Set<UriRef> outputContentParts = new HashSet<UriRef>();
-            for(String contentPartUri : contentParts){
-                if(contentPartUri != null && !contentPartUri.isEmpty()){
-                    if("*".equals(contentPartUri)){
-                        outputContentParts.add(null); //indicated wildcard
-                    } else {
-                        outputContentParts.add(new UriRef(contentPartUri));
-                    }
-                }
-            }
-            enhancementProperties.put(OUTPUT_CONTENT_PART, outputContentParts);
-        }
-        enhancementProperties.put(OMIT_METADATA, omitMetadata);
-        if(rdfFormat != null && !rdfFormat.isEmpty()){
-            try {
-                enhancementProperties.put(RDF_FORMAT,MediaType.valueOf(rdfFormat).toString());
-            } catch (IllegalArgumentException e) {
-                throw new WebApplicationException(e, 
-                    Response.status(Response.Status.BAD_REQUEST)
-                    .entity(String.format("Unable to parse MediaType form parameter" +
-                    		"rdfFormat=%s",rdfFormat))
-                    .build());
-            }
-        }
-//        String format = TEXT_PLAIN;
-//        if (headers.getMediaType() != null) {
-//            format = headers.getMediaType().toString();
-//        }
-//        if (uri != null && uri.isEmpty()) {
-//            // let the store build an internal URI based on the content
-//            uri = null;
-//        }
-//        ContentItem ci = new InMemoryContentItem(uri, data, format);
-        return enhanceAndBuildResponse(null, headers, ci, false);
-    }
-
-    protected Response enhanceAndBuildResponse(String format,
-                                               HttpHeaders headers,
-                                               ContentItem ci,
-                                               boolean buildAjaxview) throws EnhancementException,
-                                                                     IOException {
-        Map<String,Object> enhancementPropertis = EnhancementPropertiesHelper.getEnhancementProperties(ci);
-        if (jobManager != null) {
-            jobManager.enhanceContent(ci, chain);
-        }
-
-        if (buildAjaxview) {
-            ContentItemResource contentItemResource = new ContentItemResource(null, ci, uriInfo, "",
-                    tcManager, serializer, servletContext);
-            contentItemResource.setRdfSerializationFormat(format);
-            Viewable ajaxView = new Viewable("/ajax/contentitem", contentItemResource);
-            ResponseBuilder rb = Response.ok(ajaxView);
-            rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML + "; charset=UTF-8");
-            addCORSOrigin(servletContext, rb, headers);
-            return rb.build();
-        }
-
-        MGraph graph = ci.getMetadata();
-        Boolean includeExecutionMetadata = (Boolean)enhancementPropertis.get(INCLUDE_EXECUTION_METADATA);
-        if (includeExecutionMetadata != null && includeExecutionMetadata.booleanValue()) {
-            try {
-                graph.addAll(ci.getPart(ExecutionMetadata.CHAIN_EXECUTION, MGraph.class));
-            } catch (NoSuchPartException e) {
-                // no executionMetadata available
-            }
-        }
-        ResponseBuilder rb = Response.ok(ci);
-        // List<String> accepted = headers.getRequestHeader(HttpHeaders.ACCEPT);
-        MediaType mediaType = MediaTypeUtil.getAcceptableMediaType(headers, null);
-        // This can be used to create a customised WebExection. Jersey will sent
-        // a 500er response code in any case
-        // if(isAcceptableMediaType(mediaType, SUPPORTED_RDF_TYPES)){
-        // //USE THIS for special error response
-        // }
-        if (mediaType != null) {
-            rb.header(HttpHeaders.CONTENT_TYPE, mediaType);
-        }
-
-        addCORSOrigin(servletContext, rb, headers);
-        return rb.build();
-    }
-
-    public class ExecutionNode {
-
-        private final NonLiteral node;
-        private final TripleCollection ep;
-        private final boolean optional;
-        private final String engineName;
-
-        public ExecutionNode(TripleCollection executionPlan, NonLiteral node) {
-            this.node = node;
-            this.ep = executionPlan;
-            this.optional = ExecutionPlanHelper.isOptional(ep, node);
-            this.engineName = ExecutionPlanHelper.getEngine(ep, node);
-        }
-
-        public boolean isOptional() {
-            return optional;
-        }
-
-        public String getEngineName() {
-            return engineName;
-        }
-
-        public EnhancementEngine getEngine() {
-            return engineManager.getEngine(engineName);
-        }
-
-        public boolean isEngineActive() {
-            return engineManager.isEngine(engineName);
-        }
-
-        @Override
-        public int hashCode() {
-            return node.hashCode();
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            return o instanceof ExecutionNode && ((ExecutionNode) o).node.equals(node);
-        }
+    @Produces({"application/sparql-results+xml", "application/rdf+xml", APPLICATION_XML})
+    public Object postSparql(@FormParam("query") String sparqlQuery) throws SparqlQueryEngineException,
+                                                                    ParseException {
+        return sparql(sparqlQuery);
     }
 
 }

Added: incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/utils/EnhancerUtils.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/utils/EnhancerUtils.java?rev=1297071&view=auto
==============================================================================
--- incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/utils/EnhancerUtils.java (added)
+++ incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/utils/EnhancerUtils.java Mon Mar  5 14:31:28 2012
@@ -0,0 +1,169 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.stanbol.enhancer.jersey.utils;
+
+import static org.apache.stanbol.enhancer.servicesapi.rdf.Enhancer.ENHANCEMENT_ENGINE;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.clerezza.rdf.core.MGraph;
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.impl.PlainLiteralImpl;
+import org.apache.clerezza.rdf.core.impl.TripleImpl;
+import org.apache.clerezza.rdf.ontologies.RDF;
+import org.apache.clerezza.rdf.ontologies.RDFS;
+import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
+import org.apache.stanbol.enhancer.servicesapi.Chain;
+import org.apache.stanbol.enhancer.servicesapi.ChainManager;
+import org.apache.stanbol.enhancer.servicesapi.EnhancementEngine;
+import org.apache.stanbol.enhancer.servicesapi.EnhancementEngineManager;
+import org.apache.stanbol.enhancer.servicesapi.rdf.Enhancer;
+import org.osgi.framework.ServiceReference;
+
+public final class EnhancerUtils {
+
+    private EnhancerUtils(){};
+    
+    
+    /**
+     * Uses the parsed {@link EnhancementEngineManager} to build a Map
+     * representing the current snapshot of the active enhancement engines.
+     * 
+     * @param engineManager The engine manager used to build the snapshot
+     * @return the map with the names as key and an Entry with the {@link ServiceReference}
+     * and the {@link EnhancementEngine} instance as value.
+     */
+    public static Map<String, Entry<ServiceReference,EnhancementEngine>> buildEnginesMap(EnhancementEngineManager engineManager) {
+        Map<String, Entry<ServiceReference,EnhancementEngine>> engines = new HashMap<String,Map.Entry<ServiceReference,EnhancementEngine>>();
+        for(String engineName : engineManager.getActiveEngineNames()){
+            ServiceReference engineRef = engineManager.getReference(engineName);
+            if(engineRef != null){
+                EnhancementEngine engine = engineManager.getEngine(engineRef);
+                if(engine != null){
+                    Map<ServiceReference,EnhancementEngine> m = Collections.singletonMap(engineRef, engine);
+                    engines.put(engineName, m.entrySet().iterator().next());
+                }
+            }
+        }
+        return engines;
+    }
+    /**
+     * Uses the parsed {@link ChainManager} to build a Map
+     * representing the current snapshot of the active enhancement chains.
+     * 
+     * @param chainManager The chain manager used to build the snapshot
+     * @return the map with the names as key and an Entry with the {@link ServiceReference}
+     * and the {@link Chain} instance as value.
+     */
+    public static Map<String,Map.Entry<ServiceReference,Chain>> buildChainsMap(ChainManager chainManager) {
+        Map<String,Map.Entry<ServiceReference,Chain>> chains = new HashMap<String,Map.Entry<ServiceReference,Chain>>();
+        for(String chainName : chainManager.getActiveChainNames()){
+            ServiceReference chainRef = chainManager.getReference(chainName);
+            if(chainRef != null){
+                Chain chain = chainManager.getChain(chainRef);
+                if(chain != null){
+                    Map<ServiceReference,Chain> m = Collections.singletonMap(chainRef, chain);
+                    chains.put(chainName, m.entrySet().iterator().next());
+                }
+            }
+        }
+        return chains;
+    }
+    /**
+     * Create the RDF data for the currently active EnhancementEngines.<p>
+     * Note the the parsed rootUrl MUST already consider offsets configured
+     * for the Stanbol RESTful service. When called from within a
+     * {@link BaseStanbolResource} the following code segment should be used:<p>
+     * <code><pre>
+     *     String rootUrl = uriInfo.getBaseUriBuilder().path(getRootUrl()).build().toString();
+     * </pre></code>
+     * @param engineManager the enhancement engine manager
+     * @param graph the RDF graph to add the triples
+     * @param rootUrl the root URL used by the current request
+     */
+    public static void addActiveEngines(EnhancementEngineManager engineManager,MGraph graph, String rootUrl) {
+        addActiveEngines(buildEnginesMap(engineManager).values(), graph, rootUrl);
+    }
+    /**
+     * Create the RDF data for the currently active EnhancementEngines.<p>
+     * Note the the parsed rootUrl MUST already consider offsets configured
+     * for the Stanbol RESTful service. When called from within a
+     * {@link BaseStanbolResource} the following code segment should be used:<p>
+     * <code><pre>
+     *     String rootUrl = uriInfo.getBaseUriBuilder().path(getRootUrl()).build().toString();
+     * </pre></code>
+     * @param activeEngines the active enhancement engines as {@link Entry entries}.
+     * @param graph the RDF graph to add the triples
+     * @param rootUrl the root URL used by the current request
+     * @see EnhancerUtils#buildEnginesMap(EnhancementEngineManager)
+     */
+    public static void addActiveEngines(Iterable<Entry<ServiceReference,EnhancementEngine>> activeEngines,MGraph graph, String rootUrl) {
+        UriRef enhancerResource = new UriRef(rootUrl+"enhancer");
+        graph.add(new TripleImpl(enhancerResource, RDF.type, Enhancer.ENHANCER));
+        for(Entry<ServiceReference,EnhancementEngine> entry : activeEngines){
+            UriRef engineResource = new UriRef(rootUrl+"enhancer/engine/"+entry.getValue().getName());
+            graph.add(new TripleImpl(enhancerResource, Enhancer.HAS_ENGINE, engineResource));
+            graph.add(new TripleImpl(engineResource, RDF.type, ENHANCEMENT_ENGINE));
+            graph.add(new TripleImpl(engineResource, RDFS.label, new PlainLiteralImpl(entry.getValue().getName())));
+        }
+    }
+    
+    /**
+     * Create the RDF data for the currently active Enhancement {@link Chain}s.<p>
+     * Note the the parsed rootUrl MUST already consider offsets configured
+     * for the Stanbol RESTful service. When called from within a
+     * {@link BaseStanbolResource} the following code segment should be used:<p>
+     * <code><pre>
+     *     String rootUrl = uriInfo.getBaseUriBuilder().path(getRootUrl()).build().toString();
+     * </pre></code>
+     * @param chainManager the enhancement chain manager.
+     * @param graph the RDF graph to add the triples
+     * @param rootUrl the root URL used by the current request
+     */
+    public static void addActiveChains(ChainManager chainManager, MGraph graph, String rootUrl) {
+        addActiveChains(buildChainsMap(chainManager).values(), chainManager.getDefault(), graph, rootUrl);
+    }
+    /**
+     * Create the RDF data for the currently active Enhancement {@link Chain}s.<p>
+     * Note the the parsed rootUrl MUST already consider offsets configured
+     * for the Stanbol RESTful service. When called from within a
+     * {@link BaseStanbolResource} the following code segment should be used:<p>
+     * <code><pre>
+     *     String rootUrl = uriInfo.getBaseUriBuilder().path(getRootUrl()).build().toString();
+     * </pre></code>
+     * @param activeChains the active enhancement chains as {@link Entry entries}.
+     * @param defaultChain the default chain
+     * @param graph the RDF graph to add the triples
+     * @param rootUrl the root URL used by the current request
+     */
+    public static void addActiveChains(Iterable<Entry<ServiceReference,Chain>> activeChains, Chain defaultChain, MGraph graph, String rootUrl) {
+        UriRef enhancer = new UriRef(rootUrl+"enhancer");
+        graph.add(new TripleImpl(enhancer, RDF.type, Enhancer.ENHANCER));
+        for(Entry<ServiceReference,Chain> entry : activeChains){
+            UriRef chainResource = new UriRef(rootUrl+"enhancer/chain/"+entry.getValue().getName());
+            graph.add(new TripleImpl(enhancer, Enhancer.HAS_CHAIN, chainResource));
+            if(entry.getValue().equals(defaultChain)){
+                graph.add(new TripleImpl(enhancer, Enhancer.HAS_DEFAULT_CHAIN, chainResource));
+            }
+            graph.add(new TripleImpl(chainResource, RDF.type, Enhancer.ENHANCEMENT_CHAIN));
+            graph.add(new TripleImpl(chainResource, RDFS.label, new PlainLiteralImpl(entry.getValue().getName())));
+        }
+    }
+}

Propchange: incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/utils/EnhancerUtils.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/stanbol/trunk/enhancer/jersey/src/main/resources/org/apache/stanbol/enhancer/jersey/templates/imports/enhancersparql.ftl
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/jersey/src/main/resources/org/apache/stanbol/enhancer/jersey/templates/imports/enhancersparql.ftl?rev=1297071&view=auto
==============================================================================
--- incubator/stanbol/trunk/enhancer/jersey/src/main/resources/org/apache/stanbol/enhancer/jersey/templates/imports/enhancersparql.ftl (added)
+++ incubator/stanbol/trunk/enhancer/jersey/src/main/resources/org/apache/stanbol/enhancer/jersey/templates/imports/enhancersparql.ftl Mon Mar  5 14:31:28 2012
@@ -0,0 +1,63 @@
+<#--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<#macro form>
+<form id="sparql" action="${it.rootUrl}enhancer/sparql" method="GET"
+ enctype="application/x-www-form-urlencoded"
+ accept="application/sparql-results+xml, application/rdf+xml">
+<textarea class="query" rows="11" name="query">
+PREFIX enhancer: &lt;http://stanbol.apache.org/ontology/enhancer/enhancer#&gt;
+PREFIX rdfs:     &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
+SELECT distinct ?name ?chain
+WHERE {
+  ?chain a enhancer:EnhancementChain .
+  ?chain rdfs:label ?name .
+}
+ORDER BY ASC(?name)
+</textarea>
+<p><input type="submit" class="submit" value="Run SPARQL query" /></p>
+<pre class="prettyprint result" style="max-height: 200px; display: none" disabled="disabled">
+</pre>
+</form>
+<script language="javascript">
+function registersSparqlHandler() {
+   $("#sparql input.submit", this).click(function(e) {
+     // disable regular form click
+     e.preventDefault();
+     
+     // clean the result area
+     $("#sparql textarea.result").text('');
+     
+     // submit sparql query using Ajax
+     $.ajax({
+       type: "POST",
+       url: "${it.rootUrl}enhancer/sparql",
+       data: {query: $("#sparql textarea.query").val()},
+       dataType: "html",
+       cache: false,
+       success: function(result) {
+         $("#sparql pre.result").text(result).css("display", "block");
+         prettyPrint();
+       },
+       error: function(result) {
+         $("#sparql pre.result").text('Invalid query.').css("display", "block");
+       }
+     });
+   });
+ }
+ $(document).ready(registersSparqlHandler);
+</script>
+</#macro>
\ No newline at end of file

Added: incubator/stanbol/trunk/enhancer/jersey/src/main/resources/org/apache/stanbol/enhancer/jersey/templates/org/apache/stanbol/enhancer/jersey/resource/EnhancerRootResource/sparql.ftl
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/jersey/src/main/resources/org/apache/stanbol/enhancer/jersey/templates/org/apache/stanbol/enhancer/jersey/resource/EnhancerRootResource/sparql.ftl?rev=1297071&view=auto
==============================================================================
--- incubator/stanbol/trunk/enhancer/jersey/src/main/resources/org/apache/stanbol/enhancer/jersey/templates/org/apache/stanbol/enhancer/jersey/resource/EnhancerRootResource/sparql.ftl (added)
+++ incubator/stanbol/trunk/enhancer/jersey/src/main/resources/org/apache/stanbol/enhancer/jersey/templates/org/apache/stanbol/enhancer/jersey/resource/EnhancerRootResource/sparql.ftl Mon Mar  5 14:31:28 2012
@@ -0,0 +1,48 @@
+<#--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<#import "/imports/common.ftl" as common>
+<#import "/imports/enhancersparql.ftl" as sparql>
+<#escape x as x?html>
+<@common.page title="SPARQL Endpoint for the Stanbol Enhancer Configuration" hasrestapi=false>
+
+  <p>This allows to query the configuration of the Stanbol Enhancer for 
+    active Enhancement Engines and EnhancementChains.</p>
+  
+  <p><a href="http://en.wikipedia.org/wiki/Sparql">SPARQL</a> is the
+    standard query language the most commonly used to provide interactive
+    access to semantic knowledge bases.</p>
+    
+  <p>A SPARQL endpoint is a standardized HTTP access to perform SPARQL queries.
+    Developers of REST clients will find all the necessary documentation in the
+    official <a href="http://www.w3.org/TR/rdf-sparql-protocol/#query-bindings-http">W3C
+    page for the RDF SPARQL protocol</a>.</p>
+    
+  <p>The Stanbol enhancer SPARQL endpoint gives access to the Configuration
+    of the Stanbol Enhancer. It does NOT allow to auery enhancement results.
+    Users that want to query/search for ContentItems based on extracted
+    knowledge should use instead:<ul>
+    <li> the <b><a href="${it.rootUrl}contenthub">Contenthub</a></b>: Supports
+        semantic search based on configurable semantic indexes.</li>
+    <li> <b><a href="${it.rootUrl}sparql">Sparql Endpoint</a></b>: Supports
+        SPARQL querys over the RDF graph containing the metadata of all enhanced
+        ContentItmes. </li>
+    </ul></p>
+ 
+  <@sparql.form/>
+
+</...@common.page>
+</#escape>

Modified: incubator/stanbol/trunk/integration-tests/pom.xml
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/integration-tests/pom.xml?rev=1297071&r1=1297070&r2=1297071&view=diff
==============================================================================
--- incubator/stanbol/trunk/integration-tests/pom.xml (original)
+++ incubator/stanbol/trunk/integration-tests/pom.xml Mon Mar  5 14:31:28 2012
@@ -173,7 +173,7 @@
             <keepJarRunning>${keepJarRunning}</keepJarRunning>
             <server.ready.timeout.seconds>180</server.ready.timeout.seconds>
             <server.ready.path.1>/:stanbol.css</server.ready.path.1>
-            <server.ready.path.2>/enhancer:Stateless REST analysis</server.ready.path.2>
+            <server.ready.path.2>/enhancer:Stateless REST analysis:Accept:text/html</server.ready.path.2>
             <server.ready.path.3>/factstore:What is the FactStore</server.ready.path.3>
             <server.ready.path.4>/contenthub:Recently uploaded Content Items</server.ready.path.4>
             <server.ready.path.5>/entityhub:The RESTful API of the Entityhub</server.ready.path.5>

Modified: incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/DefaultChainTest.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/DefaultChainTest.java?rev=1297071&r1=1297070&r2=1297071&view=diff
==============================================================================
--- incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/DefaultChainTest.java (original)
+++ incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/DefaultChainTest.java Mon Mar  5 14:31:28 2012
@@ -70,7 +70,7 @@ public class DefaultChainTest extends En
         .assertStatus(200)
         .assertContentRegexp(
                 //check execution metadata
-                "http://stanbol.apache.org/ontology/enhancer/executionMetadata#executionPart",
+                "http://stanbol.apache.org/ontology/enhancer/executionmetadata#executionPart",
                 //check execution of metaxa & if executionPlan is included
                 "http://stanbol.apache.org/ontology/enhancer/executionplan#engine.*metaxa", 
                 "http://purl.org/dc/terms/creator.*LangIdEnhancementEngine",

Added: incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/EngineEnhancementRequestTest.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/EngineEnhancementRequestTest.java?rev=1297071&view=auto
==============================================================================
--- incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/EngineEnhancementRequestTest.java (added)
+++ incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/EngineEnhancementRequestTest.java Mon Mar  5 14:31:28 2012
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.stanbol.enhancer.it;
+
+import java.io.InputStream;
+
+import org.apache.http.entity.InputStreamEntity;
+import org.junit.Assert;
+import org.junit.Test;
+/**
+ * Tests sending EnhancementRequests to single Engines
+ *
+ */
+public class EngineEnhancementRequestTest extends EnhancerTestBase {
+    
+    public EngineEnhancementRequestTest(){
+        super();
+    }
+
+    /**
+     * Tests an normal enhancement request directed to the tika engine 
+     * @throws Exception
+     */
+    @Test
+    public void testTikaMetadata() throws Exception {
+        InputStream in = EngineEnhancementRequestTest.class.getClassLoader().getResourceAsStream("testJPEG_EXIF.jpg");
+        Assert.assertNotNull("Unable to find test resource 'testJPEG_EXIF.jpg'",in);
+        executor.execute(
+            builder.buildPostRequest(getEndpoint()+"/engine/tika")
+            .withHeader("Accept","text/rdf+nt")
+            .withEntity(new InputStreamEntity(in, -1))
+        )
+        .assertStatus(200)
+        .assertContentRegexp( //we need not test the extraction results here
+            //only that the Enhancer REST API works also with engines!
+            "<http://purl.org/dc/terms/format> \"image/jpeg\"",
+            "<http://www.w3.org/ns/ma-ont#hasKeyword> \"serbor\" .",
+            "<http://www.semanticdesktop.org/ontologies/2007/05/10/nexif#isoSpeedRatings> \"400\""
+        );
+    }
+    /**
+     * Tests plain text extraction for an request directly sent to the tika 
+     * engine 
+     * @throws Exception
+     */
+    @Test
+    public void testPlainTextExtraction() throws Exception {
+        InputStream in = EngineEnhancementRequestTest.class.getClassLoader().getResourceAsStream("test.pdf");
+        Assert.assertNotNull("Unable to find test resource 'test.pdf'",in);
+        executor.execute(
+            builder.buildPostRequest(getEndpoint()+"/engine/tika?omitMetadata=true")
+            .withHeader("Accept","text/plain")
+            .withEntity(new InputStreamEntity(in, -1))
+        )
+        .assertStatus(200)
+        .assertContentRegexp( //we need not test the extraction results here
+            //only that the Enhancer REST API works also with engines!
+            "The Apache Stanbol Enhancer",
+            "The Stanbol enhancer can detect famous cities such as Paris"
+        );
+    }
+
+}

Propchange: incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/EngineEnhancementRequestTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/EnhancerConfigurationTest.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/EnhancerConfigurationTest.java?rev=1297071&view=auto
==============================================================================
--- incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/EnhancerConfigurationTest.java (added)
+++ incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/EnhancerConfigurationTest.java Mon Mar  5 14:31:28 2012
@@ -0,0 +1,145 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.stanbol.enhancer.it;
+
+import java.io.IOException;
+
+import org.junit.Test;
+
+public class EnhancerConfigurationTest extends EnhancerTestBase {
+
+    
+    
+    @Test
+    public void testEnhancerConfig() throws IOException{
+        executor.execute(
+            builder.buildGetRequest(getEndpoint())
+            .withHeader("Accept","application/rdf+xml")
+        )
+        .assertStatus(200)
+        .assertContentRegexp(
+            "<rdf:Description rdf:about=\"http://localhost:.*/enhancer\">",
+            "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/enhancer#Enhancer\"/>",
+            "<j.0:hasEngine rdf:resource=\"http://localhost:.*/enhancer/engine/dbpediaLinking\"/>",
+            "<j.0:hasEngine rdf:resource=\"http://localhost:.*/enhancer/engine/langid\"/>",
+            "<j.0:hasEngine rdf:resource=\"http://localhost:.*/enhancer/engine/tika\"/>",
+            "<j.0:hasEngine rdf:resource=\"http://localhost:.*/enhancer/engine/ner\"/>",
+            "<j.0:hasChain rdf:resource=\"http://localhost:.*/enhancer/chain/default\"/>",
+            "<j.0:hasChain rdf:resource=\"http://localhost:.*/enhancer/chain/language\"/>",
+            "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/enhancer#EnhancementChain\"/>",
+            "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/enhancer#EnhancementEngine\"/>",
+            "<rdfs:label>ner</rdfs:label>",
+            "<rdfs:label>language</rdfs:label>"
+         );
+    }
+    @Test
+    public void testEngineConfig() throws IOException{
+        executor.execute(
+            builder.buildGetRequest(getEndpoint()+"/engine")
+            .withHeader("Accept","application/rdf+xml")
+        )
+        .assertStatus(200)
+        .assertContentRegexp(
+            "<rdf:Description rdf:about=\"http://localhost:.*/enhancer\">",
+            "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/enhancer#Enhancer\"/>",
+            "<j.0:hasEngine rdf:resource=\"http://localhost:.*/enhancer/engine/dbpediaLinking\"/>",
+            "<j.0:hasEngine rdf:resource=\"http://localhost:.*/enhancer/engine/langid\"/>",
+            "<j.0:hasEngine rdf:resource=\"http://localhost:.*/enhancer/engine/tika\"/>",
+            "<j.0:hasEngine rdf:resource=\"http://localhost:.*/enhancer/engine/ner\"/>",
+            "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/enhancer#EnhancementEngine\"/>",
+            "<rdfs:label>ner</rdfs:label>"
+         );
+    }
+    @Test
+    public void testChainConfig() throws IOException{
+        executor.execute(
+            builder.buildGetRequest(getEndpoint()+"/chain")
+            .withHeader("Accept","application/rdf+xml")
+        )
+        .assertStatus(200)
+        .assertContentRegexp(
+            "<rdf:Description rdf:about=\"http://localhost:.*/enhancer\">",
+            "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/enhancer#Enhancer\"/>",
+            "<j.0:hasChain rdf:resource=\"http://localhost:.*/enhancer/chain/default\"/>",
+            "<j.0:hasChain rdf:resource=\"http://localhost:.*/enhancer/chain/language\"/>",
+            "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/enhancer#EnhancementChain\"/>",
+            "<rdfs:label>language</rdfs:label>"
+        );
+    }
+    @Test
+    public void testSparqlConfig() throws IOException{
+        StringBuilder query = new StringBuilder();
+        query.append("PREFIX enhancer: <http://stanbol.apache.org/ontology/enhancer/enhancer#>");
+        query.append("PREFIX rdfs:     <http://www.w3.org/2000/01/rdf-schema#>");
+        query.append("SELECT distinct ?name ?chain ");
+        query.append("WHERE {");
+        query.append("?chain a enhancer:EnhancementChain .");
+        query.append("?chain rdfs:label ?name .");
+        query.append("}");
+        query.append("ORDER BY ASC(?name)");
+        executor.execute(
+            builder.buildGetRequest(getEndpoint()+"/sparql","query",query.toString())
+            .withHeader("Accept","application/sparql-results+xml")
+        )
+        .assertStatus(200)
+        .assertContentRegexp(
+            "<sparql xmlns=\"http://www.w3.org/2005/sparql-results#\">",
+            "<head>",
+            "<variable name=\"chain\"/>",
+            "<variable name=\"name\"/>",
+            "</head>",
+            "<results>",
+            "<result>",
+            "<binding name=\"chain\">",
+            "<uri>http://localhost:.*/enhancer/chain/default</uri>",
+            "<uri>http://localhost:.*/enhancer/chain/language</uri>",
+            "<binding name=\"name\">",
+            "<literal>default</literal>",
+            "<literal>language</literal>"
+        );
+    }
+    
+    public void testExecutionPlan() throws IOException{
+        //We need not to validate the executionplan data.
+        //This is already done by other tests. 
+        //only check for the rdf:types to check if the correct RDF data are returned
+        String [] validate = new String[]{
+            "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/executionplan#ExecutionNode\"/>",
+            "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/executionplan#ExecutionPlan\"/>"
+        };
+        executor.execute(
+            builder.buildGetRequest(getEndpoint()+"/ep")
+            .withHeader("Accept","application/rdf+xml")
+        )
+        .assertStatus(200)
+        .assertContentRegexp(validate);
+        executor.execute(
+            builder.buildGetRequest(getEndpoint()+"/chain/language/ep")
+            .withHeader("Accept","application/rdf+xml")
+        )
+        .assertStatus(200)
+        .assertContentRegexp(validate);
+        executor.execute(
+            builder.buildGetRequest(getEndpoint()+"/chain/engine/tika")
+            .withHeader("Accept","application/rdf+xml")
+        )
+        .assertStatus(200)
+        .assertContentRegexp(validate);
+        
+    }
+    
+}

Propchange: incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/EnhancerConfigurationTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/EnhancerTestBase.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/EnhancerTestBase.java?rev=1297071&r1=1297070&r2=1297071&view=diff
==============================================================================
--- incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/EnhancerTestBase.java (original)
+++ incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/EnhancerTestBase.java Mon Mar  5 14:31:28 2012
@@ -73,7 +73,8 @@ public class EnhancerTestBase extends St
                 "langid","LangIdEnhancementEngine",
                 "ner","NamedEntityExtractionEnhancementEngine",
                 "entityhubLinking","NamedEntityTaggingEngine",
-                "dbpediaLinking","NamedEntityTaggingEngine"                    
+                "dbpediaLinking","NamedEntityTaggingEngine",
+                "tika","TikaEngine"                    
             };
     /**
      * Getter for the Endpoint for a specific enhancement chain

Modified: incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/MultipartRequestTest.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/MultipartRequestTest.java?rev=1297071&r1=1297070&r2=1297071&view=diff
==============================================================================
--- incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/MultipartRequestTest.java (original)
+++ incubator/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/MultipartRequestTest.java Mon Mar  5 14:31:28 2012
@@ -302,7 +302,7 @@ public class MultipartRequestTest extend
     @Test
     public void testOutputContentPart() throws IOException {
         String[] params = new String []{
-                    "outputContentPart","http://stanbol.apache.org/ontology/enhancer/executionMetadata#ChainExecution",
+                    "outputContentPart","http://stanbol.apache.org/ontology/enhancer/executionmetadata#ChainExecution",
                     "omitMetadata","true",
                     "rdfFormat","application/rdf+xml"};
         String content = executor.execute(
@@ -315,12 +315,12 @@ public class MultipartRequestTest extend
         .assertContentContains(
              "--contentItem",
              "--contentItem--",
-             "Content-Disposition: form-data; name=\"http://stanbol.apache.org/ontology/enhancer/executionMetadata#ChainExecution\"",
+             "Content-Disposition: form-data; name=\"http://stanbol.apache.org/ontology/enhancer/executionmetadata#ChainExecution\"",
              "Content-Type: application/rdf+xml; charset=UTF-8",
              "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/executionplan#ExecutionPlan\"/>",
              "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/executionplan#ExecutionNode\"/>",
-             "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/executionMetadata#EngineExecution\"/>",
-             "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/executionMetadata#ChainExecution\"/>")
+             "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/executionmetadata#EngineExecution\"/>",
+             "<rdf:type rdf:resource=\"http://stanbol.apache.org/ontology/enhancer/executionmetadata#ChainExecution\"/>")
          .getContent();
         log.debug("Content:\n{}\n",content);
     }

Added: incubator/stanbol/trunk/integration-tests/src/test/resources/test.pdf
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/integration-tests/src/test/resources/test.pdf?rev=1297071&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/stanbol/trunk/integration-tests/src/test/resources/test.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/stanbol/trunk/integration-tests/src/test/resources/testJPEG_EXIF.jpg
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/integration-tests/src/test/resources/testJPEG_EXIF.jpg?rev=1297071&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/stanbol/trunk/integration-tests/src/test/resources/testJPEG_EXIF.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream