(defrule rule-1 (triple (predicate "http://a.com/ontology#hasChild") (subject ?x) (object ?y) ) (triple (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type") (subject ?y) (object "http://a.com/ontology#Man") ) => (assert (triple (predicate "http://a.com/ontology#hasSon") (subject ?x) (object ?y) ) ) ) (defrule rule-2 (triple (predicate "http://a.com/ontology#hasChild") (subject ?y) (object ?x) ) (triple (predicate "http://a.com/ontology#hasConsort") (subject ?y) (object ?z) ) => (assert (triple (predicate "http://a.com/ontology#hasChild") (subject ?z) (object ?x) ) ) ) (defrule rule-3 (triple (predicate "http://a.com/ontology#hasParent") (subject ?x) (object ?y) ) (triple (predicate "http://a.com/ontology#hasConsort") (subject ?y) (object ?z) ) => (assert (triple (predicate "http://a.com/ontology#hasParent") (subject ?x) (object ?z) ) ) ) (defrule rule-4 (triple (predicate "http://a.com/ontology#hasSister") (subject ?y) (object ?z) ) (triple (predicate "http://a.com/ontology#hasParent") (subject ?x) (object ?y) ) => (assert (triple (predicate "http://a.com/ontology#hasAunt") (subject ?x) (object ?z) ) ) ) (defrule rule-5 (triple (predicate "http://a.com/ontology#hasParent") (subject ?x) (object ?y) ) (triple (predicate "http://a.com/ontology#hasBrother") (subject ?y) (object ?z) ) => (assert (triple (predicate "http://a.com/ontology#hasUncle") (subject ?x) (object ?z) ) ) ) (defrule rule-6 (triple (predicate "http://a.com/ontology#hasChild") (subject ?x) (object ?y) ) (triple (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type") (subject ?y) (object "http://a.com/ontology#Woman") ) => (assert (triple (predicate "http://a.com/ontology#hasDaughter") (subject ?x) (object ?y) ) ) ) (triple (predicate "http://a.com/ontology#hasSister") (subject ?y) (object ?z) ) (defrule rule-7 (triple (predicate "http://a.com/ontology#hasParent") (subject ?x) (object ?y) ) (triple (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type") (subject ?y) (object "http://a.com/ontology#Woman") ) => (assert (triple (predicate "http://a.com/ontology#hasMother") (subject ?x) (object ?y) ) ) ) (defrule rule-8 (triple (predicate "http://a.com/ontology#hasSibling") (subject ?x) (object ?y) ) (triple (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type") (subject ?y) (object "http://a.com/ontology#Man") ) => (assert (triple (predicate "http://a.com/ontology#hasBrother") (subject ?x) (object ?y) ) ) ) (defrule rule-9 (triple (predicate "http://a.com/ontology#hasDaughter") (subject ?y) (object ?z) ) (triple (predicate "http://a.com/ontology#hasSibling") (subject ?x) (object ?y) ) => (assert (triple (predicate "http://a.com/ontology#hasNiece") (subject ?x) (object ?z) ) ) ) (defrule rule-10 (triple (predicate "http://a.com/ontology#hasSibling") (subject ?x) (object ?y) ) (triple (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type") (subject ?y) (object "http://a.com/ontology#Woman") ) => (assert (triple (predicate "http://a.com/ontology#hasSister") (subject ?x) (object ?y) ) ) ) (defrule rule-11 (triple (predicate "http://a.com/ontology#hasChild") (subject ?y) (object ?x) ) (triple (predicate "http://a.com/ontology#hasChild") (subject ?y) (object ?z) ) => (assert (triple (predicate "http://a.com/ontology#hasSibling") (subject ?x) (object ?z) ) ) ) (defrule rule-12 (triple (predicate "http://a.com/ontology#hasSon") (subject ?y) (object ?z) ) (triple (predicate "http://a.com/ontology#hasSibling") (subject ?x) (object ?y) ) => (assert (triple (predicate "http://a.com/ontology#hasNephew") (subject ?x) (object ?z) ) ) ) (defrule rule-13 (triple (predicate "http://a.com/ontology#hasParent") (subject ?x) (object ?y) ) (triple (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type") (subject ?y) (object "http://a.com/ontology#Man") ) => (assert (triple (predicate "http://a.com/ontology#hasFather") (subject ?x) (object ?y) ) ) ) (defrule rule-14 (triple (predicate "http://a.com/ontology#hasParent") (subject ?y) (object ?x) ) => (assert (triple (predicate "http://a.com/ontology#hasDescendent") (subject ?x) (object ?y) ) ) ) (defrule rule-15 (triple (predicate "http://a.com/ontology#hasDescendent") (subject ?x) (object ?z) ) (triple (predicate "http://a.com/ontology#hasParent") (subject ?x) (object ?y) ) => (assert (triple (predicate "http://a.com/ontology#hasDescendent") (subject ?y) (object ?z) ) ) )