# equality rules # Inspired by "Bubo -Implementing OWL in rule-based systems" # by Volz, Decker, Oberle. @prefix : <#test>. @prefix owl: . @prefix rdfs: . @prefix rdf: . @prefix log: . # reflexivity {?a = ?a}. # symmetry {?a = ?b} log:implies {?b = ?a}. # transitivity {?a = ?b. ?b = ?c.} log:implies {?a = ?c}. # test data :5 = {:2 :+ :3}. # query: {:2 :+ :3} = ?n. {:2 :+ :3} = {:3 :+ :2}. # query: :5 = {:3 :+ :2}. # :5 = :5. # triple rules #{?a ?b ?c.?a = ?d.} log:implies {?d ?b ?c}. #{?b ?a ?c.?a = ?d.} log:implies {?b ?d ?c}. #{?c ?b ?a.?a = ?d.} log:implies {?c ?b ?d}. # data :John :owns :car. :John = :JD. # query: :JD :owns :car. # owl:sameClassAs #{?c1 owl:sameClassAs ?c2. ?a a ?c1.} log:implies {?a a ?c2}. #{?c1 owl:sameClassAs ?c2. ?a a ?c2.} log:implies {?a a ?c1}. "{?c1 owl:sameClassAs ?c2} log:implies {?c2 owl:sameClassAs ?c1}. # data :mammals owl:sameClassAs :mammalia. :rat a :mammals. # query :rat a :mammalia. # owl:samePropertyAs #{?p1 owl:samePropertyAs ?p2. ?a ?p1 ?b.} log:implies {?a ?p2 ?b}. #{?p1 owl:samePropertyAs ?p2. ?a ?p2 ?b.} log:implies {?a ?p1 ?b}. #{?p1 owl:samePropertyAs ?p2} log:implies {?p2 owl:samePropertyAs ?p1}. # data :rat :gives :milk. :gives owl:samePropertyAs :produces. # query: :rat :produces :milk. # owl:disjointWith {?c1 owl:disjointWith ?c2. ?a a ?c1. ?a a ?c2} log:implies {?a :inconsistency "belongs to disjoint classes."}. #data :mammalia owl:disjointWith :reptilia. :snake a :reptilia. # query: :snake a :mammalia. # owl:sameIndividualAs {?x1 owl:sameIndividualAs ?x2} log:implies {?x1 = ?x2}. {?x1 = ?x2} log:implies {?x1 owl:sameIndividualAs ?x2}. # data :John owl:sameIndividualAs :JD. :JD a :person. # query: :John a :person. # owl:differentIndividualFrom {?x1 owl:differentIndividualFrom ?x2. ?x1 = ?x2} log:implies {?x1 :inconsistency "violation owl:differentIndividualFrom"}. :Frank :differentIndividualFrom :Anna. # query: :Frank :sameIndividualAs :Anna.