You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2010/02/16 11:33:27 UTC

svn commit: r910455 - in /incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main: java/org/apache/clerezza/rdf/web/core/ resources/META-INF/ resources/...

Author: reto
Date: Tue Feb 16 10:33:26 2010
New Revision: 910455

URL: http://svn.apache.org/viewvc?rev=910455&view=rev
Log:
CLEREZZA-127: added form for triples upload

Added:
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/resources/org/apache/clerezza/rdf/web/core/upload-form.xhtml
Modified:
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/java/org/apache/clerezza/rdf/web/core/WebAccess.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/resources/META-INF/documentation.nt

Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/java/org/apache/clerezza/rdf/web/core/WebAccess.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/java/org/apache/clerezza/rdf/web/core/WebAccess.java?rev=910455&r1=910454&r2=910455&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/java/org/apache/clerezza/rdf/web/core/WebAccess.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/java/org/apache/clerezza/rdf/web/core/WebAccess.java Tue Feb 16 10:33:26 2010
@@ -16,203 +16,211 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.clerezza.rdf.web.core;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.core.UriInfo;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
-import org.apache.clerezza.jaxrs.utils.RedirectUtil;
-import org.apache.clerezza.jaxrs.utils.form.FormFile;
-import org.apache.clerezza.jaxrs.utils.form.MultiPartBody;
-import org.apache.clerezza.rdf.core.Graph;
-import org.apache.clerezza.rdf.core.MGraph;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.clerezza.rdf.core.Triple;
-import org.apache.clerezza.rdf.core.TripleCollection;
-import org.apache.clerezza.rdf.core.UriRef;
-import org.apache.clerezza.rdf.core.access.NoSuchEntityException;
-import org.apache.clerezza.rdf.core.access.TcManager;
-import org.apache.clerezza.rdf.core.serializedform.Parser;
-
-/**
- * Provides methods to GET, PUT, and POST an SCB graph over the web.
- * To be deployed in a JAX-RS runtime.
- * 
- * @author hasan
- */
-@Component
-@Service(Object.class)
-@Property(name="javax.ws.rs", boolValue=true)
-@Path("/graph")
-public class WebAccess {
-
-	@Reference
-	TcManager tcManager;
-
-	@Reference
-	private Parser parser;
-
-	final Logger logger = LoggerFactory.getLogger(WebAccess.class);
-
-	/**
-	 * Gets the TripleCollection with specified name
-	 *
-	 * @param name
-	 * @return
-	 */
-	@GET
-	public TripleCollection getTriples(@QueryParam("name") UriRef name) {
-		if (name == null) {
-			Response r = Response.status(Response.Status.BAD_REQUEST)
-					.entity("must specify a graph name")
-					.type(MediaType.TEXT_PLAIN_TYPE).build();
-			throw new WebApplicationException(r);
-		}
-		TripleCollection result =  tcManager.getTriples(name);
-		logger.debug("Got graph of size {} ", result.size());
-		int i = 1;
-		if (logger.isDebugEnabled()) {
-			for (Triple triple : result) {
-				logger.debug("({}) with triples {}", i++, triple.toString());
-			}
-			logger.debug("returning");
-		}
-		return result;
-	}
-
-	/**
-	 * Puts the triples replacing the triples of the existing MGraph with the
-	 * specified name. If the graph doesn't exist creates a new <code>MGraph</code> 
-	 * with the specified name and puts the triples
-	 * 
-	 *
-	 * @param name
-	 * @param triples
-	 */
-	@PUT
-	public void putTriples(@QueryParam("name") UriRef name, TripleCollection triples) {
-		TripleCollection tc;
-		try {
-			tc = tcManager.getTriples(name);
-			tc.clear();
-		} catch (NoSuchEntityException e) {
-			tc = tcManager.createMGraph(name);
-		}
-		tc.addAll(triples);
-	}
-
-	/**
-	 * Posts triples to be placed into an {@link MGraph} of the specified name.
-	 * If an {@link MGraph} with this name doesn't already exist, a new one
-	 * is created and filled with the triples posted.
-	 * @param form
-	 *		a multipart/form-data consisting of:
-	 *		- a {@link FormFile} labeled "graph" containing the triples and
-	 *			the mime-type.
-	 *		- a text field labeled "name" specifying the name of the MGraph.
-	 *		- an optional text field labeled "mode" specifying the mode.
-	 *			If the mode is "replace", existing triples of the MGraph will be
-	 *			deleted before new triples are added. If the mode is not
-	 *			specified or is "append", posted triples are added to the MGraph.
-	 *		- an optional text field labeled "redirection" specifying an URI
-	 *			which the client should be redirected to in case of success.
-	 * @return
-	 *		{@link Response}. A response with status code BAD REQUEST (400) is
-	 *		returned if the required data are missing. If the request can be
-	 *		satisfied, one of the following responses is returned:
-	 *		- SEE OTHER (303), if redirection is specified.
-	 *		- CREATED (201), if redirection is not specified and a new
-	 *			{@link MGraph} is created.
-	 *		- NO CONTENT (204), if redirection is not specified and no new
-	 *			{@link MGraph} is created.
-	 */
-	@POST
-	@Consumes("multipart/form")
-	public Response postTriples(MultiPartBody form, @Context UriInfo uriInfo) {
-
-		FormFile[] formFiles = form.getFormFileParameterValues("graph");
-		if (formFiles.length == 0) {
-			responseWithBadRequest("form file parameter 'graph' is missing");
-		}
-		FormFile formFile = formFiles[0];
-		byte[] graph = formFile.getContent();
-		if (graph == null || (graph.length == 0)) {
-			responseWithBadRequest("no triples uploaded");
-		}
-		InputStream is = new ByteArrayInputStream(graph);
-
-		MediaType mediaType = formFile.getMediaType();
-		if (mediaType == null) {
-			responseWithBadRequest("mime-type not specified");
-		}
-		Graph parsedGraph = parser.parse(is, mediaType.toString());
-
-		String graphName = getFirstTextParameterValue(form, "name", true);
-		if (graphName == null) {
-			responseWithBadRequest("graph name not specified");
-		}
-		UriRef graphUri = new UriRef(graphName);
-		TripleCollection tc;
-		boolean newGraph = false;
-		try {
-			tc = tcManager.getTriples(graphUri);
-			String mode = getFirstTextParameterValue(form, "mode", false);
-			if (mode != null) {
-				if (mode.equals("replace")) {
-					tc.clear();
-				} else if (!mode.equals("append")) {
-					responseWithBadRequest("unknown mode");
-				}
-			}
-		} catch (NoSuchEntityException e) {
-			tc = tcManager.createMGraph(graphUri);
-			newGraph = true;
-		}
-		tc.addAll(parsedGraph);
-		String redirection = getFirstTextParameterValue(form, "redirection",
-				false);
-		if (redirection == null) {
-			if (newGraph) {
-				return Response.status(Status.CREATED).build();
-			} else {
-				return Response.status(Status.NO_CONTENT).build();
-			}
-		}
-		return RedirectUtil.createSeeOtherResponse(redirection, uriInfo);
-	}
-
-	private void responseWithBadRequest(String message) {
-		logger.warn(message);
-		throw new WebApplicationException(Response.status(Status.BAD_REQUEST)
-				.entity(message).build());
-	}
-
-	private String getFirstTextParameterValue(MultiPartBody form,
-			String parameterName, boolean mandatory) {
-		String[] paramValues = form.getTextParameterValues(parameterName);
-		if (paramValues.length == 0) {
-			if (mandatory) {
-				responseWithBadRequest("text parameter '" + parameterName +
-						"' is missing");
-			}
-			return null;
-		}
-		return paramValues[0];
-	}
-}
+package org.apache.clerezza.rdf.web.core;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+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.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.core.UriInfo;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.clerezza.jaxrs.utils.RedirectUtil;
+import org.apache.clerezza.jaxrs.utils.form.FormFile;
+import org.apache.clerezza.jaxrs.utils.form.MultiPartBody;
+import org.apache.clerezza.rdf.core.Graph;
+import org.apache.clerezza.rdf.core.MGraph;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.apache.clerezza.rdf.core.Triple;
+import org.apache.clerezza.rdf.core.TripleCollection;
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.NoSuchEntityException;
+import org.apache.clerezza.rdf.core.access.TcManager;
+import org.apache.clerezza.rdf.core.serializedform.Parser;
+
+/**
+ * Provides methods to GET, PUT, and POST an SCB graph over the web.
+ * To be deployed in a JAX-RS runtime.
+ * 
+ * @author hasan
+ */
+@Component
+@Service(Object.class)
+@Property(name="javax.ws.rs", boolValue=true)
+@Path("/graph")
+public class WebAccess {
+
+	@Reference
+	TcManager tcManager;
+
+	@Reference
+	private Parser parser;
+
+	final Logger logger = LoggerFactory.getLogger(WebAccess.class);
+
+	/**
+	 * Gets the TripleCollection with specified name
+	 *
+	 * @param name
+	 * @return
+	 */
+	@GET
+	public TripleCollection getTriples(@QueryParam("name") UriRef name) {
+		if (name == null) {
+			Response r = Response.status(Response.Status.BAD_REQUEST)
+					.entity("must specify a graph name")
+					.type(MediaType.TEXT_PLAIN_TYPE).build();
+			throw new WebApplicationException(r);
+		}
+		TripleCollection result =  tcManager.getTriples(name);
+		logger.debug("Got graph of size {} ", result.size());
+		int i = 1;
+		if (logger.isDebugEnabled()) {
+			for (Triple triple : result) {
+				logger.debug("({}) with triples {}", i++, triple.toString());
+			}
+			logger.debug("returning");
+		}
+		return result;
+	}
+
+	/**
+	 * Puts the triples replacing the triples of the existing MGraph with the
+	 * specified name. If the graph doesn't exist creates a new <code>MGraph</code> 
+	 * with the specified name and puts the triples
+	 * 
+	 *
+	 * @param name
+	 * @param triples
+	 */
+	@PUT
+	public void putTriples(@QueryParam("name") UriRef name, TripleCollection triples) {
+		TripleCollection tc;
+		try {
+			tc = tcManager.getTriples(name);
+			tc.clear();
+		} catch (NoSuchEntityException e) {
+			tc = tcManager.createMGraph(name);
+		}
+		tc.addAll(triples);
+	}
+
+	/**
+	 * Posts triples to be placed into an {@link MGraph} of the specified name.
+	 * If an {@link MGraph} with this name doesn't already exist, a new one
+	 * is created and filled with the triples posted.
+	 * @param form
+	 *		a multipart/form-data consisting of:
+	 *		- a {@link FormFile} labeled "graph" containing the triples and
+	 *			the mime-type.
+	 *		- a text field labeled "name" specifying the name of the MGraph.
+	 *		- an optional text field labeled "mode" specifying the mode.
+	 *			If the mode is "replace", existing triples of the MGraph will be
+	 *			deleted before new triples are added. If the mode is not
+	 *			specified or is "append", posted triples are added to the MGraph.
+	 *		- an optional text field labeled "redirection" specifying an URI
+	 *			which the client should be redirected to in case of success.
+	 * @return
+	 *		{@link Response}. A response with status code BAD REQUEST (400) is
+	 *		returned if the required data are missing. If the request can be
+	 *		satisfied, one of the following responses is returned:
+	 *		- SEE OTHER (303), if redirection is specified.
+	 *		- CREATED (201), if redirection is not specified and a new
+	 *			{@link MGraph} is created.
+	 *		- NO CONTENT (204), if redirection is not specified and no new
+	 *			{@link MGraph} is created.
+	 */
+	@POST
+	@Consumes("multipart/form")
+	public Response postTriples(MultiPartBody form, @Context UriInfo uriInfo) {
+
+		FormFile[] formFiles = form.getFormFileParameterValues("graph");
+		if (formFiles.length == 0) {
+			responseWithBadRequest("form file parameter 'graph' is missing");
+		}
+		FormFile formFile = formFiles[0];
+		byte[] graph = formFile.getContent();
+		if (graph == null || (graph.length == 0)) {
+			responseWithBadRequest("no triples uploaded");
+		}
+		InputStream is = new ByteArrayInputStream(graph);
+
+		MediaType mediaType = formFile.getMediaType();
+		if (mediaType == null) {
+			responseWithBadRequest("mime-type not specified");
+		}
+		Graph parsedGraph = parser.parse(is, mediaType.toString());
+
+		String graphName = getFirstTextParameterValue(form, "name", true);
+		if (graphName == null) {
+			responseWithBadRequest("graph name not specified");
+		}
+		UriRef graphUri = new UriRef(graphName);
+		TripleCollection tc;
+		boolean newGraph = false;
+		try {
+			tc = tcManager.getTriples(graphUri);
+			String mode = getFirstTextParameterValue(form, "mode", false);
+			if (mode != null) {
+				if (mode.equals("replace")) {
+					tc.clear();
+				} else if (!mode.equals("append")) {
+					responseWithBadRequest("unknown mode");
+				}
+			}
+		} catch (NoSuchEntityException e) {
+			tc = tcManager.createMGraph(graphUri);
+			newGraph = true;
+		}
+		tc.addAll(parsedGraph);
+		String redirection = getFirstTextParameterValue(form, "redirection",
+				false);
+		if (redirection == null) {
+			if (newGraph) {
+				return Response.status(Status.CREATED).build();
+			} else {
+				return Response.status(Status.NO_CONTENT).build();
+			}
+		}
+		return RedirectUtil.createSeeOtherResponse(redirection, uriInfo);
+	}
+
+	@GET
+	@Path("upload-form")
+	@Produces("application/xhtml+xml")
+	public InputStream getUploadForm() {
+		return getClass().getResourceAsStream("upload-form.xhtml");
+	}
+
+	private void responseWithBadRequest(String message) {
+		logger.warn(message);
+		throw new WebApplicationException(Response.status(Status.BAD_REQUEST)
+				.entity(message).build());
+	}
+
+	private String getFirstTextParameterValue(MultiPartBody form,
+			String parameterName, boolean mandatory) {
+		String[] paramValues = form.getTextParameterValues(parameterName);
+		if (paramValues.length == 0) {
+			if (mandatory) {
+				responseWithBadRequest("text parameter '" + parameterName +
+						"' is missing");
+			}
+			return null;
+		}
+		return paramValues[0];
+	}
+}

Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/resources/META-INF/documentation.nt
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/resources/META-INF/documentation.nt?rev=910455&r1=910454&r2=910455&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/resources/META-INF/documentation.nt (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/resources/META-INF/documentation.nt Tue Feb 16 10:33:26 2010
@@ -1,52 +1,52 @@
-_:A68e2cd06X3aX12545840449X3aXX2dX7a91 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a91 <http://discobits.org/ontology#pos> "1" .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a91 <http://discobits.org/ontology#holds> <bundle:///scb-web-content> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e99 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e99 <http://discobits.org/ontology#pos> "1" .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e99 <http://discobits.org/ontology#holds> <bundle:///scb-web-content> .
 <bundle:///scb-web-title> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#XHTMLInfoDiscoBit> .
 <bundle:///scb-web-title> <http://discobits.org/ontology#infoBit> "SCB Web"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a90 <http://discobits.org/ontology#holds> <bundle:///scb-web-content-el/0-title> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a90 <http://discobits.org/ontology#pos> "0" .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a90 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
-<bundle:///scb-web-content> <http://discobits.org/ontology#contains> _:A68e2cd06X3aX12545840449X3aXX2dX7a8f .
-<bundle:///scb-web-content> <http://discobits.org/ontology#contains> _:A68e2cd06X3aX12545840449X3aXX2dX7a8e .
-<bundle:///scb-web-content> <http://discobits.org/ontology#contains> _:A68e2cd06X3aX12545840449X3aXX2dX7a8d .
+<bundle:///scb-web-content> <http://discobits.org/ontology#contains> _:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e98 .
+<bundle:///scb-web-content> <http://discobits.org/ontology#contains> _:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e97 .
+<bundle:///scb-web-content> <http://discobits.org/ontology#contains> _:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e96 .
 <bundle:///scb-web-content> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#OrderedContent> .
-<bundle:///scb-web-content-el/0-title> <http://discobits.org/ontology#infoBit> "Upload Triples with a POST Request"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e98 <http://discobits.org/ontology#pos> "2" .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e98 <http://discobits.org/ontology#holds> <bundle:///scb-web-content-el/2> .
 <bundle:///scb-web-content-el/0-title> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#XHTMLInfoDiscoBit> .
-<bundle:///scb-web-content-el/2> <http://discobits.org/ontology#contains> _:A68e2cd06X3aX12545840449X3aXX2dX7a8c .
+<bundle:///scb-web-content-el/0-title> <http://discobits.org/ontology#infoBit> "Upload Triples with a POST Request"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e98 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
+<bundle:///scb-web-content-el/2> <http://discobits.org/ontology#contains> _:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e95 .
 <bundle:///scb-web-content-el/2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#TitledContent> .
-<bundle:///scb-web-content-el/2> <http://discobits.org/ontology#contains> _:A68e2cd06X3aX12545840449X3aXX2dX7a8b .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8b <http://discobits.org/ontology#holds> <bundle:///scb-web-content-el/2-title> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8b <http://discobits.org/ontology#pos> "0" .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8b <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
-<bundle:///scb-web-content-el/1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#XHTMLInfoDiscoBit> .
+<bundle:///scb-web-content-el/2> <http://discobits.org/ontology#contains> _:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e94 .
 <bundle:///scb-web-content-el/1> <http://discobits.org/ontology#infoBit> "The bundle SCB Web allows access to SCB graphs over HTTP with JAX-RS."^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
-<bundle:///scb-web-content-el/0> <http://discobits.org/ontology#contains> _:A68e2cd06X3aX12545840449X3aXX2dX7a8a .
-<bundle:///scb-web-content-el/0> <http://discobits.org/ontology#contains> _:A68e2cd06X3aX12545840449X3aXX2dX7a90 .
+<bundle:///scb-web-content-el/1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#XHTMLInfoDiscoBit> .
 <bundle:///scb-web-content-el/0> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#TitledContent> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8e <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8e <http://discobits.org/ontology#pos> "1" .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8e <http://discobits.org/ontology#holds> <bundle:///scb-web-content-el/0> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8a <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8a <http://discobits.org/ontology#pos> "1" .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8a <http://discobits.org/ontology#holds> <bundle:///scb-web-content-el/0-content> .
-<bundle:///scb-web-content-el/2-title> <http://discobits.org/ontology#infoBit> "Backup of Triple Collections"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
-<bundle:///scb-web-content-el/0-content> <http://discobits.org/ontology#infoBit> "To upload triples with a POST request, a client can use the URI path \"/graph\" and place the triples and other required information into the body as multipart/form-data which consists of\n<ul xmlns=\"http://www.w3.org/1999/xhtml\">\n<li>a file labeled \"graph\" containing the triples and specifying the mime-type.</li>\n<li>a text field labeled \"name\" specifying the name of the MGraph. If an MGraph with this name does not already exist, a new one will be created.</li>\n<li>an optional text field labeled \"mode\" specifying the mode. If the mode is \"replace\", existing triples of the MGraph will be deleted before new triples are added. If the mode is not specified or is \"append\", posted triples will be added to the MGraph.</li>\n<li>an optional text field labeled \"redirection\" specifying an URI which the client should be redirected to in case of success.</li>\n</ul>\nA response with the s
 tatus code BAD REQUEST (400) is returned if the required data are missing. If the request can be satisfied, one of the following responses is returned:\n<ul xmlns=\"http://www.w3.org/1999/xhtml\">\n<li>SEE OTHER (303), if redirection is specified.</li>\n<li>CREATED (201), if redirection is not specified and a new MGraph is created.</li>\n<li>NO CONTENT (204), if redirection is not specified and no new MGraph is created.</li>\n</ul>\n"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<bundle:///scb-web-content-el/0> <http://discobits.org/ontology#contains> _:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e93 .
+<bundle:///scb-web-content-el/0> <http://discobits.org/ontology#contains> _:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e92 .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e94 <http://discobits.org/ontology#holds> <bundle:///scb-web-content-el/2-content> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e94 <http://discobits.org/ontology#pos> "1" .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e94 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
 <bundle:///scb-web-content-el/0-content> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#XHTMLInfoDiscoBit> .
+<bundle:///scb-web-content-el/0-content> <http://discobits.org/ontology#infoBit> "To upload triples with a POST request, a client can use the URI path \"/graph\" and place the triples and other required information into the body as multipart/form-data which consists of\n<ul xmlns=\"http://www.w3.org/1999/xhtml\">\n<li>a file labeled \"graph\" containing the triples and specifying the mime-type.</li>\n<li>a text field labeled \"name\" specifying the name of the MGraph. If an MGraph with this name does not already exist, a new one will be created.</li>\n<li>an optional text field labeled \"mode\" specifying the mode. If the mode is \"replace\", existing triples of the MGraph will be deleted before new triples are added. If the mode is not specified or is \"append\", posted triples will be added to the MGraph.</li>\n<li>an optional text field labeled \"redirection\" specifying an URI which the client should be redirected to in case of success.</li>\n</ul>\nA response with the s
 tatus code BAD REQUEST (400) is returned if the required data are missing. If the request can be satisfied, one of the following responses is returned:\n<ul xmlns=\"http://www.w3.org/1999/xhtml\">\n<li>SEE OTHER (303), if redirection is specified.</li>\n<li>CREATED (201), if redirection is not specified and a new MGraph is created.</li>\n<li>NO CONTENT (204), if redirection is not specified and no new MGraph is created.</li>\n</ul>\n<p xmlns=\"http://www.w3.org/1999/xhtml\">\nFor your convenience you may access a web-form at the Uri-Path <code>/graph/upload-form</code>.</p>\n"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
+<bundle:///scb-web-content-el/2-title> <http://discobits.org/ontology#infoBit> "Backup of Triple Collections"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
 <bundle:///scb-web-content-el/2-title> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#XHTMLInfoDiscoBit> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8d <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8d <http://discobits.org/ontology#pos> "0" .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8d <http://discobits.org/ontology#holds> <bundle:///scb-web-content-el/1> .
 <bundle:///scb-web-content-el/2-content> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#XHTMLInfoDiscoBit> .
 <bundle:///scb-web-content-el/2-content> <http://discobits.org/ontology#infoBit> "The platform allows the current user to download all triple collections that he has access to through the URI path \"/admin/backup/download\". The resulted file is a compressed archive in zip format. All triple collections in this file are serialized in N-Triples format. Furthermore, a file called \"triplecollections.nt\" is contained in backup.zip, which describes the mapping of file names to triple collection names.\n"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8f <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8f <http://discobits.org/ontology#pos> "2" .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8f <http://discobits.org/ontology#holds> <bundle:///scb-web-content-el/2> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a89 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a89 <http://discobits.org/ontology#pos> "0" .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a89 <http://discobits.org/ontology#holds> <bundle:///scb-web-title> .
-<bundle:///scb-web> <http://discobits.org/ontology#contains> _:A68e2cd06X3aX12545840449X3aXX2dX7a91 .
-<bundle:///scb-web> <http://discobits.org/ontology#contains> _:A68e2cd06X3aX12545840449X3aXX2dX7a89 .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e97 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e97 <http://discobits.org/ontology#pos> "1" .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e97 <http://discobits.org/ontology#holds> <bundle:///scb-web-content-el/0> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e95 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e95 <http://discobits.org/ontology#pos> "0" .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e95 <http://discobits.org/ontology#holds> <bundle:///scb-web-content-el/2-title> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e93 <http://discobits.org/ontology#holds> <bundle:///scb-web-content-el/0-title> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e93 <http://discobits.org/ontology#pos> "0" .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e93 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e92 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e92 <http://discobits.org/ontology#pos> "1" .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e92 <http://discobits.org/ontology#holds> <bundle:///scb-web-content-el/0-content> .
+<bundle:///scb-web> <http://discobits.org/ontology#contains> _:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e99 .
+<bundle:///scb-web> <http://discobits.org/ontology#contains> _:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e91 .
 <bundle:///scb-web> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#TitledContent> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8c <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8c <http://discobits.org/ontology#pos> "1" .
-_:A68e2cd06X3aX12545840449X3aXX2dX7a8c <http://discobits.org/ontology#holds> <bundle:///scb-web-content-el/2-content> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e96 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e96 <http://discobits.org/ontology#pos> "0" .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e96 <http://discobits.org/ontology#holds> <bundle:///scb-web-content-el/1> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e91 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://discobits.org/ontology#Entry> .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e91 <http://discobits.org/ontology#pos> "0" .
+_:AX2dX5ddb458X3aX126d34f9135X3aXX2dX7e91 <http://discobits.org/ontology#holds> <bundle:///scb-web-title> .

Added: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/resources/org/apache/clerezza/rdf/web/core/upload-form.xhtml
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/resources/org/apache/clerezza/rdf/web/core/upload-form.xhtml?rev=910455&view=auto
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/resources/org/apache/clerezza/rdf/web/core/upload-form.xhtml (added)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/resources/org/apache/clerezza/rdf/web/core/upload-form.xhtml Tue Feb 16 10:33:26 2010
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+    <head>
+        <title>Upload triples</title>
+    </head>
+    <body>
+        
+            <form method="post" enctype="multipart/form-data" action="/graph">
+				<div>
+				<label for="graph">RDF File: </label><input id="graph" type="file" name="graph" /><br/>
+				<label for="name">Graph Name: </label>
+				<input type="text" id="name" name="name" value="http://tpf.localhost/content.graph" size="80"/><br/>
+				<input type="hidden" name="redirection" value="/graph/upload-form" /><br/>
+				<input type="submit" />
+				</div>
+			</form>
+
+    </body>
+</html>