📄 syn-sparql2.sh
字号:
#!/bin/bash# Query syntax examples# More testsfunction fname{ R="$1" N="$2" E="$3" [ "$E" = "" ] && E="rq" echo $(printf "$R%02d.$E" $N)}# Not in original set of testsN=0N=$((N+1)) ; testGood $(fname "syntax-general-" $N) <<EOFSELECT * WHERE { <a><b><c> }EOFN=$((N+1)) ; testGood $(fname "syntax-general-" $N) <<EOFSELECT * WHERE { <a><b>_:x }EOF## # Syntactic blank node in a filter - in the bad syntax area.## N=$((N+1)) ; testBad $(fname "syntax-general-" $N) <<EOF## SELECT * WHERE { <a><b>_:x FILTER(_:x < 3) }## EOF# Signed numbersN=$((N+1)) ; testGood $(fname "syntax-general-" $N) <<EOFSELECT * WHERE { <a><b>1 }EOFN=$((N+1)) ; testGood $(fname "syntax-general-" $N) <<EOFSELECT * WHERE { <a><b>+11 }EOFN=$((N+1)) ; testGood $(fname "syntax-general-" $N) <<EOFSELECT * WHERE { <a><b>-1 }EOFN=$((N+1)) ; testGood $(fname "syntax-general-" $N) <<EOFSELECT * WHERE { <a><b>1.0 }EOFN=$((N+1)) ; testGood $(fname "syntax-general-" $N) <<EOFSELECT * WHERE { <a><b>+1.0 }EOFN=$((N+1)) ; testGood $(fname "syntax-general-" $N) <<EOFSELECT * WHERE { <a><b>-1.0 }EOFN=$((N+1)) ; testGood $(fname "syntax-general-" $N) <<EOFSELECT * WHERE { <a><b>1.0e0 }EOFN=$((N+1)) ; testGood $(fname "syntax-general-" $N) <<EOFSELECT * WHERE { <a><b>+1.0e+1 }EOFN=$((N+1)) ; testGood $(fname "syntax-general-" $N) <<EOFSELECT * WHERE { <a><b>-1.0e-1 }EOFN=$((N+1)) ; testGood $(fname "syntax-general-" $N) <<EOF# Legal, if unusual, IRIsSELECT * WHERE { <a> <b> <?z> }EOFN=$((N+1)) ; testGood $(fname "syntax-general-" $N) <<EOF# Legal, if unusual, IRIsBASE <http://example/page.html>SELECT * WHERE { <a> <b> <#x> }EOFN=$((N+1)) ; testGood $(fname "syntax-general-" $N) <<EOF# Legal, if unusual, IRIsBASE <http://example/page.html?query>SELECT * WHERE { <a> <b> <¶m=value> }EOF# Keywords and qnames.N=0N=$((N+1)) ; testGood $(fname "syntax-keywords-" $N) <<EOF# use keyword FILTER as a namespace prefixPREFIX FILTER: <http://example.org/ns#> SELECT *WHERE { ?x FILTER:foo ?z FILTER (?z) }EOFN=$((N+1)) ; testGood $(fname "syntax-keywords-" $N) <<EOF# use keyword FILTER as a local namePREFIX : <http://example.org/ns#> SELECT *WHERE { ?x :FILTER ?z FILTER (?z) }EOFN=$((N+1)) ; testGood $(fname "syntax-keywords-" $N) <<EOF# use keyword UNION as a namespace prefixPREFIX UNION: <http://example.org/ns#> SELECT *WHERE { ?x UNION:foo ?z }EOF## More on lists# Checking white space in () and []N=0N=$((N+1)) ; testGood $(fname "syntax-lists-" $N) <<EOFPREFIX : <http://example.org/>SELECT * WHERE { () :p 1 }EOFN=$((N+1)) ; testGood $(fname "syntax-lists-" $N) <<EOFPREFIX : <http://example.org/>SELECT * WHERE { ( ) :p 1 }EOFN=$((N+1)) ; testGood $(fname "syntax-lists-" $N) <<EOFPREFIX : <http://example.org/>SELECT * WHERE { ( ) :p 1 }EOFN=$((N+1)) ; testGood $(fname "syntax-lists-" $N) <<EOFPREFIX : <http://example.org/>SELECT * WHERE { ( 1 2) :p 1 }EOFN=$((N+1)) ; testGood $(fname "syntax-lists-" $N) <<EOFPREFIX : <http://example.org/>SELECT * WHERE { ( 1 2) }EOF## Blank node N=0N=$((N+1)) ; testGood $(fname "syntax-bnode-" $N) <<EOFPREFIX : <http://example.org/>SELECT * WHERE { [] :p [] }EOFN=$((N+1)) ; testGood $(fname "syntax-bnode-" $N) <<EOFPREFIX : <http://example.org/># TabSELECT * WHERE { [ ] :p [ ] }EOFN=$((N+1)) ; testGood $(fname "syntax-bnode-" $N) <<EOFPREFIX : <http://example.org/>SELECT * WHERE { [ :p :q ] }EOF# Function callsN=0N=$((N+1)) ; testGood $(fname "syntax-function-" $N) <<EOFPREFIX q: <http://example.org/>SELECT * WHERE { FILTER (q:name()) }EOFN=$((N+1)) ; testGood $(fname "syntax-function-" $N) <<EOFPREFIX q: <http://example.org/>SELECT * WHERE { FILTER (q:name( )) }EOFN=$((N+1)) ; testGood $(fname "syntax-function-" $N) <<EOFPREFIX q: <http://example.org/>SELECT * WHERE { FILTER (q:name()) }EOFN=$((N+1)) ; testGood $(fname "syntax-function-" $N) <<EOFPREFIX q: <http://example.org/>SELECT * WHERE { FILTER (q:name(1)) . FILTER (q:name(1,2)) . FILTER (q:name(1,2))}EOF## Result forms## SelectN=0N=$((N+1)) ; testGood $(fname "syntax-form-select-" $N) <<EOFSELECT * WHERE { }EOFN=$((N+1)) ; testGood $(fname "syntax-form-select-" $N) <<EOFSELECT * { }EOF## AskN=0## N=$((N+1)) ; testGood $(fname "syntax-form-ask-" $N) <<EOF## ASK {}## EOFN=$((N+1))N=$((N+1)) ; testGood $(fname "syntax-form-ask-" $N) <<EOFASK {}EOF## ConstructN=0N=$((N+1)) ; testGood $(fname "syntax-form-construct" $N) <<EOFCONSTRUCT { ?s ?p ?o . } WHERE {?s ?p ?o}EOFN=$((N+1)) ; testGood $(fname "syntax-form-construct" $N) <<EOFCONSTRUCT { ?s ?p ?o } WHERE {?s ?p ?o}EOFN=$((N+1)) ; testGood $(fname "syntax-form-construct" $N) <<EOFCONSTRUCT { ?s <p1> <o> . ?s <p2> ?o } WHERE {?s ?p ?o}EOFN=$((N+1)) ; testGood $(fname "syntax-form-construct" $N) <<EOFCONSTRUCT { ?s <p1> <o> . ?s <p2> ?o .} WHERE {?s ?p ?o}EOFN=$((N+1)) ; testGood $(fname "syntax-form-construct" $N) <<EOFPREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>CONSTRUCT { [] rdf:subject ?s ; rdf:predicate ?p ; rdf:object ?o }WHERE {?s ?p ?o}EOFN=$((N+1)) ; testGood $(fname "syntax-form-construct" $N) <<EOFPREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>CONSTRUCT { [] rdf:subject ?s ; rdf:predicate ?p ; rdf:object ?o . }WHERE {?s ?p ?o}EOFN=$((N+1)) ; testGood $(fname "syntax-form-construct" $N) <<EOFCONSTRUCT {} WHERE {}EOF# DescribeN=0N=$((N+1)) ; testGood $(fname "syntax-form-describe" $N) <<EOFDESCRIBE <u>EOFN=$((N+1)) ; testGood $(fname "syntax-form-describe" $N) <<EOFDESCRIBE <u> ?u WHERE { <x> <q> ?u . }EOF## Dataset descriptionN=0N=$((N+1)) ; testGood $(fname "syntax-dataset-" $N) <<EOFPREFIX : <http://example.org/>SELECT ?xFROM <http://example.org/graph>WHERE {}EOFN=$((N+1)) ; testGood $(fname "syntax-dataset-" $N) <<EOFPREFIX : <http://example.org/>SELECT ?xFROM NAMED <http://example.org/graph1>WHERE {}EOFN=$((N+1)) ; testGood $(fname "syntax-dataset-" $N) <<EOFPREFIX : <http://example.org/>SELECT ?xFROM NAMED :graph1FROM NAMED :graph2WHERE {}EOFN=$((N+1)) ; testGood $(fname "syntax-dataset-" $N) <<EOFPREFIX : <http://example.org/>SELECT ?xFROM :g1FROM :g2FROM NAMED :graph1FROM NAMED :graph2WHERE {}EOF## Dataset accessN=0N=$((N+1)) ; testGood $(fname "syntax-graph-" $N) <<EOFPREFIX : <http://example.org/>SELECT *WHERE{ GRAPH ?g { } }EOF# Now bad.## N=$((N+1)) ; testGood $(fname "syntax-graph-" $N) <<EOF## PREFIX : <http://example.org/>## SELECT *## WHERE## {## GRAPH [] { } ## }## EOFN=$((N+1)) ; testGood $(fname "syntax-graph-" $N) <<EOFPREFIX : <http://example.org/>SELECT *WHERE{ GRAPH :a { } }EOFN=$((N+1)) ; testGood $(fname "syntax-graph-" $N) <<EOFPREFIX : <http://example.org/>SELECT *WHERE{ GRAPH ?g { :x :b ?a } }EOFN=$((N+1)) ; testGood $(fname "syntax-graph-" $N) <<EOFPREFIX : <http://example.org/>SELECT *WHERE{ :x :p :z GRAPH ?g { :x :b ?a } }EOFN=$((N+1)) ; testGood $(fname "syntax-graph-" $N) <<EOFPREFIX : <http://example.org/>SELECT *WHERE{ :x :p :z GRAPH ?g { :x :b ?a . GRAPH ?g2 { :x :p ?x } }}EOF## EscapesN=0N=$((N+1)) ; testGood $(fname "syntax-esc-" $N) <<EOFSELECT *WHERE { <x> <p> "\t" }EOFN=$((N+1)) ; testGood $(fname "syntax-esc-" $N) <<EOFSELECT *WHERE { <x> <p> "x\t" }EOFN=$((N+1)) ; testGood $(fname "syntax-esc-" $N) <<EOFSELECT *WHERE { <x> <p> "\tx" }EOF# Escpes in URIs, qnames and variablesN=$((N+1)) ; testGood $(fname "syntax-esc-" $N) <<EOFPREFIX : <http://example/> SELECT *WHERE { <\u0078> :\u0070 ?xx\u0078 }EOFN=$((N+1)) ; testGood $(fname "syntax-esc-" $N) <<EOFPREFIX : <http://example/> SELECT *# Comments can contain \ u# <\u0078> :\u0070 ?xx\u0078WHERE { <\u0078> :\u0070 ?xx\u0078 }EOF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -