!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. !rdf !expect @prefix my: . my:error my:is my:here. !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 . !ruleset RULE PREFIX my: { ?x a my:Header } => {?x my:processed [my:processedOn now()] } !expect @prefix xsd: . @prefix rdf: . @prefix my: . my:wossname rdf:type my:Header ; my:processedOn "Tue Sep 30 09:42:03 BST 2008"^^xsd:dateTime . !title check distinct concluded bnodes !ruleset RULE PREFIX my: { ?x a my:Header } => { [my:A ?x]. [my:B ?x] } !rdf @prefix my: . my:x a my:Header. !expect @prefix my: . [] my:A my:x . [] my:B my:x . my:x a my:Header . !title check that functors work !ruleset RULESET PREFIX my: RULE { ?x my:P ?y; my:Q ?z } => { ?x my:PQ $pq( ?y, ?z ) } RULE { ?x my:PQ $pq( ?y, ?z ) } => { ?y my:inv-P ?x. ?z my:inv-Q ?x } !rdf @prefix my: . my:x my:P my:y; my:Q my:z. !expect @prefix my: . my:x my:P my:y; my:Q my:z. my:y my:inv-P my:x. my:z my:inv-Q my:x.