!title nothing from nothing !comment The empty ruleset applied to the empty model generates the empty model. !ruleset ruleset "empty" !rdf !expect !ruleset !rdf @prefix my: . my:x my:p my:q. !expect @prefix my: . my:x my:p my:q. !title the first example !ruleset RULE PREFIX my: PREFIX myRules: { ?x a my:Header } => { ?x my:processedBy myRules:A } !rdf @prefix my: . my:wossname a my:Header. !expect @prefix my: . @prefix myRules: . my:wossname a my:Header ; my:processedBy myRules:A . !title introducing filters !rdf @prefix my: . my:x my:p 1 . !ruleset RULESET "trivial filtration" PREFIX my: RULE "A" { my:x my:p ?v FILTER false } => { my:x a my:FALSE } RULE "B" { my:x my:p ?v FILTER true } => { my:x a my:TRUE } !expect @prefix my: . my:x my:p 1 . my:x a my:TRUE. !title relational filters !rdf @prefix my: . my:x my:p my:x. !ruleset RULESET "relational filtration" PREFIX my: RULE "A" { ?x ?P ?y FILTER ?x = ?y } => { ?P a my:Reflexed } !expect @prefix my: . my:x my:p my:x. my:p a my:Reflexed. !title functors for j2 compatability !ruleset RULESET "with functors" PREFIX my: PREFIX rb: RULE "A" { ?R owl:onProperty ?P; owl:hasValue ?V } => { ?R rb:hasValue $hasValue(?P, ?V) } RULE "B" { ?R rb:hasValue $hasValue(?P, ?V). ?X ?P ?V } => { ?X a ?R } !rdf @prefix my: . @prefix owl: . my:R owl:onProperty my:P; owl:hasValue my:V. my:X my:P my:V. !expect @prefix my: . @prefix owl: . my:R owl:onProperty my:P; owl:hasValue my:V. my:X my:P my:V. my:X a my:R.