Representing Anthropological Knowledge: Calculating Kinship
Michael D. Fischer
Analyzing and Understanding Cultural Codes


Kinship Introduction
Learning Kinship with
the Kinship Editor
Use the Kinship Editor
Kinship Editor Results

Kinship Contents

Kinship Contents

Kinship Contents

Kinship Contents

Extended Kin Types

In the previous section we defined the following basic kin types (genealogical relationships):

    c(X,Y) :- child(X,Y).
    s(X,Y) :- c(X,Y), male(X).
    d(X,Y) :- c(X,Y), female(X).
    p(X,Y) :- c(Y,X).
    f(X,Y) :- p(X,Y), male(X).
    m(X,Y) :- p(X,Y), female(X).
    g(X,Y) :- sibling(X,Y).
    z(X,Y) :- g(X,Y), female(X).
    b(X,Y) :- g(X,Y), male(X).
    e(X,Y) :- spouse(X,Y).
    w(X,Y) :- e(X,Y), female(X).
    h(X,Y) :- e(X,Y), male(X).

Anthropologists extend the basic vocabulary (csdpfmgzbewh) to represent more complex kinship relationships. This is done by conjoining the basic kin type symbols. For example, the following symbols are a few of the possible combinations:

    Kin Type -> English gloss
    ff -> father's father
    mz -> mother's sister
    fff -> father's father's father
    fbd -> father's brother's daughter
    mmbs -> mother's mother's brother's son
    wf -> wife's father
    wzd -> wife's sister's daughter
    hfbw -> husband's father's brother's wife

Complex relationships are represented in prolog by using variables to link individuals representing the simple t erms together. For example for sw ('son's wife):

and for fbs:

Following is a prolog example which defines a few compound relationships. Try some of these out, by typing in a query (to the right of the "Query" button) replacing the 'mm(X,Y).' that is there, and then clicking either on the 'All Solutions' button or the 'Query' button (this gives you one result for each time you click the button).

As an exercise, complete and test the definitions for fbd,mf,ff,fff,mmm,swf. You can test your definitions by typing in a query (to the right of the "Query" button) replacing the 'mm(X,Y).' that is there.

Next section: Reporting genealogical relations

Note for writing rules:

When writing your rules pay attention to two things:

1) make sure where you intend a variable for prolog to 'fill-in' with a name, that you use an upper-case letter for the variable name (A-Z), and

2) end your rule with a full-stop ('.'). This is VERY important.

If you get things into too big a mess, you can reload the page by clicking on the reload button of the browser while holding down the option key on a Macintosh, or the ALT key under Windows or Unix. The correct answers are incorporated into the program in next section.

Next section: Genealogical relations