<!--
   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.
-->
<html xmlns="http://www.w3.org/1999/xhtml">
  <head><title>SPARQLer Update Validator</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link rel="stylesheet" type="text/css" href="fuseki.css" />

  </head>
  <body>
    <h1>SPARQLer Update Validator</h1>

    <div class="moreindent">


      <form action="validate/update" method="post" accept-charset="UTF-8">
	  <textarea name="update" cols="70" rows="30">
PREFIX xsd:     &lt;http://www.w3.org/2001/XMLSchema#>
PREFIX rdf:     &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs:    &lt;http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl:     &lt;http://www.w3.org/2002/07/owl#>
PREFIX fn:      &lt;http://www.w3.org/2005/xpath-functions#>
PREFIX apf:     &lt;http://jena.hpl.hp.com/ARQ/property#>

</textarea>
<br/>
  Input syntax:
    <input type="radio" name="languageSyntax" value="SPARQL" checked="checked"/>SPARQL
    <input type="radio" name="languageSyntax" value="ARQ"/>SPARQL extended syntax
  <br/>
<!--
Output syntax:
  <input type="checkbox" name="outputFormat" value="sparql" checked="checked"/>SPARQL
  <input type="checkbox" name="outputFormat" value="algebra"/>SPARQL algebra
  <input type="checkbox" name="outputFormat" value="quads"/>SPARQL algebra (quads)
  <br/>
-->
  Line numbers:
  <input type="radio" name="linenumbers" value="true" checked="checked"/>Yes
  <input type="radio" name="linenumbers" value="false"/>No
  <br/>

  <input type="submit" value="Validate SPARQL Update" />
      </form>

      <hr/>
    </div>
  </body>
</html>
