SPARQL support はテキストエリアでの SPARQL クエリ記述を補助するたのめの CodeMirror アドオンです
"Ctrl+Space" または "Tab" で補完、"Ctrl+Enter" で実行

endpoit 指定

## endpoint http://example.org/                                                   * 一行目に入力

Auto-Completion

"Ctrl+Space" または "Tab" キーでインデント、変数名、PREFIX などを補完

e.g.)	
?h|             -->   ?hoge|
r|              -->   rdf:|                                                       * 小文字
F|              -->   FILTER (|)                                                  * 大文字
PREFIX obo:|    -->   PREFIX obo: <http://purl.obolibrary.org/obo/>|              * 1
<id>|           -->   <http://identifiers.org/>|                                  * 2

*1 Prefix URIは prefix.cc から取得しています。そのため、意図したものにならない場合もあります。prefix.cc には1日1個、新規登録できます
*2 個人的な短縮URIの展開。初期値は上記の例のみ。コメント行に予め記述しておくことで追加(# id:<http://identifiers.org/>)

他のタブのクエリまたは PREFIX をコピー

e.g.) 2番目のタブのクエリの PREFIX をコピー
PREFIX #2|    -->   PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>     * 3
                    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
                    PREFIX dct: <http://purl.org/dc/terms/>
		    |
e.g.) 1番目のタブのクエリ 全体をコピー
COPY #1|      -->   省略

*3 テキストエリア1行目でのみ有効

その他の補完

##|  ->   ## endpoint http://example.org/endpoint|                                * 1行目行頭のみ (直近で使用した endpoint 10個)
Def|  ->   DEFINE sql:select-option "order"|                                      * 行頭のみ (Virtuoso 用)

Tabbed Interface

右上の "+", "-" で、複数クエリを管理。ブラウザを閉じてもクエリを保持
"Ctrl+Shift" : 隣のタブに移動 ("Ctrl+Alt+Shift", "Ctrl+[1-9]")
"Ctrl+[+/-]" : タブの追加・削除(Shift不要)

innerMode

右上の "i" でモード変更
"j" で JSON 表示
結果をページ内に表示(短縮uri)
結果を取得し、'$' で始まる変数を補完(タブキー補完)

e.g.) タブ補完
$p|             -->   rdf:type
                -->   rdfs:subClassOf
                -->   piero:inRpairInSideA
                -->   piero:inRpairInSideB

Command

"Ctrl+Enter" で実効

- SPANG ライクな典型クエリ発行ショートカット

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

*4 -S (subject), -P (predicate), -O (object), -L (limit), -N (count), -G (graph list), -F (from a graph) に対応
*5 コマンド行より下のコードを消去して、置き換えます

- Font size

# font-size:20px;

- クエリ全消去

# clear_sparql_queries;                                 * 一行目に入力 (#バルス;)

Beta機能

debug用 multi-line comments
- =begin, =end の間をコメントとしてスルー (=b, =e も可, innerMode のみ)

=begin
     multi
     line
     comments
=end
   
=b multi-line
   comments =e

Predicate 検索
- "?subject ??p" 行を書いて実行すると predicate と object のサンプル表示 ("?subject ^??p" で逆引き, innerMode のみ)

### endpoint http://dbpedia.org/sparql
PREFIX dbpedia: <http://dbpedia.org/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT *
WHERE {
  dbpedia:Tokyo dbo:isPartOf ?parent .
  ?parent ??p
}

----- results bindings -----
??p	        sample
dbo:utcOffset	"+9"
owl:sameAs	http://rdf.freebase.com/ns/m.0g3bw
dbo:timeZone	dbpedia:Japan_Standard_Time
dbo:length	1.3e+06
rdfs:label	"Honshu"
dbo:country	dbpedia:Japan
...

SPARQList support

SPARQList supportSPARQList 用 markdown エディタです

利用方法

Online

SPARQL support にアクセス

UserScript

UserScript を用いることで、Virtuoso の web インターフェース等の、任意のサイトのテキストエリアで SPARQL support が利用できるようになります

sparqlSupport.user.js
ターゲットURLを "// @include" 行に記述
(or URLを変更してダウンロード)

要: userscript manager

Embed

ユーザのサイトに埋め込むことができます

要: CodeMirror

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

e.g.

<html>
  <head>
    <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">
  </head>
  <body>
    <div>
      <form action="http://endpoint" method="get">
	<textarea id="query" cols="100" rows="15">
      </textarea>
      <input type="submit" value="Run Query" id="submit_button">
      </form>
    </div>
  <script type="text/javascript">
     var id = "query";
     var editor = CodeMirror.fromTextArea(document.getElementById(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; }}
     });
   </script>
  </body>
</html>
      

最近の履歴

SPARQL support

SPARQList support