(deftemplate triple (declare (ordered TRUE))) (deftemplate error (slot message)) (defrule example-rule (triple ?p rdf:type owl:TransitiveProperty) (triple ?x ?p ?y) (triple ?y ?p ?z) => (assert (triple ?x ?p ?z)) ) (deffacts triples (triple ex:P rdf:type owl:TransitiveProperty) (triple ex:Q rdf:type rdf:Property) (triple ex:R rdf:type rdf:Property) (triple :a ex:P :b) (triple :b ex:P :c) (triple :d ex:Q :e) (triple :f ex:R :g) )