; Dogs (fact (parent abraham barack)) (fact (parent abraham clinton)) (fact (parent delano herbert)) (fact (parent fillmore abraham)) (fact (parent fillmore delano)) (fact (parent fillmore grover)) (fact (parent eisenhower fillmore)) (query (parent abraham ?child)) ; Compound facts (fact (child ?c ?p) (parent ?p ?c)) (query (child ?child fillmore)) (query (child herbert delano)) (query (child eisenhower ?parent)) ; Recursive facts (fact (ancestor ?a ?y) (parent ?a ?y)) (fact (ancestor ?a ?y) (parent ?a ?z) (ancestor ?z ?y)) (query (ancestor ?a herbert)) (query (ancestor ?a barack) (ancestor ?a herbert)) (fact (descendant ?y ?a) (ancestor ?a ?y)) (query (descendant ?y fillmore)) (query (descendant ?y eisenhower)) ; Hierarchical facts (fact (dog (name abraham) (color white))) (fact (dog (name barack) (color tan))) (fact (dog (name clinton) (color white))) (fact (dog (name delano) (color white))) (fact (dog (name eisenhower) (color tan))) (fact (dog (name fillmore) (color gray))) (fact (dog (name grover) (color tan))) (fact (dog (name herbert) (color gray))) (query (dog (name clinton) (color ?color))) (query (dog (name clinton) ?info)) (query (dog (name ?name) (color ?color)) (ancestor ?ancestor ?name) (dog (name ?ancestor) (color ?color))) ; Building relations (fact (ancestry ?name) (dog (name ?name) . ?details)) (fact (ancestry ?child ?parent . ?rest) (parent ?parent ?child) (ancestry ?parent . ?rest)) (query (ancestry barack . ?lineage)) (query (ancestor ?a clinton) (ancestor ?a ?gray-dog) (dog (name ?gray-dog) (color gray)))