SPARQL support is an addon of the CodeMirror to support editing SPARQL queries in a textarea.
Auto-Completion : "Ctrl+Space" or "Tab", Submit : "Ctrl+Enter"


Complement indents, variable names and prefixes with the "Ctrl+Space" or "Tab" key.

?h|             -->   ?hoge|
r|              -->   rdf:|                                                       *lower case
F|              -->   FILTER (|)                                                  *upper case
PREFIX obo:|    -->   PREFIX obo: <>|              *1
<id>|           -->   <>|                                  *2

*1 Prefix URIs will be taken from
*2 Private abridgement of URIs. Default has only this example. User is able to add in the comment line.(format : # id:<>)

Copy code and prefixes in other query.

e.g.) copy the 2nd query prefixes
PREFIX #2|    -->   PREFIX rdf: <>     *3
                    PREFIX rdfs: <>
                    PREFIX dct: <>
e.g.) copy the 1st query
COPY #1|      -->   omit

*3 run in the 1st line of textarea.

Other completion

###|  ->   ### endpoint|                             * 1st line only
Def|  ->   DEFINE sql:select-option "order"|         * (for Virtuoso)

set endpoint

### endpoint                       * 1st line only

Tabbed Interface

Available multiple queries management by the '+' and the '-' button in the upper right corner. Queries are retained when the browser is restarted.
"Ctrl+Shift" : move to neighbor tab ("Ctrl+Alt+Shift", "Ctrl+[1-9]")
"Ctrl+[+/-]" : add/remove tab(w/o Shift)


Change the mode to click the 'i' button in the upper right corner.
Output results in new element in the current window.
Complement variable names start with '$'.(by the tab key)

$p|             -->   rdf:type
                -->   rdfs:subClassOf
                -->   piero:inRpairInSideA
                -->   piero:inRpairInSideB


Submit with "Ctrl+Enter"

- SPANG like shortcut.

# spang -S tax:9606 -L 100;|    -->   # spang -S tax:9606 -L 100;                 *4, 5
                                      SELECT *
                                      WHERE {
				        tax:9606 ?p ?o .
		                      LIMIT 100|

*4 supported options: -S (subject), -P (predicate), -O (object), -L (limit), -N (count), -G (graph list), -F (from a graph)
*5 rewrite under the command line.

- Font size

# font-size:20px;

- Clear all queries

# clear_sparql_queries;                                 * 1st line only


Multi-line comments for debug
- skip through from '=begin' to '=end' (available '=b' and '=e', support in the innerMode only)

=b multi-line
   comments =e

Predicate search
- show predicates and sample of objects: "?subject ??p" (reverse search: "?subject ^??p", support in the innerMode only)

### endpoint
PREFIX dbpedia: <>
PREFIX dbo: <>
  dbpedia:Tokyo dbo:isPartOf ?parent .
  ?parent ??p

----- results bindings -----
??p	        sample
dbo:utcOffset	"+9"
dbo:timeZone	dbpedia:Japan_Standard_Time
dbo:length	1.3e+06
rdfs:label	"Honshu"
dbo:country	dbpedia:Japan

Demo or Simple page version 0.7.8

or UserScript

Set target URLs in "// @include" line
(or DL modified js)

require: userscript manager

or Embed

require: CodeMirror

	|   +---lib/
 	|   |   +---codemirror.js
	|   |   +---codemirror.css
	|   |
   	|   +---mode/sparql/sparql.js # colors mod. & fixed indent
	+---sparql-suppor.js # 


    <script type="text/javascript" src="./js/codemirror/lib/codemirror.js"></script>
    <script type="text/javascript" src="./js/codemirror/mode/sparql/sparql.js"></script>
    <script type="text/javascript" src="./js/codemirror/addon/edit/matchbrackets.js"></script>
    <script type="text/javascript" src="./js/codemirror/addon/edit/closebrackets.js"></script>
    <link rel="stylesheet" type="text/css" href="./js/codemirror/lib/codemirror.css">
    <script type="text/javascript" src="./js/sparql-support.js"></script>
    <link rel="stylesheet" type="text/css" href="./css/base.css">
      <form action="http://endpoint" method="get">
	<textarea id="query" cols="100" rows="15">
      <input type="submit" value="Run Query" id="submit_button">
   <script type="text/javascript">
    var id = "query";
    var editor = CodeMirror.fromTextArea(document.getElementsByName(id), {
       mode: "application/sparql-query",
       matchBrackets: true,
       autoCloseBrackets: true,
       lineNumbers: true,
       sparqlSupportAutoComp: id,      // Auto completion
       sparqlSupportQueries: id,       // Tabbed interface
       sparqlSupportInnerMoed: id,     // Inner mode
       extraKeys: {"Tab": function(instance) { return false; },
                   "Ctrl-Space": function(instance) { return false; }}