<!--
   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 Query 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 Query Validator</h1>

    <div class="moreindent">

      <form action="validate/query" method="post" accept-charset="UTF-8">
	<p>
	  <textarea name="query" 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#>
PREFIX dc:      &lt;http://purl.org/dc/elements/1.1/>

SELECT ?book ?title
WHERE
   { ?book dc:title ?title }</textarea>
<br/>
  Input syntax:<br/>
    <input type="radio" name="languageSyntax" value="SPARQL" checked="checked"/>SPARQL
    <input type="radio" name="languageSyntax" value="ARQ"/>SPARQL extended syntax
  <br/>
  <br/>
Output:<br/>
  <input type="checkbox" name="outputFormat" value="sparql" checked="checked"/>SPARQL<br/>
  <input type="checkbox" name="outputFormat" value="algebra"/>SPARQL algebra<br/>
  <input type="checkbox" name="outputFormat" value="quads"/>SPARQL algebra (quads)<br/>
  <input type="checkbox" name="outputFormat" value="opt"/>SPARQL algebra
(general optimizations)<br/>
  <input type="checkbox" name="outputFormat" value="optquads"/>SPARQL algebra
(quads, general optimizations)<br/>
  <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 Query" />
	</p>
      </form>

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