Syntax
134 / 138 passed4 not passedsyntax-ruleset-structure-01.srlpassedsyntax-ruleset-structure-02.srlpassed
source
BASE <http://example/base> PREFIX : <http://example/> PREFIX ns: <http://example/ns#>
syntax-ruleset-structure-03.srlpassed
source
BASE <http://example/base1> PREFIX : <http://example/> BASE <http://example/base2> PREFIX ns: <http://example/ns#>
syntax-ruleset-structure-04.srlpassed
source
DATA {}
RULE {} WHERE {}syntax-ruleset-structure-05.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { }
PREFIX ns: <http://example/ns#>
RULE {} WHERE { :x :p ns:o }syntax-rule-terms-07.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { :s :p :o }syntax-rule-terms-08.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { ?s :p [] }syntax-rule-terms-09.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { ?s :p _:b . }syntax-rule-terms-10.srlpassed
source
PREFIX : <http://example/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
RULE { } WHERE { ?s :p 123e+10 }syntax-rule-terms-11.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { ?s :p 123 }syntax-rule-terms-12.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { ?s :p -123.5e+10 }syntax-rule-terms-13.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { ?s :p <<( :a :b :c )>> }syntax-rule-terms-14.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { :s :p "string" }syntax-rule-terms-15.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { :s :p "abc"@en }syntax-rule-terms-16.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { :s :p "abc"@en--ltr }syntax-rule-paths-01.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { :sx :p1/:p2 :o }syntax-rule-paths-02.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { ?x ^:p1/^:p2 ?o }syntax-rule-paths-03.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { ?x :p1/a ?o }syntax-rule-elements-filter-01.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { :s :p ?x FILTER( ?x > 0 ) }syntax-rule-elements-filter-02.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { FILTER( true ) ?s ?p ?o FILTER ( isURI(?s) ) }syntax-rule-elements-filter-03.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { FILTER( true ) ?s ?p ?o NOT { ?x ?y ?o FILTER ( isURI(?s) ) } }syntax-rule-elements-not-01.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { :sx :p1 :o NOT { ?a ?b ?c } }syntax-rule-elements-not-02.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { NOT { ?a ?b ?c } ?s ?p ?o }syntax-rule-elements-not-03.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { NOT { :a :b :c1, :c2 , [ ?q ?z ] } ?s ?p ?o }syntax-rule-elements-not-04.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { NOT { :a :b :c {| :saidBy :person |} } }syntax-reification-01.srlpassed
source
PREFIX : <http://example/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
RULE { } WHERE { ?s :p << :a :b :c >> }syntax-reification-02.srlpassed
source
PREFIX : <http://example/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
RULE { } WHERE { << :a :b :c >> }syntax-reification-03.srlpassed
source
PREFIX : <http://example/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
RULE { } WHERE { ?s :p << :a :b :c ~:r >> }syntax-reification-04.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { :s :p :o {| :q :r |} . }syntax-reification-05.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { :s :p :o ~_:b {| :q :r |} . }syntax-reification-06.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { :s :p :o {| :q1 :r1 , :r2 |} . }syntax-reification-07.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { :s :p :o {| :q1 :r1 ; :q2 :r2 |} . }syntax-reification-08.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { :s :p :o ~:r1 {| :q1 :r1 |} ~_:r2 {| :q2 :r2 |} . }syntax-data-01.srlpassed
source
PREFIX : <http://example/>
DATA { }syntax-data-02.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p :o . }syntax-data-03.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p :o }syntax-data-04.srlpassed
source
PREFIX : <http://example/>
DATA { :s a :T }syntax-data-05.srlpassed
source
PREFIX : <http://example/>
DATA {
# Symmetric RDF
123 :q 456 .
}syntax-data-06.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p1 "abc", "abc"@en , "abc"@en--ltr . }syntax-data-07.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p1 1, 1.0, 1e0 . }syntax-data-08.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p1 true, false }syntax-data-09.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p1 "xyz"^^:datatype }syntax-data-10.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p :o1, :o2 . }syntax-data-11.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p :o {| :q1 "abc", "abc"@en , "abc"@EN-GB , "abc"@en--ltr ; :q2 1, true |} . }syntax-data-12.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p :o ~:r {| :q :z |} . }syntax-data-13.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p :o ~:r1 {| :q1 :z1 |} ~_:B {| :q1 :z1 |} }syntax-data-14.srlpassed
source
PREFIX : <http://example/>
DATA { :x :p :z ~_:B {| :q _:B |} }syntax-data-15.srlpassed
source
PREFIX : <http://example/>
DATA { :a :b :c ~:r . }syntax-data-16.srlpassed
source
PREFIX : <http://example/>
DATA { << :s :p :o >> }syntax-data-17.srlpassed
source
PREFIX : <http://example/>
DATA { << :s :p :o >> . }syntax-data-18.srlpassed
source
PREFIX : <http://example/>
DATA { << :a :b :c ~:r >> . }syntax-data-19.srlpassed
source
PREFIX : <http://example/>
DATA { << :s :p :o >> :q << :s1 :p1 :o1 >> . }syntax-data-20.srlpassed
source
PREFIX : <http://example/>
DATA { <<( :s :p :o )>> :q <<( :s1 :p1 :o1 )>> . }syntax-data-21.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p :o }
DATA { :x :y :z . }syntax-template-01.srlpassed
source
PREFIX : <http://example/>
RULE { ?a ?b ?c } WHERE { ?a ?b ?c }syntax-template-02.srlpassed
source
PREFIX : <http://example/>
RULE { ?a a :T } WHERE { ?a ?b ?c }syntax-template-03.srlpassed
source
PREFIX : <http://example/>
RULE { ?a ?b :c1 , :c2 } WHERE { ?a ?b ?c }syntax-template-04.srlpassed
source
PREFIX : <http://example/>
RULE { ?a ?b "abc", "abc"@en , "abc"@en--ltr . } WHERE { ?a ?b ?c }syntax-template-05.srlpassed
source
PREFIX : <http://example/>
RULE { ?a :p1 1, 1.0, 1e0 . } WHERE { ?a ?b ?c }syntax-template-06.srlpassed
source
PREFIX : <http://example/>
RULE { ?a :p1 true, false . } WHERE { ?a ?b ?c }syntax-template-07.srlpassed
source
PREFIX : <http://example/>
RULE { ?a :p "xyz"^^:datatype } WHERE { ?a ?b ?c }syntax-template-08.srlpassed
source
PREFIX : <http://example/>
RULE { :s :p :o {| ?b ?c , "abc", "abc"@en , "abc"@en--ltr ; :q2 1, true |} } WHERE { ?a ?b ?c }syntax-template-09.srlpassed
source
PREFIX : <http://example/>
RULE { :s :p :o ~:r {| :q :z |} } WHERE { ?a ?b ?c }syntax-template-10.srlpassed
source
PREFIX : <http://example/>
RULE { :s :p ?a ~ ?c1 {| ?b ?c2 |} } WHERE { ?a ?b ?c }syntax-template-11.srlpassed
source
PREFIX : <http://example/>
RULE { :s :p :o ~:r1 {| :q1 :z1 |} ~_:B {| :q1 :z1 |} } WHERE { ?a ?b ?c }syntax-template-12.srlpassed
source
PREFIX : <http://example/>
RULE { :x :p :z ~_:B {| :q _:B |} } WHERE { ?a ?b ?c }syntax-template-13.srlpassed
source
PREFIX : <http://example/>
RULE { << ?a ?b ?c >> } WHERE { ?a ?b ?c }syntax-template-14.srlpassed
source
PREFIX : <http://example/>
RULE { << ?a ?b ?c ~:r >> } WHERE { ?a ?b ?c }syntax-template-15.srlpassed
source
PREFIX : <http://example/>
RULE { << :s :p :o >> :q << ?a ?b ?c >> } WHERE { ?a ?b ?c }syntax-template-16.srlpassed
source
PREFIX : <http://example/>
RULE { <<( ?a ?b :o )>> :q <<( :s :p ?c )>> } WHERE { ?a ?b ?c }syntax-template-17.srlpassed
source
PREFIX : <http://example/>
RULE { ?a :p () } WHERE { ?a ?b ?c }syntax-template-18.srlpassed
source
PREFIX : <http://example/>
RULE { ?a ?b (1) } WHERE { ?a ?b ?c }syntax-template-19.srlpassed
source
PREFIX : <http://example/>
RULE { ?a ?b (?c) } WHERE { ?a ?b ?c }syntax-template-20.srlpassed
source
PREFIX : <http://example/>
RULE { :x :q ("a" :x true) } WHERE { ?a ?b ?c }syntax-template-21.srlpassed
source
PREFIX : <http://example/>
RULE { () :q :x } WHERE { ?a ?b ?c }syntax-template-22.srlpassed
source
PREFIX : <http://example/>
RULE { (2) :q :x } WHERE { ?a ?b ?c }syntax-template-23.srlpassed
source
PREFIX : <http://example/>
RULE { (1 2 3) :p :z } WHERE { ?a ?b ?c }syntax-template-24.srlpassed
source
PREFIX : <http://example/>
RULE { [ ?b ?c ] } WHERE { ?a ?b ?c }syntax-template-25.srlpassed
source
PREFIX : <http://example/>
RULE { [ ?b ?c ; :p :z ] } WHERE { ?a ?b ?c }syntax-template-26.srlpassed
source
PREFIX : <http://example/>
RULE { [ ?b ?c ; :p :z ] :q :z } WHERE { ?a ?b ?c }syntax-template-27.srlpassed
source
PREFIX : <http://example/>
RULE { [ ?b ?c ; :p :z ] :q [] } WHERE { ?a ?b ?c }syntax-pattern-01.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { ?a ?b ?c }syntax-pattern-02.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { ?a a :T }syntax-pattern-03.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { ?a ?b :c1 , :c2 }syntax-pattern-04.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { ?a ?b "abc", "abc"@en , "abc"@en--ltr . }syntax-pattern-05.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { ?a :p1 1, 1.0, 1e0 . }syntax-pattern-06.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { ?a :p1 true, false . }syntax-pattern-07.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { ?a :p "xyz"^^:datatype }syntax-pattern-08.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { :s :p :o {| ?b ?c , "abc", "abc"@en , "abc"@en--ltr ; :q2 1, true |} }syntax-pattern-09.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { :s :p :o ~:r {| :q :z |} }syntax-pattern-10.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { :s :p ?a ~ ?c1 {| ?b ?c2 |} }syntax-pattern-11.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { :s :p :o ~:r1 {| :q1 :z1 |} ~_:B {| :q1 :z1 |} }syntax-pattern-12.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { :x :p :z ~_:B {| :q _:B |} }syntax-pattern-13.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { << ?a ?b ?c >> }syntax-pattern-14.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { << ?a ?b ?c ~:r >> }syntax-pattern-15.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { << :s :p :o >> :q << ?a ?b ?c >> }syntax-pattern-16.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { <<( ?a ?b :o )>> :q <<( :s :p ?c )>> }syntax-pattern-17.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { ?a :p () }syntax-pattern-18.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { ?a ?b (1) }syntax-pattern-19.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { ?a ?b (?c) }syntax-pattern-20.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { :x :q ("a" :x true) }syntax-pattern-21.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { () :q :x }syntax-pattern-22.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { (2) :q :x }syntax-pattern-23.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { (1 2 3) :p :z }syntax-pattern-24.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { [ ?b ?c ] }syntax-pattern-25.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { [ ?b ?c ; :p :z ] }syntax-pattern-26.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { [ ?b ?c ; :p :z ] :q :z }syntax-pattern-27.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { [ ?b ?c ; :p :z ] :q [] }syntax-rule-bad-01.srlpassed
source
PREFIX : <http://example/> RULE
syntax-rule-bad-02.srlpassed
source
PREFIX : <http://example/>
RULE {}syntax-rule-bad-03.srlpassed
source
PREFIX : <http://example/>
RULE {} WHEREsyntax-rule-bad-04.srlfailedParse succeeded (expected failure)
source
RULE {} WHERE {:s :p :o }syntax-rule-bad-05.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE {:s [] :o }syntax-rule-bad-06.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE {?s ?p ?o NOT { ?a ?b ?c { NOT ?d ?e ?f } } }syntax-rule-terms-bad-01.srlfailedParse succeeded (expected failure)
source
PREFIX : <http://example/>
RULE { } WHERE { :s :p "abc"@en--LTR }syntax-rule-terms-bad-02.srlpassed
source
PREFIX : <http://example/>
## Blank node labels don't end in . so it becomes a DOT
RULE { } WHERE { :s :p _:label. ; :q "" }syntax-rule-terms-bad-03.srlpassed
source
PREFIX : <http://example/>
## Decimals do not end in . so it becomes a DOT
RULE { } WHERE { :s :p 123. ; :q "" }syntax-data-bad-01.srlpassed
source
PREFIX : <http://example/>
DATA { a :p :o }syntax-data-bad-02.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p a }syntax-data-bad-03.srlpassed
source
PREFIX : <http://example/>
DATA { :s "literal" :o }syntax-data-bad-04.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p ?o }syntax-data-bad-05.srlpassed
source
PREFIX : <http://example/>
DATA { :s ?p :o }syntax-data-bad-06.srlpassed
source
PREFIX : <http://example/>
DATA { ?s :p :o }syntax-data-bad-07.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p :o ~:r {| |} }syntax-data-bad-08.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p :o ~ ?r {| :p :z |} }syntax-data-bad-09.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p "xyx"^^:datatype. . }syntax-data-bad-10.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p 1. . }syntax-data-bad-11.srlpassed
source
PREFIX : <http://example/>
DATA { :s :p _:b. . }syntax-template-bad-01.srlfailedParse succeeded (expected failure)
source
PREFIX : <http://example/>
RULE { :s :p "abc"@en--LTR } WHERE { ?a ?b ?c }syntax-template-bad-02.srlpassed
source
PREFIX : <http://example/>
RULE { <iri with space> :p "abc" } WHERE { ?a ?b ?c }syntax-template-bad-03.srlpassed
source
PREFIX : <http://example/>
RULE { a :p "abc" } WHERE { ?a ?b ?c }syntax-template-bad-04.srlpassed
source
PREFIX : <http://example/>
RULE { :s :p :o ~:r {| |} } WHERE { ?a ?b ?c }syntax-template-bad-05.srlpassed
source
PREFIX : <http://example/>
RULE { :s :p1/:p2 :o } WHERE { ?a ?b ?c }syntax-template-bad-06.srlpassed
source
PREFIX : <http://example/>
RULE { :s :p :o {| :p1/:p2 :oz } WHERE { ?a ?b ?c }syntax-pattern-bad-01.srlfailedParse succeeded (expected failure)
source
PREFIX : <http://example/>
RULE { } WHERE { :s :p "abc"@en--LTR }syntax-pattern-bad-02.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { <iri with space> :p "abc" }syntax-pattern-bad-03.srlpassed
source
PREFIX : <http://example/>
RULE { } WHERE { a :p "abc" }syntax-pattern-bad-04.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE { :s :p :o ~:r {| |} }Well-formedness
8 / 8 passedall passingwellformed-01.srlpassed
source
PREFIX : <http://example>
RULE { ?s ?p ?o }
WHERE {
?s ?p ?o
}wellformed-02.srlpassed
source
PREFIX : <http://example>
RULE { ?s ?p ?o }
WHERE {
?s ?p ?o . FILTER(?o < 50)
}wellformed-03.srlpassed
source
PREFIX : <http://example/>
RULE { ?s ?p ?o }
WHERE {
?s :p ?o .
SET ( ?p := :p )
}wellformed-04.srlpassed
source
PREFIX : <http://example/>
RULE { ?s ?p ?o }
WHERE {
?s :p :z .
NOT { ?s :q ?y }
?s :q ?o
SET(?p := :p)
}wellformed-bad-01.srlpassed
source
PREFIX : <http://example/>
RULE { ?s ?p ?o }
WHERE {
?s ?p ?o
SET(?o := 123)
}wellformed-bad-02.srlpassed
source
PREFIX : <http://example/>
RULE { :s :p ?x }
WHERE {
SET(?x := 1)
SET(?x := 1)
}wellformed-bad-03.srlpassed
source
PREFIX : <http://example/>
RULE { ?s ?p ?o }
WHERE {
FILTER(?o < 50)
?s ?p ?o
}wellformed-bad-04.srlpassed
source
PREFIX : <http://example/>
RULE { ?s ?p ?o }
WHERE {
?s ?p ?z
}Stratification
9 / 9 passedall passingstratification-01.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE {}stratification-02.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE {?s ?p ?o }stratification-03.srlpassed
source
PREFIX : <http://example/>
RULE {} WHERE {:s :p ?o . NOT { :x :data ?z } }stratification-04.srlpassed
source
PREFIX : <http://example/>
RULE { ?s :p "abc" } WHERE { NOT { ?s :p "XYZ" } SET ( ?s := :sz ) }
RULE { :s :p "ABC" } WHERE { ?s :q :z }stratification-05.srlpassed
source
PREFIX : <http://example/>
RULE { [] :q "Rule" } WHERE { ?s :z ?o }stratification-bad-01.srlpassed
source
PREFIX : <http://example/>
RULE { ?s :p "ABC" } WHERE { ?s :data "" . NOT { ?s :p "ABC" } }stratification-bad-02.srlpassed
source
PREFIX : <http://example/>
RULE { ?s :p "abc" } WHERE { ?s :data "" . NOT { ?s :p "ABC" } }
RULE { :s :p "ABC" } WHERE { NOT { ?x :p "abc" } ?s :data "" }stratification-bad-03.srlpassed
source
PREFIX : <http://example/>
RULE { [] :q "Rule" } WHERE { ?s :q ?o }stratification-bad-04.srlpassed
source
PREFIX : <http://example/>
RULE { [] :q ?o } WHERE { ?s :p ?o }
RULE { ?s :p "Rule" } WHERE { ?s ?p "Rule" }
RULE { ?s :q "Rule" } WHERE { ?s :q ?o }Evaluation
11 / 11 passedall passingEval-basic-01passed
ruleset
PREFIX : <http://example/>
RULE { :x :q ?o } WHERE { :s :p ?o }data
PREFIX : <http://example/> :s :p :o .
expected
PREFIX : <http://example/> ## ## Data graph ## :s :p :o ## ## ## Inferred ## :x :q :o ## ## ## Output graph ## :s :p :o ## :x :q :o :x :q :o .
inferred (actual)
:x :q :o .
Eval-basic-02passed
ruleset
PREFIX : <http://example/>
RULE { :x :q ?o } WHERE { :s :p ?z . ?z :q ?o }data
PREFIX : <http://example/> :s :p :z . :z :q :o .
expected
PREFIX : <http://example/> :x :q :o .
inferred (actual)
:x :q :o .
Eval-data-01passed
ruleset
PREFIX : <http://example/>
DATA { :a :b :c }data
# Empty graph
expected
PREFIX : <http://example/> :a :b :c .
inferred (actual)
:a :b :c .
Eval-data-02passed
ruleset
PREFIX : <http://example/>
DATA { :a :b :c1 , :c2 }
RULE {} WHERE {}
DATA { :a :b1 :c1 ;
:b2 :c2
}data
# Empty graph
expected
PREFIX : <http://example/> :a :b :c1 . :a :b :c2 . :a :b1 :c1 . :a :b2 :c2 .
inferred (actual)
:a :b :c1,
:c2 ;
:b1 :c1 ;
:b2 :c2 .Eval-negation-01passed
ruleset
PREFIX : <http://example/>
RULE { :x :p ':q absent' } WHERE { NOT { ?s :q ?o } }data
# Empty graph
expected
PREFIX : <http://example/> :x :p ':q absent' .
inferred (actual)
:x :p ":q absent" .
Eval-rdfs-subclassof-1passed
ruleset
## RDFS (without no axoimatic triples)
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
## subClassOf
RULE { ?a rdfs:subClassOf ?c } WHERE { ?a rdfs:subClassOf ?b . ?b rdfs:subClassOf ?c }
RULE { ?a rdf:type ?y } WHERE { ?a rdf:type ?x . ?x rdfs:subClassOf ?y }
## subPropertyOf
RULE { ?a rdfs:subPropertyOf ?c } WHERE { ?a rdfs:subPropertyOf ?b . ?b rdfs:subPropertyOf ?c }
RULE { ?a ?prop ?o } WHERE { ?a ?subProp ?o . ?subProp rdfs:subPropertyOf ?prop }
## Domain
RULE { ?a rdf:type ?y } WHERE { ?a ?p ?o . ?p rdfs:domain ?y }
## Range
RULE { ?a rdf:type ?y } WHERE { ?s ?p ?a . ?p rdfs:range ?y }data
PREFIX : <http://example/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> :A rdf:type :S . :S rdfs:subClassOf :T1 . :T1 rdfs:subClassOf :T2 .
expected
PREFIX : <http://example/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> :S rdfs:subClassOf :T2 . :A rdf:type :T1 . :A rdf:type :T2 .
inferred (actual)
:A a :T1,
:T2 .
:S rdfs:subClassOf :T2 .Eval-rdfs-subproperty-1passed
ruleset
## RDFS (without no axoimatic triples)
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
## subClassOf
RULE { ?a rdfs:subClassOf ?c } WHERE { ?a rdfs:subClassOf ?b . ?b rdfs:subClassOf ?c }
RULE { ?a rdf:type ?y } WHERE { ?a rdf:type ?x . ?x rdfs:subClassOf ?y }
## subPropertyOf
RULE { ?a rdfs:subPropertyOf ?c } WHERE { ?a rdfs:subPropertyOf ?b . ?b rdfs:subPropertyOf ?c }
RULE { ?a ?prop ?o } WHERE { ?a ?subProp ?o . ?subProp rdfs:subPropertyOf ?prop }
## Domain
RULE { ?a rdf:type ?y } WHERE { ?a ?p ?o . ?p rdfs:domain ?y }
## Range
RULE { ?a rdf:type ?y } WHERE { ?s ?p ?a . ?p rdfs:range ?y }data
PREFIX : <http://example/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> :s :p :o . :p rdfs:subPropertyOf :p1 . :p1 rdfs:subPropertyOf :p2 .
expected
PREFIX : <http://example/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> :p rdfs:subPropertyOf :p2 . :s :p1 :o . :s :p2 :o .
inferred (actual)
:p rdfs:subPropertyOf :p2 .
:s :p1 :o ;
:p2 :o .Eval-rdfs-domain-1passed
ruleset
## RDFS (without no axoimatic triples)
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
## subClassOf
RULE { ?a rdfs:subClassOf ?c } WHERE { ?a rdfs:subClassOf ?b . ?b rdfs:subClassOf ?c }
RULE { ?a rdf:type ?y } WHERE { ?a rdf:type ?x . ?x rdfs:subClassOf ?y }
## subPropertyOf
RULE { ?a rdfs:subPropertyOf ?c } WHERE { ?a rdfs:subPropertyOf ?b . ?b rdfs:subPropertyOf ?c }
RULE { ?a ?prop ?o } WHERE { ?a ?subProp ?o . ?subProp rdfs:subPropertyOf ?prop }
## Domain
RULE { ?a rdf:type ?y } WHERE { ?a ?p ?o . ?p rdfs:domain ?y }
## Range
RULE { ?a rdf:type ?y } WHERE { ?s ?p ?a . ?p rdfs:range ?y }data
PREFIX : <http://example/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> :p rdfs:domain :T. :s :p "123" .
expected
PREFIX : <http://example/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> :s rdf:type :T .
inferred (actual)
:s a :T .
Eval-rdfs-domain-2passed
ruleset
## RDFS (without no axoimatic triples)
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
## subClassOf
RULE { ?a rdfs:subClassOf ?c } WHERE { ?a rdfs:subClassOf ?b . ?b rdfs:subClassOf ?c }
RULE { ?a rdf:type ?y } WHERE { ?a rdf:type ?x . ?x rdfs:subClassOf ?y }
## subPropertyOf
RULE { ?a rdfs:subPropertyOf ?c } WHERE { ?a rdfs:subPropertyOf ?b . ?b rdfs:subPropertyOf ?c }
RULE { ?a ?prop ?o } WHERE { ?a ?subProp ?o . ?subProp rdfs:subPropertyOf ?prop }
## Domain
RULE { ?a rdf:type ?y } WHERE { ?a ?p ?o . ?p rdfs:domain ?y }
## Range
RULE { ?a rdf:type ?y } WHERE { ?s ?p ?a . ?p rdfs:range ?y }data
PREFIX : <http://example/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> :p rdfs:domain :T1 . :T1 rdfs:subClassOf :T2 . :s :p "123" .
expected
PREFIX : <http://example/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> :s rdf:type :T1 . :s rdf:type :T2 .
inferred (actual)
:s a :T1,
:T2 .Eval-rdfs-range-1passed
ruleset
## RDFS (without no axoimatic triples)
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
## subClassOf
RULE { ?a rdfs:subClassOf ?c } WHERE { ?a rdfs:subClassOf ?b . ?b rdfs:subClassOf ?c }
RULE { ?a rdf:type ?y } WHERE { ?a rdf:type ?x . ?x rdfs:subClassOf ?y }
## subPropertyOf
RULE { ?a rdfs:subPropertyOf ?c } WHERE { ?a rdfs:subPropertyOf ?b . ?b rdfs:subPropertyOf ?c }
RULE { ?a ?prop ?o } WHERE { ?a ?subProp ?o . ?subProp rdfs:subPropertyOf ?prop }
## Domain
RULE { ?a rdf:type ?y } WHERE { ?a ?p ?o . ?p rdfs:domain ?y }
## Range
RULE { ?a rdf:type ?y } WHERE { ?s ?p ?a . ?p rdfs:range ?y }data
PREFIX : <http://example/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> :p rdfs:range :T. :s :p :o .
expected
PREFIX : <http://example/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> :o rdf:type :T .
inferred (actual)
:o a :T .
Eval-rdfs-range-2passed
ruleset
## RDFS (without no axoimatic triples)
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
## subClassOf
RULE { ?a rdfs:subClassOf ?c } WHERE { ?a rdfs:subClassOf ?b . ?b rdfs:subClassOf ?c }
RULE { ?a rdf:type ?y } WHERE { ?a rdf:type ?x . ?x rdfs:subClassOf ?y }
## subPropertyOf
RULE { ?a rdfs:subPropertyOf ?c } WHERE { ?a rdfs:subPropertyOf ?b . ?b rdfs:subPropertyOf ?c }
RULE { ?a ?prop ?o } WHERE { ?a ?subProp ?o . ?subProp rdfs:subPropertyOf ?prop }
## Domain
RULE { ?a rdf:type ?y } WHERE { ?a ?p ?o . ?p rdfs:domain ?y }
## Range
RULE { ?a rdf:type ?y } WHERE { ?s ?p ?a . ?p rdfs:range ?y }data
PREFIX : <http://example/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> :p rdfs:range :T1 . :T1 rdfs:subClassOf :T2 . :s :p :o .
expected
PREFIX : <http://example/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> :o rdf:type :T1 . :o rdf:type :T2 .
inferred (actual)
:o a :T1,
:T2 .Targeting extension (opt-in, NOT W3C-spec)
3 / 3 passedall passingOpt-in extension — not part of the W3C SHACL 1.2 specification.
targeting-adult-01passed
ruleset
PREFIX ex: <http://example.org/>
RULE ex:r FOR ?this IN ex:AdultShape { ?this ex:status ex:adult } WHERE { ?this ex:age ?a }data
@prefix ex: <http://example.org/> . ex:Alice a ex:Person ; ex:age 30 . ex:Bob a ex:Person ; ex:age 10 .
shapes
@prefix sh: <http://www.w3.org/ns/shacl#> . @prefix ex: <http://example.org/> . ex:AdultShape a sh:NodeShape ; sh:targetClass ex:Person ; sh:property [ sh:path ex:age ; sh:minCount 1 ; sh:minInclusive 18 ] .
expected
@prefix ex: <http://example.org/> . ex:Alice ex:status ex:adult .
inferred (actual)
ex:Alice ex:status ex:adult .
targeting-conformance-gate-01passed
ruleset
PREFIX ex: <http://example.org/>
RULE ex:r FOR ?e IN ex:EmployeeShape { ?e a ex:Employee } WHERE { ?e ex:worksFor ?c }data
@prefix ex: <http://example.org/> . ex:Eve a ex:Person ; ex:worksFor ex:Acme . ex:Frank a ex:Person .
shapes
@prefix sh: <http://www.w3.org/ns/shacl#> . @prefix ex: <http://example.org/> . ex:EmployeeShape a sh:NodeShape ; sh:targetClass ex:Person ; sh:property [ sh:path ex:worksFor ; sh:minCount 1 ] .
expected
@prefix ex: <http://example.org/> . ex:Eve a ex:Employee .
inferred (actual)
ex:Eve a ex:Employee .
targeting-inferred-membership-01passed
ruleset
PREFIX ex: <http://example.org/>
RULE { ?x ex:age 40 } WHERE { ?x ex:bornYear ?y }
RULE ex:r FOR ?this IN ex:AdultShape { ?this ex:status ex:adult } WHERE { ?this ex:age ?a }data
@prefix ex: <http://example.org/> . ex:Dana a ex:Person ; ex:bornYear 1980 .
shapes
@prefix sh: <http://www.w3.org/ns/shacl#> . @prefix ex: <http://example.org/> . ex:AdultShape a sh:NodeShape ; sh:targetClass ex:Person ; sh:property [ sh:path ex:age ; sh:minCount 1 ; sh:minInclusive 18 ] .
expected
@prefix ex: <http://example.org/> . ex:Dana ex:age 40 . ex:Dana ex:status ex:adult .
inferred (actual)
ex:Dana ex:age 40 ;
ex:status ex:adult .No tests match your search.