데이터로그
데이터로그는 트리플을 작성하는 대신 서술어(주어, 목적어)로 작성한다
name(namerica, 'North America'). type(namerica, continent). name(usa, 'United States'). type(usa, country). within(usa, namerica). name(idaho, 'Idaho'). type(idaho, state). within(idaho, usa). name(lucy, 'Lucy'). born_in(lucy, idaho).
데이토믹과 캐스캘로그는 데이터로그용 클로저 (Clojure) S 표현식 (S-Expression) 문범을 사용한다.
within_recursive(Location, name) :- name(Locatin, Name). /* 규칙 1 */
within_recursive(Location, Name) :- within(Location, Via), /* 규칙 2 */
within_recursive(Via, Name).
migrated(Name, BornIn, LivingIn) :- name(Person, Name), /*. 규칙 3 */
born_in(Person, BornLoc),
within_recursive(BornLoc, BornIn),
lives_in(Person, LivingLoc),
within_recursive(LivingLoc, LivingIn).
?- migrated(Who, 'United States', 'Europe').
/* Who = '루시'. */